From 11e87b8936351e693f23b5991876308104998ccc Mon Sep 17 00:00:00 2001 From: Ed Umansky Date: Fri, 13 Nov 2026 23:11:15 -0700 Subject: [PATCH] Revert "Shared Go SDK for the CLI, MCP server and any tool that needs it (#20)" This reverts commit fbed925835f9873706413f2cb795e8e16680860d. --- .github/workflows/ci.yml | 6 - .github/workflows/update-collections.yml | 10 - AGENTS.md | 46 +- Makefile | 10 +- README.md | 47 +- cli_golden_test.go | 373 - cmd/admin/admin_audit.go | 115 + cmd/admin/analytics.go | 135 + cmd/admin/archive_users.go | 77 + cmd/admin/authorizations.go | 120 + cmd/admin/classifications.go | 53 + cmd/admin/commands.go | 9 - cmd/admin/data_sources.go | 231 + cmd/admin/domain_management.go | 213 + cmd/admin/events.go | 108 + cmd/admin/groups.go | 225 + cmd/admin/guest_management.go | 80 + cmd/admin/hybrid_clusters.go | 80 + cmd/admin/hybrid_connectors.go | 77 + cmd/admin/identity_org.go | 225 + cmd/admin/licenses.go | 114 + cmd/admin/live_monitoring.go | 65 + cmd/admin/meeting_qualities.go | 62 + cmd/admin/org_contacts.go | 261 + cmd/admin/organizations.go | 95 + cmd/admin/partner_administrators.go | 140 + cmd/admin/partner_reports_templates.go | 204 + cmd/admin/partner_tags.go | 227 + cmd/admin/people.go | 222 + cmd/admin/recording_report.go | 192 + cmd/admin/recordings.go | 695 + cmd/admin/report_templates.go | 67 + cmd/admin/reports.go | 167 + cmd/admin/resource_groups.go | 79 + cmd/admin/resource_memberships.go | 184 + cmd/admin/roles.go | 74 + cmd/admin/scim_2_bulk.go | 64 + cmd/admin/scim_2_groups.go | 285 + cmd/admin/scim_2_schemas.go | 83 + cmd/admin/scim_2_users.go | 260 + cmd/admin/security_audit.go | 72 + cmd/admin/send_activation_email.go | 110 + cmd/admin/service_apps.go | 74 + cmd/admin/settings.go | 92 + cmd/admin/workspace_locations.go | 380 + cmd/admin/workspace_metrics.go | 118 + cmd/auth.go | 158 +- cmd/auth_test.go | 52 - cmd/calling/announcement_playlist.go | 257 + cmd/calling/announcement_repository.go | 340 + cmd/calling/auto_attendant.go | 657 + cmd/calling/call_controls.go | 1080 + cmd/calling/call_controls_for_me.go | 194 + cmd/calling/call_park.go | 546 + cmd/calling/call_pickup.go | 280 + cmd/calling/call_queue.go | 1452 + cmd/calling/call_recording.go | 614 + cmd/calling/call_routing.go | 1705 + cmd/calling/call_settings_for_me.go | 5745 ++ cmd/calling/caller_reputation_provider.go | 176 + cmd/calling/calling_service.go | 306 + cmd/calling/client_call.go | 86 + cmd/calling/commands.go | 20 - cmd/calling/conference_controls.go | 311 + cmd/calling/converged_recordings.go | 414 + cmd/calling/custom_announcements.go | 2 +- cmd/calling/custom_converged_recordings.go | 2 +- cmd/calling/custom_voicemail_greetings.go | 2 +- cmd/calling/customer_assist.go | 420 + cmd/calling/customer_experience_essentials.go | 420 + cmd/calling/dect_devices.go | 904 + cmd/calling/device_call.go | 2159 + cmd/calling/devices.go | 298 + cmd/calling/emergency_services.go | 858 + cmd/calling/external_voicemail.go | 932 + cmd/calling/hot_desk.go | 83 + .../hot_desking_sign_in_via_voice_portal.go | 154 + cmd/calling/hunt_group.go | 581 + cmd/calling/location_call.go | 1353 + cmd/calling/location_call_handling.go | 653 + cmd/calling/location_schedules.go | 375 + cmd/calling/location_voicemail.go | 471 + cmd/calling/locations.go | 342 + cmd/calling/metrics.go | 71 + cmd/calling/mode_management.go | 270 + cmd/calling/numbers.go | 448 + cmd/calling/operating_modes.go | 396 + cmd/calling/paging_group.go | 243 + cmd/calling/partner_reports_templates.go | 204 + cmd/calling/people.go | 222 + cmd/calling/pstn.go | 326 + cmd/calling/recording_report.go | 192 + cmd/calling/reports.go | 164 + cmd/calling/reports_detailed_call_history.go | 102 + cmd/calling/send_activation_email.go | 110 + cmd/calling/single_number_reach.go | 254 + cmd/calling/user_call.go | 4967 + cmd/calling/virtual_extensions.go | 558 + cmd/calling/virtual_line_call.go | 2112 + cmd/calling/workspace_call.go | 3423 + cmd/calling/workspaces.go | 264 + cmd/cc/activities.go | 125 + cmd/cc/address_book.go | 558 + cmd/cc/agent_personal_greeting_files.go | 276 + cmd/cc/agent_summaries.go | 101 + cmd/cc/agent_wellbeing.go | 237 + cmd/cc/agents.go | 382 + cmd/cc/ai_agent.go | 459 + cmd/cc/ai_agent_session.go | 152 + cmd/cc/ai_agent_transcript.go | 155 + cmd/cc/ai_assistant.go | 56 + cmd/cc/ai_feature.go | 309 + cmd/cc/asset.go | 326 + cmd/cc/audio_files.go | 277 + cmd/cc/auto_csat.go | 355 + cmd/cc/auxiliary_code.go | 435 + cmd/cc/business_hour.go | 311 + cmd/cc/call_monitor.go | 245 + cmd/cc/call_monitoring_config.go | 272 + cmd/cc/callbacks.go | 255 + cmd/cc/campaign_group.go | 65 + cmd/cc/campaign_manager.go | 146 + cmd/cc/captures.go | 56 + cmd/cc/channel.go | 316 + cmd/cc/commands.go | 16 - cmd/cc/contact_list_management.go | 270 + cmd/cc/contact_number.go | 312 + cmd/cc/contact_service_queue.go | 884 + cmd/cc/custom_agent_greetings.go | 4 +- cmd/cc/custom_audio_files.go | 4 +- cmd/cc/custom_search.go | 4 +- cmd/cc/data_sources.go | 231 + cmd/cc/desktop_layout.go | 448 + cmd/cc/desktop_profile.go | 638 + cmd/cc/dial_number.go | 446 + cmd/cc/dial_plan.go | 387 + cmd/cc/dnc_management.go | 126 + cmd/cc/entry_point.go | 344 + cmd/cc/estimated_wait_time.go | 64 + cmd/cc/events.go | 57 + cmd/cc/external_data_updates.go | 62 + cmd/cc/flow.go | 591 + cmd/cc/functions.go | 440 + cmd/cc/generated_summaries.go | 159 + cmd/cc/global_variables.go | 430 + cmd/cc/holiday_list.go | 311 + cmd/cc/journey.go | 1333 + cmd/cc/journey_customer_identification.go | 439 + cmd/cc/journey_data_ingestion.go | 61 + cmd/cc/journey_profile_creation_insights.go | 490 + cmd/cc/journey_subscription.go | 91 + cmd/cc/journey_trigger_actions.go | 270 + cmd/cc/journey_workspace_management.go | 183 + cmd/cc/multimedia_profile.go | 325 + cmd/cc/notification.go | 69 + cmd/cc/organization_setting.go | 170 + cmd/cc/outdial_ani.go | 616 + cmd/cc/overrides.go | 311 + cmd/cc/queues.go | 84 + cmd/cc/realtime.go | 69 + cmd/cc/resource_collection.go | 299 + cmd/cc/search_metadata.go | 51 + cmd/cc/site.go | 373 + cmd/cc/skill.go | 356 + cmd/cc/skill_profile.go | 360 + cmd/cc/subscriptions.go | 472 + cmd/cc/tasks.go | 828 + cmd/cc/team.go | 454 + cmd/cc/templates.go | 76 + cmd/cc/tenant_configuration.go | 286 + cmd/cc/usage_reports.go | 187 + cmd/cc/user_profiles.go | 359 + cmd/cc/users.go | 658 + cmd/cc/work_types.go | 373 + cmd/config_cmd.go | 13 +- cmd/device/commands.go | 9 - cmd/device/device_call.go | 2159 + cmd/device/device_configurations.go | 97 + cmd/device/devices.go | 298 + cmd/device/hot_desk.go | 83 + cmd/device/locations.go | 342 + cmd/device/workspace_locations.go | 380 + cmd/device/workspace_metrics.go | 118 + cmd/device/workspace_personalization.go | 85 + cmd/device/workspaces.go | 264 + cmd/device/xapi.go | 113 + cmd/mcp/dispatcher.go | 160 +- cmd/mcp/dispatcher_test.go | 57 - cmd/meetings/chats.go | 82 + cmd/meetings/closed_captions.go | 118 + cmd/meetings/commands.go | 13 - cmd/meetings/custom_recordings.go | 2 +- cmd/meetings/invitees.go | 245 + cmd/meetings/meeting_polls.go | 126 + cmd/meetings/meeting_qa.go | 94 + cmd/meetings/meeting_qualities.go | 62 + cmd/meetings/meeting_summary.go | 140 + cmd/meetings/meetings.go | 1862 + cmd/meetings/messages.go | 49 + cmd/meetings/participants.go | 308 + cmd/meetings/people.go | 222 + cmd/meetings/preferences.go | 464 + cmd/meetings/recording_report.go | 192 + cmd/meetings/recordings.go | 695 + cmd/meetings/session_types.go | 133 + cmd/meetings/site.go | 76 + cmd/meetings/slido.go | 76 + cmd/meetings/slidosecurepremium.go | 76 + cmd/meetings/summaries.go | 89 + cmd/meetings/tracking_codes.go | 218 + cmd/meetings/transcripts.go | 294 + cmd/meetings/video_mesh.go | 1198 + cmd/meetings/webhooks.go | 201 + cmd/messaging/attachment_actions.go | 77 + cmd/messaging/commands.go | 13 - cmd/messaging/custom_messages.go | 2 +- cmd/messaging/ecm_folder_linking.go | 196 + cmd/messaging/events.go | 108 + cmd/messaging/hds.go | 392 + cmd/messaging/memberships.go | 187 + cmd/messaging/messages.go | 196 + cmd/messaging/people.go | 222 + cmd/messaging/room_tabs.go | 178 + cmd/messaging/rooms.go | 255 + cmd/messaging/team_memberships.go | 178 + cmd/messaging/teams.go | 177 + cmd/messaging/webhooks.go | 201 + cmd/root.go | 23 - codegen/README.md | 6 +- codegen/generate_cli.py | 791 +- codegen/naming_overrides.py | 9 - ...ntact Center lists.postman_collection.json | 163 - codegen/supplemental/README.md | 22 +- codegen/test_generate_cli.py | 213 +- codegen/test_naming_overrides.py | 14 +- internal/aiagent/aiagent.go | 56 +- internal/aiagent/aiagent_test.go | 61 + internal/apicmd/apicmd.go | 243 - internal/appconfig/appconfig.go | 1 - internal/auth/minttl_test.go | 54 - internal/auth/resolve.go | 22 - internal/client/characterize_test.go | 240 - internal/client/client.go | 161 +- internal/client/client_test.go | 42 - internal/client/pagination.go | 45 +- internal/client/pagination_test.go | 44 - internal/client/sdk.go | 100 - internal/config/config.go | 151 +- internal/readonly/readonly_test.go | 17 +- internal/search/paginate.go | 2 +- pkg/aiagent/aiagent.go | 108 - pkg/aiagent/aiagent_test.go | 106 - pkg/catalog/catalog.go | 171 - pkg/catalog/catalog_test.go | 268 - pkg/catalog/center.go | 538 - pkg/catalog/fields.go | 122 - pkg/catalog/reference.go | 166 - pkg/changeset/changeset_test.go | 146 - pkg/changeset/file.go | 72 - pkg/changeset/paths.go | 91 - pkg/changeset/record.go | 37 - pkg/changeset/schema.go | 8 - pkg/changeset/schema.json | 129 - pkg/changeset/types.go | 269 - pkg/changeset/validate.go | 153 - pkg/fakeapi/collections.go | 325 - pkg/fakeapi/fakeapi.go | 591 - pkg/fakeapi/reference.go | 101 - pkg/guard/guard.go | 325 - pkg/guard/guard_test.go | 495 - pkg/resource/resource.go | 701 - pkg/resource/resource_test.go | 240 - pkg/webex/webex.go | 602 - pkg/webex/webex_test.go | 530 - pkg/webexapi/client.go | 254 - pkg/webexapi/client_test.go | 260 - pkg/webexapi/errors.go | 65 - pkg/webexapi/hosts.go | 116 - pkg/webexapi/hosts_test.go | 56 - pkg/webexapi/pacer.go | 53 - pkg/webexapi/pacer_test.go | 68 - pkg/webexapi/pager.go | 292 - pkg/webexapi/pager_test.go | 396 - pkg/webexapi/paging_test.go | 89 - pkg/webexops/operation.go | 345 - pkg/webexops/operation_test.go | 145 - pkg/webexops/zz_admin.go | 2070 - pkg/webexops/zz_calling.go | 15415 --- pkg/webexops/zz_cc.go | 8174 -- pkg/webexops/zz_device.go | 1563 - pkg/webexops/zz_meetings.go | 2512 - pkg/webexops/zz_messaging.go | 874 - site/astro.config.mjs | 1 - site/src/content/docs/getting-started.mdx | 5 - site/src/content/docs/sdk.mdx | 60 - skill/SKILL.md | 7 - skill/cc/SKILL.md | 7 - testdata/golden/commands.json | 78882 ---------------- testdata/golden/requests-admin.json | 7523 -- testdata/golden/requests-calling.json | 57921 ------------ testdata/golden/requests-cc.json | 28556 ------ testdata/golden/requests-device.json | 5822 -- testdata/golden/requests-meetings.json | 9191 -- testdata/golden/requests-messaging.json | 3302 - 304 files changed, 80707 insertions(+), 232780 deletions(-) delete mode 100644 cli_golden_test.go create mode 100644 cmd/admin/admin_audit.go create mode 100644 cmd/admin/analytics.go create mode 100644 cmd/admin/archive_users.go create mode 100644 cmd/admin/authorizations.go create mode 100644 cmd/admin/classifications.go delete mode 100644 cmd/admin/commands.go create mode 100644 cmd/admin/data_sources.go create mode 100644 cmd/admin/domain_management.go create mode 100644 cmd/admin/events.go create mode 100644 cmd/admin/groups.go create mode 100644 cmd/admin/guest_management.go create mode 100644 cmd/admin/hybrid_clusters.go create mode 100644 cmd/admin/hybrid_connectors.go create mode 100644 cmd/admin/identity_org.go create mode 100644 cmd/admin/licenses.go create mode 100644 cmd/admin/live_monitoring.go create mode 100644 cmd/admin/meeting_qualities.go create mode 100644 cmd/admin/org_contacts.go create mode 100644 cmd/admin/organizations.go create mode 100644 cmd/admin/partner_administrators.go create mode 100644 cmd/admin/partner_reports_templates.go create mode 100644 cmd/admin/partner_tags.go create mode 100644 cmd/admin/people.go create mode 100644 cmd/admin/recording_report.go create mode 100644 cmd/admin/recordings.go create mode 100644 cmd/admin/report_templates.go create mode 100644 cmd/admin/reports.go create mode 100644 cmd/admin/resource_groups.go create mode 100644 cmd/admin/resource_memberships.go create mode 100644 cmd/admin/roles.go create mode 100644 cmd/admin/scim_2_bulk.go create mode 100644 cmd/admin/scim_2_groups.go create mode 100644 cmd/admin/scim_2_schemas.go create mode 100644 cmd/admin/scim_2_users.go create mode 100644 cmd/admin/security_audit.go create mode 100644 cmd/admin/send_activation_email.go create mode 100644 cmd/admin/service_apps.go create mode 100644 cmd/admin/settings.go create mode 100644 cmd/admin/workspace_locations.go create mode 100644 cmd/admin/workspace_metrics.go create mode 100644 cmd/calling/announcement_playlist.go create mode 100644 cmd/calling/announcement_repository.go create mode 100644 cmd/calling/auto_attendant.go create mode 100644 cmd/calling/call_controls.go create mode 100644 cmd/calling/call_controls_for_me.go create mode 100644 cmd/calling/call_park.go create mode 100644 cmd/calling/call_pickup.go create mode 100644 cmd/calling/call_queue.go create mode 100644 cmd/calling/call_recording.go create mode 100644 cmd/calling/call_routing.go create mode 100644 cmd/calling/call_settings_for_me.go create mode 100644 cmd/calling/caller_reputation_provider.go create mode 100644 cmd/calling/calling_service.go create mode 100644 cmd/calling/client_call.go delete mode 100644 cmd/calling/commands.go create mode 100644 cmd/calling/conference_controls.go create mode 100644 cmd/calling/converged_recordings.go create mode 100644 cmd/calling/customer_assist.go create mode 100644 cmd/calling/customer_experience_essentials.go create mode 100644 cmd/calling/dect_devices.go create mode 100644 cmd/calling/device_call.go create mode 100644 cmd/calling/devices.go create mode 100644 cmd/calling/emergency_services.go create mode 100644 cmd/calling/external_voicemail.go create mode 100644 cmd/calling/hot_desk.go create mode 100644 cmd/calling/hot_desking_sign_in_via_voice_portal.go create mode 100644 cmd/calling/hunt_group.go create mode 100644 cmd/calling/location_call.go create mode 100644 cmd/calling/location_call_handling.go create mode 100644 cmd/calling/location_schedules.go create mode 100644 cmd/calling/location_voicemail.go create mode 100644 cmd/calling/locations.go create mode 100644 cmd/calling/metrics.go create mode 100644 cmd/calling/mode_management.go create mode 100644 cmd/calling/numbers.go create mode 100644 cmd/calling/operating_modes.go create mode 100644 cmd/calling/paging_group.go create mode 100644 cmd/calling/partner_reports_templates.go create mode 100644 cmd/calling/people.go create mode 100644 cmd/calling/pstn.go create mode 100644 cmd/calling/recording_report.go create mode 100644 cmd/calling/reports.go create mode 100644 cmd/calling/reports_detailed_call_history.go create mode 100644 cmd/calling/send_activation_email.go create mode 100644 cmd/calling/single_number_reach.go create mode 100644 cmd/calling/user_call.go create mode 100644 cmd/calling/virtual_extensions.go create mode 100644 cmd/calling/virtual_line_call.go create mode 100644 cmd/calling/workspace_call.go create mode 100644 cmd/calling/workspaces.go create mode 100644 cmd/cc/activities.go create mode 100644 cmd/cc/address_book.go create mode 100644 cmd/cc/agent_personal_greeting_files.go create mode 100644 cmd/cc/agent_summaries.go create mode 100644 cmd/cc/agent_wellbeing.go create mode 100644 cmd/cc/agents.go create mode 100644 cmd/cc/ai_agent.go create mode 100644 cmd/cc/ai_agent_session.go create mode 100644 cmd/cc/ai_agent_transcript.go create mode 100644 cmd/cc/ai_assistant.go create mode 100644 cmd/cc/ai_feature.go create mode 100644 cmd/cc/asset.go create mode 100644 cmd/cc/audio_files.go create mode 100644 cmd/cc/auto_csat.go create mode 100644 cmd/cc/auxiliary_code.go create mode 100644 cmd/cc/business_hour.go create mode 100644 cmd/cc/call_monitor.go create mode 100644 cmd/cc/call_monitoring_config.go create mode 100644 cmd/cc/callbacks.go create mode 100644 cmd/cc/campaign_group.go create mode 100644 cmd/cc/campaign_manager.go create mode 100644 cmd/cc/captures.go create mode 100644 cmd/cc/channel.go delete mode 100644 cmd/cc/commands.go create mode 100644 cmd/cc/contact_list_management.go create mode 100644 cmd/cc/contact_number.go create mode 100644 cmd/cc/contact_service_queue.go create mode 100644 cmd/cc/data_sources.go create mode 100644 cmd/cc/desktop_layout.go create mode 100644 cmd/cc/desktop_profile.go create mode 100644 cmd/cc/dial_number.go create mode 100644 cmd/cc/dial_plan.go create mode 100644 cmd/cc/dnc_management.go create mode 100644 cmd/cc/entry_point.go create mode 100644 cmd/cc/estimated_wait_time.go create mode 100644 cmd/cc/events.go create mode 100644 cmd/cc/external_data_updates.go create mode 100644 cmd/cc/flow.go create mode 100644 cmd/cc/functions.go create mode 100644 cmd/cc/generated_summaries.go create mode 100644 cmd/cc/global_variables.go create mode 100644 cmd/cc/holiday_list.go create mode 100644 cmd/cc/journey.go create mode 100644 cmd/cc/journey_customer_identification.go create mode 100644 cmd/cc/journey_data_ingestion.go create mode 100644 cmd/cc/journey_profile_creation_insights.go create mode 100644 cmd/cc/journey_subscription.go create mode 100644 cmd/cc/journey_trigger_actions.go create mode 100644 cmd/cc/journey_workspace_management.go create mode 100644 cmd/cc/multimedia_profile.go create mode 100644 cmd/cc/notification.go create mode 100644 cmd/cc/organization_setting.go create mode 100644 cmd/cc/outdial_ani.go create mode 100644 cmd/cc/overrides.go create mode 100644 cmd/cc/queues.go create mode 100644 cmd/cc/realtime.go create mode 100644 cmd/cc/resource_collection.go create mode 100644 cmd/cc/search_metadata.go create mode 100644 cmd/cc/site.go create mode 100644 cmd/cc/skill.go create mode 100644 cmd/cc/skill_profile.go create mode 100644 cmd/cc/subscriptions.go create mode 100644 cmd/cc/tasks.go create mode 100644 cmd/cc/team.go create mode 100644 cmd/cc/templates.go create mode 100644 cmd/cc/tenant_configuration.go create mode 100644 cmd/cc/usage_reports.go create mode 100644 cmd/cc/user_profiles.go create mode 100644 cmd/cc/users.go create mode 100644 cmd/cc/work_types.go delete mode 100644 cmd/device/commands.go create mode 100644 cmd/device/device_call.go create mode 100644 cmd/device/device_configurations.go create mode 100644 cmd/device/devices.go create mode 100644 cmd/device/hot_desk.go create mode 100644 cmd/device/locations.go create mode 100644 cmd/device/workspace_locations.go create mode 100644 cmd/device/workspace_metrics.go create mode 100644 cmd/device/workspace_personalization.go create mode 100644 cmd/device/workspaces.go create mode 100644 cmd/device/xapi.go create mode 100644 cmd/meetings/chats.go create mode 100644 cmd/meetings/closed_captions.go delete mode 100644 cmd/meetings/commands.go create mode 100644 cmd/meetings/invitees.go create mode 100644 cmd/meetings/meeting_polls.go create mode 100644 cmd/meetings/meeting_qa.go create mode 100644 cmd/meetings/meeting_qualities.go create mode 100644 cmd/meetings/meeting_summary.go create mode 100644 cmd/meetings/meetings.go create mode 100644 cmd/meetings/messages.go create mode 100644 cmd/meetings/participants.go create mode 100644 cmd/meetings/people.go create mode 100644 cmd/meetings/preferences.go create mode 100644 cmd/meetings/recording_report.go create mode 100644 cmd/meetings/recordings.go create mode 100644 cmd/meetings/session_types.go create mode 100644 cmd/meetings/site.go create mode 100644 cmd/meetings/slido.go create mode 100644 cmd/meetings/slidosecurepremium.go create mode 100644 cmd/meetings/summaries.go create mode 100644 cmd/meetings/tracking_codes.go create mode 100644 cmd/meetings/transcripts.go create mode 100644 cmd/meetings/video_mesh.go create mode 100644 cmd/meetings/webhooks.go create mode 100644 cmd/messaging/attachment_actions.go delete mode 100644 cmd/messaging/commands.go create mode 100644 cmd/messaging/ecm_folder_linking.go create mode 100644 cmd/messaging/events.go create mode 100644 cmd/messaging/hds.go create mode 100644 cmd/messaging/memberships.go create mode 100644 cmd/messaging/messages.go create mode 100644 cmd/messaging/people.go create mode 100644 cmd/messaging/room_tabs.go create mode 100644 cmd/messaging/rooms.go create mode 100644 cmd/messaging/team_memberships.go create mode 100644 cmd/messaging/teams.go create mode 100644 cmd/messaging/webhooks.go delete mode 100644 codegen/supplemental/Contact Center lists.postman_collection.json create mode 100644 internal/aiagent/aiagent_test.go delete mode 100644 internal/apicmd/apicmd.go delete mode 100644 internal/auth/minttl_test.go delete mode 100644 internal/client/characterize_test.go delete mode 100644 internal/client/sdk.go delete mode 100644 pkg/aiagent/aiagent.go delete mode 100644 pkg/aiagent/aiagent_test.go delete mode 100644 pkg/catalog/catalog.go delete mode 100644 pkg/catalog/catalog_test.go delete mode 100644 pkg/catalog/center.go delete mode 100644 pkg/catalog/fields.go delete mode 100644 pkg/catalog/reference.go delete mode 100644 pkg/changeset/changeset_test.go delete mode 100644 pkg/changeset/file.go delete mode 100644 pkg/changeset/paths.go delete mode 100644 pkg/changeset/record.go delete mode 100644 pkg/changeset/schema.go delete mode 100644 pkg/changeset/schema.json delete mode 100644 pkg/changeset/types.go delete mode 100644 pkg/changeset/validate.go delete mode 100644 pkg/fakeapi/collections.go delete mode 100644 pkg/fakeapi/fakeapi.go delete mode 100644 pkg/fakeapi/reference.go delete mode 100644 pkg/guard/guard.go delete mode 100644 pkg/guard/guard_test.go delete mode 100644 pkg/resource/resource.go delete mode 100644 pkg/resource/resource_test.go delete mode 100644 pkg/webex/webex.go delete mode 100644 pkg/webex/webex_test.go delete mode 100644 pkg/webexapi/client.go delete mode 100644 pkg/webexapi/client_test.go delete mode 100644 pkg/webexapi/errors.go delete mode 100644 pkg/webexapi/hosts.go delete mode 100644 pkg/webexapi/hosts_test.go delete mode 100644 pkg/webexapi/pacer.go delete mode 100644 pkg/webexapi/pacer_test.go delete mode 100644 pkg/webexapi/pager.go delete mode 100644 pkg/webexapi/pager_test.go delete mode 100644 pkg/webexapi/paging_test.go delete mode 100644 pkg/webexops/operation.go delete mode 100644 pkg/webexops/operation_test.go delete mode 100644 pkg/webexops/zz_admin.go delete mode 100644 pkg/webexops/zz_calling.go delete mode 100644 pkg/webexops/zz_cc.go delete mode 100644 pkg/webexops/zz_device.go delete mode 100644 pkg/webexops/zz_meetings.go delete mode 100644 pkg/webexops/zz_messaging.go delete mode 100644 site/src/content/docs/sdk.mdx delete mode 100644 testdata/golden/commands.json delete mode 100644 testdata/golden/requests-admin.json delete mode 100644 testdata/golden/requests-calling.json delete mode 100644 testdata/golden/requests-cc.json delete mode 100644 testdata/golden/requests-device.json delete mode 100644 testdata/golden/requests-meetings.json delete mode 100644 testdata/golden/requests-messaging.json diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5f77a1f..192338d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -18,9 +18,3 @@ jobs: - run: go build ./... - run: go vet ./... - - # Includes the golden files that pin every command and request. - - run: go test ./... - - # The naming tests read the spec, which is built from the committed collections. - - run: cd codegen && python3 extract_api_spec.py && cd .. && python3 -m unittest discover -s codegen -p 'test_*.py' diff --git a/.github/workflows/update-collections.yml b/.github/workflows/update-collections.yml index 09f53a3..d070bc5 100644 --- a/.github/workflows/update-collections.yml +++ b/.github/workflows/update-collections.yml @@ -40,16 +40,6 @@ jobs: - name: Build and vet run: make check - # The command and request golden files change with the collections; the - # PR diff shows each published command that changed. - - name: Update golden files - run: make golden - - # CI does not run on a PR this workflow pushes with GITHUB_TOKEN, so the tests - # run here: a refresh that breaks a catalog binding fails before a PR opens. - - name: Run tests - run: make test - - name: Generate changelog run: python3 codegen/diff_spec.py /tmp/old_spec.json codegen/api_spec.json > /tmp/spec_diff.md diff --git a/AGENTS.md b/AGENTS.md index fda4b67..1da738a 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -4,23 +4,22 @@ A CLI for Webex Admin, Calling, Contact Center, Devices, Meetings, and Messaging ## Project Layout -- Go CLI at repo root (`main.go`, `cmd/`, `internal/`), built on the Go SDK in `pkg/` -- `codegen/` — Python scripts that generate the operation table (`pkg/webexops`) from Postman collections -- `cmd/admin/`, `cmd/calling/`, `cmd/cc/`, `cmd/device/`, `cmd/meetings/`, `cmd/messaging/` — each area's `commands.go` builds its commands from the operation table at startup (`internal/apicmd`) +- Go CLI at repo root (`main.go`, `cmd/`, `internal/`) +- `codegen/` — Python scripts that generate area command packages from Postman collections +- `cmd/admin/`, `cmd/calling/`, `cmd/cc/`, `cmd/device/`, `cmd/meetings/`, `cmd/messaging/` — generated cobra commands (do not edit by hand) - `cmd/*.go` — handwritten root/area/auth/config/MCP entrypoints - `cmd/mcp/` — MCP server (stdio or loopback HTTP) -- `cmd/**/custom_*.go` — handwritten commands for operations the table cannot describe (multipart uploads, downloads, search) -- `testdata/golden/` — every command's flags and help, and the request each API command sends; `cli_golden_test.go` checks them +- `cmd/**/custom_*.go` — handwritten replacements for endpoints the generator cannot emit (multipart uploads, downloads, search) - `extension/` — Claude Desktop DXT package (`make extension`) - `skill/` — agent skill files; each area’s Command Reference is regenerated by codegen - `site/` — Astro Starlight docs (GitHub Pages) ## Code Generation Pipeline -The generated `pkg/webexops/zz_*.go` files must not be edited by hand. Change `codegen/generate_cli.py`, `internal/apicmd` (how operations become commands), or a `custom_*.go` file instead. +Generated `*.go` files in the six area packages must not be edited by hand. Change `codegen/generate_cli.py` (or a `custom_*.go` file) instead. ```bash -# Full pipeline (download + generate operations + generate skills + build): +# Full pipeline (download + generate CLI + generate skills + build): make refresh # Regenerate from existing committed collections: @@ -28,16 +27,10 @@ make codegen && make build # Download collections only: make download - -# Go and codegen tests; rewrite the golden files after an intended change: -make test -make golden ``` `make codegen` runs `extract_api_spec.py`, `generate_cli.py`, and `generate_skills.py`. -The golden files pin the published CLI. A change to codegen or `internal/apicmd` that is meant to keep commands the same must pass `go test -run Golden .` unchanged; one that changes them needs `make golden` and a reviewed diff. The weekly workflow runs `make golden` after a collection refresh. - For command naming exceptions, edit `codegen/naming_overrides.py`; see `docs/command-migration.md` for naming and compatibility conventions, and `docs/command-inventory.md` for the reviewed refresh inventory. These route-based @@ -86,40 +79,23 @@ gh release edit v0.X.0 --title "v0.X.0" --notes "## Improvements ## Key Files -- `cmd/root.go` — Root cobra command, global flags (token, org, output, debug, dry-run, paginate, 429 retries, region, cc-region) +- `cmd/root.go` — Root cobra command, global flags (token, org, output, debug, dry-run, paginate, 429 retries, region) - `cmd/auth.go` — Auth subcommand (status, list, switch, set-org, clear-org) - `cmd/login.go` / `cmd/logout.go` — OAuth PKCE and device login - `cmd/mcp.go` / `cmd/mcp/` — MCP serve/stop, tools, resources, usage log - `cmd/update.go` / `cmd/postinstall.go` / `cmd/skillupdate.go` — self-update and skill install - `internal/auth/` — Token storage (OS keyring, credentials file fallback), OAuth, device login, org resolution - `npm/` — npm wrapper package, staging, and publish scripts -- `internal/client/` — Request builder (JSON and multipart bodies), CLI pagination, and the CLI's use of `pkg/webexapi` with its process-wide flags; `SDK()` gives SDK packages a transport set up the same way +- `internal/client/` — HTTP client, request builder (JSON and multipart bodies), pagination, 429 Retry-After - `internal/appconfig/` — Config file (`~/.webex-cli/config.json`) -- `internal/config/` — Process-local flags (token, org, debug, dry-run, retry, regions and hosts) +- `internal/config/` — Process-local flags (token, org, debug, dry-run, retry) - `internal/output/` — JSON/table/csv/raw formatting - `internal/audio/` — Binary download from pre-signed URLs (no Webex token) -- `internal/aiagent/` — The private-API notice, and `pkg/aiagent` with this run's login and hosts - -### Go SDK (`pkg/`) - -Other Go programs import these, and Webex Admin Studio is built on them. They hold no process-wide state and take a context on every call. Keep CLI concerns (flags, output, the config file) out of them. - -- `pkg/webexapi/` — HTTP transport: 401 refresh, 429 Retry-After, structured errors, fail-closed list paging; `Hosts` for every data region and Contact Center data center; org ID conversion; the Contact Center pacer -- `pkg/webexops/` — Generated operation table: one exported `*Operation` per API call (route, parameters, body fields, paging, CLI names), and `Call` -- `pkg/resource/` — Object types as data: fields, JSON paths, write mode, and the operations (`Route`) each type uses. API facts only; presentation belongs to the program -- `pkg/catalog/` — The object types. A type is `Managed` (writable) only once its writes are proven on a live tenant; its tests check every route's operation, method and parameter bindings. How Studio names types in Terraform config lives in Studio, not here -- `pkg/webex/` — Reads and writes objects from their definitions -- `pkg/guard/` — The write protocol: conflict check, read-back, stop after a failure -- `pkg/changeset/` — The change set file format Webex Admin Studio imports and exports: types, validation, JSON Schema -- `pkg/aiagent/` — AI Agent Studio: agent token lookup, credential redaction, `Call` -- `pkg/fakeapi/` — The fake Webex the SDK's and Studio's tests run against - -Live Webex behavior that the catalog encodes (full-object Contact Center PUTs, read-by-filter work types, Contact Center rate limits) is recorded in Webex Admin Studio's AGENTS.md, where it was found. +- `internal/aiagent/` — AI Agent Studio support for generated commands: agent runtime token lookup and response redaction - `codegen/supplemental/` — Hand-maintained Postman collections for APIs not in Cisco's collections - `codegen/extract_api_outline.py` — Postman → normalized CLI names - `codegen/extract_api_spec.py` — Postman → enriched API spec (params, body fields) -- `codegen/generate_cli.py` — API spec → operation table (`pkg/webexops/zz_*.go`) -- `internal/apicmd/` — Builds `webex ` from the operation table +- `codegen/generate_cli.py` — API spec → Go cobra command files - `codegen/generate_skills.py` — API spec → Command Reference blocks in `skill//SKILL.md` - `codegen/diff_spec.py` — Changelog between two spec snapshots (used by the weekly workflow) diff --git a/Makefile b/Makefile index 2e83efd..d03d0b8 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -.PHONY: build download codegen refresh check golden test clean extension skill +.PHONY: build download codegen refresh check clean extension skill build: go build -o webex . @@ -16,14 +16,6 @@ refresh: download codegen build check: build go vet ./... -test: - go test ./... - python3 -m unittest discover -s codegen -p 'test_*.py' - -# Rewrite testdata/golden after an intended change to commands or requests. -golden: - go test -run Golden -update . - extension: build cd extension && zip -r ../webex-mcp.dxt manifest.json icon.png @echo "Built webex-mcp.dxt" diff --git a/README.md b/README.md index 2926fb2..97e3192 100644 --- a/README.md +++ b/README.md @@ -173,13 +173,10 @@ webex auth switch # Switch default user webex auth set-org # Set a persistent org override webex auth clear-org # Clear the org override webex auth export # Print the refresh token for $WEBEX_REFRESH_TOKEN -webex auth token # Print the access token ``` Token resolution order: `--token` flag > `$WEBEX_TOKEN` env var > `$WEBEX_REFRESH_TOKEN` env var > stored login. -`webex auth list` and `auth token` print JSON with `--output json`. `auth token --output json` includes the token's expiry, user, and organization. `webex auth token --min-ttl 30m` refreshes the token first if less than that time remains, for handing it to a long-running process; it needs a stored login. - ### Headless and Unattended Use Device login needs no local browser: `webex login` shows `Open and enter ` (and a QR code on a terminal), and you approve from a browser on any device. With `--output json`, the URL, code, and expiry are printed as JSON on stdout so an agent can relay them. `WEBEX_LOGIN_MODE=device|browser` picks the flow without a flag. A custom integration needs the redirect URIs `https://oauth-helper-{a,r,k,d}.wbx2.com/helperservice/v1/actions/device/callback` for device login. @@ -251,10 +248,6 @@ webex cc users list --output csv > users.csv | `--debug` | Show HTTP request/response details | | `--paginate` | Auto-paginate list results (ignored by commands that return one object) | | `--dry-run` | Print write requests without executing them | -| `--region us\|ca\|eu\|eun\|in\|au` | Data region for region-specific hosts (Detailed Call History) | -| `--cc-region us1\|eu1\|eu2\|anz1\|ca1\|jp1\|sg1` | Contact Center data center, which selects the Contact Center and AI Agent Studio hosts (default `us1`; also `$WEBEX_CC_REGION` or `webex config set cc-region`) | - -A Contact Center update (`PUT`) replaces the whole object: fields the body leaves out are cleared. Get the object first and send the full body back with your changes. ## Configuration @@ -263,8 +256,6 @@ webex config set client-id # Use custom OAuth client ID webex config set client-secret # Use custom OAuth client secret webex config set scopes # Override OAuth scopes webex config set read-only-scopes # Override scopes for login --read-only -webex config set region # Data region for Detailed Call History -webex config set cc-region # Contact Center data center (us1, eu1, ...) webex config get client-id # View current value ``` @@ -303,7 +294,7 @@ And 2 MCP resources: | `webex://commands` | JSON array of all available CLI commands with short descriptions | | `webex://usage` | Last 50 raw lines of the usage log | -Rather than exposing fixed per-API tools, the dispatcher pattern lets AI clients invoke the full CLI surface via `webex_read` and `webex_write` — the command tree expands automatically as new commands are added. The `webex_write` description warns that a Contact Center update replaces the whole object, so agents send the full body. +Rather than exposing fixed per-API tools, the dispatcher pattern lets AI clients invoke the full CLI surface via `webex_read` and `webex_write` — the command tree expands automatically as new commands are added. Auth is shared with the CLI — run `webex login` once and the MCP server uses the same stored credentials. Token refresh is handled automatically. @@ -362,45 +353,11 @@ Run `npx -y @cloverhound/webex-cli agent-setup` and follow what it prints. See the [docs](https://cloverhound.github.io/webex-cli/agent-skill/) for manual setup instructions. -## Go SDK - -The CLI is built on a Go SDK in `pkg/`, which other programs import as `github.com/Cloverhound/webex-cli/pkg/...`. Webex Admin Studio is built on it too. - -| Package | What it is | -|---|---| -| `webexapi` | HTTP transport: 401 refresh, 429 retry, structured errors, lists that fail instead of ending short, hosts for every region, org ID conversion, Contact Center pacing. No process-wide state; every call takes a context. | -| `webexops` | Every API operation as data, generated from Cisco's Postman collections: route, parameters, body fields, paging. `Call` sends one. | -| `resource` | Object types as data: fields, JSON paths, write mode, and the operations each type uses. | -| `catalog` | The object types, and which can be written. | -| `webex` | Reads and writes objects by type: lists that read items in parallel where a list leaves fields out, full or partial writes as the route needs. | -| `guard` | The write protocol: conflict check before a write, read-back after it, and stop after a failure. | -| `changeset` | The change set file format that Webex Admin Studio imports and exports. | -| `aiagent` | AI Agent Studio's private routes: agent token lookup and credential redaction. | -| `fakeapi` | A fake Webex for tests, with fault injection. | - -```go -hosts, _ := webexapi.NewHosts("us1", "us") -api := &webexapi.Client{Token: func(context.Context) (string, error) { return token, nil }, MaxRetries: 3} - -// One operation. -resp, err := webexops.Call(ctx, api, hosts, webexops.CCTeamGet, webexops.Args{ - Path: map[string]string{"orgid": orgUUID, "id": teamID}, -}) - -// Objects by type, with safe writes. -c := &webex.Client{API: api, Hosts: hosts, OrgUUID: orgUUID} -team, _ := catalog.ByName("cc_team") -g := &guard.Guard{API: c, Writable: true} -values, err := g.Update(ctx, team, key, before, after) -``` - -Each operation is an exported variable, so a program that uses one fails to build when a Postman refresh drops or renames it. - ## Development See [AGENTS.md](AGENTS.md) for project structure and development workflow. -API commands are built at startup from the operation table in `pkg/webexops`, which is **generated** from Postman collections — do not edit it by hand. Run `make refresh` to re-download collections, regenerate the table, update skill documentation, and rebuild. `testdata/golden/` records every command's flags and the request each one sends; run `make golden` after an intended change and review the diff. See the [code generation pipeline](AGENTS.md#code-generation-pipeline) for details. +Commands in `cmd/calling/`, `cmd/cc/`, and the other area packages are **generated** from Postman collections — do not edit by hand. Run `make refresh` to re-download collections, regenerate Go files, update skill documentation, and rebuild. See the [code generation pipeline](AGENTS.md#code-generation-pipeline) for details. ## License diff --git a/cli_golden_test.go b/cli_golden_test.go deleted file mode 100644 index c1d760a..0000000 --- a/cli_golden_test.go +++ /dev/null @@ -1,373 +0,0 @@ -package main - -import ( - "bytes" - "encoding/json" - "flag" - "fmt" - "io" - "net/http" - "os" - "path/filepath" - "sort" - "strings" - "testing" - - "github.com/Cloverhound/webex-cli/cmd" - "github.com/spf13/cobra" - "github.com/spf13/pflag" -) - -// These tests pin the CLI's published surface: every command's name, aliases, -// help text and flags, and the exact request each API command sends for a fixed -// set of flags. Scripts and agents depend on both, so a change to how commands -// are built must leave these files unchanged. Regenerate after an intended -// change with: go test -run Golden -update . - -var updateGolden = flag.Bool("update", false, "rewrite the golden files") - -const goldenOrg = "6ab1d2c4-0000-4000-8000-00000000c1d0" - -var apiAreas = []string{"admin", "calling", "cc", "device", "meetings", "messaging"} - -// recordedRequest is one HTTP request as the server would see it. -type recordedRequest struct { - Method string `json:"method"` - URL string `json:"url"` - Headers map[string]string `json:"headers,omitempty"` - Body string `json:"body,omitempty"` -} - -type goldenRun struct { - Command string `json:"command"` - Variant string `json:"variant"` - Args []string `json:"args"` - Requests []recordedRequest `json:"requests"` - Error string `json:"error,omitempty"` -} - -// recorder answers every request without touching the network. -type recorder struct { - requests []recordedRequest -} - -func (r *recorder) RoundTrip(req *http.Request) (*http.Response, error) { - rec := recordedRequest{Method: req.Method, URL: canonicalURL(req), Headers: map[string]string{}} - for k, v := range req.Header { - rec.Headers[k] = strings.Join(v, ", ") - } - if req.Body != nil { - data, _ := io.ReadAll(req.Body) - rec.Body = string(data) - } - r.requests = append(r.requests, rec) - - body := "{}" - // AI Agent Studio commands look up the agent's runtime token first. - if strings.HasSuffix(req.URL.Path, "/agents/") { - body = `[{"id":"s-agent-id","bot_access_token":"golden-bot-token"}]` - } - return &http.Response{ - StatusCode: 200, - Header: http.Header{"Content-Type": {"application/json"}}, - Body: io.NopCloser(strings.NewReader(body)), - Request: req, - }, nil -} - -func canonicalURL(req *http.Request) string { - u := *req.URL - u.RawQuery = u.Query().Encode() - return u.String() -} - -func goldenEnv(t *testing.T) *recorder { - t.Helper() - home := t.TempDir() - t.Setenv("HOME", home) - for _, env := range []string{"WEBEX_TOKEN", "WEBEX_REFRESH_TOKEN", "WEBEX_USER", "WEBEX_REGION", "WEBEX_READ_ONLY", "WEBEX_ORG", "WEBEX_CC_REGION"} { - t.Setenv(env, "") - } - t.Chdir(t.TempDir()) - - rec := &recorder{} - saved := http.DefaultTransport - http.DefaultTransport = rec - t.Cleanup(func() { http.DefaultTransport = saved }) - - devnull, err := os.OpenFile(os.DevNull, os.O_WRONLY, 0) - if err != nil { - t.Fatal(err) - } - stdout, stderr := os.Stdout, os.Stderr - os.Stdout, os.Stderr = devnull, devnull - t.Cleanup(func() { os.Stdout, os.Stderr = stdout, stderr; devnull.Close() }) - - root := cmd.RootCommand() - root.SetOut(io.Discard) - root.SetErr(io.Discard) - return rec -} - -// leafCommands lists runnable commands under the API areas, by path. -func leafCommands(root *cobra.Command) []*cobra.Command { - var out []*cobra.Command - var walk func(c *cobra.Command) - walk = func(c *cobra.Command) { - if c.Runnable() && !c.HasSubCommands() { - out = append(out, c) - } - for _, child := range c.Commands() { - walk(child) - } - } - for _, area := range apiAreas { - for _, c := range root.Commands() { - if c.Name() == area { - walk(c) - } - } - } - sort.Slice(out, func(i, j int) bool { return out[i].CommandPath() < out[j].CommandPath() }) - return out -} - -// skippedFlags are left unset: orgid and org-id come from --organization, last -// depends on the clock, and body flags replace the per-field flags. -var skippedFlags = map[string]bool{"orgid": true, "org-id": true, "last": true, "body": true, "body-file": true} - -func sampleValue(f *pflag.Flag) string { - switch f.Name { - case "from": - return "2026-01-01T00:00:00.000Z" - case "to": - return "2026-01-02T00:00:00.000Z" - } - switch f.Value.Type() { - case "bool": - return "true" - case "int", "int64", "int32": - return "7" - case "float64", "float32": - return "1.5" - case "stringSlice", "stringArray": - return "s-" + f.Name + "-1,s-" + f.Name + "-2" - case "duration": - return "90s" - default: - return "s-" + f.Name - } -} - -func isRequired(f *pflag.Flag) bool { - v, ok := f.Annotations[cobra.BashCompOneRequiredFlag] - return ok && len(v) > 0 && v[0] == "true" -} - -// resetFlags returns every flag to its default, since cobra keeps values set by an -// earlier run of the same command. -func resetFlags(c *cobra.Command) { - reset := func(f *pflag.Flag) { - if sv, ok := f.Value.(pflag.SliceValue); ok { - sv.Replace(nil) - } else { - f.Value.Set(f.DefValue) - } - f.Changed = false - } - for x := c; x != nil; x = x.Parent() { - x.Flags().VisitAll(reset) - x.PersistentFlags().VisitAll(reset) - } -} - -func run(rec *recorder, c *cobra.Command, variant string, args []string) goldenRun { - resetFlags(c) - rec.requests = nil - path := strings.Fields(c.CommandPath())[1:] - full := append(append([]string{}, path...), args...) - full = append(full, "--token", "golden-token", "--organization", goldenOrg) - root := cmd.RootCommand() - root.SetArgs(full) - err := cmd.Execute() - out := goldenRun{Command: strings.Join(path, " "), Variant: variant, Args: args, Requests: rec.requests} - if out.Requests == nil { - out.Requests = []recordedRequest{} - } - if err != nil { - out.Error = err.Error() - } - return out -} - -func TestGoldenRequests(t *testing.T) { - rec := goldenEnv(t) - root := cmd.RootCommand() - // Execute strips the required mark from org flags, which decides "required" below. - root.SetArgs([]string{"version"}) - cmd.Execute() - - byArea := map[string][]goldenRun{} - for _, c := range leafCommands(root) { - area := strings.Fields(c.CommandPath())[1] - var all, required []string - c.Flags().VisitAll(func(f *pflag.Flag) { - if skippedFlags[f.Name] || c.InheritedFlags().Lookup(f.Name) != nil { - return - } - arg := "--" + f.Name + "=" + sampleValue(f) - all = append(all, arg) - if isRequired(f) { - required = append(required, arg) - } - }) - runs := []goldenRun{run(rec, c, "all-flags", all), run(rec, c, "required", required)} - if c.Flags().Lookup("body") != nil { - runs = append(runs, run(rec, c, "body", append(append([]string{}, required...), `--body={"golden":true}`))) - } - if hasGET(runs[1]) { - runs = append(runs, run(rec, c, "paginate", append(append([]string{}, required...), "--paginate"))) - } - byArea[area] = append(byArea[area], runs...) - } - for _, area := range apiAreas { - compareGolden(t, filepath.Join("testdata", "golden", "requests-"+area+".json"), byArea[area]) - } -} - -func TestCCRegionSelectsContactCenterAndStudioHosts(t *testing.T) { - rec := goldenEnv(t) - root := cmd.RootCommand() - find := func(path string) *cobra.Command { - c, _, err := root.Find(strings.Fields(path)) - if err != nil { - t.Fatal(err) - } - return c - } - site := run(rec, find("cc site list"), "", []string{"--cc-region=EU2"}) - if site.Error != "" || len(site.Requests) != 1 || !strings.HasPrefix(site.Requests[0].URL, "https://api.wxcc-eu2.cisco.com/organization/") { - t.Fatalf("site list: %+v", site) - } - t.Setenv("WEBEX_CC_REGION", "anz1") - agents := run(rec, find("cc ai-agent list"), "", nil) - if agents.Error != "" || len(agents.Requests) == 0 || !strings.HasPrefix(agents.Requests[0].URL, "https://studio.aiagent-anz1.cisco.com/api/") { - t.Fatalf("ai-agent list: %+v", agents) - } - t.Setenv("WEBEX_CC_REGION", "") - people := run(rec, find("admin people list"), "", []string{"--cc-region=jp1"}) - if len(people.Requests) != 1 || !strings.HasPrefix(people.Requests[0].URL, "https://webexapis.com/v1/people") { - t.Fatalf("people list: %+v", people) - } - if bad := run(rec, find("cc site list"), "", []string{"--cc-region=mars1"}); !strings.Contains(bad.Error, "unknown Contact Center region") || len(bad.Requests) != 0 { - t.Fatalf("unknown region: %+v", bad) - } -} - -func hasGET(r goldenRun) bool { - for _, req := range r.Requests { - if req.Method == http.MethodGet { - return true - } - } - return false -} - -type goldenFlag struct { - Name string `json:"name"` - Shorthand string `json:"shorthand,omitempty"` - Type string `json:"type"` - Default string `json:"default,omitempty"` - Usage string `json:"usage,omitempty"` - Required bool `json:"required,omitempty"` - Hidden bool `json:"hidden,omitempty"` -} - -type goldenCommand struct { - Path string `json:"path"` - Aliases []string `json:"aliases,omitempty"` - Short string `json:"short,omitempty"` - Long string `json:"long,omitempty"` - Hidden bool `json:"hidden,omitempty"` - Flags []goldenFlag `json:"flags,omitempty"` -} - -func TestGoldenCommandTree(t *testing.T) { - goldenEnv(t) - root := cmd.RootCommand() - root.SetArgs([]string{"version"}) - cmd.Execute() - - var out []goldenCommand - var walk func(c *cobra.Command) - walk = func(c *cobra.Command) { - gc := goldenCommand{Path: c.CommandPath(), Aliases: c.Aliases, Short: c.Short, Long: c.Long, Hidden: c.Hidden} - c.LocalFlags().VisitAll(func(f *pflag.Flag) { - gc.Flags = append(gc.Flags, goldenFlag{ - Name: f.Name, Shorthand: f.Shorthand, Type: f.Value.Type(), Default: f.DefValue, - Usage: f.Usage, Required: isRequired(f), Hidden: f.Hidden, - }) - }) - out = append(out, gc) - children := c.Commands() - sort.Slice(children, func(i, j int) bool { return children[i].Name() < children[j].Name() }) - for _, child := range children { - walk(child) - } - } - walk(root) - compareGolden(t, filepath.Join("testdata", "golden", "commands.json"), out) -} - -func compareGolden(t *testing.T, path string, v any) { - t.Helper() - var buf bytes.Buffer - enc := json.NewEncoder(&buf) - enc.SetEscapeHTML(false) - enc.SetIndent("", " ") - if err := enc.Encode(v); err != nil { - t.Fatal(err) - } - if *updateGolden { - if err := os.MkdirAll(filepath.Dir(goldenPath(t, path)), 0o755); err != nil { - t.Fatal(err) - } - if err := os.WriteFile(goldenPath(t, path), buf.Bytes(), 0o644); err != nil { - t.Fatal(err) - } - return - } - want, err := os.ReadFile(goldenPath(t, path)) - if err != nil { - t.Fatalf("%v (run go test -run Golden -update . to create it)", err) - } - if !bytes.Equal(want, buf.Bytes()) { - t.Errorf("%s differs:\n%s", path, firstDiff(string(want), buf.String())) - } -} - -// goldenPath resolves a testdata path against the package directory, since the -// tests change the working directory. -func goldenPath(t *testing.T, rel string) string { - return filepath.Join(packageDir, rel) -} - -var packageDir, _ = os.Getwd() - -func firstDiff(want, got string) string { - w, g := strings.Split(want, "\n"), strings.Split(got, "\n") - for i := 0; i < len(w) || i < len(g); i++ { - var a, b string - if i < len(w) { - a = w[i] - } - if i < len(g) { - b = g[i] - } - if a != b { - start := max(0, i-3) - return fmt.Sprintf("line %d\n want: %s\n got: %s\n context: %s", i+1, a, b, strings.Join(g[start:min(len(g), i+3)], "\n")) - } - } - return "(no line differs)" -} diff --git a/cmd/admin/admin_audit.go b/cmd/admin/admin_audit.go new file mode 100644 index 0000000..6688fb7 --- /dev/null +++ b/cmd/admin/admin_audit.go @@ -0,0 +1,115 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package admin + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/Cloverhound/webex-cli/internal/timeutil" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = timeutil.ParseLastISO + +var adminAuditCmd = &cobra.Command{ + Use: "admin-audit", + Short: "AdminAudit commands", +} + +func init() { + cmd.AdminCmd.AddCommand(adminAuditCmd) + + { // list-events + var orgId string + var from string + var to string + var actorId string + var max string + var offset string + var eventCategories string + var last string + cmd := &cobra.Command{ + Use: "list-events", + Short: "List Admin Audit Events", + Long: `List admin audit events in your organization. Several query parameters are available to filter the response. + +Long result sets will be split into [pages](/docs/basics#pagination). + +**NOTE**: A maximum of one year of audit events can be returned per request.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/adminAudit/events") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("orgId", orgId) + req.QueryParam("from", from) + req.QueryParam("to", to) + req.QueryParam("actorId", actorId) + req.QueryParam("max", max) + req.QueryParam("offset", offset) + req.QueryParam("eventCategories", eventCategories) + req.QueryParam("eventCategories", eventCategories) + if config.Paginate() { + req.OffsetPaging("offset", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List events in this organization, by ID.") + cmd.Flags().StringVar(&from, "from", "", "List events which occurred after a specific date and time.") + cmd.Flags().StringVar(&to, "to", "", "List events which occurred before a specific date and time.") + cmd.Flags().StringVar(&actorId, "actor-id", "", "List events performed by this person, by ID.") + cmd.Flags().StringVar(&max, "max", "", "Limit the maximum number of events in the response. The maximum value is `200`.") + cmd.Flags().StringVar(&offset, "offset", "", "Offset from the first result that you want to fetch.") + cmd.Flags().StringVar(&eventCategories, "event-categories", "", "List events, by event categories.") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + adminAuditCmd.AddCommand(cmd) + } + + { // list-event-categories + cmd := &cobra.Command{ + Use: "list-event-categories", + Short: "List Admin Audit Event Categories", + Long: `Get the list of all admin event categories.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/adminAudit/eventCategories") + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + adminAuditCmd.AddCommand(cmd) + } + +} diff --git a/cmd/admin/analytics.go b/cmd/admin/analytics.go new file mode 100644 index 0000000..dea9289 --- /dev/null +++ b/cmd/admin/analytics.go @@ -0,0 +1,135 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package admin + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/Cloverhound/webex-cli/internal/timeutil" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = timeutil.ParseLastISO + +var analyticsCmd = &cobra.Command{ + Use: "analytics", + Short: "Analytics commands", +} + +func init() { + cmd.AdminCmd.AddCommand(analyticsCmd) + + { // historical-data-related-messaging + var from string + var to string + var last string + cmd := &cobra.Command{ + Use: "historical-data-related-messaging", + Short: "Historical Data related to Messaging", + Long: `Returns daily aggregates of various metrics related to Webex messaging. + +
The base URL for these APIs is **analytics.webexapis.com**, which does not work with the **Try It** feature.
`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.AnalyticsBaseURL, "GET", "/v1/analytics/messagingMetrics/dailyTotals") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("from", from) + req.QueryParam("to", to) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&from, "from", "", "UTC date starting from which the data needs to be returned.") + cmd.Flags().StringVar(&to, "to", "", "UTC date up to which the data needs to be returned") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + analyticsCmd.AddCommand(cmd) + } + + { // historical-data-related-room-devices + var from string + var to string + var last string + cmd := &cobra.Command{ + Use: "historical-data-related-room-devices", + Short: "Historical Data related to Room Devices", + Long: `Returns daily aggregates of various metrics related to Room Devices. + +
The base URL for these APIs is **analytics.webexapis.com**, which does not work with the **Try It** feature.
`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.AnalyticsBaseURL, "GET", "/v1/analytics/roomDeviceMetrics/dailyTotals") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("from", from) + req.QueryParam("to", to) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&from, "from", "", "Starting UTC Date from which historical data should be returned.") + cmd.Flags().StringVar(&to, "to", "", "Ending UTC Date for which data should be returned.") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + analyticsCmd.AddCommand(cmd) + } + + { // historical-data-related-meetings + var siteUrl string + var from string + var to string + var last string + cmd := &cobra.Command{ + Use: "historical-data-related-meetings", + Short: "Historical Data related to Meetings", + Long: `Return aggregates of various metrics related to meetings for a given Webex site over a specified time range. + +
The base URL for these APIs is **analytics.webexapis.com**, which does not work with the **Try It** feature.
`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.AnalyticsBaseURL, "GET", "/v1/analytics/meetingsMetrics/aggregates") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("siteUrl", siteUrl) + req.QueryParam("from", from) + req.QueryParam("to", to) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&siteUrl, "site-url", "", "URL of the Webex site for which historical data is requested.") + cmd.Flags().StringVar(&from, "from", "", "UTC Date starting from which the data needs to be returned") + cmd.Flags().StringVar(&to, "to", "", "UTC Date up to which the data needs to be returned") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + analyticsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/admin/archive_users.go b/cmd/admin/archive_users.go new file mode 100644 index 0000000..53a92ad --- /dev/null +++ b/cmd/admin/archive_users.go @@ -0,0 +1,77 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package admin + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var archiveUsersCmd = &cobra.Command{ + Use: "archive-users", + Short: "ArchiveUsers commands", +} + +func init() { + cmd.AdminCmd.AddCommand(archiveUsersCmd) + + { // get + var orgId string + var useruuid string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Archive User", + Long: "The `useruuid` is the unique identifier of a user in the system. It is assigned when the user is created and can be retrieved through **GET Users** API.
\n\n**Authorization**\n\nOAuth token issued by the Identity Broker.\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`.\n- `identity:people_read`.\n\nThe following administrators can use this API:\n\n- `Account in the specified organization with one of the following roles: id_full_admin, id_user_admin, id_readonly_admin`.\n- `Proxy account managing the specified organization with one of the following roles: id_full_admin, id_user_admin, id_readonly_admin`.\n\n
", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/identity/organizations/{orgId}/v1/ArchivedUser/{useruuid}") + req.PathParam("orgId", orgId) + req.PathParam("useruuid", useruuid) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "The unique identifier for the organization.") + cmd.MarkFlagRequired("org-id") + cmd.Flags().StringVar(&useruuid, "useruuid", "", "The unique identifier for the user.") + cmd.MarkFlagRequired("useruuid") + archiveUsersCmd.AddCommand(cmd) + } + + { // query + var orgId string + var filter string + cmd := &cobra.Command{ + Use: "query", + Short: "Query Archive User", + Long: "Retrieves archived user information for the specified organization. Supported attributes are `id`, which is the unique identifier of a user in the system, and `username`. It is assigned when the user is created and can be retrieved through **GET Users** API.
\n\n**Authorization**\n\nOAuth token issued by the Identity Broker.\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`.\n- `identity:people_read`.\n\nThe following administrators can use this API:\n\n- `Account in the specified organization with one of the following roles: id_full_admin, id_user_admin, id_readonly_admin`.\n- `Proxy account managing the specified organization with one of the following roles: id_full_admin, id_user_admin, id_readonly_admin`.\n\n
", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/identity/organizations/{orgId}/v1/ArchivedUser") + req.PathParam("orgId", orgId) + req.QueryParam("filter", filter) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "The unique identifier for the organization.") + cmd.MarkFlagRequired("org-id") + cmd.Flags().StringVar(&filter, "filter", "", "A SCIM-style filter expression used to search archived users. Supported attributes are `username` and `id`, and only the `eq` operator is supported. Examples: - `username eq \"test_user_1@example.com\"` - `id eq \"40929cc6-2df2-4ab5-871c-ec8e38f07b93\"`") + archiveUsersCmd.AddCommand(cmd) + } + +} diff --git a/cmd/admin/authorizations.go b/cmd/admin/authorizations.go new file mode 100644 index 0000000..4299213 --- /dev/null +++ b/cmd/admin/authorizations.go @@ -0,0 +1,120 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package admin + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var authorizationsCmd = &cobra.Command{ + Use: "authorizations", + Short: "Authorizations commands", +} + +func init() { + cmd.AdminCmd.AddCommand(authorizationsCmd) + + { // list-user + var personId string + var personEmail string + cmd := &cobra.Command{ + Use: "list-user", + Short: "List authorizations for a user", + Long: "Lists all authorizations for a user. Either `personId` or `personEmail` must be provided. This API does not support pagination.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/authorizations") + req.QueryParam("personId", personId) + req.QueryParam("personEmail", personEmail) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "List authorizations for this user id.") + cmd.Flags().StringVar(&personEmail, "person-email", "", "List authorizations for this user email.") + authorizationsCmd.AddCommand(cmd) + } + + { // delete-org-client-id + var clientId string + var orgId string + cmd := &cobra.Command{ + Use: "delete-org-client-id", + Short: "Delete authorization of org and client ID", + Long: `Deletes an authorization by org ID and client ID.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/authorizations") + req.QueryParam("clientId", clientId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&clientId, "client-id", "", "The unique oAuth client id.") + cmd.Flags().StringVar(&orgId, "org-id", "", "The ID of the organization to which this person belongs. If no orgId is specified, use orgId from the OAuth token.") + authorizationsCmd.AddCommand(cmd) + } + + { // delete + var authorizationId string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete authorization", + Long: "Deletes an authorization by authorization ID.\n\nSpecify the authorization Id in the `authorizationId` parameter in the URI, which was listed in the list resource.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/authorizations/{authorizationId}") + req.PathParam("authorizationId", authorizationId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&authorizationId, "authorization-id", "", "The unique identifier for the message.") + cmd.MarkFlagRequired("authorization-id") + authorizationsCmd.AddCommand(cmd) + } + + { // get-expiration-status-token + cmd := &cobra.Command{ + Use: "get-expiration-status-token", + Short: "Get expiration status for a token", + Long: `Epoch-based expiration time for the token.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/authorizations/tokenExpiry") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + authorizationsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/admin/classifications.go b/cmd/admin/classifications.go new file mode 100644 index 0000000..04da80a --- /dev/null +++ b/cmd/admin/classifications.go @@ -0,0 +1,53 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package admin + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var classificationsCmd = &cobra.Command{ + Use: "classifications", + Short: "Classifications commands", +} + +func init() { + cmd.AdminCmd.AddCommand(classificationsCmd) + + { // list + cmd := &cobra.Command{ + Use: "list", + Short: "List classifications", + Long: `List all the space classifications configured in your org.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/classifications") + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + classificationsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/admin/commands.go b/cmd/admin/commands.go deleted file mode 100644 index 441eb98..0000000 --- a/cmd/admin/commands.go +++ /dev/null @@ -1,9 +0,0 @@ -// Package admin publishes the Webex Admin API commands. -package admin - -import ( - cmd "github.com/Cloverhound/webex-cli/cmd" - "github.com/Cloverhound/webex-cli/internal/apicmd" -) - -var _ = apicmd.Register(cmd.AdminCmd, "admin") diff --git a/cmd/admin/data_sources.go b/cmd/admin/data_sources.go new file mode 100644 index 0000000..c563f9e --- /dev/null +++ b/cmd/admin/data_sources.go @@ -0,0 +1,231 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package admin + +import ( + "fmt" + "strconv" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa + +var dataSourcesCmd = &cobra.Command{ + Use: "data-sources", + Short: "DataSources commands", +} + +func init() { + cmd.AdminCmd.AddCommand(dataSourcesCmd) + + { // register + var audience string + var nonce string + var schemaId string + var subject string + var tokenLifetimeMinutes int64 + var url string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "register", + Short: "Register a Data Source", + Long: "Register a data source with the Webex BYODS system. Authenticate using a Service App with the `spark-admin:datasource_write` scope.\nSchema IDs determine the types of data Webex sends to the DAP and the expected responses. Use the Data Source Schemas endpoints to inspect the available schemas.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/dataSources") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("audience", audience) + req.BodyString("nonce", nonce) + req.BodyString("schemaId", schemaId) + req.BodyString("subject", subject) + req.BodyInt("tokenLifetimeMinutes", tokenLifetimeMinutes, cmd.Flags().Changed("token-lifetime-minutes")) + req.BodyString("url", url) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&audience, "audience", "", "") + cmd.Flags().StringVar(&nonce, "nonce", "", "") + cmd.Flags().StringVar(&schemaId, "schema-id", "", "") + cmd.Flags().StringVar(&subject, "subject", "", "") + cmd.Flags().Int64Var(&tokenLifetimeMinutes, "token-lifetime-minutes", 0, "") + cmd.Flags().StringVar(&url, "url", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + dataSourcesCmd.AddCommand(cmd) + } + + { // get-all + cmd := &cobra.Command{ + Use: "get-all", + Short: "Retrieve All Data Sources", + Long: "Lists all data sources registered by the Service App. Requires the `spark-admin:datasource_read` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/dataSources") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + dataSourcesCmd.AddCommand(cmd) + } + + { // get-schemas + cmd := &cobra.Command{ + Use: "get-schemas", + Short: "Retrieve Data Source Schemas", + Long: `Lists the available data source schemas. A valid API access token is required, but no specific scope is needed.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/dataSources/schemas") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + dataSourcesCmd.AddCommand(cmd) + } + + { // get-schema + var schemaId string + cmd := &cobra.Command{ + Use: "get-schema", + Short: "Retrieve Details of a Specific Data Source Schema", + Long: `Retrieves details for a specific data source schema by schema ID. A valid API access token is required, but no specific scope is needed.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/dataSources/schemas/{schemaId}") + req.PathParam("schemaId", schemaId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&schemaId, "schema-id", "", "The unique identifier for the schema.") + cmd.MarkFlagRequired("schema-id") + dataSourcesCmd.AddCommand(cmd) + } + + { // delete + var dataSourceId string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete a Data Source", + Long: "Deletes a data source by ID.\n\nSpecify the data source ID in the `dataSourceId` URI parameter.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/dataSources/{dataSourceId}") + req.PathParam("dataSourceId", dataSourceId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&dataSourceId, "data-source-id", "", "The unique identifier for the data source.") + cmd.MarkFlagRequired("data-source-id") + dataSourcesCmd.AddCommand(cmd) + } + + { // get + var dataSourceId string + cmd := &cobra.Command{ + Use: "get", + Short: "Retrieve Data Source Details", + Long: "Retrieves details for a data source by ID. Use a Service App token with the `spark-admin:datasource_read` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/dataSources/{dataSourceId}") + req.PathParam("dataSourceId", dataSourceId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&dataSourceId, "data-source-id", "", "The unique identifier for the data source.") + cmd.MarkFlagRequired("data-source-id") + dataSourcesCmd.AddCommand(cmd) + } + + { // update + var dataSourceId string + var audience string + var errorMessage string + var nonce string + var schemaId string + var status string + var subject string + var tokenLifetimeMinutes int64 + var url string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Short: "Update a Data Source", + Long: "Updates a data source. The fields you can update are `audience`, `subject`, `nonce`, `url`, and `tokenLifetimeMinutes`.\nYou can set `status` from `active` to `disabled` only if you provide an `errorMessage`, which may be shown to the customer administrator in Control Hub.\nUpdate tokens before they expire to prevent service interruption.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/dataSources/{dataSourceId}") + req.PathParam("dataSourceId", dataSourceId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("audience", audience) + req.BodyString("errorMessage", errorMessage) + req.BodyString("nonce", nonce) + req.BodyString("schemaId", schemaId) + req.BodyString("status", status) + req.BodyString("subject", subject) + req.BodyInt("tokenLifetimeMinutes", tokenLifetimeMinutes, cmd.Flags().Changed("token-lifetime-minutes")) + req.BodyString("url", url) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&dataSourceId, "data-source-id", "", "The unique identifier for the data source.") + cmd.MarkFlagRequired("data-source-id") + cmd.Flags().StringVar(&audience, "audience", "", "") + cmd.Flags().StringVar(&errorMessage, "error-message", "", "") + cmd.Flags().StringVar(&nonce, "nonce", "", "") + cmd.Flags().StringVar(&schemaId, "schema-id", "", "") + cmd.Flags().StringVar(&status, "status", "", "") + cmd.Flags().StringVar(&subject, "subject", "", "") + cmd.Flags().Int64Var(&tokenLifetimeMinutes, "token-lifetime-minutes", 0, "") + cmd.Flags().StringVar(&url, "url", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + dataSourcesCmd.AddCommand(cmd) + } + +} diff --git a/cmd/admin/domain_management.go b/cmd/admin/domain_management.go new file mode 100644 index 0000000..507ae2e --- /dev/null +++ b/cmd/admin/domain_management.go @@ -0,0 +1,213 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package admin + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var domainManagementCmd = &cobra.Command{ + Use: "domain-management", + Short: "DomainManagement commands", +} + +func init() { + cmd.AdminCmd.AddCommand(domainManagementCmd) + + { // get-verification-token + var orgId string + var domain string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "get-verification-token", + Short: "Get Domain Verification Token", + Long: "This endpoint helps generate a token for a given domain within the specified organization. The user needs to add this token as a 'TXT' record to the DNS server.\n\n**Possible Error:**\n\n- 409: The request encountered a resource conflict. This error occurs if the domain is either claimed by another organization or by the same organization.\n\n**Authorization:**\n\nAn 'OAuth' token issued by the 'Identity Broker' is required to access this endpoint. The token must include one of the following scopes:\n\n- `Identity:Organization`\n\n- `identity:organizations_rw`\n\n**Administrator Roles:**\n\nThe following administrators can use this API:\n\n- `id_full_admin`", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/identity/organizations/{orgId}/actions/getDomainVerificationToken") + req.PathParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("domain", domain) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "The Webex Identity-assigned organization identifier for a user's organization.") + cmd.MarkFlagRequired("org-id") + cmd.Flags().StringVar(&domain, "domain", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + domainManagementCmd.AddCommand(cmd) + } + + { // verify + var orgId string + var domain string + var claimDomain bool + var reserveDomain bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "verify", + Short: "Verify Domain", + Long: "This endpoint helps verify a given domain within the specified organization. This API verifies domain ownership by looking up and validating the 'TXT' record for the domain.\nOnce verified, domain enforcement will be applied to the organization. Any users in the organization whose email domain doesn't match one of the verified domains will be marked as transient.\n\nIf you want to verify and claim the domain, just set the 'claimDomain' parameter to true. By default, it's set to false, which will only verify the domain.\n\n**Possible Errors:**\n\n- 400: The request was a Bad Request. The domain can't be verified. This error happens if the user didn't request a token before trying to verify the domain.\n\n- 409: The request resulted in a resource conflict. This error occurs if the domain has already been claimed by another organization.\n\n**Authorization:**\n\nAn 'OAuth' token issued by the 'Identity Broker' is required to access this endpoint. The token must include one of the following scopes:\n\n- `Identity:Organization`\n\n- `identity:organizations_rw`\n\n**Administrator Roles:**\n\nThe following administrators can use this API:\n\n- `id_full_admin`", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/identity/organizations/{orgId}/actions/verifyDomain") + req.PathParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("domain", domain) + req.BodyBool("claimDomain", claimDomain, cmd.Flags().Changed("claim-domain")) + req.BodyBool("reserveDomain", reserveDomain, cmd.Flags().Changed("reserve-domain")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "The Webex Identity-assigned organization identifier for a user's organization.") + cmd.MarkFlagRequired("org-id") + cmd.Flags().StringVar(&domain, "domain", "", "") + cmd.Flags().BoolVar(&claimDomain, "claim-domain", false, "") + cmd.Flags().BoolVar(&reserveDomain, "reserve-domain", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + domainManagementCmd.AddCommand(cmd) + } + + { // claim + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "claim", + Short: "Claim Domain", + Long: "This endpoint helps claim the given domain within the specified organization. The domain needs to be verified before it can be claimed.\n\n**Note**\n\n\nThere's an organization-level boolean flag called 'enforceVerifiedDomains'. If this flag is set to false, we won't put any user in the organization into a transient state when verifying or claiming a domain.\nCustomers can still create users within the organization who don't use the verified domains as their email. However, if the flag is set to true, all users in the organization must use one of the verified domains as their email.\nThis flag defines whether the organization enforces user email verification within the organization. If set to true, all users inside the organization must use one of the verified domains.\nThis flag is effective only after the admin has verified at least one email domain.\n\n\n**Possible Error:**\n\n- 400: The request was a Bad Request. This error occurs if the domain is not verified.\n\n**Authorization:**\n\nAn 'OAuth' token issued by the 'Identity Broker' is required to access this endpoint. The token must include one of the following scopes:\n\n- `Identity:Organization`\n\n- `identity:organizations_rw`\n\n**Administrator Roles:**\n\nThe following administrators can use this API:\n\n- `id_full_admin`", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/identity/organizations/{orgId}/actions/claimDomain") + req.PathParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "The Webex Identity-assigned organization identifier for a user's organization.") + cmd.MarkFlagRequired("org-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + domainManagementCmd.AddCommand(cmd) + } + + { // unverify + var orgId string + var domain string + var removePending bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "unverify", + Short: "Unverify Domain", + Long: "After you unclaim the domain, it will still be verified. Domain enforcement will still apply to the organization. The unverify endpoint helps to remove the domain ownership verification for the organization.\n\n**Possible Error:**\n\n- 400: The request was a Bad Request. The domain cannot be unverified. This error occurs if the domain is still claimed.\n\n- 404: The request was Not Found. This error occurs if the domain is not associated with the organization.\n\n**Authorization:**\n\nAn 'OAuth' token issued by the 'Identity Broker' is required to access this endpoint. The token must include one of the following scopes:\n\n- `Identity:Organization`\n\n- `identity:organizations_rw`\n\n**Administrator Roles:**\n\nThe following administrators can use this API:\n\n- `id_full_admin`", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/identity/organizations/{orgId}/actions/unverifyDomain") + req.PathParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("domain", domain) + req.BodyBool("removePending", removePending, cmd.Flags().Changed("remove-pending")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "The Webex Identity-assigned organization identifier for a user's organization.") + cmd.MarkFlagRequired("org-id") + cmd.Flags().StringVar(&domain, "domain", "", "") + cmd.Flags().BoolVar(&removePending, "remove-pending", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + domainManagementCmd.AddCommand(cmd) + } + + { // unclaim + var orgId string + var domain string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "unclaim", + Short: "Unclaim Domain", + Long: "This API is used to unclaim a domain for the organization. The domain will remain verified, and domain enforcement will still apply to the given organization.\n\n**Possible Error:**\n\n- 400: The request was a Bad Request. The domain cannot be unclaimed. This error occurs if the requested parameter is invalid.\n\n**Authorization:**\n\nAn 'OAuth' token issued by the 'Identity Broker' is required to access this endpoint. The token must include one of the following scopes:\n\n- `Identity:Organization`\n\n- `identity:organizations_rw`\n\n**Administrator Roles:**\n\nThe following administrators can use this API:\n\n- `id_full_admin`", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/identity/organizations/{orgId}/actions/unclaimDomain") + req.PathParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("domain", domain) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "The Webex Identity-assigned organization identifier for a user's organization.") + cmd.MarkFlagRequired("org-id") + cmd.Flags().StringVar(&domain, "domain", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + domainManagementCmd.AddCommand(cmd) + } + +} diff --git a/cmd/admin/events.go b/cmd/admin/events.go new file mode 100644 index 0000000..d66710b --- /dev/null +++ b/cmd/admin/events.go @@ -0,0 +1,108 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package admin + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/Cloverhound/webex-cli/internal/timeutil" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = timeutil.ParseLastISO + +var eventsCmd = &cobra.Command{ + Use: "events", + Short: "Events commands", +} + +func init() { + cmd.AdminCmd.AddCommand(eventsCmd) + + { // list + var resource string + var typeVal string + var actorId string + var from string + var to string + var max string + var serviceType string + var last string + cmd := &cobra.Command{ + Use: "list", + Short: "List Events", + Long: `List events in your organization. Several query parameters are available to filter the events returned in the response. + +Long result sets will be split into [pages](/docs/basics#pagination).`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/events") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("resource", resource) + req.QueryParam("type", typeVal) + req.QueryParam("actorId", actorId) + req.QueryParam("from", from) + req.QueryParam("to", to) + req.QueryParam("max", max) + req.QueryParam("serviceType", serviceType) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&resource, "resource", "", "List events with a specific resource type.") + cmd.Flags().StringVar(&typeVal, "type", "", "List events with a specific event type.") + cmd.Flags().StringVar(&actorId, "actor-id", "", "List events performed by this person, by person ID.") + cmd.Flags().StringVar(&from, "from", "", "List events which occurred after a specific date and time.") + cmd.Flags().StringVar(&to, "to", "", "List events that occurred before a specific date and time. If not specified, events up to the present time will be listed. Cannot be set to a future date relative to the current time.") + cmd.Flags().StringVar(&max, "max", "", "Limit the maximum number of events in the response. Value must be between 1 and 1000, inclusive.") + cmd.Flags().StringVar(&serviceType, "service-type", "", "List events for a specific service type. This parameter is only applicable and mandatory when resource is set to `convergedRecordings`.") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + eventsCmd.AddCommand(cmd) + } + + { // get + var eventId string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Event Details", + Long: "Shows details for an event, by event ID.\n\nSpecify the event ID in the `eventId` parameter in the URI.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/events/{eventId}") + req.PathParam("eventId", eventId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&eventId, "event-id", "", "The unique identifier for the event.") + cmd.MarkFlagRequired("event-id") + eventsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/admin/groups.go b/cmd/admin/groups.go new file mode 100644 index 0000000..01184be --- /dev/null +++ b/cmd/admin/groups.go @@ -0,0 +1,225 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package admin + +import ( + "fmt" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strings.Join + +var groupsCmd = &cobra.Command{ + Use: "groups", + Short: "Groups commands", +} + +func init() { + cmd.AdminCmd.AddCommand(groupsCmd) + + { // create + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a Group", + Long: `Create a new group for a given organization. The group may optionally be created with group members.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/groups") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + groupsCmd.AddCommand(cmd) + } + + { // list-search + var orgId string + var filter string + var attributes string + var sortBy string + var sortOrder string + var includeMembers string + var startIndex string + var count string + cmd := &cobra.Command{ + Use: "list-search", + Short: "List and Search Groups", + Long: "List groups in your organization.\n\n* Set the `includeMembers` parameter to `true` to return group members. The total number of members returned is limited to 500.\n\n* Use the `startIndex` and `count` parameters to page through result set.\n\n* To search for a specific group use the `filter` parameter.\n\n* Use `sortBy` parameter to sort the responses by `id` or `displayName`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/groups") + req.QueryParam("orgId", orgId) + req.QueryParam("filter", filter) + req.QueryParam("attributes", attributes) + req.QueryParam("sortBy", sortBy) + req.QueryParam("sortOrder", sortOrder) + req.QueryParam("includeMembers", includeMembers) + req.QueryParam("startIndex", startIndex) + req.QueryParam("count", count) + if config.Paginate() { + req.OffsetPaging("startIndex", "count", 1) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List groups in this organization. Only admin users of another organization (such as partners) may use this parameter.") + cmd.Flags().StringVar(&filter, "filter", "", "Searches the group by `displayName` with an operator and a value. The available operators are `eq` (equal) and `sw` (starts with). Only `displayName` can be used to filter results.") + cmd.Flags().StringVar(&attributes, "attributes", "", "The attributes to return.") + cmd.Flags().StringVar(&sortBy, "sort-by", "", "Sort the results based by group `displayName`.") + cmd.Flags().StringVar(&sortOrder, "sort-order", "", "Sort results alphabetically by group display name, in ascending or descending order.") + cmd.Flags().StringVar(&includeMembers, "include-members", "", "Optionally return group members in the response. The maximum number of members returned is 500.") + cmd.Flags().StringVar(&startIndex, "start-index", "", "The index to start for group pagination.") + cmd.Flags().StringVar(&count, "count", "", "Specifies the desired number of search results per page.") + groupsCmd.AddCommand(cmd) + } + + { // update + var groupId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Short: "Update a Group", + Long: "Update the group details, by ID.\n\nSpecify the group ID in the `groupId` parameter in the URI.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PATCH", "/groups/{groupId}") + req.PathParam("groupId", groupId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&groupId, "group-id", "", "A unique identifier for the group.") + cmd.MarkFlagRequired("group-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + groupsCmd.AddCommand(cmd) + } + + { // get + var groupId string + var includeMembers string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Group Details", + Long: `Get details for a group, by ID. + +Optionally, the members may be retrieved with this request. The maximum number of members returned is 500.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/groups/{groupId}") + req.PathParam("groupId", groupId) + req.QueryParam("includeMembers", includeMembers) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&groupId, "group-id", "", "A unique identifier for the group.") + cmd.MarkFlagRequired("group-id") + cmd.Flags().StringVar(&includeMembers, "include-members", "", "Include the members as part of the response.") + groupsCmd.AddCommand(cmd) + } + + { // delete + var groupId string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete a Group", + Long: "Remove a group from the system.\n\nSpecify the group ID in the `groupId` parameter in the URI.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/groups/{groupId}") + req.PathParam("groupId", groupId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&groupId, "group-id", "", "A unique identifier for the group.") + cmd.MarkFlagRequired("group-id") + groupsCmd.AddCommand(cmd) + } + + { // get-members + var groupId string + var startIndex string + var count string + cmd := &cobra.Command{ + Use: "get-members", + Short: "Get Group Members", + Long: `Gets the members of a group. + +* The default maximum members returned is 500. + +* Control parameters is available to page through the members and to control the size of the results.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/groups/{groupId}/members") + req.PathParam("groupId", groupId) + req.QueryParam("startIndex", startIndex) + req.QueryParam("count", count) + if config.Paginate() { + req.OffsetPaging("startIndex", "count", 1) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&groupId, "group-id", "", "A unique identifier for the group.") + cmd.MarkFlagRequired("group-id") + cmd.Flags().StringVar(&startIndex, "start-index", "", "The index to start for group pagination.") + cmd.Flags().StringVar(&count, "count", "", "Non-negative integer that specifies the desired number of search results per page. Maximum value for the count is 500.") + groupsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/admin/guest_management.go b/cmd/admin/guest_management.go new file mode 100644 index 0000000..d7accd7 --- /dev/null +++ b/cmd/admin/guest_management.go @@ -0,0 +1,80 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package admin + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var guestManagementCmd = &cobra.Command{ + Use: "guest-management", + Short: "GuestManagement commands", +} + +func init() { + cmd.AdminCmd.AddCommand(guestManagementCmd) + + { // create + var subject string + var displayName string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a Guest", + Long: "Create a new token for a single guest user. The Service App that creates the guest must have the scope `guest-issuer:write`.\n\nGuests are implicitly created by retrieving the guest access token.\n\nRepeated calls to this API with the same `subject` will create additional tokens without invalidating previous ones. Tokens are valid until the `expiresIn`.\n\nGuests can be renamed by supplying the same `subject` and changing the `displayName.`\n\nTo retrieve a new token for an existing guest, please provide the existing guest's `subject`. Tokens are valid until `expiresIn`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/guests/token") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("subject", subject) + req.BodyString("displayName", displayName) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&subject, "subject", "", "") + cmd.Flags().StringVar(&displayName, "display-name", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + guestManagementCmd.AddCommand(cmd) + } + + { // get-count + cmd := &cobra.Command{ + Use: "get-count", + Short: "Get Guest Count", + Long: "To retrieve the number of guests, the scopes `guest-issuer:read` or `guest-issuer:write` are needed.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/guests/count") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + guestManagementCmd.AddCommand(cmd) + } + +} diff --git a/cmd/admin/hybrid_clusters.go b/cmd/admin/hybrid_clusters.go new file mode 100644 index 0000000..a74ad47 --- /dev/null +++ b/cmd/admin/hybrid_clusters.go @@ -0,0 +1,80 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package admin + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var hybridClustersCmd = &cobra.Command{ + Use: "hybrid-clusters", + Short: "HybridClusters commands", +} + +func init() { + cmd.AdminCmd.AddCommand(hybridClustersCmd) + + { // list + var orgId string + cmd := &cobra.Command{ + Use: "list", + Short: "List Hybrid Clusters", + Long: "List hybrid clusters for an organization. If no `orgId` is specified, the default is the organization of the authenticated user.\n\nOnly an admin auth token with the `spark-admin:hybrid_clusters_read` scope can list clusters.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/hybrid/clusters") + req.QueryParam("orgId", orgId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List hybrid clusters in this organization. If an organization is not specified, the organization of the caller will be used.") + hybridClustersCmd.AddCommand(cmd) + } + + { // get + var hybridClusterId string + var orgId string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Hybrid Cluster Details", + Long: "Shows details for a hybrid cluster, by ID.\n\nOnly an admin auth token with the `spark-admin:hybrid_clusters_read` scope can see cluster details.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/hybrid/clusters/{hybridClusterId}") + req.PathParam("hybridClusterId", hybridClusterId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&hybridClusterId, "hybrid-cluster-id", "", "The ID of the cluster.") + cmd.MarkFlagRequired("hybrid-cluster-id") + cmd.Flags().StringVar(&orgId, "org-id", "", " Find the cluster in this specific organization. If this is not specified, the organization of the caller will be used. ") + hybridClustersCmd.AddCommand(cmd) + } + +} diff --git a/cmd/admin/hybrid_connectors.go b/cmd/admin/hybrid_connectors.go new file mode 100644 index 0000000..fd71247 --- /dev/null +++ b/cmd/admin/hybrid_connectors.go @@ -0,0 +1,77 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package admin + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var hybridConnectorsCmd = &cobra.Command{ + Use: "hybrid-connectors", + Short: "HybridConnectors commands", +} + +func init() { + cmd.AdminCmd.AddCommand(hybridConnectorsCmd) + + { // list + var orgId string + cmd := &cobra.Command{ + Use: "list", + Short: "List Hybrid Connectors", + Long: "List hybrid connectors for an organization. If no `orgId` is specified, the default is the organization of the authenticated user.\n\nOnly an admin auth token with the `spark-admin:hybrid_connectors_read` scope can list connectors.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/hybrid/connectors") + req.QueryParam("orgId", orgId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List hybrid connectors in this organization. If an organization is not specified, the organization of the caller will be used.") + hybridConnectorsCmd.AddCommand(cmd) + } + + { // get + var connectorId string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Hybrid Connector Details", + Long: "Shows details for a hybrid connector, by ID.\n\nOnly an admin auth token with the `spark-admin:hybrid_connectors_read` scope can see connector details.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/hybrid/connectors/{connectorId}") + req.PathParam("connectorId", connectorId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&connectorId, "connector-id", "", "The ID of the connector.") + cmd.MarkFlagRequired("connector-id") + hybridConnectorsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/admin/identity_org.go b/cmd/admin/identity_org.go new file mode 100644 index 0000000..1c57f98 --- /dev/null +++ b/cmd/admin/identity_org.go @@ -0,0 +1,225 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package admin + +import ( + "fmt" + "strconv" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa +var _ = strings.Join + +var identityOrgCmd = &cobra.Command{ + Use: "identity-org", + Short: "IdentityOrg commands", +} + +func init() { + cmd.AdminCmd.AddCommand(identityOrgCmd) + + { // get + var orgId string + cmd := &cobra.Command{ + Use: "get", + Short: "Get an organization", + Long: "
\n\n**Authorization**\n\nOAuth token rendered by identity broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:organizations_rw`\n\n- `identity:organizations_read`\n\n
", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/identity/organizations/{orgId}") + req.PathParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Webex Identity assigned organization identifier.") + cmd.MarkFlagRequired("org-id") + identityOrgCmd.AddCommand(cmd) + } + + { // update + var orgId string + var schemas []string + var displayName string + var preferredLanguage string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Short: "Update an organization", + Long: "
\n\n**Authorization**\n\nOAuth token rendered by identity broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:organizations_rw`\n\n
\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n
\n\n**Usage**:\n\n1. Input JSON must contain schema: \"urn:cisco:codev:identity:organization:core:1.0\".", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PATCH", "/identity/organizations/{orgId}") + req.PathParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("schemas", schemas) + req.BodyString("displayName", displayName) + req.BodyString("preferredLanguage", preferredLanguage) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Webex Identity assigned organization identifier.") + cmd.MarkFlagRequired("org-id") + cmd.Flags().StringSliceVar(&schemas, "schemas", nil, "") + cmd.Flags().StringVar(&displayName, "display-name", "", "") + cmd.Flags().StringVar(&preferredLanguage, "preferred-language", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + identityOrgCmd.AddCommand(cmd) + } + + { // generate-otp + var orgId string + var userId string + cmd := &cobra.Command{ + Use: "generate-otp", + Short: "Generate OTP", + Long: "This API allows an admin to generate a One-Time Password (OTP) for user accounts with `userNameType` set as `partner-upn`. The OTP is used by users to log in to any Webex application, whereupon they are asked to change their password.\nThe OTP generated by this API has a default length of 6 digits and expires in 7 days.\n\nSeveral OTPs can be active for the same user. When the user successfully uses an OTP, all other OTPs are automatically revoked.\n\nThe creation of OTPs is logged in the [Admin Audit Events](https://developer.webex.com/docs/api/v1/admin-audit-events).\n\n**Possible Error:**\n\n- 403: The request was forbidden. OTP generation is restricted to users with a `userNameType` of `partner-upn`. This error occurs if the user does not meet the required criteria for OTP generation.\n\n**Authorization:**\n\nAn OAuth token issued by the Identity Broker is required to access this endpoint. The token must include one of the following scopes:\n\n- `Identity:one_time_password`\nor\n\n- `Identity:Config`\n\n**Administrator Roles:**\n\nThe following administrators have permission to use this API:\n\n- `Org Full Admin`: Can generate OTPs for non-email-type users in their organization.\n\n- `Partner Full Admin`: Can generate OTPs for User/Machine Accounts in Customer Orgs.\n\n- `Org User Admin`: Can generate OTPs for User/Machine Accounts within their organization.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/identity/organizations/{orgId}/users/{userId}/actions/generateOtp") + req.PathParam("orgId", orgId) + req.PathParam("userId", userId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "The Webex Identity-assigned organization identifier for a user's organization.") + cmd.MarkFlagRequired("org-id") + cmd.Flags().StringVar(&userId, "user-id", "", "The Common Identity-assigned user identifier for an existing user (`entryUUID`).") + cmd.MarkFlagRequired("user-id") + identityOrgCmd.AddCommand(cmd) + } + + { // update-authentication-configuration-settings + var orgId string + var schemas []string + var rememberMyLoginId bool + var rememberMyLoginIdDuration int64 + var mfaEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-authentication-configuration-settings", + Short: "Update Organization Authentication Configuration Settings", + Long: "Update the authentication configuration details, by organizationID.\nSpecify the organization ID in the `orgId` parameter in the URI.\n\n
\n\n**Authorization**\n\nOAuth token rendered by identity broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:organizations_rw`\n\n
\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n
\n\n**Usage**:\n\n1. Input JSON must contain schema: \"urn:cisco:codev:identity:idbroker:authnconfig:schemas:1.0\".", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PATCH", "/identity/organizations/{orgId}/authenticationConfig") + req.PathParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("schemas", schemas) + req.BodyBool("RememberMyLoginId", rememberMyLoginId, cmd.Flags().Changed("remember-my-login-id")) + req.BodyInt("RememberMyLoginIdDuration", rememberMyLoginIdDuration, cmd.Flags().Changed("remember-my-login-id-duration")) + req.BodyBool("mfaEnabled", mfaEnabled, cmd.Flags().Changed("mfa-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "A unique identifier for the org.") + cmd.MarkFlagRequired("org-id") + cmd.Flags().StringSliceVar(&schemas, "schemas", nil, "") + cmd.Flags().BoolVar(&rememberMyLoginId, "remember-my-login-id", false, "") + cmd.Flags().Int64Var(&rememberMyLoginIdDuration, "remember-my-login-id-duration", 0, "") + cmd.Flags().BoolVar(&mfaEnabled, "mfa-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + identityOrgCmd.AddCommand(cmd) + } + + { // update-password-policy + var orgId string + var schemas []string + var minimumNumeric string + var minimumCapAlpha string + var minimumLowAlpha string + var minimumSpecial string + var minimumLength string + var historyCount string + var maxPasswordAge string + var notAcceptableStrings string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-password-policy", + Short: "Update Organization Password Policy", + Long: "Update Organization Password Policy, by organizationID.\nSpecify the organization ID in the `orgId` parameter in the URI.\n\n
\n\n**Authorization**\n\nOAuth token rendered by identity broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:organizations_rw`\n\n
\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n
\n\n**Usage**:\n\n1. Input JSON must contain schema: \"urn:cisco:codev:identity:idbroker:pwdpolicy:schemas:1.0\".", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PATCH", "/identity/organizations/{orgId}/passwordPolicy") + req.PathParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("schemas", schemas) + req.BodyString("minimumNumeric", minimumNumeric) + req.BodyString("minimumCapAlpha", minimumCapAlpha) + req.BodyString("minimumLowAlpha", minimumLowAlpha) + req.BodyString("minimumSpecial", minimumSpecial) + req.BodyString("minimumLength", minimumLength) + req.BodyString("historyCount", historyCount) + req.BodyString("maxPasswordAge", maxPasswordAge) + req.BodyString("notAcceptableStrings", notAcceptableStrings) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "A unique identifier for the org.") + cmd.MarkFlagRequired("org-id") + cmd.Flags().StringSliceVar(&schemas, "schemas", nil, "") + cmd.Flags().StringVar(&minimumNumeric, "minimum-numeric", "", "") + cmd.Flags().StringVar(&minimumCapAlpha, "minimum-cap-alpha", "", "") + cmd.Flags().StringVar(&minimumLowAlpha, "minimum-low-alpha", "", "") + cmd.Flags().StringVar(&minimumSpecial, "minimum-special", "", "") + cmd.Flags().StringVar(&minimumLength, "minimum-length", "", "") + cmd.Flags().StringVar(&historyCount, "history-count", "", "") + cmd.Flags().StringVar(&maxPasswordAge, "max-password-age", "", "") + cmd.Flags().StringVar(¬AcceptableStrings, "not-acceptable-strings", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + identityOrgCmd.AddCommand(cmd) + } + +} diff --git a/cmd/admin/licenses.go b/cmd/admin/licenses.go new file mode 100644 index 0000000..f10cacc --- /dev/null +++ b/cmd/admin/licenses.go @@ -0,0 +1,114 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package admin + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var licensesCmd = &cobra.Command{ + Use: "licenses", + Short: "Licenses commands", +} + +func init() { + cmd.AdminCmd.AddCommand(licensesCmd) + + { // list + var orgId string + cmd := &cobra.Command{ + Use: "list", + Short: "List Licenses", + Long: "List all licenses for a given organization. If no `orgId` is specified, the default is the organization of the authenticated user.\n\nResponse properties that are not applicable to the license will not be present in the response.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/licenses") + req.QueryParam("orgId", orgId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List licenses for this organization.") + licensesCmd.AddCommand(cmd) + } + + { // get-license + var licenseId string + var includeAssignedTo string + var next string + var limit string + cmd := &cobra.Command{ + Use: "get-license", + Short: "Get License Details", + Long: "Shows details for a license, by ID.\n\nSpecify the license ID in the `licenseId` parameter in the URI.\nUse the optional query parameter `includeAssignedTo` to get a list of all objects that are assigned with the license. The objects include but not limited to, users including external users. Long result sets will be split into [pages](/docs/basics#pagination).\n\nResponse properties that are not applicable to the license will not be present in the response.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/licenses/{licenseId}") + req.PathParam("licenseId", licenseId) + req.QueryParam("includeAssignedTo", includeAssignedTo) + req.QueryParam("next", next) + req.QueryParam("limit", limit) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&licenseId, "license-id", "", "The unique identifier for the license.") + cmd.MarkFlagRequired("license-id") + cmd.Flags().StringVar(&includeAssignedTo, "include-assigned-to", "", "The type of object to whom the license is assigned to.") + cmd.Flags().StringVar(&next, "next", "", "List the next set of users. Applicable only if `includeAssignedTo` is populated.") + cmd.Flags().StringVar(&limit, "limit", "", "A limit on the number of users to be returned in the response. Applicable only if `includeAssignedTo` is populated. limit cannot be more than 300.") + licensesCmd.AddCommand(cmd) + } + + { // assign-users + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "assign-users", + Short: "Assign Licenses to Users", + Long: "Assign licenses and attendee `siteUrls` to existing users. Only an admin can assign licenses. Only existing users can be assigned a license. Assign meeting licenses to users outside your organization (Status will be pending until the user accepts the invite)\n\nAt least one of the following body parameters is required to assign license to the user: `email`, `personId`. For Calling license assignment, properties `phoneNumber` or `extension` are required. If `phoneNumber` is not provided then `locationId` is mandatory.\n\nWhen assigning licenses and attendee siteUrls to a user who does not belong to the organization, the licenses and siteUrls remain in pending state until the user accepts them. The `pendingLicenses` and `pendingSiteUrls` are part of the response.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PATCH", "/licenses/users") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + licensesCmd.AddCommand(cmd) + } + +} diff --git a/cmd/admin/live_monitoring.go b/cmd/admin/live_monitoring.go new file mode 100644 index 0000000..f10aa89 --- /dev/null +++ b/cmd/admin/live_monitoring.go @@ -0,0 +1,65 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package admin + +import ( + "fmt" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strings.Join + +var liveMonitoringCmd = &cobra.Command{ + Use: "live-monitoring", + Short: "LiveMonitoring commands", +} + +func init() { + cmd.AdminCmd.AddCommand(liveMonitoringCmd) + + { // get-meeting-metrics-categorized-country + var siteIds []string + var siteUrl string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "get-meeting-metrics-categorized-country", + Short: "Get Live Meeting metrics categorized by Country", + Long: "Retrieve live meeting metrics categorized by country for a specific meeting site or for all meeting sites owned by the customer. \n\nTo retrieve live monitoring information, you must use an administrator token with the `analytics:read_all` [scope](/docs/integrations#scopes). The authenticated user must be a read-only or full administrator of the organization to which the meeting belongs and must not be an external administrator.\n\nTo use this endpoint, the org needs to be licensed for the Webex Pro Pack.\n\nA rate limit of one API call per minute applies to each customer organization", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/livemonitoring/liveMeetingsByCountry") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("siteIds", siteIds) + req.BodyString("siteUrl", siteUrl) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringSliceVar(&siteIds, "site-ids", nil, "") + cmd.Flags().StringVar(&siteUrl, "site-url", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + liveMonitoringCmd.AddCommand(cmd) + } + +} diff --git a/cmd/admin/meeting_qualities.go b/cmd/admin/meeting_qualities.go new file mode 100644 index 0000000..8bf882a --- /dev/null +++ b/cmd/admin/meeting_qualities.go @@ -0,0 +1,62 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package admin + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var meetingQualitiesCmd = &cobra.Command{ + Use: "meeting-qualities", + Short: "MeetingQualities commands", +} + +func init() { + cmd.AdminCmd.AddCommand(meetingQualitiesCmd) + + { // get + var meetingId string + var max string + var offset string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Meeting Qualities", + Long: "Get quality data for a meeting, by `meetingId`. Only organization administrators can retrieve meeting quality data.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/meeting/qualities") + req.QueryParam("meetingId", meetingId) + req.QueryParam("max", max) + req.QueryParam("offset", offset) + if config.Paginate() { + req.OffsetPaging("offset", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "Unique identifier for the specific meeting instance. **Note:** The `meetingId` can be obtained via the Meeting List API when meetingType=meeting. The `id` attribute in the Meeting List Response is what is needed, for example, `e5dba9613a9d455aa49f6ffdafb6e7db_I_191395283063545470`.") + cmd.Flags().StringVar(&max, "max", "", "Limit the maximum number of media sessions in the response.") + cmd.Flags().StringVar(&offset, "offset", "", "Offset from the first result that you want to fetch.") + meetingQualitiesCmd.AddCommand(cmd) + } + +} diff --git a/cmd/admin/org_contacts.go b/cmd/admin/org_contacts.go new file mode 100644 index 0000000..d410882 --- /dev/null +++ b/cmd/admin/org_contacts.go @@ -0,0 +1,261 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package admin + +import ( + "fmt" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strings.Join + +var orgContactsCmd = &cobra.Command{ + Use: "org-contacts", + Short: "OrgContacts commands", +} + +func init() { + cmd.AdminCmd.AddCommand(orgContactsCmd) + + { // create + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a Contact", + Long: "Creating a new contact for a given organization requires an org admin role.\n\nAt least one of the following body parameters: `phoneNumbers`, `emails`, `sipAddresses` is required to create a new contact for source \"CH\",\n`displayName` is required to create a new contact for source \"Webex4Broadworks\".\n\nUse the optional `groupIds` field to add group IDs in an array within the organisation contact. This will become a group contact.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/contacts/organizations/{orgid}/contacts") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Webex Identity assigned organization identifier for the user's organization or the organization he manages.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + orgContactsCmd.AddCommand(cmd) + } + + { // get + var orgid string + var contactId string + cmd := &cobra.Command{ + Use: "get", + Short: "Get a Contact", + Long: "Shows details for an organization contact by ID.\nSpecify the organization ID in the `orgId` parameter in the URI, and specify the contact ID in the `contactId` parameter in the URI.\n\n**NOTE**:\nThe `orgId` used in the path for this API are the org UUIDs. They follow a xxxx-xxxx-xxxx-xxxx pattern. If you have an orgId in base64 encoded format (starting with Y2.....) you need to base64 decode the id and extract the UUID from the slug, before you use it in your API call.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/contacts/organizations/{orgid}/contacts/{contactId}") + req.PathParam("orgid", orgid) + req.PathParam("contactId", contactId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Webex Identity assigned organization identifier for the user's organization or the organization he manages.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&contactId, "contact-id", "", "The contact ID.") + cmd.MarkFlagRequired("contact-id") + orgContactsCmd.AddCommand(cmd) + } + + { // update + var orgid string + var contactId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Short: "Update a Contact", + Long: "Update details for contact by ID. Only an admin can update a contact.\nSpecify the organization ID in the `orgId` parameter in the URI, and specify the contact ID in the `contactId` parameter in the URI.\n\nUse the optional `groupIds` field to update the group IDs by changing the existing array. You can add or remove one or all groups. To remove all associated groups, pass an empty array in the `groupIds` field.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PATCH", "/contacts/organizations/{orgid}/contacts/{contactId}") + req.PathParam("orgid", orgid) + req.PathParam("contactId", contactId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Webex Identity assigned organization identifier for the user's organization or the organization he manages.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&contactId, "contact-id", "", "The contact ID.") + cmd.MarkFlagRequired("contact-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + orgContactsCmd.AddCommand(cmd) + } + + { // delete + var orgid string + var contactId string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete a Contact", + Long: "Remove a contact from the organization. Only an admin can remove a contact.\n\nSpecify the organization ID in the `orgId` parameter in the URI, and specify the contact ID in the `contactId` parameter in the URI.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/contacts/organizations/{orgid}/contacts/{contactId}") + req.PathParam("orgid", orgid) + req.PathParam("contactId", contactId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Webex Identity assigned organization identifier for the user's organization or the organization he manages.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&contactId, "contact-id", "", "The contact ID.") + cmd.MarkFlagRequired("contact-id") + orgContactsCmd.AddCommand(cmd) + } + + { // list + var orgid string + var keyword string + var source string + var limit string + var groupIds string + cmd := &cobra.Command{ + Use: "list", + Short: "List Contacts", + Long: "List contacts in the organization. The default limit is `100`.\n\n`keyword` can be the value of \"displayName\", \"firstName\", \"lastName\", \"email\". An empty string of `keyword` means get all contacts.\n\n`groupIds` is a comma separated list group IDs. Results are filtered based on those group IDs.\n\nLong result sets will be split into [pages](/docs/basics#pagination).", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/contacts/organizations/{orgid}/contacts/search") + req.PathParam("orgid", orgid) + req.QueryParam("keyword", keyword) + req.QueryParam("source", source) + req.QueryParam("limit", limit) + req.QueryParam("groupIds", groupIds) + req.QueryParam("groupIds", groupIds) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "The organization ID.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&keyword, "keyword", "", "List contacts with a keyword.") + cmd.Flags().StringVar(&source, "source", "", "List contacts with source.") + cmd.Flags().StringVar(&limit, "limit", "", "Limit the maximum number of contact in the response. + Default: 100 ") + cmd.Flags().StringVar(&groupIds, "group-ids", "", "Filter contacts based on groups.") + orgContactsCmd.AddCommand(cmd) + } + + { // bulk-create-update + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "bulk-create-update", + Short: "Bulk Create or Update Contacts", + Long: "Create or update contacts in bulk. Update an existing contact by specifying the contact ID in the `contactId` parameter in the request body.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/contacts/organizations/{orgid}/contacts/bulk") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Webex Identity assigned organization identifier for the user's organization or the organization he manages.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + orgContactsCmd.AddCommand(cmd) + } + + { // bulk-delete + var orgid string + var schemas string + var objectIds []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "bulk-delete", + Short: "Bulk Delete Contacts", + Long: `Delete contacts in bulk.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/contacts/organizations/{orgid}/contacts/bulk/delete") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("schemas", schemas) + req.BodyStringSlice("objectIds", objectIds) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Webex Identity assigned organization identifier for the user's organization or the organization he manages.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&schemas, "schemas", "", "") + cmd.Flags().StringSliceVar(&objectIds, "object-ids", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + orgContactsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/admin/organizations.go b/cmd/admin/organizations.go new file mode 100644 index 0000000..fbfb993 --- /dev/null +++ b/cmd/admin/organizations.go @@ -0,0 +1,95 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package admin + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var organizationsCmd = &cobra.Command{ + Use: "organizations", + Short: "Organizations commands", +} + +func init() { + cmd.AdminCmd.AddCommand(organizationsCmd) + + { // list + cmd := &cobra.Command{ + Use: "list", + Short: "List Organizations", + Long: `List all organizations visible by your account. The results will not be [paginated](/docs/basics#pagination).`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/organizations") + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + organizationsCmd.AddCommand(cmd) + } + + { // get + var orgId string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Organization Details", + Long: "Shows details for an organization, by ID.\n\nSpecify the org ID in the `orgId` parameter in the URI.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/organizations/{orgId}") + req.PathParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "The unique identifier for the organization.") + cmd.MarkFlagRequired("org-id") + organizationsCmd.AddCommand(cmd) + } + + { // delete + var orgId string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete Organization", + Long: "Deletes an organization, by ID. It may take up to 10 minutes for the organization to be deleted after the response is returned.\n

\nSpecify the org ID in the `orgId` parameter in the URI.\n\n
Deleting your organization permanently deletes all of the information associated with your organization and is irreversible.
\n\nDeleting an Organization may fail with a HTTP 409 Conflict response and encounter one or more of the errors described below. Resolve these conditions to allow the delete to succeed.\n

\n\n+ Org cannot be deleted as it has Linked sites.\n\n+ Org cannot be deleted as it has active subscriptions or licenses.\n\n+ Org cannot be deleted as [Directory Synchronization](https://developer.webex.com/docs/api/v1/broadworks-enterprises/get-directory-sync-status-for-an-enterprise) is enabled.\n\n+ Org cannot be deleted as it has more than 1 user.\n\n+ Org cannot be deleted as it has more than 1 managed by relationship.\n\n+ Org cannot be deleted as it has managed orgs.\n\n
\nWhen deleting a Webex for BroadWorks Organization with BroadWorks Directory Synchronization enabled, a prerequisite is to disable BroadWorks Directory Synchronization for the given Organization. Refer to the [Organization Deletion](https://developer.webex.com/docs/api/guides/webex-for-broadworks-developers-guide#organization-deletion) section of the [Webex for BroadWorks](/docs/api/guides/webex-for-broadworks-developers-guide) guide for more information.\n
", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/organizations/{orgId}") + req.PathParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "The unique identifier for the organization.") + cmd.MarkFlagRequired("org-id") + organizationsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/admin/partner_administrators.go b/cmd/admin/partner_administrators.go new file mode 100644 index 0000000..c51d8f1 --- /dev/null +++ b/cmd/admin/partner_administrators.go @@ -0,0 +1,140 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package admin + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var partnerAdministratorsCmd = &cobra.Command{ + Use: "partner-administrators", + Short: "PartnerAdministrators commands", +} + +func init() { + cmd.AdminCmd.AddCommand(partnerAdministratorsCmd) + + { // get-all-customers-managed-admin + var managedBy string + cmd := &cobra.Command{ + Use: "get-all-customers-managed-admin", + Short: "Get all customers managed by a partner admin", + Long: "Get all customer organizations managed by given partner admin, in the `managedBy` request parameter. The `managedBy` user typically has the role of a Partner Admin. In case where a Partner Full Admin or Partner Read-Only admin is selected an error like \"The user already has access to all customers managed by their partner organization.\" is shown as a Partner Admin (Full and Read-Only) is able to manage all customers by default. This does not include customers managed through Customer Groups.\n\nThis API can be invoked by Partner Full Admin and Partner Readonly Admin.\nSpecify the `personId` in the `managedBy` parameter in the URI.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/partner/organizations") + req.QueryParam("managedBy", managedBy) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&managedBy, "managed-by", "", "List customer orgs associated with this person ID.") + partnerAdministratorsCmd.AddCommand(cmd) + } + + { // get-all-admins-assigned-customer + var orgId string + cmd := &cobra.Command{ + Use: "get-all-admins-assigned-customer", + Short: "Get all partner admins assigned to a customer", + Long: "For a given customer, get all the partner admins with their role details. This does not include partner admins who have access through Customer Groups.\nThis API can be used by Partner Full Admins.\n\nSpecify the `orgId` in the path parameter.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/partner/organizations/{orgId}/partnerAdmins") + req.PathParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List partner admins associated with this customer org ID.") + cmd.MarkFlagRequired("org-id") + partnerAdministratorsCmd.AddCommand(cmd) + } + + { // assign-admin-customer + var orgId string + var personId string + cmd := &cobra.Command{ + Use: "assign-admin-customer", + Short: "Assign partner admin to a customer", + Long: "Assign a specific Partner Admin to a customer organization. The partner admin is a user that has the Partner Administrator role.\nOther partner roles, such as Partner Full Administrator are not applicable for this API, since this role manages all customer organizations.\n\nThis API can be used b a Partner Full Admin.\n\nSpecify the `orgId` and the `personId` in the path param.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/partner/organizations/{orgId}/partnerAdmin/{personId}/assign") + req.PathParam("orgId", orgId) + req.PathParam("personId", personId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "The ID of the customer organization.") + cmd.MarkFlagRequired("org-id") + cmd.Flags().StringVar(&personId, "person-id", "", "User ID of the partner admin in the partners org.") + cmd.MarkFlagRequired("person-id") + partnerAdministratorsCmd.AddCommand(cmd) + } + + { // unassign-admin-customer + var orgId string + var personId string + cmd := &cobra.Command{ + Use: "unassign-admin-customer", + Short: "Unassign partner admin from a customer", + Long: "Unassign a specific partner admin from a customer organization. Unassigning a customer organization from a partner admin does not remove the role from the user. If a partner admin is also managing the customer organization through a Customer Group, they will continue to have access.\nThis API can be used by Partner Full Admin.\n\nSpecify the `orgId` and the `personId` in the path param.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/partner/organizations/{orgId}/partnerAdmin/{personId}/unassign") + req.PathParam("orgId", orgId) + req.PathParam("personId", personId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "The ID of the customer organization.") + cmd.MarkFlagRequired("org-id") + cmd.Flags().StringVar(&personId, "person-id", "", "User ID of the partner admin in the partners org.") + cmd.MarkFlagRequired("person-id") + partnerAdministratorsCmd.AddCommand(cmd) + } + + { // revoke-all-admin-roles-person-id + var personId string + cmd := &cobra.Command{ + Use: "revoke-all-admin-roles-person-id", + Short: "Revoke all partner admin roles for a given person ID", + Long: "Revoke all partner administrator roles from a user, thereby revoking access to Partner Hub and all managed customer organizations.\nThis action does not grant or revoke Control Hub administrator roles (e.g. Full Administrator, User and Device Administrator, etc.).\nThis API can be used by Partner Full Admin.\nSpecify the `personId` in the path param.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/partner/organizations/partnerAdmin/{personId}") + req.PathParam("personId", personId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "ID of the user whose partner roles needs to be revoked.") + cmd.MarkFlagRequired("person-id") + partnerAdministratorsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/admin/partner_reports_templates.go b/cmd/admin/partner_reports_templates.go new file mode 100644 index 0000000..ae45011 --- /dev/null +++ b/cmd/admin/partner_reports_templates.go @@ -0,0 +1,204 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package admin + +import ( + "fmt" + "strconv" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/Cloverhound/webex-cli/internal/timeutil" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa +var _ = timeutil.ParseLastISO + +var partnerReportsTemplatesCmd = &cobra.Command{ + Use: "partner-reports-templates", + Short: "PartnerReportsTemplates commands", +} + +func init() { + cmd.AdminCmd.AddCommand(partnerReportsTemplatesCmd) + + { // list + var service string + var templateId string + var from string + var to string + var regionId string + var onBehalfOfSubPartnerOrgId string + var last string + cmd := &cobra.Command{ + Use: "list", + Short: "List Reports", + Long: "Lists all reports previously generated from a given region. Use query parameters to filter the response. The parameters are optional.\n\nTo access this endpoint, you must use an administrator token with `spark-admin:reports_read` and `identity:people_read` scopes.\n\n
CSV reports for Webex suite services are only supported for organizations based in one region per API request. Organizations based in a different region will require a separate request with region specified.
\n\n
When no region is specified, the request defaults to Partner organization's home region.
\n\n
Reports are usually provided in zip format. A content-header application/zip or application/octet-stream does indicate the zip format. There is usually no .zip file extension.
", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/partner/reports") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("service", service) + req.QueryParam("templateId", templateId) + req.QueryParam("from", from) + req.QueryParam("to", to) + req.QueryParam("regionId", regionId) + req.QueryParam("onBehalfOfSubPartnerOrgId", onBehalfOfSubPartnerOrgId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&service, "service", "", "List reports which use this service.") + cmd.Flags().StringVar(&templateId, "template-id", "", "List reports with this report template ID.") + cmd.Flags().StringVar(&from, "from", "", "List reports that were created on or after this date.") + cmd.Flags().StringVar(&to, "to", "", "List reports that were created before this date.") + cmd.Flags().StringVar(®ionId, "region-id", "", "Data in the report will be from organizations in this region, for example, US, CA, or EU.") + cmd.Flags().StringVar(&onBehalfOfSubPartnerOrgId, "on-behalf-of-sub-partner-org-id", "", "The encoded organization ID for the sub partner.") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + partnerReportsTemplatesCmd.AddCommand(cmd) + } + + { // create + var onBehalfOfSubPartnerOrgId string + var templateId int64 + var startDate string + var endDate string + var regionId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a Report", + Long: "Create a new report. A new report can be created using `templateId` available from the _List Report Templates_ API. For each `templateId`, there are a set of validation rules that need to be followed.\n\nThe `templateId` parameter is a number. However, it is a limitation of developer.webex.com platform that it is passed as a string when you try to test the API from here.\n\nTo access this endpoint, you must use an administrator token with `spark-admin:reports_write` and `identity:people_read` scopes.\n\n**Notes**:\n\n
CSV reports for Webex suite services are only created for organizations in the specified region. Organizations based in a different region will require a separate request with region specified.
\n\n
When no region is specified, the request defaults to Partner organization's home region. A request against a region where there are no organizations will return blank CSV files.
", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/partner/reports") + req.QueryParam("onBehalfOfSubPartnerOrgId", onBehalfOfSubPartnerOrgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyInt("templateId", templateId, cmd.Flags().Changed("template-id")) + req.BodyString("startDate", startDate) + req.BodyString("endDate", endDate) + req.BodyString("regionId", regionId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&onBehalfOfSubPartnerOrgId, "on-behalf-of-sub-partner-org-id", "", "The encoded organization ID for the sub partner.") + cmd.Flags().Int64Var(&templateId, "template-id", 0, "") + cmd.Flags().StringVar(&startDate, "start-date", "", "") + cmd.Flags().StringVar(&endDate, "end-date", "", "") + cmd.Flags().StringVar(®ionId, "region-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + partnerReportsTemplatesCmd.AddCommand(cmd) + } + + { // get + var reportId string + var onBehalfOfSubPartnerOrgId string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Report Details", + Long: "Shows details for a report by report ID.\n\nSpecify the report ID in the `reportId` parameter in the URI.\n\nTo access this endpoint, you must use an administrator token with `spark-admin:reports_read` and `identity:people_read` scopes.\n\n**Notes**:\n\n
Reports are usually provided in zip format. A content-header application/zip or application/octet-stream does indicate the zip format. There is usually no .zip file extension.
", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/partner/reports/{reportId}") + req.PathParam("reportId", reportId) + req.QueryParam("onBehalfOfSubPartnerOrgId", onBehalfOfSubPartnerOrgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&reportId, "report-id", "", "The unique identifier for the report.") + cmd.MarkFlagRequired("report-id") + cmd.Flags().StringVar(&onBehalfOfSubPartnerOrgId, "on-behalf-of-sub-partner-org-id", "", "The encoded organization ID for the sub partner.") + partnerReportsTemplatesCmd.AddCommand(cmd) + } + + { // delete + var reportId string + var onBehalfOfSubPartnerOrgId string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete a Report", + Long: "Remove a report from the system.\n\nSpecify the report ID in the `reportId` parameter in the URI\n\nTo access this endpoint, you must use an administrator token with `spark-admin:reports_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/partner/reports/{reportId}") + req.PathParam("reportId", reportId) + req.QueryParam("onBehalfOfSubPartnerOrgId", onBehalfOfSubPartnerOrgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&reportId, "report-id", "", "The unique identifier for the report.") + cmd.MarkFlagRequired("report-id") + cmd.Flags().StringVar(&onBehalfOfSubPartnerOrgId, "on-behalf-of-sub-partner-org-id", "", "The encoded organization ID for the sub partner.") + partnerReportsTemplatesCmd.AddCommand(cmd) + } + + { // list-2 + var onBehalfOfSubPartnerOrgId string + cmd := &cobra.Command{ + Use: "list-2", + Short: "List Report Templates", + Long: "List report templates. Report templates are available for use with the Partner Reports API.\n\nTo access this endpoint, you must use an administrator token with `spark-admin:reports_read` and `identity:people_read` [scopes](/docs/integrations#scopes). The authenticated user must be a Partner full administrator or Partner read-only administrator of the organization.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/partner/reports/templates") + req.QueryParam("onBehalfOfSubPartnerOrgId", onBehalfOfSubPartnerOrgId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&onBehalfOfSubPartnerOrgId, "on-behalf-of-sub-partner-org-id", "", "The encoded organization ID for the sub partner.") + partnerReportsTemplatesCmd.AddCommand(cmd) + } + +} diff --git a/cmd/admin/partner_tags.go b/cmd/admin/partner_tags.go new file mode 100644 index 0000000..a80bcf5 --- /dev/null +++ b/cmd/admin/partner_tags.go @@ -0,0 +1,227 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package admin + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var partnerTagsCmd = &cobra.Command{ + Use: "partner-tags", + Short: "PartnerTags commands", +} + +func init() { + cmd.AdminCmd.AddCommand(partnerTagsCmd) + + { // get-all-customer + var typeVal string + cmd := &cobra.Command{ + Use: "get-all-customer", + Short: "Retrieve all customer tags", + Long: "Retrieves all tags which are being used by any customer organizations. Once a tag is unassigned from the last customer, it is automatically removed and is not returned by this API.\nThis API can be used by a partner full admin, a read-only partner, or an partner admin. \nThe `type` can have the value ORGANIZATION or SUBSCRIPTION. If not provided, the value is ORGANIZATION", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/partner/tags") + req.QueryParam("type", typeVal) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&typeVal, "type", "", "List tags associated with an organization.") + partnerTagsCmd.AddCommand(cmd) + } + + { // create-replace-customer-provided-ones + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-replace-customer-provided-ones", + Short: "Create or Replace existing customer tags with the provided ones", + Long: "Assign or replace tag(s) which for a customer organization. If the tag doesn't already exist, a new one is created and assigned to the customer automatically.\nThis API can be used by partner full admins and partner admins. \nEach tag has a character limit of 25. Currently, there is a limit of 5 tags per organization when creating tags. To remove all the tags, pass an empty array.\nSpecify the customer organization ID in the `orgId` parameter in the URI.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/partner/tags/organizations/{orgId}/assignTags") + req.PathParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "The unique identifier for the customer organization.") + cmd.MarkFlagRequired("org-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + partnerTagsCmd.AddCommand(cmd) + } + + { // get-customer-org + var orgId string + cmd := &cobra.Command{ + Use: "get-customer-org", + Short: "Get customer organization's tags", + Long: "Retrieve tags associated with a customer organization based on the `orgId` provided.\nThis API can be used by a partner full admin, a read-only partner, or an partner admin. \nSpecify the customer orgId in the `orgId` parameter in the URI.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/partner/tags/organizations/{orgId}") + req.PathParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Fetch all customers and associated tags for the customer.") + cmd.MarkFlagRequired("org-id") + partnerTagsCmd.AddCommand(cmd) + } + + { // get-all-customers-set + var tags string + var max string + cmd := &cobra.Command{ + Use: "get-all-customers-set", + Short: "Fetch all customers for a given set of tags", + Long: `For a set of tags, retrieve all customer organizations that match any one of the tags. +This API can be used by a partner full admin, a read-only partner, or an partner admin.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/partner/tags/organizations") + req.QueryParam("tags", tags) + req.QueryParam("max", max) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&tags, "tags", "", "A comma separated list of tags to filter by.") + cmd.Flags().StringVar(&max, "max", "", "Value must be between 1 and 100, inclusive.") + partnerTagsCmd.AddCommand(cmd) + } + + { // create-replace-subscription-provided-ones + var orgId string + var subscriptionId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-replace-subscription-provided-ones", + Short: "Create or Replace existing subscription tags with the provided ones", + Long: "Assign or replace tags specific to each subscription for an organization. Each organization may have one or more subscriptions.\nThis API can be used by partner full admins and partner admins. \nCurrently there is a limit of 5 tags per subscription when creating tags. To remove all the tags, pass an empty array.\nSpecify the customer organization ID in the `orgId` parameter in the URI and subscription ID in `subscriptionId` parameter", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/partner/tags/organizations/{orgId}/subscriptions/{subscriptionId}/assignTags") + req.PathParam("orgId", orgId) + req.PathParam("subscriptionId", subscriptionId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "The unique identifier for the customer organization.") + cmd.MarkFlagRequired("org-id") + cmd.Flags().StringVar(&subscriptionId, "subscription-id", "", "The unique identifier for the subscription.") + cmd.MarkFlagRequired("subscription-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + partnerTagsCmd.AddCommand(cmd) + } + + { // subscription-list-name-set + var tags string + var max string + cmd := &cobra.Command{ + Use: "subscription-list-name-set", + Short: "Subscription List on a given tag name or a set of tags", + Long: `For a partner organization fetch all it's subscriptions with their tag list for a given tag names. +This API can be used by partner full admins, partner admins and admin read-only partners.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/partner/tags/subscriptions") + req.QueryParam("tags", tags) + req.QueryParam("max", max) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&tags, "tags", "", "A comma separated list of tags to filter by.") + cmd.Flags().StringVar(&max, "max", "", "Value must be between 1 and 100, inclusive.") + partnerTagsCmd.AddCommand(cmd) + } + + { // get-subscription + var orgId string + var subscriptionId string + cmd := &cobra.Command{ + Use: "get-subscription", + Short: "Fetch a Subscription", + Long: `For a given partner org, customer org and external subscription id, fetch subscription details with its associated tags. +This API can be used by partner full admins, partner admins and admin read-only partners.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/partner/tags/organizations/{orgId}/subscriptions/{subscriptionId}") + req.PathParam("orgId", orgId) + req.PathParam("subscriptionId", subscriptionId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "The unique identifier for the customer organization.") + cmd.MarkFlagRequired("org-id") + cmd.Flags().StringVar(&subscriptionId, "subscription-id", "", "The unique identifier for the subscription.") + cmd.MarkFlagRequired("subscription-id") + partnerTagsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/admin/people.go b/cmd/admin/people.go new file mode 100644 index 0000000..327a114 --- /dev/null +++ b/cmd/admin/people.go @@ -0,0 +1,222 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package admin + +import ( + "fmt" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strings.Join + +var peopleCmd = &cobra.Command{ + Use: "people", + Short: "People commands", +} + +func init() { + cmd.AdminCmd.AddCommand(peopleCmd) + + { // list + var email string + var displayName string + var id string + var orgId string + var roles string + var callingData string + var locationId string + var max string + var excludeStatus string + cmd := &cobra.Command{ + Use: "list", + Short: "List People", + Long: "List people in your organization. For most users, either the `email` or `displayName` parameter is required. Admin users can omit these fields and list all users in their organization.\n\nResponse properties associated with a user's presence status, such as `status` or `lastActivity`, will only be returned for people within your organization or an organization you manage. Presence information will not be returned if the authenticated user has [disabled status sharing](https://help.webex.com/nkzs6wl/). Calling /people frequently to poll `status` information for a large set of users will quickly lead to `429` errors and throttling of such requests and is therefore discouraged.\n\nAdmin users can include `Webex Calling` (BroadCloud) user details in the response by specifying `callingData` parameter as `true`. Admin users can list all users in a location. Admin users will receive an enriched payload with additional administrative fields like `licenses`,`roles`, `locations` etc. These fields are shown when accessing a user via GET /people/{id}, not when doing a GET /people?id=\n\nLookup by `email` is only supported for people within the same org or where a partner admin relationship is in place.\n\nLookup by `roles` is only supported for Admin users for the people within the same org.\n\nLong result sets will be split into [pages](/docs/basics#pagination).", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/people") + req.QueryParam("email", email) + req.QueryParam("displayName", displayName) + req.QueryParam("id", id) + req.QueryParam("orgId", orgId) + req.QueryParam("roles", roles) + req.QueryParam("callingData", callingData) + req.QueryParam("locationId", locationId) + req.QueryParam("max", max) + req.QueryParam("excludeStatus", excludeStatus) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&email, "email", "", "List people with this email address. For non-admin requests, either this or `displayName` are required. With the exception of partner admins and a managed org relationship, people lookup by email is only available for users in the same org.") + cmd.Flags().StringVar(&displayName, "display-name", "", "List people whose name starts with this string. For non-admin requests, either this or email are required.") + cmd.Flags().StringVar(&id, "id", "", "List people by ID. Accepts up to 85 person IDs separated by commas. If this parameter is provided then presence information (such as the `lastActivity` or `status` properties) will not be included in the response.") + cmd.Flags().StringVar(&orgId, "org-id", "", "List people in this organization. Only admin users of another organization (such as partners) may use this parameter.") + cmd.Flags().StringVar(&roles, "roles", "", "List of roleIds separated by commas.") + cmd.Flags().StringVar(&callingData, "calling-data", "", "Include Webex Calling user details in the response.") + cmd.Flags().StringVar(&locationId, "location-id", "", "List people present in this location.") + cmd.Flags().StringVar(&max, "max", "", "Limit the maximum number of people in the response. If `callingData`=true, then `max` will not be more than 100. If `locationId` is specified then `max` will not be more than 50.") + cmd.Flags().StringVar(&excludeStatus, "exclude-status", "", "Omit people status/availability to enhance query performance.") + peopleCmd.AddCommand(cmd) + } + + { // create-person + var callingData string + var minResponse string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-person", + Short: "Create a Person", + Long: "Create a new user account for a given organization. Only an admin can create a new user account.\n\nAt least one of the following body parameters is required to create a new user: `displayName`, `firstName`, `lastName`.\n\nCurrently, users may have only one email address associated with their account. The `emails` parameter is an array, which accepts multiple values to allow for future expansion, but currently only one email address will be used for the new user.\n\nAdmin users can include `Webex calling` (BroadCloud) user details in the response by specifying `callingData` parameter as true. It may happen that the POST request with calling data returns a 400 status, but the person was created still. One way to get into this state is if an invalid phone number is assigned to a user. The people API aggregates calls to several other microservices, and one may have failed. A best practice is to check if the user exists before retrying. This can be done with the user's email address and a GET /people.\n\nWhen doing attendee management, append `#attendee` to the `siteUrl` parameter (e.g. `mysite.webex.com#attendee`) to make the new user an attendee for a site.\n\n**NOTES**:\n\n* For creating a `Webex Calling` user, you must provide `phoneNumbers` or `extension`, `locationId`, and `licenses` string in the same request.\n\n* `SipAddresses` are asigned via an asynchronous process. This means that the POST response may not show the SIPAddresses immediately. Instead you can verify them with a separate GET to /people, after they were newly configured.\n\n* When assigning multiple licenses in a single request, the system will assign all valid and available licenses. If any requested licenses cannot be assigned, the operation will continue with the remaining licenses. As a result, it is possible that not all requested licenses are assigned to the user.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/people") + req.QueryParam("callingData", callingData) + req.QueryParam("minResponse", minResponse) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callingData, "calling-data", "", "Include Webex Calling user details in the response.") + cmd.Flags().StringVar(&minResponse, "min-response", "", "Set to `true` to improve performance by omitting person details and returning only the ID in the response when successful. If unsuccessful the response will have optional error details.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + peopleCmd.AddCommand(cmd) + } + + { // get-person + var personId string + var callingData string + cmd := &cobra.Command{ + Use: "get-person", + Short: "Get Person Details", + Long: "Shows details for a person, by ID.\n\nResponse properties associated with a user's presence status, such as `status` or `lastActivity`, will only be displayed for people within your organization or an organization you manage. Presence information will not be shown if the authenticated user has [disabled status sharing](https://help.webex.com/nkzs6wl/).\n\nAdmin users can include `Webex Calling` (BroadCloud) user details in the response by specifying `callingData` parameter as `true`.\n\nSpecify the person ID in the `personId` parameter in the URI.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/people/{personId}") + req.PathParam("personId", personId) + req.QueryParam("callingData", callingData) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&callingData, "calling-data", "", "Include Webex Calling user details in the response.") + peopleCmd.AddCommand(cmd) + } + + { // update-person + var personId string + var callingData string + var showAllTypes string + var minResponse string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-person", + Short: "Update a Person", + Long: "Update details for a person, by ID.\n\nSpecify the person ID in the `personId` parameter in the URI. Only an admin can update a person details.\n\nInclude all details for the person. This action expects all user details to be present in the request. A common approach is to first [GET the person's details](/docs/api/v1/people/get-person-details), make changes, then PUT both the changed and unchanged values.\n\nAdmin users can include `Webex Calling` (BroadCloud) user details in the response by specifying `callingData` parameter as true.\n\nWhen doing attendee management, to update a user from host role to an attendee for a site append `#attendee` to the respective `siteUrl` and remove the meeting host license for this site from the license array.\nTo update a person from an attendee role to a host for a site, add the meeting license for this site in the meeting array, and remove that site from the `siteurl` parameter.\n\nTo remove the attendee privilege for a user on a meeting site, remove the `sitename#attendee` from the `siteUrl`s array. The `showAllTypes` parameter must be set to `true`.\n\n**NOTE**:\n\n* When assigning a Webex Calling license, either a telephone number or extension must already be assigned to the person or provided in the request payload.\n\n* When `callingData` is set to `true`, a Webex Calling license must be included in the `licenses` array.\n\n* The `locationId` can only be set when assigning a calling license to a user. It cannot be changed if a user is already an existing calling user.\n\n* The `extension` field should be used to update the Webex Calling extension for a person. The extension value should not include the location routing prefix. The `work_extension` type in the `phoneNumbers` object as seen in the response payload of [List People](/docs/api/v1/people/list-people) or [Get Person Details](/docs/api/v1/people/get-person-details), cannot be used to set the Webex Calling extension for a person.\n\n* When updating a user with multiple email addresses using a PUT request, ensure that the primary email address is listed first in the array. Note that the order of email addresses returned by a GET request is not guaranteed..\n\n* The People API is a combination of several microservices, each responsible for specific attributes of a person. As a result, a PUT request that returns an error response code may still have altered some values of the person's data. Therefore, it is recommended to perform a GET request after encountering an error to verify the current state of the resource. \n\n* Some licenses are implicitly assigned by the system and cannot be admin controlled. They are necessary for the baseline function of the Webex system. If you get an error about implicitly assigned licensed that cannot be removed, please ensure you have the corresponding license in your PUT request.\n\n* When assigning multiple licenses in a single request, the system will assign all valid and available licenses. If any requested licenses cannot be assigned, the operation will continue with the remaining licenses. As a result, it is possible that not all requested licenses are assigned to the user.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/people/{personId}") + req.PathParam("personId", personId) + req.QueryParam("callingData", callingData) + req.QueryParam("showAllTypes", showAllTypes) + req.QueryParam("minResponse", minResponse) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&callingData, "calling-data", "", "Include Webex Calling user details in the response.") + cmd.Flags().StringVar(&showAllTypes, "show-all-types", "", "Include additional user data like `#attendee` role.") + cmd.Flags().StringVar(&minResponse, "min-response", "", "Set to `true` to improve performance by omitting person details in the response. If unsuccessful the response will have optional error details.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + peopleCmd.AddCommand(cmd) + } + + { // delete-person + var personId string + cmd := &cobra.Command{ + Use: "delete-person", + Short: "Delete a Person", + Long: "Remove a person from the system.\n\n**Required Administrator Roles:**\n\nThe following administrators have permission to use this API:\n\n**Customer Organization:**\n- Full administrator\n- User administrator\n\n**Partner/External Access:**\n- External full administrator\n\n**Note:** External read-only administrators, provisioning administrators, and device administrators cannot delete users.\n\nSpecify the person ID in the `personId` parameter in the URI.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/people/{personId}") + req.PathParam("personId", personId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + peopleCmd.AddCommand(cmd) + } + + { // get-my-own + var callingData string + cmd := &cobra.Command{ + Use: "get-my-own", + Short: "Get My Own Details", + Long: "Get profile details for the authenticated user. This is the same as GET `/people/{personId}` using the Person ID associated with your Auth token.\n\nAdmin users can include `Webex Calling` (BroadCloud) user details in the response by specifying `callingData` parameter as true.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/people/me") + req.QueryParam("callingData", callingData) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callingData, "calling-data", "", "Include Webex Calling user details in the response.") + peopleCmd.AddCommand(cmd) + } + +} diff --git a/cmd/admin/recording_report.go b/cmd/admin/recording_report.go new file mode 100644 index 0000000..d39c7ab --- /dev/null +++ b/cmd/admin/recording_report.go @@ -0,0 +1,192 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package admin + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/Cloverhound/webex-cli/internal/timeutil" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = timeutil.ParseLastISO + +var recordingReportCmd = &cobra.Command{ + Use: "recording-report", + Short: "RecordingReport commands", +} + +func init() { + cmd.AdminCmd.AddCommand(recordingReportCmd) + + { // list-audit-summaries + var max string + var from string + var to string + var hostEmail string + var siteUrl string + var timezone string + var last string + cmd := &cobra.Command{ + Use: "list-audit-summaries", + Short: "List of Recording Audit Report Summaries", + Long: "Lists of recording audit report summaries. You can specify a date range and the maximum number of recording audit report summaries to return.\n\nOnly recording audit report summaries of meetings hosted by or shared with the authenticated user will be listed.\n\nThe list returned is sorted in descending order by the date and time that the recordings were created.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n* If `siteUrl` is specified, the recording audit report summaries of the specified site will be listed; otherwise, recording audit report summaries of the user's preferred site will be listed. All available Webex sites and the preferred site of the user can be retrieved by the `Get Site List` API.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/recordingReport/accessSummary") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("max", max) + req.QueryParam("from", from) + req.QueryParam("to", to) + req.QueryParam("hostEmail", hostEmail) + req.QueryParam("siteUrl", siteUrl) + req.Header("timezone", timezone) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&max, "max", "", "Maximum number of recording audit report summaries to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`.") + cmd.Flags().StringVar(&from, "from", "", "Starting date and time (inclusive) for recording audit report summaries to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`. Please note that the interval between `to` and `from` cannot exceed 90 days and the interval between the current time and `from` cannot exceed 365 days.") + cmd.Flags().StringVar(&to, "to", "", "Ending date and time (exclusive) for recording audit report summaries to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`. Please note that the interval between `to` and `from` cannot exceed 90 days and the interval between the current time and `from` cannot exceed 365 days.") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin on-behalf-of scopes. If set, the admin may specify the email of a user in a site they manage and the API will return recording audit report summaries of that user. If a special value of `all` is set for `hostEmail`, the admin can list recording audit report summaries of all users on the target site, not of a single user.") + cmd.Flags().StringVar(&siteUrl, "site-url", "", "URL of the Webex site which the API lists recording audit report summaries from. If not specified, the API lists summary audit report for recordings from the user's preferred site. All available Webex sites and the preferred site of the user can be retrieved by `Get Site List` API.") + cmd.Flags().StringVar(&timezone, "timezone", "", "e.g. UTC") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + recordingReportCmd.AddCommand(cmd) + } + + { // get-audit + var recordingId string + var hostEmail string + var max string + var timezone string + cmd := &cobra.Command{ + Use: "get-audit", + Short: "Get Recording Audit Report Details", + Long: "Retrieves details for a recording audit report with a specified recording ID.\n\nOnly recording audit report details of meetings hosted by or shared with the authenticated user may be retrieved.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/recordingReport/accessDetail") + req.QueryParam("recordingId", recordingId) + req.QueryParam("hostEmail", hostEmail) + req.QueryParam("max", max) + req.Header("timezone", timezone) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&recordingId, "recording-id", "", "A unique identifier for the recording.") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin on-behalf-of scopes. If set, the admin may specify the email of a user in a site they manage and the API will return recording details of that user.") + cmd.Flags().StringVar(&max, "max", "", "Maximum number of recording audit report details to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`.") + cmd.Flags().StringVar(&timezone, "timezone", "", "e.g. UTC") + recordingReportCmd.AddCommand(cmd) + } + + { // list-meeting-archive-summaries + var max string + var from string + var to string + var siteUrl string + var timezone string + var last string + cmd := &cobra.Command{ + Use: "list-meeting-archive-summaries", + Short: "List Meeting Archive Summaries", + Long: "Lists of meeting archive summaries. You can specify a date range and the maximum number of meeting archive summaries to return.\n\nMeeting archive summaries are only available to full administrators, not even the meeting host.\n\nThe list returned is sorted in descending order by the date and time that the archives were created.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n* If `siteUrl` is specified, the meeting archive summaries of the specified site will be listed; otherwise, meeting archive summaries of the user's preferred site will be listed. All available Webex sites and the preferred site of the user can be retrieved by the `Get Site List` API.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/recordingReport/meetingArchiveSummaries") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("max", max) + req.QueryParam("from", from) + req.QueryParam("to", to) + req.QueryParam("siteUrl", siteUrl) + req.Header("timezone", timezone) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&max, "max", "", "Maximum number of meeting archive summaries to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`.") + cmd.Flags().StringVar(&from, "from", "", "Starting date and time (inclusive) for meeting archive summaries to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`. Please note that the interval between `to` and `from` cannot exceed 30 days.") + cmd.Flags().StringVar(&to, "to", "", "Ending date and time (exclusive) for meeting archive summaries to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`. Please note that the interval between `to` and `from` cannot exceed 30 days.") + cmd.Flags().StringVar(&siteUrl, "site-url", "", "URL of the Webex site which the API lists meeting archive summaries from. If not specified, the API lists meeting archive summaries for recordings from the user's preferred site. All available Webex sites and the preferred site of the user can be retrieved by `Get Site List` API.") + cmd.Flags().StringVar(&timezone, "timezone", "", "e.g. UTC") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + recordingReportCmd.AddCommand(cmd) + } + + { // get-meeting-archive + var archiveId string + var timezone string + cmd := &cobra.Command{ + Use: "get-meeting-archive", + Short: "Get Meeting Archive Details", + Long: "Retrieves details for a meeting archive report with a specified archive ID, which contains recording metadata.\n\nMeeting archive details are only available to full administrators, not even the meeting host.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/recordingReport/meetingArchives/{archiveId}") + req.PathParam("archiveId", archiveId) + req.Header("timezone", timezone) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&archiveId, "archive-id", "", "A unique identifier for the meeting archive summary.") + cmd.MarkFlagRequired("archive-id") + cmd.Flags().StringVar(&timezone, "timezone", "", "e.g. UTC") + recordingReportCmd.AddCommand(cmd) + } + +} diff --git a/cmd/admin/recordings.go b/cmd/admin/recordings.go new file mode 100644 index 0000000..46e4414 --- /dev/null +++ b/cmd/admin/recordings.go @@ -0,0 +1,695 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package admin + +import ( + "fmt" + "strconv" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/Cloverhound/webex-cli/internal/timeutil" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa +var _ = strings.Join +var _ = timeutil.ParseLastISO + +var recordingsCmd = &cobra.Command{ + Use: "recordings", + Short: "Recordings commands", +} + +func init() { + cmd.AdminCmd.AddCommand(recordingsCmd) + + { // list + var max string + var from string + var to string + var meetingId string + var hostEmail string + var siteUrl string + var integrationTag string + var topic string + var format string + var serviceType string + var status string + var timezone string + var last string + cmd := &cobra.Command{ + Use: "list", + Short: "List Recordings", + Long: "
This API is still supported and behaves the same as before, but will be deprecated in the future. Due to limited support for special characters when filtering recordings by `topic`, it is recommended to use the new [Query Recordings](/docs/api/v1/recordings/query-recordings) API instead.
\n\nLists recordings. You can specify a date range, a parent meeting ID, and the maximum number of recordings to return.\n\nOnly recordings of meetings hosted by or shared with the authenticated user will be listed.\n\nThe list returned is sorted in descending order by the date and time that the recordings were created.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n* If `meetingId` is specified, only recordings associated with the specified meeting will be listed. **NOTE**: when `meetingId` is specified, parameter of `siteUrl` will be ignored.\n\n* If `siteUrl` is specified, recordings of the specified site will be listed; otherwise, the API lists recordings of all the user's sites. All available Webex sites and preferred site of the user can be retrieved by [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\n#### Request Header\n\n* `timezone`: *[Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.*", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/recordings") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("max", max) + req.QueryParam("from", from) + req.QueryParam("to", to) + req.QueryParam("meetingId", meetingId) + req.QueryParam("hostEmail", hostEmail) + req.QueryParam("siteUrl", siteUrl) + req.QueryParam("integrationTag", integrationTag) + req.QueryParam("topic", topic) + req.QueryParam("format", format) + req.QueryParam("serviceType", serviceType) + req.QueryParam("status", status) + req.Header("timezone", timezone) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&max, "max", "", "Maximum number of recordings to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`.") + cmd.Flags().StringVar(&from, "from", "", "Starting date and time (inclusive) for recordings to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`.") + cmd.Flags().StringVar(&to, "to", "", "Ending date and time (exclusive) for List recordings to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`.") + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "Unique identifier for the parent meeting series, scheduled meeting, or meeting instance for which recordings are being requested. If a meeting series ID is specified, the operation returns an array of recordings for the specified meeting series. If a scheduled meeting ID is specified, the operation returns an array of recordings for the specified scheduled meeting. If a meeting instance ID is specified, the operation returns an array of recordings for the specified meeting instance. If no ID is specified, the operation returns an array of recordings for all meetings of the current user. When `meetingId` is specified, the `siteUrl` parameter is ignored.") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email address for the meeting host. This parameter is only used if the user or application calling the API has the required [admin-level meeting scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will return recordings of that user.") + cmd.Flags().StringVar(&siteUrl, "site-url", "", "URL of the Webex site from which the API lists recordings. If not specified, the API lists recordings from all of a user's sites. All available Webex sites and the preferred site of the user can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.") + cmd.Flags().StringVar(&integrationTag, "integration-tag", "", "External key of the parent meeting created by an integration application. This parameter is used by the integration application to query recordings by a key in its own domain, such as a Zendesk ticket ID, a Jira ID, a Salesforce Opportunity ID, etc. An integrationTag created by one client cannot be accessed or used as a filtering parameter by another client. For example, if a meeting has an `integrationTag` of \"Sales\" which is created by the client behind the developer portal, then this integrationTag can't be accessed on the meeting or its recordings by another client. Neither can it be used to filter meetings or recordings by a client other than the one that created the integrationTag of \"Sales\".") + cmd.Flags().StringVar(&topic, "topic", "", "Recording's topic. If specified, the API filters recordings by topic in a case-insensitive manner.") + cmd.Flags().StringVar(&format, "format", "", "Recording's file format. If specified, the API filters recordings by format.") + cmd.Flags().StringVar(&serviceType, "service-type", "", "The service type for recordings. If this item is specified, the API filters recordings by service-type.") + cmd.Flags().StringVar(&status, "status", "", "Recording's status. If not specified or `available`, retrieves recordings that are available. Otherwise, if specified as `deleted`, retrieves recordings that have been moved into the recycle bin. The `purged` status only applies if the user calling the API is a Compliance Officer and `meetingId` is specified.") + cmd.Flags().StringVar(&timezone, "timezone", "", "e.g. UTC") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + recordingsCmd.AddCommand(cmd) + } + + { // list-admin-compliance-officer + var max string + var from string + var to string + var meetingId string + var siteUrl string + var integrationTag string + var topic string + var format string + var serviceType string + var status string + var timezone string + var last string + cmd := &cobra.Command{ + Use: "list-admin-compliance-officer", + Short: "List Recordings For an Admin or Compliance Officer", + Long: "
This API is still supported and behaves the same as before, but will be deprecated in the future. Due to limited support for special characters when filtering recordings by `topic`, it is recommended to use the new [Query Recordings For an Admin or Compliance Officer](/docs/api/v1/recordings/query-recordings-for-an-admin-or-compliance-officer) API instead.
\n\nList recordings for an admin or compliance officer. You can specify a date range, a parent meeting ID, and the maximum number of recordings to return.\n\nThe list returned is sorted in descending order by the date and time that the recordings were created.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n* If `meetingId` is specified, only recordings associated with the specified meeting will be listed. Please note that when `meetingId` is specified, parameters of `siteUrl`, `from`, and `to` will be ignored.\n\n* If `siteUrl` is specified, all the recordings on the specified site are listed; otherwise, all the recordings on the admin user's or compliance officer's preferred site are listed. All the available Webex sites and the admin user's or compliance officer's preferred site can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\n#### Request Header\n\n* `timezone`: *[Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.*", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/admin/recordings") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("max", max) + req.QueryParam("from", from) + req.QueryParam("to", to) + req.QueryParam("meetingId", meetingId) + req.QueryParam("siteUrl", siteUrl) + req.QueryParam("integrationTag", integrationTag) + req.QueryParam("topic", topic) + req.QueryParam("format", format) + req.QueryParam("serviceType", serviceType) + req.QueryParam("status", status) + req.Header("timezone", timezone) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&max, "max", "", "Maximum number of recordings to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`.") + cmd.Flags().StringVar(&from, "from", "", "Starting date and time (inclusive) for recordings to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`. The interval between `from` and `to` must be within 30 days. If `to` is specified, the default value for `from` is `to` minus 7 days. If `to` is also not specified, the default value for `from` is current date and time minus 7 days.") + cmd.Flags().StringVar(&to, "to", "", "Ending date and time (exclusive) for List recordings to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`. The interval between `from` and `to` must be within 30 days. If `from` is specified, the default value for `to` is `from` plus 7 days. If `from` is also not specified, the default value for `to` is the current date and time.") + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "Unique identifier for the parent meeting series, scheduled meeting, or meeting instance for which recordings are being requested. If a meeting series ID is specified, the operation returns an array of recordings for the specified meeting series. If a scheduled meeting ID is specified, the operation returns an array of recordings for the specified scheduled meeting. If a meeting instance ID is specified, the operation returns an array of recordings for the specified meeting instance. If not specified, the operation returns an array of recordings for all the current user's meetings. When `meetingId` is specified, the `siteUrl` parameter is ignored.") + cmd.Flags().StringVar(&siteUrl, "site-url", "", "URL of the Webex site which the API lists recordings from. If not specified, the API lists recordings from user's preferred site. All available Webex sites and preferred site of the user can be retrieved by [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.") + cmd.Flags().StringVar(&integrationTag, "integration-tag", "", "External key of the parent meeting created by an integration application. This parameter is used by the integration application to query recordings by a key in its own domain such as a Zendesk ticket ID, a Jira ID, a Salesforce Opportunity ID, etc. An integrationTag created by one client cannot be accessed or used as a filtering parameter by another client. For example, if a meeting has an `integrationTag` of \"Sales\" which is created by the client behind the developer portal, then this integrationTag can't be accessed on the meeting or its recordings by another client. Neither can it be used to filter meetings or recordings by a client other than the one that created the integrationTag of \"Sales\".") + cmd.Flags().StringVar(&topic, "topic", "", "Recording topic. If specified, the API filters recordings by topic in a case-insensitive manner.") + cmd.Flags().StringVar(&format, "format", "", "Recording's file format. If specified, the API filters recordings by format.") + cmd.Flags().StringVar(&serviceType, "service-type", "", "The service type for recordings. If specified, the API filters recordings by service type.") + cmd.Flags().StringVar(&status, "status", "", "Recording's status. If not specified or `available`, retrieves recordings that are available. If specified as `deleted`, retrieves recordings that have been moved to the recycle bin. Otherwise, if specified as `purged`, retrieves recordings that have been purged from the recycle bin.") + cmd.Flags().StringVar(&timezone, "timezone", "", "e.g. UTC") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + recordingsCmd.AddCommand(cmd) + } + + { // delete-admin + var recordingId string + cmd := &cobra.Command{ + Use: "delete-admin", + Short: "Delete a Recording By an Admin", + Long: "Removes a recording with a specified recording ID by an admin. The deleted recording cannot be recovered. It will be inaccessible to regular users (host, attendees and shared) or an admin, but it will be still available to the Compliance Officer.\n\nAny recording on a site which is managed by the admin can be deleted by him.\n\nThe `temporaryDirectDownloadLinks` of a recording which are retrieved by the [Get Recording Details](/docs/api/v1/recordings/get-recording-details) API are still available to Compliance Officers even if the recording has been deleted.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/admin/recordings/{recordingId}") + req.PathParam("recordingId", recordingId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&recordingId, "recording-id", "", "A unique identifier for the recording.") + cmd.MarkFlagRequired("recording-id") + recordingsCmd.AddCommand(cmd) + } + + { // get + var recordingId string + var hostEmail string + var timezone string + var siteUrl string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Recording Details", + Long: "Retrieves details for a recording with a specified recording ID.\n\nOnly recordings of meetings hosted by or shared with the authenticated user may be retrieved.\n\n#### Request Header\n\n* `timezone`: *[Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.*\n\n* `siteUrl`: Optional request header parameter. If specified, retrieve the recording details from that site; otherwise, retrieve it from the site which is implied based on the recording ID.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/recordings/{recordingId}") + req.PathParam("recordingId", recordingId) + req.QueryParam("hostEmail", hostEmail) + req.Header("timezone", timezone) + req.Header("siteUrl", siteUrl) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&recordingId, "recording-id", "", "A unique identifier for the recording.") + cmd.MarkFlagRequired("recording-id") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email address for the meeting host. Only used if the user or application calling the API has required [admin-level meeting scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage, and the API will return recording details of that user.") + cmd.Flags().StringVar(&timezone, "timezone", "", "e.g. UTC") + cmd.Flags().StringVar(&siteUrl, "site-url", "", "e.g. example.webex.com") + recordingsCmd.AddCommand(cmd) + } + + { // delete + var recordingId string + var hostEmail string + var reason string + var comment string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete a Recording", + Long: "Removes a recording with a specified recording ID. The deleted recording cannot be recovered. If a Compliance Officer deletes another user's recording, the recording will be inaccessible to regular users (host, attendees and shared), but will be still available to the Compliance Officer.\n\nOnly recordings of meetings hosted by the authenticated user can be deleted.\n\nThe `temporaryDirectDownloadLinks` of a recording which are retrieved by the [Get Recording Details](/docs/api/v1/recordings/get-recording-details) API are still available to Compliance Officers even if the recording has been deleted.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/recordings/{recordingId}") + req.PathParam("recordingId", recordingId) + req.QueryParam("hostEmail", hostEmail) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("reason", reason) + req.BodyString("comment", comment) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&recordingId, "recording-id", "", "A unique identifier for the recording.") + cmd.MarkFlagRequired("recording-id") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email address for the meeting host. Only used if the user or application calling the API has the required [admin-level meeting scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will delete a recording of that user.") + cmd.Flags().StringVar(&reason, "reason", "", "") + cmd.Flags().StringVar(&comment, "comment", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + recordingsCmd.AddCommand(cmd) + } + + { // move-recycle-bin + var hostEmail string + var recordingIds []string + var siteUrl string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "move-recycle-bin", + Short: "Move Recordings into the Recycle Bin", + Long: "Move recordings into the recycle bin with recording IDs. Recordings in the recycle bin can be recovered by [Restore Recordings from Recycle Bin](/docs/api/v1/recordings/restore-recordings-from-recycle-bin) API. If you'd like to empty recordings from the recycle bin, you can use [Purge Recordings from Recycle Bin](/docs/api/v1/recordings/purge-recordings-from-recycle-bin) API to purge all or some of them.\n\nOnly recordings of meetings hosted by the authenticated user can be moved into the recycle bin.\n\n* `recordingIds` should not be empty and its maximum size is `100`.\n\n* All the IDs of `recordingIds` should belong to the site of `siteUrl` or the user's preferred site if `siteUrl` is not specified.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/recordings/softDelete") + req.QueryParam("hostEmail", hostEmail) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("recordingIds", recordingIds) + req.BodyString("siteUrl", siteUrl) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email address for the meeting host. Only used if the user or application calling the API has the required [admin-level meeting scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will move recordings into recycle bin of that user") + cmd.Flags().StringSliceVar(&recordingIds, "recording-ids", nil, "") + cmd.Flags().StringVar(&siteUrl, "site-url", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + recordingsCmd.AddCommand(cmd) + } + + { // restore-recycle-bin + var hostEmail string + var restoreAll bool + var recordingIds []string + var siteUrl string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "restore-recycle-bin", + Short: "Restore Recordings from Recycle Bin", + Long: "Restore all or some recordings from the recycle bin. Only recordings of meetings hosted by the authenticated user can be restored from recycle bin.\n\n* If `restoreAll` is `true`, `recordingIds` should be empty.\n\n* If `restoreAll` is `false`, `recordingIds` should not be empty and its maximum size is `100`.\n\n* All the IDs of `recordingIds` should belong to the site of `siteUrl` or the user's preferred site if `siteUrl` is not specified.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/recordings/restore") + req.QueryParam("hostEmail", hostEmail) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("restoreAll", restoreAll, cmd.Flags().Changed("restore-all")) + req.BodyStringSlice("recordingIds", recordingIds) + req.BodyString("siteUrl", siteUrl) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email address for the meeting host. This parameter is only used if the user or application calling the API has the required [admin-level meeting scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will restore recordings of that user.") + cmd.Flags().BoolVar(&restoreAll, "restore-all", false, "") + cmd.Flags().StringSliceVar(&recordingIds, "recording-ids", nil, "") + cmd.Flags().StringVar(&siteUrl, "site-url", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + recordingsCmd.AddCommand(cmd) + } + + { // purge-recycle-bin + var hostEmail string + var purgeAll bool + var recordingIds []string + var siteUrl string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "purge-recycle-bin", + Short: "Purge Recordings from Recycle Bin", + Long: "Purge recordings from recycle bin with recording IDs or purge all the recordings that are in the recycle bin.\n\nOnly recordings of meetings hosted by the authenticated user can be purged from recycle bin.\n\n* If `purgeAll` is `true`, `recordingIds` should be empty.\n\n* If `purgeAll` is `false`, `recordingIds` should not be empty and its maximum size is `100`.\n\n* All the IDs of `recordingIds` should belong to the site of `siteUrl` or the user's preferred site if `siteUrl` is not specified.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/recordings/purge") + req.QueryParam("hostEmail", hostEmail) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("purgeAll", purgeAll, cmd.Flags().Changed("purge-all")) + req.BodyStringSlice("recordingIds", recordingIds) + req.BodyString("siteUrl", siteUrl) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email address for the meeting host. Only used if the user or application calling the API has the required [admin-level meeting scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will purge recordings from recycle bin of that user.") + cmd.Flags().BoolVar(&purgeAll, "purge-all", false, "") + cmd.Flags().StringSliceVar(&recordingIds, "recording-ids", nil, "") + cmd.Flags().StringVar(&siteUrl, "site-url", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + recordingsCmd.AddCommand(cmd) + } + + { // share + var recordingId string + var hostEmail string + var addEmails []string + var removeEmails []string + var sendEmail bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "share", + Short: "Share a Recording", + Long: `Share or unshare a recording with other users by recording ID and email addresses.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/recordings/{recordingId}/accessList") + req.PathParam("recordingId", recordingId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("hostEmail", hostEmail) + req.BodyStringSlice("addEmails", addEmails) + req.BodyStringSlice("removeEmails", removeEmails) + req.BodyBool("sendEmail", sendEmail, cmd.Flags().Changed("send-email")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&recordingId, "recording-id", "", "A unique identifier for the recording.") + cmd.MarkFlagRequired("recording-id") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "") + cmd.Flags().StringSliceVar(&addEmails, "add-emails", nil, "") + cmd.Flags().StringSliceVar(&removeEmails, "remove-emails", nil, "") + cmd.Flags().BoolVar(&sendEmail, "send-email", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + recordingsCmd.AddCommand(cmd) + } + + { // list-group + var personId string + var max string + var from string + var to string + var siteUrl string + var integrationTag string + var format string + var serviceType string + var timezone string + var hostEmail string + var last string + cmd := &cobra.Command{ + Use: "list-group", + Short: "List Group Recordings", + Long: "List group recordings for a service app which has group recording access. You can specify a date range, the maximum number of recordings to return, and `personId` or `hostEmail` of whom the recordings will be retrieved.\n\n* The list returned is sorted in descending order by the date and time that the recordings were created.\n\n* Only recordings which are in the `available` status and not shared by others can be listed. Those in the `deleted` or `purged` status or shared by others can't be listed.\n\n* Long result sets are split into [pages](/docs/basics#pagination).\n\n* If `siteUrl` is specified, the API lists group recordings on the specified site; otherwise, the API lists group recordings on all the sites managed by the service app. All the sites managed by a service app can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\n* One of the `personId` parameter and `hostEmail` header must be specified so that only recordings of meetings hosted by the person of `personId` or `hostEmail` will be returned.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.\n\n* `hostEmail`: Email of the user whose recordings will be retrieved. The `hostEmail` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/group/recordings") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("personId", personId) + req.QueryParam("max", max) + req.QueryParam("from", from) + req.QueryParam("to", to) + req.QueryParam("siteUrl", siteUrl) + req.QueryParam("integrationTag", integrationTag) + req.QueryParam("format", format) + req.QueryParam("serviceType", serviceType) + req.Header("timezone", timezone) + req.Header("hostEmail", hostEmail) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Person ID of the user whose recordings will be retrieved. The person ID can be retrieved from the [People APIs](/docs/api/v1/people), e.g. [Lit People](/docs/api/v1/people/list-people). Note that a person ID retrieved from the People APIs is a Base64-encoded string, e.g. `Y2lzY29zcGFyazovL3VzL1BFT1BMRS9kNDdiMmU3ZC01ZTBmLTRmNjktYWVmNC1lNGZmOTBhZWE3Yzk`. The person ID in the raw UUID format which is the last part of the Base64-decoded string, e.g. `d47b2e7d-5e0f-4f69-aef4-e4ff90aea7c9`, is also supported. The `personId` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified.") + cmd.Flags().StringVar(&max, "max", "", "Maximum number of recordings to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`.") + cmd.Flags().StringVar(&from, "from", "", "Starting date and time (inclusive) for recordings to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`. The interval between `from` and `to` must be within 30 days.") + cmd.Flags().StringVar(&to, "to", "", "Ending date and time (exclusive) for List recordings to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`. The interval between `from` and `to` must be within 30 days.") + cmd.Flags().StringVar(&siteUrl, "site-url", "", "URL of the Webex site which the API lists recordings from. If not specified, the API lists recordings from user's preferred site. All available Webex sites and preferred site of the user can be retrieved by [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.") + cmd.Flags().StringVar(&integrationTag, "integration-tag", "", "External key of the parent meeting created by an integration application. This parameter is used by the integration application to query recordings by a key in its own domain such as a Zendesk ticket ID, a Jira ID, a Salesforce Opportunity ID, etc. An integrationTag created by one client cannot be accessed or used as a filtering parameter by another client. For example, if a meeting has an `integrationTag` of \"Sales\" which is created by the client behind the developer portal, then this integrationTag can't be accessed on the meeting or its recordings by another client. Neither can it be used to filter meetings or recordings by a client other than the one that created the integrationTag of \"Sales\".") + cmd.Flags().StringVar(&format, "format", "", "Recording's file format. If specified, the API filters recordings by format.") + cmd.Flags().StringVar(&serviceType, "service-type", "", "The service type for recordings. If specified, the API filters recordings by service type.") + cmd.Flags().StringVar(&timezone, "timezone", "", "e.g. UTC") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email of the user whose recordings will be retrieved. The `hostEmail` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified.") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + recordingsCmd.AddCommand(cmd) + } + + { // get-group + var recordingId string + var personId string + var timezone string + var hostEmail string + cmd := &cobra.Command{ + Use: "get-group", + Short: "Get Group Recording Details", + Long: "Retrieves details for a group recording for a service app which has group recording access.\n\n* Only recordings which are in the `available` status and not shared by others can be listed. Those in the `deleted` or `purged` status or shared by others can't be listed.\n\n* One of the `personId` parameter and `hostEmail` header must be specified so that only recordings of meetings hosted by the person of `personId` or `hostEmail` will be returned.\n\n#### Request Header\n\n* `timezone`: *[Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.*\n\n* `hostEmail`: Email of the user whose recordings will be retrieved. The `hostEmail` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/group/recordings/{recordingId}") + req.PathParam("recordingId", recordingId) + req.QueryParam("personId", personId) + req.Header("timezone", timezone) + req.Header("hostEmail", hostEmail) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&recordingId, "recording-id", "", "A unique identifier for the recording.") + cmd.MarkFlagRequired("recording-id") + cmd.Flags().StringVar(&personId, "person-id", "", "Person ID of the user whose recordings will be retrieved. The person ID can be retrieved from the [People APIs](/docs/api/v1/people), e.g. [Lit People](/docs/api/v1/people/list-people). Note that a person ID retrieved from the People APIs is a Base64-encoded string, e.g. `Y2lzY29zcGFyazovL3VzL1BFT1BMRS9kNDdiMmU3ZC01ZTBmLTRmNjktYWVmNC1lNGZmOTBhZWE3Yzk`. The person ID in the raw UUID format which is the last part of the Base64-decoded string, e.g. `d47b2e7d-5e0f-4f69-aef4-e4ff90aea7c9`, is also supported. The `personId` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified.") + cmd.Flags().StringVar(&timezone, "timezone", "", "e.g. UTC") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email of the user whose recordings will be retrieved. The `hostEmail` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified.") + recordingsCmd.AddCommand(cmd) + } + + { // share-link + var hostEmail string + var webShareLink string + var addEmails []string + var removeEmails []string + var sendEmail bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "share-link", + Short: "Share a Recording Link", + Long: `Share or unshare a recording with other users by recording link and email addresses.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/recordings/accessList") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("hostEmail", hostEmail) + req.BodyString("webShareLink", webShareLink) + req.BodyStringSlice("addEmails", addEmails) + req.BodyStringSlice("removeEmails", removeEmails) + req.BodyBool("sendEmail", sendEmail, cmd.Flags().Changed("send-email")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&hostEmail, "host-email", "", "") + cmd.Flags().StringVar(&webShareLink, "web-share-link", "", "") + cmd.Flags().StringSliceVar(&addEmails, "add-emails", nil, "") + cmd.Flags().StringSliceVar(&removeEmails, "remove-emails", nil, "") + cmd.Flags().BoolVar(&sendEmail, "send-email", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + recordingsCmd.AddCommand(cmd) + } + + { // query + var timezone string + var max int64 + var from string + var to string + var meetingId string + var siteUrl string + var integrationTag string + var hostEmail string + var topic string + var format string + var serviceType string + var status string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "query", + Short: "Query Recordings", + Long: "Queries recordings with filters in the request body. You can specify a date range, a parent meeting ID, the maximum number of recordings to return, and additional filters such as siteUrl, integrationTag, hostEmail, topic, format, serviceType, and status.\n\nOnly recordings of meetings hosted by or shared with the authenticated user will be listed.\n\nThe list returned is sorted in descending order by the date and time that the recordings were created.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n* If `meetingId` is specified, only recordings associated with the specified meeting will be listed. **NOTE**: when `meetingId` is specified, parameter of `siteUrl` will be ignored.\n\n* If `siteUrl` is specified, recordings of the specified site will be listed; otherwise, the API lists recordings of all the user's sites. All available Webex sites and preferred site of the user can be retrieved by [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\n#### Request Header\n\n* `timezone`: *[Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.*", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/recordings/query") + req.Header("timezone", timezone) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyInt("max", max, cmd.Flags().Changed("max")) + req.BodyString("from", from) + req.BodyString("to", to) + req.BodyString("meetingId", meetingId) + req.BodyString("siteUrl", siteUrl) + req.BodyString("integrationTag", integrationTag) + req.BodyString("hostEmail", hostEmail) + req.BodyString("topic", topic) + req.BodyString("format", format) + req.BodyString("serviceType", serviceType) + req.BodyString("status", status) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&timezone, "timezone", "", "e.g. UTC") + cmd.Flags().Int64Var(&max, "max", 0, "") + cmd.Flags().StringVar(&from, "from", "", "") + cmd.Flags().StringVar(&to, "to", "", "") + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "") + cmd.Flags().StringVar(&siteUrl, "site-url", "", "") + cmd.Flags().StringVar(&integrationTag, "integration-tag", "", "") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "") + cmd.Flags().StringVar(&topic, "topic", "", "") + cmd.Flags().StringVar(&format, "format", "", "") + cmd.Flags().StringVar(&serviceType, "service-type", "", "") + cmd.Flags().StringVar(&status, "status", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + recordingsCmd.AddCommand(cmd) + } + + { // query-admin-compliance-officer + var timezone string + var max int64 + var from string + var to string + var meetingId string + var siteUrl string + var integrationTag string + var topic string + var format string + var serviceType string + var status string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "query-admin-compliance-officer", + Short: "Query Recordings For an Admin or Compliance Officer", + Long: "Queries recordings for an admin or compliance officer with filters in the request body. You can specify a date range, a parent meeting ID, the maximum number of recordings to return, and additional filters such as siteUrl, integrationTag, topic, format, serviceType, and status.\n\nThe list returned is sorted in descending order by the date and time that the recordings were created.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n* If `meetingId` is specified, only recordings associated with the specified meeting will be listed. Please note that when `meetingId` is specified, parameters of `siteUrl`, `from`, and `to` will be ignored.\n\n* If `siteUrl` is specified, all the recordings on the specified site are listed; otherwise, all the recordings on the admin user's or compliance officer's preferred site are listed. All the available Webex sites and the admin user's or compliance officer's preferred site can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\n#### Request Header\n\n* `timezone`: *[Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.*", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/admin/recordings/query") + req.Header("timezone", timezone) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyInt("max", max, cmd.Flags().Changed("max")) + req.BodyString("from", from) + req.BodyString("to", to) + req.BodyString("meetingId", meetingId) + req.BodyString("siteUrl", siteUrl) + req.BodyString("integrationTag", integrationTag) + req.BodyString("topic", topic) + req.BodyString("format", format) + req.BodyString("serviceType", serviceType) + req.BodyString("status", status) + req.BodyString("timezone", timezone) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&timezone, "timezone", "", "e.g. UTC") + cmd.Flags().Int64Var(&max, "max", 0, "") + cmd.Flags().StringVar(&from, "from", "", "") + cmd.Flags().StringVar(&to, "to", "", "") + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "") + cmd.Flags().StringVar(&siteUrl, "site-url", "", "") + cmd.Flags().StringVar(&integrationTag, "integration-tag", "", "") + cmd.Flags().StringVar(&topic, "topic", "", "") + cmd.Flags().StringVar(&format, "format", "", "") + cmd.Flags().StringVar(&serviceType, "service-type", "", "") + cmd.Flags().StringVar(&status, "status", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + recordingsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/admin/report_templates.go b/cmd/admin/report_templates.go new file mode 100644 index 0000000..dbb2703 --- /dev/null +++ b/cmd/admin/report_templates.go @@ -0,0 +1,67 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package admin + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var reportTemplatesCmd = &cobra.Command{ + Use: "report-templates", + Short: "ReportTemplates commands", +} + +func init() { + cmd.AdminCmd.AddCommand(reportTemplatesCmd) + + { // list + cmd := &cobra.Command{ + Use: "list", + Short: "List Report Templates", + Long: `List all the available report templates that can be generated. + +CSV (comma separated value) reports for Webex services are only supported for organizations based in the North American region. Organizations based in other regions will return blank CSV files for any Webex reports. + +#### Validation Fields + +Each template includes validation rules that specify which fields are required when generating a report using the [Reports API](/docs/api/v1/reports). The possible validation field values are: + +- **templateId**: The unique identifier of the report template to use. This is always required when creating a report. +- **siteList**: A comma-separated list of Webex sites (e.g., "cisco.webex.com"). Required for site-based templates, typically for Webex Meetings reports. +- **subIds**: Subscription IDs for the report. Required for certain enterprise agreement templates, particularly for Webex Onboarding service reports. +- **startDate**: The start date for the report data range in YYYY-MM-DD format. Required for date-range based templates. +- **endDate**: The end date for the report data range in YYYY-MM-DD format. Required for date-range based templates. + +When creating a report, ensure you provide all fields marked as "required": "yes" in the template's validation rules.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/report/templates") + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + reportTemplatesCmd.AddCommand(cmd) + } + +} diff --git a/cmd/admin/reports.go b/cmd/admin/reports.go new file mode 100644 index 0000000..c049287 --- /dev/null +++ b/cmd/admin/reports.go @@ -0,0 +1,167 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package admin + +import ( + "fmt" + "strconv" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/Cloverhound/webex-cli/internal/timeutil" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa +var _ = timeutil.ParseLastISO + +var reportsCmd = &cobra.Command{ + Use: "reports", + Short: "Reports commands", +} + +func init() { + cmd.AdminCmd.AddCommand(reportsCmd) + + { // list + var reportId string + var service string + var templateId string + var from string + var to string + var last string + cmd := &cobra.Command{ + Use: "list", + Short: "List Reports", + Long: "Lists all reports. Use query parameters to filter the response. The parameters are optional. However, `from` and `to` parameters should be provided together.\n\n**Notes**:\nCSV reports for Webex suite services are only supported for organizations based in the North American region. Organizations based in a different region will return blank CSV files for any Teams reports.\n\nReports are usually provided in zip format. A Content-header `application/zip` or `application/octet-stream` does indicate the zip format. There is usually no .zip file extension.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/reports") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("reportId", reportId) + req.QueryParam("service", service) + req.QueryParam("templateId", templateId) + req.QueryParam("from", from) + req.QueryParam("to", to) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&reportId, "report-id", "", "List reports by ID.") + cmd.Flags().StringVar(&service, "service", "", "List reports which use this service.") + cmd.Flags().StringVar(&templateId, "template-id", "", "List reports with this report template ID.") + cmd.Flags().StringVar(&from, "from", "", "List reports that were created on or after this date.") + cmd.Flags().StringVar(&to, "to", "", "List reports that were created before this date.") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + reportsCmd.AddCommand(cmd) + } + + { // create + var templateId int64 + var startDate string + var endDate string + var siteList string + var timeZone string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a Report", + Long: "Create a new report. For each `templateId`, there are a set of validation rules that need to be followed. For example, for templates belonging to Webex, the user needs to provide `siteUrl`. These validation rules can be retrieved via the [Report Templates API](/docs/api/v1/report-templates).\n\nThe 'templateId' parameter is a number. However, it is a limitation of developer.webex.com platform that it is passed as a string when you try to test the API from here.\n\nCSV reports for Webex suite services are only supported for organizations based in the North American region. Organizations based in a different region will return blank CSV files for any Teams reports.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/reports") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyInt("templateId", templateId, cmd.Flags().Changed("template-id")) + req.BodyString("startDate", startDate) + req.BodyString("endDate", endDate) + req.BodyString("siteList", siteList) + req.BodyString("timeZone", timeZone) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().Int64Var(&templateId, "template-id", 0, "") + cmd.Flags().StringVar(&startDate, "start-date", "", "") + cmd.Flags().StringVar(&endDate, "end-date", "", "") + cmd.Flags().StringVar(&siteList, "site-list", "", "") + cmd.Flags().StringVar(&timeZone, "time-zone", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + reportsCmd.AddCommand(cmd) + } + + { // get + var reportId string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Report Details", + Long: "Shows details for a report, by report ID.\n\nSpecify the report ID in the `reportId` parameter in the URI.\n\n**Notes**:\nCSV reports for Webex suite services are only supported for organizations based in the North American region. Organizations based in a different region will return blank CSV files for any Teams reports.\n\nReports are usually provided in zip format. A Content-header `application/zip` or `application/octet-stream` does indicate the zip format. There is usually no .zip file extension.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/reports/{reportId}") + req.PathParam("reportId", reportId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&reportId, "report-id", "", "The unique identifier for the report.") + cmd.MarkFlagRequired("report-id") + reportsCmd.AddCommand(cmd) + } + + { // delete + var reportId string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete a Report", + Long: "Remove a report from the system.\n\nSpecify the report ID in the `reportId` parameter in the URI\n\nCSV reports for Webex suite services are only supported for organizations based in the North American region. Organizations based in a different region will return blank CSV files for any Teams reports.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/reports/{reportId}") + req.PathParam("reportId", reportId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&reportId, "report-id", "", "The unique identifier for the report.") + cmd.MarkFlagRequired("report-id") + reportsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/admin/resource_groups.go b/cmd/admin/resource_groups.go new file mode 100644 index 0000000..2014019 --- /dev/null +++ b/cmd/admin/resource_groups.go @@ -0,0 +1,79 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package admin + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var resourceGroupsCmd = &cobra.Command{ + Use: "resource-groups", + Short: "ResourceGroups commands", +} + +func init() { + cmd.AdminCmd.AddCommand(resourceGroupsCmd) + + { // list + var orgId string + cmd := &cobra.Command{ + Use: "list", + Short: "List Resource Groups", + Long: `List resource groups. + +Use query parameters to filter the response.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/resourceGroups") + req.QueryParam("orgId", orgId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List resource groups in this organization. Only admin users of another organization (such as partners) may use this parameter.") + resourceGroupsCmd.AddCommand(cmd) + } + + { // get + var resourceGroupId string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Resource Group Details", + Long: "Shows details for a resource group, by ID.\n\nSpecify the resource group ID in the `resourceGroupId` parameter in the URI.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/resourceGroups/{resourceGroupId}") + req.PathParam("resourceGroupId", resourceGroupId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&resourceGroupId, "resource-group-id", "", "The unique identifier for the resource group.") + cmd.MarkFlagRequired("resource-group-id") + resourceGroupsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/admin/resource_memberships.go b/cmd/admin/resource_memberships.go new file mode 100644 index 0000000..5e4f1bb --- /dev/null +++ b/cmd/admin/resource_memberships.go @@ -0,0 +1,184 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package admin + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var resourceMembershipsCmd = &cobra.Command{ + Use: "resource-memberships", + Short: "ResourceMemberships commands", +} + +func init() { + cmd.AdminCmd.AddCommand(resourceMembershipsCmd) + + { // list-group + var licenseId string + var personId string + var personOrgId string + var status string + var max string + cmd := &cobra.Command{ + Use: "list-group", + Short: "List Resource Group Memberships", + Long: `Lists all resource group memberships for an organization. + +Use query parameters to filter the response.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/resourceGroup/memberships") + req.QueryParam("licenseId", licenseId) + req.QueryParam("personId", personId) + req.QueryParam("personOrgId", personOrgId) + req.QueryParam("status", status) + req.QueryParam("max", max) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&licenseId, "license-id", "", "List resource group memberships for a license, by ID.") + cmd.Flags().StringVar(&personId, "person-id", "", "List resource group memberships for a person, by ID.") + cmd.Flags().StringVar(&personOrgId, "person-org-id", "", "List resource group memberships for an organization, by ID.") + cmd.Flags().StringVar(&status, "status", "", "Limit resource group memberships to a specific status.") + cmd.Flags().StringVar(&max, "max", "", "Limit the maximum number of resource group memberships in the response.") + resourceMembershipsCmd.AddCommand(cmd) + } + + { // get-group + var resourceGroupMembershipId string + cmd := &cobra.Command{ + Use: "get-group", + Short: "Get Resource Group Membership Details", + Long: "Shows details for a resource group membership, by ID.\n\nSpecify the resource group membership ID in the `resourceGroupMembershipId` URI parameter.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/resourceGroup/memberships/{resourceGroupMembershipId}") + req.PathParam("resourceGroupMembershipId", resourceGroupMembershipId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&resourceGroupMembershipId, "resource-group-membership-id", "", "The unique identifier for the resource group membership.") + cmd.MarkFlagRequired("resource-group-membership-id") + resourceMembershipsCmd.AddCommand(cmd) + } + + { // update-group + var resourceGroupMembershipId string + var resourceGroupId string + var licenseId string + var personId string + var personOrgId string + var status string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-group", + Short: "Update a Resource Group Membership", + Long: "Updates a resource group membership, by ID.\n\nSpecify the resource group membership ID in the `resourceGroupMembershipId`\u00a0URI parameter.\n\nOnly the `resourceGroupId`\u00a0can be changed with this action. Resource group memberships with a `status`\u00a0of \"pending\" cannot be updated. For more information about resource group memberships, see the [Managing Hybrid Services](/docs/api/guides/managing-hybrid-services-licenses#webex-resource-groups) guide.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/resourceGroup/memberships/{resourceGroupMembershipId}") + req.PathParam("resourceGroupMembershipId", resourceGroupMembershipId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("resourceGroupId", resourceGroupId) + req.BodyString("licenseId", licenseId) + req.BodyString("personId", personId) + req.BodyString("personOrgId", personOrgId) + req.BodyString("status", status) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&resourceGroupMembershipId, "resource-group-membership-id", "", "The unique identifier for the resource group membership.") + cmd.MarkFlagRequired("resource-group-membership-id") + cmd.Flags().StringVar(&resourceGroupId, "resource-group-id", "", "") + cmd.Flags().StringVar(&licenseId, "license-id", "", "") + cmd.Flags().StringVar(&personId, "person-id", "", "") + cmd.Flags().StringVar(&personOrgId, "person-org-id", "", "") + cmd.Flags().StringVar(&status, "status", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + resourceMembershipsCmd.AddCommand(cmd) + } + + { // list-group-v2 + var licenseId string + var id string + var orgId string + var status string + var typeVal string + var max string + cmd := &cobra.Command{ + Use: "list-group-v2", + Short: "List Resource Group Memberships V2", + Long: `Lists all resource group memberships for an organization having filtering option based on entity type (User / Workspace). + +Use query parameters to filter the response.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/resourceGroup/memberships/v2") + req.QueryParam("licenseId", licenseId) + req.QueryParam("id", id) + req.QueryParam("orgId", orgId) + req.QueryParam("status", status) + req.QueryParam("type", typeVal) + req.QueryParam("max", max) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&licenseId, "license-id", "", "List resource group memberships for a license, by ID.") + cmd.Flags().StringVar(&id, "id", "", "List resource group memberships by ID.") + cmd.Flags().StringVar(&orgId, "org-id", "", "List resource group memberships for an organization, by ID.") + cmd.Flags().StringVar(&status, "status", "", "Limit resource group memberships to a specific status.") + cmd.Flags().StringVar(&typeVal, "type", "", "List resource group memberships for an organization, by type. If left blank it will include both User and Workspace type.") + cmd.Flags().StringVar(&max, "max", "", "Limit the maximum number of resource group memberships in the response.") + resourceMembershipsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/admin/roles.go b/cmd/admin/roles.go new file mode 100644 index 0000000..68d2771 --- /dev/null +++ b/cmd/admin/roles.go @@ -0,0 +1,74 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package admin + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var rolesCmd = &cobra.Command{ + Use: "roles", + Short: "Roles commands", +} + +func init() { + cmd.AdminCmd.AddCommand(rolesCmd) + + { // list + cmd := &cobra.Command{ + Use: "list", + Short: "List Roles", + Long: `List all roles. Must be called by an admin user.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/roles") + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + rolesCmd.AddCommand(cmd) + } + + { // get + var roleId string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Role Details", + Long: "Shows details for a role, by ID.\n\nSpecify the role ID in the `roleId` parameter in the URI.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/roles/{roleId}") + req.PathParam("roleId", roleId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&roleId, "role-id", "", "The unique identifier for the role.") + cmd.MarkFlagRequired("role-id") + rolesCmd.AddCommand(cmd) + } + +} diff --git a/cmd/admin/scim_2_bulk.go b/cmd/admin/scim_2_bulk.go new file mode 100644 index 0000000..a733db1 --- /dev/null +++ b/cmd/admin/scim_2_bulk.go @@ -0,0 +1,64 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package admin + +import ( + "fmt" + "strconv" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa +var _ = strings.Join + +var scim2BulkCmd = &cobra.Command{ + Use: "scim-2-bulk", + Short: "Scim2Bulk commands", +} + +func init() { + cmd.AdminCmd.AddCommand(scim2BulkCmd) + + { // user-api + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "user-api", + Short: "User bulk API", + Long: "
\n\n**Authorization**\n\nOAuth token rendered by Identity Broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n
\n\n**Usage**:\n\n1. The input JSON must conform to the following schema: 'urn:ietf:params:scim:api:messages:2.0:BulkRequest'.\n\n1. The request must be accompanied with a body in JSON format according to the standard SCIM schema definition.\n The maximum number of operations in a request is 100; an error is thrown if the limit is exceeded.\n\n1. `failOnErrors` parameter\n\n An integer specifies the number of errors that the service provider will accept before the operation is terminated and an error response is returned.\n It is OPTIONAL in a request.\n Maximum number of operations allowed to fail before the server stops processing the request. The value must be between 1 and 100.\n\n1. `operations` parameter\n\n Contains a list of bulk operations for POST/PATCH/DELETE operations. (REQUIRED)\n + `operations.method`\n\n The HTTP method of the current operation. Possible values are POST, PATCH or DELETE.\n + `operations.path`\n\n The Resource's relative path. If the method is POST the value must specify a Resource type endpoint;\n e.g., /Users or /Groups whereas all other method values must specify the path to a specific Resource;\n e.g., /Users/2819c223-7f76-453a-919d-413861904646.\n + `operations.data`\n\n The Resource data as it would appear for a single POST or PATCH Resource operation.\n It is REQUIRED in a request when method is POST and PATCH.\n Refer to corresponding wiki for SCIM 2.0 POST, PATCH and DELETE API.\n + `operations.bulkId`\n\n The transient identifier of a newly created resource, unique within a bulk request and created by the client.\n The bulkId serves as a surrogate resource id enabling clients to uniquely identify newly created resources in the response and cross-reference new resources in and across operations within a bulk request.\n It is REQUIRED when \"method\" is \"POST\".", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/identity/scim/{orgId}/v2/Bulk") + req.PathParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Webex Identity assigned organization identifier for user's organization.") + cmd.MarkFlagRequired("org-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + scim2BulkCmd.AddCommand(cmd) + } + +} diff --git a/cmd/admin/scim_2_groups.go b/cmd/admin/scim_2_groups.go new file mode 100644 index 0000000..239f024 --- /dev/null +++ b/cmd/admin/scim_2_groups.go @@ -0,0 +1,285 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package admin + +import ( + "fmt" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strings.Join + +var scim2GroupsCmd = &cobra.Command{ + Use: "scim-2-groups", + Short: "Scim2Groups commands", +} + +func init() { + cmd.AdminCmd.AddCommand(scim2GroupsCmd) + + { // create + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a group", + Long: "Create a new group for a given organization. The group may optionally be created with group members.\n\n
\n\n**Authorization**\n\nOAuth token returned by Identity Broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n
\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n- `id_group_admin`\n\n
\n\n**Usage**:\n\n1. The input JSON must conform to one of the following schemas:\n - `urn:ietf:params:scim:schemas:core:2.0:Group`\n - `urn:scim:schemas:extension:cisco:webexidentity:2.0:Group`\n\n1. Unrecognized schemas (ID/section) are ignored.\n\n1. Read-only attributes provided as input values are ignored.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/identity/scim/{orgId}/v2/Groups") + req.PathParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "The ID of the organization to which this group belongs. If not specified, the organization ID from the OAuth token is used.") + cmd.MarkFlagRequired("org-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + scim2GroupsCmd.AddCommand(cmd) + } + + { // search + var orgId string + var filter string + var attributes string + var excludedAttributes string + var sortBy string + var sortOrder string + var startIndex string + var count string + var includeMembers string + var memberType string + cmd := &cobra.Command{ + Use: "search", + Short: "Search groups", + Long: "Retrieve a list of groups in the organization.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n
\n\n**Authorization**\n\nAn OAuth token rendered by Identity Broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n- `identity:people_read`\n\n
\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n- `id_group_admin`\n\n- `id_readonly_admin`\n\n- `id_device_admin`", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/identity/scim/{orgId}/v2/Groups") + req.PathParam("orgId", orgId) + req.QueryParam("filter", filter) + req.QueryParam("attributes", attributes) + req.QueryParam("excludedAttributes", excludedAttributes) + req.QueryParam("sortBy", sortBy) + req.QueryParam("sortOrder", sortOrder) + req.QueryParam("startIndex", startIndex) + req.QueryParam("count", count) + req.QueryParam("includeMembers", includeMembers) + req.QueryParam("memberType", memberType) + if config.Paginate() { + req.OffsetPaging("startIndex", "count", 1) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "The ID of the organization to which this group belongs. If not specified, the organization ID from the OAuth token is used.") + cmd.MarkFlagRequired("org-id") + cmd.Flags().StringVar(&filter, "filter", "", "The url encoded filter. The example content is 'displayName Eq \"group1@example.com\" or displayName Eq \"group2@example.com\"'. For more filter patterns, see https://datatracker.ietf.org/doc/html/rfc7644#section-3.4.2.2. If the value is empty, the API returns all groups under the organization. ") + cmd.Flags().StringVar(&attributes, "attributes", "", "The attributes to return.") + cmd.Flags().StringVar(&excludedAttributes, "excluded-attributes", "", "Attributes to be excluded from the return.") + cmd.Flags().StringVar(&sortBy, "sort-by", "", "A string indicating the attribute whose value be used to order the returned responses. Now we only allow `displayName, id, meta.lastModified` to sort.") + cmd.Flags().StringVar(&sortOrder, "sort-order", "", "A string indicating the order in which the `sortBy` parameter is applied. Allowed values are `ascending` and `descending`.") + cmd.Flags().StringVar(&startIndex, "start-index", "", "An integer indicating the 1-based index of the first query result. The default is 1.") + cmd.Flags().StringVar(&count, "count", "", "An integer indicating the desired maximum number of query results per page. The default is 100.") + cmd.Flags().StringVar(&includeMembers, "include-members", "", "Default \"false\". If false, no members returned.") + cmd.Flags().StringVar(&memberType, "member-type", "", "Filter the members by member type. Sample data: `user`, `machine`, `group`.") + scim2GroupsCmd.AddCommand(cmd) + } + + { // get + var orgId string + var groupId string + var excludedAttributes string + cmd := &cobra.Command{ + Use: "get", + Short: "Get a group", + Long: "Retrieve details for a group, by ID.\n\nOptionally, members can be retrieved with this request. The maximum number of members returned is 500.\n\n
\n\n**Authorization**\n\nOAuth token rendered by Identity Broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n- `identity:people_read`\n\n
\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n- `id_group_admin`\n\n- `id_readonly_admin`\n\n- `id_device_admin`", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/identity/scim/{orgId}/v2/Groups/{groupId}") + req.PathParam("orgId", orgId) + req.PathParam("groupId", groupId) + req.QueryParam("excludedAttributes", excludedAttributes) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "The ID of the organization to which this group belongs. If not specified, the organization ID from the OAuth token is used.") + cmd.MarkFlagRequired("org-id") + cmd.Flags().StringVar(&groupId, "group-id", "", "A unique identifier for the group.") + cmd.MarkFlagRequired("group-id") + cmd.Flags().StringVar(&excludedAttributes, "excluded-attributes", "", "Attributes to be excluded from the return.") + scim2GroupsCmd.AddCommand(cmd) + } + + { // update-put + var orgId string + var groupId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-put", + Short: "Update a group with PUT", + Long: "Replace the contents of the Group.\n\nSpecify the group ID in the `groupId` parameter in the URI.\n\n
\n\n**Authorization**\n\nOAuth token returned by Identity Broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n
\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n- `id_group_admin`\n\n
\n\n**Usage**:\n\n1. The input JSON must conform to one of the following schemas:\n - `urn:ietf:params:scim:schemas:core:2.0:Group`\n - `urn:scim:schemas:extension:cisco:webexidentity:2.0:Group`\n\n1. Unrecognized schemas (ID/section) are ignored.\n\n1. Read-only attributes provided as input values are ignored.\n\n1. The group `id` is not changed.\n\n1. All attributes are cleaned up if a new value is not provided by the client.\n\n1. The values, `meta` and `created` are not changed.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/identity/scim/{orgId}/v2/Groups/{groupId}") + req.PathParam("orgId", orgId) + req.PathParam("groupId", groupId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "The ID of the organization to which this group belongs. If not specified, the organization ID from the OAuth token is used.") + cmd.MarkFlagRequired("org-id") + cmd.Flags().StringVar(&groupId, "group-id", "", "A unique identifier for the group.") + cmd.MarkFlagRequired("group-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + scim2GroupsCmd.AddCommand(cmd) + } + + { // update-patch + var orgId string + var groupId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-patch", + Short: "Update a group with PATCH", + Long: "Update group attributes with PATCH.\n\nSpecify the group ID in the `groupId` parameter in the URI.\n\n
\n\n**Authorization**\n\nOAuth token returned by Identity Broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n
\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n- `id_group_admin`\n\n
\n\n**Usage**:\n\n1. The input JSON must conform to one of the following schemas:\n - `urn:ietf:params:scim:schemas:core:2.0:Group`\n - `urn:scim:schemas:extension:cisco:webexidentity:2.0:Group`\n\n1. Unrecognized schemas (ID/section) are ignored.\n\n1. Read-only attributes provided as input values are ignored.\n\n1. Each operation on an attribute must be compatible with the attribute's mutability.\n\n1. Each PATCH operation represents a single action to be applied to the\n same SCIM resource specified by the request URI. Operations are\n applied sequentially in the order they appear in the array. Each\n operation in the sequence is applied to the target resource; the\n resulting resource becomes the target of the next operation.\n Evaluation continues until all operations are successfully applied or\n until an error condition is encountered.\n\n
\n\n**Add operations**:\n\nThe `add` operation is used to add a new attribute value to an existing resource. The operation must contain a `value` member whose content specifies the value to be added. The value may be a quoted value, or it may be a JSON object containing the sub-attributes of the complex attribute specified in the operation's `path`. The result of the add operation depends upon the target location indicated by `path` references:\n\n
\n\n- If omitted, the target location is assumed to be the resource itself. The `value` parameter contains a set of attributes to be added to the resource.\n\n- If the target location does not exist, the attribute and value are added.\n\n- If the target location specifies a complex attribute, a set of sub-attributes shall be specified in the `value` parameter.\n\n- If the target location specifies a multi-valued attribute, a new value is added to the attribute.\n\n- If the target location specifies a single-valued attribute, the existing value is replaced.\n\n- If the target location specifies an attribute that does not exist (has no value), the attribute is added with the new value.\n\n- If the target location exists, the value is replaced.\n\n- If the target location already contains the value specified, no changes should be made to the resource.\n\n
\n\n**Replace operations**:\n\nThe `replace` operation replaces the value at the target location specified by the `path`. The operation performs the following functions, depending on the target location specified by `path`:\n\n
\n\n- If the `path` parameter is omitted, the target is assumed to be the resource itself. In this case, the `value` attribute shall contain a list of one or more attributes that are to be replaced.\n\n- If the target location is a single-value attribute, the value of the attribute is replaced.\n\n- If the target location is a multi-valued attribute and no filter is specified, the attribute and all values are replaced.\n\n- If the target location path specifies an attribute that does not exist, the service provider shall treat the operation as an \"add\".\n\n- If the target location specifies a complex attribute, a set of sub-attributes SHALL be specified in the `value` parameter, which replaces any existing values or adds where an attribute did not previously exist. Sub-attributes that are not specified in the `value` parameters are left unchanged.\n\n- If the target location is a multi-valued attribute and a value selection (\"valuePath\") filter is specified that matches one or more values of the multi-valued attribute, then all matching record values will be replaced.\n\n- If the target location is a complex multi-valued attribute with a value selection filter (\"valuePath\") and a specific sub-attribute (e.g., \"addresses[type eq \"work\"].streetAddress\"), the matching sub-attribute of all matching records is replaced.\n\n- If the target location is a multi-valued attribute for which a value selection filter (\"valuePath\") has been supplied and no record match was made, the service provider will indicate the failure by returning HTTP status code 400 and a `scimType` error code of `noTarget`.\n\n
\n\n**Remove operations**:\n\nThe `remove` operation removes the value at the target location specified by the required attribute `path`. The operation performs the following functions, depending on the target location specified by `path`:\n\n
\n\n- If `path` is unspecified, the operation fails with HTTP status code 400 and a \"scimType\" error code of \"noTarget\".\n\n- If the target location is a single-value attribute, the attribute and its associated value is removed, and the attribute will be considered unassigned.\n\n- If the target location is a multi-valued attribute and no filter is specified, the attribute and all values are removed, and the attribute SHALL be considered unassigned.\n\n- If the target location is a multi-valued attribute and a complex filter is specified comparing a `value`, the values matched by the filter are removed. If no other values remain after the removal of the selected values, the multi-valued attribute will be considered unassigned.\n\n- If the target location is a complex multi-valued attribute and a complex filter is specified based on the attribute`s sub-attributes, the matching records are removed. Sub-attributes whose values have been removed will be considered unassigned. If the complex multi-valued attribute has no remaining records, the attribute will be considered unassigned.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PATCH", "/identity/scim/{orgId}/v2/Groups/{groupId}") + req.PathParam("orgId", orgId) + req.PathParam("groupId", groupId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "The ID of the organization to which this group belongs. If not specified, the organization ID from the OAuth token is used.") + cmd.MarkFlagRequired("org-id") + cmd.Flags().StringVar(&groupId, "group-id", "", "A unique identifier for the group.") + cmd.MarkFlagRequired("group-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + scim2GroupsCmd.AddCommand(cmd) + } + + { // delete + var orgId string + var groupId string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete a group", + Long: "Remove a group from the system.\n\nSpecify the group ID in the `groupId` parameter in the URI.\n\n
\n\n**Authorization**\n\nOAuth token rendered by Identity Broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n
\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n- `id_group_admin`", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/identity/scim/{orgId}/v2/Groups/{groupId}") + req.PathParam("orgId", orgId) + req.PathParam("groupId", groupId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "The ID of the organization to which this group belongs. If not specified, the organization ID from the OAuth token is used.") + cmd.MarkFlagRequired("org-id") + cmd.Flags().StringVar(&groupId, "group-id", "", "A unique identifier for the group.") + cmd.MarkFlagRequired("group-id") + scim2GroupsCmd.AddCommand(cmd) + } + + { // get-members + var orgId string + var groupId string + var startIndex string + var count string + var memberType string + cmd := &cobra.Command{ + Use: "get-members", + Short: "Get Group Members", + Long: "Returns the members of a group.\n\n- The default maximum number of members returned is 500.\n\n- Control parameters are available to page through the members and to control the size of the results.\n\n- Long result sets are split into [pages](/docs/basics#pagination).\n\n**Note**\nLocation groups are different from SCIM groups. You cannot search for identities in a location via groups.\n\n
\n\n**Authorization**\n\nOAuth token returned by the Identity Broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n- `identity:people_read`\n\n
\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n- `id_group_admin`\n\n- `id_readonly_admin`\n\n- `id_device_admin`", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/identity/scim/{orgId}/v2/Groups/{groupId}/Members") + req.PathParam("orgId", orgId) + req.PathParam("groupId", groupId) + req.QueryParam("startIndex", startIndex) + req.QueryParam("count", count) + req.QueryParam("memberType", memberType) + if config.Paginate() { + req.OffsetPaging("startIndex", "count", 1) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "The ID of the organization to which this group belongs. If not specified, the organization ID from the OAuth token is used.") + cmd.MarkFlagRequired("org-id") + cmd.Flags().StringVar(&groupId, "group-id", "", "A unique identifier for the group.") + cmd.MarkFlagRequired("group-id") + cmd.Flags().StringVar(&startIndex, "start-index", "", "The index to start for group pagination.") + cmd.Flags().StringVar(&count, "count", "", "Non-negative integer that specifies the desired number of search results per page. The maximum value for the count is 500.") + cmd.Flags().StringVar(&memberType, "member-type", "", "Filter the members by member type. Sample data: `user`, `machine`, `group`.") + scim2GroupsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/admin/scim_2_schemas.go b/cmd/admin/scim_2_schemas.go new file mode 100644 index 0000000..480162a --- /dev/null +++ b/cmd/admin/scim_2_schemas.go @@ -0,0 +1,83 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package admin + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var scim2SchemasCmd = &cobra.Command{ + Use: "scim-2-schemas", + Short: "Scim2Schemas commands", +} + +func init() { + cmd.AdminCmd.AddCommand(scim2SchemasCmd) + + { // get-group + cmd := &cobra.Command{ + Use: "get-group", + Short: "Get Group Schema", + Long: "This API allows the service client to get all the `Group` schemas information from CI.\n\n**Authorization:**\n\nOAuth token rendered by Identity Broker.\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n- `identity:organizations_rw`\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n- `id_user_admin`\n\n- `id_readonly_admin`\n\n- `id_device_admin`", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/Schemas/SCIM2/Group") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + scim2SchemasCmd.AddCommand(cmd) + } + + { // get-user + cmd := &cobra.Command{ + Use: "get-user", + Short: "Get User Schema", + Long: "This API allows the service client to get all the `User` schemas information from CI.\n\n**Authorization:**\n\nOAuth token rendered by Identity Broker.\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n- `identity:organizations_rw`\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n- `id_user_admin`\n\n- `id_readonly_admin`\n\n- `id_device_admin`", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/Schemas/SCIM2/User") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + scim2SchemasCmd.AddCommand(cmd) + } + + { // get-group-id + var schemaId string + cmd := &cobra.Command{ + Use: "get-group-id", + Short: "Get Schema using Group Schema ID", + Long: "This API allows the service client to get the Group/User Schema using `Schema Id` from CI.\n\nExample:\n\n- `urn:ietf:params:scim:schemas:core:2.0:Group` is one of the `Group Schema Id`. Using this particular ID, we can fetch all information related to it.\n\n- `urn:ietf:params:scim:schemas:extension:enterprise:2.0:User` is one of the `User Schema Id`. Using this particular ID, we can fetch all information related to it.\n\n**Authorization:**\n\nOAuth token rendered by Identity Broker.\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n- `identity:organizations_rw`\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n- `id_user_admin`\n\n- `id_readonly_admin`\n\n- `id_device_admin`", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/Schemas/SCIM2/{schemaId}") + req.PathParam("schemaId", schemaId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&schemaId, "schema-id", "", "The Schema Id of Group/User Schema") + cmd.MarkFlagRequired("schema-id") + scim2SchemasCmd.AddCommand(cmd) + } + +} diff --git a/cmd/admin/scim_2_users.go b/cmd/admin/scim_2_users.go new file mode 100644 index 0000000..b931641 --- /dev/null +++ b/cmd/admin/scim_2_users.go @@ -0,0 +1,260 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package admin + +import ( + "fmt" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strings.Join + +var scim2UsersCmd = &cobra.Command{ + Use: "scim-2-users", + Short: "Scim2Users commands", +} + +func init() { + cmd.AdminCmd.AddCommand(scim2UsersCmd) + + { // create + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a user", + Long: "The SCIM 2 /Users API provides a programmatic way to manage users in Webex Identity using The Internet Engineering Task Force standard SCIM 2.0 standard as specified by [RFC 7643 SCIM 2.0 Core Schema ](https://datatracker.ietf.org/doc/html/rfc7643) and [RFC 7644 SCIM 2.0 Core Protocol](https://datatracker.ietf.org/doc/html/rfc7644). The WebEx SCIM 2.0 APIs allow clients supporting the SCIM 2.0 standard to manage users, and groups within Webex. Webex supports the following SCIM 2.0 Schemas:\n\n\u2022 urn:ietf:params:scim:schemas:core:2.0:User\n\n\u2022 urn:ietf:params:scim:schemas:extension:enterprise:2.0:User\n\n\u2022 urn:scim:schemas:extension:cisco:webexidentity:2.0:User\n\n
\n\n**Authorization**\n\nOAuth token rendered by Identity Broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n
\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n- `id_user_admin`\n\n
\n\n**Usage**:\n\n1. Input JSON must contain schema: \"urn:ietf:params:scim:schemas:core:2.0:User\".\n\n2. Support 3 schemas :\n - \"urn:ietf:params:scim:schemas:core:2.0:User\"\n - \"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User\"\n - \"urn:scim:schemas:extension:cisco:webexidentity:2.0:User\"\n\n3. Unrecognized schemas (ID/section) are ignored.\n\n4. Read-only attributes provided as input values are ignored.\n\n The following roles cannot be assigned to a user:\n\n1. Location Admin\n\n2. Webex Site Admin", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/identity/scim/{orgId}/v2/Users") + req.PathParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Webex Identity assigned organization identifier for user's organization.") + cmd.MarkFlagRequired("org-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + scim2UsersCmd.AddCommand(cmd) + } + + { // search + var orgId string + var filter string + var attributes string + var excludedAttributes string + var sortBy string + var sortOrder string + var startIndex string + var count string + var returnGroups string + var includeGroupDetails string + var groupUsageTypes string + cmd := &cobra.Command{ + Use: "search", + Short: "Search users", + Long: "
\n\n**Authorization**\n\nOAuth token rendered by Identity Broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n- `identity:people_read`\n\n
\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n- `id_user_admin`\n\n- `id_readonly_admin`\n\n- `id_device_admin`\n\n
", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/identity/scim/{orgId}/v2/Users") + req.PathParam("orgId", orgId) + req.QueryParam("filter", filter) + req.QueryParam("attributes", attributes) + req.QueryParam("excludedAttributes", excludedAttributes) + req.QueryParam("sortBy", sortBy) + req.QueryParam("sortOrder", sortOrder) + req.QueryParam("startIndex", startIndex) + req.QueryParam("count", count) + req.QueryParam("returnGroups", returnGroups) + req.QueryParam("includeGroupDetails", includeGroupDetails) + req.QueryParam("groupUsageTypes", groupUsageTypes) + if config.Paginate() { + req.OffsetPaging("startIndex", "count", 1) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Webex Identity assigned organization identifier for user's organization.") + cmd.MarkFlagRequired("org-id") + cmd.Flags().StringVar(&filter, "filter", "", "The URL encoded filter. If the value is empty, the API will return all users under the organization. The examples below show some search filters: - `userName` eq \"user1@example.com\" - `userName` sw \"user1@example\" - `userName` ew \"example\" - `phoneNumbers` [ type eq \"mobile\" and value eq \"14170120\"] - `urn:scim:schemas:extension:cisco:webexidentity:2.0:User:meta.organizationId` eq \"0ae87ade-8c8a-4952-af08-318798958d0c\" - For more filter patterns, please check [filtering](https://datatracker.ietf.org/doc/html/rfc7644#section-3.4.2.2). | **Attributes** | **Operators** | |-----|-----| | **SCIM Core**                              | ---- | | `id` | eq | | `userName` | eq sw ew | | `name.familyName` | eq sw ew | | `name.givenName` | eq sw | | `name.middleName` | eq sw | | `name.formatted` | eq sw | | `displayName` | eq sw ew | | `nickName` | eq sw ew | | `emails.display` | eq sw ew | | `emails.value` | eq sw ew | | `phoneNumbers.value` | eq sw ew | | `phoneNumbers.display` | eq sw ew | | **Enterprise Extensions** | ---- | | `employeeNumber` | eq sw ew | | `costCenter` | eq sw ew | | `organization` | eq sw ew | | `division` | eq sw ew | | `department` | eq sw ew | | `manager.value` | eq | | `manager.displayName` | eq sw ew |") + cmd.Flags().StringVar(&attributes, "attributes", "", "A multi-valued list of string names for resource attributes to return in the response, like 'userName,department,emails'. It supports the SCIM id 'urn:ietf:params:scim:schemas:extension:enterprise:2.0:User,userName'. The default is empty, all attributes will be returned") + cmd.Flags().StringVar(&excludedAttributes, "excluded-attributes", "", "A multi-valued list of strings names for resource attributes to be removed from the default set of attributes to return. The default is empty, all attributes will be returned") + cmd.Flags().StringVar(&sortBy, "sort-by", "", "A string for the attribute whose value can be used to order the returned responses. Now we only allow `userName`, `id`, `meta.lastModified` to sort.") + cmd.Flags().StringVar(&sortOrder, "sort-order", "", "A string for the order in which the 'sortBy' parameter is applied. Allowed values are 'ascending' and 'descending'.") + cmd.Flags().StringVar(&startIndex, "start-index", "", "An integer for the 1-based index of the first query result. The default is 1.") + cmd.Flags().StringVar(&count, "count", "", "An integer for the maximum number of query results per page. The default is 100.") + cmd.Flags().StringVar(&returnGroups, "return-groups", "", "Define whether the group information needs to be returned. The default is false.") + cmd.Flags().StringVar(&includeGroupDetails, "include-group-details", "", "Define whether the group information with details needs to be returned. The default is false.") + cmd.Flags().StringVar(&groupUsageTypes, "group-usage-types", "", "Returns groups with details of the specified group type.") + scim2UsersCmd.AddCommand(cmd) + } + + { // get + var orgId string + var userId string + cmd := &cobra.Command{ + Use: "get", + Short: "Get a user", + Long: "
\n\n**Authorization**\n\nOAuth token rendered by Identity Broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n- `identity:people_read`\n\n
\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n- `id_user_admin`\n\n- `id_readonly_admin`\n\n- `id_device_admin`\n\n
", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/identity/scim/{orgId}/v2/Users/{userId}") + req.PathParam("orgId", orgId) + req.PathParam("userId", userId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Webex Identity assigned organization identifier for user's organization.") + cmd.MarkFlagRequired("org-id") + cmd.Flags().StringVar(&userId, "user-id", "", "Webex Identity assigned user identifier.") + cmd.MarkFlagRequired("user-id") + scim2UsersCmd.AddCommand(cmd) + } + + { // update-put + var orgId string + var userId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-put", + Short: "Update a user with PUT", + Long: "
\n\n**Authorization**\n\nOAuth token rendered by Identity Broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n
\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n- `id_user_admin`\n\n
\n\n**Usage**:\n\n1. Input JSON must contain schema: \"urn:ietf:params:scim:schemas:core:2.0:User\".\n\n2. Support 3 schemas :\n - \"urn:ietf:params:scim:schemas:core:2.0:User\"\n - \"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User\"\n - \"urn:scim:schemas:extension:cisco:webexidentity:2.0:User\"\n\n3. Unrecognized schemas (ID/section) are ignored.\n\n4. Read-only attributes provided as input values are ignored.\n\n5. User `id` will not be changed.\n\n6. `meta`.`created` will not be changed.\n\n7. The PUT API replaces the contents of the user's data with the data in the request body. All attributes specified in the request body will replace all existing attributes for the `userId` specified in the URL. Should you wish to replace or change some attributes as opposed to all attributes please refer to the SCIM PATCH operation https://developer.webex.com/docs/api/v1/scim2-user/update-a-user-with-patch.\n\n
\n\n**NOTE**:\n\nOnce a user's role or managed roles are changed, all tokens associated with that user will be invalidated.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/identity/scim/{orgId}/v2/Users/{userId}") + req.PathParam("orgId", orgId) + req.PathParam("userId", userId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Webex Identity assigned organization identifier for user's organization.") + cmd.MarkFlagRequired("org-id") + cmd.Flags().StringVar(&userId, "user-id", "", "Webex Identity assigned user identifier.") + cmd.MarkFlagRequired("user-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + scim2UsersCmd.AddCommand(cmd) + } + + { // update-patch + var orgId string + var userId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-patch", + Short: "Update a user with PATCH", + Long: "
\n\n**Authorization**\n\nOAuth token rendered by Identity Broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n
\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n- `id_user_admin`\n\n
\n\n**Usage**:\n\n1. The PATCH API replaces individual attributes and roles of the user's data in the request body.\n The PATCH API supports `add`, `remove`, and `replace` operations on any individual\n attribute or role allowing only specific attributes of the user's object to be modified.\n\n2. Each operation against an attribute must be compatible with the attribute's mutability.\n\n3. Each PATCH operation represents a single action to be applied to the\n same SCIM resource specified by the request URI. Operations are\n applied sequentially in the order they appear in the array. Each\n operation in the sequence is applied to the target resource; the\n resulting resource becomes the target of the next operation.\n Evaluation continues until all operations are successfully applied or\n until an error condition is encountered.\n\n
\n\n**Add operations**:\n\nThe `add` operation adds a new attribute value to an existing resource.\nThe operation must contain a `value` member whose content specifies the value to be added.\nThe value may be a quoted value, or it may be a JSON object containing the sub-attributes of the complex attribute specified in the operation's `path`.\nThe result of the add operation depends upon the target `path` reference locations:\n\n
\n\n- If omitted, the target location is assumed to be the resource itself. The `value` parameter contains a set of attributes to be added to the resource.\n\n- If the target location does not exist, the attribute and value are added.\n\n- If the target location specifies a complex attribute, a set of sub-attributes shall be specified in the `value` parameter.\n\n- If the target location specifies a multi-valued attribute, a new value is added to the attribute.\n\n- If the target location specifies a single-valued attribute, the existing value is replaced.\n\n- If the target location specifies an attribute that does not exist (has no value), the attribute is added with the new value.\n\n- If the target location exists, the value is replaced.\n\n- If the target location already contains the value specified, no changes should be made to the resource.\n\n
\n\n**Replace operations**:\n\nThe `replace` operation replaces the value at the target location specified by the `path`.\nThe operation performs the following functions, depending on the target location specified by `path`:\n\n
\n\n- If the `path` parameter is omitted, the target is assumed to be the resource itself. In this case, the `value` attribute shall contain a list of one or more attributes to be replaced.\n\n- If the target location is a single-value attribute, the value of the attribute is replaced.\n\n- If the target location is a multi-valued attribute and no filter is specified, the attribute and all values are replaced.\n\n- If the target location path specifies an attribute that does not exist, the service provider shall treat the operation as an \"add\".\n\n- If the target location specifies a complex attribute, a set of sub-attributes SHALL be specified in the `value` parameter, which replaces any existing values or adds where an attribute did not previously exist. Sub-attributes not specified in the `value` parameters are left unchanged.\n\n- If the target location is a multi-valued attribute and a value selection (\"valuePath\") filter is specified that matches one or more values of the multi-valued attribute, then all matching record values will be replaced.\n\n- If the target location is a complex multi-valued attribute with a value selection filter (\"valuePath\") and a specific sub-attribute (e.g., \"addresses[type eq \"work\"].streetAddress\"), the matching sub-attribute of all matching records is replaced.\n\n- If the target location is a multi-valued attribute for which a value selection filter (\"valuePath\") has been supplied and no record match was made, the service provider will return failure as HTTP status code 400 and a `scimType` error code of \"noTarget\".\n\n
\n\n**Remove operations**:\n\nThe `remove` operation removes the value at the target location specified by the required attribute `path`. The operation performs the following functions, depending on the target location specified by `path`:\n\n
\n\n- If `path` is unspecified, the operation fails with HTTP status code 400 and a \"scimType\" error code of \"noTarget\".\n\n- If the target location is a single-value attribute, the attribute and its associated value is removed, and the attribute will be considered unassigned.\n\n- If the target location is a multi-valued attribute and no filter is specified, the attribute and all values are removed, and the attribute SHALL be considered unassigned.\n\n- If the target location is a multi-valued attribute and a complex filter is specified comparing a `value`, the values matched by the filter are removed. If no other values remain after the removal of the selected values, the multi-valued attribute will be considered unassigned.\n\n- If the target location is a complex multi-valued attribute and a complex filter is specified based on the attribute's sub-attributes, the matching records are removed. Sub-attributes whose values have been removed will be considered unassigned. If the complex multi-valued attribute has no remaining records, the attribute will be considered unassigned.\n\n The following roles cannot be assigned to a user:\n\n1. Location Admin\n\n2. Webex Site Admin \n\n
\n\n**NOTE**:\n\nOnce a user's role or managed roles are changed, all tokens associated with that user will be invalidated.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PATCH", "/identity/scim/{orgId}/v2/Users/{userId}") + req.PathParam("orgId", orgId) + req.PathParam("userId", userId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Webex Identity assigned organization identifier for user's organization.") + cmd.MarkFlagRequired("org-id") + cmd.Flags().StringVar(&userId, "user-id", "", "Webex Identity assigned user identifier.") + cmd.MarkFlagRequired("user-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + scim2UsersCmd.AddCommand(cmd) + } + + { // delete + var orgId string + var userId string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete a user", + Long: "
\n\n**Authorization**\n\nOAuth token rendered by Identity Broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n
\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n- `id_user_admin`\n\n
", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/identity/scim/{orgId}/v2/Users/{userId}") + req.PathParam("orgId", orgId) + req.PathParam("userId", userId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Webex Identity assigned organization identifier for user's organization.") + cmd.MarkFlagRequired("org-id") + cmd.Flags().StringVar(&userId, "user-id", "", "Webex Identity assigned user identifier.") + cmd.MarkFlagRequired("user-id") + scim2UsersCmd.AddCommand(cmd) + } + + { // get-me + cmd := &cobra.Command{ + Use: "get-me", + Short: "Get Me", + Long: "
\n\n**Authorization**\n\nOAuth token rendered by Identity Broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n- `identity:people_read`\n\n
\n\nThe API can be used by any user to retrieve user information using their own access token.\n\n
", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/identity/scim/v2/Users/me") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + scim2UsersCmd.AddCommand(cmd) + } + +} diff --git a/cmd/admin/security_audit.go b/cmd/admin/security_audit.go new file mode 100644 index 0000000..36c8638 --- /dev/null +++ b/cmd/admin/security_audit.go @@ -0,0 +1,72 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package admin + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var securityAuditCmd = &cobra.Command{ + Use: "security-audit", + Short: "SecurityAudit commands", +} + +func init() { + cmd.AdminCmd.AddCommand(securityAuditCmd) + + { // list-events + var orgId string + var startTime string + var endTime string + var actorId string + var max string + var eventCategories string + cmd := &cobra.Command{ + Use: "list-events", + Short: "List Security Audit Events", + Long: "List Security Audit Events. This API currently returns user sign-in and sign-out data.\nTo call this API the `audit:events_read` scope must be selected for the Integration or Service App and authorized by a Full Admin.\n\nSeveral query parameters are available to filter the response.\n\nLong result sets will be split into multiple [pages](/docs/basics#pagination)\n\n**NOTE**: A maximum of one year of audit events can be returned per request.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/admin/securityAudit/events") + req.QueryParam("orgId", orgId) + req.QueryParam("startTime", startTime) + req.QueryParam("endTime", endTime) + req.QueryParam("actorId", actorId) + req.QueryParam("max", max) + req.QueryParam("eventCategories", eventCategories) + req.QueryParam("eventCategories", eventCategories) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List events in this organization, by ID.") + cmd.Flags().StringVar(&startTime, "start-time", "", "List events which occurred after a specific date and time.") + cmd.Flags().StringVar(&endTime, "end-time", "", "List events which occurred before a specific date and time.") + cmd.Flags().StringVar(&actorId, "actor-id", "", "List events performed by this person, by ID.") + cmd.Flags().StringVar(&max, "max", "", "Limit the maximum number of events in the response. The maximum value is `1000`.") + cmd.Flags().StringVar(&eventCategories, "event-categories", "", "List events, by event categories.") + securityAuditCmd.AddCommand(cmd) + } + +} diff --git a/cmd/admin/send_activation_email.go b/cmd/admin/send_activation_email.go new file mode 100644 index 0000000..55eb61a --- /dev/null +++ b/cmd/admin/send_activation_email.go @@ -0,0 +1,110 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package admin + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var sendActivationEmailCmd = &cobra.Command{ + Use: "send-activation-email", + Short: "SendActivationEmail commands", +} + +func init() { + cmd.AdminCmd.AddCommand(sendActivationEmailCmd) + + { // initiate-bulk-resend-job + var orgId string + cmd := &cobra.Command{ + Use: "initiate-bulk-resend-job", + Short: "Initiate Bulk Activation Email Resend Job", + Long: "Initiate a bulk activation email resend job that sends an activation email to all eligible users in an organization. Only a single instance of the job can be running for an organization.\n\nRequires a full or user administrator auth token with a scope of `spark-admin:people_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/identity/organizations/{orgId}/jobs/sendActivationEmails") + req.PathParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Initiate job for this organization.") + cmd.MarkFlagRequired("org-id") + sendActivationEmailCmd.AddCommand(cmd) + } + + { // get-bulk-resend-job-status + var orgId string + var jobId string + cmd := &cobra.Command{ + Use: "get-bulk-resend-job-status", + Short: "Get Bulk Activation Email Resend Job Status", + Long: "Get the details of an activation email resend job by its job ID.\n\nRequires a full or user administrator auth token with a scope of `spark-admin:people_write` or read-only administrator auth token with a scope of `spark-admin:people_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/identity/organizations/{orgId}/jobs/sendActivationEmails/{jobId}/status") + req.PathParam("orgId", orgId) + req.PathParam("jobId", jobId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Check job status for this organization.") + cmd.MarkFlagRequired("org-id") + cmd.Flags().StringVar(&jobId, "job-id", "", "Retrieve job status for this `jobId`.") + cmd.MarkFlagRequired("job-id") + sendActivationEmailCmd.AddCommand(cmd) + } + + { // get-bulk-resend-job-errors + var orgId string + var jobId string + var max string + cmd := &cobra.Command{ + Use: "get-bulk-resend-job-errors", + Short: "Get Bulk Activation Email Resend Job Errors", + Long: "Get errors of an activation email resend job by its job ID.\n\nRequires a full or user administrator auth token with a scope of `spark-admin:people_write` or read-only administrator auth token with a scope of `spark-admin:people_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/identity/organizations/{orgId}/jobs/sendActivationEmails/{jobId}/errors") + req.PathParam("orgId", orgId) + req.PathParam("jobId", jobId) + req.QueryParam("max", max) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Check job status for this organization.") + cmd.MarkFlagRequired("org-id") + cmd.Flags().StringVar(&jobId, "job-id", "", "Retrieve job status for this `jobId`.") + cmd.MarkFlagRequired("job-id") + cmd.Flags().StringVar(&max, "max", "", "Limit the maximum number of errors in the response.") + sendActivationEmailCmd.AddCommand(cmd) + } + +} diff --git a/cmd/admin/service_apps.go b/cmd/admin/service_apps.go new file mode 100644 index 0000000..7a3ce82 --- /dev/null +++ b/cmd/admin/service_apps.go @@ -0,0 +1,74 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package admin + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var serviceAppsCmd = &cobra.Command{ + Use: "service-apps", + Short: "ServiceApps commands", +} + +func init() { + cmd.AdminCmd.AddCommand(serviceAppsCmd) + + { // create-access-token + var applicationId string + var clientId string + var clientSecret string + var targetOrgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-access-token", + Short: "Create Service App Access Token", + Long: `Retrieves an organization specific token pair for an already authorized Service App. Service Apps use machine accounts to make API calls on behalf of an organization, independent of individual user life cycles. + +This endpoint allows you to programmatically retrieve access and refresh tokens after a Full Admin has authorized your Service App in Control Hub. + +To call this endpoint, you need an integration with the spark:applications_token scope.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/applications/{applicationId}/token") + req.PathParam("applicationId", applicationId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("clientId", clientId) + req.BodyString("clientSecret", clientSecret) + req.BodyString("targetOrgId", targetOrgId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&applicationId, "application-id", "", "The unique identifier of the Service App") + cmd.MarkFlagRequired("application-id") + cmd.Flags().StringVar(&clientId, "client-id", "", "") + cmd.Flags().StringVar(&clientSecret, "client-secret", "", "") + cmd.Flags().StringVar(&targetOrgId, "target-org-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + serviceAppsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/admin/settings.go b/cmd/admin/settings.go new file mode 100644 index 0000000..1a45da4 --- /dev/null +++ b/cmd/admin/settings.go @@ -0,0 +1,92 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package admin + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var settingsCmd = &cobra.Command{ + Use: "settings", + Short: "Settings commands", +} + +func init() { + cmd.AdminCmd.AddCommand(settingsCmd) + + { // get-org + var orgId string + var settingKey string + cmd := &cobra.Command{ + Use: "get-org", + Short: "Get an Organization Setting", + Long: `This endpoint retrieves the specified setting for the given organization and is accessible with the scope 'identity:organizations_read'.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/settings/organizations/{orgId}/settings/{settingKey}") + req.PathParam("orgId", orgId) + req.PathParam("settingKey", settingKey) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "The Webex organization id in Control Hub UUID or API orgId format.") + cmd.MarkFlagRequired("org-id") + cmd.Flags().StringVar(&settingKey, "setting-key", "", "The key of the setting.") + cmd.MarkFlagRequired("setting-key") + settingsCmd.AddCommand(cmd) + } + + { // create-update-org + var orgId string + var key string + var value bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-update-org", + Short: "Create or Update an Organization Setting", + Long: `This endpoint creates or updates the specified setting for the given organization; however, the 'name' of the setting cannot be modified. It is accessible with the scope 'identity:organizations_rw'.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/settings/organizations/{orgId}/settings") + req.PathParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("key", key) + req.BodyBool("value", value, cmd.Flags().Changed("value")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "The Webex organization id in Control Hub UUID or API orgId format.") + cmd.MarkFlagRequired("org-id") + cmd.Flags().StringVar(&key, "key", "", "") + cmd.Flags().BoolVar(&value, "value", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + settingsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/admin/workspace_locations.go b/cmd/admin/workspace_locations.go new file mode 100644 index 0000000..d130a08 --- /dev/null +++ b/cmd/admin/workspace_locations.go @@ -0,0 +1,380 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package admin + +import ( + "fmt" + "strconv" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa + +var workspaceLocationsCmd = &cobra.Command{ + Use: "workspace-locations", + Short: "WorkspaceLocations commands", +} + +func init() { + cmd.AdminCmd.AddCommand(workspaceLocationsCmd) + + { // list + var orgId string + var displayName string + var address string + var countryCode string + var cityName string + cmd := &cobra.Command{ + Use: "list", + Short: "List Workspace Locations", + Long: "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nList workspace locations. Use query parameters to filter the response. The `orgId` parameter can only be used by admin users of another\norganization (such as partners). The `displayName`, `address`, `countryCode` and `cityName` parameters are all optional.\nRequires an administrator auth token with the `spark-admin:workspace_locations_read` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/workspaceLocations") + req.QueryParam("orgId", orgId) + req.QueryParam("displayName", displayName) + req.QueryParam("address", address) + req.QueryParam("countryCode", countryCode) + req.QueryParam("cityName", cityName) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List workspace locations in this organization. Only admin users of another organization (such as partners) may use this parameter.") + cmd.Flags().StringVar(&displayName, "display-name", "", "Location display name.") + cmd.Flags().StringVar(&address, "address", "", "Location address.") + cmd.Flags().StringVar(&countryCode, "country-code", "", "Location country code (ISO 3166-1).") + cmd.Flags().StringVar(&cityName, "city-name", "", "Location city name.") + workspaceLocationsCmd.AddCommand(cmd) + } + + { // create + var displayName string + var address string + var countryCode string + var latitude int64 + var longitude int64 + var cityName string + var notes string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a Workspace Location", + Long: "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nCreate a location. The `cityName` and `notes` parameters are optional, and omitting them will result in the creation of a location without values for those attributes.\nRequires an administrator auth token with the `spark-admin:workspace_locations_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/workspaceLocations") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("displayName", displayName) + req.BodyString("address", address) + req.BodyString("countryCode", countryCode) + req.BodyInt("latitude", latitude, cmd.Flags().Changed("latitude")) + req.BodyInt("longitude", longitude, cmd.Flags().Changed("longitude")) + req.BodyString("cityName", cityName) + req.BodyString("notes", notes) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&displayName, "display-name", "", "") + cmd.Flags().StringVar(&address, "address", "", "") + cmd.Flags().StringVar(&countryCode, "country-code", "", "") + cmd.Flags().Int64Var(&latitude, "latitude", 0, "") + cmd.Flags().Int64Var(&longitude, "longitude", 0, "") + cmd.Flags().StringVar(&cityName, "city-name", "", "") + cmd.Flags().StringVar(¬es, "notes", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspaceLocationsCmd.AddCommand(cmd) + } + + { // get + var locationId string + cmd := &cobra.Command{ + Use: "get", + Short: "Get a Workspace Location Details", + Long: "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nShows details for a location, by ID. Specify the location ID in the `locationId` parameter in the URI.\nRequires an administrator auth token with the `spark-admin:workspace_locations_read` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/workspaceLocations/{locationId}") + req.PathParam("locationId", locationId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "A unique identifier for the location.") + cmd.MarkFlagRequired("location-id") + workspaceLocationsCmd.AddCommand(cmd) + } + + { // update + var locationId string + var displayName string + var address string + var countryCode string + var latitude int64 + var longitude int64 + var id string + var cityName string + var notes string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Short: "Update a Workspace Location", + Long: "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nUpdates details for a location, by ID. Specify the location ID in the `locationId` parameter in the URI. The request should include all details for the location returned in a previous call to [Get Workspace Location Details](/docs/api/v1/workspace-locations/get-a-workspace-location-details). Omitting the optional `cityName` or `notes` fields will result in those fields no longer being defined for the location.\nRequires an administrator auth token with the `spark-admin:workspace_locations_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/workspaceLocations/{locationId}") + req.PathParam("locationId", locationId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("displayName", displayName) + req.BodyString("address", address) + req.BodyString("countryCode", countryCode) + req.BodyInt("latitude", latitude, cmd.Flags().Changed("latitude")) + req.BodyInt("longitude", longitude, cmd.Flags().Changed("longitude")) + req.BodyString("id", id) + req.BodyString("cityName", cityName) + req.BodyString("notes", notes) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "A unique identifier for the location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&displayName, "display-name", "", "") + cmd.Flags().StringVar(&address, "address", "", "") + cmd.Flags().StringVar(&countryCode, "country-code", "", "") + cmd.Flags().Int64Var(&latitude, "latitude", 0, "") + cmd.Flags().Int64Var(&longitude, "longitude", 0, "") + cmd.Flags().StringVar(&id, "id", "", "") + cmd.Flags().StringVar(&cityName, "city-name", "", "") + cmd.Flags().StringVar(¬es, "notes", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspaceLocationsCmd.AddCommand(cmd) + } + + { // delete + var locationId string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete a Workspace Location", + Long: "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nDeletes a location, by ID. The workspaces associated to that location will no longer have a location, but a new location can be reassigned to them.\nRequires an administrator auth token with the `spark-admin:workspace_locations_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/workspaceLocations/{locationId}") + req.PathParam("locationId", locationId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "A unique identifier for the location.") + cmd.MarkFlagRequired("location-id") + workspaceLocationsCmd.AddCommand(cmd) + } + + { // list-floors + var locationId string + cmd := &cobra.Command{ + Use: "list-floors", + Short: "List Workspace Location Floors", + Long: "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nList workspace location floors.\nRequires an administrator auth token with the `spark-admin:workspace_locations_read` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/workspaceLocations/{locationId}/floors") + req.PathParam("locationId", locationId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "A unique identifier for the location.") + cmd.MarkFlagRequired("location-id") + workspaceLocationsCmd.AddCommand(cmd) + } + + { // create-floor + var locationId string + var floorNumber int64 + var displayName string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-floor", + Short: "Create a Workspace Location Floor", + Long: "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nCreate a new floor in the given location. The `displayName` parameter is optional, and omitting it will result in the creation of a floor without that value set.\nRequires an administrator auth token with the `spark-admin:workspace_locations_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/workspaceLocations/{locationId}/floors") + req.PathParam("locationId", locationId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyInt("floorNumber", floorNumber, cmd.Flags().Changed("floor-number")) + req.BodyString("displayName", displayName) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "A unique identifier for the location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().Int64Var(&floorNumber, "floor-number", 0, "") + cmd.Flags().StringVar(&displayName, "display-name", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspaceLocationsCmd.AddCommand(cmd) + } + + { // get-floor + var locationId string + var floorId string + cmd := &cobra.Command{ + Use: "get-floor", + Short: "Get a Workspace Location Floor Details", + Long: "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nShows details for a floor, by ID. Specify the floor ID in the `floorId` parameter in the URI.\nRequires an administrator auth token with the `spark-admin:workspace_locations_read` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/workspaceLocations/{locationId}/floors/{floorId}") + req.PathParam("locationId", locationId) + req.PathParam("floorId", floorId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "A unique identifier for the location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&floorId, "floor-id", "", "A unique identifier for the floor.") + cmd.MarkFlagRequired("floor-id") + workspaceLocationsCmd.AddCommand(cmd) + } + + { // update-floor + var locationId string + var floorId string + var floorNumber int64 + var displayName string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-floor", + Short: "Update a Workspace Location Floor", + Long: "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nUpdates details for a floor, by ID. Specify the floor ID in the `floorId` parameter in the URI. Include all details for the floor returned by a previous call to [Get Workspace Location Floor Details](/docs/api/v1/workspace-locations/get-a-workspace-location-details). Omitting the optional `displayName` field will result in that field no longer being defined for the floor.\nRequires an administrator auth token with the `spark-admin:workspace_locations_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/workspaceLocations/{locationId}/floors/{floorId}") + req.PathParam("locationId", locationId) + req.PathParam("floorId", floorId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyInt("floorNumber", floorNumber, cmd.Flags().Changed("floor-number")) + req.BodyString("displayName", displayName) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "A unique identifier for the location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&floorId, "floor-id", "", "A unique identifier for the floor.") + cmd.MarkFlagRequired("floor-id") + cmd.Flags().Int64Var(&floorNumber, "floor-number", 0, "") + cmd.Flags().StringVar(&displayName, "display-name", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspaceLocationsCmd.AddCommand(cmd) + } + + { // delete-floor + var locationId string + var floorId string + cmd := &cobra.Command{ + Use: "delete-floor", + Short: "Delete a Workspace Location Floor", + Long: "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nDeletes a floor, by ID.\nRequires an administrator auth token with the `spark-admin:workspace_locations_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/workspaceLocations/{locationId}/floors/{floorId}") + req.PathParam("locationId", locationId) + req.PathParam("floorId", floorId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "A unique identifier for the location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&floorId, "floor-id", "", "A unique identifier for the floor.") + cmd.MarkFlagRequired("floor-id") + workspaceLocationsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/admin/workspace_metrics.go b/cmd/admin/workspace_metrics.go new file mode 100644 index 0000000..1d06212 --- /dev/null +++ b/cmd/admin/workspace_metrics.go @@ -0,0 +1,118 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package admin + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/Cloverhound/webex-cli/internal/timeutil" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = timeutil.ParseLastISO + +var workspaceMetricsCmd = &cobra.Command{ + Use: "workspace-metrics", + Short: "WorkspaceMetrics commands", +} + +func init() { + cmd.AdminCmd.AddCommand(workspaceMetricsCmd) + + { // workspace-metrics + var workspaceId string + var metricName string + var aggregation string + var from string + var to string + var unit string + var sortBy string + var last string + cmd := &cobra.Command{ + Use: "workspace-metrics", + Short: "Workspace Metrics", + Long: "Get metric data for the specified workspace and metric name, optionally aggregated over a specified time period.\n\n* The `workspaceId` and `metricName` parameters indicate which workspace to fetch metrics for and what kind of metrics to get.\n\n* When executing an aggregated query, the result bucket start times will be truncated to the start of an hour or a day, depending on\nthe aggregation interval. However, the buckets will not contain data from outside the requested time range. For example, when\npassing `from=2020-10-21T10:34:56.000Z` and `aggregation=hourly`, the first output bucket would start at `2020-10-21T10:00:00.000Z`,\nbut the bucket would only aggregate data timestamped after `10:34:56`.\n\n* For aggregation modes `none` and `hourly`, the maximum time span is 48 hours. For aggregation mode `daily`, the maximum\ntime span is 30 days.\n\n* If the aggregation mode query parameter is set to `none`, the returned data in the response will be an array of items with the `deviceId`, `timestamp` and the raw `value`.\n\n* If the aggregation mode is `hourly` or `daily`, the returned data in the response will be an array of items with the `start` and `end` of the aggregation time bucket, and the `mean`, `max` and `min` values of the requested value. Note that zeroes and negative values are ignored. For example, this means that the `peopleCount` mean value should be interpreted as the average number of people in the room _when it is in use_.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/workspaceMetrics") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("workspaceId", workspaceId) + req.QueryParam("metricName", metricName) + req.QueryParam("aggregation", aggregation) + req.QueryParam("from", from) + req.QueryParam("to", to) + req.QueryParam("unit", unit) + req.QueryParam("sortBy", sortBy) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "ID of the workspace to get metrics for.") + cmd.Flags().StringVar(&metricName, "metric-name", "", "The type of data to extract.") + cmd.Flags().StringVar(&aggregation, "aggregation", "", "Time unit over which to aggregate measurements.") + cmd.Flags().StringVar(&from, "from", "", "List only data points after a specific date and time (ISO 8601 timestamp)") + cmd.Flags().StringVar(&to, "to", "", "List data points before a specific date and time (ISO 8601 timestamp)") + cmd.Flags().StringVar(&unit, "unit", "", "Output data unit (only a valid parameter if `metricName` is `temperature`).") + cmd.Flags().StringVar(&sortBy, "sort-by", "", "Sort results.") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + workspaceMetricsCmd.AddCommand(cmd) + } + + { // duration + var workspaceId string + var aggregation string + var measurement string + var from string + var to string + var last string + cmd := &cobra.Command{ + Use: "duration", + Short: "Workspace Duration Metrics", + Long: "Get metrics for how much time a workspace has been in the state given by the `measurement` parameter.\n\nFor example, if the measurement is `timeBooked` then the duration for which the workspace has been booked is returned. The `workspaceId` parameter indicates which workspace to fetch metrics for. If no `measurement` is given, the default value is `timeUsed`.\n\n* When executing a query, the result bucket start times will default to the start of an hour or a day, depending on\nthe aggregation interval. However, the buckets will not contain data from outside the requested time range. For example, when\npassing `from=2020-10-21T10:34:56.000Z` and `aggregation=hourly`, the first output bucket would start at `2020-10-21T10:00:00.000Z`,\nbut the bucket would only aggregate data timestamped after `10:34:56`.\n\n* For aggregation mode `hourly`, the maximum time span is 48 hours. For aggregation mode `daily`, the maximum\ntime span is 30 days.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/workspaceDurationMetrics") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("workspaceId", workspaceId) + req.QueryParam("aggregation", aggregation) + req.QueryParam("measurement", measurement) + req.QueryParam("from", from) + req.QueryParam("to", to) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "ID of the workspace to get metrics for.") + cmd.Flags().StringVar(&aggregation, "aggregation", "", "Unit of time over which to aggregate measurements.") + cmd.Flags().StringVar(&measurement, "measurement", "", "The measurement to return duration for.") + cmd.Flags().StringVar(&from, "from", "", "Include data points after a specific date and time (ISO 8601 timestamp).") + cmd.Flags().StringVar(&to, "to", "", "Include data points before a specific date and time (ISO 8601 timestamp).") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + workspaceMetricsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/auth.go b/cmd/auth.go index ff6ca8c..dd4bce5 100644 --- a/cmd/auth.go +++ b/cmd/auth.go @@ -1,14 +1,12 @@ package cmd import ( - "encoding/json" "errors" "fmt" "io" "net/http" "os" "path/filepath" - "sort" "strings" "time" @@ -28,127 +26,17 @@ var authCmd = &cobra.Command{ var authTokenCmd = &cobra.Command{ Use: "token", Short: "Print the current access token", - Long: `Print the access token for the active user, refreshing it if expired. Useful for making manual API calls with curl. - ---output json prints the token with its expiry, user and organization. --min-ttl -refreshes the token if less than that time remains, for handing it to a -long-running process. It needs a stored login.`, + Long: "Print the access token for the active user, refreshing it if expired. Useful for making manual API calls with curl.", RunE: func(cmd *cobra.Command, args []string) error { tok := config.Token() if tok == "" { return fmt.Errorf("no access token available; run: webex login") } - minTTL, _ := cmd.Flags().GetDuration("min-ttl") - asJSON := jsonOutputRequested(cmd) - if minTTL == 0 && !asJSON { - fmt.Println(tok) - return nil - } - - info := tokenInfo{Token: tok, OrgID: config.OrgIDBase64()} - if tokenFromStoredLogin(cmd) { - cfg, err := appconfig.Load() - if err != nil { - return fmt.Errorf("loading config: %w", err) - } - flagUser, envUser := requestedUser(cmd) - email := firstNonEmpty(flagUser, envUser, cfg.DefaultUser) - stored, err := auth.EnsureMinTTL(email, minTTL, cfg) - if err != nil { - return err - } - info.Token, info.Email, info.ExpiresAt = stored.AccessToken, email, &stored.ExpiresAt - } else if minTTL > 0 { - return fmt.Errorf("--min-ttl needs a stored login; this token came from --token or the environment") - } - - if !asJSON { - fmt.Println(info.Token) - return nil - } - return printJSON(info) + fmt.Println(tok) + return nil }, } -// tokenInfo is the --output json form of auth token. -type tokenInfo struct { - Token string `json:"token"` - ExpiresAt *time.Time `json:"expiresAt,omitempty"` - Email string `json:"email,omitempty"` - OrgID string `json:"orgId,omitempty"` -} - -// authUser describes a stored login. It never carries a token. -type authUser struct { - Email string `json:"email"` - Name string `json:"name,omitempty"` - OrgID string `json:"orgId,omitempty"` - OrgName string `json:"orgName,omitempty"` - Status string `json:"status"` - Default bool `json:"default"` - ReadOnly bool `json:"readOnly"` - ExpiresAt *time.Time `json:"expiresAt,omitempty"` -} - -// authUsers lists stored logins, sorted by email. -func authUsers(cfg *appconfig.Config) []authUser { - users := make([]authUser, 0, len(cfg.Users)) - for email, info := range cfg.Users { - user := authUser{ - Email: email, - Name: info.DisplayName, - OrgID: info.OrgID, - OrgName: info.OrgName, - Default: email == cfg.DefaultUser, - } - tok, err := auth.LoadToken(email) - switch { - case err != nil: - user.Status = "no token" - case !tok.IsExpired(): - user.Status = "active" - case tok.IsRefreshExpired(): - user.Status = "expired" - default: - user.Status = "refreshable" - } - if err == nil { - user.ReadOnly = tok.ReadOnly - user.ExpiresAt = &tok.ExpiresAt - } - users = append(users, user) - } - sort.Slice(users, func(i, j int) bool { return users[i].Email < users[j].Email }) - return users -} - -// jsonOutputRequested reports an explicit --output json. The flag's default is also -// json, which must not change the human-readable output of auth commands. -func jsonOutputRequested(cmd *cobra.Command) bool { - format, _ := cmd.Flags().GetString("output") - return cmd.Flags().Changed("output") && format == "json" -} - -func tokenFromStoredLogin(cmd *cobra.Command) bool { - flagToken, _ := cmd.Flags().GetString("token") - return flagToken == "" && os.Getenv("WEBEX_TOKEN") == "" && os.Getenv(auth.RefreshTokenEnv) == "" -} - -func firstNonEmpty(values ...string) string { - for _, v := range values { - if v != "" { - return v - } - } - return "" -} - -func printJSON(v any) error { - enc := json.NewEncoder(os.Stdout) - enc.SetIndent("", " ") - return enc.Encode(v) -} - var authStatusCmd = &cobra.Command{ Use: "status", Short: "Show current authentication status", @@ -160,9 +48,12 @@ var authStatusCmd = &cobra.Command{ // Status reports the login that other commands would use, so it honors // the same user selection. - flagUser, envUser := requestedUser(cmd) - email := firstNonEmpty(flagUser, envUser, cfg.DefaultUser) - + email := cfg.DefaultUser + if flagUser, envUser := requestedUser(cmd); flagUser != "" { + email = flagUser + } else if envUser != "" { + email = envUser + } envSet := false for _, env := range []string{"WEBEX_TOKEN", auth.RefreshTokenEnv} { if os.Getenv(env) == "" { @@ -348,10 +239,6 @@ var authListCmd = &cobra.Command{ return fmt.Errorf("loading config: %w", err) } - if jsonOutputRequested(cmd) { - return printJSON(authUsers(cfg)) - } - if len(cfg.Users) == 0 { fmt.Println("No authenticated users. Run: webex login") return nil @@ -360,26 +247,40 @@ var authListCmd = &cobra.Command{ fmt.Printf("%-30s %-20s %-25s %-10s %s\n", "EMAIL", "NAME", "ORG", "STATUS", "") fmt.Printf("%-30s %-20s %-25s %-10s %s\n", "-----", "----", "---", "------", "") - for _, user := range authUsers(cfg) { + for email, info := range cfg.Users { + status := "unknown" + tok, err := auth.LoadToken(email) + if err != nil { + status = "no token" + } else if tok.IsExpired() { + if tok.IsRefreshExpired() { + status = "expired" + } else { + status = "refreshable" + } + } else { + status = "active" + } + var markers []string - if user.Default { + if email == cfg.DefaultUser { markers = append(markers, "(default)") } - if user.ReadOnly { + if err == nil && tok.ReadOnly { markers = append(markers, "(read-only)") } marker := strings.Join(markers, " ") - name := user.Name + name := info.DisplayName if len(name) > 20 { name = name[:17] + "..." } - org := user.OrgName + org := info.OrgName if len(org) > 25 { org = org[:22] + "..." } - fmt.Printf("%-30s %-20s %-25s %-10s %s\n", user.Email, name, org, user.Status, marker) + fmt.Printf("%-30s %-20s %-25s %-10s %s\n", email, name, org, status, marker) } return nil @@ -563,7 +464,6 @@ var authClearFolderDefaultCmd = &cobra.Command{ } func init() { - authTokenCmd.Flags().Duration("min-ttl", 0, "Refresh the token if less than this time remains (e.g. 30m)") authCmd.AddCommand(authTokenCmd) authCmd.AddCommand(authStatusCmd) authCmd.AddCommand(authListCmd) diff --git a/cmd/auth_test.go b/cmd/auth_test.go index 18b091d..a490410 100644 --- a/cmd/auth_test.go +++ b/cmd/auth_test.go @@ -1,7 +1,6 @@ package cmd import ( - "encoding/json" "io" "os" "strings" @@ -28,57 +27,6 @@ func captureStdout(t *testing.T, fn func()) string { return string(out) } -func TestAuthUsersAreSortedAndCarryState(t *testing.T) { - dir := t.TempDir() - t.Setenv("XDG_CONFIG_HOME", dir) - t.Setenv(auth.TokenStoreEnv, auth.StoreFile) - - expires := time.Now().Add(time.Hour).UTC().Truncate(time.Second) - if err := auth.SaveToken("b@example.com", &auth.StoredToken{AccessToken: "secret-token", ExpiresAt: expires, IssuedAt: time.Now()}); err != nil { - t.Fatal(err) - } - cfg := &appconfig.Config{ - DefaultUser: "b@example.com", - Users: map[string]appconfig.UserInfo{ - "b@example.com": {DisplayName: "B", OrgID: "org-b", OrgName: "Org B"}, - "a@example.com": {DisplayName: "A", OrgID: "org-a"}, - }, - } - - users := authUsers(cfg) - if len(users) != 2 || users[0].Email != "a@example.com" || users[1].Email != "b@example.com" { - t.Fatalf("users = %+v", users) - } - if users[0].Status != "no token" || users[0].Default { - t.Fatalf("users[0] = %+v", users[0]) - } - b := users[1] - if b.Status != "active" || !b.Default || b.OrgID != "org-b" || b.OrgName != "Org B" { - t.Fatalf("users[1] = %+v", b) - } - if b.ExpiresAt == nil || !b.ExpiresAt.Equal(expires) { - t.Fatalf("expiresAt = %v", b.ExpiresAt) - } - - out, err := json.Marshal(users) - if err != nil { - t.Fatal(err) - } - if strings.Contains(string(out), "secret-token") { - t.Fatal("user list must not contain tokens") - } -} - -func TestTokenJSONOmitsUnknownExpiry(t *testing.T) { - out, err := json.Marshal(tokenInfo{Token: "t", Email: "a@example.com", OrgID: "o"}) - if err != nil { - t.Fatal(err) - } - if string(out) != `{"token":"t","email":"a@example.com","orgId":"o"}` { - t.Fatalf("json = %s", out) - } -} - func TestAuthStatusReportsEnvTokenWithoutStoredLogin(t *testing.T) { home := t.TempDir() t.Setenv("HOME", home) diff --git a/cmd/calling/announcement_playlist.go b/cmd/calling/announcement_playlist.go new file mode 100644 index 0000000..37fe054 --- /dev/null +++ b/cmd/calling/announcement_playlist.go @@ -0,0 +1,257 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package calling + +import ( + "fmt" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strings.Join + +var announcementPlaylistCmd = &cobra.Command{ + Use: "announcement-playlist", + Short: "AnnouncementPlaylist commands", +} + +func init() { + cmd.CallingCmd.AddCommand(announcementPlaylistCmd) + + { // list + var orgId string + cmd := &cobra.Command{ + Use: "list", + Short: "List Announcement Playlists", + Long: "Fetch a list of announcement playlist at an organization.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/announcements/playlists") + req.QueryParam("orgId", orgId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Get announcements playlist in this organization.") + announcementPlaylistCmd.AddCommand(cmd) + } + + { // create + var orgId string + var name string + var announcementIds []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create Announcement Playlist", + Long: "Create announcement Playlist at an organization level. A maximum of 25 announcement files can be included in a single playlist.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/announcements/playlists") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("name", name) + req.BodyStringSlice("announcementIds", announcementIds) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Create an announcement playlist in this organization.") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringSliceVar(&announcementIds, "announcement-ids", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + announcementPlaylistCmd.AddCommand(cmd) + } + + { // get + var playlistId string + var orgId string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Announcement Playlist", + Long: "Fetch details of announcement playlist by its ID at an organization level.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/announcements/playlists/{playlistId}") + req.PathParam("playlistId", playlistId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&playlistId, "playlist-id", "", "Unique identifier of an announcement playlist.") + cmd.MarkFlagRequired("playlist-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Get an announcement playlist in this organization.") + announcementPlaylistCmd.AddCommand(cmd) + } + + { // update + var playlistId string + var orgId string + var name string + var announcementIds []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Short: "Update Announcement Playlist", + Long: "Modify an existing announcement playlist at an organization level.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/announcements/playlists/{playlistId}") + req.PathParam("playlistId", playlistId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("name", name) + req.BodyStringSlice("announcementIds", announcementIds) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&playlistId, "playlist-id", "", "Unique identifier of an announcement playlist.") + cmd.MarkFlagRequired("playlist-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Modify an announcement playlist in this organization.") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringSliceVar(&announcementIds, "announcement-ids", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + announcementPlaylistCmd.AddCommand(cmd) + } + + { // delete + var playlistId string + var orgId string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete Announcement Playlist", + Long: "Delete an announcement playlist for an organization.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/announcements/playlists/{playlistId}") + req.PathParam("playlistId", playlistId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&playlistId, "playlist-id", "", "Unique identifier of an announcement playlist.") + cmd.MarkFlagRequired("playlist-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Delete an announcement playlist in this organization.") + announcementPlaylistCmd.AddCommand(cmd) + } + + { // list-locations + var playlistId string + var orgId string + cmd := &cobra.Command{ + Use: "list-locations", + Short: "List Playlist Locations", + Long: "Fetch list of locations which are assigned to the given announcement playlist\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/announcements/playlists/{playlistId}/locations") + req.PathParam("playlistId", playlistId) + req.QueryParam("orgId", orgId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&playlistId, "playlist-id", "", "Unique identifier of playlist.") + cmd.MarkFlagRequired("playlist-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Get location associated to a playlist in this organization.") + announcementPlaylistCmd.AddCommand(cmd) + } + + { // update-locations + var playlistId string + var orgId string + var locationIds []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-locations", + Short: "Update Playlist Locations", + Long: "Modify list of assigned locations or add new locations to the announcement playlist. This will assing the playlist to the location's music on hold.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/announcements/playlists/{playlistId}/locations") + req.PathParam("playlistId", playlistId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("locationIds", locationIds) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&playlistId, "playlist-id", "", "Unique identifier of an announcement playlist.") + cmd.MarkFlagRequired("playlist-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Modify an assign location for announcement playlist for organization.") + cmd.Flags().StringSliceVar(&locationIds, "location-ids", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + announcementPlaylistCmd.AddCommand(cmd) + } + +} diff --git a/cmd/calling/announcement_repository.go b/cmd/calling/announcement_repository.go new file mode 100644 index 0000000..ec5e5c7 --- /dev/null +++ b/cmd/calling/announcement_repository.go @@ -0,0 +1,340 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package calling + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var announcementRepositoryCmd = &cobra.Command{ + Use: "announcement-repository", + Short: "AnnouncementRepository commands", +} + +func init() { + cmd.CallingCmd.AddCommand(announcementRepositoryCmd) + + { // list-greetings + var orgId string + var locationId string + var max string + var start string + var order string + var fileName string + var fileType string + var mediaFileType string + var name string + cmd := &cobra.Command{ + Use: "list-greetings", + Short: "Fetch list of announcement greetings on location and organization level", + Long: "Fetch a list of binary announcement greetings at an organization as well as location level.\n\nAn admin can upload a file at an organization level. This file will be uploaded to the announcement repository.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/announcements") + req.QueryParam("orgId", orgId) + req.QueryParam("locationId", locationId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("order", order) + req.QueryParam("fileName", fileName) + req.QueryParam("fileType", fileType) + req.QueryParam("mediaFileType", mediaFileType) + req.QueryParam("name", name) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Get announcements in this organization.") + cmd.Flags().StringVar(&locationId, "location-id", "", "Return the list of enterprise or Location announcement files. Without this parameter, the Enterprise level announcements are returned.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of objects returned to this maximum count.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching objects.") + cmd.Flags().StringVar(&order, "order", "", "Sort the list according to fileName or fileSize. The default sort will be in Ascending order.") + cmd.Flags().StringVar(&fileName, "file-name", "", "Return the list of announcements with the given fileName.") + cmd.Flags().StringVar(&fileType, "file-type", "", "Return the list of announcement files for this fileType.") + cmd.Flags().StringVar(&mediaFileType, "media-file-type", "", "Return the list of announcement files for this mediaFileType.") + cmd.Flags().StringVar(&name, "name", "", "Return the list of announcement files for this announcement label.") + announcementRepositoryCmd.AddCommand(cmd) + } + + { // get-usage + var orgId string + cmd := &cobra.Command{ + Use: "get-usage", + Short: "Fetch repository usage for announcements for an organization", + Long: "Retrieves repository usage for announcements for an organization.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/announcements/usage") + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Get announcement usage in this organization.") + announcementRepositoryCmd.AddCommand(cmd) + } + + { // delete-greeting-org + var announcementId string + var orgId string + cmd := &cobra.Command{ + Use: "delete-greeting-org", + Short: "Delete an announcement greeting of the organization", + Long: "Delete an announcement greeting for an organization.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/announcements/{announcementId}") + req.PathParam("announcementId", announcementId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&announcementId, "announcement-id", "", "Unique identifier of an announcement.") + cmd.MarkFlagRequired("announcement-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Delete an announcement in this organization.") + announcementRepositoryCmd.AddCommand(cmd) + } + + { // get-binary-greeting + var announcementId string + var orgId string + cmd := &cobra.Command{ + Use: "get-binary-greeting", + Short: "Fetch details of a binary announcement greeting at the organization level", + Long: "Fetch details of a binary announcement greeting by its ID at an organization level.\n\nAn admin can upload a file at an organization level. This file will be uploaded to the announcement repository.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/announcements/{announcementId}") + req.PathParam("announcementId", announcementId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&announcementId, "announcement-id", "", "Unique identifier of an announcement.") + cmd.MarkFlagRequired("announcement-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Get an announcement in this organization.") + announcementRepositoryCmd.AddCommand(cmd) + } + + { // get-usage-location + var locationId string + var orgId string + cmd := &cobra.Command{ + Use: "get-usage-location", + Short: "Fetch repository usage for announcements in a location", + Long: "Retrieves repository usage for announcements in a location.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/announcements/usage") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Unique identifier of a location where an announcement is being created.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Get announcement usage for location in this organization.") + announcementRepositoryCmd.AddCommand(cmd) + } + + { // delete-greeting-location + var locationId string + var announcementId string + var orgId string + cmd := &cobra.Command{ + Use: "delete-greeting-location", + Short: "Delete an announcement greeting in a location", + Long: "Delete an announcement greeting in a location.\n\nThis API requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/locations/{locationId}/announcements/{announcementId}") + req.PathParam("locationId", locationId) + req.PathParam("announcementId", announcementId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Unique identifier of a location where announcement is being created.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&announcementId, "announcement-id", "", "Unique identifier of an announcement.") + cmd.MarkFlagRequired("announcement-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Delete an announcement for location in this organization.") + announcementRepositoryCmd.AddCommand(cmd) + } + + { // get-binary-greeting-2 + var locationId string + var announcementId string + var orgId string + cmd := &cobra.Command{ + Use: "get-binary-greeting-2", + Short: "Fetch details of a binary announcement greeting at location level", + Long: "Fetch details of a binary announcement greeting by its ID at a location level.\n\nAn admin can upload a file at a location level. This file will be uploaded to the announcement repository.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/announcements/{announcementId}") + req.PathParam("locationId", locationId) + req.PathParam("announcementId", announcementId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Unique identifier of a location where an announcement is being created.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&announcementId, "announcement-id", "", "Unique identifier of an announcement.") + cmd.MarkFlagRequired("announcement-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Fetch an announcement for location in this organization.") + announcementRepositoryCmd.AddCommand(cmd) + } + + { // generate-text-to-speech-prompt + var orgId string + var voice string + var text string + var languageCode string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "generate-text-to-speech-prompt", + Short: "Generate a Text-to-Speech Prompt", + Long: "Generate a text-to-speech prompt from the provided text, voice, and language.\n\nText-to-speech (TTS) efficiently generates prompts, greetings, and announcements by converting written text into synthesized audio using the specified voice. The generated audio functions like a recorded WAV file, eliminating the need for manual recording.\n\nThis API requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/textToSpeech/actions/generate/invoke") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("voice", voice) + req.BodyString("text", text) + req.BodyString("languageCode", languageCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Generate text-to-speech for this organization.") + cmd.Flags().StringVar(&voice, "voice", "", "") + cmd.Flags().StringVar(&text, "text", "", "") + cmd.Flags().StringVar(&languageCode, "language-code", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + announcementRepositoryCmd.AddCommand(cmd) + } + + { // get-text-to-speech-usage + var orgId string + cmd := &cobra.Command{ + Use: "get-text-to-speech-usage", + Short: "Get Text-to-Speech Usage", + Long: "Retrieve text-to-speech usage information, including the number of API calls made, the maximum allowed within the time window, and the timestamp indicating when the usage will reset.\n\nText-to-speech (TTS) efficiently generates prompts, greetings, and announcements by converting written text into synthesized audio using the specified voice. The generated audio functions like a recorded WAV file, eliminating the need for manual recording.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/textToSpeech/usage") + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Get text-to-speech usage for this organization.") + announcementRepositoryCmd.AddCommand(cmd) + } + + { // get-text-to-speech-generation-status + var ttsId string + var orgId string + cmd := &cobra.Command{ + Use: "get-text-to-speech-generation-status", + Short: "Get Text-to-Speech Generation Status", + Long: "Get the status of a text-to-speech generation request by its ID. If the status is SUCCESS, the response includes `promptUrl`, `kmsKeyUri`, and `fileUri` to preview or use the audio prompt.\n\nTo preview the audio prompt:\n\n1. Download the KMS key - use the Webex Node.js SDK and provide `kmsKeyUri` to download the key from KMS.\n\n2. Download the encrypted audio - The encrypted audio file content is stored in cloud and can be retrieved using `promptURL`.\n\n3. Decrypt the audio content - Use the jose library to decrypt the content downloaded from `promptUrl` using the downloaded key.\n\nText-to-speech (TTS) efficiently generates prompts, greetings, and announcements by converting written text into synthesized audio using the specified voice. The generated audio functions like a recorded WAV file, eliminating the need for manual recording.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/textToSpeech/{ttsId}") + req.PathParam("ttsId", ttsId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&ttsId, "tts-id", "", "Unique identifier of the text-to-speech generation request.") + cmd.MarkFlagRequired("tts-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Get text-to-speech status for this organization.") + announcementRepositoryCmd.AddCommand(cmd) + } + + { // list-text-to-speech-voices + var orgId string + cmd := &cobra.Command{ + Use: "list-text-to-speech-voices", + Short: "List Text-to-Speech Voices", + Long: "Fetch a list of available text-to-speech voices. Use the returned voice ID in the generation request.\n\nText-to-speech (TTS) efficiently generates prompts, greetings, and announcements by converting written text into synthesized audio using the specified voice. The generated audio functions like a recorded WAV file, eliminating the need for manual recording.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/textToSpeech/voices") + req.QueryParam("orgId", orgId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List text-to-speech voices supported for this organization.") + announcementRepositoryCmd.AddCommand(cmd) + } + +} diff --git a/cmd/calling/auto_attendant.go b/cmd/calling/auto_attendant.go new file mode 100644 index 0000000..45083cc --- /dev/null +++ b/cmd/calling/auto_attendant.go @@ -0,0 +1,657 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package calling + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var autoAttendantCmd = &cobra.Command{ + Use: "auto-attendant", + Short: "AutoAttendant commands", +} + +func init() { + cmd.CallingCmd.AddCommand(autoAttendantCmd) + + { // list + var orgId string + var locationId string + var max string + var start string + var name string + var phoneNumber string + cmd := &cobra.Command{ + Use: "list", + Short: "Read the List of Auto Attendants", + Long: "List all Auto Attendants for the organization.\n\nAuto attendants play customized prompts and provide callers with menu options for routing their calls through your system.\n\nRetrieving this list requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/autoAttendants") + req.QueryParam("orgId", orgId) + req.QueryParam("locationId", locationId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("name", name) + req.QueryParam("phoneNumber", phoneNumber) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List auto attendants for this organization.") + cmd.Flags().StringVar(&locationId, "location-id", "", "Return the list of auto attendants for this location.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of objects returned to this maximum count.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching objects.") + cmd.Flags().StringVar(&name, "name", "", "Only return auto attendants with the matching name.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Only return auto attendants with the matching phone number.") + autoAttendantCmd.AddCommand(cmd) + } + + { // get + var locationId string + var autoAttendantId string + var orgId string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Details for an Auto Attendant", + Long: "Retrieve an Auto Attendant details.\n\nAuto attendants play customized prompts and provide callers with menu options for routing their calls through your system.\n\nRetrieving an auto attendant details requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/autoAttendants/{autoAttendantId}") + req.PathParam("locationId", locationId) + req.PathParam("autoAttendantId", autoAttendantId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Retrieve an auto attendant details in this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&autoAttendantId, "auto-attendant-id", "", "Retrieve the auto attendant with the matching ID.") + cmd.MarkFlagRequired("auto-attendant-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve auto attendant details from this organization.") + autoAttendantCmd.AddCommand(cmd) + } + + { // update + var locationId string + var autoAttendantId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Short: "Update an Auto Attendant", + Long: "Update the designated Auto Attendant.\n\nAuto attendants play customized prompts and provide callers with menu options for routing their calls through your system.\n\nUpdating an auto attendant requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/locations/{locationId}/autoAttendants/{autoAttendantId}") + req.PathParam("locationId", locationId) + req.PathParam("autoAttendantId", autoAttendantId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location in which this auto attendant exists.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&autoAttendantId, "auto-attendant-id", "", "Update an auto attendant with the matching ID.") + cmd.MarkFlagRequired("auto-attendant-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Update an auto attendant from this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + autoAttendantCmd.AddCommand(cmd) + } + + { // delete + var locationId string + var autoAttendantId string + var orgId string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete an Auto Attendant", + Long: "Delete the designated Auto Attendant.\n\nAuto attendants play customized prompts and provide callers with menu options for routing their calls through your system.\n\nDeleting an auto attendant requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/locations/{locationId}/autoAttendants/{autoAttendantId}") + req.PathParam("locationId", locationId) + req.PathParam("autoAttendantId", autoAttendantId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location from which to delete an auto attendant.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&autoAttendantId, "auto-attendant-id", "", "Delete the auto attendant with the matching ID.") + cmd.MarkFlagRequired("auto-attendant-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Delete the auto attendant from this organization.") + autoAttendantCmd.AddCommand(cmd) + } + + { // create + var locationId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create an Auto Attendant", + Long: "Create new Auto Attendant for the given location.\n\nAuto attendants play customized prompts and provide callers with menu options for routing their calls through your system.\n\nCreating an auto attendant requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/locations/{locationId}/autoAttendants") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Create the auto attendant for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Create the auto attendant for this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + autoAttendantCmd.AddCommand(cmd) + } + + { // get-call-forward + var locationId string + var autoAttendantId string + var orgId string + cmd := &cobra.Command{ + Use: "get-call-forward", + Short: "Get Call Forwarding Settings for an Auto Attendant", + Long: "Retrieve Call Forwarding settings for the designated Auto Attendant including the list of call forwarding rules.\n\nThe call forwarding feature allows you to direct all incoming calls based on specific criteria that you define.\nBelow are the available options for configuring your call forwarding:\n1. Always forward calls to a designated number.\n2. Forward calls to a designated number based on certain criteria.\n3. Forward calls using different modes.\n\nRetrieving call forwarding settings for an auto attendant requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/autoAttendants/{autoAttendantId}/callForwarding") + req.PathParam("locationId", locationId) + req.PathParam("autoAttendantId", autoAttendantId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location in which this auto attendant exists.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&autoAttendantId, "auto-attendant-id", "", "Retrieve the call forwarding settings for this auto attendant.") + cmd.MarkFlagRequired("auto-attendant-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve auto attendant forwarding settings from this organization.") + autoAttendantCmd.AddCommand(cmd) + } + + { // update-call-forward + var locationId string + var autoAttendantId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-call-forward", + Short: "Update Call Forwarding Settings for an Auto Attendant", + Long: "Update Call Forwarding settings for the designated Auto Attendant.\n\nThe call forwarding feature allows you to direct all incoming calls based on specific criteria that you define.\nBelow are the available options for configuring your call forwarding:\n1. Always forward calls to a designated number.\n2. Forward calls to a designated number based on certain criteria.\n3. Forward calls using different modes.\n\nUpdating call forwarding settings for an auto attendant requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/locations/{locationId}/autoAttendants/{autoAttendantId}/callForwarding") + req.PathParam("locationId", locationId) + req.PathParam("autoAttendantId", autoAttendantId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location in which this auto attendant exists.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&autoAttendantId, "auto-attendant-id", "", "Update call forwarding settings for this auto attendant.") + cmd.MarkFlagRequired("auto-attendant-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Update auto attendant forwarding settings from this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + autoAttendantCmd.AddCommand(cmd) + } + + { // create-selective-forward-rule + var locationId string + var autoAttendantId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-selective-forward-rule", + Short: "Create a Selective Call Forwarding Rule for an Auto Attendant", + Long: "Create a Selective Call Forwarding Rule for the designated Auto Attendant.\n\nA selective call forwarding rule for an auto attendant allows calls to be forwarded or not forwarded to the designated number, based on the defined criteria.\n\nNote that the list of existing call forward rules is available in the auto attendant's call forwarding settings.\n\nCreating a selective call forwarding rule for an auto attendant requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: The Call Forwarding Rule ID will change upon modification of the Call Forwarding Rule name.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/locations/{locationId}/autoAttendants/{autoAttendantId}/callForwarding/selectiveRules") + req.PathParam("locationId", locationId) + req.PathParam("autoAttendantId", autoAttendantId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location in which the auto attendant exists.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&autoAttendantId, "auto-attendant-id", "", "Create the rule for this auto attendant.") + cmd.MarkFlagRequired("auto-attendant-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Create the auto attendant rule for this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + autoAttendantCmd.AddCommand(cmd) + } + + { // get-selective-forward-rule + var locationId string + var autoAttendantId string + var ruleId string + var orgId string + cmd := &cobra.Command{ + Use: "get-selective-forward-rule", + Short: "Get Selective Call Forwarding Rule for an Auto Attendant", + Long: `Retrieve a Selective Call Forwarding Rule's settings for the designated Auto Attendant. + +A selective call forwarding rule for an auto attendant allows calls to be forwarded or not forwarded to the designated number, based on the defined criteria. + +Note that the list of existing call forward rules is available in the auto attendant's call forwarding settings. + +Retrieving a selective call forwarding rule's settings for an auto attendant requires a full or read-only administrator or location administrator + +**NOTE**: The Call Forwarding Rule ID will change upon modification of the Call Forwarding Rule name.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/autoAttendants/{autoAttendantId}/callForwarding/selectiveRules/{ruleId}") + req.PathParam("locationId", locationId) + req.PathParam("autoAttendantId", autoAttendantId) + req.PathParam("ruleId", ruleId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location in which this auto attendant exists.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&autoAttendantId, "auto-attendant-id", "", "Retrieve settings for a rule for this auto attendant.") + cmd.MarkFlagRequired("auto-attendant-id") + cmd.Flags().StringVar(&ruleId, "rule-id", "", "Auto attendant rule you are retrieving settings for.") + cmd.MarkFlagRequired("rule-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve auto attendant rule settings for this organization.") + autoAttendantCmd.AddCommand(cmd) + } + + { // update-selective-forward-rule + var locationId string + var autoAttendantId string + var ruleId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-selective-forward-rule", + Short: "Update Selective Call Forwarding Rule for an Auto Attendant", + Long: "Update a Selective Call Forwarding Rule's settings for the designated Auto Attendant.\n\nA selective call forwarding rule for an auto attendant allows calls to be forwarded or not forwarded to the designated number, based on the defined criteria.\n\nNote that the list of existing call forward rules is available in the auto attendant's call forwarding settings.\n\nUpdating a selective call forwarding rule's settings for an auto attendant requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: The Call Forwarding Rule ID will change upon modification of the Call Forwarding Rule name.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/locations/{locationId}/autoAttendants/{autoAttendantId}/callForwarding/selectiveRules/{ruleId}") + req.PathParam("locationId", locationId) + req.PathParam("autoAttendantId", autoAttendantId) + req.PathParam("ruleId", ruleId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location in which this auto attendant exists.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&autoAttendantId, "auto-attendant-id", "", "Update settings for a rule for this auto attendant.") + cmd.MarkFlagRequired("auto-attendant-id") + cmd.Flags().StringVar(&ruleId, "rule-id", "", "Auto attendant rule you are updating settings for.") + cmd.MarkFlagRequired("rule-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Update auto attendant rule settings for this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + autoAttendantCmd.AddCommand(cmd) + } + + { // delete-selective-forward-rule + var locationId string + var autoAttendantId string + var ruleId string + var orgId string + cmd := &cobra.Command{ + Use: "delete-selective-forward-rule", + Short: "Delete a Selective Call Forwarding Rule for an Auto Attendant", + Long: "Delete a Selective Call Forwarding Rule for the designated Auto Attendant.\n\nA selective call forwarding rule for an auto attendant allows calls to be forwarded or not forwarded to the designated number, based on the defined criteria.\n\nNote that the list of existing call forward rules is available in the auto attendant's call forwarding settings.\n\nDeleting a selective call forwarding rule for an auto attendant requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: The Call Forwarding Rule ID will change upon modification of the Call Forwarding Rule name.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/locations/{locationId}/autoAttendants/{autoAttendantId}/callForwarding/selectiveRules/{ruleId}") + req.PathParam("locationId", locationId) + req.PathParam("autoAttendantId", autoAttendantId) + req.PathParam("ruleId", ruleId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location in which this auto attendant exists.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&autoAttendantId, "auto-attendant-id", "", "Delete the rule for this auto attendant.") + cmd.MarkFlagRequired("auto-attendant-id") + cmd.Flags().StringVar(&ruleId, "rule-id", "", "Auto attendant rule you are deleting.") + cmd.MarkFlagRequired("rule-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Delete auto attendant rule from this organization.") + autoAttendantCmd.AddCommand(cmd) + } + + { // get-primary-numbers + var locationId string + var orgId string + var max string + var start string + var phoneNumber string + cmd := &cobra.Command{ + Use: "get-primary-numbers", + Short: "Get Auto Attendant Primary Available Phone Numbers", + Long: "List the service and standard PSTN numbers that are available to be assigned as the auto attendant's primary phone number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/autoAttendants/availableNumbers") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("phoneNumber", phoneNumber) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Return the list of phone numbers for this location within the given organization. The maximum length is 36.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "List numbers for this organization.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of phone numbers returned to this maximum count. The default is 2000.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching phone numbers. The default is 0.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array.") + autoAttendantCmd.AddCommand(cmd) + } + + { // get-alternate-numbers + var locationId string + var orgId string + var max string + var start string + var phoneNumber string + cmd := &cobra.Command{ + Use: "get-alternate-numbers", + Short: "Get Auto Attendant Alternate Available Phone Numbers", + Long: "List the service and standard PSTN numbers that are available to be assigned as the auto attendant's alternate number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/autoAttendants/alternate/availableNumbers") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("phoneNumber", phoneNumber) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Return the list of phone numbers for this location within the given organization. The maximum length is 36.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "List numbers for this organization.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of phone numbers returned to this maximum count. The default is 2000.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching phone numbers. The default is 0.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array.") + autoAttendantCmd.AddCommand(cmd) + } + + { // get-forward-available-numbers + var locationId string + var orgId string + var max string + var start string + var phoneNumber string + var ownerName string + var extension string + cmd := &cobra.Command{ + Use: "get-forward-available-numbers", + Short: "Get Auto Attendant Call Forward Available Phone Numbers", + Long: "List the service and standard PSTN numbers that are available to be assigned as the auto attendant's call forward number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are assigned to an owning entity.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/autoAttendants/callForwarding/availableNumbers") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("ownerName", ownerName) + req.QueryParam("extension", extension) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Return the list of phone numbers for this location within the given organization. The maximum length is 36.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "List numbers for this organization.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of phone numbers returned to this maximum count. The default is 2000.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching phone numbers. The default is 0.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array.") + cmd.Flags().StringVar(&ownerName, "owner-name", "", "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255.") + cmd.Flags().StringVar(&extension, "extension", "", "Returns the list of PSTN phone numbers with the given `extension`.") + autoAttendantCmd.AddCommand(cmd) + } + + { // switch-mode-call-forward + var locationId string + var autoAttendantId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "switch-mode-call-forward", + Short: "Switch Mode for Call Forwarding Settings for an Auto Attendant", + Long: "Switches the current operating mode of the `Auto Attendant` to the mode as per normal operations.\n\nOperating modes allow call forwarding to be configured based on predefined schedules, enabling different routing behaviors during business hours, after hours, or holidays.\n\nSwitching operating mode for an `auto attendant` requires a full, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/locations/{locationId}/autoAttendants/{autoAttendantId}/callForwarding/actions/switchMode/invoke") + req.PathParam("locationId", locationId) + req.PathParam("autoAttendantId", autoAttendantId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "`Location` in which this `auto attendant` exists.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&autoAttendantId, "auto-attendant-id", "", "Switch operating mode to normal operations for this `auto attendant`.") + cmd.MarkFlagRequired("auto-attendant-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Switch operating mode as per normal operations for the `auto attendant` from this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + autoAttendantCmd.AddCommand(cmd) + } + + { // delete-announcement-file + var locationId string + var autoAttendantId string + var fileName string + var orgId string + cmd := &cobra.Command{ + Use: "delete-announcement-file", + Short: "Delete a Auto Attendant Announcement File", + Long: "Delete an announcement file for the designated auto attendant.\n\nAuto Attendant announcement files contain messages and music that callers hear while waiting in the queue. A auto attendant can be configured to play whatever subset of these announcement files is desired.\n\nDeleting an announcement file for a auto attendant requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/locations/{locationId}/autoAttendants/{autoAttendantId}/announcements/{fileName}") + req.PathParam("locationId", locationId) + req.PathParam("autoAttendantId", autoAttendantId) + req.PathParam("fileName", fileName) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Delete an announcement for a auto attendant in this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&autoAttendantId, "auto-attendant-id", "", "Delete an announcement for the auto attendant with this identifier.") + cmd.MarkFlagRequired("auto-attendant-id") + cmd.Flags().StringVar(&fileName, "file-name", "", "") + cmd.MarkFlagRequired("file-name") + cmd.Flags().StringVar(&orgId, "org-id", "", "Delete auto attendant announcement from this organization.") + autoAttendantCmd.AddCommand(cmd) + } + + { // list-announcement-files + var locationId string + var autoAttendantId string + var orgId string + cmd := &cobra.Command{ + Use: "list-announcement-files", + Short: "Read the List of Auto Attendant Announcement Files", + Long: "List file info for all auto attendant announcement files associated with this auto attendant.\n\nAuto attendant announcement files contain messages and music that callers hear while waiting in the queue. A auto attendant can be configured to play whatever subset of these announcement files is desired.\n\nRetrieving this list of files requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.\n\nNote that uploading of announcement files via API is not currently supported, but is available via Webex Control Hub.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/autoAttendants/{autoAttendantId}/announcements") + req.PathParam("locationId", locationId) + req.PathParam("autoAttendantId", autoAttendantId) + req.QueryParam("orgId", orgId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location in which this auto attendant exists.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&autoAttendantId, "auto-attendant-id", "", "Retrieve announcement files for the auto attendant with this identifier.") + cmd.MarkFlagRequired("auto-attendant-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve announcement files for a auto attendant from this organization.") + autoAttendantCmd.AddCommand(cmd) + } + +} diff --git a/cmd/calling/call_controls.go b/cmd/calling/call_controls.go new file mode 100644 index 0000000..2c1d650 --- /dev/null +++ b/cmd/calling/call_controls.go @@ -0,0 +1,1080 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package calling + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var callControlsCmd = &cobra.Command{ + Use: "call-controls", + Short: "CallControls commands", +} + +func init() { + cmd.CallingCmd.AddCommand(callControlsCmd) + + { // dial + var destination string + var endpointId string + var singleNumberReachPhoneNumber string + var lineOwnerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "dial", + Short: "Dial", + Long: `Initiate an outbound call to a specified destination. This is also commonly referred to as Click to Call or Click to Dial. Alerts occur on all the devices belonging to a user unless an optional endpointId is specified in which case only the device or application identified by the endpointId is alerted. When a user answers an alerting device, an outbound call is placed from that device to the destination.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/calls/dial") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("destination", destination) + req.BodyString("endpointId", endpointId) + req.BodyString("singleNumberReachPhoneNumber", singleNumberReachPhoneNumber) + req.BodyString("lineOwnerId", lineOwnerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&destination, "destination", "", "") + cmd.Flags().StringVar(&endpointId, "endpoint-id", "", "") + cmd.Flags().StringVar(&singleNumberReachPhoneNumber, "single-number-reach-phone-number", "", "") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callControlsCmd.AddCommand(cmd) + } + + { // answer + var callId string + var endpointId string + var lineOwnerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "answer", + Short: "Answer", + Long: `Answer an incoming call. When no endpointId is specified, the call is answered on the user's primary device. When an endpointId is specified, the call is answered on the device or application identified by the endpointId. The answer API is rejected if the device is not alerting for the call or the device does not support answer via API.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/calls/answer") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callId", callId) + req.BodyString("endpointId", endpointId) + req.BodyString("lineOwnerId", lineOwnerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callId, "call-id", "", "") + cmd.Flags().StringVar(&endpointId, "endpoint-id", "", "") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callControlsCmd.AddCommand(cmd) + } + + { // reject + var callId string + var action string + var lineOwnerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "reject", + Short: "Reject", + Long: `Reject an unanswered incoming call.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/calls/reject") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callId", callId) + req.BodyString("action", action) + req.BodyString("lineOwnerId", lineOwnerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callId, "call-id", "", "") + cmd.Flags().StringVar(&action, "action", "", "") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callControlsCmd.AddCommand(cmd) + } + + { // hangup + var callId string + var lineOwnerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "hangup", + Short: "Hangup", + Long: `Hangup a call. If used on an unanswered incoming call, the call is rejected and sent to busy.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/calls/hangup") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callId", callId) + req.BodyString("lineOwnerId", lineOwnerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callId, "call-id", "", "") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callControlsCmd.AddCommand(cmd) + } + + { // hold + var callId string + var lineOwnerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "hold", + Short: "Hold", + Long: `Hold a connected call.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/calls/hold") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callId", callId) + req.BodyString("lineOwnerId", lineOwnerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callId, "call-id", "", "") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callControlsCmd.AddCommand(cmd) + } + + { // resume + var callId string + var lineOwnerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "resume", + Short: "Resume", + Long: `Resume a held call.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/calls/resume") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callId", callId) + req.BodyString("lineOwnerId", lineOwnerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callId, "call-id", "", "") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callControlsCmd.AddCommand(cmd) + } + + { // mute + var callId string + var lineOwnerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "mute", + Short: "Mute", + Long: `Mute a call. This API can only be used for a call that reports itself as mute capable via the muteCapable field in the call details.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/calls/mute") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callId", callId) + req.BodyString("lineOwnerId", lineOwnerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callId, "call-id", "", "") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callControlsCmd.AddCommand(cmd) + } + + { // unmute + var callId string + var lineOwnerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "unmute", + Short: "Unmute", + Long: `Unmute a call. This API can only be used for a call that reports itself as mute capable via the muteCapable field in the call details.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/calls/unmute") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callId", callId) + req.BodyString("lineOwnerId", lineOwnerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callId, "call-id", "", "") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callControlsCmd.AddCommand(cmd) + } + + { // divert + var callId string + var destination string + var toVoicemail bool + var lineOwnerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "divert", + Short: "Divert", + Long: `Divert a call to a destination or a user's voicemail. This is also commonly referred to as a Blind Transfer.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/calls/divert") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callId", callId) + req.BodyString("destination", destination) + req.BodyBool("toVoicemail", toVoicemail, cmd.Flags().Changed("to-voicemail")) + req.BodyString("lineOwnerId", lineOwnerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callId, "call-id", "", "") + cmd.Flags().StringVar(&destination, "destination", "", "") + cmd.Flags().BoolVar(&toVoicemail, "to-voicemail", false, "") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callControlsCmd.AddCommand(cmd) + } + + { // transfer + var callId1 string + var callId2 string + var destination string + var lineOwnerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "transfer", + Short: "Transfer", + Long: "Transfer two calls together.\n\nUnanswered incoming calls cannot be transferred but can be diverted using the divert API.\n\nIf the user has only two calls and wants to transfer them together, the `callId1` and `callId2` parameters are optional and when not provided the calls are automatically selected and transferred.\n\nIf the user has more than two calls and wants to transfer two of them together, the `callId1` and `callId2` parameters are mandatory to specify which calls are being transferred. Those are also commonly referred to as Attended Transfer, Consultative Transfer, or Supervised Transfer and will return a `204` response.\n\nIf the user wants to transfer one call to a new destination but only when the destination responds, the `callId1` and destination parameters are mandatory to specify the call being transferred and the destination.\n\nThis is referred to as a Mute Transfer and is similar to the divert API with the difference of waiting for the destination to respond prior to transferring the call. If the destination does not respond, the call is not transferred. This will return a `201` response.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/calls/transfer") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callId1", callId1) + req.BodyString("callId2", callId2) + req.BodyString("destination", destination) + req.BodyString("lineOwnerId", lineOwnerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callId1, "call-id1", "", "") + cmd.Flags().StringVar(&callId2, "call-id2", "", "") + cmd.Flags().StringVar(&destination, "destination", "", "") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callControlsCmd.AddCommand(cmd) + } + + { // park + var callId string + var destination string + var isGroupPark bool + var lineOwnerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "park", + Short: "Park", + Long: `Park a connected call. The number field in the response can be used as the destination for the retrieve command to retrieve the parked call.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/calls/park") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callId", callId) + req.BodyString("destination", destination) + req.BodyBool("isGroupPark", isGroupPark, cmd.Flags().Changed("is-group-park")) + req.BodyString("lineOwnerId", lineOwnerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callId, "call-id", "", "") + cmd.Flags().StringVar(&destination, "destination", "", "") + cmd.Flags().BoolVar(&isGroupPark, "is-group-park", false, "") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callControlsCmd.AddCommand(cmd) + } + + { // get + var destination string + var endpointId string + var singleNumberReachPhoneNumber string + var lineOwnerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "get", + Short: "Retrieve", + Long: `Retrieve a parked call. A new call is initiated to perform the retrieval in a similar manner to the dial command. The number field from the park command response can be used as the destination for the retrieve command.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/calls/retrieve") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("destination", destination) + req.BodyString("endpointId", endpointId) + req.BodyString("singleNumberReachPhoneNumber", singleNumberReachPhoneNumber) + req.BodyString("lineOwnerId", lineOwnerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&destination, "destination", "", "") + cmd.Flags().StringVar(&endpointId, "endpoint-id", "", "") + cmd.Flags().StringVar(&singleNumberReachPhoneNumber, "single-number-reach-phone-number", "", "") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callControlsCmd.AddCommand(cmd) + } + + { // start-recording + var callId string + var lineOwnerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "start-recording", + Short: "Start Recording", + Long: `Start recording a call. Use of this API is only valid when the user's call recording mode is set to "On Demand".`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/calls/startRecording") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callId", callId) + req.BodyString("lineOwnerId", lineOwnerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callId, "call-id", "", "") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callControlsCmd.AddCommand(cmd) + } + + { // stop-recording + var callId string + var lineOwnerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "stop-recording", + Short: "Stop Recording", + Long: `Stop recording a call. Use of this API is only valid when a call is being recorded and the user's call recording mode is set to "On Demand".`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/calls/stopRecording") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callId", callId) + req.BodyString("lineOwnerId", lineOwnerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callId, "call-id", "", "") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callControlsCmd.AddCommand(cmd) + } + + { // pause-recording + var callId string + var lineOwnerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "pause-recording", + Short: "Pause Recording", + Long: `Pause recording on a call. Use of this API is only valid when a call is being recorded and the user's call recording mode is set to "On Demand" or "Always with Pause/Resume".`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/calls/pauseRecording") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callId", callId) + req.BodyString("lineOwnerId", lineOwnerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callId, "call-id", "", "") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callControlsCmd.AddCommand(cmd) + } + + { // resume-recording + var callId string + var lineOwnerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "resume-recording", + Short: "Resume Recording", + Long: `Resume recording a call. Use of this API is only valid when a call's recording is paused and the user's call recording mode is set to "On Demand" or "Always with Pause/Resume".`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/calls/resumeRecording") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callId", callId) + req.BodyString("lineOwnerId", lineOwnerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callId, "call-id", "", "") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callControlsCmd.AddCommand(cmd) + } + + { // transmit-dtmf + var callId string + var dtmf string + var lineOwnerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "transmit-dtmf", + Short: "Transmit DTMF", + Long: `Transmit DTMF digits to a call.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/calls/transmitDtmf") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callId", callId) + req.BodyString("dtmf", dtmf) + req.BodyString("lineOwnerId", lineOwnerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callId, "call-id", "", "") + cmd.Flags().StringVar(&dtmf, "dtmf", "", "") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callControlsCmd.AddCommand(cmd) + } + + { // push + var callId string + var lineOwnerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "push", + Short: "Push", + Long: `Pushes a call from the assistant to the executive the call is associated with. Use of this API is only valid when the assistant's call is associated with an executive.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/calls/push") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callId", callId) + req.BodyString("lineOwnerId", lineOwnerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callId, "call-id", "", "") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callControlsCmd.AddCommand(cmd) + } + + { // pickup + var target string + var endpointId string + var singleNumberReachPhoneNumber string + var lineOwnerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "pickup", + Short: "Pickup", + Long: `Picks up an incoming call to another user. A new call is initiated to perform the pickup in a similar manner to the dial command. When target is not present, the API pickups up a call from the user's call pickup group. When target is present, the API pickups an incoming call from the specified target user.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/calls/pickup") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("target", target) + req.BodyString("endpointId", endpointId) + req.BodyString("singleNumberReachPhoneNumber", singleNumberReachPhoneNumber) + req.BodyString("lineOwnerId", lineOwnerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&target, "target", "", "") + cmd.Flags().StringVar(&endpointId, "endpoint-id", "", "") + cmd.Flags().StringVar(&singleNumberReachPhoneNumber, "single-number-reach-phone-number", "", "") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callControlsCmd.AddCommand(cmd) + } + + { // barge + var target string + var endpointId string + var singleNumberReachPhoneNumber string + var lineOwnerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "barge", + Short: "Barge In", + Long: `Barge-in on another user's answered call. A new call is initiated to perform the barge-in in a similar manner to the dial command.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/calls/bargeIn") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("target", target) + req.BodyString("endpointId", endpointId) + req.BodyString("singleNumberReachPhoneNumber", singleNumberReachPhoneNumber) + req.BodyString("lineOwnerId", lineOwnerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&target, "target", "", "") + cmd.Flags().StringVar(&endpointId, "endpoint-id", "", "") + cmd.Flags().StringVar(&singleNumberReachPhoneNumber, "single-number-reach-phone-number", "", "") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callControlsCmd.AddCommand(cmd) + } + + { // list + var lineOwnerId string + cmd := &cobra.Command{ + Use: "list", + Short: "List Calls", + Long: `Get the list of details for all active calls associated with the user.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/calls") + req.QueryParam("lineOwnerId", lineOwnerId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "The ID of a user, workspace, or virtual line for which there is a secondary line on a device owned by the user invoking the API.") + callControlsCmd.AddCommand(cmd) + } + + { // get-2 + var callId string + var lineOwnerId string + cmd := &cobra.Command{ + Use: "get-2", + Short: "Get Call Details", + Long: `Get the details of the specified active call for the user.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/calls/{callId}") + req.PathParam("callId", callId) + req.QueryParam("lineOwnerId", lineOwnerId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callId, "call-id", "", "The call identifier of the call.") + cmd.MarkFlagRequired("call-id") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "The ID of a user, workspace, or virtual line for which there is a secondary line on a device owned by the user invoking the API.") + callControlsCmd.AddCommand(cmd) + } + + { // list-history + var typeVal string + cmd := &cobra.Command{ + Use: "list-history", + Short: "List Call History", + Long: "Get the list of call history records for the user. A maximum of 20 call history records per type (`placed`, `missed`, `received`) are returned.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/calls/history") + req.QueryParam("type", typeVal) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&typeVal, "type", "", "The type of call history records to retrieve. If not specified, then all call history records are retrieved.") + callControlsCmd.AddCommand(cmd) + } + + { // dial-member-id + var memberId string + var orgId string + var destination string + var endpointId string + var singleNumberReachPhoneNumber string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "dial-member-id", + Short: "Dial by Member ID", + Long: `Initiate an outbound call to a specified destination. This is also commonly referred to as Click to Call or Click to Dial. Alerts occur on all the devices belonging to a user unless an optional endpointId is specified in which case only the device or application identified by the endpointId is alerted. When a user answers an alerting device, an outbound call is placed from that device to the destination.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/calls/members/{memberId}/dial") + req.PathParam("memberId", memberId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("destination", destination) + req.BodyString("endpointId", endpointId) + req.BodyString("singleNumberReachPhoneNumber", singleNumberReachPhoneNumber) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&memberId, "member-id", "", "Unique identifier for the member. Member ID can be one of the following: person, workspace, or virtual line") + cmd.MarkFlagRequired("member-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Id of the organization to which the member belongs. If not provided, the orgId of the Service App is used. If provided, the organization must be the same as or managed by the Service App's organization.") + cmd.Flags().StringVar(&destination, "destination", "", "") + cmd.Flags().StringVar(&endpointId, "endpoint-id", "", "") + cmd.Flags().StringVar(&singleNumberReachPhoneNumber, "single-number-reach-phone-number", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callControlsCmd.AddCommand(cmd) + } + + { // answer-member-id + var memberId string + var orgId string + var callId string + var endpointId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "answer-member-id", + Short: "Answer by Member ID", + Long: `Answer an incoming call. When no endpointId is specified, the call is answered on the user's primary device. When an endpointId is specified, the call is answered on the device or application identified by the endpointId. The answer API is rejected if the device is not alerting for the call or the device does not support answer via API.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/calls/members/{memberId}/answer") + req.PathParam("memberId", memberId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callId", callId) + req.BodyString("endpointId", endpointId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&memberId, "member-id", "", "Unique identifier for the member. Member ID can be one of the following: person, workspace, or virtual line") + cmd.MarkFlagRequired("member-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Id of the organization to which the member belongs. If not provided, the orgId of the Service App is used. If provided, the organization must be the same as or managed by the Service App's organization.") + cmd.Flags().StringVar(&callId, "call-id", "", "") + cmd.Flags().StringVar(&endpointId, "endpoint-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callControlsCmd.AddCommand(cmd) + } + + { // hangup-member-id + var memberId string + var orgId string + var callId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "hangup-member-id", + Short: "Hangup by Member ID", + Long: `Hangup a call. If used on an unanswered incoming call, the call is rejected and sent to busy.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/calls/members/{memberId}/hangup") + req.PathParam("memberId", memberId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callId", callId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&memberId, "member-id", "", "Unique identifier for the member. Member ID can be one of the following: person, workspace, or virtual line") + cmd.MarkFlagRequired("member-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Id of the organization to which the member belongs. If not provided, the orgId of the Service App is used. If provided, the organization must be the same as or managed by the Service App's organization.") + cmd.Flags().StringVar(&callId, "call-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callControlsCmd.AddCommand(cmd) + } + + { // list-member-id + var memberId string + var orgId string + cmd := &cobra.Command{ + Use: "list-member-id", + Short: "List Calls by Member ID", + Long: `Get the list of details for all active calls associated with the member.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/calls/members/{memberId}/calls") + req.PathParam("memberId", memberId) + req.QueryParam("orgId", orgId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&memberId, "member-id", "", "Unique identifier for the member. Member ID can be one of the following: person, workspace, or virtual line") + cmd.MarkFlagRequired("member-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Id of the organization to which the member belongs. If not provided, the orgId of the Service App is used. If provided, the organization must be the same as or managed by the Service App's organization.") + callControlsCmd.AddCommand(cmd) + } + + { // get-member-id + var memberId string + var callId string + var orgId string + cmd := &cobra.Command{ + Use: "get-member-id", + Short: "Get Call Details by Member ID", + Long: `Get the details of the specified active call for the member.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/calls/members/{memberId}/calls/{callId}") + req.PathParam("memberId", memberId) + req.PathParam("callId", callId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&memberId, "member-id", "", "Unique identifier for the member. Member ID can be one of the following: person, workspace, or virtual line") + cmd.MarkFlagRequired("member-id") + cmd.Flags().StringVar(&callId, "call-id", "", "The call identifier of the call.") + cmd.MarkFlagRequired("call-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Id of the organization to which the member belongs. If not provided, the orgId of the Service App is used. If provided, the organization must be the same as or managed by the Service App's organization.") + callControlsCmd.AddCommand(cmd) + } + + { // pull + var endpointId string + var lineOwnerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "pull", + Short: "Pull", + Long: `Pull a call from one device to another. A temporary new call is initiated to perform the call pull in a similar manner to the dial command. When a user answers an alerting device, the device is connected to the pulled call and the new call created for the call pull is released.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/calls/pull") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("endpointId", endpointId) + req.BodyString("lineOwnerId", lineOwnerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&endpointId, "endpoint-id", "", "") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callControlsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/calling/call_controls_for_me.go b/cmd/calling/call_controls_for_me.go new file mode 100644 index 0000000..d8c4633 --- /dev/null +++ b/cmd/calling/call_controls_for_me.go @@ -0,0 +1,194 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package calling + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var callControlsForMeCmd = &cobra.Command{ + Use: "call-controls-for-me", + Short: "CallControlsForMe commands", +} + +func init() { + cmd.CallingCmd.AddCommand(callControlsForMeCmd) + + { // dial + var destination string + var endpointId string + var singleNumberReachPhoneNumber string + var lineOwnerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "dial", + Short: "Dial", + Long: `Initiate an outbound call to a specified destination. This is also commonly referred to as Click to Call or Click to Dial. Alerts occur on all the devices belonging to a user unless an optional endpointId is specified in which case only the device or application identified by the endpointId is alerted. When a user answers an alerting device, an outbound call is placed from that device to the destination.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/calls/members/me/dial") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("destination", destination) + req.BodyString("endpointId", endpointId) + req.BodyString("singleNumberReachPhoneNumber", singleNumberReachPhoneNumber) + req.BodyString("lineOwnerId", lineOwnerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&destination, "destination", "", "") + cmd.Flags().StringVar(&endpointId, "endpoint-id", "", "") + cmd.Flags().StringVar(&singleNumberReachPhoneNumber, "single-number-reach-phone-number", "", "") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callControlsForMeCmd.AddCommand(cmd) + } + + { // answer + var callId string + var endpointId string + var lineOwnerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "answer", + Short: "Answer", + Long: `Answer an incoming call. When no endpointId is specified, the call is answered on the user's primary device. When an endpointId is specified, the call is answered on the device or application identified by the endpointId. The answer API is rejected if the device is not alerting for the call or the device does not support answer via API.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/calls/members/me/answer") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callId", callId) + req.BodyString("endpointId", endpointId) + req.BodyString("lineOwnerId", lineOwnerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callId, "call-id", "", "") + cmd.Flags().StringVar(&endpointId, "endpoint-id", "", "") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callControlsForMeCmd.AddCommand(cmd) + } + + { // hangup + var callId string + var lineOwnerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "hangup", + Short: "Hangup", + Long: `Hangup a call. If used on an unanswered incoming call, the call is rejected and sent to busy.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/calls/members/me/hangup") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callId", callId) + req.BodyString("lineOwnerId", lineOwnerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callId, "call-id", "", "") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callControlsForMeCmd.AddCommand(cmd) + } + + { // list + var lineOwnerId string + cmd := &cobra.Command{ + Use: "list", + Short: "List Calls", + Long: `Get the list of details for all active calls associated with the user.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/calls/members/me/calls") + req.QueryParam("lineOwnerId", lineOwnerId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "The ID of a user, workspace, or virtual line for which there is a secondary line on a device owned by the user invoking the API.") + callControlsForMeCmd.AddCommand(cmd) + } + + { // get + var callId string + var lineOwnerId string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Call Details", + Long: `Get the details of the specified active call for the user.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/calls/members/me/calls/{callId}") + req.PathParam("callId", callId) + req.QueryParam("lineOwnerId", lineOwnerId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callId, "call-id", "", "The call identifier of the call.") + cmd.MarkFlagRequired("call-id") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "The ID of a user, workspace, or virtual line for which there is a secondary line on a device owned by the user invoking the API.") + callControlsForMeCmd.AddCommand(cmd) + } + +} diff --git a/cmd/calling/call_park.go b/cmd/calling/call_park.go new file mode 100644 index 0000000..4f2d720 --- /dev/null +++ b/cmd/calling/call_park.go @@ -0,0 +1,546 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package calling + +import ( + "fmt" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strings.Join + +var callParkCmd = &cobra.Command{ + Use: "call-park", + Short: "CallPark commands", +} + +func init() { + cmd.CallingCmd.AddCommand(callParkCmd) + + { // list + var locationId string + var orgId string + var max string + var start string + var order string + var name string + cmd := &cobra.Command{ + Use: "list", + Short: "Read the List of Call Parks", + Long: "List all Call Parks for the organization.\n\nCall Park allows call recipients to place a call on hold so that it can be retrieved from another device.\n\nRetrieving this list requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.\n\n**NOTE**: The Call Park ID will change upon modification of the Call Park name.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/callParks") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("order", order) + req.QueryParam("name", name) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Return the list of call parks for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "List call parks for this organization.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of call parks returned to this maximum count. Default is 2000.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching call parks. Default is 0.") + cmd.Flags().StringVar(&order, "order", "", "Sort the list of call parks by name, either ASC or DSC. Default is ASC.") + cmd.Flags().StringVar(&name, "name", "", "Return the list of call parks that contains the given name. The maximum length is 80.") + callParkCmd.AddCommand(cmd) + } + + { // create + var locationId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a Call Park", + Long: "Create new Call Parks for the given location.\n\nCall Park allows call recipients to place a call on hold so that it can be retrieved from another device.\n\nCreating a call park requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: The Call Park ID will change upon modification of the Call Park name.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/locations/{locationId}/callParks") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Create the call park for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Create the call park for this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callParkCmd.AddCommand(cmd) + } + + { // delete + var locationId string + var callParkId string + var orgId string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete a Call Park", + Long: "Delete the designated Call Park.\n\nCall Park allows call recipients to place a call on hold so that it can be retrieved from another device.\n\nDeleting a call park requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: The Call Park ID will change upon modification of the Call Park name.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/locations/{locationId}/callParks/{callParkId}") + req.PathParam("locationId", locationId) + req.PathParam("callParkId", callParkId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location from which to delete a call park.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&callParkId, "call-park-id", "", "Delete the call park with the matching ID.") + cmd.MarkFlagRequired("call-park-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Delete the call park from this organization.") + callParkCmd.AddCommand(cmd) + } + + { // get + var locationId string + var callParkId string + var orgId string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Details for a Call Park", + Long: "Retrieve Call Park details.\n\nCall Park allows call recipients to place a call on hold so that it can be retrieved from another device.\n\nRetrieving call park details requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.\n\n**NOTE**: The Call Park ID will change upon modification of the Call Park name.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/callParks/{callParkId}") + req.PathParam("locationId", locationId) + req.PathParam("callParkId", callParkId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Retrieve settings for a call park in this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&callParkId, "call-park-id", "", "Retrieve settings for a call park with the matching ID.") + cmd.MarkFlagRequired("call-park-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve call park settings from this organization.") + callParkCmd.AddCommand(cmd) + } + + { // update + var locationId string + var callParkId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Short: "Update a Call Park", + Long: "Update the designated Call Park.\n\nCall Park allows call recipients to place a call on hold so that it can be retrieved from another device.\n\nUpdating a call park requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: The Call Park ID will change upon modification of the Call Park name.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/locations/{locationId}/callParks/{callParkId}") + req.PathParam("locationId", locationId) + req.PathParam("callParkId", callParkId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location in which this call park exists.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&callParkId, "call-park-id", "", "Update settings for a call park with the matching ID.") + cmd.MarkFlagRequired("call-park-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Update call park settings from this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callParkCmd.AddCommand(cmd) + } + + { // get-available-agents + var locationId string + var orgId string + var callParkName string + var max string + var start string + var name string + var phoneNumber string + var order string + cmd := &cobra.Command{ + Use: "get-available-agents", + Short: "Get available agents from Call Parks", + Long: "Retrieve available agents from call parks for a given location.\n\nCall Park allows call recipients to place a call on hold so that it can be retrieved from another device.\n\nRetrieving available agents from call parks requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/callParks/availableUsers") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + req.QueryParam("callParkName", callParkName) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("name", name) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("order", order) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Return the available agents for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Return the available agents for this organization.") + cmd.Flags().StringVar(&callParkName, "call-park-name", "", "Only return available agents from call parks with the matching name.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of available agents returned to this maximum count.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching available agents.") + cmd.Flags().StringVar(&name, "name", "", "Only return available agents with the matching name.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Only return available agents with the matching primary number.") + cmd.Flags().StringVar(&order, "order", "", "Order the available agents according to the designated fields. Up to three vertical bar (|) separated sort order fields may be specified. Available sort fields: fname, lname, number and extension. The maximum supported sort order value is 3.") + callParkCmd.AddCommand(cmd) + } + + { // get-available-recall-hunt-groups + var locationId string + var orgId string + var max string + var start string + var name string + var order string + cmd := &cobra.Command{ + Use: "get-available-recall-hunt-groups", + Short: "Get available recall hunt groups from Call Parks", + Long: "Retrieve available recall hunt groups from call parks for a given location.\n\nCall Park allows call recipients to place a call on hold so that it can be retrieved from another device.\n\nRetrieving available recall hunt groups from call parks requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/callParks/availableRecallHuntGroups") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("name", name) + req.QueryParam("order", order) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Return the available recall hunt groups for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Return the available recall hunt groups for this organization.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of available recall hunt groups returned to this maximum count.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching available recall hunt groups.") + cmd.Flags().StringVar(&name, "name", "", "Only return available recall hunt groups with the matching name.") + cmd.Flags().StringVar(&order, "order", "", "Order the available recall hunt groups according to the designated fields. Available sort fields: lname.") + callParkCmd.AddCommand(cmd) + } + + { // get-2 + var locationId string + var orgId string + cmd := &cobra.Command{ + Use: "get-2", + Short: "Get Call Park Settings", + Long: "Retrieve Call Park Settings from call parks for a given location.\n\nCall Park allows call recipients to place a call on hold so that it can be retrieved from another device.\n\nRetrieving settings from call parks requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/callParks/settings") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Return the call park settings for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Return the call park settings for this organization.") + callParkCmd.AddCommand(cmd) + } + + { // update-2 + var locationId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-2", + Short: "Update Call Park settings", + Long: "Update Call Park settings for the designated location.\n\nCall Park allows call recipients to place a call on hold so that it can be retrieved from another device.\n\nUpdating call park settings requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/locations/{locationId}/callParks/settings") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location for which call park settings will be updated.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Update call park settings from this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callParkCmd.AddCommand(cmd) + } + + { // list-extensions + var orgId string + var locationId string + var max string + var start string + var extension string + var locationName string + var name string + var order string + cmd := &cobra.Command{ + Use: "list-extensions", + Short: "Read the List of Call Park Extensions", + Long: "List all Call Park Extensions for the organization.\n\nThe Call Park service, enabled for all users by default, allows a user to park a call against an available user's extension or to a Call Park Extension. Call Park Extensions are extensions defined within the Call Park service for holding parked calls.\n\nRetrieving this list requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/callParkExtensions") + req.QueryParam("orgId", orgId) + req.QueryParam("locationId", locationId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("extension", extension) + req.QueryParam("locationName", locationName) + req.QueryParam("name", name) + req.QueryParam("order", order) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List call park extensions for this organization.") + cmd.Flags().StringVar(&locationId, "location-id", "", "Only return call park extensions with matching location ID.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of objects returned to this maximum count.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching objects.") + cmd.Flags().StringVar(&extension, "extension", "", "Only return call park extensions with the matching extension.") + cmd.Flags().StringVar(&locationName, "location-name", "", "Only return call park extensions with the matching extension.") + cmd.Flags().StringVar(&name, "name", "", "Only return call park extensions with the matching name.") + cmd.Flags().StringVar(&order, "order", "", "Order the available agents according to the designated fields. Available sort fields: `groupName`, `callParkExtension`, `callParkExtensionName`, `callParkExtensionExternalId`.") + callParkCmd.AddCommand(cmd) + } + + { // get-extension + var locationId string + var callParkExtensionId string + var orgId string + cmd := &cobra.Command{ + Use: "get-extension", + Short: "Get Details for a Call Park Extension", + Long: "Retrieve Call Park Extension details.\n\nThe Call Park service, enabled for all users by default, allows a user to park a call against an available user's extension or to a Call Park Extension. Call Park Extensions are extensions defined within the Call Park service for holding parked calls.\n\nRetrieving call park extension details requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/callParkExtensions/{callParkExtensionId}") + req.PathParam("locationId", locationId) + req.PathParam("callParkExtensionId", callParkExtensionId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Retrieve details for a call park extension in this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&callParkExtensionId, "call-park-extension-id", "", "Retrieve details for a call park extension with the matching ID.") + cmd.MarkFlagRequired("call-park-extension-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve call park extension details from this organization.") + callParkCmd.AddCommand(cmd) + } + + { // delete-extension + var locationId string + var callParkExtensionId string + var orgId string + cmd := &cobra.Command{ + Use: "delete-extension", + Short: "Delete a Call Park Extension", + Long: "Delete the designated Call Park Extension.\n\nCall Park Extension enables a call recipient to park a call to an extension, so someone else within the same Organization can retrieve the parked call by dialing that extension. Call Park Extensions can be added as monitored lines by users' Cisco phones, so users can park and retrieve calls by pressing the associated phone line key.\n\nDeleting a call park extension requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/locations/{locationId}/callParkExtensions/{callParkExtensionId}") + req.PathParam("locationId", locationId) + req.PathParam("callParkExtensionId", callParkExtensionId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location from which to delete a call park extension.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&callParkExtensionId, "call-park-extension-id", "", "Delete the call park extension with the matching ID.") + cmd.MarkFlagRequired("call-park-extension-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Delete the call park extension from this organization.") + callParkCmd.AddCommand(cmd) + } + + { // update-extension + var locationId string + var callParkExtensionId string + var orgId string + var name string + var extension string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-extension", + Short: "Update a Call Park Extension", + Long: "Update the designated Call Park Extension.\n\nCall Park Extension enables a call recipient to park a call to an extension, so someone else within the same Organization can retrieve the parked call by dialing that extension. Call Park Extensions can be added as monitored lines by users' Cisco phones, so users can park and retrieve calls by pressing the associated phone line key.\n\nUpdating a call park extension requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/locations/{locationId}/callParkExtensions/{callParkExtensionId}") + req.PathParam("locationId", locationId) + req.PathParam("callParkExtensionId", callParkExtensionId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("name", name) + req.BodyString("extension", extension) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location in which this call park extension exists.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&callParkExtensionId, "call-park-extension-id", "", "Update a call park extension with the matching ID.") + cmd.MarkFlagRequired("call-park-extension-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Update a call park extension from this organization.") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&extension, "extension", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callParkCmd.AddCommand(cmd) + } + + { // create-extension + var locationId string + var orgId string + var name string + var extension string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-extension", + Short: "Create a Call Park Extension", + Long: "Create new Call Park Extensions for the given location.\n\nCall Park Extension enables a call recipient to park a call to an extension, so someone else within the same Organization can retrieve the parked call by dialing that extension. Call Park Extensions can be added as monitored lines by users' Cisco phones, so users can park and retrieve calls by pressing the associated phone line key.\n\nCreating a call park extension requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/locations/{locationId}/callParkExtensions") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("name", name) + req.BodyString("extension", extension) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Create the call park extension for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Create the call park extension for this organization.") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&extension, "extension", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callParkCmd.AddCommand(cmd) + } + +} diff --git a/cmd/calling/call_pickup.go b/cmd/calling/call_pickup.go new file mode 100644 index 0000000..5a12328 --- /dev/null +++ b/cmd/calling/call_pickup.go @@ -0,0 +1,280 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package calling + +import ( + "fmt" + "strconv" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa +var _ = strings.Join + +var callPickupCmd = &cobra.Command{ + Use: "call-pickup", + Short: "CallPickup commands", +} + +func init() { + cmd.CallingCmd.AddCommand(callPickupCmd) + + { // list + var locationId string + var orgId string + var max string + var start string + var order string + var name string + cmd := &cobra.Command{ + Use: "list", + Short: "Read the List of Call Pickups", + Long: "List all Call Pickups for the organization.\n\nCall Pickup enables a user (agent) to answer any ringing line within their pickup group.\n\nRetrieving this list requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.\n\n**NOTE**: The Call Pickup ID will change upon modification of the Call Pickup name.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/callPickups") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("order", order) + req.QueryParam("name", name) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Return the list of call pickups for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "List call pickups for this organization.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of call pickups returned to this maximum count. Default is 2000.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching call pickups. Default is 0.") + cmd.Flags().StringVar(&order, "order", "", "Sort the list of call pickups by name, either ASC or DSC. Default is ASC.") + cmd.Flags().StringVar(&name, "name", "", "Return the list of call pickups that contains the given name. The maximum length is 80.") + callPickupCmd.AddCommand(cmd) + } + + { // create + var locationId string + var orgId string + var name string + var notificationType string + var notificationDelayTimerSeconds int64 + var agents []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a Call Pickup", + Long: "Create new Call Pickups for the given location.\n\nCall Pickup enables a user (agent) to answer any ringing line within their pickup group.\n\nCreating a call pickup requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: The Call Pickup ID will change upon modification of the Call Pickup name.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/locations/{locationId}/callPickups") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("name", name) + req.BodyString("notificationType", notificationType) + req.BodyInt("notificationDelayTimerSeconds", notificationDelayTimerSeconds, cmd.Flags().Changed("notification-delay-timer-seconds")) + req.BodyStringSlice("agents", agents) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Create the call pickup for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Create the call pickup for this organization.") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(¬ificationType, "notification-type", "", "") + cmd.Flags().Int64Var(¬ificationDelayTimerSeconds, "notification-delay-timer-seconds", 0, "") + cmd.Flags().StringSliceVar(&agents, "agents", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callPickupCmd.AddCommand(cmd) + } + + { // delete + var locationId string + var callPickupId string + var orgId string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete a Call Pickup", + Long: "Delete the designated Call Pickup.\n\nCall Pickup enables a user (agent) to answer any ringing line within their pickup group.\n\nDeleting a call pickup requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: The Call Pickup ID will change upon modification of the Call Pickup name.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/locations/{locationId}/callPickups/{callPickupId}") + req.PathParam("locationId", locationId) + req.PathParam("callPickupId", callPickupId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location from which to delete a call pickup.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&callPickupId, "call-pickup-id", "", "Delete the call pickup with the matching ID.") + cmd.MarkFlagRequired("call-pickup-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Delete the call pickup from this organization.") + callPickupCmd.AddCommand(cmd) + } + + { // get + var locationId string + var callPickupId string + var orgId string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Details for a Call Pickup", + Long: "Retrieve the designated Call Pickup details.\n\nCall Pickup enables a user (agent) to answer any ringing line within their pickup group.\n\nRetrieving call pickup details requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.\n\n**NOTE**: The Call Pickup ID will change upon modification of the Call Pickup name.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/callPickups/{callPickupId}") + req.PathParam("locationId", locationId) + req.PathParam("callPickupId", callPickupId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Retrieve settings for a call pickup in this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&callPickupId, "call-pickup-id", "", "Retrieve settings for a call pickup with the matching ID.") + cmd.MarkFlagRequired("call-pickup-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve call pickup settings from this organization.") + callPickupCmd.AddCommand(cmd) + } + + { // update + var locationId string + var callPickupId string + var orgId string + var name string + var notificationType string + var notificationDelayTimerSeconds int64 + var agents []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Short: "Update a Call Pickup", + Long: "Update the designated Call Pickup.\n\nCall Pickup enables a user (agent) to answer any ringing line within their pickup group.\n\nUpdating a call pickup requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: The Call Pickup ID will change upon modification of the Call Pickup name.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/locations/{locationId}/callPickups/{callPickupId}") + req.PathParam("locationId", locationId) + req.PathParam("callPickupId", callPickupId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("name", name) + req.BodyString("notificationType", notificationType) + req.BodyInt("notificationDelayTimerSeconds", notificationDelayTimerSeconds, cmd.Flags().Changed("notification-delay-timer-seconds")) + req.BodyStringSlice("agents", agents) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location in which this call pickup exists.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&callPickupId, "call-pickup-id", "", "Update settings for a call pickup with the matching ID.") + cmd.MarkFlagRequired("call-pickup-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Update call pickup settings from this organization.") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(¬ificationType, "notification-type", "", "") + cmd.Flags().Int64Var(¬ificationDelayTimerSeconds, "notification-delay-timer-seconds", 0, "") + cmd.Flags().StringSliceVar(&agents, "agents", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callPickupCmd.AddCommand(cmd) + } + + { // get-available-agents + var locationId string + var orgId string + var callPickupName string + var max string + var start string + var name string + var phoneNumber string + var order string + cmd := &cobra.Command{ + Use: "get-available-agents", + Short: "Get available agents from Call Pickups", + Long: "Retrieve available agents from call pickups for a given location.\n\nCall Pickup enables a user (agent) to answer any ringing line within their pickup group.\n\nRetrieving available agents from call pickups requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/callPickups/availableUsers") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + req.QueryParam("callPickupName", callPickupName) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("name", name) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("order", order) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Return the available agents for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Return the available agents for this organization.") + cmd.Flags().StringVar(&callPickupName, "call-pickup-name", "", "Only return available agents from call pickups with the matching name.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of available agents returned to this maximum count.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching available agents.") + cmd.Flags().StringVar(&name, "name", "", "Only return available agents with the matching name.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Only return available agents with the matching primary number.") + cmd.Flags().StringVar(&order, "order", "", "Order the available agents according to the designated fields. Up to three vertical bar (|) separated sort order fields may be specified. Available sort fields: `fname`, `lname`, `extension`, `number`.") + callPickupCmd.AddCommand(cmd) + } + +} diff --git a/cmd/calling/call_queue.go b/cmd/calling/call_queue.go new file mode 100644 index 0000000..a4f28c4 --- /dev/null +++ b/cmd/calling/call_queue.go @@ -0,0 +1,1452 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package calling + +import ( + "fmt" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strings.Join + +var callQueueCmd = &cobra.Command{ + Use: "call-queue", + Short: "CallQueue commands", +} + +func init() { + cmd.CallingCmd.AddCommand(callQueueCmd) + + { // list-customer-assist + var orgId string + var locationId string + var max string + var start string + var name string + var phoneNumber string + var departmentId string + var departmentName string + var hasCxEssentials string + cmd := &cobra.Command{ + Use: "list-customer-assist", + Short: "Read the List of Call Queues with Customer Assist", + Long: "List all Call Queues for the organization.\n\nCall queues temporarily hold calls in the cloud, when all agents\nassigned to receive calls from the queue are unavailable. Queued calls are routed to \nan available agent, when not on an active call. Each call queue is assigned a lead number, which is a telephone\nnumber that external callers can dial to reach the users assigned to the call queue.\nCall queues are also assigned an internal extension, which can be dialed\ninternally to reach the users assigned to the call queue.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/queues") + req.QueryParam("orgId", orgId) + req.QueryParam("locationId", locationId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("name", name) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("departmentId", departmentId) + req.QueryParam("departmentName", departmentName) + req.QueryParam("hasCxEssentials", hasCxEssentials) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Returns the list of call queues in this organization.") + cmd.Flags().StringVar(&locationId, "location-id", "", "Returns the list of call queues in this location.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of objects returned to this maximum count.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching objects.") + cmd.Flags().StringVar(&name, "name", "", "Returns only the call queues matching the given name.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Returns only the call queues matching the given primary phone number or extension.") + cmd.Flags().StringVar(&departmentId, "department-id", "", "Returns only call queues matching the given department ID.") + cmd.Flags().StringVar(&departmentName, "department-name", "", "Returns only call queues matching the given department name.") + cmd.Flags().StringVar(&hasCxEssentials, "has-cx-essentials", "", "Returns only the list of call queues with Customer Assist license when `true`, otherwise returns the list of Customer Experience Basic call queues.") + callQueueCmd.AddCommand(cmd) + } + + { // create-customer-assist + var locationId string + var orgId string + var hasCxEssentials string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-customer-assist", + Short: "Create a Call Queue with Customer Assist", + Long: "Create new Call Queues for the given location.\n\nCall queues temporarily hold calls in the cloud, when all agents assigned to receive calls from the queue are unavailable.\nQueued calls are routed to an available agent, when not on an active call. Each call queue is assigned a lead number, which is a telephone\nnumber that external callers can dial to reach the users assigned to the call queue. Call queues are also assigned an internal extension,\nwhich can be dialed internally to reach the users assigned to the call queue.\n\nCreating a call queue requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/locations/{locationId}/queues") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + req.QueryParam("hasCxEssentials", hasCxEssentials) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "The location ID where the call queue needs to be created.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "The organization ID where the call queue needs to be created.") + cmd.Flags().StringVar(&hasCxEssentials, "has-cx-essentials", "", "Creates a Customer Assist call queue, when `true`. This requires Customer Assist licensed agents.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callQueueCmd.AddCommand(cmd) + } + + { // delete + var locationId string + var queueId string + var orgId string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete a Call Queue", + Long: "Delete the designated Call Queue.\n\nCall queues temporarily hold calls in the cloud when all agents, which\ncan be users or agents, assigned to receive calls from the queue are\nunavailable. Queued calls are routed to an available agent when not on an\nactive call. Each call queue is assigned a Lead Number, which is a telephone\nnumber outside callers can dial to reach users assigned to the call queue.\nCall queues are also assigned an internal extension, which can be dialed\ninternally to reach users assigned to the call queue.\n\nDeleting a call queue requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/locations/{locationId}/queues/{queueId}") + req.PathParam("locationId", locationId) + req.PathParam("queueId", queueId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location from which to delete a call queue.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&queueId, "queue-id", "", "Delete the call queue with the matching ID.") + cmd.MarkFlagRequired("queue-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Delete the call queue from this organization.") + callQueueCmd.AddCommand(cmd) + } + + { // get-customer-assist + var locationId string + var queueId string + var orgId string + var hasCxEssentials string + cmd := &cobra.Command{ + Use: "get-customer-assist", + Short: "Get Details for a Call Queue with Customer Assist", + Long: "Retrieve Call Queue details.\n\nCall queues temporarily hold calls in the cloud, when all agents assigned to receive calls from the queue are unavailable.\nQueued calls are routed to an available agent, when not on an active call. Each call queue is assigned a lead number, which is a telephone\nnumber that external callers can dial to reach the users assigned to the call queue. Call queues are also assigned an internal extension,\nwhich can be dialed internally to reach the users assigned to the call queue.\n\nRetrieving call queue details requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/queues/{queueId}") + req.PathParam("locationId", locationId) + req.PathParam("queueId", queueId) + req.QueryParam("orgId", orgId) + req.QueryParam("hasCxEssentials", hasCxEssentials) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Retrieves the details of a call queue in this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&queueId, "queue-id", "", "Retrieves the details of call queue with this identifier.") + cmd.MarkFlagRequired("queue-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieves the details of a call queue in this organization.") + cmd.Flags().StringVar(&hasCxEssentials, "has-cx-essentials", "", "Must be set to `true`, to view the details of a call queue with Customer Assist license. This can otherwise be ommited or set to `false`.") + callQueueCmd.AddCommand(cmd) + } + + { // update + var locationId string + var queueId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Short: "Update a Call Queue", + Long: "Update the designated Call Queue.\n\nCall queues temporarily hold calls in the cloud when all agents, which\ncan be users or agents, assigned to receive calls from the queue are\nunavailable. Queued calls are routed to an available agent when not on an\nactive call. Each call queue is assigned a Lead Number, which is a telephone\nnumber outside callers can dial to reach users assigned to the call queue.\nCall queues are also assigned an internal extension, which can be dialed\ninternally to reach users assigned to the call queue.\n\nUpdating a call queue requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/locations/{locationId}/queues/{queueId}") + req.PathParam("locationId", locationId) + req.PathParam("queueId", queueId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location in which this call queue exists.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&queueId, "queue-id", "", "Update setting for the call queue with the matching ID.") + cmd.MarkFlagRequired("queue-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Update call queue settings from this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callQueueCmd.AddCommand(cmd) + } + + { // list-announcement-files + var locationId string + var queueId string + var orgId string + cmd := &cobra.Command{ + Use: "list-announcement-files", + Short: "Read the List of Call Queue Announcement Files", + Long: "List file info for all Call Queue announcement files associated with this Call Queue.\n\nCall Queue announcement files contain messages and music that callers hear while waiting in the queue. A call queue can be configured to play whatever subset of these announcement files is desired.\n\nRetrieving this list of files requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.\n\nNote that uploading of announcement files via API is not currently supported, but is available via Webex Control Hub.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/queues/{queueId}/announcements") + req.PathParam("locationId", locationId) + req.PathParam("queueId", queueId) + req.QueryParam("orgId", orgId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location in which this call queue exists.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&queueId, "queue-id", "", "Retrieve anouncement files for the call queue with this identifier.") + cmd.MarkFlagRequired("queue-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve announcement files for a call queue from this organization.") + callQueueCmd.AddCommand(cmd) + } + + { // delete-announcement-file + var locationId string + var queueId string + var fileName string + var orgId string + cmd := &cobra.Command{ + Use: "delete-announcement-file", + Short: "Delete a Call Queue Announcement File", + Long: "Delete an announcement file for the designated Call Queue.\n\nCall Queue announcement files contain messages and music that callers hear while waiting in the queue. A call queue can be configured to play whatever subset of these announcement files is desired.\n\nDeleting an announcement file for a call queue requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/locations/{locationId}/queues/{queueId}/announcements/{fileName}") + req.PathParam("locationId", locationId) + req.PathParam("queueId", queueId) + req.PathParam("fileName", fileName) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Delete an announcement for a call queue in this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&queueId, "queue-id", "", "Delete an announcement for the call queue with this identifier.") + cmd.MarkFlagRequired("queue-id") + cmd.Flags().StringVar(&fileName, "file-name", "", "") + cmd.MarkFlagRequired("file-name") + cmd.Flags().StringVar(&orgId, "org-id", "", "Delete call queue announcement from this organization.") + callQueueCmd.AddCommand(cmd) + } + + { // get-forward + var locationId string + var queueId string + var orgId string + cmd := &cobra.Command{ + Use: "get-forward", + Short: "Get Call Forwarding Settings for a Call Queue", + Long: "Retrieve Call Forwarding settings for the specified Call Queue, including the list of call forwarding rules.\n\nThe call forwarding feature allows you to direct all incoming calls based on specific criteria that you define.\nBelow are the available options for configuring your call forwarding:\n1. Always forward calls to a designated number.\n2. Forward calls to a designated number based on certain criteria.\n3. Forward calls using different modes.\n\nRetrieving call forwarding settings for a call queue requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/queues/{queueId}/callForwarding") + req.PathParam("locationId", locationId) + req.PathParam("queueId", queueId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location in which this call queue exists.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&queueId, "queue-id", "", "Retrieve the call forwarding settings for this call queue.") + cmd.MarkFlagRequired("queue-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve call queue forwarding settings from this organization.") + callQueueCmd.AddCommand(cmd) + } + + { // update-forward + var locationId string + var queueId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-forward", + Short: "Update Call Forwarding Settings for a Call Queue", + Long: "Update Call Forwarding settings for the designated Call Queue.\n\nThe call forwarding feature allows you to direct all incoming calls based on specific criteria that you define.\nBelow are the available options for configuring your call forwarding:\n1. Always forward calls to a designated number.\n2. Forward calls to a designated number based on certain criteria.\n3. Forward calls using different modes.\n\nUpdating call forwarding settings for a call queue requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/locations/{locationId}/queues/{queueId}/callForwarding") + req.PathParam("locationId", locationId) + req.PathParam("queueId", queueId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location in which this call queue exists.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&queueId, "queue-id", "", "Update call forwarding settings for this call queue.") + cmd.MarkFlagRequired("queue-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Update call queue forwarding settings from this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callQueueCmd.AddCommand(cmd) + } + + { // create-selective-forward-rule + var locationId string + var queueId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-selective-forward-rule", + Short: "Create a Selective Call Forwarding Rule for a Call Queue", + Long: "Create a Selective Call Forwarding Rule for the designated Call Queue.\n\nA selective call forwarding rule for a call queue allows calls to be forwarded or not forwarded to the designated number, based on the defined criteria.\n\nNote that the list of existing call forward rules is available in the call queue's call forwarding settings.\n\nCreating a selective call forwarding rule for a call queue requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: The Call Forwarding Rule ID will change upon modification of the Call Forwarding Rule name.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/locations/{locationId}/queues/{queueId}/callForwarding/selectiveRules") + req.PathParam("locationId", locationId) + req.PathParam("queueId", queueId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location in which the call queue exists.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&queueId, "queue-id", "", "Create the rule for this call queue.") + cmd.MarkFlagRequired("queue-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Create the call queue rule for this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callQueueCmd.AddCommand(cmd) + } + + { // get-selective-forward-rule + var locationId string + var queueId string + var ruleId string + var orgId string + cmd := &cobra.Command{ + Use: "get-selective-forward-rule", + Short: "Get Selective Call Forwarding Rule for a Call Queue", + Long: "Retrieve a Selective Call Forwarding Rule's settings for the designated Call Queue.\n\nA selective call forwarding rule for a call queue allows calls to be forwarded or not forwarded to the designated number, based on the defined criteria.\n\nNote that the list of existing call forward rules is available in the call queue's call forwarding settings.\n\nRetrieving a selective call forwarding rule's settings for a call queue requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.\n\n**NOTE**: The Call Forwarding Rule ID will change upon modification of the Call Forwarding Rule name.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/queues/{queueId}/callForwarding/selectiveRules/{ruleId}") + req.PathParam("locationId", locationId) + req.PathParam("queueId", queueId) + req.PathParam("ruleId", ruleId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location in which to call queue exists.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&queueId, "queue-id", "", "Retrieve setting for a rule for this call queue.") + cmd.MarkFlagRequired("queue-id") + cmd.Flags().StringVar(&ruleId, "rule-id", "", "Call queue rule you are retrieving settings for.") + cmd.MarkFlagRequired("rule-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve call queue rule settings for this organization.") + callQueueCmd.AddCommand(cmd) + } + + { // update-selective-forward-rule + var locationId string + var queueId string + var ruleId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-selective-forward-rule", + Short: "Update a Selective Call Forwarding Rule for a Call Queue", + Long: "Update a Selective Call Forwarding Rule's settings for the designated Call Queue.\n\nA selective call forwarding rule for a call queue allows calls to be forwarded or not forwarded to the designated number, based on the defined criteria.\n\nNote that the list of existing call forward rules is available in the call queue's call forwarding settings.\n\nUpdating a selective call forwarding rule's settings for a call queue requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: The Call Forwarding Rule ID will change upon modification of the Call Forwarding Rule name.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/locations/{locationId}/queues/{queueId}/callForwarding/selectiveRules/{ruleId}") + req.PathParam("locationId", locationId) + req.PathParam("queueId", queueId) + req.PathParam("ruleId", ruleId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location in which this call queue exists.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&queueId, "queue-id", "", "Update settings for a rule for this call queue.") + cmd.MarkFlagRequired("queue-id") + cmd.Flags().StringVar(&ruleId, "rule-id", "", "Call queue rule you are updating settings for.") + cmd.MarkFlagRequired("rule-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Update call queue rule settings for this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callQueueCmd.AddCommand(cmd) + } + + { // delete-selective-forward-rule + var locationId string + var queueId string + var ruleId string + var orgId string + cmd := &cobra.Command{ + Use: "delete-selective-forward-rule", + Short: "Delete a Selective Call Forwarding Rule for a Call Queue", + Long: "Delete a Selective Call Forwarding Rule for the designated Call Queue.\n\nA selective call forwarding rule for a call queue allows calls to be forwarded or not forwarded to the designated number, based on the defined criteria.\n\nNote that the list of existing call forward rules is available in the call queue's call forwarding settings.\n\nDeleting a selective call forwarding rule for a call queue requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: The Call Forwarding Rule ID will change upon modification of the Call Forwarding Rule name.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/locations/{locationId}/queues/{queueId}/callForwarding/selectiveRules/{ruleId}") + req.PathParam("locationId", locationId) + req.PathParam("queueId", queueId) + req.PathParam("ruleId", ruleId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location in which this call queue exists.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&queueId, "queue-id", "", "Delete the rule for this call queue.") + cmd.MarkFlagRequired("queue-id") + cmd.Flags().StringVar(&ruleId, "rule-id", "", "Call queue rule you are deleting.") + cmd.MarkFlagRequired("rule-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Delete call queue rule from this organization.") + callQueueCmd.AddCommand(cmd) + } + + { // get-holiday-service + var locationId string + var queueId string + var orgId string + cmd := &cobra.Command{ + Use: "get-holiday-service", + Short: "Get Details for a Call Queue Holiday Service", + Long: "Retrieve Call Queue Holiday Service details.\n\nConfigure the call queue to route calls differently during the holidays.\n\nRetrieving call queue holiday service details requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/queues/{queueId}/holidayService") + req.PathParam("locationId", locationId) + req.PathParam("queueId", queueId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Retrieve settings for a call queue in this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&queueId, "queue-id", "", "Retrieve settings for the call queue with this identifier.") + cmd.MarkFlagRequired("queue-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve call queue settings from this organization.") + callQueueCmd.AddCommand(cmd) + } + + { // update-holiday-service + var locationId string + var queueId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-holiday-service", + Short: "Update a Call Queue Holiday Service", + Long: "Update the designated Call Queue Holiday Service.\n\nConfigure the call queue to route calls differently during the holidays.\n\nUpdating a call queue holiday service requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/locations/{locationId}/queues/{queueId}/holidayService") + req.PathParam("locationId", locationId) + req.PathParam("queueId", queueId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location in which this call queue exists.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&queueId, "queue-id", "", "Update setting for the call queue with the matching ID.") + cmd.MarkFlagRequired("queue-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Update call queue settings from this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callQueueCmd.AddCommand(cmd) + } + + { // get-night-service + var locationId string + var queueId string + var orgId string + cmd := &cobra.Command{ + Use: "get-night-service", + Short: "Get Details for a Call Queue Night Service", + Long: "Retrieve Call Queue Night service details.\n\nConfigure the call queue to route calls differently during the hours when the queue is not in service. This is\ndetermined by a schedule that defines the business hours of the queue.\n\nRetrieving call queue details requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/queues/{queueId}/nightService") + req.PathParam("locationId", locationId) + req.PathParam("queueId", queueId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Retrieve settings for a call queue in this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&queueId, "queue-id", "", "Retrieve settings for the call queue night service with this identifier.") + cmd.MarkFlagRequired("queue-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve call queue night service settings from this organization.") + callQueueCmd.AddCommand(cmd) + } + + { // update-night-service + var locationId string + var queueId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-night-service", + Short: "Update a Call Queue Night Service", + Long: "Update Call Queue Night Service details.\n\nConfigure the call queue to route calls differently during the hours when the queue is not in service. This is\ndetermined by a schedule that defines the business hours of the queue.\n\nUpdating call queue night service details requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/locations/{locationId}/queues/{queueId}/nightService") + req.PathParam("locationId", locationId) + req.PathParam("queueId", queueId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Update settings for a call queue in this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&queueId, "queue-id", "", "Update settings for the call queue night service with this identifier.") + cmd.MarkFlagRequired("queue-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Update call queue night service settings from this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callQueueCmd.AddCommand(cmd) + } + + { // get-forced-forward + var locationId string + var queueId string + var orgId string + cmd := &cobra.Command{ + Use: "get-forced-forward", + Short: "Get Details for a Call Queue Forced Forward", + Long: "Retrieve Call Queue policy Forced Forward details.\n\nThis policy allows calls to be temporarily diverted to a configured destination.\n\nRetrieving call queue Forced Forward details requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/queues/{queueId}/forcedForward") + req.PathParam("locationId", locationId) + req.PathParam("queueId", queueId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Retrieve settings for a call queue in this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&queueId, "queue-id", "", "Retrieve settings for the call queue with this identifier.") + cmd.MarkFlagRequired("queue-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve call queue settings from this organization.") + callQueueCmd.AddCommand(cmd) + } + + { // update-forced-forward-service + var locationId string + var queueId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-forced-forward-service", + Short: "Update a Call Queue Forced Forward Service", + Long: "Update the designated Forced Forward Service.\n\nIf the option is enabled, then incoming calls to the queue are forwarded to the configured destination. Calls that are already in the queue remain queued.\nThe policy can be configured to play an announcement prior to proceeding with the forward.\n\nUpdating a call queue Forced Forward service requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/locations/{locationId}/queues/{queueId}/forcedForward") + req.PathParam("locationId", locationId) + req.PathParam("queueId", queueId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location in which this call queue exists.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&queueId, "queue-id", "", "Update setting for the call queue with the matching ID.") + cmd.MarkFlagRequired("queue-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Update call queue settings from this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callQueueCmd.AddCommand(cmd) + } + + { // get-stranded + var locationId string + var queueId string + var orgId string + cmd := &cobra.Command{ + Use: "get-stranded", + Short: "Get Details for a Call Queue Stranded Calls", + Long: "Allow admin to view default/configured Stranded Calls settings.\n\nStranded-All agents logoff Policy: If the last agent staffing a queue \u201cunjoins\u201d the queue or signs out, then all calls in the queue become stranded.\nStranded-Unavailable Policy: This policy allows for the configuration of the processing of calls that are in a staffed queue when all agents are unavailable.\n\nRetrieving call queue Stranded Calls details requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/queues/{queueId}/strandedCalls") + req.PathParam("locationId", locationId) + req.PathParam("queueId", queueId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Retrieve settings for a call queue in this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&queueId, "queue-id", "", "Retrieve settings for the call queue with this identifier.") + cmd.MarkFlagRequired("queue-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve call queue settings from this organization.") + callQueueCmd.AddCommand(cmd) + } + + { // update-stranded-service + var locationId string + var queueId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-stranded-service", + Short: "Update a Call Queue Stranded Calls Service", + Long: "Update the designated Call Stranded Calls Service.\n\nAllow admin to modify configured Stranded Calls settings.\n\nUpdating a call queue stranded calls requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/locations/{locationId}/queues/{queueId}/strandedCalls") + req.PathParam("locationId", locationId) + req.PathParam("queueId", queueId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location in which this call queue exists.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&queueId, "queue-id", "", "Update setting for the call queue with the matching ID.") + cmd.MarkFlagRequired("queue-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Update call queue settings from this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callQueueCmd.AddCommand(cmd) + } + + { // get-primary-numbers + var locationId string + var orgId string + var max string + var start string + var phoneNumber string + cmd := &cobra.Command{ + Use: "get-primary-numbers", + Short: "Get Call Queue Primary Available Phone Numbers", + Long: "List the service and standard PSTN numbers that are available to be assigned as the call queue's primary phone number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/queues/availableNumbers") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("phoneNumber", phoneNumber) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Return the list of phone numbers for this location within the given organization. The maximum length is 36.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "List numbers for this organization.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of phone numbers returned to this maximum count. The default is 2000.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching phone numbers. The default is 0.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array.") + callQueueCmd.AddCommand(cmd) + } + + { // get-alternate-numbers + var locationId string + var orgId string + var max string + var start string + var phoneNumber string + cmd := &cobra.Command{ + Use: "get-alternate-numbers", + Short: "Get Call Queue Alternate Available Phone Numbers", + Long: "List the service and standard PSTN numbers that are available to be assigned as the call queue's alternate phone number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/queues/alternate/availableNumbers") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("phoneNumber", phoneNumber) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Return the list of phone numbers for this location within the given organization. The maximum length is 36.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "List numbers for this organization.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of phone numbers returned to this maximum count. The default is 2000.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching phone numbers. The default is 0.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array.") + callQueueCmd.AddCommand(cmd) + } + + { // get-forward-available-numbers + var locationId string + var orgId string + var max string + var start string + var phoneNumber string + var ownerName string + var extension string + cmd := &cobra.Command{ + Use: "get-forward-available-numbers", + Short: "Get Call Queue Call Forward Available Phone Numbers", + Long: "List the service and standard PSTN numbers that are available to be assigned as the call queue's call forward number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are assigned to an owning entity.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/queues/callForwarding/availableNumbers") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("ownerName", ownerName) + req.QueryParam("extension", extension) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Return the list of phone numbers for this location within the given organization. The maximum length is 36.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "List numbers for this organization.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of phone numbers returned to this maximum count. The default is 2000.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching phone numbers. The default is 0.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array.") + cmd.Flags().StringVar(&ownerName, "owner-name", "", "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255.") + cmd.Flags().StringVar(&extension, "extension", "", "Returns the list of PSTN phone numbers with the given `extension`.") + callQueueCmd.AddCommand(cmd) + } + + { // get-available-agents + var locationId string + var orgId string + var max string + var start string + var name string + var phoneNumber string + var order string + cmd := &cobra.Command{ + Use: "get-available-agents", + Short: "Get Call Queue Available Agents", + Long: "List all available users, workspaces, or virtual lines that can be assigned as call queue agents.\n\nAvailable agents are users (excluding users with Webex Calling Standard license), workspaces, or virtual lines that can be assigned to a call queue. \nCalls from the call queue are routed to assigned agents based on configuration. \nAn agent can be assigned to one or more call queues and can be managed by supervisors.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/queues/agents/availableAgents") + req.QueryParam("locationId", locationId) + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("name", name) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("order", order) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "The location ID of the call queue. Temporary mandatory query parameter, used for performance reasons only and not a filter.") + cmd.Flags().StringVar(&orgId, "org-id", "", "List available agents for this organization.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of objects returned to this maximum count.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching objects.") + cmd.Flags().StringVar(&name, "name", "", "Search based on name (user first and last name combination).") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Search based on number or extension.") + cmd.Flags().StringVar(&order, "order", "", "Order the available agents according to the designated fields. Up to three comma-separated sort order fields may be specified. Available sort fields are: `userId`, `fname`, `firstname`, `lname`, `lastname`, `dn`, and `extension`. Sort order can be added together with each field using a hyphen, `-`. Available sort orders are: `asc`, and `desc`.") + callQueueCmd.AddCommand(cmd) + } + + { // list-supervisors-customer-assist + var orgId string + var max string + var start string + var name string + var phoneNumber string + var order string + var hasCxEssentials string + cmd := &cobra.Command{ + Use: "list-supervisors-customer-assist", + Short: "Get List of Supervisors with Customer Assist", + Long: "Get list of supervisors for an organization.\n\nAgents in a call queue can be associated with a supervisor who can silently monitor, coach, barge in or to take over calls that their assigned agents are currently handling.\n\nRequires a full, location, user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/supervisors") + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("name", name) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("order", order) + req.QueryParam("hasCxEssentials", hasCxEssentials) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List the supervisors in this organization.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of objects returned to this maximum count.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching objects.") + cmd.Flags().StringVar(&name, "name", "", "Only return the supervisors that match the given name.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Only return the supervisors that match the given phone number, extension, or ESN.") + cmd.Flags().StringVar(&order, "order", "", "Sort results alphabetically by supervisor name, in ascending or descending order.") + cmd.Flags().StringVar(&hasCxEssentials, "has-cx-essentials", "", "Returns only the list of supervisors with Customer Assist license, when `true`. Otherwise returns the list of supervisors with Customer Experience Basic license.") + callQueueCmd.AddCommand(cmd) + } + + { // create-supervisor-customer-assist + var orgId string + var hasCxEssentials string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-supervisor-customer-assist", + Short: "Create a Supervisor with Customer Assist", + Long: "Create a new supervisor. The supervisor must be created with at least one agent.\n\nAgents in a call queue can be associated with a supervisor who can silently monitor, coach, barge in or to take over calls that their assigned agents are currently handling.\n\nThis operation requires a full or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/supervisors") + req.QueryParam("orgId", orgId) + req.QueryParam("hasCxEssentials", hasCxEssentials) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "The organization ID where the supervisor needs to be created.") + cmd.Flags().StringVar(&hasCxEssentials, "has-cx-essentials", "", "Creates a Customer Assist queue supervisor, when `true`. Customer Assist queue supervisors must have a Customer Assist license.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callQueueCmd.AddCommand(cmd) + } + + { // delete-bulk-supervisors + var orgId string + var supervisorIds []string + var deleteAll bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "delete-bulk-supervisors", + Short: "Delete Bulk Supervisors", + Long: "Deletes supervisors in bulk from an organization.\n\nSupervisors are users who manage agents and who perform functions including monitoring, coaching, and more.\n\nRequires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/supervisors") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("supervisorIds", supervisorIds) + req.BodyBool("deleteAll", deleteAll, cmd.Flags().Changed("delete-all")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Delete supervisors in bulk for this organization.") + cmd.Flags().StringSliceVar(&supervisorIds, "supervisor-ids", nil, "") + cmd.Flags().BoolVar(&deleteAll, "delete-all", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callQueueCmd.AddCommand(cmd) + } + + { // delete-supervisor + var supervisorId string + var orgId string + cmd := &cobra.Command{ + Use: "delete-supervisor", + Short: "Delete a Supervisor", + Long: "Deletes the supervisor from an organization.\n\nSupervisors are users who manage agents and who perform functions including monitoring, coaching, and more.\n\nRequires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/supervisors/{supervisorId}") + req.PathParam("supervisorId", supervisorId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&supervisorId, "supervisor-id", "", "Delete the specified supervisor.") + cmd.MarkFlagRequired("supervisor-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Delete the supervisor in the specified organization.") + callQueueCmd.AddCommand(cmd) + } + + { // get-supervisor-detail-customer-assist + var supervisorId string + var orgId string + var max string + var start string + var name string + var phoneNumber string + var order string + var hasCxEssentials string + cmd := &cobra.Command{ + Use: "get-supervisor-detail-customer-assist", + Short: "Get Supervisor Detail with Customer Assist", + Long: "Get details of a specific supervisor, which includes the agents associated agents with the supervisor, in an organization.\n\nAgents in a call queue can be associated with a supervisor who can silently monitor, coach, barge in or to take over calls that their assigned agents are currently handling.\n\nThis operation requires a full, user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/supervisors/{supervisorId}") + req.PathParam("supervisorId", supervisorId) + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("name", name) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("order", order) + req.QueryParam("hasCxEssentials", hasCxEssentials) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&supervisorId, "supervisor-id", "", "List the agents assigned to this supervisor.") + cmd.MarkFlagRequired("supervisor-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "List the agents assigned to a supervisor in this organization.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of objects returned to this maximum count.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching objects.") + cmd.Flags().StringVar(&name, "name", "", "Only return the agents that match the given name.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Only return agents that match the given phone number, extension, or ESN.") + cmd.Flags().StringVar(&order, "order", "", "Sort results alphabetically by supervisor name, in ascending or descending order.") + cmd.Flags().StringVar(&hasCxEssentials, "has-cx-essentials", "", "Must be set to `true`, to view the details of a supervisor with Customer Assist license. This can otherwise be ommited or set to `false`.") + callQueueCmd.AddCommand(cmd) + } + + { // assign-unassign-agents-supervisor-customer-assist + var supervisorId string + var orgId string + var hasCxEssentials string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "assign-unassign-agents-supervisor-customer-assist", + Short: "Assign or Unassign Agents to Supervisor with Customer Assist", + Long: "Assign or unassign agents to the supervisor for an organization.\n\nAgents in a call queue can be associated with a supervisor who can silently monitor, coach, barge in or to take over calls that their assigned agents are currently handling.\n\nThis operation requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/supervisors/{supervisorId}") + req.PathParam("supervisorId", supervisorId) + req.QueryParam("orgId", orgId) + req.QueryParam("hasCxEssentials", hasCxEssentials) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&supervisorId, "supervisor-id", "", "Identifier of the supervisor to be updated.") + cmd.MarkFlagRequired("supervisor-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Assign or unassign agents to a supervisor in this organization.") + cmd.Flags().StringVar(&hasCxEssentials, "has-cx-essentials", "", "Must be set to `true` to modify a supervisor with Customer Assist license. This can otherwise be ommited or set to `false`.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callQueueCmd.AddCommand(cmd) + } + + { // list-available-supervisors-customer-assist + var orgId string + var max string + var start string + var name string + var phoneNumber string + var order string + var hasCxEssentials string + cmd := &cobra.Command{ + Use: "list-available-supervisors-customer-assist", + Short: "List Available Supervisors with Customer Assist", + Long: "Get list of available supervisors for an organization.\n\nAgents in a call queue can be associated with a supervisor who can silently monitor, coach, barge in or to take over calls that their assigned agents are currently handling.\n\nThis operation requires a full, user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/supervisors/availableSupervisors") + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("name", name) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("order", order) + req.QueryParam("hasCxEssentials", hasCxEssentials) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List the available supervisors in this organization.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of objects returned to this maximum count.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching objects.") + cmd.Flags().StringVar(&name, "name", "", "Only return the supervisors that match the given name.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Only return the supervisors that match the given phone number, extension, or ESN.") + cmd.Flags().StringVar(&order, "order", "", "Sort results alphabetically by supervisor name, in ascending or descending order.") + cmd.Flags().StringVar(&hasCxEssentials, "has-cx-essentials", "", "Returns only the list of available supervisors with Customer Assist license, when `true`. When ommited or set to 'false', will return the list of available supervisors with Customer Experience Basic license.") + callQueueCmd.AddCommand(cmd) + } + + { // list-available-agents-customer-assist + var orgId string + var max string + var start string + var name string + var phoneNumber string + var order string + var hasCxEssentials string + cmd := &cobra.Command{ + Use: "list-available-agents-customer-assist", + Short: "List Available Agents with Customer Assist", + Long: "Get list of available agents for an organization.\n\nAgents in a call queue can be associated with a supervisor who can silently monitor, coach, barge in or to take over calls that their assigned agents are currently handling.\n\nThis operation requires a full, user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/supervisors/availableAgents") + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("name", name) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("order", order) + req.QueryParam("hasCxEssentials", hasCxEssentials) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List of available agents in a supervisor's list for this organization.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of objects returned to this maximum count.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching objects.") + cmd.Flags().StringVar(&name, "name", "", "Returns only the agents that match the given name.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Returns only the agents that match the phone number, extension, or ESN.") + cmd.Flags().StringVar(&order, "order", "", "Sort results alphabetically by supervisor name, in ascending or descending order.") + cmd.Flags().StringVar(&hasCxEssentials, "has-cx-essentials", "", "Returns only the list of available agents with Customer Assist license, when `true`. When ommited or set to `false`, will return the list of available agents with Customer Experience Basic license.") + callQueueCmd.AddCommand(cmd) + } + + { // list-agents-customer-assist + var orgId string + var locationId string + var queueId string + var max string + var start string + var name string + var phoneNumber string + var joinEnabled string + var hasCxEssentials string + var order string + cmd := &cobra.Command{ + Use: "list-agents-customer-assist", + Short: "Read the List of Call Queue Agents with Customer Assist", + Long: "List all Call Queues Agents for the organization.\n\nAgents can be users, workplace or virtual lines assigned to a call queue. Calls from the call queue are routed to agents based on configuration. \nAn agent can be assigned to one or more call queues and can be managed by supervisors.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.\n\n**Note**: The decoded value of the agent's `id`, and the `type` returned in the response, are always returned as `PEOPLE`, even when the agent is a workspace or virtual line. This will be addressed in a future release.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/queues/agents") + req.QueryParam("orgId", orgId) + req.QueryParam("locationId", locationId) + req.QueryParam("queueId", queueId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("name", name) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("joinEnabled", joinEnabled) + req.QueryParam("hasCxEssentials", hasCxEssentials) + req.QueryParam("order", order) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List call queues agents in this organization.") + cmd.Flags().StringVar(&locationId, "location-id", "", "Return only the call queue agents in this location.") + cmd.Flags().StringVar(&queueId, "queue-id", "", "Only return call queue agents with the matching queue ID.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of objects returned to this maximum count.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching objects.") + cmd.Flags().StringVar(&name, "name", "", "Returns only the list of call queue agents that match the given name.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Returns only the list of call queue agents that match the given phone number or extension.") + cmd.Flags().StringVar(&joinEnabled, "join-enabled", "", "Returns only the list of call queue agents that match the given `joinEnabled` value.") + cmd.Flags().StringVar(&hasCxEssentials, "has-cx-essentials", "", "Returns only the list of call queues with Customer Assist license when `true`, otherwise returns the list of Customer Experience Basic call queues.") + cmd.Flags().StringVar(&order, "order", "", "Sort results alphabetically by call queue agent's name, in ascending or descending order.") + callQueueCmd.AddCommand(cmd) + } + + { // get-agent-customer-assist + var id string + var orgId string + var hasCxEssentials string + var max string + var start string + cmd := &cobra.Command{ + Use: "get-agent-customer-assist", + Short: "Get Details for a Call Queue Agent with Customer Assist", + Long: "Retrieve details of a particular Call queue agent based on the agent ID.\n\nAgents can be users, workplace or virtual lines assigned to a call queue. Calls from the call queue are routed to agents based on configuration. \nAn agent can be assigned to one or more call queues and can be managed by supervisors.\n\nRetrieving a call queue agent's details require a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.\n\n**Note**: The agent's `type` returned in the response and in the decoded value of the agent's `id`, is always of type `PEOPLE`, even if the agent is a workspace or virtual line. This` will be corrected in a future release.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/queues/agents/{id}") + req.PathParam("id", id) + req.QueryParam("orgId", orgId) + req.QueryParam("hasCxEssentials", hasCxEssentials) + req.QueryParam("max", max) + req.QueryParam("start", start) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "Retrieve call queue agents with this identifier.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve call queue agents from this organization.") + cmd.Flags().StringVar(&hasCxEssentials, "has-cx-essentials", "", "Must be set to `true` to view the details of an agent with Customer Assist license. This can otherwise be ommited or set to `false`.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of objects returned to this maximum count.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching objects.") + callQueueCmd.AddCommand(cmd) + } + + { // update-agent-settings-one-more-customer-assist + var id string + var orgId string + var hasCxEssentials string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-agent-settings-one-more-customer-assist", + Short: "Update an Agent's Settings of One or More Call Queues with Customer Assist", + Long: "Modify an agent's call queue settings for an organization.\n\nCalls from the call queue are routed to agents based on configuration. \nAn agent can be assigned to one or more call queues and can be managed by supervisors.\n\nThis operation requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/queues/agents/{id}/settings") + req.PathParam("id", id) + req.QueryParam("orgId", orgId) + req.QueryParam("hasCxEssentials", hasCxEssentials) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "Identifier of the agent to be updated.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Update the settings of an agent in this organization.") + cmd.Flags().StringVar(&hasCxEssentials, "has-cx-essentials", "", "Must be set to `true` to modify an agent that has Customer Assist license. This can otherwise be ommited or set to `false`.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callQueueCmd.AddCommand(cmd) + } + + { // switch-mode-forward + var locationId string + var queueId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "switch-mode-forward", + Short: "Switch Mode for Call Forwarding Settings for a Call Queue", + Long: "Switches the current operating mode of the `Call Queue` to the mode as per normal operations.\n\nOperating modes allow call forwarding to be configured based on predefined schedules, enabling different routing behaviors during business hours, after hours, or holidays.\n\nSwitching operating mode for a `call queue` requires a full, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/locations/{locationId}/queues/{queueId}/callForwarding/actions/switchMode/invoke") + req.PathParam("locationId", locationId) + req.PathParam("queueId", queueId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "`Location` in which this `call queue` exists.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&queueId, "queue-id", "", "Switch operating mode to normal operations for this `call queue`.") + cmd.MarkFlagRequired("queue-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Switch operating mode as per normal operations for the `call queue` from this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callQueueCmd.AddCommand(cmd) + } + + { // get-playlist-usage + var playListId string + var playlistUsageType string + cmd := &cobra.Command{ + Use: "get-playlist-usage", + Short: "Get Playlist Usage", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/announcements/playlists/{playListId}/usage") + req.PathParam("playListId", playListId) + req.QueryParam("playlistUsageType", playlistUsageType) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&playListId, "play-list-id", "", "Unique identifier of the playlist.") + cmd.MarkFlagRequired("play-list-id") + cmd.Flags().StringVar(&playlistUsageType, "playlist-usage-type", "", "Filter usage by type.") + callQueueCmd.AddCommand(cmd) + } + +} diff --git a/cmd/calling/call_recording.go b/cmd/calling/call_recording.go new file mode 100644 index 0000000..a78c024 --- /dev/null +++ b/cmd/calling/call_recording.go @@ -0,0 +1,614 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package calling + +import ( + "fmt" + "strconv" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa + +var callRecordingCmd = &cobra.Command{ + Use: "call-recording", + Short: "CallRecording commands", +} + +func init() { + cmd.CallingCmd.AddCommand(callRecordingCmd) + + { // get + var orgId string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Call Recording Settings", + Long: "Retrieve call recording settings for the organization.\n\nThe Call Recording feature enables authorized agents to record any active call that Webex Contact Center manages.\n\nRetrieving call recording settings requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/callRecording") + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve call recording settings from this organization.") + callRecordingCmd.AddCommand(cmd) + } + + { // update + var orgId string + var enabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Short: "Update Call Recording Settings", + Long: "Update call recording settings for the organization.\n\nThe Call Recording feature enables authorized agents to record any active call that Webex Contact Center manages.\n\nUpdating call recording settings requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: This API is for Cisco partners only.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/callRecording") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve call recording settings from this organization.") + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callRecordingCmd.AddCommand(cmd) + } + + { // get-terms-settings + var vendorId string + var orgId string + cmd := &cobra.Command{ + Use: "get-terms-settings", + Short: "Get Call Recording Terms Of Service Settings", + Long: "Retrieve call recording terms of service settings for the organization.\n\nThe Call Recording feature enables authorized agents to record any active call that Webex Contact Center manages.\n\nRetrieving call recording terms of service settings requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/callRecording/vendors/{vendorId}/termsOfService") + req.PathParam("vendorId", vendorId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&vendorId, "vendor-id", "", "Retrieve call recording terms of service details for the given vendor.") + cmd.MarkFlagRequired("vendor-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve call recording terms of service details from this organization.") + callRecordingCmd.AddCommand(cmd) + } + + { // update-terms-settings + var vendorId string + var orgId string + var termsOfServiceEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-terms-settings", + Short: "Update Call Recording Terms Of Service Settings", + Long: "Update call recording terms of service settings for the given vendor.\n\nThe Call Recording feature enables authorized agents to record any active call that Webex Contact Center manages.\n\nUpdating call recording terms of service settings requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/callRecording/vendors/{vendorId}/termsOfService") + req.PathParam("vendorId", vendorId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("termsOfServiceEnabled", termsOfServiceEnabled, cmd.Flags().Changed("terms-of-service-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&vendorId, "vendor-id", "", "Update call recording terms of service settings for the given vendor.") + cmd.MarkFlagRequired("vendor-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Update call recording terms of service settings from this organization.") + cmd.Flags().BoolVar(&termsOfServiceEnabled, "terms-of-service-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callRecordingCmd.AddCommand(cmd) + } + + { // get-org-compliance-announcement + var orgId string + cmd := &cobra.Command{ + Use: "get-org-compliance-announcement", + Short: "Get details for the organization Compliance Announcement Setting", + Long: "Retrieve the organization compliance announcement settings.\n\nThe Compliance Announcement feature interacts with the Call Recording feature, specifically with the playback of the start/stop announcement. When the compliance announcement is played to the PSTN party, and the PSTN party is connected to a party with call recording enabled, then the start/stop announcement is inhibited.\n\nRetrieving organization compliance announcement setting requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/callRecording/complianceAnnouncement") + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve compliance announcement setting from this organization.") + callRecordingCmd.AddCommand(cmd) + } + + { // update-org-compliance-announcement + var orgId string + var inboundPstncallsEnabled bool + var outboundPstncallsEnabled bool + var outboundPstncallsDelayEnabled bool + var delayInSeconds int64 + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-org-compliance-announcement", + Short: "Update the organization Compliance Announcement", + Long: "Update the organization compliance announcement.\n\nThe Compliance Announcement feature interacts with the Call Recording feature, specifically with the playback of the start/stop announcement. When the compliance announcement is played to the PSTN party, and the PSTN party is connected to a party with call recording enabled, then the start/stop announcement is inhibited.\n\nUpdating the organization compliance announcement requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/callRecording/complianceAnnouncement") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("inboundPSTNCallsEnabled", inboundPstncallsEnabled, cmd.Flags().Changed("inbound-pstncalls-enabled")) + req.BodyBool("outboundPSTNCallsEnabled", outboundPstncallsEnabled, cmd.Flags().Changed("outbound-pstncalls-enabled")) + req.BodyBool("outboundPSTNCallsDelayEnabled", outboundPstncallsDelayEnabled, cmd.Flags().Changed("outbound-pstncalls-delay-enabled")) + req.BodyInt("delayInSeconds", delayInSeconds, cmd.Flags().Changed("delay-in-seconds")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Update the compliance announcement setting from this organization.") + cmd.Flags().BoolVar(&inboundPstncallsEnabled, "inbound-pstncalls-enabled", false, "") + cmd.Flags().BoolVar(&outboundPstncallsEnabled, "outbound-pstncalls-enabled", false, "") + cmd.Flags().BoolVar(&outboundPstncallsDelayEnabled, "outbound-pstncalls-delay-enabled", false, "") + cmd.Flags().Int64Var(&delayInSeconds, "delay-in-seconds", 0, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callRecordingCmd.AddCommand(cmd) + } + + { // get-location-compliance-announcement + var locationId string + var orgId string + cmd := &cobra.Command{ + Use: "get-location-compliance-announcement", + Short: "Get details for the Location Compliance Announcement Setting", + Long: "Retrieve the location compliance announcement settings.\n\nThe Compliance Announcement feature interacts with the Call Recording feature, specifically with the playback of the start/stop announcement. When the compliance announcement is played to the PSTN party, and the PSTN party is connected to a party with call recording enabled, then the start/stop announcement is inhibited.\n\nRetrieving location compliance announcement setting requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/callRecording/complianceAnnouncement") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Retrieve compliance announcement settings for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve compliance announcement setting from this organization.") + callRecordingCmd.AddCommand(cmd) + } + + { // update-location-compliance-announcement + var locationId string + var orgId string + var inboundPstncallsEnabled bool + var useOrgSettingsEnabled bool + var outboundPstncallsEnabled bool + var outboundPstncallsDelayEnabled bool + var delayInSeconds int64 + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-location-compliance-announcement", + Short: "Update the Location Compliance Announcement", + Long: "Update the location compliance announcement.\n\nThe Compliance Announcement feature interacts with the Call Recording feature, specifically with the playback of the start/stop announcement. When the compliance announcement is played to the PSTN party, and the PSTN party is connected to a party with call recording enabled, then the start/stop announcement is inhibited.\n\nUpdating the location compliance announcement requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/locations/{locationId}/callRecording/complianceAnnouncement") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("inboundPSTNCallsEnabled", inboundPstncallsEnabled, cmd.Flags().Changed("inbound-pstncalls-enabled")) + req.BodyBool("useOrgSettingsEnabled", useOrgSettingsEnabled, cmd.Flags().Changed("use-org-settings-enabled")) + req.BodyBool("outboundPSTNCallsEnabled", outboundPstncallsEnabled, cmd.Flags().Changed("outbound-pstncalls-enabled")) + req.BodyBool("outboundPSTNCallsDelayEnabled", outboundPstncallsDelayEnabled, cmd.Flags().Changed("outbound-pstncalls-delay-enabled")) + req.BodyInt("delayInSeconds", delayInSeconds, cmd.Flags().Changed("delay-in-seconds")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Update the compliance announcement settings for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Update the compliance announcement setting from this organization.") + cmd.Flags().BoolVar(&inboundPstncallsEnabled, "inbound-pstncalls-enabled", false, "") + cmd.Flags().BoolVar(&useOrgSettingsEnabled, "use-org-settings-enabled", false, "") + cmd.Flags().BoolVar(&outboundPstncallsEnabled, "outbound-pstncalls-enabled", false, "") + cmd.Flags().BoolVar(&outboundPstncallsDelayEnabled, "outbound-pstncalls-delay-enabled", false, "") + cmd.Flags().Int64Var(&delayInSeconds, "delay-in-seconds", 0, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callRecordingCmd.AddCommand(cmd) + } + + { // get-regions + var orgId string + cmd := &cobra.Command{ + Use: "get-regions", + Short: "Get Call Recording Regions", + Long: "Retrieve all the call recording regions that are available for an organization.\n\nThe Call Recording feature supports multiple third-party call recording providers, or vendors, to capture and manage call recordings. An organization is configured with an overall provider, but locations can be configured to use a different vendor than the overall organization default.\n\nRequires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/callRecording/regions") + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve call recording regions for this organization.") + callRecordingCmd.AddCommand(cmd) + } + + { // get-vendor-users + var orgId string + var max string + var start string + var standardUserOnly string + cmd := &cobra.Command{ + Use: "get-vendor-users", + Short: "Get Call Recording Vendor Users", + Long: "Retrieve call recording vendor users of an organization. This API is used to get the list of users who are assigned to the default call-recording vendor of the organization.\n\nThe Call Recording feature supports multiple third-party call recording providers, or vendors, to capture and manage call recordings. An organization is configured with an overall provider, but locations can be configured to use a different vendor than the overall organization default.\n\nRequires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/callRecording/vendorUsers") + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("standardUserOnly", standardUserOnly) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve call recording vendor users for this organization.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of vendor users returned to this maximum count. The default is 2000.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching objects. The default is 0.") + cmd.Flags().StringVar(&standardUserOnly, "standard-user-only", "", "If true, results only include Webex Calling standard users.") + callRecordingCmd.AddCommand(cmd) + } + + { // update-vendor-location + var locationId string + var orgId string + var id string + var orgDefaultEnabled bool + var storageRegion string + var orgStorageRegionEnabled bool + var failureBehavior string + var orgFailureBehaviorEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-vendor-location", + Short: "Set Call Recording Vendor for a Location", + Long: "Assign a call recording vendor to a location of an organization. Response will be `204` if the changes can be applied immediatley otherwise `200` with a job ID is returned.\n\nThe Call Recording feature supports multiple third-party call recording providers, or vendors, to capture and manage call recordings. An organization is configured with an overall provider, but locations can be configured to use a different vendor than the overall organization default.\n\nRequires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/locations/{locationId}/callRecording/vendor") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("id", id) + req.BodyBool("orgDefaultEnabled", orgDefaultEnabled, cmd.Flags().Changed("org-default-enabled")) + req.BodyString("storageRegion", storageRegion) + req.BodyBool("orgStorageRegionEnabled", orgStorageRegionEnabled, cmd.Flags().Changed("org-storage-region-enabled")) + req.BodyString("failureBehavior", failureBehavior) + req.BodyBool("orgFailureBehaviorEnabled", orgFailureBehaviorEnabled, cmd.Flags().Changed("org-failure-behavior-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Update the call recording vendor for this location") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Update the call recording vendor for this organization.") + cmd.Flags().StringVar(&id, "id", "", "") + cmd.Flags().BoolVar(&orgDefaultEnabled, "org-default-enabled", false, "") + cmd.Flags().StringVar(&storageRegion, "storage-region", "", "") + cmd.Flags().BoolVar(&orgStorageRegionEnabled, "org-storage-region-enabled", false, "") + cmd.Flags().StringVar(&failureBehavior, "failure-behavior", "", "") + cmd.Flags().BoolVar(&orgFailureBehaviorEnabled, "org-failure-behavior-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callRecordingCmd.AddCommand(cmd) + } + + { // get-location-vendors + var locationId string + var orgId string + cmd := &cobra.Command{ + Use: "get-location-vendors", + Short: "Get Location Call Recording Vendors", + Long: "Retrieve details of the call recording vendor that the location is assigned and also a list of vendors.\n\nThe Call Recording feature supports multiple third-party call recording providers, or vendors, to capture and manage call recordings. An organization is configured with an overall provider, but locations can be configured to use a different vendor than the overall organization default.\n\nRequires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/callRecording/vendors") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Retrieve vendor details for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve vendor details for this organization.") + callRecordingCmd.AddCommand(cmd) + } + + { // get-vendor-users-location + var locationId string + var orgId string + var max string + var start string + var standardUserOnly string + cmd := &cobra.Command{ + Use: "get-vendor-users-location", + Short: "Get Call Recording Vendor Users for a Location", + Long: "Retrieve call recording vendor users of a location. This API is used to get the list of users assigned to the call recording vendor of the location.\n\nThe Call Recording feature supports multiple third-party call recording providers, or vendors, to capture and manage call recordings. An organization is configured with an overall provider, but locations can be configured to use a different vendor than the overall organization default.\n\nRequires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/callRecording/vendorUsers") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("standardUserOnly", standardUserOnly) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Retrieve vendor users for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve vendor users for this organization.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of vendor users returned to this maximum count. The default is 2000.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching objects. The default is 0.") + cmd.Flags().StringVar(&standardUserOnly, "standard-user-only", "", "If true, results only include Webex Calling standard users.") + callRecordingCmd.AddCommand(cmd) + } + + { // list-jobs + var orgId string + var max string + var start string + cmd := &cobra.Command{ + Use: "list-jobs", + Short: "List Call Recording Jobs", + Long: "Get the list of all call recording jobs in an organization.\n\nThe Call Recording feature supports multiple third-party call recording providers, or vendors, to capture and manage call recordings. An organization is configured with an overall provider, but locations can be configured to use a different vendor than the overall organization default.\n\nRequires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/jobs/callRecording") + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List call recording jobs in this organization.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of jobs returned to this maximum count. The default is 50.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching objects. The default is 0.") + callRecordingCmd.AddCommand(cmd) + } + + { // get-job-status-job + var jobId string + var orgId string + cmd := &cobra.Command{ + Use: "get-job-status-job", + Short: "Get the Job Status of a Call Recording Job", + Long: "Get the details of a call recording job by its job ID.\n\nThe Call Recording feature supports multiple third-party call recording providers, or vendors, to capture and manage call recordings. An organization is configured with an overall provider, but locations can be configured to use a different vendor than the overall organization default.\n\nRequires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/jobs/callRecording/{jobId}") + req.PathParam("jobId", jobId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&jobId, "job-id", "", "Retrieve job status for this `jobId`.") + cmd.MarkFlagRequired("job-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve job status in this organization.") + callRecordingCmd.AddCommand(cmd) + } + + { // get-job-errors-job + var jobId string + var orgId string + var max string + cmd := &cobra.Command{ + Use: "get-job-errors-job", + Short: "Get Job Errors for a Call Recording Job", + Long: "Get errors for a call recording job in an organization.\n\nThe Call Recording feature supports multiple third-party call recording providers, or vendors, to capture and manage call recordings. An organization is configured with an overall provider, but locations can be configured to use a different vendor than the overall organization default.\n\nRequires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/jobs/callRecording/{jobId}/errors") + req.PathParam("jobId", jobId) + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&jobId, "job-id", "", "Retrieve job errors for this job.") + cmd.MarkFlagRequired("job-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve job errors for a call recording job in this organization.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of errors returned to this maximum count. The default is 50.") + callRecordingCmd.AddCommand(cmd) + } + + { // get-org-vendors + var orgId string + cmd := &cobra.Command{ + Use: "get-org-vendors", + Short: "Get Organization Call Recording Vendors", + Long: "Returns what the current vendor is as well as a list of all the available vendors.\n\nThe Call Recording feature supports multiple third-party call recording providers, or vendors, to capture and manage call recordings. An organization is configured with an overall provider, but locations can be configured to use a different vendor than the overall organization default.\n\nRequires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/callRecording/vendors") + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve call recording settings from this organization.") + callRecordingCmd.AddCommand(cmd) + } + + { // update-org-vendor + var orgId string + var vendorId string + var storageRegion string + var failureBehavior string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-org-vendor", + Short: "Set Organization Call Recording Vendor", + Long: "Returns a Job ID that you can use to get the status of the job.\n\nThe Call Recording feature supports multiple third-party call recording providers, or vendors, to capture and manage call recordings. An organization is configured with an overall provider, but locations can be configured to use a different vendor than the overall organization default.\n\nRequires a full administrator auth token with a scope of `spark-admin:telephony_config_write`, `spark-admin:telephony_config_read`, and `spark-admin:people_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/callRecording/vendor") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("vendorId", vendorId) + req.BodyString("storageRegion", storageRegion) + req.BodyString("failureBehavior", failureBehavior) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Modify call recording settings from this organization.") + cmd.Flags().StringVar(&vendorId, "vendor-id", "", "") + cmd.Flags().StringVar(&storageRegion, "storage-region", "", "") + cmd.Flags().StringVar(&failureBehavior, "failure-behavior", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callRecordingCmd.AddCommand(cmd) + } + +} diff --git a/cmd/calling/call_routing.go b/cmd/calling/call_routing.go new file mode 100644 index 0000000..5b2573c --- /dev/null +++ b/cmd/calling/call_routing.go @@ -0,0 +1,1705 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package calling + +import ( + "fmt" + "strconv" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa +var _ = strings.Join + +var callRoutingCmd = &cobra.Command{ + Use: "call-routing", + Short: "CallRouting commands", +} + +func init() { + cmd.CallingCmd.AddCommand(callRoutingCmd) + + { // test + var orgId string + var originatorId string + var originatorType string + var destination string + var originatorNumber string + var includeAppliedServices bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "test", + Short: "Test Call Routing", + Long: "Validates that an incoming call can be routed.\n\nDial plans route calls to on-premises destinations by use of trunks or route groups.\nThey are configured globally for an enterprise and apply to all users, regardless of location.\nA dial plan also specifies the routing choice (trunk or route group) for calls that match any of its dial patterns.\nSpecific dial patterns can be defined as part of your dial plan.\n\nTest call routing requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/actions/testCallRouting/invoke") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("originatorId", originatorId) + req.BodyString("originatorType", originatorType) + req.BodyString("destination", destination) + req.BodyString("originatorNumber", originatorNumber) + req.BodyBool("includeAppliedServices", includeAppliedServices, cmd.Flags().Changed("include-applied-services")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization in which we are validating a call routing.") + cmd.Flags().StringVar(&originatorId, "originator-id", "", "") + cmd.Flags().StringVar(&originatorType, "originator-type", "", "") + cmd.Flags().StringVar(&destination, "destination", "", "") + cmd.Flags().StringVar(&originatorNumber, "originator-number", "", "") + cmd.Flags().BoolVar(&includeAppliedServices, "include-applied-services", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callRoutingCmd.AddCommand(cmd) + } + + { // get-lgw-dial-plan-usage-trunk + var trunkId string + var orgId string + var start string + var max string + var order string + var name string + cmd := &cobra.Command{ + Use: "get-lgw-dial-plan-usage-trunk", + Short: "Get Local Gateway Dial Plan Usage for a Trunk", + Long: "Get Local Gateway Dial Plan Usage for a Trunk.\n\nA trunk is a connection between Webex Calling and the premises, which terminates on the premises with a local gateway or other supported device.\nThe trunk can be assigned to a Route Group which is a group of trunks that allow Webex Calling to distribute calls over multiple trunks or to provide redundancy.\n\nRetrieving this information requires a full administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/premisePstn/trunks/{trunkId}/usageDialPlan") + req.PathParam("trunkId", trunkId) + req.QueryParam("orgId", orgId) + req.QueryParam("start", start) + req.QueryParam("max", max) + req.QueryParam("order", order) + req.QueryParam("name", name) + req.QueryParam("name", name) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&trunkId, "trunk-id", "", "ID of the trunk.") + cmd.MarkFlagRequired("trunk-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization to which the trunk belongs.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching objects.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of objects returned to this maximum count.") + cmd.Flags().StringVar(&order, "order", "", "Order the trunks according to the designated fields. Available sort fields are `name`, and `locationName`. Sort order is ascending by default") + cmd.Flags().StringVar(&name, "name", "", "Return the list of trunks matching the local gateway names") + callRoutingCmd.AddCommand(cmd) + } + + { // get-locations-lgw-pstn-connection + var trunkId string + var orgId string + cmd := &cobra.Command{ + Use: "get-locations-lgw-pstn-connection", + Short: "Get Locations Using the Local Gateway as PSTN Connection Routing", + Long: "Get Locations Using the Local Gateway as PSTN Connection Routing.\n\nA trunk is a connection between Webex Calling and the premises, which terminates on the premises with a local gateway or other supported device.\nThe trunk can be assigned to a Route Group which is a group of trunks that allow Webex Calling to distribute calls over multiple trunks or to provide redundancy.\n\nRetrieving this information requires a full administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/premisePstn/trunks/{trunkId}/usagePstnConnection") + req.PathParam("trunkId", trunkId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&trunkId, "trunk-id", "", "ID of the trunk.") + cmd.MarkFlagRequired("trunk-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization to which the trunk belongs.") + callRoutingCmd.AddCommand(cmd) + } + + { // get-route-groups-lgw + var trunkId string + var orgId string + cmd := &cobra.Command{ + Use: "get-route-groups-lgw", + Short: "Get Route Groups Using the Local Gateway", + Long: "Get Route Groups Using the Local Gateway.\n\nA trunk is a connection between Webex Calling and the premises, which terminates on the premises with a local gateway or other supported device.\nThe trunk can be assigned to a Route Group which is a group of trunks that allow Webex Calling to distribute calls over multiple trunks or to provide redundancy.\n\nRetrieving this information requires a full administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/premisePstn/trunks/{trunkId}/usageRouteGroup") + req.PathParam("trunkId", trunkId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&trunkId, "trunk-id", "", "ID of the trunk.") + cmd.MarkFlagRequired("trunk-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization to which the trunk belongs.") + callRoutingCmd.AddCommand(cmd) + } + + { // get-lgw-usage-count + var trunkId string + var orgId string + cmd := &cobra.Command{ + Use: "get-lgw-usage-count", + Short: "Get Local Gateway Usage Count", + Long: "Get Local Gateway Usage Count\n\nA trunk is a connection between Webex Calling and the premises, which terminates on the premises with a local gateway or other supported device.\nThe trunk can be assigned to a Route Group which is a group of trunks that allow Webex Calling to distribute calls over multiple trunks or to provide redundancy.\n\nRetrieving this information requires a full administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/premisePstn/trunks/{trunkId}/usage") + req.PathParam("trunkId", trunkId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&trunkId, "trunk-id", "", "ID of the trunk.") + cmd.MarkFlagRequired("trunk-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization to which the trunk belongs.") + callRoutingCmd.AddCommand(cmd) + } + + { // update-dial-patterns + var dialPlanId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-dial-patterns", + Short: "Modify Dial Patterns", + Long: "Modify dial patterns for the Dial Plan.\n\nDial plans route calls to on-premises destinations by use of trunks or route groups.\nThey are configured globally for an enterprise and apply to all users, regardless of location.\nA dial plan also specifies the routing choice (trunk or route group) for calls that match any of its dial patterns.\nSpecific dial patterns can be defined as part of your dial plan.\n\nModifying a dial pattern requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/premisePstn/dialPlans/{dialPlanId}/dialPatterns") + req.PathParam("dialPlanId", dialPlanId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&dialPlanId, "dial-plan-id", "", "ID of the dial plan being modified.") + cmd.MarkFlagRequired("dial-plan-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization to which dial plan belongs.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callRoutingCmd.AddCommand(cmd) + } + + { // validate-dial-pattern + var orgId string + var dialPatterns []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "validate-dial-pattern", + Short: "Validate a Dial Pattern", + Long: "Validate a Dial Pattern.\n\nDial plans route calls to on-premises destinations by use of trunks or route groups.\nThey are configured globally for an enterprise and apply to all users, regardless of location.\nA dial plan also specifies the routing choice (trunk or route group) for calls that match any of its dial patterns.\nSpecific dial patterns can be defined as part of your dial plan.\n\nValidating a dial pattern requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/premisePstn/actions/validateDialPatterns/invoke") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("dialPatterns", dialPatterns) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization to which dial plan belongs.") + cmd.Flags().StringSliceVar(&dialPatterns, "dial-patterns", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callRoutingCmd.AddCommand(cmd) + } + + { // list-dial-plans + var orgId string + var dialPlanName string + var routeGroupName string + var trunkName string + var max string + var start string + var order string + cmd := &cobra.Command{ + Use: "list-dial-plans", + Short: "Read the List of Dial Plans", + Long: "List all Dial Plans for the organization.\n\nDial plans route calls to on-premises destinations by use of the trunks or route groups with which the dial plan is associated. Multiple dial patterns can be defined as part of your dial plan. Dial plans are configured globally for an enterprise and apply to all users, regardless of location.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/premisePstn/dialPlans") + req.QueryParam("orgId", orgId) + req.QueryParam("dialPlanName", dialPlanName) + req.QueryParam("routeGroupName", routeGroupName) + req.QueryParam("trunkName", trunkName) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("order", order) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List dial plans for this organization.") + cmd.Flags().StringVar(&dialPlanName, "dial-plan-name", "", "Return the list of dial plans matching the dial plan name.") + cmd.Flags().StringVar(&routeGroupName, "route-group-name", "", "Return the list of dial plans matching the Route group name..") + cmd.Flags().StringVar(&trunkName, "trunk-name", "", "Return the list of dial plans matching the Trunk name..") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of objects returned to this maximum count.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching objects.") + cmd.Flags().StringVar(&order, "order", "", "Order the dial plans according to the designated fields. Available sort fields: `name`, `routeName`, `routeType`. Sort order is ascending by default") + callRoutingCmd.AddCommand(cmd) + } + + { // create-dial-plan + var orgId string + var name string + var routeId string + var routeType string + var dialPatterns []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-dial-plan", + Short: "Create a Dial Plan", + Long: "Create a Dial Plan for the organization.\n\nDial plans route calls to on-premises destinations by use of trunks or route groups.\nThey are configured globally for an enterprise and apply to all users, regardless of location.\nA dial plan also specifies the routing choice (trunk or route group) for calls that match any of its dial patterns.\nSpecific dial patterns can be defined as part of your dial plan.\n\nCreating a dial plan requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/premisePstn/dialPlans") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("name", name) + req.BodyString("routeId", routeId) + req.BodyString("routeType", routeType) + req.BodyStringSlice("dialPatterns", dialPatterns) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization to which dial plan belongs.") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&routeId, "route-id", "", "") + cmd.Flags().StringVar(&routeType, "route-type", "", "") + cmd.Flags().StringSliceVar(&dialPatterns, "dial-patterns", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callRoutingCmd.AddCommand(cmd) + } + + { // get-dial-plan + var dialPlanId string + var orgId string + cmd := &cobra.Command{ + Use: "get-dial-plan", + Short: "Get a Dial Plan", + Long: "Get a Dial Plan for the organization.\n\nDial plans route calls to on-premises destinations by use of trunks or route groups.\nThey are configured globally for an enterprise and apply to all users, regardless of location.\nA dial plan also specifies the routing choice (trunk or route group) for calls that match any of its dial patterns.\nSpecific dial patterns can be defined as part of your dial plan.\n\nRetrieving a dial plan requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/premisePstn/dialPlans/{dialPlanId}") + req.PathParam("dialPlanId", dialPlanId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&dialPlanId, "dial-plan-id", "", "ID of the dial plan.") + cmd.MarkFlagRequired("dial-plan-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization to which dial plan belongs.") + callRoutingCmd.AddCommand(cmd) + } + + { // update-dial-plan + var dialPlanId string + var orgId string + var name string + var routeId string + var routeType string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-dial-plan", + Short: "Modify a Dial Plan", + Long: "Modify a Dial Plan for the organization.\n\nDial plans route calls to on-premises destinations by use of trunks or route groups.\nThey are configured globally for an enterprise and apply to all users, regardless of location.\nA dial plan also specifies the routing choice (trunk or route group) for calls that match any of its dial patterns.\nSpecific dial patterns can be defined as part of your dial plan.\n\nModifying a dial plan requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/premisePstn/dialPlans/{dialPlanId}") + req.PathParam("dialPlanId", dialPlanId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("name", name) + req.BodyString("routeId", routeId) + req.BodyString("routeType", routeType) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&dialPlanId, "dial-plan-id", "", "ID of the dial plan being modified.") + cmd.MarkFlagRequired("dial-plan-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization to which dial plan belongs.") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&routeId, "route-id", "", "") + cmd.Flags().StringVar(&routeType, "route-type", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callRoutingCmd.AddCommand(cmd) + } + + { // delete-dial-plan + var dialPlanId string + var orgId string + cmd := &cobra.Command{ + Use: "delete-dial-plan", + Short: "Delete a Dial Plan", + Long: "Delete a Dial Plan for the organization.\n\nDial plans route calls to on-premises destinations by use of trunks or route groups.\nThey are configured globally for an enterprise and apply to all users, regardless of location.\nA dial plan also specifies the routing choice (trunk or route group) for calls that match any of its dial patterns.\nSpecific dial patterns can be defined as part of your dial plan.\n\nDeleting a dial plan requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/premisePstn/dialPlans/{dialPlanId}") + req.PathParam("dialPlanId", dialPlanId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&dialPlanId, "dial-plan-id", "", "ID of the dial plan.") + cmd.MarkFlagRequired("dial-plan-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization to which dial plan belongs.") + callRoutingCmd.AddCommand(cmd) + } + + { // validate-lgw-fqdn-domain-trunk + var orgId string + var address string + var domain string + var port int64 + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "validate-lgw-fqdn-domain-trunk", + Short: "Validate Local Gateway FQDN and Domain for a Trunk", + Long: "Validate Local Gateway FQDN and Domain for the organization trunks.\n\nA Trunk is a connection between Webex Calling and the premises, which terminates on the premises with a local gateway or other supported device.\nThe trunk can be assigned to a Route Group - a group of trunks that allow Webex Calling to distribute calls over multiple trunks or to provide redundancy.\n\nValidating Local Gateway FQDN and Domain requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/premisePstn/trunks/actions/fqdnValidation/invoke") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("address", address) + req.BodyString("domain", domain) + req.BodyInt("port", port, cmd.Flags().Changed("port")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization to which trunk types belongs.") + cmd.Flags().StringVar(&address, "address", "", "") + cmd.Flags().StringVar(&domain, "domain", "", "") + cmd.Flags().Int64Var(&port, "port", 0, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callRoutingCmd.AddCommand(cmd) + } + + { // list-trunks + var orgId string + var name string + var locationName string + var trunkType string + var max string + var start string + var order string + cmd := &cobra.Command{ + Use: "list-trunks", + Short: "Read the List of Trunks", + Long: "List all Trunks for the organization.\n\nA Trunk is a connection between Webex Calling and the premises, which terminates on the premises with a local gateway or other supported device.\nThe trunk can be assigned to a Route Group - a group of trunks that allow Webex Calling to distribute calls over multiple trunks or to provide redundancy.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/premisePstn/trunks") + req.QueryParam("orgId", orgId) + req.QueryParam("name", name) + req.QueryParam("name", name) + req.QueryParam("locationName", locationName) + req.QueryParam("locationName", locationName) + req.QueryParam("trunkType", trunkType) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("order", order) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List trunks for this organization.") + cmd.Flags().StringVar(&name, "name", "", "Return the list of trunks matching the local gateway names.") + cmd.Flags().StringVar(&locationName, "location-name", "", "Return the list of trunks matching the location names.") + cmd.Flags().StringVar(&trunkType, "trunk-type", "", "Return the list of trunks matching the trunk type.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of objects returned to this maximum count.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching objects.") + cmd.Flags().StringVar(&order, "order", "", "Order the trunks according to the designated fields. Available sort fields: name, locationName. Sort order is ascending by default") + callRoutingCmd.AddCommand(cmd) + } + + { // create-trunk + var orgId string + var name string + var locationId string + var password string + var trunkType string + var dualIdentitySupportEnabled bool + var deviceType string + var address string + var domain string + var port int64 + var maxConcurrentCalls int64 + var pChargeInfoSupportPolicy string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-trunk", + Short: "Create a Trunk", + Long: "Create a Trunk for the organization.\n\nA Trunk is a connection between Webex Calling and the premises, which terminates on the premises with a local gateway or other supported device.\nThe trunk can be assigned to a Route Group which is a group of trunks that allow Webex Calling to distribute calls over multiple trunks or to provide redundancy.\n\nCreating a trunk requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/premisePstn/trunks") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("name", name) + req.BodyString("locationId", locationId) + req.BodyString("password", password) + req.BodyString("trunkType", trunkType) + req.BodyBool("dualIdentitySupportEnabled", dualIdentitySupportEnabled, cmd.Flags().Changed("dual-identity-support-enabled")) + req.BodyString("deviceType", deviceType) + req.BodyString("address", address) + req.BodyString("domain", domain) + req.BodyInt("port", port, cmd.Flags().Changed("port")) + req.BodyInt("maxConcurrentCalls", maxConcurrentCalls, cmd.Flags().Changed("max-concurrent-calls")) + req.BodyString("pChargeInfoSupportPolicy", pChargeInfoSupportPolicy) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization to which the trunk belongs.") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&locationId, "location-id", "", "") + cmd.Flags().StringVar(&password, "password", "", "") + cmd.Flags().StringVar(&trunkType, "trunk-type", "", "") + cmd.Flags().BoolVar(&dualIdentitySupportEnabled, "dual-identity-support-enabled", false, "") + cmd.Flags().StringVar(&deviceType, "device-type", "", "") + cmd.Flags().StringVar(&address, "address", "", "") + cmd.Flags().StringVar(&domain, "domain", "", "") + cmd.Flags().Int64Var(&port, "port", 0, "") + cmd.Flags().Int64Var(&maxConcurrentCalls, "max-concurrent-calls", 0, "") + cmd.Flags().StringVar(&pChargeInfoSupportPolicy, "p-charge-info-support-policy", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callRoutingCmd.AddCommand(cmd) + } + + { // get-trunk + var trunkId string + var orgId string + cmd := &cobra.Command{ + Use: "get-trunk", + Short: "Get a Trunk", + Long: "Get a Trunk for the organization.\n\nA Trunk is a connection between Webex Calling and the premises, which terminates on the premises with a local gateway or other supported device.\nThe trunk can be assigned to a Route Group - a group of trunks that allow Webex Calling to distribute calls over multiple trunks or to provide redundancy.\n\nRetrieving a trunk requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/premisePstn/trunks/{trunkId}") + req.PathParam("trunkId", trunkId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&trunkId, "trunk-id", "", "ID of the trunk.") + cmd.MarkFlagRequired("trunk-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization to which trunk belongs.") + callRoutingCmd.AddCommand(cmd) + } + + { // update-trunk + var trunkId string + var orgId string + var name string + var password string + var dualIdentitySupportEnabled bool + var maxConcurrentCalls int64 + var pChargeInfoSupportPolicy string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-trunk", + Short: "Modify a Trunk", + Long: "Modify a Trunk for the organization.\n\nA Trunk is a connection between Webex Calling and the premises, which terminates on the premises with a local gateway or other supported device.\nThe trunk can be assigned to a Route Group - a group of trunks that allow Webex Calling to distribute calls over multiple trunks or to provide redundancy.\n\nModifying a trunk requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/premisePstn/trunks/{trunkId}") + req.PathParam("trunkId", trunkId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("name", name) + req.BodyString("password", password) + req.BodyBool("dualIdentitySupportEnabled", dualIdentitySupportEnabled, cmd.Flags().Changed("dual-identity-support-enabled")) + req.BodyInt("maxConcurrentCalls", maxConcurrentCalls, cmd.Flags().Changed("max-concurrent-calls")) + req.BodyString("pChargeInfoSupportPolicy", pChargeInfoSupportPolicy) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&trunkId, "trunk-id", "", "ID of the trunk being modified.") + cmd.MarkFlagRequired("trunk-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization to which trunk belongs.") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&password, "password", "", "") + cmd.Flags().BoolVar(&dualIdentitySupportEnabled, "dual-identity-support-enabled", false, "") + cmd.Flags().Int64Var(&maxConcurrentCalls, "max-concurrent-calls", 0, "") + cmd.Flags().StringVar(&pChargeInfoSupportPolicy, "p-charge-info-support-policy", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callRoutingCmd.AddCommand(cmd) + } + + { // delete-trunk + var trunkId string + var orgId string + cmd := &cobra.Command{ + Use: "delete-trunk", + Short: "Delete a Trunk", + Long: "Delete a Trunk for the organization.\n\nA Trunk is a connection between Webex Calling and the premises, which terminates on the premises with a local gateway or other supported device.\nThe trunk can be assigned to a Route Group - a group of trunks that allow Webex Calling to distribute calls over multiple trunks or to provide redundancy.\n\nDeleting a trunk requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/premisePstn/trunks/{trunkId}") + req.PathParam("trunkId", trunkId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&trunkId, "trunk-id", "", "ID of the trunk.") + cmd.MarkFlagRequired("trunk-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization to which trunk belongs.") + callRoutingCmd.AddCommand(cmd) + } + + { // list-trunk-types + var orgId string + cmd := &cobra.Command{ + Use: "list-trunk-types", + Short: "Read the List of Trunk Types", + Long: "List all Trunk Types with Device Types for the organization.\n\nA Trunk is a connection between Webex Calling and the premises, which terminates on the premises with a local gateway or other supported device.\nThe trunk can be assigned to a Route Group which is a group of trunks that allow Webex Calling to distribute calls over multiple trunks or to provide redundancy. Trunk Types are Registering or Certificate Based and are configured in Call Manager.\n\nRetrieving trunk types requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/premisePstn/trunks/trunkTypes") + req.QueryParam("orgId", orgId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization to which the trunk types belong.") + callRoutingCmd.AddCommand(cmd) + } + + { // list-groups + var orgId string + var name string + var max string + var start string + var order string + cmd := &cobra.Command{ + Use: "list-groups", + Short: "Read the List of Routing Groups", + Long: "List all Route Groups for an organization. A Route Group is a group of trunks that allows further scale and redundancy with the connection to the premises.\n\nRetrieving this route group list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/premisePstn/routeGroups") + req.QueryParam("orgId", orgId) + req.QueryParam("name", name) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("order", order) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List route groups for this organization.") + cmd.Flags().StringVar(&name, "name", "", "Return the list of route groups matching the Route group name..") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of objects returned to this maximum count.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching objects.") + cmd.Flags().StringVar(&order, "order", "", "Order the route groups according to designated fields. Available sort orders are `asc` and `desc`.") + callRoutingCmd.AddCommand(cmd) + } + + { // create-route-group + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-route-group", + Short: "Create Route Group for a Organization", + Long: "Creates a Route Group for the organization.\n\nA Route Group is a collection of trunks that allows further scale and redundancy with the connection to the premises. Route groups can include up to 10 trunks from different locations.\n\nCreating a Route Group requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/premisePstn/routeGroups") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization to which the Route Group belongs.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callRoutingCmd.AddCommand(cmd) + } + + { // get-route-group + var routeGroupId string + var orgId string + cmd := &cobra.Command{ + Use: "get-route-group", + Short: "Read a Route Group for a Organization", + Long: "Reads a Route Group for the organization based on id.\n\nA Route Group is a collection of trunks that allows further scale and redundancy with the connection to the premises. Route groups can include up to 10 trunks from different locations.\n\nReading a Route Group requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/premisePstn/routeGroups/{routeGroupId}") + req.PathParam("routeGroupId", routeGroupId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&routeGroupId, "route-group-id", "", "Route Group for which details are being requested.") + cmd.MarkFlagRequired("route-group-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization of the Route Group.") + callRoutingCmd.AddCommand(cmd) + } + + { // update-route-group + var routeGroupId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-route-group", + Short: "Modify a Route Group for a Organization", + Long: "Modifies an existing Route Group for an organization based on id.\n\nA Route Group is a collection of trunks that allows further scale and redundancy with the connection to the premises. Route groups can include up to 10 trunks from different locations.\n\nModifying a Route Group requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/premisePstn/routeGroups/{routeGroupId}") + req.PathParam("routeGroupId", routeGroupId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&routeGroupId, "route-group-id", "", "Route Group for which details are being requested.") + cmd.MarkFlagRequired("route-group-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization of the Route Group.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callRoutingCmd.AddCommand(cmd) + } + + { // delete-route-group-org + var routeGroupId string + var orgId string + cmd := &cobra.Command{ + Use: "delete-route-group-org", + Short: "Remove a Route Group from an Organization", + Long: "Remove a Route Group from an Organization based on id.\n\nA Route Group is a collection of trunks that allows further scale and redundancy with the connection to the premises. Route groups can include up to 10 trunks from different locations.\n\nRemoving a Route Group requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/premisePstn/routeGroups/{routeGroupId}") + req.PathParam("routeGroupId", routeGroupId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&routeGroupId, "route-group-id", "", "Route Group for which details are being requested.") + cmd.MarkFlagRequired("route-group-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization of the Route Group.") + callRoutingCmd.AddCommand(cmd) + } + + { // get-usage-group + var routeGroupId string + var orgId string + cmd := &cobra.Command{ + Use: "get-usage-group", + Short: "Read the Usage of a Routing Group", + Long: "List the number of \"Call to\" on-premises Extensions, Dial Plans, PSTN Connections, and Route Lists used by a specific Route Group.\nUsers within Call to Extension locations are registered to a PBX which allows you to route unknown extensions (calling number length of 2-6 digits) to the PBX using an existing Trunk or Route Group.\nPSTN Connections may be a Cisco PSTN, a cloud-connected PSTN, or a premises-based PSTN (local gateway).\nDial Plans allow you to route calls to on-premises extensions via your trunk or route group.\nRoute Lists are a list of numbers that can be reached via a route group and can be used to provide cloud PSTN connectivity to Webex Calling Dedicated Instance.\n\nRetrieving usage information requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/premisePstn/routeGroups/{routeGroupId}/usage") + req.PathParam("routeGroupId", routeGroupId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&routeGroupId, "route-group-id", "", "ID of the requested Route group.") + cmd.MarkFlagRequired("route-group-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization associated with the specific route group.") + callRoutingCmd.AddCommand(cmd) + } + + { // get-extension-locations-group + var routeGroupId string + var orgId string + var locationName string + var max string + var start string + var order string + cmd := &cobra.Command{ + Use: "get-extension-locations-group", + Short: "Read the Call to Extension Locations of a Routing Group", + Long: "List \"Call to\" on-premises Extension Locations for a specific route group. Users within these locations are registered to a PBX which allows you to route unknown extensions (calling number length of 2-6 digits) to the PBX using an existing trunk or route group.\n\nRetrieving this location list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/premisePstn/routeGroups/{routeGroupId}/usageCallToExtension") + req.PathParam("routeGroupId", routeGroupId) + req.QueryParam("orgId", orgId) + req.QueryParam("locationName", locationName) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("order", order) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&routeGroupId, "route-group-id", "", "ID of the requested Route group.") + cmd.MarkFlagRequired("route-group-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization associated with specific route group.") + cmd.Flags().StringVar(&locationName, "location-name", "", "Return the list of locations matching the location name.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of objects returned to this maximum count.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching objects.") + cmd.Flags().StringVar(&order, "order", "", "Order the locations according to designated fields. Available sort orders are `asc`, and `desc`.") + callRoutingCmd.AddCommand(cmd) + } + + { // get-dial-plan-locations-group + var routeGroupId string + var orgId string + var locationName string + var max string + var start string + var order string + cmd := &cobra.Command{ + Use: "get-dial-plan-locations-group", + Short: "Read the Dial Plan Locations of a Routing Group", + Long: "List Dial Plan Locations for a specific route group.\n\nDial Plans allow you to route calls to on-premises destinations by use of trunks or route groups. They are configured globally for an enterprise and apply to all users, regardless of location.\nA Dial Plan also specifies the routing choice (trunk or route group) for calls that match any of its dial patterns. Specific dial patterns can be defined as part of your dial plan.\n\nRetrieving this location list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/premisePstn/routeGroups/{routeGroupId}/usageDialPlan") + req.PathParam("routeGroupId", routeGroupId) + req.QueryParam("orgId", orgId) + req.QueryParam("locationName", locationName) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("order", order) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&routeGroupId, "route-group-id", "", "ID of the requested Route group.") + cmd.MarkFlagRequired("route-group-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization associated with specific route group.") + cmd.Flags().StringVar(&locationName, "location-name", "", "Return the list of locations matching the location name.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of objects returned to this maximum count.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching objects.") + cmd.Flags().StringVar(&order, "order", "", "Order the locations according to designated fields. Available sort orders are `asc`, and `desc`.") + callRoutingCmd.AddCommand(cmd) + } + + { // get-pstn-connection-locations-group + var routeGroupId string + var orgId string + var locationName string + var max string + var start string + var order string + cmd := &cobra.Command{ + Use: "get-pstn-connection-locations-group", + Short: "Read the PSTN Connection Locations of a Routing Group", + Long: "List PSTN Connection Locations for a specific route group. This solution lets you configure users to use Cloud PSTN (CCP or Cisco PSTN) or Premises-based PSTN.\n\nRetrieving this Location list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/premisePstn/routeGroups/{routeGroupId}/usagePstnConnection") + req.PathParam("routeGroupId", routeGroupId) + req.QueryParam("orgId", orgId) + req.QueryParam("locationName", locationName) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("order", order) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&routeGroupId, "route-group-id", "", "ID of the requested Route group.") + cmd.MarkFlagRequired("route-group-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization associated with specific route group.") + cmd.Flags().StringVar(&locationName, "location-name", "", "Return the list of locations matching the location name.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of objects returned to this maximum count.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching objects.") + cmd.Flags().StringVar(&order, "order", "", "Order the locations according to designated fields. Available sort orders are `asc`, and `desc`.") + callRoutingCmd.AddCommand(cmd) + } + + { // get-route-lists-group + var routeGroupId string + var orgId string + var name string + var max string + var start string + var order string + cmd := &cobra.Command{ + Use: "get-route-lists-group", + Short: "Read the Route Lists of a Routing Group", + Long: "List Route Lists for a specific route group. Route Lists are a list of numbers that can be reached via a Route Group. It can be used to provide cloud PSTN connectivity to Webex Calling Dedicated Instance.\n\nRetrieving this list of Route Lists requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/premisePstn/routeGroups/{routeGroupId}/usageRouteList") + req.PathParam("routeGroupId", routeGroupId) + req.QueryParam("orgId", orgId) + req.QueryParam("name", name) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("order", order) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&routeGroupId, "route-group-id", "", "ID of the requested Route group.") + cmd.MarkFlagRequired("route-group-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization associated with specific route group.") + cmd.Flags().StringVar(&name, "name", "", "Return the list of locations matching the location name.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of objects returned to this maximum count.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching objects.") + cmd.Flags().StringVar(&order, "order", "", "Order the locations according to designated fields. Available sort orders are `asc`, and `desc`.") + callRoutingCmd.AddCommand(cmd) + } + + { // list-route-lists + var orgId string + var start string + var max string + var order string + var name string + var locationId string + cmd := &cobra.Command{ + Use: "list-route-lists", + Short: "Read the List of Route Lists", + Long: "List all Route Lists for the organization.\n\nA Route List is a list of numbers that can be reached via a Route Group. It can be used to provide cloud PSTN connectivity to Webex Calling Dedicated Instance.\n\nRetrieving the Route List requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/premisePstn/routeLists") + req.QueryParam("orgId", orgId) + req.QueryParam("start", start) + req.QueryParam("max", max) + req.QueryParam("order", order) + req.QueryParam("name", name) + req.QueryParam("name", name) + req.QueryParam("locationId", locationId) + req.QueryParam("locationId", locationId) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List all Route List for this organization.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching objects.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of objects returned to this maximum count.") + cmd.Flags().StringVar(&order, "order", "", "Order the Route List according to the designated fields. Available sort fields are `name`, and `locationId`. Sort order is ascending by default") + cmd.Flags().StringVar(&name, "name", "", "Return the list of Route List matching the route list name.") + cmd.Flags().StringVar(&locationId, "location-id", "", "Return the list of Route Lists matching the location id.") + callRoutingCmd.AddCommand(cmd) + } + + { // create-route-list + var orgId string + var name string + var locationId string + var routeGroupId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-route-list", + Short: "Create a Route List", + Long: "Create a Route List for the organization.\n\nA Route List is a list of numbers that can be reached via a Route Group. It can be used to provide cloud PSTN connectivity to Webex Calling Dedicated Instance.\n\nCreating a Route List requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/premisePstn/routeLists") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("name", name) + req.BodyString("locationId", locationId) + req.BodyString("routeGroupId", routeGroupId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization to which the Route List belongs.") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&locationId, "location-id", "", "") + cmd.Flags().StringVar(&routeGroupId, "route-group-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callRoutingCmd.AddCommand(cmd) + } + + { // delete-route-list + var routeListId string + var orgId string + cmd := &cobra.Command{ + Use: "delete-route-list", + Short: "Delete a Route List", + Long: "Delete a route list for a customer.\n\nA Route List is a list of numbers that can be reached via a Route Group. It can be used to provide cloud PSTN connectivity to Webex Calling Dedicated Instance.\n\nDeleting a Route List requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/premisePstn/routeLists/{routeListId}") + req.PathParam("routeListId", routeListId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&routeListId, "route-list-id", "", "ID of the Route List.") + cmd.MarkFlagRequired("route-list-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization to which the Route List belongs.") + callRoutingCmd.AddCommand(cmd) + } + + { // get-route-list + var routeListId string + var orgId string + cmd := &cobra.Command{ + Use: "get-route-list", + Short: "Get a Route List", + Long: "Get a rout list details.\n\nA Route List is a list of numbers that can be reached via a Route Group. It can be used to provide cloud PSTN connectivity to Webex Calling Dedicated Instance.\n\nRetrieving a Route List requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/premisePstn/routeLists/{routeListId}") + req.PathParam("routeListId", routeListId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&routeListId, "route-list-id", "", "ID of the Route List.") + cmd.MarkFlagRequired("route-list-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization to which the Route List belongs.") + callRoutingCmd.AddCommand(cmd) + } + + { // update-route-list + var routeListId string + var orgId string + var name string + var routeGroupId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-route-list", + Short: "Modify a Route List", + Long: "Modify the details for a Route List.\n\nA Route List is a list of numbers that can be reached via a Route Group. It can be used to provide cloud PSTN connectivity to Webex Calling Dedicated Instance.\n\nRetrieving a Route List requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/premisePstn/routeLists/{routeListId}") + req.PathParam("routeListId", routeListId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("name", name) + req.BodyString("routeGroupId", routeGroupId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&routeListId, "route-list-id", "", "ID of the Route List.") + cmd.MarkFlagRequired("route-list-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization to which the Route List belongs.") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&routeGroupId, "route-group-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callRoutingCmd.AddCommand(cmd) + } + + { // update-numbers-route-list + var routeListId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-numbers-route-list", + Short: "Modify Numbers for Route List", + Long: "Modify numbers for a specific Route List of a Customer.\n\nA Route List is a list of numbers that can be reached via a Route Group. It can be used to provide cloud PSTN connectivity to Webex Calling Dedicated Instance.\n\nRetrieving a Route List requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/premisePstn/routeLists/{routeListId}/numbers") + req.PathParam("routeListId", routeListId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&routeListId, "route-list-id", "", "ID of the Route List.") + cmd.MarkFlagRequired("route-list-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization to which the Route List belongs.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callRoutingCmd.AddCommand(cmd) + } + + { // get-numbers-assigned-route-list + var routeListId string + var orgId string + var start string + var max string + var number string + var order string + cmd := &cobra.Command{ + Use: "get-numbers-assigned-route-list", + Short: "Get Numbers assigned to a Route List", + Long: "Get numbers assigned to a Route List\n\nA Route List is a list of numbers that can be reached via a Route Group. It can be used to provide cloud PSTN connectivity to Webex Calling Dedicated Instance.\n\nRetrieving a Route List requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/premisePstn/routeLists/{routeListId}/numbers") + req.PathParam("routeListId", routeListId) + req.QueryParam("orgId", orgId) + req.QueryParam("start", start) + req.QueryParam("max", max) + req.QueryParam("number", number) + req.QueryParam("order", order) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&routeListId, "route-list-id", "", "ID of the Route List.") + cmd.MarkFlagRequired("route-list-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization to which the Route List belongs.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching objects.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of objects returned to this maximum count.") + cmd.Flags().StringVar(&number, "number", "", "Number assigned to the route list.") + cmd.Flags().StringVar(&order, "order", "", "Order the Route Lists according to number, ascending or descending.") + callRoutingCmd.AddCommand(cmd) + } + + { // get-lgw-on-premises-extension-usage-trunk + var trunkId string + var orgId string + var start string + var max string + var order string + var name string + cmd := &cobra.Command{ + Use: "get-lgw-on-premises-extension-usage-trunk", + Short: "Get Local Gateway Call to On-Premises Extension Usage for a Trunk", + Long: "Get local gateway call to on-premises extension usage for a trunk.\n\nA trunk is a connection between Webex Calling and the premises, which terminates on the premises with a local gateway or other supported device.\nThe trunk can be assigned to a Route Group which is a group of trunks that allow Webex Calling to distribute calls over multiple trunks or to provide redundancy.\n\nRetrieving this information requires a full administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/premisePstn/trunks/{trunkId}/usageCallToExtension") + req.PathParam("trunkId", trunkId) + req.QueryParam("orgId", orgId) + req.QueryParam("start", start) + req.QueryParam("max", max) + req.QueryParam("order", order) + req.QueryParam("name", name) + req.QueryParam("name", name) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&trunkId, "trunk-id", "", "ID of the trunk.") + cmd.MarkFlagRequired("trunk-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization to which the trunk belongs.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching objects.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of objects returned to this maximum count.") + cmd.Flags().StringVar(&order, "order", "", "Order the trunks according to the designated fields. Available sort fields are `name`, and `locationName`. Sort order is ascending by default") + cmd.Flags().StringVar(&name, "name", "", "Return the list of trunks matching the local gateway names") + callRoutingCmd.AddCommand(cmd) + } + + { // create-translation-pattern + var orgId string + var name string + var matchingPattern string + var replacementPattern string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-translation-pattern", + Short: "Create a Translation Pattern for an Organization", + Long: "Create a translation pattern for a given organization.\n\nA translation pattern lets you manipulate dialed digits before routing a call and applies to outbound calls only. See [this article](https://help.webex.com/en-us/article/nib9o6h/Translation-patterns-for-outbound-calls) for details about the translation pattern syntax.\n\nRequires a full administrator auth token with the `spark-admin:telephony_config_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/callRouting/translationPatterns") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("name", name) + req.BodyString("matchingPattern", matchingPattern) + req.BodyString("replacementPattern", replacementPattern) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization containing the translation pattern.") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&matchingPattern, "matching-pattern", "", "") + cmd.Flags().StringVar(&replacementPattern, "replacement-pattern", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callRoutingCmd.AddCommand(cmd) + } + + { // list-translation-patterns + var orgId string + var limitToLocationId string + var limitToOrgLevelEnabled string + var max string + var start string + var order string + var name string + var matchingPattern string + cmd := &cobra.Command{ + Use: "list-translation-patterns", + Short: "Retrieve the list of Translation Patterns", + Long: "Retrieve a list of translation patterns for a given organization.\n\nA translation pattern lets you manipulate dialed digits before routing a call and applies to outbound calls only. See [this article](https://help.webex.com/en-us/article/nib9o6h/Translation-patterns-for-outbound-calls) for details about the translation pattern syntax.\n\nRequires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/callRouting/translationPatterns") + req.QueryParam("orgId", orgId) + req.QueryParam("limitToLocationId", limitToLocationId) + req.QueryParam("limitToOrgLevelEnabled", limitToOrgLevelEnabled) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("order", order) + req.QueryParam("name", name) + req.QueryParam("matchingPattern", matchingPattern) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization containing the translation patterns.") + cmd.Flags().StringVar(&limitToLocationId, "limit-to-location-id", "", "When a location ID is passed, then return only the corresponding location level translation patterns.") + cmd.Flags().StringVar(&limitToOrgLevelEnabled, "limit-to-org-level-enabled", "", "When set to be `true`, then return only the organization-level translation patterns.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of objects returned to this maximum count.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching objects.") + cmd.Flags().StringVar(&order, "order", "", "Sort the list of translation patterns according to translation pattern name, ascending or descending.") + cmd.Flags().StringVar(&name, "name", "", "Only return translation patterns with the matching `name`.") + cmd.Flags().StringVar(&matchingPattern, "matching-pattern", "", "Only return translation patterns with the matching `matchingPattern`.") + callRoutingCmd.AddCommand(cmd) + } + + { // get-translation-pattern + var translationId string + var orgId string + cmd := &cobra.Command{ + Use: "get-translation-pattern", + Short: "Retrieve a specific Translation Pattern for an Organization", + Long: "Retrieve the details of a translation pattern for a given organization.\n\nA translation pattern lets you manipulate dialed digits before routing a call and applies to outbound calls only. See [this article](https://help.webex.com/en-us/article/nib9o6h/Translation-patterns-for-outbound-calls) for details about the translation pattern syntax.\n\nRequires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/callRouting/translationPatterns/{translationId}") + req.PathParam("translationId", translationId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&translationId, "translation-id", "", "Retrieve the translation pattern with the matching ID.") + cmd.MarkFlagRequired("translation-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization containing the translation pattern.") + callRoutingCmd.AddCommand(cmd) + } + + { // update-translation-pattern + var translationId string + var orgId string + var name string + var matchingPattern string + var replacementPattern string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-translation-pattern", + Short: "Modify a specific Translation Pattern for an Organization", + Long: "Modify a translation pattern for a given organization.\n\nA translation pattern lets you manipulate dialed digits before routing a call and applies to outbound calls only. See [this article](https://help.webex.com/en-us/article/nib9o6h/Translation-patterns-for-outbound-calls) for details about the translation pattern syntax.\n\nRequires a full administrator auth token with the `spark-admin:telephony_config_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/callRouting/translationPatterns/{translationId}") + req.PathParam("translationId", translationId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("name", name) + req.BodyString("matchingPattern", matchingPattern) + req.BodyString("replacementPattern", replacementPattern) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&translationId, "translation-id", "", "Modify translation pattern with the matching ID.") + cmd.MarkFlagRequired("translation-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization containing the translation pattern.") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&matchingPattern, "matching-pattern", "", "") + cmd.Flags().StringVar(&replacementPattern, "replacement-pattern", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callRoutingCmd.AddCommand(cmd) + } + + { // delete-translation-pattern + var translationId string + var orgId string + cmd := &cobra.Command{ + Use: "delete-translation-pattern", + Short: "Delete a specific Translation Pattern", + Long: "Delete a translation pattern for a given organization.\n\nA translation pattern lets you manipulate dialed digits before routing a call and applies to outbound calls only. See [this article](https://help.webex.com/en-us/article/nib9o6h/Translation-patterns-for-outbound-calls) for details about the translation pattern syntax.\n\nRequires a full administrator auth token with the `spark-admin:telephony_config_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/callRouting/translationPatterns/{translationId}") + req.PathParam("translationId", translationId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&translationId, "translation-id", "", "Delete a translation pattern with the matching ID.") + cmd.MarkFlagRequired("translation-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization containing the translation pattern.") + callRoutingCmd.AddCommand(cmd) + } + + { // create-translation-pattern-location + var locationId string + var orgId string + var name string + var matchingPattern string + var replacementPattern string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-translation-pattern-location", + Short: "Create a Translation Pattern for a Location", + Long: "Create a translation pattern for a given location.\n\nA translation pattern lets you manipulate dialed digits before routing a call and applies to outbound calls only. See [this article](https://help.webex.com/en-us/article/nib9o6h/Translation-patterns-for-outbound-calls) for details about the translation pattern syntax.\n\nRequires a full administrator auth token with the `spark-admin:telephony_config_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/locations/{locationId}/callRouting/translationPatterns") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("name", name) + req.BodyString("matchingPattern", matchingPattern) + req.BodyString("replacementPattern", replacementPattern) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Unique identifier for the location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Only admin users of another organization (such as partners) may use this parameter since the default is the same organization as the token used to access API.") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&matchingPattern, "matching-pattern", "", "") + cmd.Flags().StringVar(&replacementPattern, "replacement-pattern", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callRoutingCmd.AddCommand(cmd) + } + + { // get-translation-pattern-location + var locationId string + var translationId string + var orgId string + cmd := &cobra.Command{ + Use: "get-translation-pattern-location", + Short: "Retrieve a specific Translation Pattern for a Location", + Long: "Retrieve a specific translation pattern for a given location.\n\nA translation pattern lets you manipulate dialed digits before routing a call and applies to outbound calls only. See [this article](https://help.webex.com/en-us/article/nib9o6h/Translation-patterns-for-outbound-calls) for details about the translation pattern syntax.\n\nRequires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/callRouting/translationPatterns/{translationId}") + req.PathParam("locationId", locationId) + req.PathParam("translationId", translationId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Unique identifier for the location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&translationId, "translation-id", "", "Unique identifier for the translation pattern.") + cmd.MarkFlagRequired("translation-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Only admin users of another organization (such as partners) may use this parameter since the default is the same organization as the token used to access API.") + callRoutingCmd.AddCommand(cmd) + } + + { // update-translation-pattern-location + var locationId string + var translationId string + var orgId string + var name string + var matchingPattern string + var replacementPattern string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-translation-pattern-location", + Short: "Modify a specific Translation Pattern for a Location", + Long: "Modify a specific translation pattern for a given location.\n\nA translation pattern lets you manipulate dialed digits before routing a call and applies to outbound calls only. See [this article](https://help.webex.com/en-us/article/nib9o6h/Translation-patterns-for-outbound-calls) for details about the translation pattern syntax.\n\nRequires a full administrator auth token with the `spark-admin:telephony_config_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/locations/{locationId}/callRouting/translationPatterns/{translationId}") + req.PathParam("locationId", locationId) + req.PathParam("translationId", translationId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("name", name) + req.BodyString("matchingPattern", matchingPattern) + req.BodyString("replacementPattern", replacementPattern) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Unique identifier for the location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&translationId, "translation-id", "", "Unique identifier for the translation pattern.") + cmd.MarkFlagRequired("translation-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Only admin users of another organization (such as partners) may use this parameter since the default is the same organization as the token used to access API.") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&matchingPattern, "matching-pattern", "", "") + cmd.Flags().StringVar(&replacementPattern, "replacement-pattern", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callRoutingCmd.AddCommand(cmd) + } + + { // delete-translation-pattern-location + var locationId string + var translationId string + var orgId string + cmd := &cobra.Command{ + Use: "delete-translation-pattern-location", + Short: "Delete a specific Translation Pattern for a Location", + Long: "Delete a specific translation pattern for a given location.\n\nA translation pattern lets you manipulate dialed digits before routing a call and applies to outbound calls only. See [this article](https://help.webex.com/en-us/article/nib9o6h/Translation-patterns-for-outbound-calls) for details about the translation pattern syntax.\n\nRequires a full administrator auth token with the `spark-admin:telephony_config_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/locations/{locationId}/callRouting/translationPatterns/{translationId}") + req.PathParam("locationId", locationId) + req.PathParam("translationId", translationId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Unique identifier for the location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&translationId, "translation-id", "", "Unique identifier for the translation pattern.") + cmd.MarkFlagRequired("translation-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Only admin users of another organization (such as partners) may use this parameter since the default is the same organization as the token used to access API.") + callRoutingCmd.AddCommand(cmd) + } + +} diff --git a/cmd/calling/call_settings_for_me.go b/cmd/calling/call_settings_for_me.go new file mode 100644 index 0000000..16dae23 --- /dev/null +++ b/cmd/calling/call_settings_for_me.go @@ -0,0 +1,5745 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package calling + +import ( + "fmt" + "strconv" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa +var _ = strings.Join + +var callSettingsForMeCmd = &cobra.Command{ + Use: "call-settings-for-me", + Short: "CallSettingsForMe commands", +} + +func init() { + cmd.CallingCmd.AddCommand(callSettingsForMeCmd) + + { // get-my-personal-assistant + cmd := &cobra.Command{ + Use: "get-my-personal-assistant", + Short: "Get My Personal Assistant", + Long: "Retrieve user's own Personal Assistant details.\n\nPersonal Assistant is used to manage a user's incoming calls when they are away.\n\nRetrieving Personal Assistant details requires a user auth token with `spark:telephony_config_read` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/personalAssistant") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-my-personal-assistant + var enabled bool + var presence string + var untilDateTime string + var transferEnabled bool + var transferNumber string + var alerting string + var alertMeFirstNumberOfRings int64 + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-my-personal-assistant", + Short: "Modify My Personal Assistant", + Long: "Update user's own Personal Assistant details.\n\nPersonal Assistant is used to manage a user's incoming calls when they are away.\n\nUpdating Personal Assistant details requires a user auth token with the `spark:telephony_config_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/personalAssistant") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + req.BodyString("presence", presence) + req.BodyString("untilDateTime", untilDateTime) + req.BodyBool("transferEnabled", transferEnabled, cmd.Flags().Changed("transfer-enabled")) + req.BodyString("transferNumber", transferNumber) + req.BodyString("alerting", alerting) + req.BodyInt("alertMeFirstNumberOfRings", alertMeFirstNumberOfRings, cmd.Flags().Changed("alert-me-first-number-of-rings")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().StringVar(&presence, "presence", "", "") + cmd.Flags().StringVar(&untilDateTime, "until-date-time", "", "") + cmd.Flags().BoolVar(&transferEnabled, "transfer-enabled", false, "") + cmd.Flags().StringVar(&transferNumber, "transfer-number", "", "") + cmd.Flags().StringVar(&alerting, "alerting", "", "") + cmd.Flags().Int64Var(&alertMeFirstNumberOfRings, "alert-me-first-number-of-rings", 0, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // list-available-preferred-endpoints + cmd := &cobra.Command{ + Use: "list-available-preferred-endpoints", + Short: "Get List Available Preferred Answer Endpoints", + Long: "Get the person's preferred answer endpoint and the list of endpoints available for selection. The list of endpoints is empty if the person has no endpoints assigned which support the preferred answer endpoint functionality.\n\n A Webex Calling user may be associated with multiple endpoints such as Webex App (desktop or mobile), Cisco desk IP phone, Webex Calling-supported analog devices or third-party endpoints. Preferred answering endpoints allow users to specify which of these devices should be prioritized for answering calls, particularly when a person's extension (or a virtual line assigned to them) rings on multiple devices. This helps ensure that calls are answered on the most convenient or appropriate device for the person.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/availablePreferredAnswerEndpoints") + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-my-secondary-owner-available-preferred-endpoint-list + var lineOwnerId string + cmd := &cobra.Command{ + Use: "get-my-secondary-owner-available-preferred-endpoint-list", + Short: "Get My Secondary Line Owner's Available Preferred Answer Endpoint List", + Long: "Retrieve the list of available preferred answer endpoints for the secondary line owner of the authenticated person. \n\n A Webex Calling user may be associated with multiple endpoints such as Webex App (desktop or mobile), Cisco desk IP phone, Webex Calling-supported analog devices or third-party endpoints. Preferred answering endpoints allow users to specify which of these devices should be prioritized for answering calls, particularly when a person's extension (or a virtual line assigned to them) rings on multiple devices. This helps ensure that calls are answered on the most convenient or appropriate device for the person.\n\n This API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/secondaryLines/{lineOwnerId}/availablePreferredAnswerEndpoints") + req.PathParam("lineOwnerId", lineOwnerId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "Unique identifier for the secondary line owner (applicable only for Virtual Lines).") + cmd.MarkFlagRequired("line-owner-id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-preferred-endpoint + cmd := &cobra.Command{ + Use: "get-preferred-endpoint", + Short: "Get Preferred Answer Endpoint", + Long: "Retrieve the selected preferred answering endpoint for the user. If a preferred endpoint is not set for the person, API returns empty \n\n A Webex Calling user may be associated with multiple endpoints such as Webex App (desktop or mobile), Cisco desk IP phone, Webex Calling-supported analog devices or third-party endpoints. Preferred answering endpoints allow users to specify which of these devices should be prioritized for answering calls, particularly when a person's extension (or a virtual line assigned to them) rings on multiple devices. This helps ensure that calls are answered on the most convenient or appropriate device for the person.\n\n This API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/preferredAnswerEndpoint") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-preferred-endpoint + var preferredAnswerEndpointId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-preferred-endpoint", + Short: "Modify Preferred Answer Endpoint", + Long: "Sets or clears the person\u2019s preferred answer endpoint. To clear the preferred answer endpoint the `id` attribute must be set to null.\n\n A Webex Calling user may be associated with multiple endpoints such as Webex App (desktop or mobile), Cisco desk IP phone, Webex Calling-supported analog devices or third-party endpoints. Preferred answering endpoints allow users to specify which of these devices should be prioritized for answering calls, particularly when a person's extension (or a virtual line assigned to them) rings on multiple devices. This helps ensure that calls are answered on the most convenient or appropriate device for the person.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/preferredAnswerEndpoint") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("preferredAnswerEndpointId", preferredAnswerEndpointId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&preferredAnswerEndpointId, "preferred-answer-endpoint-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-my-secondary-owner-preferred-endpoint + var lineOwnerId string + cmd := &cobra.Command{ + Use: "get-my-secondary-owner-preferred-endpoint", + Short: "Get My Secondary Line Owner's Preferred Answer Endpoint", + Long: "Retrieve the selected preferred answering endpoint for the secondary line owner of the authenticated person. If a preferred endpoint is not set for the person, API returns empty \n\n A Webex Calling user may be associated with multiple endpoints such as Webex App (desktop or mobile), Cisco desk IP phone, Webex Calling-supported analog devices or third-party endpoints. Preferred answering endpoints allow users to specify which of these devices should be prioritized for answering calls, particularly when a person's extension (or a virtual line assigned to them) rings on multiple devices. This helps ensure that calls are answered on the most convenient or appropriate device for the person.\n\n This API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/secondaryLines/{lineOwnerId}/preferredAnswerEndpoint") + req.PathParam("lineOwnerId", lineOwnerId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "Unique identifier for the secondary line owner (applicable only for Virtual Lines).") + cmd.MarkFlagRequired("line-owner-id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-my-secondary-owner-preferred-endpoint + var lineOwnerId string + var preferredAnswerEndpointId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-my-secondary-owner-preferred-endpoint", + Short: "Modify My Secondary Line Owner's Preferred Answer Endpoint", + Long: "Sets or clears the preferred answer endpoint for the secondary line owner of the authenticated person. To clear the preferred answer endpoint the `id` attribute must be set to null.\n\n A Webex Calling user may be associated with multiple endpoints such as Webex App (desktop or mobile), Cisco desk IP phone, Webex Calling-supported analog devices or third-party endpoints. Preferred answering endpoints allow users to specify which of these devices should be prioritized for answering calls, particularly when a person's extension (or a virtual line assigned to them) rings on multiple devices. This helps ensure that calls are answered on the most convenient or appropriate device for the person.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/secondaryLines/{lineOwnerId}/preferredAnswerEndpoint") + req.PathParam("lineOwnerId", lineOwnerId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("preferredAnswerEndpointId", preferredAnswerEndpointId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "Unique identifier for the secondary line owner (applicable only for Virtual Lines).") + cmd.MarkFlagRequired("line-owner-id") + cmd.Flags().StringVar(&preferredAnswerEndpointId, "preferred-answer-endpoint-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-my-webexgooverride + cmd := &cobra.Command{ + Use: "get-my-webexgooverride", + Short: "Get My WebexGoOverride Settings", + Long: "Retrieve \"Mobile User Aware\" override setting for Do Not Disturb feature.\n\nWhen enabled, a mobile device will still ring even if Do Not Disturb, Quiet Hours, or Presenting Status are enabled.\n\nWhen disabled, a mobile device will return busy for all incoming calls if Do Not Disturb, Quiet Hours, or Presenting Status are enabled.\n\nIt requires a user auth token with `spark:telephony_config_read` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/webexGoOverride") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-my-webexgooverride + var enabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-my-webexgooverride", + Short: "Modify My WebexGoOverride Settings", + Long: "Update \"Mobile User Aware\" override setting for Do Not Disturb feature.\n\nWhen enabled, a mobile device will still ring even if Do Not Disturb, Quiet Hours, or Presenting Status are enabled.\n\nWhen disabled, a mobile device will return busy for all incoming calls if Do Not Disturb, Quiet Hours, or Presenting Status are enabled.\n\nIt requires a user auth token with the `spark:telephony_config_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/webexGoOverride") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-my-caller-id + cmd := &cobra.Command{ + Use: "get-my-caller-id", + Short: "Get My Caller ID Settings", + Long: "Get Caller ID Settings for the authenticated user.\n\nCalling Line ID Delivery Blocking in Webex prevents your name and phone number from being shown to people you call.\nConnected Line Identification Restriction allows you to block your name and phone number from being shown when receiving a call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/callerId") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-my-caller-id + var callingLineIdDeliveryBlockingEnabled bool + var connectedLineIdentificationRestrictionEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-my-caller-id", + Short: "Modify My Caller ID Settings", + Long: "Update Caller ID Settings for the authenticated user.\n\nCalling Line ID Delivery Blocking in Webex prevents your name and phone number from being shown to people you call.\nConnected Line Identification Restriction allows you to block your name and phone number from being shown when receiving a call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/callerId") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("callingLineIdDeliveryBlockingEnabled", callingLineIdDeliveryBlockingEnabled, cmd.Flags().Changed("calling-line-id-delivery-blocking-enabled")) + req.BodyBool("connectedLineIdentificationRestrictionEnabled", connectedLineIdentificationRestrictionEnabled, cmd.Flags().Changed("connected-line-identification-restriction-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().BoolVar(&callingLineIdDeliveryBlockingEnabled, "calling-line-id-delivery-blocking-enabled", false, "") + cmd.Flags().BoolVar(&connectedLineIdentificationRestrictionEnabled, "connected-line-identification-restriction-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-my-secondary-owner-caller-id + var lineownerId string + cmd := &cobra.Command{ + Use: "get-my-secondary-owner-caller-id", + Short: "Get My Secondary Line Owner Caller ID Settings", + Long: "Get Caller ID Settings for the secondary line owner of the authenticated user.\n\nNote that the secondary line information is only available for the authenticated user.\n\nCalling Line ID Delivery Blocking in Webex prevents your name and phone number from being shown to people you call.\nConnected Line Identification Restriction allows you to block your name and phone number from being shown when receiving a call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/secondaryLines/{lineownerId}/callerId") + req.PathParam("lineownerId", lineownerId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&lineownerId, "lineowner-id", "", "Unique identifier for the secondary line owner (applicable only for Virtual Lines).") + cmd.MarkFlagRequired("lineowner-id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-my-secondary-owner-caller-id + var lineownerId string + var callingLineIdDeliveryBlockingEnabled bool + var connectedLineIdentificationRestrictionEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-my-secondary-owner-caller-id", + Short: "Modify My Secondary Line Owner Caller ID Settings", + Long: "Update Caller ID Settings for the secondary line owner of the authenticated user.\n\nNote that the secondary line information is only available for the authenticated user.\n\nCalling Line ID Delivery Blocking in Webex prevents your name and phone number from being shown to people you call.\nConnected Line Identification Restriction allows you to block your name and phone number from being shown when receiving a call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/secondaryLines/{lineownerId}/callerId") + req.PathParam("lineownerId", lineownerId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("callingLineIdDeliveryBlockingEnabled", callingLineIdDeliveryBlockingEnabled, cmd.Flags().Changed("calling-line-id-delivery-blocking-enabled")) + req.BodyBool("connectedLineIdentificationRestrictionEnabled", connectedLineIdentificationRestrictionEnabled, cmd.Flags().Changed("connected-line-identification-restriction-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&lineownerId, "lineowner-id", "", "Unique identifier for the secondary line owner (applicable only for Virtual Lines).") + cmd.MarkFlagRequired("lineowner-id") + cmd.Flags().BoolVar(&callingLineIdDeliveryBlockingEnabled, "calling-line-id-delivery-blocking-enabled", false, "") + cmd.Flags().BoolVar(&connectedLineIdentificationRestrictionEnabled, "connected-line-identification-restriction-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-my-selected-caller-id + cmd := &cobra.Command{ + Use: "get-my-selected-caller-id", + Short: "Read My Selected Caller ID Settings", + Long: "Read selected caller ID settings associated with the authenticated user.\n\nCaller ID settings control how a person's information is displayed when making outgoing calls.\nSelected Caller ID settings allow users to choose which configuration among available caller IDs is selected currently.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/selectedCallerId") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-my-selected-caller-id + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-my-selected-caller-id", + Short: "Configure My Selected Caller ID Settings", + Long: "Update selected caller ID settings associated with the authenticated user.\n\nCaller ID settings control how a person's information is displayed when making outgoing calls.\nSelected Caller ID settings allow users to choose which configuration among available caller IDs is selected currently.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/selectedCallerId") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-my-secondary-owner-selected-caller-id + var lineownerId string + cmd := &cobra.Command{ + Use: "get-my-secondary-owner-selected-caller-id", + Short: "Get My Secondary Line Owner's Selected Caller ID Settings", + Long: "Get details of selected caller ID settings associated with a secondary line of the authenticated user.\n\nNote that an authenticated user can only retrieve information for their configured secondary lines.\n\nCaller ID settings control how a person's information is displayed when making outgoing calls.\nSelected Caller ID settings allow users to choose which configuration among available caller IDs is selected currently.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/secondaryLines/{lineownerId}/selectedCallerId") + req.PathParam("lineownerId", lineownerId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&lineownerId, "lineowner-id", "", "Unique identifier for the secondary line owner (applicable only for Virtual Lines).") + cmd.MarkFlagRequired("lineowner-id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-my-secondary-owner-selected-caller-id + var lineownerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-my-secondary-owner-selected-caller-id", + Short: "Modify My Secondary Line Owner's Selected Caller ID Settings", + Long: "Update selected caller ID settings associated with a secondary line owner of the authenticated user.\n\nNote that an authenticated user can only modify information for their configured secondary lines.\n\nCaller ID settings control how a person's information is displayed when making outgoing calls.\nSelected Caller ID settings allow users to choose which configuration among available caller IDs is selected currently.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/secondaryLines/{lineownerId}/selectedCallerId") + req.PathParam("lineownerId", lineownerId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&lineownerId, "lineowner-id", "", "Unique identifier for the secondary line owner (applicable only for Virtual Lines).") + cmd.MarkFlagRequired("lineowner-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-my-available-caller-id-list + cmd := &cobra.Command{ + Use: "get-my-available-caller-id-list", + Short: "Get My Available Caller ID List", + Long: "Get details of available caller IDs of the authenticated user.\n\nCaller ID settings control how a person's information is displayed when making outgoing calls.\nThe available caller ID list shows the caller IDs that the user can choose from.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/availableCallerIds") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-my-secondary-owner-available-caller-id-list + var lineownerId string + cmd := &cobra.Command{ + Use: "get-my-secondary-owner-available-caller-id-list", + Short: "Get My Secondary Line Owner's Available Caller ID List", + Long: "Get details of available caller IDs for a secondary line of the authenticated user.\n\nNote that an authenticated user can only retrieve information for their configured secondary lines.\n\nCaller ID settings control how a person's information is displayed when making outgoing calls.\nThe available caller ID list shows the caller IDs that the user can choose from.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/secondaryLines/{lineownerId}/availableCallerIds") + req.PathParam("lineownerId", lineownerId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&lineownerId, "lineowner-id", "", "Unique identifier for the secondary line owner (applicable only for Virtual Lines).") + cmd.MarkFlagRequired("lineowner-id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // list-my-endpoints + cmd := &cobra.Command{ + Use: "list-my-endpoints", + Short: "Read the List of My Endpoints", + Long: "Retrieve the list of endpoints associated with the authenticated user.\n\nEndpoints are devices, applications, or hotdesking guest profiles. Endpoints can be owned by an authenticated user or have the user as a secondary line.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/endpoints") + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-my-endpoints + var endpointId string + cmd := &cobra.Command{ + Use: "get-my-endpoints", + Short: "Get My Endpoints Details", + Long: "Get details of an endpoint associated with the authenticated user.\n\nEndpoints are devices, applications, or hotdesking guest profiles. Endpoints can be owned by an authenticated user or have the user as a secondary line.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/endpoints/{endpointId}") + req.PathParam("endpointId", endpointId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&endpointId, "endpoint-id", "", "Unique identifier of the endpoint.") + cmd.MarkFlagRequired("endpoint-id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-my-endpoints + var endpointId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-my-endpoints", + Short: "Modify My Endpoints Details", + Long: "Update alerting settings of the mobility endpoint associated with the authenticated user.\n\nEndpoints are devices, applications, or hotdesking guest profiles. Endpoints can be owned by an authenticated user or have the user as a secondary line.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/endpoints/{endpointId}") + req.PathParam("endpointId", endpointId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&endpointId, "endpoint-id", "", "Unique identifier of the endpoint.") + cmd.MarkFlagRequired("endpoint-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-my-recording + cmd := &cobra.Command{ + Use: "get-my-recording", + Short: "Get My Call Recording Settings", + Long: "Get details of call recording settings associated with the authenticated user.\n\nCall recording settings allow you to access and customize options that determine when and how your calls are recorded, providing control over recording modes and notifications.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/callRecording") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-my-secondary-owner-recording + var lineownerId string + cmd := &cobra.Command{ + Use: "get-my-secondary-owner-recording", + Short: "Get My Secondary Line Owner's Call Recording Settings", + Long: "Get details of call recording settings associated with a secondary line of the authenticated user.\n\nNote that an authenticated user can only retrieve information for their configured secondary lines.\n\nCall recording settings allow you to access and customize options that determine when and how your calls are recorded, providing control over recording modes and notifications.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/secondaryLines/{lineownerId}/callRecording") + req.PathParam("lineownerId", lineownerId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&lineownerId, "lineowner-id", "", "Unique identifier for the secondary line owner (applicable only for Virtual Lines).") + cmd.MarkFlagRequired("lineowner-id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-my-own + cmd := &cobra.Command{ + Use: "get-my-own", + Short: "Get My Own Details", + Long: "Get profile details for the authenticated user.\n\nProfile details include the user's name, email, location and calling details.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-my-access-codes + cmd := &cobra.Command{ + Use: "get-my-access-codes", + Short: "Get My Feature Access Codes", + Long: "Retrieve all Feature Access Codes configured for services that are assigned to the authenticated user. For each feature access code, the name and code are returned. If an alternate code is defined, it is also returned.\n\nFeature access codes (FACs), also known as star codes, give users access to advanced calling features.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/featureAccessCode") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-my-access-codes-secondary-owner + var lineownerId string + cmd := &cobra.Command{ + Use: "get-my-access-codes-secondary-owner", + Short: "Get My Feature Access Codes For Secondary Line Owner", + Long: "Retrieve all Feature Access Codes configured for services that are assigned for the secondary line owner. For each feature access code, the name and code are returned. If an alternate code is defined, it is also returned.\n\nFeature access codes (FACs), also known as star codes, give users access to advanced calling features.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/secondaryLines/{lineownerId}/featureAccessCode") + req.PathParam("lineownerId", lineownerId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&lineownerId, "lineowner-id", "", "Unique identifier for the secondary line owner (applicable only for Virtual Lines).") + cmd.MarkFlagRequired("lineowner-id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-my-executive-assigned-assistants + cmd := &cobra.Command{ + Use: "get-my-executive-assigned-assistants", + Short: "Get My Executive Assigned Assistants", + Long: "Get list of assigned executive assistants for an authenticated user.\n\nAs an executive, you can add assistants to your executive pool to manage calls for you. You can set when and which types of calls they can handle. Assistants can opt in when needed or opt out when not required.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/executive/assignedAssistants") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-my-executive-assigned-assistants + var allowOptInOutEnabled bool + var assistantIds []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-my-executive-assigned-assistants", + Short: "Modify My Executive Assigned Assistants", + Long: "Update assigned executive assistants for the authenticated user.\n\nAs an executive, you can add assistants to your executive pool to manage calls for you. You can set when and which types of calls they can handle. Assistants can opt in when needed or opt out when not required.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/executive/assignedAssistants") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("allowOptInOutEnabled", allowOptInOutEnabled, cmd.Flags().Changed("allow-opt-in-out-enabled")) + req.BodyStringSlice("assistantIds", assistantIds) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().BoolVar(&allowOptInOutEnabled, "allow-opt-in-out-enabled", false, "") + cmd.Flags().StringSliceVar(&assistantIds, "assistant-ids", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-my-executive-available-assistants + cmd := &cobra.Command{ + Use: "get-my-executive-available-assistants", + Short: "Get My Executive Available Assistants", + Long: "Get a list of available executive assistants for the authenticated user.\n\nAs an executive, you can add assistants to your executive pool to manage calls for you. You can set when and which types of calls they can handle. Assistants can opt in when needed or opt out when not required.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/executive/availableAssistants") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-my-executive-assistant + cmd := &cobra.Command{ + Use: "get-my-executive-assistant", + Short: "Get My Executive Assistant Settings", + Long: "Get settings for an executive assistant.\n\nExecutive assistants can make, answer, intercept, and route calls appropriately on behalf of their executive.\nAssistants can also set the call forwarding destination, and join or leave an executive\u2019s pool.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/executive/assistant") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-my-executive-assistant + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-my-executive-assistant", + Short: "Modify My Executive Assistant Settings", + Long: "Update Settings for an executive assistant.\n\nExecutive assistants can make, answer, intercept, and route calls appropriately on behalf of their executive.\nAssistants can also set the call forwarding destination, and join or leave an executive\u2019s pool.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/executive/assistant") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-my-calling-services + cmd := &cobra.Command{ + Use: "get-my-calling-services", + Short: "Get My Calling Services List", + Long: "Retrieves the list of enabled calling services for the authenticated user.\n\nThese services are designed to improve call handling and ensure that users can manage their communications effectively. They are commonly found in both personal and business telephony systems.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/services") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-my-secondary-owner-calling-services + var lineownerId string + cmd := &cobra.Command{ + Use: "get-my-secondary-owner-calling-services", + Short: "Get My Secondary Line Owner Calling Services List", + Long: "Retrieves the list of enabled calling services for the secondary line owner of the authenticated user.\n\nThese services are designed to improve call handling and ensure that users can manage their communications effectively. They are commonly found in both personal and business telephony systems.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/secondaryLines/{lineownerId}/services") + req.PathParam("lineownerId", lineownerId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&lineownerId, "lineowner-id", "", "Unique identifier for the secondary line owner (applicable only for Virtual Lines).") + cmd.MarkFlagRequired("lineowner-id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-user-single-number-reach + cmd := &cobra.Command{ + Use: "get-user-single-number-reach", + Short: "Get User's Single Number Reach Settings", + Long: "Retrieves all single number reach settings configured for the authenticated user.\n\nThe \"Single Number Reach\" feature in Webex allows users to access their business phone capabilities from any device, making it easy to make and receive calls as if at their office. This is especially useful for remote or mobile workers needing flexibility.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/singleNumberReach") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-user-single-number-reach + var alertAllLocationsForClickToDialCallsEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-user-single-number-reach", + Short: "Modify User's Single Number Reach Settings", + Long: "Updates single number reach settings associated with the authenticated user.\n\nThe \"Single Number Reach\" feature in Webex allows users to access their business phone capabilities from any device, making it easy to make and receive calls as if at their office. This is especially useful for remote or mobile workers needing flexibility.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/singleNumberReach") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("alertAllLocationsForClickToDialCallsEnabled", alertAllLocationsForClickToDialCallsEnabled, cmd.Flags().Changed("alert-all-locations-for-click-to-dial-calls-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().BoolVar(&alertAllLocationsForClickToDialCallsEnabled, "alert-all-locations-for-click-to-dial-calls-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // create-phone-number-user-single-number-reach + var phoneNumber string + var name string + var enabled bool + var doNotForwardCallsEnabled bool + var answerConfirmationEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-phone-number-user-single-number-reach", + Short: "Add phone number as User's Single Number Reach", + Long: "Add a phone number as a single number reach for the authenticated user.\n\nThe \"Single Number Reach\" feature in Webex allows users to access their business phone capabilities from any device, making it easy to make and receive calls as if at their office. This is especially useful for remote or mobile workers needing flexibility.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/people/me/settings/singleNumberReach/numbers") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("phoneNumber", phoneNumber) + req.BodyString("name", name) + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + req.BodyBool("doNotForwardCallsEnabled", doNotForwardCallsEnabled, cmd.Flags().Changed("do-not-forward-calls-enabled")) + req.BodyBool("answerConfirmationEnabled", answerConfirmationEnabled, cmd.Flags().Changed("answer-confirmation-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().BoolVar(&doNotForwardCallsEnabled, "do-not-forward-calls-enabled", false, "") + cmd.Flags().BoolVar(&answerConfirmationEnabled, "answer-confirmation-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-user-single-number-reach-contact + var phoneNumberId string + var phoneNumber string + var name string + var enabled bool + var doNotForwardCallsEnabled bool + var answerConfirmationEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-user-single-number-reach-contact", + Short: "Modify User's Single Number Reach Contact Settings", + Long: "Update the contact settings of single number reach for the authenticated user.\n\nThe \"Single Number Reach\" feature in Webex allows users to access their business phone capabilities from any device, making it easy to make and receive calls as if at their office. This is especially useful for remote or mobile workers needing flexibility.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/singleNumberReach/numbers/{phoneNumberId}") + req.PathParam("phoneNumberId", phoneNumberId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("phoneNumber", phoneNumber) + req.BodyString("name", name) + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + req.BodyBool("doNotForwardCallsEnabled", doNotForwardCallsEnabled, cmd.Flags().Changed("do-not-forward-calls-enabled")) + req.BodyBool("answerConfirmationEnabled", answerConfirmationEnabled, cmd.Flags().Changed("answer-confirmation-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&phoneNumberId, "phone-number-id", "", "Unique identifier of the phone number.") + cmd.MarkFlagRequired("phone-number-id") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().BoolVar(&doNotForwardCallsEnabled, "do-not-forward-calls-enabled", false, "") + cmd.Flags().BoolVar(&answerConfirmationEnabled, "answer-confirmation-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // delete-user-single-number-reach-contact + var phoneNumberId string + cmd := &cobra.Command{ + Use: "delete-user-single-number-reach-contact", + Short: "Delete User's Single Number Reach Contact Settings", + Long: "Delete contact settings associated with the authenticated user.\n\nThe \"Single Number Reach\" feature in Webex allows users to access their business phone capabilities from any device, making it easy to make and receive calls as if at their office. This is especially useful for remote or mobile workers needing flexibility.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/people/me/settings/singleNumberReach/numbers/{phoneNumberId}") + req.PathParam("phoneNumberId", phoneNumberId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&phoneNumberId, "phone-number-id", "", "Unique identifier of the phone number.") + cmd.MarkFlagRequired("phone-number-id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-my-forward + cmd := &cobra.Command{ + Use: "get-my-forward", + Short: "Read My Call Forwarding Settings", + Long: "Read call forwarding settings associated with the authenticated user.\n\nThree types of call forwarding are supported:\n\n+ Always - forwards all incoming calls to the destination you choose.\n\n+ When busy - forwards all incoming calls to the destination you chose while the phone is in use or the person is busy.\n\n+ When no answer - forwarding only occurs when you are away or not answering your phone.\n\nIn addition, the Business Continuity feature will send calls to a destination of your choice if your phone is not connected to the network for any reason, such as a power outage, failed Internet connection, or wiring problem.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/callForwarding") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-my-forward + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-my-forward", + Short: "Configure My Call Forwarding Settings", + Long: "Update call forwarding settings associated with the authenticated user.\n\nThree types of call forwarding are supported:\n\n+ Always - forwards all incoming calls to the destination you choose.\n\n+ When busy - forwards all incoming calls to the destination you chose while the phone is in use or the person is busy.\n\n+ When no answer - forwarding only occurs when you are away or not answering your phone.\n\nIn addition, the Business Continuity feature will send calls to a destination of your choice if your phone is not connected to the network for any reason, such as a power outage, failed Internet connection, or wiring problem.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/callForwarding") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-my-secondary-owner-forward + var lineownerId string + cmd := &cobra.Command{ + Use: "get-my-secondary-owner-forward", + Short: "Get My Secondary Line Owner's Call Forwarding Settings", + Long: "Get details of call forwarding settings associated with a secondary line of the authenticated user.\n\nNote that an authenticated user can only retrieve information for their configured secondary lines.\n\nThree types of call forwarding are supported:\n\n+ Always - forwards all incoming calls to the destination you choose.\n\n+ When busy - forwards all incoming calls to the destination you chose while the phone is in use or the person is busy.\n\n+ When no answer - forwarding only occurs when you are away or not answering your phone.\n\nIn addition, the Business Continuity feature will send calls to a destination of your choice if your phone is not connected to the network for any reason, such as a power outage, failed Internet connection, or wiring problem.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/secondaryLines/{lineownerId}/callForwarding") + req.PathParam("lineownerId", lineownerId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&lineownerId, "lineowner-id", "", "Unique identifier for the secondary line owner (applicable only for Virtual Lines).") + cmd.MarkFlagRequired("lineowner-id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-my-secondary-owner-forward + var lineownerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-my-secondary-owner-forward", + Short: "Modify My Secondary Line Owner's Call Forwarding Settings", + Long: "Update call forwarding settings associated with a secondary line owner of the authenticated user.\n\nNote that an authenticated user can only modify information for their configured secondary lines.\n\nThree types of call forwarding are supported:\n\n+ Always - forwards all incoming calls to the destination you choose.\n\n+ When busy - forwards all incoming calls to the destination you chose while the phone is in use or the person is busy.\n\n+ When no answer - forwarding only occurs when you are away or not answering your phone.\n\nIn addition, the Business Continuity feature will send calls to a destination of your choice if your phone is not connected to the network for any reason, such as a power outage, failed Internet connection, or wiring problem.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/secondaryLines/{lineownerId}/callForwarding") + req.PathParam("lineownerId", lineownerId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&lineownerId, "lineowner-id", "", "Unique identifier for the secondary line owner (applicable only for Virtual Lines).") + cmd.MarkFlagRequired("lineowner-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-my-pickup-group + cmd := &cobra.Command{ + Use: "get-my-pickup-group", + Short: "Get My Call Pickup Group Settings", + Long: "Get Call Pickup Group Settings for the authenticated user.\n\nCall pickup group enables a user to answer any ringing line within their pickup group. A call pickup group is an administrator-defined set of users within a location, to which the call pickup feature applies.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/callPickupGroup") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-my-secondary-owner-pickup-group + var lineownerId string + cmd := &cobra.Command{ + Use: "get-my-secondary-owner-pickup-group", + Short: "Get My Secondary Line Owner Call Pickup Group Settings", + Long: "Get Call Pickup Group Settings for the secondary line owner of the authenticated user.\n\nNote that the secondary line information is only available for the authenticated user.\n\nCall pickup group enables a user to answer any ringing line within their pickup group. A call pickup group is an administrator-defined set of users within a location, to which the call pickup feature applies.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/secondaryLines/{lineownerId}/callPickupGroup") + req.PathParam("lineownerId", lineownerId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&lineownerId, "lineowner-id", "", "Unique identifier for the secondary line owner (applicable only for Virtual Lines).") + cmd.MarkFlagRequired("lineowner-id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-my-park + cmd := &cobra.Command{ + Use: "get-my-park", + Short: "Get My Call Park Settings", + Long: "Get details of call park settings associated with the authenticated user.\n\nCall Park allows call recipients to place a call on hold so that it can be retrieved from another device.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/callPark") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-my-secondary-owner-park + var lineownerId string + cmd := &cobra.Command{ + Use: "get-my-secondary-owner-park", + Short: "Get My Secondary Line Owner Call Park Settings", + Long: "Get details of call park settings for the secondary line owner of the authenticated user.\n\nNote that the secondary line information is only available for the authenticated user.\n\nCall Park allows call recipients to place a call on hold so that it can be retrieved from another device.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/secondaryLines/{lineownerId}/callPark") + req.PathParam("lineownerId", lineownerId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&lineownerId, "lineowner-id", "", "Unique identifier for the secondary line owner (applicable only for Virtual Lines).") + cmd.MarkFlagRequired("lineowner-id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-voicemail-person + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-voicemail-person", + Short: "Configure Voicemail Settings for a Person", + Long: "Configure a person's voicemail settings.\n\nThe voicemail feature transfers callers to voicemail based on your settings. You can then retrieve voice messages via voicemail.\n\nOptionally, notifications can be sent to a mobile phone via text or email. These notifications will not include the voicemail files.\n\nThis API requires a user auth token with a scope of `spark-admin:people_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/voicemail") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-voicemail-person + cmd := &cobra.Command{ + Use: "get-voicemail-person", + Short: "Read Voicemail Settings for a Person", + Long: "Retrieve a person's voicemail settings.\n\nThe voicemail feature transfers callers to voicemail based on your settings. You can then retrieve voice messages via voicemail.\n\nOptionally, notifications can be sent to a mobile phone via text or email. These notifications will not include the voicemail files.\n\nThis API requires a user auth token with a scope of `spark-admin:people_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/voicemail") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-my-secondary-owner-voicemail + var lineownerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-my-secondary-owner-voicemail", + Short: "Modify My Secondary Line Owner's Voicemail Settings", + Long: "Update voicemail settings associated with a secondary line owner of the authenticated user.\n\nThe voicemail feature transfers callers to voicemail based on your settings. You can then retrieve voice messages via voicemail.\n\nOptionally, notifications can be sent to a mobile phone via text or email. These notifications will not include the voicemail files.\n\nThis API requires a user auth token with a scope of `spark-admin:people_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/secondaryLines/{lineownerId}/voicemail") + req.PathParam("lineownerId", lineownerId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&lineownerId, "lineowner-id", "", "Unique identifier for the secondary line owner (applicable only for Virtual Lines).") + cmd.MarkFlagRequired("lineowner-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-my-secondary-owner-voicemail + var lineownerId string + cmd := &cobra.Command{ + Use: "get-my-secondary-owner-voicemail", + Short: "Get My Secondary Line Owner's Voicemail Settings", + Long: "GET voicemail settings for a secondary line of the authenticated user.\n\nThe voicemail feature transfers callers to voicemail based on your settings. You can then retrieve voice messages via voicemail.\n\nOptionally, notifications can be sent to a mobile phone via text or email. These notifications will not include the voicemail files.\n\nThis API requires a user auth token with a scope of `spark-admin:people_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/secondaryLines/{lineownerId}/voicemail") + req.PathParam("lineownerId", lineownerId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&lineownerId, "lineowner-id", "", "Unique identifier for the secondary line owner (applicable only for Virtual Lines).") + cmd.MarkFlagRequired("lineowner-id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-my-block + cmd := &cobra.Command{ + Use: "get-my-block", + Short: "Get My Call Block Settings", + Long: "Get details of call block settings associated with the authenticated user.\n\nCall block settings allow you to get the User Call Block Number List.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/callBlock") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // create-phone-number-user-block-list + var phoneNumber string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-phone-number-user-block-list", + Short: "Add a phone number to user's Call Block List", + Long: "Add a phone number to the call block list for the authenticated user.\n\nCall block settings allow you to get the User Call Block Number List.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/people/me/settings/callBlock/numbers") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("phoneNumber", phoneNumber) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-my-block-state-number + var phoneNumberId string + cmd := &cobra.Command{ + Use: "get-my-block-state-number", + Short: "Get My Call Block State For Specific Number", + Long: "Get call block state details for a specific number associated with the authenticated user.\n\nCall block settings allow you to get the User Call Block Number List.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/callBlock/numbers/{phoneNumberId}") + req.PathParam("phoneNumberId", phoneNumberId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&phoneNumberId, "phone-number-id", "", "Unique identifier of the phone number.") + cmd.MarkFlagRequired("phone-number-id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // delete-user-block-number + var phoneNumberId string + cmd := &cobra.Command{ + Use: "delete-user-block-number", + Short: "Delete User Call Block Number", + Long: "Delete call block number settings associated with the authenticated user.\n\nCall block settings allow you to delete a number from the User Call Block Number List.\n\nThis API requires a user auth token with a scope of `spark-admin:people_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/people/me/settings/callBlock/numbers/{phoneNumberId}") + req.PathParam("phoneNumberId", phoneNumberId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&phoneNumberId, "phone-number-id", "", "Unique identifier of the phone number.") + cmd.MarkFlagRequired("phone-number-id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-my-monitoring + cmd := &cobra.Command{ + Use: "get-my-monitoring", + Short: "Get My Monitoring Settings", + Long: "Retrieves the monitoring settings of the logged in person, which shows specified people, places, virtual lines or call park extensions that are being monitored.\n\nMonitors the line status which indicates if a person, place or virtual line is on a call and if a call has been parked on that extension.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/monitoring") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-my-center + cmd := &cobra.Command{ + Use: "get-my-center", + Short: "Get My Call Center Settings", + Long: "Retrieves the call center settings and list of all call centers the logged in user belongs to.\n\nCalls from the Call Centers are routed to agents based on configuration. An agent can be assigned to one or more call queues and can be managed by supervisors.\nThe user must have the call center service assigned.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/queues") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-my-center + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-my-center", + Short: "Modify My Call Center Settings", + Long: "Modify the call center settings and availability for an agent in one or more call centers to which the logged in user belongs.\n\nCalls from the Call Centers are routed to agents based on configuration. An agent can be assigned to one or more call queues and can be managed by supervisors.\nContains a list specifying the desired availability status of one or more call centers.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/queues") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-my-secondary-owner-center + var lineownerId string + cmd := &cobra.Command{ + Use: "get-my-secondary-owner-center", + Short: "Get My Secondary Line Owner's Call Center Settings", + Long: "Retrieves the call center settings and list of all call centers associated with a secondary line of the authenticated user.\nNote that an authenticated user can only retrieve information for their configured secondary lines.\n\nCalls from the Call Centers are routed to agents based on configuration. An agent can be assigned to one or more call queues and can be managed by supervisors.\nThe secondary line must have the call center service assigned.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/secondaryLines/{lineownerId}/queues") + req.PathParam("lineownerId", lineownerId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&lineownerId, "lineowner-id", "", "Unique identifier for the secondary line owner (applicable only for Virtual Lines).") + cmd.MarkFlagRequired("lineowner-id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-my-secondary-owner-center + var lineownerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-my-secondary-owner-center", + Short: "Modify My Secondary Line Owner's Call Center Settings", + Long: "Modify the call center settings and availability for an agent in one or more call centers associated with a secondary line owner of the authenticated user.\nNote that an authenticated user can only modify information for their configured secondary lines.\n\nCalls from the Call Centers are routed to agents based on configuration. An agent can be assigned to one or more call queues and can be managed by supervisors.\nContains a list specifying the desired availability status of one or more call centers.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/secondaryLines/{lineownerId}/queues") + req.PathParam("lineownerId", lineownerId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&lineownerId, "lineowner-id", "", "Unique identifier for the secondary line owner (applicable only for Virtual Lines).") + cmd.MarkFlagRequired("lineowner-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-my-captions + cmd := &cobra.Command{ + Use: "get-my-captions", + Short: "Get my call captions settings", + Long: "Retrieve the effective call captions settings of the authenticated user.\n\n**NOTE**: The call captions feature is not supported for Webex Calling Standard users or users assigned to locations in India.\n\nThe call caption feature allows the customer to enable and manage closed captions and transcript functionality (rolling caption panel) in Webex Calling, without requiring the user to escalate the call to a meeting.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/callCaptions") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-policies-user + cmd := &cobra.Command{ + Use: "get-policies-user", + Short: "Get Call Policies Settings for User", + Long: "Get call policies settings for the authenticated user.\n\nCall Policies in Webex allow you to manage how your call information is displayed and handled. You can view privacy settings for your connected line ID on redirected calls and review other call-related preferences.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/callPolicies") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-policies-user + var connectedLineIdPrivacyOnRedirectedCalls string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-policies-user", + Short: "Modify Call Policies Settings for User", + Long: "Update call policies settings for the authenticated user.\n\nCall Policies in Webex allow you to manage how your call information is displayed and handled. You can configure privacy settings for your connected line ID on redirected calls and control other call-related preferences.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/callPolicies") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("connectedLineIdPrivacyOnRedirectedCalls", connectedLineIdPrivacyOnRedirectedCalls) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&connectedLineIdPrivacyOnRedirectedCalls, "connected-line-id-privacy-on-redirected-calls", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-user-executive-screening + cmd := &cobra.Command{ + Use: "get-user-executive-screening", + Short: "Get User Executive Screening Settings", + Long: "Get executive screening settings for the authenticated user.\n\nExecutive Screening in Webex allows you to manage how incoming calls are screened and alerted based on your preferences. You can enable or disable executive screening and configure alert types and locations for notifications.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/executive/screening") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-user-executive-screening + var enabled bool + var alertType string + var alertAnywhereLocationEnabled bool + var alertMobilityLocationEnabled bool + var alertSharedCallAppearanceLocationEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-user-executive-screening", + Short: "Modify User Executive Screening Settings", + Long: "Update executive screening settings for the authenticated user.\n\nExecutive Screening in Webex allows you to manage how incoming calls are screened and alerted based on your preferences. You can enable or disable executive screening and configure alert types and locations for notifications.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/executive/screening") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + req.BodyString("alertType", alertType) + req.BodyBool("alertAnywhereLocationEnabled", alertAnywhereLocationEnabled, cmd.Flags().Changed("alert-anywhere-location-enabled")) + req.BodyBool("alertMobilityLocationEnabled", alertMobilityLocationEnabled, cmd.Flags().Changed("alert-mobility-location-enabled")) + req.BodyBool("alertSharedCallAppearanceLocationEnabled", alertSharedCallAppearanceLocationEnabled, cmd.Flags().Changed("alert-shared-call-appearance-location-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().StringVar(&alertType, "alert-type", "", "") + cmd.Flags().BoolVar(&alertAnywhereLocationEnabled, "alert-anywhere-location-enabled", false, "") + cmd.Flags().BoolVar(&alertMobilityLocationEnabled, "alert-mobility-location-enabled", false, "") + cmd.Flags().BoolVar(&alertSharedCallAppearanceLocationEnabled, "alert-shared-call-appearance-location-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-user-executive-filtering + cmd := &cobra.Command{ + Use: "get-user-executive-filtering", + Short: "Get User Executive Call Filtering Settings", + Long: "Get executive call filtering settings for the authenticated user.\n\nExecutive Call Filtering in Webex allows you to control which calls are allowed to reach the executive assistant based on custom criteria, such as specific phone numbers or call types. You can enable or disable call filtering and configure filter rules to manage incoming calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/executive/callFiltering") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-user-executive-filtering + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-user-executive-filtering", + Short: "Modify User Executive Call Filtering Settings", + Long: "Update executive call filtering settings for the authenticated user.\n\nExecutive Call Filtering in Webex allows you to control which calls are allowed to reach the executive assistant based on custom criteria, such as specific phone numbers or call types. You can enable or disable call filtering and configure filter rules to manage incoming calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/executive/callFiltering") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-user-executive-filtering-2 + var id string + cmd := &cobra.Command{ + Use: "get-user-executive-filtering-2", + Short: "Get User Executive Call Filtering Criteria Settings", + Long: "Get executive call filtering criteria settings for the authenticated user.\n\nExecutive Call Filtering Criteria in Webex allows you to retrieve detailed configuration for a specific filter rule. This includes schedule settings, phone number filters, and call routing preferences for executive call filtering.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/executive/callFiltering/criteria/{id}") + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "The `id` parameter specifies the unique identifier for the executive call filtering criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL2RHVnpkRjltYVd4MFpYST0`.") + cmd.MarkFlagRequired("id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-user-executive-filtering-2 + var id string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-user-executive-filtering-2", + Short: "Modify User Executive Call Filtering Criteria Settings", + Long: "Update executive call filtering criteria settings for the authenticated user.\n\nExecutive Call Filtering Criteria in Webex allows you to modify detailed configuration for a specific filter rule. This includes updating schedule settings, phone number filters, and call routing preferences for executive call filtering.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/executive/callFiltering/criteria/{id}") + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "The `id` parameter specifies the unique identifier for the executive call filtering criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL2RHVnpkRjltYVd4MFpYST0`.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // delete-user-executive-filtering + var id string + cmd := &cobra.Command{ + Use: "delete-user-executive-filtering", + Short: "Delete User Executive Call Filtering Criteria", + Long: "Delete a specific executive call filtering criteria for the authenticated user.\n\nExecutive Call Filtering Criteria in Webex allows you to manage detailed filter rules for incoming calls. This API removes a specific filter rule by its unique identifier.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/people/me/settings/executive/callFiltering/criteria/{id}") + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "The `id` parameter specifies the unique identifier for the executive call filtering criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL2RHVnpkRjltYVd4MFpYST0`.") + cmd.MarkFlagRequired("id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-do-not-disturb-user + cmd := &cobra.Command{ + Use: "get-do-not-disturb-user", + Short: "Get Do Not Disturb Settings for User", + Long: "Get Do Not Disturb settings for the authenticated user.\n\nDo Not Disturb (DND) enables users to block or silence incoming calls on their phone. When activated, the phone either stops ringing or rejects calls depending on the configured option, but users can still see call information and answer calls if desired.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/doNotDisturb") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-do-not-disturb-user + var webexGoOverrideEnabled bool + var enabled bool + var ringSplashEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-do-not-disturb-user", + Short: "Modify Do Not Disturb Settings for User", + Long: "Update Do Not Disturb settings for the authenticated user.\n\nDo Not Disturb (DND) enables users to block or silence incoming calls on their phone. When activated, the phone either stops ringing or rejects calls depending on the configured option, but users can still see call information and answer calls if desired.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/doNotDisturb") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("webexGoOverrideEnabled", webexGoOverrideEnabled, cmd.Flags().Changed("webex-go-override-enabled")) + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + req.BodyBool("ringSplashEnabled", ringSplashEnabled, cmd.Flags().Changed("ring-splash-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().BoolVar(&webexGoOverrideEnabled, "webex-go-override-enabled", false, "") + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().BoolVar(&ringSplashEnabled, "ring-splash-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // create-user-executive-filtering + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-user-executive-filtering", + Short: "Add User Executive Call Filtering Criteria", + Long: "Create a new executive call filtering criteria for the authenticated user.\n\nExecutive Call Filtering Criteria in Webex allows you to define detailed filter rules for incoming calls. This API creates a new filter rule with the specified configuration, including schedule, phone numbers, and call routing preferences.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/people/me/settings/executive/callFiltering/criteria") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-user-executive-alert + cmd := &cobra.Command{ + Use: "get-user-executive-alert", + Short: "Get User Executive Alert Settings", + Long: "Get executive alert settings for the authenticated user.\n\nExecutive Alert settings in Webex allow you to control how calls are routed to executive assistants, including alerting mode, rollover options, and caller ID presentation. You can configure settings such as sequential or simultaneous alerting, and specify what happens when calls aren't answered.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/executive/alert") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-user-executive-alert + var alertingMode string + var nextAssistantNumberOfRings int64 + var rolloverEnabled bool + var rolloverAction string + var rolloverForwardToPhoneNumber string + var rolloverWaitTimeInSecs int64 + var clidNameMode string + var customClidname string + var customClidnameInUnicode string + var clidPhoneNumberMode string + var customClidphoneNumber string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-user-executive-alert", + Short: "Modify User Executive Alert Settings", + Long: "Update executive alert settings for the authenticated user.\n\nExecutive Alert settings in Webex allow you to control how calls are routed to executive assistants, including alerting mode, rollover options, and caller ID presentation. You can configure settings such as sequential or simultaneous alerting, and specify what happens when calls aren't answered.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/executive/alert") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("alertingMode", alertingMode) + req.BodyInt("nextAssistantNumberOfRings", nextAssistantNumberOfRings, cmd.Flags().Changed("next-assistant-number-of-rings")) + req.BodyBool("rolloverEnabled", rolloverEnabled, cmd.Flags().Changed("rollover-enabled")) + req.BodyString("rolloverAction", rolloverAction) + req.BodyString("rolloverForwardToPhoneNumber", rolloverForwardToPhoneNumber) + req.BodyInt("rolloverWaitTimeInSecs", rolloverWaitTimeInSecs, cmd.Flags().Changed("rollover-wait-time-in-secs")) + req.BodyString("clidNameMode", clidNameMode) + req.BodyString("customCLIDName", customClidname) + req.BodyString("customCLIDNameInUnicode", customClidnameInUnicode) + req.BodyString("clidPhoneNumberMode", clidPhoneNumberMode) + req.BodyString("customCLIDPhoneNumber", customClidphoneNumber) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&alertingMode, "alerting-mode", "", "") + cmd.Flags().Int64Var(&nextAssistantNumberOfRings, "next-assistant-number-of-rings", 0, "") + cmd.Flags().BoolVar(&rolloverEnabled, "rollover-enabled", false, "") + cmd.Flags().StringVar(&rolloverAction, "rollover-action", "", "") + cmd.Flags().StringVar(&rolloverForwardToPhoneNumber, "rollover-forward-to-phone-number", "", "") + cmd.Flags().Int64Var(&rolloverWaitTimeInSecs, "rollover-wait-time-in-secs", 0, "") + cmd.Flags().StringVar(&clidNameMode, "clid-name-mode", "", "") + cmd.Flags().StringVar(&customClidname, "custom-clidname", "", "") + cmd.Flags().StringVar(&customClidnameInUnicode, "custom-clidname-in-unicode", "", "") + cmd.Flags().StringVar(&clidPhoneNumberMode, "clid-phone-number-mode", "", "") + cmd.Flags().StringVar(&customClidphoneNumber, "custom-clidphone-number", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-country-specific-telephony-configuration-requirements + var countryCode string + cmd := &cobra.Command{ + Use: "get-country-specific-telephony-configuration-requirements", + Short: "Get country-specific telephony configuration requirements", + Long: "Retrieve country-specific telephony configuration requirements for the authenticated user.\n\nWebex Calling supports multiple regions and time zones to validate and present the information using the local date and time, as well as localized dialing rules.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/countries/{countryCode}") + req.PathParam("countryCode", countryCode) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&countryCode, "country-code", "", "The ISO country code for which configuration requirements are requested.") + cmd.MarkFlagRequired("country-code") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-announcement-languages-authenticated-user + cmd := &cobra.Command{ + Use: "get-announcement-languages-authenticated-user", + Short: "Get announcement languages for the authenticated user", + Long: "Retrieve the list of available announcement languages for the authenticated user's telephony configuration.\n\nAnnouncement languages determine the language used for system prompts and announcements during calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/announcementLanguages") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-barge-in + cmd := &cobra.Command{ + Use: "get-barge-in", + Short: "Get Barge-In Settings", + Long: "Retrieve Barge-In settings of the user.\n\nThe Barge-In feature enables you to use a Feature Access Code (FAC) to answer a call that was directed to another subscriber, or barge-in on the call if it was already answered. Barge-In can be used across locations.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/bargeIn") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-barge-in + var enabled bool + var toneEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-barge-in", + Short: "Configure Barge-In Settings", + Long: "Configure person's Barge-In settings.\n\nThe Barge-In feature enables you to use a Feature Access Code (FAC) to answer a call that was directed to another subscriber, or barge-in on the call if it was already answered. Barge-In can be used across locations.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/bargeIn") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + req.BodyBool("toneEnabled", toneEnabled, cmd.Flags().Changed("tone-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().BoolVar(&toneEnabled, "tone-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-priority-alert + cmd := &cobra.Command{ + Use: "get-priority-alert", + Short: "Get Priority Alert Settings", + Long: "Get Priority Alert Settings for the authenticated user.\n\nPriority alert allows you to set up a unique ringtone based on predefined criteria. This is helpful, when the user wants to be quickly notified that a specific phone number is calling.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/priorityAlert") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-priority-alert-user + var enabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-priority-alert-user", + Short: "Modify Priority Alert Settings for User", + Long: "Update Priority Alert Settings for the authenticated user.\n\nPriority alert allows you to set up a unique ringtone based on predefined criteria. This is helpful, when the user wants to be quickly notified that a specific phone number is calling.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/priorityAlert") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // create-priority-alert + var scheduleName string + var scheduleType string + var scheduleLevel string + var callsFrom string + var anonymousCallersEnabled bool + var unavailableCallersEnabled bool + var phoneNumbers []string + var notificationEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-priority-alert", + Short: "Add a Priority Alert Criteria", + Long: "Create a Priority Alert Criteria for the authenticated user.\n\nPriority alert allows you to set up a unique ringtone based on predefined criteria. This is helpful, when the user wants to be quickly notified that a specific phone number is calling.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/people/me/settings/priorityAlert/criteria") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("scheduleName", scheduleName) + req.BodyString("scheduleType", scheduleType) + req.BodyString("scheduleLevel", scheduleLevel) + req.BodyString("callsFrom", callsFrom) + req.BodyBool("anonymousCallersEnabled", anonymousCallersEnabled, cmd.Flags().Changed("anonymous-callers-enabled")) + req.BodyBool("unavailableCallersEnabled", unavailableCallersEnabled, cmd.Flags().Changed("unavailable-callers-enabled")) + req.BodyStringSlice("phoneNumbers", phoneNumbers) + req.BodyBool("notificationEnabled", notificationEnabled, cmd.Flags().Changed("notification-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&scheduleName, "schedule-name", "", "") + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "") + cmd.Flags().StringVar(&scheduleLevel, "schedule-level", "", "") + cmd.Flags().StringVar(&callsFrom, "calls-from", "", "") + cmd.Flags().BoolVar(&anonymousCallersEnabled, "anonymous-callers-enabled", false, "") + cmd.Flags().BoolVar(&unavailableCallersEnabled, "unavailable-callers-enabled", false, "") + cmd.Flags().StringSliceVar(&phoneNumbers, "phone-numbers", nil, "") + cmd.Flags().BoolVar(¬ificationEnabled, "notification-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-priority-alert-2 + var id string + cmd := &cobra.Command{ + Use: "get-priority-alert-2", + Short: "Get Priority Alert Criteria Settings", + Long: "Get Priority Alert Criteria Settings for the authenticated user.\n\nPriority alert allows you to set up a unique ringtone based on predefined criteria. This is helpful, when the user wants to be quickly notified that a specific phone number is calling.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/priorityAlert/criteria/{id}") + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "The `id` parameter specifies the unique identifier for the priority alert criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.") + cmd.MarkFlagRequired("id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-priority-alert + var id string + var scheduleName string + var scheduleType string + var scheduleLevel string + var callsFrom string + var anonymousCallersEnabled bool + var unavailableCallersEnabled bool + var phoneNumbers []string + var notificationEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-priority-alert", + Short: "Modify Settings for a Priority Alert Criteria", + Long: "Modify Priority Alert Criteria Settings for the authenticated user.\n\nPriority alert allows you to set up a unique ringtone based on predefined criteria. This API allows modifying attributes such as name, phoneNumbers etc for a particular criteria.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/priorityAlert/criteria/{id}") + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("scheduleName", scheduleName) + req.BodyString("scheduleType", scheduleType) + req.BodyString("scheduleLevel", scheduleLevel) + req.BodyString("callsFrom", callsFrom) + req.BodyBool("anonymousCallersEnabled", anonymousCallersEnabled, cmd.Flags().Changed("anonymous-callers-enabled")) + req.BodyBool("unavailableCallersEnabled", unavailableCallersEnabled, cmd.Flags().Changed("unavailable-callers-enabled")) + req.BodyStringSlice("phoneNumbers", phoneNumbers) + req.BodyBool("notificationEnabled", notificationEnabled, cmd.Flags().Changed("notification-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "The `id` parameter specifies the unique identifier for the priority alert criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&scheduleName, "schedule-name", "", "") + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "") + cmd.Flags().StringVar(&scheduleLevel, "schedule-level", "", "") + cmd.Flags().StringVar(&callsFrom, "calls-from", "", "") + cmd.Flags().BoolVar(&anonymousCallersEnabled, "anonymous-callers-enabled", false, "") + cmd.Flags().BoolVar(&unavailableCallersEnabled, "unavailable-callers-enabled", false, "") + cmd.Flags().StringSliceVar(&phoneNumbers, "phone-numbers", nil, "") + cmd.Flags().BoolVar(¬ificationEnabled, "notification-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // delete-priority-alert + var id string + cmd := &cobra.Command{ + Use: "delete-priority-alert", + Short: "Delete a Priority Alert Criteria", + Long: "Delete a Priority Alert criteria for the authenticated user.\n\nPriority alert allows you to set up a unique ringtone based on predefined criteria. This API removes a specific criteria rule by its unique identifier.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/people/me/settings/priorityAlert/criteria/{id}") + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "The `id` parameter specifies the unique identifier for the priority alert criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.") + cmd.MarkFlagRequired("id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-user-schedules + cmd := &cobra.Command{ + Use: "get-user-schedules", + Short: "Get User (and Location) Schedules", + Long: "Get Schedules for Call Settings for the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/schedules") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // create-user-schedule + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-user-schedule", + Short: "Add a User level Schedule for Call Settings", + Long: "Create a new Schedule for the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/people/me/schedules") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-user-schedule + var scheduleType string + var scheduleId string + cmd := &cobra.Command{ + Use: "get-user-schedule", + Short: "Get User Schedule", + Long: "Get a Schedule details for Call Settings of the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/schedules/{scheduleType}/{scheduleId}") + req.PathParam("scheduleType", scheduleType) + req.PathParam("scheduleId", scheduleId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "Type of the schedule. * `businessHours` - Business hours schedule type. * `holidays` - Holidays schedule type. ") + cmd.MarkFlagRequired("schedule-type") + cmd.Flags().StringVar(&scheduleId, "schedule-id", "", "Retrieve the schedule with the matching ID.") + cmd.MarkFlagRequired("schedule-id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-user-schedule + var scheduleType string + var scheduleId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-user-schedule", + Short: "Modify User Schedule", + Long: "Modify a Schedule details for Call Settings of the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/schedules/{scheduleType}/{scheduleId}") + req.PathParam("scheduleType", scheduleType) + req.PathParam("scheduleId", scheduleId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "Type of the schedule. * `businessHours` - Business hours schedule type. * `holidays` - Holidays schedule type. ") + cmd.MarkFlagRequired("schedule-type") + cmd.Flags().StringVar(&scheduleId, "schedule-id", "", "Update the schedule with the matching ID.") + cmd.MarkFlagRequired("schedule-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // delete-user-schedule + var scheduleType string + var scheduleId string + cmd := &cobra.Command{ + Use: "delete-user-schedule", + Short: "Delete a User Schedule", + Long: "Delete a specific schedule for the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/people/me/schedules/{scheduleType}/{scheduleId}") + req.PathParam("scheduleType", scheduleType) + req.PathParam("scheduleId", scheduleId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "Type of the schedule. * `businessHours` - Business hours schedule type. * `holidays` - Holidays schedule type. ") + cmd.MarkFlagRequired("schedule-type") + cmd.Flags().StringVar(&scheduleId, "schedule-id", "", "Delete the schedule with the matching ID.") + cmd.MarkFlagRequired("schedule-id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // create-event-user-schedule + var scheduleType string + var scheduleId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-event-user-schedule", + Short: "Add an event for a User Schedule", + Long: "Create a new Event for for the authenticated user's specified schedule.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/people/me/schedules/{scheduleType}/{scheduleId}/events") + req.PathParam("scheduleType", scheduleType) + req.PathParam("scheduleId", scheduleId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "Type of the schedule. * `businessHours` - Business hours schedule type. * `holidays` - Holidays schedule type. ") + cmd.MarkFlagRequired("schedule-type") + cmd.Flags().StringVar(&scheduleId, "schedule-id", "", "add an event for the specified schedule ID.") + cmd.MarkFlagRequired("schedule-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-user-schedule-event + var scheduleType string + var scheduleId string + var eventId string + cmd := &cobra.Command{ + Use: "get-user-schedule-event", + Short: "Get User Schedule Event", + Long: "Get a Schedule Event details for Call Settings of the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/schedules/{scheduleType}/{scheduleId}/events/{eventId}") + req.PathParam("scheduleType", scheduleType) + req.PathParam("scheduleId", scheduleId) + req.PathParam("eventId", eventId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "Type of the schedule. * `businessHours` - Business hours schedule type. * `holidays` - Holidays schedule type. ") + cmd.MarkFlagRequired("schedule-type") + cmd.Flags().StringVar(&scheduleId, "schedule-id", "", "Retrieve the schedule with the matching ID.") + cmd.MarkFlagRequired("schedule-id") + cmd.Flags().StringVar(&eventId, "event-id", "", "Retrieve the event with the matching ID.") + cmd.MarkFlagRequired("event-id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-user-schedule-event + var scheduleType string + var scheduleId string + var eventId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-user-schedule-event", + Short: "Modify User Schedule Event", + Long: "Modify a Schedule event details for Call Settings of the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/schedules/{scheduleType}/{scheduleId}/events/{eventId}") + req.PathParam("scheduleType", scheduleType) + req.PathParam("scheduleId", scheduleId) + req.PathParam("eventId", eventId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "Type of the schedule. * `businessHours` - Business hours schedule type. * `holidays` - Holidays schedule type. ") + cmd.MarkFlagRequired("schedule-type") + cmd.Flags().StringVar(&scheduleId, "schedule-id", "", "Update an event for the specified schedule ID.") + cmd.MarkFlagRequired("schedule-id") + cmd.Flags().StringVar(&eventId, "event-id", "", "Update the event with the matching ID.") + cmd.MarkFlagRequired("event-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // delete-user-schedule-event + var scheduleType string + var scheduleId string + var eventId string + cmd := &cobra.Command{ + Use: "delete-user-schedule-event", + Short: "Delete User a Schedule Event", + Long: "Delete a specific schedule event for the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/people/me/schedules/{scheduleType}/{scheduleId}/events/{eventId}") + req.PathParam("scheduleType", scheduleType) + req.PathParam("scheduleId", scheduleId) + req.PathParam("eventId", eventId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "Type of the schedule. * `businessHours` - Business hours schedule type. * `holidays` - Holidays schedule type. ") + cmd.MarkFlagRequired("schedule-type") + cmd.Flags().StringVar(&scheduleId, "schedule-id", "", "Delete an event for the specified schedule ID.") + cmd.MarkFlagRequired("schedule-id") + cmd.Flags().StringVar(&eventId, "event-id", "", "Delete the event with the matching ID.") + cmd.MarkFlagRequired("event-id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-user-location-schedule + var scheduleType string + var scheduleId string + cmd := &cobra.Command{ + Use: "get-user-location-schedule", + Short: "Get User's Location Level Schedule", + Long: "Get Location Schedule for Call Settings of the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/locations/schedules/{scheduleType}/{scheduleId}") + req.PathParam("scheduleType", scheduleType) + req.PathParam("scheduleId", scheduleId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "Type of the schedule. * `businessHours` - Business hours schedule type. * `holidays` - Holidays schedule type. ") + cmd.MarkFlagRequired("schedule-type") + cmd.Flags().StringVar(&scheduleId, "schedule-id", "", "Retrieve the schedule with the matching ID.") + cmd.MarkFlagRequired("schedule-id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-notify-user + cmd := &cobra.Command{ + Use: "get-notify-user", + Short: "Get Call Notify Settings for User", + Long: "Get Call Notify Settings for the authenticated user.\n\nCall Notify allows you to set up a unique ringtone based on predefined criteria. This is helpful, when the user wants to be quickly notified that a specific phone number is calling.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/callNotify") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-notify-user + var enabled bool + var emailAddress string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-notify-user", + Short: "Modify Call Notify Settings for User", + Long: "Update Call Notify Settings for the authenticated user.\n\nCall Notify allows you to set up a unique ringtone based on predefined criteria. This API allows modifying attributes such as name, phoneNumbers etc for a particular criteria.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/callNotify") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + req.BodyString("emailAddress", emailAddress) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().StringVar(&emailAddress, "email-address", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // create-notify + var scheduleName string + var scheduleType string + var scheduleLevel string + var callsFrom string + var anonymousCallersEnabled bool + var unavailableCallersEnabled bool + var phoneNumbers []string + var notificationEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-notify", + Short: "Add a Call Notify Criteria", + Long: "Create a Call Notify Criteria for the authenticated user.\n\nCall Notify allows you to set up a unique ringtone based on predefined criteria. This is helpful, when the user wants to be quickly notified that a specific phone number is calling.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/people/me/settings/callNotify/criteria") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("scheduleName", scheduleName) + req.BodyString("scheduleType", scheduleType) + req.BodyString("scheduleLevel", scheduleLevel) + req.BodyString("callsFrom", callsFrom) + req.BodyBool("anonymousCallersEnabled", anonymousCallersEnabled, cmd.Flags().Changed("anonymous-callers-enabled")) + req.BodyBool("unavailableCallersEnabled", unavailableCallersEnabled, cmd.Flags().Changed("unavailable-callers-enabled")) + req.BodyStringSlice("phoneNumbers", phoneNumbers) + req.BodyBool("notificationEnabled", notificationEnabled, cmd.Flags().Changed("notification-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&scheduleName, "schedule-name", "", "") + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "") + cmd.Flags().StringVar(&scheduleLevel, "schedule-level", "", "") + cmd.Flags().StringVar(&callsFrom, "calls-from", "", "") + cmd.Flags().BoolVar(&anonymousCallersEnabled, "anonymous-callers-enabled", false, "") + cmd.Flags().BoolVar(&unavailableCallersEnabled, "unavailable-callers-enabled", false, "") + cmd.Flags().StringSliceVar(&phoneNumbers, "phone-numbers", nil, "") + cmd.Flags().BoolVar(¬ificationEnabled, "notification-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-notify + var id string + cmd := &cobra.Command{ + Use: "get-notify", + Short: "Get Call Notify Criteria Settings", + Long: "Get Call Notify Criteria Settings for the authenticated user.\n\nCall Notify allows you to set up a unique ringtone based on predefined criteria. This is helpful, when the user wants to be quickly notified that a specific phone number is calling.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/callNotify/criteria/{id}") + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "The `id` parameter specifies the unique identifier for the call notify criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.") + cmd.MarkFlagRequired("id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-notify + var id string + var scheduleName string + var scheduleType string + var scheduleLevel string + var callsFrom string + var anonymousCallersEnabled bool + var unavailableCallersEnabled bool + var phoneNumbers []string + var notificationEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-notify", + Short: "Modify a Call Notify Criteria", + Long: "Modify Call Notify Criteria Settings for the authenticated user.\n\nCall Notify allows you to set up a unique ringtone based on predefined criteria. This API allows modifying attributes such as name, phoneNumbers etc for a particular criteria.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/callNotify/criteria/{id}") + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("scheduleName", scheduleName) + req.BodyString("scheduleType", scheduleType) + req.BodyString("scheduleLevel", scheduleLevel) + req.BodyString("callsFrom", callsFrom) + req.BodyBool("anonymousCallersEnabled", anonymousCallersEnabled, cmd.Flags().Changed("anonymous-callers-enabled")) + req.BodyBool("unavailableCallersEnabled", unavailableCallersEnabled, cmd.Flags().Changed("unavailable-callers-enabled")) + req.BodyStringSlice("phoneNumbers", phoneNumbers) + req.BodyBool("notificationEnabled", notificationEnabled, cmd.Flags().Changed("notification-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "The `id` parameter specifies the unique identifier for the call notify criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&scheduleName, "schedule-name", "", "") + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "") + cmd.Flags().StringVar(&scheduleLevel, "schedule-level", "", "") + cmd.Flags().StringVar(&callsFrom, "calls-from", "", "") + cmd.Flags().BoolVar(&anonymousCallersEnabled, "anonymous-callers-enabled", false, "") + cmd.Flags().BoolVar(&unavailableCallersEnabled, "unavailable-callers-enabled", false, "") + cmd.Flags().StringSliceVar(&phoneNumbers, "phone-numbers", nil, "") + cmd.Flags().BoolVar(¬ificationEnabled, "notification-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // delete-notify + var id string + cmd := &cobra.Command{ + Use: "delete-notify", + Short: "Delete a Call Notify Criteria", + Long: "Delete a Call Notify criteria for the authenticated user.\n\nCall Notify allows you to set up a unique ringtone based on predefined criteria. This API removes a specific criteria rule by its unique identifier.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/people/me/settings/callNotify/criteria/{id}") + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "The `id` parameter specifies the unique identifier for the call notify criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.") + cmd.MarkFlagRequired("id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-selective-accept-user + cmd := &cobra.Command{ + Use: "get-selective-accept-user", + Short: "Get Selective Call Accept Settings for User", + Long: "Get Selective Call Accept Settings for the authenticated user.\n\nSelective Call Accept allows you to create customized rules to accept specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/selectiveAccept") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-selective-accept-user + var enabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-selective-accept-user", + Short: "Modify Selective Call Accept Settings for User", + Long: "Update Selective Call Accept Settings for the authenticated user.\n\nSelective Call Accept allows you to create customized rules to accept specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/selectiveAccept") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // create-user-selective-accept + var callsFrom string + var acceptEnabled bool + var scheduleName string + var scheduleType string + var scheduleLevel string + var anonymousCallersEnabled bool + var unavailableCallersEnabled bool + var phoneNumbers []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-user-selective-accept", + Short: "Add User Selective Call Accept Criteria", + Long: "Create a new Selective Call Accept Criteria for the authenticated user.\n\nSelective Call Accept allows you to create customized rules to accept specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/people/me/settings/selectiveAccept/criteria") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callsFrom", callsFrom) + req.BodyBool("acceptEnabled", acceptEnabled, cmd.Flags().Changed("accept-enabled")) + req.BodyString("scheduleName", scheduleName) + req.BodyString("scheduleType", scheduleType) + req.BodyString("scheduleLevel", scheduleLevel) + req.BodyBool("anonymousCallersEnabled", anonymousCallersEnabled, cmd.Flags().Changed("anonymous-callers-enabled")) + req.BodyBool("unavailableCallersEnabled", unavailableCallersEnabled, cmd.Flags().Changed("unavailable-callers-enabled")) + req.BodyStringSlice("phoneNumbers", phoneNumbers) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callsFrom, "calls-from", "", "") + cmd.Flags().BoolVar(&acceptEnabled, "accept-enabled", false, "") + cmd.Flags().StringVar(&scheduleName, "schedule-name", "", "") + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "") + cmd.Flags().StringVar(&scheduleLevel, "schedule-level", "", "") + cmd.Flags().BoolVar(&anonymousCallersEnabled, "anonymous-callers-enabled", false, "") + cmd.Flags().BoolVar(&unavailableCallersEnabled, "unavailable-callers-enabled", false, "") + cmd.Flags().StringSliceVar(&phoneNumbers, "phone-numbers", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-selective-accept-user-2 + var id string + cmd := &cobra.Command{ + Use: "get-selective-accept-user-2", + Short: "Get Selective Call Accept Criteria Settings for User", + Long: "Get Selective Call Accept Criteria Settings for the authenticated user.\n\nSelective Call Accept allows you to create customized rules to accept specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/selectiveAccept/criteria/{id}") + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "The `id` parameter specifies the unique identifier for the selective call accept criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.") + cmd.MarkFlagRequired("id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-selective-accept + var id string + var callsFrom string + var acceptEnabled bool + var scheduleName string + var scheduleType string + var scheduleLevel string + var anonymousCallersEnabled bool + var unavailableCallersEnabled bool + var phoneNumbers []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-selective-accept", + Short: "Modify a Selective Call Accept Criteria", + Long: "Modify Selective Call Accept Criteria Settings for the authenticated user.\n\n\n\nSelective Call Accept allows you to create customized rules to accept specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/selectiveAccept/criteria/{id}") + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callsFrom", callsFrom) + req.BodyBool("acceptEnabled", acceptEnabled, cmd.Flags().Changed("accept-enabled")) + req.BodyString("scheduleName", scheduleName) + req.BodyString("scheduleType", scheduleType) + req.BodyString("scheduleLevel", scheduleLevel) + req.BodyBool("anonymousCallersEnabled", anonymousCallersEnabled, cmd.Flags().Changed("anonymous-callers-enabled")) + req.BodyBool("unavailableCallersEnabled", unavailableCallersEnabled, cmd.Flags().Changed("unavailable-callers-enabled")) + req.BodyStringSlice("phoneNumbers", phoneNumbers) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "The `id` parameter specifies the unique identifier for the selective call accept. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&callsFrom, "calls-from", "", "") + cmd.Flags().BoolVar(&acceptEnabled, "accept-enabled", false, "") + cmd.Flags().StringVar(&scheduleName, "schedule-name", "", "") + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "") + cmd.Flags().StringVar(&scheduleLevel, "schedule-level", "", "") + cmd.Flags().BoolVar(&anonymousCallersEnabled, "anonymous-callers-enabled", false, "") + cmd.Flags().BoolVar(&unavailableCallersEnabled, "unavailable-callers-enabled", false, "") + cmd.Flags().StringSliceVar(&phoneNumbers, "phone-numbers", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // delete-selective-accept + var id string + cmd := &cobra.Command{ + Use: "delete-selective-accept", + Short: "Delete a Selective Call Accept Criteria", + Long: "Delete a Selective Call Accept Criteria for the authenticated user.\n\n\n\nSelective Call Accept allows you to create customized rules to accept specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/people/me/settings/selectiveAccept/criteria/{id}") + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "The `id` parameter specifies the unique identifier for the selective call accept criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.") + cmd.MarkFlagRequired("id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-available-numbers-user-location + var max string + var start string + var name string + var phoneNumber string + var extension string + var order string + cmd := &cobra.Command{ + Use: "get-available-numbers-user-location", + Short: "Get Available Numbers for User's Location", + Long: "Get Available Numbers for User's Location.\n\nFetch all the numbers available in User's location.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/location/assignedNumbers") + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("name", name) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("extension", extension) + req.QueryParam("order", order) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&max, "max", "", "Limit the maximum number of numbers in the response.") + cmd.Flags().StringVar(&start, "start", "", "Specify the offset from the first result that you want to fetch.") + cmd.Flags().StringVar(&name, "name", "", "List numbers whose owner name contains this string.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "List numbers whose phoneNumber contains this string.") + cmd.Flags().StringVar(&extension, "extension", "", "List numbers whose extension contains this string.") + cmd.Flags().StringVar(&order, "order", "", "Sort the list of numbers based on `lastName`, `dn`, `extension` either asc or desc.") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // create-selective-forward + var forwardToPhoneNumber string + var destinationVoicemailEnabled bool + var scheduleName string + var scheduleType string + var scheduleLevel string + var callsFrom string + var anonymousCallersEnabled bool + var unavailableCallersEnabled bool + var phoneNumbers []string + var forwardEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-selective-forward", + Short: "Add a Selective Call Forwarding Criteria", + Long: "Create a Selective Call Forwarding Criteria for the authenticated user.\n\nSelective Call Forward allows you to define rules that automatically forward incoming calls based on specific criteria, such as the caller\u2019s phone number, caller identity, and the time and day the call is received.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/people/me/settings/selectiveForward/criteria") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("forwardToPhoneNumber", forwardToPhoneNumber) + req.BodyBool("destinationVoicemailEnabled", destinationVoicemailEnabled, cmd.Flags().Changed("destination-voicemail-enabled")) + req.BodyString("scheduleName", scheduleName) + req.BodyString("scheduleType", scheduleType) + req.BodyString("scheduleLevel", scheduleLevel) + req.BodyString("callsFrom", callsFrom) + req.BodyBool("anonymousCallersEnabled", anonymousCallersEnabled, cmd.Flags().Changed("anonymous-callers-enabled")) + req.BodyBool("unavailableCallersEnabled", unavailableCallersEnabled, cmd.Flags().Changed("unavailable-callers-enabled")) + req.BodyStringSlice("phoneNumbers", phoneNumbers) + req.BodyBool("forwardEnabled", forwardEnabled, cmd.Flags().Changed("forward-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&forwardToPhoneNumber, "forward-to-phone-number", "", "") + cmd.Flags().BoolVar(&destinationVoicemailEnabled, "destination-voicemail-enabled", false, "") + cmd.Flags().StringVar(&scheduleName, "schedule-name", "", "") + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "") + cmd.Flags().StringVar(&scheduleLevel, "schedule-level", "", "") + cmd.Flags().StringVar(&callsFrom, "calls-from", "", "") + cmd.Flags().BoolVar(&anonymousCallersEnabled, "anonymous-callers-enabled", false, "") + cmd.Flags().BoolVar(&unavailableCallersEnabled, "unavailable-callers-enabled", false, "") + cmd.Flags().StringSliceVar(&phoneNumbers, "phone-numbers", nil, "") + cmd.Flags().BoolVar(&forwardEnabled, "forward-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-selective-forward + var id string + cmd := &cobra.Command{ + Use: "get-selective-forward", + Short: "Get Settings for a Selective Call Forwarding Criteria", + Long: "Get settings for a Selective Call Forwarding Criteria for the authenticated user.\n\nSelective Call Forward allows you to define rules that automatically forward incoming calls based on specific criteria, such as the caller\u2019s phone number, caller identity, and the time and day the call is received.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/selectiveForward/criteria/{id}") + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "The `id` parameter specifies the unique identifier for the selective call forwarding criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.") + cmd.MarkFlagRequired("id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-selective-forward + var id string + var forwardToPhoneNumber string + var destinationVoicemailEnabled bool + var scheduleName string + var scheduleType string + var scheduleLevel string + var callsFrom string + var anonymousCallersEnabled bool + var unavailableCallersEnabled bool + var phoneNumbers []string + var forwardEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-selective-forward", + Short: "Modify Settings for a Selective Call Forwarding Criteria", + Long: "Modify settings for a Selective Call Forwarding Criteria for the authenticated user.\n\nSelective Call Forward allows you to define rules that automatically forward incoming calls based on specific criteria, such as the caller\u2019s phone number, caller identity, and the time and day the call is received.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/selectiveForward/criteria/{id}") + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("forwardToPhoneNumber", forwardToPhoneNumber) + req.BodyBool("destinationVoicemailEnabled", destinationVoicemailEnabled, cmd.Flags().Changed("destination-voicemail-enabled")) + req.BodyString("scheduleName", scheduleName) + req.BodyString("scheduleType", scheduleType) + req.BodyString("scheduleLevel", scheduleLevel) + req.BodyString("callsFrom", callsFrom) + req.BodyBool("anonymousCallersEnabled", anonymousCallersEnabled, cmd.Flags().Changed("anonymous-callers-enabled")) + req.BodyBool("unavailableCallersEnabled", unavailableCallersEnabled, cmd.Flags().Changed("unavailable-callers-enabled")) + req.BodyStringSlice("phoneNumbers", phoneNumbers) + req.BodyBool("forwardEnabled", forwardEnabled, cmd.Flags().Changed("forward-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "The `id` parameter specifies the unique identifier for the selective call forwarding criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&forwardToPhoneNumber, "forward-to-phone-number", "", "") + cmd.Flags().BoolVar(&destinationVoicemailEnabled, "destination-voicemail-enabled", false, "") + cmd.Flags().StringVar(&scheduleName, "schedule-name", "", "") + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "") + cmd.Flags().StringVar(&scheduleLevel, "schedule-level", "", "") + cmd.Flags().StringVar(&callsFrom, "calls-from", "", "") + cmd.Flags().BoolVar(&anonymousCallersEnabled, "anonymous-callers-enabled", false, "") + cmd.Flags().BoolVar(&unavailableCallersEnabled, "unavailable-callers-enabled", false, "") + cmd.Flags().StringSliceVar(&phoneNumbers, "phone-numbers", nil, "") + cmd.Flags().BoolVar(&forwardEnabled, "forward-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // delete-selective-forward + var id string + cmd := &cobra.Command{ + Use: "delete-selective-forward", + Short: "Delete a Selective Call Forwarding Criteria", + Long: "Delete a Selective Call Forwarding Criteria for the authenticated user.\n\nSelective call forwarding allows you to define rules that automatically forward incoming calls based on specific criteria. This API removes a specific criteria rule by its unique identifier.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/people/me/settings/selectiveForward/criteria/{id}") + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "The `id` parameter specifies the unique identifier for the selective call forwarding criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.") + cmd.MarkFlagRequired("id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-selective-forward-user + cmd := &cobra.Command{ + Use: "get-selective-forward-user", + Short: "Get Selective Call Forward Settings for User", + Long: "Get Selective Call Forward Settings for the authenticated user.\n\nSelective Call Forward allows you to create customized rules to forward specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/selectiveForward") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-selective-forward-user + var enabled bool + var defaultPhoneNumberToForward string + var ringReminderEnabled bool + var destinationVoicemailEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-selective-forward-user", + Short: "Modify Selective Call Forward Settings for User", + Long: "Update the Selective Call Forward Settings for the authenticated user.\n\nSelective Call Accept allows you to create customized rules to accept specific calls for users based on the phone number, identity, and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/selectiveForward") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + req.BodyString("defaultPhoneNumberToForward", defaultPhoneNumberToForward) + req.BodyBool("ringReminderEnabled", ringReminderEnabled, cmd.Flags().Changed("ring-reminder-enabled")) + req.BodyBool("destinationVoicemailEnabled", destinationVoicemailEnabled, cmd.Flags().Changed("destination-voicemail-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().StringVar(&defaultPhoneNumberToForward, "default-phone-number-to-forward", "", "") + cmd.Flags().BoolVar(&ringReminderEnabled, "ring-reminder-enabled", false, "") + cmd.Flags().BoolVar(&destinationVoicemailEnabled, "destination-voicemail-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-selective-reject-user + cmd := &cobra.Command{ + Use: "get-selective-reject-user", + Short: "Get Selective Call Reject Settings for User", + Long: "Get Selective Call Reject Settings for the authenticated user.\n\nSelective Call Reject allows you to create customized rules to reject specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/selectiveReject") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-selective-reject-user + var enabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-selective-reject-user", + Short: "Modify Selective Call Reject Settings for User", + Long: "Update Selective Call Reject Settings for the authenticated user.\n\nSelective Call Reject allows you to create customized rules to reject specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/selectiveReject") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // create-user-selective-reject + var callsFrom string + var rejectEnabled bool + var scheduleName string + var scheduleType string + var scheduleLevel string + var anonymousCallersEnabled bool + var unavailableCallersEnabled bool + var phoneNumbers []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-user-selective-reject", + Short: "Add User Selective Call Reject Criteria", + Long: "Create a new Selective Call Reject Criteria for the authenticated user.\n\nSelective Call Reject allows you to create customized rules to reject specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/people/me/settings/selectiveReject/criteria") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callsFrom", callsFrom) + req.BodyBool("rejectEnabled", rejectEnabled, cmd.Flags().Changed("reject-enabled")) + req.BodyString("scheduleName", scheduleName) + req.BodyString("scheduleType", scheduleType) + req.BodyString("scheduleLevel", scheduleLevel) + req.BodyBool("anonymousCallersEnabled", anonymousCallersEnabled, cmd.Flags().Changed("anonymous-callers-enabled")) + req.BodyBool("unavailableCallersEnabled", unavailableCallersEnabled, cmd.Flags().Changed("unavailable-callers-enabled")) + req.BodyStringSlice("phoneNumbers", phoneNumbers) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callsFrom, "calls-from", "", "") + cmd.Flags().BoolVar(&rejectEnabled, "reject-enabled", false, "") + cmd.Flags().StringVar(&scheduleName, "schedule-name", "", "") + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "") + cmd.Flags().StringVar(&scheduleLevel, "schedule-level", "", "") + cmd.Flags().BoolVar(&anonymousCallersEnabled, "anonymous-callers-enabled", false, "") + cmd.Flags().BoolVar(&unavailableCallersEnabled, "unavailable-callers-enabled", false, "") + cmd.Flags().StringSliceVar(&phoneNumbers, "phone-numbers", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-anonymous-rejection-user + cmd := &cobra.Command{ + Use: "get-anonymous-rejection-user", + Short: "Get Anonymous Call Rejection Settings for User", + Long: "Get Anonymous Call Rejection Settings for the authenticated user.\n\nAnonymous Call Rejection allows you to reject calls from anonymous callers.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/anonymousCallReject") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-anonymous-rejection-user + var enabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-anonymous-rejection-user", + Short: "Modify Anonymous Call Rejection Settings for User", + Long: "Update Anonymous Call Rejection Settings for the authenticated user.\n\nAnonymous Call Rejection allows you to reject calls from anonymous callers.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/anonymousCallReject") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-selective-reject-user-2 + var id string + cmd := &cobra.Command{ + Use: "get-selective-reject-user-2", + Short: "Get Selective Call Reject Criteria Settings for User", + Long: "Get Selective Call Reject Criteria Settings for the authenticated user.\n\nSelective Call Reject allows you to create customized rules to reject specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/selectiveReject/criteria/{id}") + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "The `id` parameter specifies the unique identifier for the selective call reject criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.") + cmd.MarkFlagRequired("id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-selective-reject + var id string + var callsFrom string + var rejectEnabled bool + var scheduleName string + var scheduleType string + var scheduleLevel string + var anonymousCallersEnabled bool + var unavailableCallersEnabled bool + var phoneNumbers []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-selective-reject", + Short: "Modify a Selective Call Reject Criteria", + Long: "Modify Selective Call Reject Criteria Settings for the authenticated user.\n\n\n\nSelective Call Reject allows you to create customized rules to reject specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/selectiveReject/criteria/{id}") + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callsFrom", callsFrom) + req.BodyBool("rejectEnabled", rejectEnabled, cmd.Flags().Changed("reject-enabled")) + req.BodyString("scheduleName", scheduleName) + req.BodyString("scheduleType", scheduleType) + req.BodyString("scheduleLevel", scheduleLevel) + req.BodyBool("anonymousCallersEnabled", anonymousCallersEnabled, cmd.Flags().Changed("anonymous-callers-enabled")) + req.BodyBool("unavailableCallersEnabled", unavailableCallersEnabled, cmd.Flags().Changed("unavailable-callers-enabled")) + req.BodyStringSlice("phoneNumbers", phoneNumbers) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "The `id` parameter specifies the unique identifier for the selective call reject. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&callsFrom, "calls-from", "", "") + cmd.Flags().BoolVar(&rejectEnabled, "reject-enabled", false, "") + cmd.Flags().StringVar(&scheduleName, "schedule-name", "", "") + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "") + cmd.Flags().StringVar(&scheduleLevel, "schedule-level", "", "") + cmd.Flags().BoolVar(&anonymousCallersEnabled, "anonymous-callers-enabled", false, "") + cmd.Flags().BoolVar(&unavailableCallersEnabled, "unavailable-callers-enabled", false, "") + cmd.Flags().StringSliceVar(&phoneNumbers, "phone-numbers", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // delete-selective-reject + var id string + cmd := &cobra.Command{ + Use: "delete-selective-reject", + Short: "Delete a Selective Call Reject Criteria", + Long: "Delete a Selective Call Reject Criteria for the authenticated user.\n\n\n\nSelective Call Reject allows you to create customized rules to reject specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/people/me/settings/selectiveReject/criteria/{id}") + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "The `id` parameter specifies the unique identifier for the selective call reject criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.") + cmd.MarkFlagRequired("id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-waiting-user + cmd := &cobra.Command{ + Use: "get-waiting-user", + Short: "Get Call Waiting Settings for User", + Long: "Get Call Waiting Settings for the authenticated user.\n\nCall Waiting allows a user to receive multiple calls simultaneously. When the user is on an active call, they can receive an incoming call and switch between the two calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/callWaiting") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-waiting-user + var enabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-waiting-user", + Short: "Modify Call Waiting Settings for User", + Long: "Update Call Waiting Settings for the authenticated user.\n\nCall Waiting allows a user to receive multiple calls simultaneously. When the user is on an active call, they can receive an incoming call and switch between the two calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/callWaiting") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-sequential-ring-user + cmd := &cobra.Command{ + Use: "get-sequential-ring-user", + Short: "Get Sequential Ring Settings for User", + Long: "Get Sequential Ring Settings for the authenticated user.\n\nSequential Ring allows calls to ring additional phone numbers in sequence if the initial call is not answered. This can be configured to ring up to five phone numbers with customizable ring patterns.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/sequentialRing") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-sequential-ring-user + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-sequential-ring-user", + Short: "Modify Sequential Ring Settings for User", + Long: "Update Sequential Ring Settings for the authenticated user.\n\nSequential Ring allows calls to ring additional phone numbers in sequence if the initial call is not answered. This can be configured to ring up to five phone numbers with customizable ring patterns.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/sequentialRing") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // create-user-sequential-ring + var callsFrom string + var ringEnabled bool + var scheduleName string + var scheduleType string + var scheduleLevel string + var anonymousCallersEnabled bool + var unavailableCallersEnabled bool + var phoneNumbers []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-user-sequential-ring", + Short: "Add User Sequential Ring Criteria", + Long: "Create a new Sequential Ring Criteria for the authenticated user.\n\nSequential Ring criteria defines rules for when sequential ring should activate based on the caller and schedule.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/people/me/settings/sequentialRing/criteria") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callsFrom", callsFrom) + req.BodyBool("ringEnabled", ringEnabled, cmd.Flags().Changed("ring-enabled")) + req.BodyString("scheduleName", scheduleName) + req.BodyString("scheduleType", scheduleType) + req.BodyString("scheduleLevel", scheduleLevel) + req.BodyBool("anonymousCallersEnabled", anonymousCallersEnabled, cmd.Flags().Changed("anonymous-callers-enabled")) + req.BodyBool("unavailableCallersEnabled", unavailableCallersEnabled, cmd.Flags().Changed("unavailable-callers-enabled")) + req.BodyStringSlice("phoneNumbers", phoneNumbers) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callsFrom, "calls-from", "", "") + cmd.Flags().BoolVar(&ringEnabled, "ring-enabled", false, "") + cmd.Flags().StringVar(&scheduleName, "schedule-name", "", "") + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "") + cmd.Flags().StringVar(&scheduleLevel, "schedule-level", "", "") + cmd.Flags().BoolVar(&anonymousCallersEnabled, "anonymous-callers-enabled", false, "") + cmd.Flags().BoolVar(&unavailableCallersEnabled, "unavailable-callers-enabled", false, "") + cmd.Flags().StringSliceVar(&phoneNumbers, "phone-numbers", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-sequential-ring-user-2 + var id string + cmd := &cobra.Command{ + Use: "get-sequential-ring-user-2", + Short: "Get Sequential Ring Criteria Settings for User", + Long: "Get Sequential Ring Criteria Settings for the authenticated user.\n\nSequential Ring criteria defines rules for when sequential ring should activate based on the caller and schedule.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/sequentialRing/criteria/{id}") + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "The `id` parameter specifies the unique identifier for the sequential ring criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.") + cmd.MarkFlagRequired("id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-sequential-ring-user-2 + var id string + var scheduleName string + var scheduleType string + var scheduleLevel string + var callsFrom string + var anonymousCallersEnabled bool + var unavailableCallersEnabled bool + var phoneNumbers []string + var ringEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-sequential-ring-user-2", + Short: "Modify Sequential Ring Criteria Settings for User", + Long: "Update Sequential Ring Criteria Settings for the authenticated user.\n\nSequential Ring criteria defines rules for when sequential ring should activate based on the caller and schedule.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/sequentialRing/criteria/{id}") + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("scheduleName", scheduleName) + req.BodyString("scheduleType", scheduleType) + req.BodyString("scheduleLevel", scheduleLevel) + req.BodyString("callsFrom", callsFrom) + req.BodyBool("anonymousCallersEnabled", anonymousCallersEnabled, cmd.Flags().Changed("anonymous-callers-enabled")) + req.BodyBool("unavailableCallersEnabled", unavailableCallersEnabled, cmd.Flags().Changed("unavailable-callers-enabled")) + req.BodyStringSlice("phoneNumbers", phoneNumbers) + req.BodyBool("ringEnabled", ringEnabled, cmd.Flags().Changed("ring-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "The `id` parameter specifies the unique identifier for the sequential ring criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&scheduleName, "schedule-name", "", "") + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "") + cmd.Flags().StringVar(&scheduleLevel, "schedule-level", "", "") + cmd.Flags().StringVar(&callsFrom, "calls-from", "", "") + cmd.Flags().BoolVar(&anonymousCallersEnabled, "anonymous-callers-enabled", false, "") + cmd.Flags().BoolVar(&unavailableCallersEnabled, "unavailable-callers-enabled", false, "") + cmd.Flags().StringSliceVar(&phoneNumbers, "phone-numbers", nil, "") + cmd.Flags().BoolVar(&ringEnabled, "ring-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // delete-sequential-ring + var id string + cmd := &cobra.Command{ + Use: "delete-sequential-ring", + Short: "Delete Sequential Ring Criteria", + Long: "Delete a Sequential Ring Criteria for the authenticated user.\n\nSequential Ring criteria defines rules for when sequential ring should activate based on the caller and schedule.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/people/me/settings/sequentialRing/criteria/{id}") + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "The `id` parameter specifies the unique identifier for the sequential ring criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.") + cmd.MarkFlagRequired("id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-priority-alert-2 + cmd := &cobra.Command{ + Use: "get-priority-alert-2", + Short: "Get Priority Alert Settings", + Long: "Get Priority Alert Settings for the authenticated user.\n\nPriority alert allows you to set up a unique ringtone based on predefined criteria. This is helpful, when the user wants to be quickly notified that a specific phone number is calling.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/priorityAlert") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-priority-alert-user-2 + var enabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-priority-alert-user-2", + Short: "Modify Priority Alert Settings for User", + Long: "Update Priority Alert Settings for the authenticated user.\n\nPriority alert allows you to set up a unique ringtone based on predefined criteria. This is helpful, when the user wants to be quickly notified that a specific phone number is calling.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/priorityAlert") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // create-priority-alert-2 + var scheduleName string + var scheduleType string + var scheduleLevel string + var callsFrom string + var anonymousCallersEnabled bool + var unavailableCallersEnabled bool + var phoneNumbers []string + var notificationEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-priority-alert-2", + Short: "Add a Priority Alert Criteria", + Long: "Create a Priority Alert Criteria for the authenticated user.\n\nPriority alert allows you to set up a unique ringtone based on predefined criteria. This is helpful, when the user wants to be quickly notified that a specific phone number is calling.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/people/me/settings/priorityAlert/criteria") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("scheduleName", scheduleName) + req.BodyString("scheduleType", scheduleType) + req.BodyString("scheduleLevel", scheduleLevel) + req.BodyString("callsFrom", callsFrom) + req.BodyBool("anonymousCallersEnabled", anonymousCallersEnabled, cmd.Flags().Changed("anonymous-callers-enabled")) + req.BodyBool("unavailableCallersEnabled", unavailableCallersEnabled, cmd.Flags().Changed("unavailable-callers-enabled")) + req.BodyStringSlice("phoneNumbers", phoneNumbers) + req.BodyBool("notificationEnabled", notificationEnabled, cmd.Flags().Changed("notification-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&scheduleName, "schedule-name", "", "") + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "") + cmd.Flags().StringVar(&scheduleLevel, "schedule-level", "", "") + cmd.Flags().StringVar(&callsFrom, "calls-from", "", "") + cmd.Flags().BoolVar(&anonymousCallersEnabled, "anonymous-callers-enabled", false, "") + cmd.Flags().BoolVar(&unavailableCallersEnabled, "unavailable-callers-enabled", false, "") + cmd.Flags().StringSliceVar(&phoneNumbers, "phone-numbers", nil, "") + cmd.Flags().BoolVar(¬ificationEnabled, "notification-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-priority-alert-2-2 + var id string + cmd := &cobra.Command{ + Use: "get-priority-alert-2-2", + Short: "Get Priority Alert Criteria Settings", + Long: "Get Priority Alert Criteria Settings for the authenticated user.\n\nPriority alert allows you to set up a unique ringtone based on predefined criteria. This is helpful, when the user wants to be quickly notified that a specific phone number is calling.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/priorityAlert/criteria/{id}") + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "The `id` parameter specifies the unique identifier for the priority alert criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.") + cmd.MarkFlagRequired("id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-priority-alert-2 + var id string + var scheduleName string + var scheduleType string + var scheduleLevel string + var callsFrom string + var anonymousCallersEnabled bool + var unavailableCallersEnabled bool + var phoneNumbers []string + var notificationEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-priority-alert-2", + Short: "Modify Settings for a Priority Alert Criteria", + Long: "Modify Priority Alert Criteria Settings for the authenticated user.\n\nPriority alert allows you to set up a unique ringtone based on predefined criteria. This API allows modifying attributes such as name, phoneNumbers etc for a particular criteria.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/priorityAlert/criteria/{id}") + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("scheduleName", scheduleName) + req.BodyString("scheduleType", scheduleType) + req.BodyString("scheduleLevel", scheduleLevel) + req.BodyString("callsFrom", callsFrom) + req.BodyBool("anonymousCallersEnabled", anonymousCallersEnabled, cmd.Flags().Changed("anonymous-callers-enabled")) + req.BodyBool("unavailableCallersEnabled", unavailableCallersEnabled, cmd.Flags().Changed("unavailable-callers-enabled")) + req.BodyStringSlice("phoneNumbers", phoneNumbers) + req.BodyBool("notificationEnabled", notificationEnabled, cmd.Flags().Changed("notification-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "The `id` parameter specifies the unique identifier for the priority alert criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&scheduleName, "schedule-name", "", "") + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "") + cmd.Flags().StringVar(&scheduleLevel, "schedule-level", "", "") + cmd.Flags().StringVar(&callsFrom, "calls-from", "", "") + cmd.Flags().BoolVar(&anonymousCallersEnabled, "anonymous-callers-enabled", false, "") + cmd.Flags().BoolVar(&unavailableCallersEnabled, "unavailable-callers-enabled", false, "") + cmd.Flags().StringSliceVar(&phoneNumbers, "phone-numbers", nil, "") + cmd.Flags().BoolVar(¬ificationEnabled, "notification-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // delete-priority-alert-2 + var id string + cmd := &cobra.Command{ + Use: "delete-priority-alert-2", + Short: "Delete a Priority Alert Criteria", + Long: "Delete a Priority Alert criteria for the authenticated user.\n\nPriority alert allows you to set up a unique ringtone based on predefined criteria. This API removes a specific criteria rule by its unique identifier.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/people/me/settings/priorityAlert/criteria/{id}") + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "The `id` parameter specifies the unique identifier for the priority alert criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.") + cmd.MarkFlagRequired("id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-user-schedules-2 + cmd := &cobra.Command{ + Use: "get-user-schedules-2", + Short: "Get User (and Location) Schedules", + Long: "Get Schedules for Call Settings for the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/schedules") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // create-user-schedule-2 + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-user-schedule-2", + Short: "Add a User level Schedule for Call Settings", + Long: "Create a new Schedule for the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/people/me/schedules") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-user-schedule-2 + var scheduleType string + var scheduleId string + cmd := &cobra.Command{ + Use: "get-user-schedule-2", + Short: "Get User Schedule", + Long: "Get a Schedule details for Call Settings of the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/schedules/{scheduleType}/{scheduleId}") + req.PathParam("scheduleType", scheduleType) + req.PathParam("scheduleId", scheduleId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "Type of the schedule. * `businessHours` - Business hours schedule type. * `holidays` - Holidays schedule type. ") + cmd.MarkFlagRequired("schedule-type") + cmd.Flags().StringVar(&scheduleId, "schedule-id", "", "Retrieve the schedule with the matching ID.") + cmd.MarkFlagRequired("schedule-id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-user-schedule-2 + var scheduleType string + var scheduleId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-user-schedule-2", + Short: "Modify User Schedule", + Long: "Modify a Schedule details for Call Settings of the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/schedules/{scheduleType}/{scheduleId}") + req.PathParam("scheduleType", scheduleType) + req.PathParam("scheduleId", scheduleId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "Type of the schedule. * `businessHours` - Business hours schedule type. * `holidays` - Holidays schedule type. ") + cmd.MarkFlagRequired("schedule-type") + cmd.Flags().StringVar(&scheduleId, "schedule-id", "", "Update the schedule with the matching ID.") + cmd.MarkFlagRequired("schedule-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // delete-user-schedule-2 + var scheduleType string + var scheduleId string + cmd := &cobra.Command{ + Use: "delete-user-schedule-2", + Short: "Delete a User Schedule", + Long: "Delete a specific schedule for the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/people/me/schedules/{scheduleType}/{scheduleId}") + req.PathParam("scheduleType", scheduleType) + req.PathParam("scheduleId", scheduleId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "Type of the schedule. * `businessHours` - Business hours schedule type. * `holidays` - Holidays schedule type. ") + cmd.MarkFlagRequired("schedule-type") + cmd.Flags().StringVar(&scheduleId, "schedule-id", "", "Delete the schedule with the matching ID.") + cmd.MarkFlagRequired("schedule-id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // create-event-user-schedule-2 + var scheduleType string + var scheduleId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-event-user-schedule-2", + Short: "Add an event for a User Schedule", + Long: "Create a new Event for for the authenticated user's specified schedule.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/people/me/schedules/{scheduleType}/{scheduleId}/events") + req.PathParam("scheduleType", scheduleType) + req.PathParam("scheduleId", scheduleId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "Type of the schedule. * `businessHours` - Business hours schedule type. * `holidays` - Holidays schedule type. ") + cmd.MarkFlagRequired("schedule-type") + cmd.Flags().StringVar(&scheduleId, "schedule-id", "", "add an event for the specified schedule ID.") + cmd.MarkFlagRequired("schedule-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-user-schedule-event-2 + var scheduleType string + var scheduleId string + var eventId string + cmd := &cobra.Command{ + Use: "get-user-schedule-event-2", + Short: "Get User Schedule Event", + Long: "Get a Schedule Event details for Call Settings of the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/schedules/{scheduleType}/{scheduleId}/events/{eventId}") + req.PathParam("scheduleType", scheduleType) + req.PathParam("scheduleId", scheduleId) + req.PathParam("eventId", eventId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "Type of the schedule. * `businessHours` - Business hours schedule type. * `holidays` - Holidays schedule type. ") + cmd.MarkFlagRequired("schedule-type") + cmd.Flags().StringVar(&scheduleId, "schedule-id", "", "Retrieve the schedule with the matching ID.") + cmd.MarkFlagRequired("schedule-id") + cmd.Flags().StringVar(&eventId, "event-id", "", "Retrieve the event with the matching ID.") + cmd.MarkFlagRequired("event-id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-user-schedule-event-2 + var scheduleType string + var scheduleId string + var eventId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-user-schedule-event-2", + Short: "Modify User Schedule Event", + Long: "Modify a Schedule event details for Call Settings of the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/schedules/{scheduleType}/{scheduleId}/events/{eventId}") + req.PathParam("scheduleType", scheduleType) + req.PathParam("scheduleId", scheduleId) + req.PathParam("eventId", eventId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "Type of the schedule. * `businessHours` - Business hours schedule type. * `holidays` - Holidays schedule type. ") + cmd.MarkFlagRequired("schedule-type") + cmd.Flags().StringVar(&scheduleId, "schedule-id", "", "Update an event for the specified schedule ID.") + cmd.MarkFlagRequired("schedule-id") + cmd.Flags().StringVar(&eventId, "event-id", "", "Update the event with the matching ID.") + cmd.MarkFlagRequired("event-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // delete-user-schedule-event-2 + var scheduleType string + var scheduleId string + var eventId string + cmd := &cobra.Command{ + Use: "delete-user-schedule-event-2", + Short: "Delete User a Schedule Event", + Long: "Delete a specific schedule event for the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/people/me/schedules/{scheduleType}/{scheduleId}/events/{eventId}") + req.PathParam("scheduleType", scheduleType) + req.PathParam("scheduleId", scheduleId) + req.PathParam("eventId", eventId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "Type of the schedule. * `businessHours` - Business hours schedule type. * `holidays` - Holidays schedule type. ") + cmd.MarkFlagRequired("schedule-type") + cmd.Flags().StringVar(&scheduleId, "schedule-id", "", "Delete an event for the specified schedule ID.") + cmd.MarkFlagRequired("schedule-id") + cmd.Flags().StringVar(&eventId, "event-id", "", "Delete the event with the matching ID.") + cmd.MarkFlagRequired("event-id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-user-location-schedule-2 + var scheduleType string + var scheduleId string + cmd := &cobra.Command{ + Use: "get-user-location-schedule-2", + Short: "Get User's Location Level Schedule", + Long: "Get Location Schedule for Call Settings of the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/locations/schedules/{scheduleType}/{scheduleId}") + req.PathParam("scheduleType", scheduleType) + req.PathParam("scheduleId", scheduleId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "Type of the schedule. * `businessHours` - Business hours schedule type. * `holidays` - Holidays schedule type. ") + cmd.MarkFlagRequired("schedule-type") + cmd.Flags().StringVar(&scheduleId, "schedule-id", "", "Retrieve the schedule with the matching ID.") + cmd.MarkFlagRequired("schedule-id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-notify-user-2 + cmd := &cobra.Command{ + Use: "get-notify-user-2", + Short: "Get Call Notify Settings for User", + Long: "Get Call Notify Settings for the authenticated user.\n\nCall Notify allows you to set up a unique ringtone based on predefined criteria. This is helpful, when the user wants to be quickly notified that a specific phone number is calling.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/callNotify") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-notify-user-2 + var enabled bool + var emailAddress string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-notify-user-2", + Short: "Modify Call Notify Settings for User", + Long: "Update Call Notify Settings for the authenticated user.\n\nCall Notify allows you to set up a unique ringtone based on predefined criteria. This API allows modifying attributes such as name, phoneNumbers etc for a particular criteria.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/callNotify") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + req.BodyString("emailAddress", emailAddress) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().StringVar(&emailAddress, "email-address", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // create-notify-2 + var scheduleName string + var scheduleType string + var scheduleLevel string + var callsFrom string + var anonymousCallersEnabled bool + var unavailableCallersEnabled bool + var phoneNumbers []string + var notificationEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-notify-2", + Short: "Add a Call Notify Criteria", + Long: "Create a Call Notify Criteria for the authenticated user.\n\nCall Notify allows you to set up a unique ringtone based on predefined criteria. This is helpful, when the user wants to be quickly notified that a specific phone number is calling.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/people/me/settings/callNotify/criteria") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("scheduleName", scheduleName) + req.BodyString("scheduleType", scheduleType) + req.BodyString("scheduleLevel", scheduleLevel) + req.BodyString("callsFrom", callsFrom) + req.BodyBool("anonymousCallersEnabled", anonymousCallersEnabled, cmd.Flags().Changed("anonymous-callers-enabled")) + req.BodyBool("unavailableCallersEnabled", unavailableCallersEnabled, cmd.Flags().Changed("unavailable-callers-enabled")) + req.BodyStringSlice("phoneNumbers", phoneNumbers) + req.BodyBool("notificationEnabled", notificationEnabled, cmd.Flags().Changed("notification-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&scheduleName, "schedule-name", "", "") + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "") + cmd.Flags().StringVar(&scheduleLevel, "schedule-level", "", "") + cmd.Flags().StringVar(&callsFrom, "calls-from", "", "") + cmd.Flags().BoolVar(&anonymousCallersEnabled, "anonymous-callers-enabled", false, "") + cmd.Flags().BoolVar(&unavailableCallersEnabled, "unavailable-callers-enabled", false, "") + cmd.Flags().StringSliceVar(&phoneNumbers, "phone-numbers", nil, "") + cmd.Flags().BoolVar(¬ificationEnabled, "notification-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-notify-2 + var id string + cmd := &cobra.Command{ + Use: "get-notify-2", + Short: "Get Call Notify Criteria Settings", + Long: "Get Call Notify Criteria Settings for the authenticated user.\n\nCall Notify allows you to set up a unique ringtone based on predefined criteria. This is helpful, when the user wants to be quickly notified that a specific phone number is calling.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/callNotify/criteria/{id}") + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "The `id` parameter specifies the unique identifier for the call notify criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.") + cmd.MarkFlagRequired("id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-notify-2 + var id string + var scheduleName string + var scheduleType string + var scheduleLevel string + var callsFrom string + var anonymousCallersEnabled bool + var unavailableCallersEnabled bool + var phoneNumbers []string + var notificationEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-notify-2", + Short: "Modify a Call Notify Criteria", + Long: "Modify Call Notify Criteria Settings for the authenticated user.\n\nCall Notify allows you to set up a unique ringtone based on predefined criteria. This API allows modifying attributes such as name, phoneNumbers etc for a particular criteria.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/callNotify/criteria/{id}") + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("scheduleName", scheduleName) + req.BodyString("scheduleType", scheduleType) + req.BodyString("scheduleLevel", scheduleLevel) + req.BodyString("callsFrom", callsFrom) + req.BodyBool("anonymousCallersEnabled", anonymousCallersEnabled, cmd.Flags().Changed("anonymous-callers-enabled")) + req.BodyBool("unavailableCallersEnabled", unavailableCallersEnabled, cmd.Flags().Changed("unavailable-callers-enabled")) + req.BodyStringSlice("phoneNumbers", phoneNumbers) + req.BodyBool("notificationEnabled", notificationEnabled, cmd.Flags().Changed("notification-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "The `id` parameter specifies the unique identifier for the call notify criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&scheduleName, "schedule-name", "", "") + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "") + cmd.Flags().StringVar(&scheduleLevel, "schedule-level", "", "") + cmd.Flags().StringVar(&callsFrom, "calls-from", "", "") + cmd.Flags().BoolVar(&anonymousCallersEnabled, "anonymous-callers-enabled", false, "") + cmd.Flags().BoolVar(&unavailableCallersEnabled, "unavailable-callers-enabled", false, "") + cmd.Flags().StringSliceVar(&phoneNumbers, "phone-numbers", nil, "") + cmd.Flags().BoolVar(¬ificationEnabled, "notification-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // delete-notify-2 + var id string + cmd := &cobra.Command{ + Use: "delete-notify-2", + Short: "Delete a Call Notify Criteria", + Long: "Delete a Call Notify criteria for the authenticated user.\n\nCall Notify allows you to set up a unique ringtone based on predefined criteria. This API removes a specific criteria rule by its unique identifier.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/people/me/settings/callNotify/criteria/{id}") + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "The `id` parameter specifies the unique identifier for the call notify criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.") + cmd.MarkFlagRequired("id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-selective-accept-user-2 + cmd := &cobra.Command{ + Use: "get-selective-accept-user-2", + Short: "Get Selective Call Accept Settings for User", + Long: "Get Selective Call Accept Settings for the authenticated user.\n\nSelective Call Accept allows you to create customized rules to accept specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/selectiveAccept") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-selective-accept-user-2 + var enabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-selective-accept-user-2", + Short: "Modify Selective Call Accept Settings for User", + Long: "Update Selective Call Accept Settings for the authenticated user.\n\nSelective Call Accept allows you to create customized rules to accept specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/selectiveAccept") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // create-user-selective-accept-2 + var callsFrom string + var acceptEnabled bool + var scheduleName string + var scheduleType string + var scheduleLevel string + var anonymousCallersEnabled bool + var unavailableCallersEnabled bool + var phoneNumbers []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-user-selective-accept-2", + Short: "Add User Selective Call Accept Criteria", + Long: "Create a new Selective Call Accept Criteria for the authenticated user.\n\nSelective Call Accept allows you to create customized rules to accept specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/people/me/settings/selectiveAccept/criteria") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callsFrom", callsFrom) + req.BodyBool("acceptEnabled", acceptEnabled, cmd.Flags().Changed("accept-enabled")) + req.BodyString("scheduleName", scheduleName) + req.BodyString("scheduleType", scheduleType) + req.BodyString("scheduleLevel", scheduleLevel) + req.BodyBool("anonymousCallersEnabled", anonymousCallersEnabled, cmd.Flags().Changed("anonymous-callers-enabled")) + req.BodyBool("unavailableCallersEnabled", unavailableCallersEnabled, cmd.Flags().Changed("unavailable-callers-enabled")) + req.BodyStringSlice("phoneNumbers", phoneNumbers) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callsFrom, "calls-from", "", "") + cmd.Flags().BoolVar(&acceptEnabled, "accept-enabled", false, "") + cmd.Flags().StringVar(&scheduleName, "schedule-name", "", "") + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "") + cmd.Flags().StringVar(&scheduleLevel, "schedule-level", "", "") + cmd.Flags().BoolVar(&anonymousCallersEnabled, "anonymous-callers-enabled", false, "") + cmd.Flags().BoolVar(&unavailableCallersEnabled, "unavailable-callers-enabled", false, "") + cmd.Flags().StringSliceVar(&phoneNumbers, "phone-numbers", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-selective-accept-user-2-2 + var id string + cmd := &cobra.Command{ + Use: "get-selective-accept-user-2-2", + Short: "Get Selective Call Accept Criteria Settings for User", + Long: "Get Selective Call Accept Criteria Settings for the authenticated user.\n\nSelective Call Accept allows you to create customized rules to accept specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/selectiveAccept/criteria/{id}") + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "The `id` parameter specifies the unique identifier for the selective call accept criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.") + cmd.MarkFlagRequired("id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-selective-accept-2 + var id string + var callsFrom string + var acceptEnabled bool + var scheduleName string + var scheduleType string + var scheduleLevel string + var anonymousCallersEnabled bool + var unavailableCallersEnabled bool + var phoneNumbers []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-selective-accept-2", + Short: "Modify a Selective Call Accept Criteria", + Long: "Modify Selective Call Accept Criteria Settings for the authenticated user.\n\n\n\nSelective Call Accept allows you to create customized rules to accept specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/selectiveAccept/criteria/{id}") + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callsFrom", callsFrom) + req.BodyBool("acceptEnabled", acceptEnabled, cmd.Flags().Changed("accept-enabled")) + req.BodyString("scheduleName", scheduleName) + req.BodyString("scheduleType", scheduleType) + req.BodyString("scheduleLevel", scheduleLevel) + req.BodyBool("anonymousCallersEnabled", anonymousCallersEnabled, cmd.Flags().Changed("anonymous-callers-enabled")) + req.BodyBool("unavailableCallersEnabled", unavailableCallersEnabled, cmd.Flags().Changed("unavailable-callers-enabled")) + req.BodyStringSlice("phoneNumbers", phoneNumbers) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "The `id` parameter specifies the unique identifier for the selective call accept. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&callsFrom, "calls-from", "", "") + cmd.Flags().BoolVar(&acceptEnabled, "accept-enabled", false, "") + cmd.Flags().StringVar(&scheduleName, "schedule-name", "", "") + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "") + cmd.Flags().StringVar(&scheduleLevel, "schedule-level", "", "") + cmd.Flags().BoolVar(&anonymousCallersEnabled, "anonymous-callers-enabled", false, "") + cmd.Flags().BoolVar(&unavailableCallersEnabled, "unavailable-callers-enabled", false, "") + cmd.Flags().StringSliceVar(&phoneNumbers, "phone-numbers", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // delete-selective-accept-2 + var id string + cmd := &cobra.Command{ + Use: "delete-selective-accept-2", + Short: "Delete a Selective Call Accept Criteria", + Long: "Delete a Selective Call Accept Criteria for the authenticated user.\n\n\n\nSelective Call Accept allows you to create customized rules to accept specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/people/me/settings/selectiveAccept/criteria/{id}") + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "The `id` parameter specifies the unique identifier for the selective call accept criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.") + cmd.MarkFlagRequired("id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-available-numbers-user-location-2 + var max string + var start string + var name string + var phoneNumber string + var extension string + var order string + cmd := &cobra.Command{ + Use: "get-available-numbers-user-location-2", + Short: "Get Available Numbers for User's Location", + Long: "Get Available Numbers for User's Location.\n\nFetch all the numbers available in User's location.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/location/assignedNumbers") + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("name", name) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("extension", extension) + req.QueryParam("order", order) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&max, "max", "", "Limit the maximum number of numbers in the response.") + cmd.Flags().StringVar(&start, "start", "", "Specify the offset from the first result that you want to fetch.") + cmd.Flags().StringVar(&name, "name", "", "List numbers whose owner name contains this string.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "List numbers whose phoneNumber contains this string.") + cmd.Flags().StringVar(&extension, "extension", "", "List numbers whose extension contains this string.") + cmd.Flags().StringVar(&order, "order", "", "Sort the list of numbers based on `lastName`, `dn`, `extension` either asc or desc.") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // create-selective-forward-2 + var forwardToPhoneNumber string + var destinationVoicemailEnabled bool + var scheduleName string + var scheduleType string + var scheduleLevel string + var callsFrom string + var anonymousCallersEnabled bool + var unavailableCallersEnabled bool + var phoneNumbers []string + var forwardEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-selective-forward-2", + Short: "Add a Selective Call Forwarding Criteria", + Long: "Create a Selective Call Forwarding Criteria for the authenticated user.\n\nSelective Call Forward allows you to define rules that automatically forward incoming calls based on specific criteria, such as the caller\u2019s phone number, caller identity, and the time and day the call is received.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/people/me/settings/selectiveForward/criteria") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("forwardToPhoneNumber", forwardToPhoneNumber) + req.BodyBool("destinationVoicemailEnabled", destinationVoicemailEnabled, cmd.Flags().Changed("destination-voicemail-enabled")) + req.BodyString("scheduleName", scheduleName) + req.BodyString("scheduleType", scheduleType) + req.BodyString("scheduleLevel", scheduleLevel) + req.BodyString("callsFrom", callsFrom) + req.BodyBool("anonymousCallersEnabled", anonymousCallersEnabled, cmd.Flags().Changed("anonymous-callers-enabled")) + req.BodyBool("unavailableCallersEnabled", unavailableCallersEnabled, cmd.Flags().Changed("unavailable-callers-enabled")) + req.BodyStringSlice("phoneNumbers", phoneNumbers) + req.BodyBool("forwardEnabled", forwardEnabled, cmd.Flags().Changed("forward-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&forwardToPhoneNumber, "forward-to-phone-number", "", "") + cmd.Flags().BoolVar(&destinationVoicemailEnabled, "destination-voicemail-enabled", false, "") + cmd.Flags().StringVar(&scheduleName, "schedule-name", "", "") + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "") + cmd.Flags().StringVar(&scheduleLevel, "schedule-level", "", "") + cmd.Flags().StringVar(&callsFrom, "calls-from", "", "") + cmd.Flags().BoolVar(&anonymousCallersEnabled, "anonymous-callers-enabled", false, "") + cmd.Flags().BoolVar(&unavailableCallersEnabled, "unavailable-callers-enabled", false, "") + cmd.Flags().StringSliceVar(&phoneNumbers, "phone-numbers", nil, "") + cmd.Flags().BoolVar(&forwardEnabled, "forward-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-selective-forward-2 + var id string + cmd := &cobra.Command{ + Use: "get-selective-forward-2", + Short: "Get Settings for a Selective Call Forwarding Criteria", + Long: "Get settings for a Selective Call Forwarding Criteria for the authenticated user.\n\nSelective Call Forward allows you to define rules that automatically forward incoming calls based on specific criteria, such as the caller\u2019s phone number, caller identity, and the time and day the call is received.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/selectiveForward/criteria/{id}") + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "The `id` parameter specifies the unique identifier for the selective call forwarding criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.") + cmd.MarkFlagRequired("id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-selective-forward-2 + var id string + var forwardToPhoneNumber string + var destinationVoicemailEnabled bool + var scheduleName string + var scheduleType string + var scheduleLevel string + var callsFrom string + var anonymousCallersEnabled bool + var unavailableCallersEnabled bool + var phoneNumbers []string + var forwardEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-selective-forward-2", + Short: "Modify Settings for a Selective Call Forwarding Criteria", + Long: "Modify settings for a Selective Call Forwarding Criteria for the authenticated user.\n\nSelective Call Forward allows you to define rules that automatically forward incoming calls based on specific criteria, such as the caller\u2019s phone number, caller identity, and the time and day the call is received.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/selectiveForward/criteria/{id}") + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("forwardToPhoneNumber", forwardToPhoneNumber) + req.BodyBool("destinationVoicemailEnabled", destinationVoicemailEnabled, cmd.Flags().Changed("destination-voicemail-enabled")) + req.BodyString("scheduleName", scheduleName) + req.BodyString("scheduleType", scheduleType) + req.BodyString("scheduleLevel", scheduleLevel) + req.BodyString("callsFrom", callsFrom) + req.BodyBool("anonymousCallersEnabled", anonymousCallersEnabled, cmd.Flags().Changed("anonymous-callers-enabled")) + req.BodyBool("unavailableCallersEnabled", unavailableCallersEnabled, cmd.Flags().Changed("unavailable-callers-enabled")) + req.BodyStringSlice("phoneNumbers", phoneNumbers) + req.BodyBool("forwardEnabled", forwardEnabled, cmd.Flags().Changed("forward-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "The `id` parameter specifies the unique identifier for the selective call forwarding criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&forwardToPhoneNumber, "forward-to-phone-number", "", "") + cmd.Flags().BoolVar(&destinationVoicemailEnabled, "destination-voicemail-enabled", false, "") + cmd.Flags().StringVar(&scheduleName, "schedule-name", "", "") + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "") + cmd.Flags().StringVar(&scheduleLevel, "schedule-level", "", "") + cmd.Flags().StringVar(&callsFrom, "calls-from", "", "") + cmd.Flags().BoolVar(&anonymousCallersEnabled, "anonymous-callers-enabled", false, "") + cmd.Flags().BoolVar(&unavailableCallersEnabled, "unavailable-callers-enabled", false, "") + cmd.Flags().StringSliceVar(&phoneNumbers, "phone-numbers", nil, "") + cmd.Flags().BoolVar(&forwardEnabled, "forward-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // delete-selective-forward-2 + var id string + cmd := &cobra.Command{ + Use: "delete-selective-forward-2", + Short: "Delete a Selective Call Forwarding Criteria", + Long: "Delete a Selective Call Forwarding Criteria for the authenticated user.\n\nSelective call forwarding allows you to define rules that automatically forward incoming calls based on specific criteria. This API removes a specific criteria rule by its unique identifier.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/people/me/settings/selectiveForward/criteria/{id}") + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "The `id` parameter specifies the unique identifier for the selective call forwarding criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.") + cmd.MarkFlagRequired("id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-selective-forward-user-2 + cmd := &cobra.Command{ + Use: "get-selective-forward-user-2", + Short: "Get Selective Call Forward Settings for User", + Long: "Get Selective Call Forward Settings for the authenticated user.\n\nSelective Call Forward allows you to create customized rules to forward specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/selectiveForward") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-selective-forward-user-2 + var enabled bool + var defaultPhoneNumberToForward string + var ringReminderEnabled bool + var destinationVoicemailEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-selective-forward-user-2", + Short: "Modify Selective Call Forward Settings for User", + Long: "Update the Selective Call Forward Settings for the authenticated user.\n\nSelective Call Accept allows you to create customized rules to accept specific calls for users based on the phone number, identity, and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/selectiveForward") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + req.BodyString("defaultPhoneNumberToForward", defaultPhoneNumberToForward) + req.BodyBool("ringReminderEnabled", ringReminderEnabled, cmd.Flags().Changed("ring-reminder-enabled")) + req.BodyBool("destinationVoicemailEnabled", destinationVoicemailEnabled, cmd.Flags().Changed("destination-voicemail-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().StringVar(&defaultPhoneNumberToForward, "default-phone-number-to-forward", "", "") + cmd.Flags().BoolVar(&ringReminderEnabled, "ring-reminder-enabled", false, "") + cmd.Flags().BoolVar(&destinationVoicemailEnabled, "destination-voicemail-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-selective-reject-user-2 + cmd := &cobra.Command{ + Use: "get-selective-reject-user-2", + Short: "Get Selective Call Reject Settings for User", + Long: "Get Selective Call Reject Settings for the authenticated user.\n\nSelective Call Reject allows you to create customized rules to reject specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/selectiveReject") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-selective-reject-user-2 + var enabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-selective-reject-user-2", + Short: "Modify Selective Call Reject Settings for User", + Long: "Update Selective Call Reject Settings for the authenticated user.\n\nSelective Call Reject allows you to create customized rules to reject specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/selectiveReject") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // create-user-selective-reject-2 + var callsFrom string + var rejectEnabled bool + var scheduleName string + var scheduleType string + var scheduleLevel string + var anonymousCallersEnabled bool + var unavailableCallersEnabled bool + var phoneNumbers []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-user-selective-reject-2", + Short: "Add User Selective Call Reject Criteria", + Long: "Create a new Selective Call Reject Criteria for the authenticated user.\n\nSelective Call Reject allows you to create customized rules to reject specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/people/me/settings/selectiveReject/criteria") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callsFrom", callsFrom) + req.BodyBool("rejectEnabled", rejectEnabled, cmd.Flags().Changed("reject-enabled")) + req.BodyString("scheduleName", scheduleName) + req.BodyString("scheduleType", scheduleType) + req.BodyString("scheduleLevel", scheduleLevel) + req.BodyBool("anonymousCallersEnabled", anonymousCallersEnabled, cmd.Flags().Changed("anonymous-callers-enabled")) + req.BodyBool("unavailableCallersEnabled", unavailableCallersEnabled, cmd.Flags().Changed("unavailable-callers-enabled")) + req.BodyStringSlice("phoneNumbers", phoneNumbers) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callsFrom, "calls-from", "", "") + cmd.Flags().BoolVar(&rejectEnabled, "reject-enabled", false, "") + cmd.Flags().StringVar(&scheduleName, "schedule-name", "", "") + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "") + cmd.Flags().StringVar(&scheduleLevel, "schedule-level", "", "") + cmd.Flags().BoolVar(&anonymousCallersEnabled, "anonymous-callers-enabled", false, "") + cmd.Flags().BoolVar(&unavailableCallersEnabled, "unavailable-callers-enabled", false, "") + cmd.Flags().StringSliceVar(&phoneNumbers, "phone-numbers", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-anonymous-rejection-user-2 + cmd := &cobra.Command{ + Use: "get-anonymous-rejection-user-2", + Short: "Get Anonymous Call Rejection Settings for User", + Long: "Get Anonymous Call Rejection Settings for the authenticated user.\n\nAnonymous Call Rejection allows you to reject calls from anonymous callers.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/anonymousCallReject") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-anonymous-rejection-user-2 + var enabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-anonymous-rejection-user-2", + Short: "Modify Anonymous Call Rejection Settings for User", + Long: "Update Anonymous Call Rejection Settings for the authenticated user.\n\nAnonymous Call Rejection allows you to reject calls from anonymous callers.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/anonymousCallReject") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-selective-reject-user-2-2 + var id string + cmd := &cobra.Command{ + Use: "get-selective-reject-user-2-2", + Short: "Get Selective Call Reject Criteria Settings for User", + Long: "Get Selective Call Reject Criteria Settings for the authenticated user.\n\nSelective Call Reject allows you to create customized rules to reject specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/selectiveReject/criteria/{id}") + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "The `id` parameter specifies the unique identifier for the selective call reject criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.") + cmd.MarkFlagRequired("id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-selective-reject-2 + var id string + var callsFrom string + var rejectEnabled bool + var scheduleName string + var scheduleType string + var scheduleLevel string + var anonymousCallersEnabled bool + var unavailableCallersEnabled bool + var phoneNumbers []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-selective-reject-2", + Short: "Modify a Selective Call Reject Criteria", + Long: "Modify Selective Call Reject Criteria Settings for the authenticated user.\n\n\n\nSelective Call Reject allows you to create customized rules to reject specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/selectiveReject/criteria/{id}") + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callsFrom", callsFrom) + req.BodyBool("rejectEnabled", rejectEnabled, cmd.Flags().Changed("reject-enabled")) + req.BodyString("scheduleName", scheduleName) + req.BodyString("scheduleType", scheduleType) + req.BodyString("scheduleLevel", scheduleLevel) + req.BodyBool("anonymousCallersEnabled", anonymousCallersEnabled, cmd.Flags().Changed("anonymous-callers-enabled")) + req.BodyBool("unavailableCallersEnabled", unavailableCallersEnabled, cmd.Flags().Changed("unavailable-callers-enabled")) + req.BodyStringSlice("phoneNumbers", phoneNumbers) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "The `id` parameter specifies the unique identifier for the selective call reject. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&callsFrom, "calls-from", "", "") + cmd.Flags().BoolVar(&rejectEnabled, "reject-enabled", false, "") + cmd.Flags().StringVar(&scheduleName, "schedule-name", "", "") + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "") + cmd.Flags().StringVar(&scheduleLevel, "schedule-level", "", "") + cmd.Flags().BoolVar(&anonymousCallersEnabled, "anonymous-callers-enabled", false, "") + cmd.Flags().BoolVar(&unavailableCallersEnabled, "unavailable-callers-enabled", false, "") + cmd.Flags().StringSliceVar(&phoneNumbers, "phone-numbers", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // delete-selective-reject-2 + var id string + cmd := &cobra.Command{ + Use: "delete-selective-reject-2", + Short: "Delete a Selective Call Reject Criteria", + Long: "Delete a Selective Call Reject Criteria for the authenticated user.\n\n\n\nSelective Call Reject allows you to create customized rules to reject specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/people/me/settings/selectiveReject/criteria/{id}") + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "The `id` parameter specifies the unique identifier for the selective call reject criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.") + cmd.MarkFlagRequired("id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-waiting-user-2 + cmd := &cobra.Command{ + Use: "get-waiting-user-2", + Short: "Get Call Waiting Settings for User", + Long: "Get Call Waiting Settings for the authenticated user.\n\nCall Waiting allows a user to receive multiple calls simultaneously. When the user is on an active call, they can receive an incoming call and switch between the two calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/callWaiting") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-waiting-user-2 + var enabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-waiting-user-2", + Short: "Modify Call Waiting Settings for User", + Long: "Update Call Waiting Settings for the authenticated user.\n\nCall Waiting allows a user to receive multiple calls simultaneously. When the user is on an active call, they can receive an incoming call and switch between the two calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/callWaiting") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-sequential-ring-user-2 + cmd := &cobra.Command{ + Use: "get-sequential-ring-user-2", + Short: "Get Sequential Ring Settings for User", + Long: "Get Sequential Ring Settings for the authenticated user.\n\nSequential Ring allows calls to ring additional phone numbers in sequence if the initial call is not answered. This can be configured to ring up to five phone numbers with customizable ring patterns.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/sequentialRing") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-sequential-ring-user-2 + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-sequential-ring-user-2", + Short: "Modify Sequential Ring Settings for User", + Long: "Update Sequential Ring Settings for the authenticated user.\n\nSequential Ring allows calls to ring additional phone numbers in sequence if the initial call is not answered. This can be configured to ring up to five phone numbers with customizable ring patterns.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/sequentialRing") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // create-user-sequential-ring-2 + var callsFrom string + var ringEnabled bool + var scheduleName string + var scheduleType string + var scheduleLevel string + var anonymousCallersEnabled bool + var unavailableCallersEnabled bool + var phoneNumbers []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-user-sequential-ring-2", + Short: "Add User Sequential Ring Criteria", + Long: "Create a new Sequential Ring Criteria for the authenticated user.\n\nSequential Ring criteria defines rules for when sequential ring should activate based on the caller and schedule.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/people/me/settings/sequentialRing/criteria") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callsFrom", callsFrom) + req.BodyBool("ringEnabled", ringEnabled, cmd.Flags().Changed("ring-enabled")) + req.BodyString("scheduleName", scheduleName) + req.BodyString("scheduleType", scheduleType) + req.BodyString("scheduleLevel", scheduleLevel) + req.BodyBool("anonymousCallersEnabled", anonymousCallersEnabled, cmd.Flags().Changed("anonymous-callers-enabled")) + req.BodyBool("unavailableCallersEnabled", unavailableCallersEnabled, cmd.Flags().Changed("unavailable-callers-enabled")) + req.BodyStringSlice("phoneNumbers", phoneNumbers) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callsFrom, "calls-from", "", "") + cmd.Flags().BoolVar(&ringEnabled, "ring-enabled", false, "") + cmd.Flags().StringVar(&scheduleName, "schedule-name", "", "") + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "") + cmd.Flags().StringVar(&scheduleLevel, "schedule-level", "", "") + cmd.Flags().BoolVar(&anonymousCallersEnabled, "anonymous-callers-enabled", false, "") + cmd.Flags().BoolVar(&unavailableCallersEnabled, "unavailable-callers-enabled", false, "") + cmd.Flags().StringSliceVar(&phoneNumbers, "phone-numbers", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-sequential-ring-user-2-2 + var id string + cmd := &cobra.Command{ + Use: "get-sequential-ring-user-2-2", + Short: "Get Sequential Ring Criteria Settings for User", + Long: "Get Sequential Ring Criteria Settings for the authenticated user.\n\nSequential Ring criteria defines rules for when sequential ring should activate based on the caller and schedule.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/sequentialRing/criteria/{id}") + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "The `id` parameter specifies the unique identifier for the sequential ring criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.") + cmd.MarkFlagRequired("id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-sequential-ring-user-2-2 + var id string + var scheduleName string + var scheduleType string + var scheduleLevel string + var callsFrom string + var anonymousCallersEnabled bool + var unavailableCallersEnabled bool + var phoneNumbers []string + var ringEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-sequential-ring-user-2-2", + Short: "Modify Sequential Ring Criteria Settings for User", + Long: "Update Sequential Ring Criteria Settings for the authenticated user.\n\nSequential Ring criteria defines rules for when sequential ring should activate based on the caller and schedule.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/sequentialRing/criteria/{id}") + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("scheduleName", scheduleName) + req.BodyString("scheduleType", scheduleType) + req.BodyString("scheduleLevel", scheduleLevel) + req.BodyString("callsFrom", callsFrom) + req.BodyBool("anonymousCallersEnabled", anonymousCallersEnabled, cmd.Flags().Changed("anonymous-callers-enabled")) + req.BodyBool("unavailableCallersEnabled", unavailableCallersEnabled, cmd.Flags().Changed("unavailable-callers-enabled")) + req.BodyStringSlice("phoneNumbers", phoneNumbers) + req.BodyBool("ringEnabled", ringEnabled, cmd.Flags().Changed("ring-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "The `id` parameter specifies the unique identifier for the sequential ring criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&scheduleName, "schedule-name", "", "") + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "") + cmd.Flags().StringVar(&scheduleLevel, "schedule-level", "", "") + cmd.Flags().StringVar(&callsFrom, "calls-from", "", "") + cmd.Flags().BoolVar(&anonymousCallersEnabled, "anonymous-callers-enabled", false, "") + cmd.Flags().BoolVar(&unavailableCallersEnabled, "unavailable-callers-enabled", false, "") + cmd.Flags().StringSliceVar(&phoneNumbers, "phone-numbers", nil, "") + cmd.Flags().BoolVar(&ringEnabled, "ring-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // delete-sequential-ring-2 + var id string + cmd := &cobra.Command{ + Use: "delete-sequential-ring-2", + Short: "Delete Sequential Ring Criteria", + Long: "Delete a Sequential Ring Criteria for the authenticated user.\n\nSequential Ring criteria defines rules for when sequential ring should activate based on the caller and schedule.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/people/me/settings/sequentialRing/criteria/{id}") + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "The `id` parameter specifies the unique identifier for the sequential ring criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.") + cmd.MarkFlagRequired("id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-my-simultaneous-ring + cmd := &cobra.Command{ + Use: "get-my-simultaneous-ring", + Short: "Retrieve My Simultaneous Ring Settings", + Long: "Retrieve simultaneous ring settings for the authenticated user.\n\nThe Simultaneous Ring feature allows you to configure your office phone and other phones of your choice to ring simultaneously. Schedules can also be set up to ring these phones during certain times of the day or days of the week.\n\nRetrieving settings requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/simultaneousRing") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-my-simultaneous-ring + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-my-simultaneous-ring", + Short: "Modify My Simultaneous Ring Settings", + Long: "Modify simultaneous ring settings for the authenticated user.\n\nThe Simultaneous Ring feature allows you to configure your office phone and other phones of your choice to ring simultaneously. Schedules can also be set up to ring these phones during certain times of the day or days of the week.\n\nModifying settings requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/simultaneousRing") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-my-simultaneous-ring-2 + var id string + cmd := &cobra.Command{ + Use: "get-my-simultaneous-ring-2", + Short: "Retrieve My Simultaneous Ring Criteria", + Long: "Retrieve simultaneous ring criteria settings for the authenticated user.\n\nThe Simultaneous Ring feature allows you to configure your office phone and other phones of your choice to ring simultaneously. Simultaneous Ring Criteria (Schedules) can also be set up to ring these phones during certain times of the day or days of the week.\n\nRetrieving criteria requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/simultaneousRing/criteria/{id}") + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "Unique identifier for the criteria.") + cmd.MarkFlagRequired("id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-my-simultaneous-ring-2 + var id string + var scheduleName string + var scheduleType string + var scheduleLevel string + var callsFrom string + var anonymousCallersEnabled bool + var unavailableCallersEnabled bool + var phoneNumbers []string + var ringEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-my-simultaneous-ring-2", + Short: "Modify My Simultaneous Ring Criteria", + Long: "Modify simultaneous ring criteria settings for the authenticated user.\n\nThe Simultaneous Ring feature allows you to configure your office phone and other phones of your choice to ring simultaneously. Simultaneous Ring Criteria (Schedules) can also be set up to ring these phones during certain times of the day or days of the week.\n\nModifying criteria requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/simultaneousRing/criteria/{id}") + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("scheduleName", scheduleName) + req.BodyString("scheduleType", scheduleType) + req.BodyString("scheduleLevel", scheduleLevel) + req.BodyString("callsFrom", callsFrom) + req.BodyBool("anonymousCallersEnabled", anonymousCallersEnabled, cmd.Flags().Changed("anonymous-callers-enabled")) + req.BodyBool("unavailableCallersEnabled", unavailableCallersEnabled, cmd.Flags().Changed("unavailable-callers-enabled")) + req.BodyStringSlice("phoneNumbers", phoneNumbers) + req.BodyBool("ringEnabled", ringEnabled, cmd.Flags().Changed("ring-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "Unique identifier for the criteria.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&scheduleName, "schedule-name", "", "") + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "") + cmd.Flags().StringVar(&scheduleLevel, "schedule-level", "", "") + cmd.Flags().StringVar(&callsFrom, "calls-from", "", "") + cmd.Flags().BoolVar(&anonymousCallersEnabled, "anonymous-callers-enabled", false, "") + cmd.Flags().BoolVar(&unavailableCallersEnabled, "unavailable-callers-enabled", false, "") + cmd.Flags().StringSliceVar(&phoneNumbers, "phone-numbers", nil, "") + cmd.Flags().BoolVar(&ringEnabled, "ring-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // delete-my-simultaneous-ring + var id string + cmd := &cobra.Command{ + Use: "delete-my-simultaneous-ring", + Short: "Delete My Simultaneous Ring Criteria", + Long: "Delete simultaneous ring criteria settings for the authenticated user.\n\nThe Simultaneous Ring feature allows you to configure your office phone and other phones of your choice to ring simultaneously. Simultaneous Ring Criteria (Schedules) can also be set up to ring these phones during certain times of the day or days of the week.\n\nDeleting criteria requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/people/me/settings/simultaneousRing/criteria/{id}") + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "Unique identifier for the criteria.") + cmd.MarkFlagRequired("id") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // create-my-simultaneous-ring + var scheduleName string + var scheduleType string + var scheduleLevel string + var callsFrom string + var ringEnabled bool + var anonymousCallersEnabled bool + var unavailableCallersEnabled bool + var phoneNumbers []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-my-simultaneous-ring", + Short: "Create My Simultaneous Ring Criteria", + Long: "Create simultaneous ring criteria settings for the authenticated user.\n\nThe Simultaneous Ring feature allows you to configure your office phone and other phones of your choice to ring simultaneously. Simultaneous Ring Criteria (Schedules) can also be set up to ring these phones during certain times of the day or days of the week.\n\nCreating criteria requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/people/me/settings/simultaneousRing/criteria") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("scheduleName", scheduleName) + req.BodyString("scheduleType", scheduleType) + req.BodyString("scheduleLevel", scheduleLevel) + req.BodyString("callsFrom", callsFrom) + req.BodyBool("ringEnabled", ringEnabled, cmd.Flags().Changed("ring-enabled")) + req.BodyBool("anonymousCallersEnabled", anonymousCallersEnabled, cmd.Flags().Changed("anonymous-callers-enabled")) + req.BodyBool("unavailableCallersEnabled", unavailableCallersEnabled, cmd.Flags().Changed("unavailable-callers-enabled")) + req.BodyStringSlice("phoneNumbers", phoneNumbers) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&scheduleName, "schedule-name", "", "") + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "") + cmd.Flags().StringVar(&scheduleLevel, "schedule-level", "", "") + cmd.Flags().StringVar(&callsFrom, "calls-from", "", "") + cmd.Flags().BoolVar(&ringEnabled, "ring-enabled", false, "") + cmd.Flags().BoolVar(&anonymousCallersEnabled, "anonymous-callers-enabled", false, "") + cmd.Flags().BoolVar(&unavailableCallersEnabled, "unavailable-callers-enabled", false, "") + cmd.Flags().StringSliceVar(&phoneNumbers, "phone-numbers", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-my-guest-calling-numbers + cmd := &cobra.Command{ + Use: "get-my-guest-calling-numbers", + Short: "Retrieve My Guest Calling Numbers", + Long: "Retrieve available guest calling numbers for the authenticated user.\n\nThis API returns a list of phone numbers that can be used for guest calling purposes.\n\nRetrieving guest calling numbers requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/guestCalling/numbers") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-personal-assistant + cmd := &cobra.Command{ + Use: "get-personal-assistant", + Short: "Get Personal Assistant Settings", + Long: "Retrieve personal assistant settings for a person. The personal assistant feature allows users to configure an automated attendant that can handle incoming calls when they are unavailable, including presence-based routing and call transfer options.\n\nPersonal Assistant is a feature of Webex Calling that helps manage incoming calls based on the user's availability status.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/personalAssistant") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-personal-assistant + var enabled bool + var presence string + var untilDateTime string + var transferEnabled bool + var transferNumber string + var alerting string + var alertMeFirstNumberOfRings int64 + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-personal-assistant", + Short: "Update Personal Assistant Settings", + Long: "Update personal assistant settings for a person. Allows configuring the personal assistant feature including enabling/disabling it, setting presence status, configuring call transfer options, and alerting preferences.\n\nPersonal Assistant is a feature of Webex Calling that helps manage incoming calls based on the user's availability status.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/personalAssistant") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + req.BodyString("presence", presence) + req.BodyString("untilDateTime", untilDateTime) + req.BodyBool("transferEnabled", transferEnabled, cmd.Flags().Changed("transfer-enabled")) + req.BodyString("transferNumber", transferNumber) + req.BodyString("alerting", alerting) + req.BodyInt("alertMeFirstNumberOfRings", alertMeFirstNumberOfRings, cmd.Flags().Changed("alert-me-first-number-of-rings")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().StringVar(&presence, "presence", "", "") + cmd.Flags().StringVar(&untilDateTime, "until-date-time", "", "") + cmd.Flags().BoolVar(&transferEnabled, "transfer-enabled", false, "") + cmd.Flags().StringVar(&transferNumber, "transfer-number", "", "") + cmd.Flags().StringVar(&alerting, "alerting", "", "") + cmd.Flags().Int64Var(&alertMeFirstNumberOfRings, "alert-me-first-number-of-rings", 0, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-person-voicemail-rules + cmd := &cobra.Command{ + Use: "get-person-voicemail-rules", + Short: "Get Person's Voicemail Rules", + Long: "Get person's voicemail passcode rules. Voicemail rules specify the default passcode requirements. They are provided for informational purposes only and cannot be modified.\n\nThe voicemail feature allows users to manage their voicemail settings as part of Webex Calling. Voicemail rules help ensure secure access to voice messages by defining passcode complexity requirements.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/voicemail/rules") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-voicemail-pin + var passcode string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-voicemail-pin", + Short: "Update Voicemail PIN", + Long: "Set the voicemail PIN for a person. Updates the PIN used to access voicemail messages. The PIN must comply with the passcode rules defined for the organization.\n\nThe voicemail feature is part of Webex Calling, allowing users to secure their voicemail access with a PIN. The PIN is required to retrieve voice messages via phone.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/voicemail/pin") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("passcode", passcode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&passcode, "passcode", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-hoteling-guest + cmd := &cobra.Command{ + Use: "get-hoteling-guest", + Short: "Get Hoteling Guest Settings", + Long: "Retrieve hoteling guest settings for a person. Hoteling allows a person to temporarily use a device as a guest, associating their extension and configuration with that device for a limited time. This API returns the current hoteling guest configuration including any active host association details.\n\nHoteling is a feature of Webex Calling that enables flexible workspace solutions by allowing users to log into shared devices.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/hoteling/guest") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callSettingsForMeCmd.AddCommand(cmd) + } + + { // update-hoteling-guest + var enabled bool + var associationLimitEnabled bool + var associationLimitHours int64 + var hostId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-hoteling-guest", + Short: "Update Hoteling Guest Settings", + Long: "Update hoteling guest settings for a person. Allows enabling or disabling the ability to use hoteling as a guest, configuring whether an association will be removed automatically after a specified time period, and associating with a hoteling host.\n\nHoteling is a feature of Webex Calling that enables flexible workspace solutions by allowing users to log into shared devices.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/me/settings/hoteling/guest") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + req.BodyBool("associationLimitEnabled", associationLimitEnabled, cmd.Flags().Changed("association-limit-enabled")) + req.BodyInt("associationLimitHours", associationLimitHours, cmd.Flags().Changed("association-limit-hours")) + req.BodyString("hostId", hostId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().BoolVar(&associationLimitEnabled, "association-limit-enabled", false, "") + cmd.Flags().Int64Var(&associationLimitHours, "association-limit-hours", 0, "") + cmd.Flags().StringVar(&hostId, "host-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callSettingsForMeCmd.AddCommand(cmd) + } + + { // get-available-hoteling-hosts + var max string + var start string + var name string + var phoneNumber string + cmd := &cobra.Command{ + Use: "get-available-hoteling-hosts", + Short: "Get Available Hoteling Hosts", + Long: "Retrieve a list of available hoteling hosts that a person can associate with as a guest. Returns hosts that have hoteling enabled on their devices and are available for guest associations. The list can be filtered by name or phone number and supports pagination.\n\nHoteling is a feature of Webex Calling that enables flexible workspace solutions by allowing users to log into shared devices.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/hoteling/availableHosts") + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("name", name) + req.QueryParam("phoneNumber", phoneNumber) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&max, "max", "", "Limit the maximum number of hosts in the response. Default is 100.") + cmd.Flags().StringVar(&start, "start", "", "Start index for pagination. Default is 0.") + cmd.Flags().StringVar(&name, "name", "", "Filter hosts by name (first name or last name). Partial match is supported.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Filter hosts by phone number. Partial match is supported.") + callSettingsForMeCmd.AddCommand(cmd) + } + +} diff --git a/cmd/calling/caller_reputation_provider.go b/cmd/calling/caller_reputation_provider.go new file mode 100644 index 0000000..f0c82df --- /dev/null +++ b/cmd/calling/caller_reputation_provider.go @@ -0,0 +1,176 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package calling + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var callerReputationProviderCmd = &cobra.Command{ + Use: "caller-reputation-provider", + Short: "CallerReputationProvider commands", +} + +func init() { + cmd.CallingCmd.AddCommand(callerReputationProviderCmd) + + { // get-settings + var organizationId string + cmd := &cobra.Command{ + Use: "get-settings", + Short: "Get Caller Reputation Provider Service Settings", + Long: `Retrieves the configuration and status of the caller reputation provider service for Webex Calling.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/serviceSettings/callerReputationProvider") + req.QueryParam("organizationId", organizationId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&organizationId, "organization-id", "", "Unique identifier for the organization.") + callerReputationProviderCmd.AddCommand(cmd) + } + + { // update-settings + var organizationId string + var enabled bool + var id string + var name string + var clientId string + var clientSecret string + var callBlockScoreThreshold string + var callAllowScoreThreshold string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-settings", + Short: "Update Caller Reputation Provider Service Settings", + Long: `Updates the configuration of the caller reputation provider service for Webex Calling.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/serviceSettings/callerReputationProvider") + req.QueryParam("organizationId", organizationId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + req.BodyString("id", id) + req.BodyString("name", name) + req.BodyString("clientId", clientId) + req.BodyString("clientSecret", clientSecret) + req.BodyString("callBlockScoreThreshold", callBlockScoreThreshold) + req.BodyString("callAllowScoreThreshold", callAllowScoreThreshold) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&organizationId, "organization-id", "", "Unique identifier for the organization.") + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().StringVar(&id, "id", "", "") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&clientId, "client-id", "", "") + cmd.Flags().StringVar(&clientSecret, "client-secret", "", "") + cmd.Flags().StringVar(&callBlockScoreThreshold, "call-block-score-threshold", "", "") + cmd.Flags().StringVar(&callAllowScoreThreshold, "call-allow-score-threshold", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callerReputationProviderCmd.AddCommand(cmd) + } + + { // get-status + var organizationId string + cmd := &cobra.Command{ + Use: "get-status", + Short: "Get Caller Reputation Provider Status", + Long: `Retrieves the current status of the caller reputation provider integration for Webex Calling.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/serviceSettings/callerReputationProvider/status") + req.QueryParam("organizationId", organizationId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&organizationId, "organization-id", "", "Unique identifier for the organization.") + callerReputationProviderCmd.AddCommand(cmd) + } + + { // unlock + var organizationId string + var id string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "unlock", + Short: "Unlock Caller Reputation Provider", + Long: `Unlocks the caller reputation provider for Webex Calling.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/serviceSettings/callerReputationProvider/actions/unlock/invoke") + req.QueryParam("organizationId", organizationId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("id", id) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&organizationId, "organization-id", "", "Unique identifier for the organization.") + cmd.Flags().StringVar(&id, "id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callerReputationProviderCmd.AddCommand(cmd) + } + + { // get + var organizationId string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Caller Reputation Provider Providers", + Long: `Retrieves the list of available caller reputation providers and their regions for Webex Calling.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/serviceSettings/callerReputationProvider/providers") + req.QueryParam("organizationId", organizationId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&organizationId, "organization-id", "", "Unique identifier for the organization.") + callerReputationProviderCmd.AddCommand(cmd) + } + +} diff --git a/cmd/calling/calling_service.go b/cmd/calling/calling_service.go new file mode 100644 index 0000000..c1fb402 --- /dev/null +++ b/cmd/calling/calling_service.go @@ -0,0 +1,306 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package calling + +import ( + "fmt" + "strconv" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa + +var callingServiceCmd = &cobra.Command{ + Use: "calling-service", + Short: "CallingService commands", +} + +func init() { + cmd.CallingCmd.AddCommand(callingServiceCmd) + + { // list-announcement-languages + var ttsLanguage string + cmd := &cobra.Command{ + Use: "list-announcement-languages", + Short: "Read the List of Announcement Languages", + Long: "List all languages supported by Webex Calling for announcements and voice prompts.\n\nRetrieving announcement languages requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/announcementLanguages") + req.QueryParam("ttsLanguage", ttsLanguage) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&ttsLanguage, "tts-language", "", "Filter languages by TTS support.") + callingServiceCmd.AddCommand(cmd) + } + + { // get-voicemail + var orgId string + cmd := &cobra.Command{ + Use: "get-voicemail", + Short: "Get Voicemail Settings", + Long: "Retrieve the organization's voicemail settings.\n\nOrganizational voicemail settings determines what voicemail features a person can configure and automatic message expiration.\n\nRetrieving organization's voicemail settings requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/voicemail/settings") + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve voicemail settings for this organization.") + callingServiceCmd.AddCommand(cmd) + } + + { // update-voicemail + var orgId string + var messageExpiryEnabled bool + var numberOfDaysForMessageExpiry int64 + var strictDeletionEnabled bool + var voiceMessageForwardingEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-voicemail", + Short: "Update Voicemail Settings", + Long: "Update the organization's voicemail settings.\n\nOrganizational voicemail settings determines what voicemail features a person can configure and automatic message expiration.\n\nUpdating an organization's voicemail settings requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/voicemail/settings") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("messageExpiryEnabled", messageExpiryEnabled, cmd.Flags().Changed("message-expiry-enabled")) + req.BodyInt("numberOfDaysForMessageExpiry", numberOfDaysForMessageExpiry, cmd.Flags().Changed("number-of-days-for-message-expiry")) + req.BodyBool("strictDeletionEnabled", strictDeletionEnabled, cmd.Flags().Changed("strict-deletion-enabled")) + req.BodyBool("voiceMessageForwardingEnabled", voiceMessageForwardingEnabled, cmd.Flags().Changed("voice-message-forwarding-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Update voicemail settings for this organization.") + cmd.Flags().BoolVar(&messageExpiryEnabled, "message-expiry-enabled", false, "") + cmd.Flags().Int64Var(&numberOfDaysForMessageExpiry, "number-of-days-for-message-expiry", 0, "") + cmd.Flags().BoolVar(&strictDeletionEnabled, "strict-deletion-enabled", false, "") + cmd.Flags().BoolVar(&voiceMessageForwardingEnabled, "voice-message-forwarding-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callingServiceCmd.AddCommand(cmd) + } + + { // get-voicemail-rules + var orgId string + cmd := &cobra.Command{ + Use: "get-voicemail-rules", + Short: "Get Voicemail Rules", + Long: "Retrieve the organization's voicemail rules.\n\nOrganizational voicemail rules specify the default passcode requirements. They are provided for informational purposes only and cannot be modified.\n\nRetrieving the organization's voicemail rules requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/voicemail/rules") + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve voicemail rules for this organization.") + callingServiceCmd.AddCommand(cmd) + } + + { // update-voicemail-rules + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-voicemail-rules", + Short: "Update Voicemail Rules", + Long: "Update the organization's default voicemail passcode and/or rules.\n\nOrganizational voicemail rules specify the default passcode requirements.\n\nIf you choose to set a default passcode for new people added to your organization, communicate to your people what that passcode is, and that it must be reset before they can access their voicemail. If this feature is not turned on, each new person must initially set their own passcode.\n\nUpdating an organization's voicemail passcode and/or rules requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/voicemail/rules") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Update voicemail rules for this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callingServiceCmd.AddCommand(cmd) + } + + { // get-org-music-hold-configuration + var orgId string + cmd := &cobra.Command{ + Use: "get-org-music-hold-configuration", + Short: "Get the organization Music on Hold configuration", + Long: `Retrieve the organization's Music on Hold settings.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/moh/settings") + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve Music on Hold settings for this organization.") + callingServiceCmd.AddCommand(cmd) + } + + { // update-org-music-hold-configuration + var orgId string + var defaultOrgMoh string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-org-music-hold-configuration", + Short: "Update the organization Music on Hold configuration", + Long: `Update the organization's Music on Hold settings.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/moh/settings") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("defaultOrgMoh", defaultOrgMoh) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Patch Music on Hold for this organization.") + cmd.Flags().StringVar(&defaultOrgMoh, "default-org-moh", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callingServiceCmd.AddCommand(cmd) + } + + { // get-org-call-captions-settings + var orgId string + cmd := &cobra.Command{ + Use: "get-org-call-captions-settings", + Short: "Get the organization call captions settings", + Long: "Retrieve the organization's call captions settings.\n\nThe call caption feature allows the customer to enable and manage closed captions and transcript functionality (rolling caption panel) in Webex Calling, without requiring the user to escalate the call to a meeting.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/callCaptions") + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Unique identifier for the organization.") + callingServiceCmd.AddCommand(cmd) + } + + { // update-org-call-captions-settings + var orgId string + var orgClosedCaptionsEnabled bool + var orgTranscriptsEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-org-call-captions-settings", + Short: "Update the organization call captions settings", + Long: "Update the organization's call captions settings.\n\nThe call caption feature allows the customer to enable and manage closed captions and transcript functionality (rolling caption panel) in Webex Calling, without requiring the user to escalate the call to a meeting.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/callCaptions") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("orgClosedCaptionsEnabled", orgClosedCaptionsEnabled, cmd.Flags().Changed("org-closed-captions-enabled")) + req.BodyBool("orgTranscriptsEnabled", orgTranscriptsEnabled, cmd.Flags().Changed("org-transcripts-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Unique identifier for the organization.") + cmd.Flags().BoolVar(&orgClosedCaptionsEnabled, "org-closed-captions-enabled", false, "") + cmd.Flags().BoolVar(&orgTranscriptsEnabled, "org-transcripts-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callingServiceCmd.AddCommand(cmd) + } + + { // get-large-org-status + var orgId string + cmd := &cobra.Command{ + Use: "get-large-org-status", + Short: "Get Large Organization Status", + Long: "Get the large organization status for a customer.\n\nLarge organization status indicates whether an organization is categorized as a large organization based on the threshold percentage.\n\nThis API requires a full or read-only administrator auth token with the `spark-admin:telephony_config_read` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/largeOrgStatus") + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieves large organization status for this organization.") + callingServiceCmd.AddCommand(cmd) + } + +} diff --git a/cmd/calling/client_call.go b/cmd/calling/client_call.go new file mode 100644 index 0000000..53c4e80 --- /dev/null +++ b/cmd/calling/client_call.go @@ -0,0 +1,86 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package calling + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var clientCallCmd = &cobra.Command{ + Use: "client-call", + Short: "ClientCall commands", +} + +func init() { + cmd.CallingCmd.AddCommand(clientCallCmd) + + { // get-org-ms-teams-settings + var orgId string + cmd := &cobra.Command{ + Use: "get-org-ms-teams-settings", + Short: "Get an Organization's MS Teams Settings", + Long: "
Not supported for Webex for Government (FedRAMP)
\n\nGet organization MS Teams settings.\n\nAt an organization level, MS Teams settings allow access to viewing the `HIDE WEBEX APP` and `PRESENCE SYNC` settings.\n\nTo retrieve an organization's MS Teams settings requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/settings/msTeams") + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve MS Teams settings for the organization.") + clientCallCmd.AddCommand(cmd) + } + + { // update-org-ms-teams-setting + var orgId string + var settingName string + var value bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-org-ms-teams-setting", + Short: "Update an Organization's MS Teams Setting", + Long: "
Not supported for Webex for Government (FedRAMP)
\n\nUpdate an MS Teams setting.\n\nMS Teams setting can be updated at the organization level.\n\nRequires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/settings/msTeams") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("settingName", settingName) + req.BodyBool("value", value, cmd.Flags().Changed("value")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Update MS Teams setting value for the organization.") + cmd.Flags().StringVar(&settingName, "setting-name", "", "") + cmd.Flags().BoolVar(&value, "value", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + clientCallCmd.AddCommand(cmd) + } + +} diff --git a/cmd/calling/commands.go b/cmd/calling/commands.go deleted file mode 100644 index a8bded0..0000000 --- a/cmd/calling/commands.go +++ /dev/null @@ -1,20 +0,0 @@ -// Package calling publishes the Webex Calling API commands, built from the -// operation table, plus handwritten commands for file uploads. -package calling - -import ( - cmd "github.com/Cloverhound/webex-cli/cmd" - "github.com/Cloverhound/webex-cli/internal/apicmd" -) - -var groups = apicmd.Register(cmd.CallingCmd, "calling") - -// Groups that handwritten commands join. -var ( - announcementRepositoryCmd = groups["announcement-repository"] - convergedRecordingsCmd = groups["converged-recordings"] - userCallCmd = groups["user-call"] - callSettingsForMeCmd = groups["call-settings-for-me"] - virtualLineCallCmd = groups["virtual-line-call"] - workspaceCallCmd = groups["workspace-call"] -) diff --git a/cmd/calling/conference_controls.go b/cmd/calling/conference_controls.go new file mode 100644 index 0000000..4a03b58 --- /dev/null +++ b/cmd/calling/conference_controls.go @@ -0,0 +1,311 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package calling + +import ( + "fmt" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strings.Join + +var conferenceControlsCmd = &cobra.Command{ + Use: "conference-controls", + Short: "ConferenceControls commands", +} + +func init() { + cmd.CallingCmd.AddCommand(conferenceControlsCmd) + + { // start + var callIds []string + var lineOwnerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "start", + Short: "Start Conference", + Long: `Join the user's calls into a conference. A minimum of two call IDs are required. Each call ID identifies an existing call between the user +and a participant to be added to the conference.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/conference") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("callIds", callIds) + req.BodyString("lineOwnerId", lineOwnerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringSliceVar(&callIds, "call-ids", nil, "") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + conferenceControlsCmd.AddCommand(cmd) + } + + { // release + var lineOwnerId string + cmd := &cobra.Command{ + Use: "release", + Short: "Release Conference", + Long: `Release the conference (the host and all participants). Note that for a 3WC (three-way call) the [Transfer API](/docs/api/v1/call-controls/transfer) can be used to perform an attended transfer so that the participants remain connected.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/conference") + req.QueryParam("lineOwnerId", lineOwnerId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "The ID of a user, workspace, or virtual line for which there is a secondary line on a device owned by the user invoking the API.") + conferenceControlsCmd.AddCommand(cmd) + } + + { // get + var lineOwnerId string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Conference Details", + Long: `Get the details of the conference. An empty JSON object body is returned if there is no conference.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/conference") + req.QueryParam("lineOwnerId", lineOwnerId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "The ID of a user, workspace, or virtual line for which there is a secondary line on a device owned by the user invoking the API.") + conferenceControlsCmd.AddCommand(cmd) + } + + { // create-participant + var callId string + var lineOwnerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-participant", + Short: "Add Participant", + Long: `Adds a participant to an existing conference. The request body contains the participant's call ID.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/conference/addParticipant") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callId", callId) + req.BodyString("lineOwnerId", lineOwnerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callId, "call-id", "", "") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + conferenceControlsCmd.AddCommand(cmd) + } + + { // mute + var callId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "mute", + Short: "Mute", + Long: `Mutes the host or a participant. Mutes the host when no request body is provided (i.e. media stream from the host will not be transmitted to the conference). Mutes a participant when the request body contains the participant's call ID (i.e. media stream from the participant will not be transmitted to the conference).`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/conference/mute") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callId", callId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callId, "call-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + conferenceControlsCmd.AddCommand(cmd) + } + + { // unmute + var callId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "unmute", + Short: "Unmute", + Long: `Unmutes the host or a participant. Unmutes the host when no request body is provided (i.e. media stream from the host will be transmitted to the conference). Unmutes a participant when the request body contains the participant's call ID (i.e. media stream from the participant will be transmitted to the conference).`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/conference/unmute") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callId", callId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callId, "call-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + conferenceControlsCmd.AddCommand(cmd) + } + + { // deafen-participant + var callId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "deafen-participant", + Short: "Deafen Participant", + Long: `Deafens a participant (i.e. media stream will not be transmitted to the participant). +The request body contains the call ID of the participant to deafen`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/conference/deafen") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callId", callId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callId, "call-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + conferenceControlsCmd.AddCommand(cmd) + } + + { // undeafen-participant + var callId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "undeafen-participant", + Short: "Undeafen Participant", + Long: `Undeafens a participant (i.e. resume transmitting the conference media stream to the participant). +The request body contains the call ID of the participant to undeafen.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/conference/undeafen") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callId", callId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callId, "call-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + conferenceControlsCmd.AddCommand(cmd) + } + + { // hold + var lineOwnerId string + cmd := &cobra.Command{ + Use: "hold", + Short: "Hold", + Long: `Hold the conference host. There is no request body.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/conference/hold") + req.QueryParam("lineOwnerId", lineOwnerId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "The ID of a user, workspace, or virtual line for which there is a secondary line on a device owned by the user invoking the API.") + conferenceControlsCmd.AddCommand(cmd) + } + + { // resume + var lineOwnerId string + cmd := &cobra.Command{ + Use: "resume", + Short: "Resume", + Long: `Resumes the held conference host. There is no request body.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/conference/resume") + req.QueryParam("lineOwnerId", lineOwnerId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "The ID of a user, workspace, or virtual line for which there is a secondary line on a device owned by the user invoking the API.") + conferenceControlsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/calling/converged_recordings.go b/cmd/calling/converged_recordings.go new file mode 100644 index 0000000..7dee7fc --- /dev/null +++ b/cmd/calling/converged_recordings.go @@ -0,0 +1,414 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package calling + +import ( + "fmt" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/Cloverhound/webex-cli/internal/timeutil" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strings.Join +var _ = timeutil.ParseLastISO + +var convergedRecordingsCmd = &cobra.Command{ + Use: "converged-recordings", + Short: "ConvergedRecordings commands", +} + +func init() { + cmd.CallingCmd.AddCommand(convergedRecordingsCmd) + + { // list + var max string + var from string + var to string + var status string + var serviceType string + var format string + var ownerType string + var storageRegion string + var locationId string + var topic string + var timezone string + var last string + cmd := &cobra.Command{ + Use: "list", + Short: "List Recordings", + Long: "List recordings. You can specify a date range, and the maximum number of recordings to return.\n\nThe list returned is sorted in descending order by the date and time that the recordings were created.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\nList recordings requires the `spark:recordings_read` scope.\n\nPlease use `List Recordings for Admin or Compliance Officer` API to list all recordings for a user with the role Compliance officer or Admin\n\nRequest Header\n\n* `timezone`: *[Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.*", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/convergedRecordings") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("max", max) + req.QueryParam("from", from) + req.QueryParam("to", to) + req.QueryParam("status", status) + req.QueryParam("serviceType", serviceType) + req.QueryParam("format", format) + req.QueryParam("ownerType", ownerType) + req.QueryParam("storageRegion", storageRegion) + req.QueryParam("locationId", locationId) + req.QueryParam("topic", topic) + req.Header("timezone", timezone) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&max, "max", "", "Maximum number of recordings to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`.") + cmd.Flags().StringVar(&from, "from", "", "Starting date and time (inclusive) for recordings to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`.") + cmd.Flags().StringVar(&to, "to", "", "Ending date and time (exclusive) for List recordings to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`.") + cmd.Flags().StringVar(&status, "status", "", "Recording's status. If not specified or `available`, retrieves recordings that are available. Otherwise, if specified as `deleted`, retrieves recordings that have been moved into the recycle bin.") + cmd.Flags().StringVar(&serviceType, "service-type", "", "Recording's service-type. If specified, the API filters recordings by service-type. Valid values are `calling` and `customerAssist`.") + cmd.Flags().StringVar(&format, "format", "", "Recording's file format. If specified, the API filters recordings by format. Valid values are `MP3`.") + cmd.Flags().StringVar(&ownerType, "owner-type", "", "Recording based on type of user.") + cmd.Flags().StringVar(&storageRegion, "storage-region", "", "Recording stored in certain Webex locations.") + cmd.Flags().StringVar(&locationId, "location-id", "", "Fetch recordings for users in a particular Webex Calling location (as configured in Control Hub).") + cmd.Flags().StringVar(&topic, "topic", "", "Recording's topic. If specified, the API filters recordings by topic in a case-insensitive manner.") + cmd.Flags().StringVar(&timezone, "timezone", "", "e.g. UTC") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + convergedRecordingsCmd.AddCommand(cmd) + } + + { // list-admin-compliance-officer + var max string + var from string + var to string + var status string + var serviceType string + var format string + var ownerId string + var ownerEmail string + var ownerType string + var storageRegion string + var locationId string + var topic string + var timezone string + var last string + cmd := &cobra.Command{ + Use: "list-admin-compliance-officer", + Short: "List Recordings for Admin or Compliance officer", + Long: "List recordings for an admin or compliance officer. You can specify a date range, and the maximum number of recordings to return.\n\nThe list returned is sorted in descending order by the date and time that the recordings were created.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\nList recordings requires the `spark-compliance:recordings_read` scope for compliance officer and `spark-admin:recordings_read` scope for admin.\n\n#### Request Header\n\n* `timezone`: *[Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.*", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/admin/convergedRecordings") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("max", max) + req.QueryParam("from", from) + req.QueryParam("to", to) + req.QueryParam("status", status) + req.QueryParam("serviceType", serviceType) + req.QueryParam("format", format) + req.QueryParam("ownerId", ownerId) + req.QueryParam("ownerEmail", ownerEmail) + req.QueryParam("ownerType", ownerType) + req.QueryParam("storageRegion", storageRegion) + req.QueryParam("locationId", locationId) + req.QueryParam("topic", topic) + req.Header("timezone", timezone) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&max, "max", "", "Maximum number of recordings to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`.") + cmd.Flags().StringVar(&from, "from", "", "Starting date and time (inclusive) for recordings to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`. The interval between `from` and `to` must be within 30 days.") + cmd.Flags().StringVar(&to, "to", "", "Ending date and time (exclusive) for List recordings to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`. The interval between `from` and `to` must be within 30 days.") + cmd.Flags().StringVar(&status, "status", "", "Recording's status. If not specified or `available`, retrieves recordings that are available. if specified as `purged`, retrieves recordings those are deleted but available to a compliance officer. Otherwise, if specified as `deleted`, retrieves recordings that have been moved into the recycle bin.") + cmd.Flags().StringVar(&serviceType, "service-type", "", "Recording's service-type. If specified, the API filters recordings by service-type. Valid values are `calling` and `customerAssist`.") + cmd.Flags().StringVar(&format, "format", "", "Recording's file format. If specified, the API filters recordings by format. Valid values are `MP3`.") + cmd.Flags().StringVar(&ownerId, "owner-id", "", "Webex user Id to fetch recordings for a particular user.") + cmd.Flags().StringVar(&ownerEmail, "owner-email", "", "Webex email address to fetch recordings for a particular user.") + cmd.Flags().StringVar(&ownerType, "owner-type", "", "Recording based on type of user.") + cmd.Flags().StringVar(&storageRegion, "storage-region", "", "Recording stored in certain Webex locations.") + cmd.Flags().StringVar(&locationId, "location-id", "", "Fetch recordings for users in a particular Webex Calling location (as configured in Control Hub).") + cmd.Flags().StringVar(&topic, "topic", "", "Recording's topic. If specified, the API filters recordings by topic in a case-insensitive manner.") + cmd.Flags().StringVar(&timezone, "timezone", "", "e.g. UTC") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + convergedRecordingsCmd.AddCommand(cmd) + } + + { // get + var recordingId string + var timezone string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Recording Details", + Long: "Retrieves details for a recording with a specified recording ID.\n\nOnly recordings of owner with the authenticated user may be retrieved.\n\nGet Recording Details requires the `spark-compliance:recordings_read` scope for compliance officer, `spark-admin:recordings_read` scope for admin and `spark:recordings_read` scope for user.\n\n#### Request Header\n\n* `timezone`: *[Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.*", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/convergedRecordings/{recordingId}") + req.PathParam("recordingId", recordingId) + req.Header("timezone", timezone) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&recordingId, "recording-id", "", "A unique identifier for the recording.") + cmd.MarkFlagRequired("recording-id") + cmd.Flags().StringVar(&timezone, "timezone", "", "e.g. UTC") + convergedRecordingsCmd.AddCommand(cmd) + } + + { // delete + var recordingId string + var reason string + var comment string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete a Recording", + Long: "Removes a recording with a specified recording ID. The deleted recording cannot be recovered.\n\nIf a Compliance Officer deletes another user's recording, the recording will be inaccessible to regular users (host, attendees and shared), and to the Compliance officer as well. This action purges the recordings from Webex.\n\nDelete a Recording requires the `spark-compliance:recordings_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/convergedRecordings/{recordingId}") + req.PathParam("recordingId", recordingId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("reason", reason) + req.BodyString("comment", comment) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&recordingId, "recording-id", "", "A unique identifier for the recording.") + cmd.MarkFlagRequired("recording-id") + cmd.Flags().StringVar(&reason, "reason", "", "") + cmd.Flags().StringVar(&comment, "comment", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + convergedRecordingsCmd.AddCommand(cmd) + } + + { // get-metadata + var recordingId string + var showAllTypes string + cmd := &cobra.Command{ + Use: "get-metadata", + Short: "Get Recording metadata", + Long: "Retrieves metadata details for a recording with a specified recording ID. The recording must be owned by the authenticated user.\n\nFor information on the metadata fields, refer to [Metadata Guide](https://developer.webex.com/docs/api/guides/consolidated-metadata-documentation-and-samples-guide)\n\nGet Recording metadata requires the `spark-compliance:recordings_read` scope for compliance officer, `spark-admin:recordings_read` for admin and `spark:recordings_read` for user.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/convergedRecordings/{recordingId}/metadata") + req.PathParam("recordingId", recordingId) + req.QueryParam("showAllTypes", showAllTypes) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&recordingId, "recording-id", "", "A unique identifier for the recording.") + cmd.MarkFlagRequired("recording-id") + cmd.Flags().StringVar(&showAllTypes, "show-all-types", "", "If `showAllTypes` is `true`, all attributes will be shown. If it's `false` or not specified, the following attributes of the metadata will be hidden. serviceData.callActivity.mediaStreams serviceData.callActivity.participants serviceData.callActivity.redirectInfo serviceData.callActivity.redirectedCall ") + convergedRecordingsCmd.AddCommand(cmd) + } + + { // reassign + var reassignOwnerEmail string + var ownerEmail string + var ownerId string + var recordingIds []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "reassign", + Short: "Reassign Recordings", + Long: "Reassigns recordings to a new user. As an administrator, you can reassign a list of recordings or all recordings of a particular user to a new user.\nThe recordings can belong to an org user, a virtual line, or a workspace, but the destination user should only be a valid org user.\n\n* For a org user either `ownerEmail` or `recordingIds` or both must be provided.\n\n* For a virtual line or a workspace, `ownerID` or `recordingIds` or both must be provided.\n\n* If `recordingIds` and `ownerID` is empty but `ownerEmail` is provided, all recordings owned by the `ownerEmail` are reassigned to `reassignOwnerEmail`.\n\n* If `recordingIds` is provided and `ownerEmail` or `ownerID` is also provided, only the recordings specified by `recordingIds` that are owned by `ownerEmail` or `ownerID` are reassigned to `reassignOwnerEmail`.\n\n* If `ownerEmail` and `ownerID` is empty but `recordingIds` is provided, the recordings specified by `recordingIds` are reassigned to `reassignOwnerEmail` regardless of the current owner.\n\n* If both `ownerId` and `ownerEmail` are passed along with `recordingIds`, only the recordings specified by `recordingIds` that are owned by `ownerEmail` are reassigned to `reassignOwnerEmail`.\n\n* If `recordingIds` is empty but both `ownerId` and `ownerEmail` is provided, all recordings owned by the `ownerEmail` are reassigned to `reassignOwnerEmail`.\n\nThe `spark-admin:recordings_write` scope is required to reassign recordings.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/convergedRecordings/reassign") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("reassignOwnerEmail", reassignOwnerEmail) + req.BodyString("ownerEmail", ownerEmail) + req.BodyString("ownerID", ownerId) + req.BodyStringSlice("recordingIds", recordingIds) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&reassignOwnerEmail, "reassign-owner-email", "", "") + cmd.Flags().StringVar(&ownerEmail, "owner-email", "", "") + cmd.Flags().StringVar(&ownerId, "owner-id", "", "") + cmd.Flags().StringSliceVar(&recordingIds, "recording-ids", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + convergedRecordingsCmd.AddCommand(cmd) + } + + { // move-recycle-bin + var trashAll bool + var ownerEmail string + var recordingIds []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "move-recycle-bin", + Short: "Move Recordings into the Recycle Bin", + Long: "Move recordings into the recycle bin with recording IDs or move all the recordings to the recycle bin.\n\nOnly the following two entities can use this API\n\n* Administrator: A user or an application with the scope `spark-admin:recordings_write`.\n\n* User: An authenticated user who does not have the scope `spark-admin:recordings_write` but has `spark:recordings_write`.\n\nAs an `administrator`, you can move a list of recordings or all recordings of a particular user within the org you manage to the recycle bin.\n\nAs a `user`, you can move a list of your own recordings or all your recordings to the recycle bin.\n\nRecordings in the recycle bin can be recovered by [Restore Recordings from Recycle Bin](/docs/api/v1/converged-recordings/restore-recordings-from-recycle-bin) API. If you'd like to empty recordings from the recycle bin, you can use [Purge Recordings from Recycle Bin](/docs/api/v1/converged-recordings/purge-recordings-from-recycle-bin) API to purge all or some of them.\n\n* If `trashAll` is `true`:\n * `recordingIds` should be empty.\n * If the caller of this API is an `administrator`, `ownerEmail` should not be empty and all recordings owned by the `ownerEmail` will be moved to the recycle bin.\n * If the caller of this API is a `user`, `ownerEmail` should be empty and all recordings owned by the caller will be moved to the recycle bin.\n\n* If `trashAll` is `false`:\n * `ownerEmail` should be empty.\n * `recordingIds` should not be empty and its maximum size is `100`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/convergedRecordings/softDelete") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("trashAll", trashAll, cmd.Flags().Changed("trash-all")) + req.BodyString("ownerEmail", ownerEmail) + req.BodyStringSlice("recordingIds", recordingIds) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().BoolVar(&trashAll, "trash-all", false, "") + cmd.Flags().StringVar(&ownerEmail, "owner-email", "", "") + cmd.Flags().StringSliceVar(&recordingIds, "recording-ids", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + convergedRecordingsCmd.AddCommand(cmd) + } + + { // restore-recycle-bin + var restoreAll bool + var ownerEmail string + var recordingIds []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "restore-recycle-bin", + Short: "Restore Recordings from Recycle Bin", + Long: "Restore recordings from the recycle bin with recording IDs or restore all the recordings that are in the recycle bin.\n\nOnly the following two entities can use this API\n\n* Administrator: A user or an application with the scope `spark-admin:recordings_write`.\n\n* User: An authenticated user who does not have the scope `spark-admin:recordings_write` but has `spark:recordings_write`.\n\nAs an `administrator`, you can restore a list of recordings or all recordings of a particular user within the org you manage from the recycle bin.\n\nAs a `user`, you can restore a list of your own recordings or all your recordings from the recycle bin.\n\n* If `restoreAll` is `true`:\n * `recordingIds` should be empty.\n * If the caller of this API is an `administrator`, `ownerEmail` should not be empty and all recordings owned by the `ownerEmail` will be restored from the recycle bin.\n * If the caller of this API is a `user`, `ownerEmail` should be empty and all recordings owned by the caller will be restored from the recycle bin.\n\n* If `restoreAll` is `false`:\n * `ownerEmail` should be empty.\n * `recordingIds` should not be empty and its maximum size is `100`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/convergedRecordings/restore") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("restoreAll", restoreAll, cmd.Flags().Changed("restore-all")) + req.BodyString("ownerEmail", ownerEmail) + req.BodyStringSlice("recordingIds", recordingIds) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().BoolVar(&restoreAll, "restore-all", false, "") + cmd.Flags().StringVar(&ownerEmail, "owner-email", "", "") + cmd.Flags().StringSliceVar(&recordingIds, "recording-ids", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + convergedRecordingsCmd.AddCommand(cmd) + } + + { // purge-recycle-bin + var purgeAll bool + var ownerEmail string + var recordingIds []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "purge-recycle-bin", + Short: "Purge Recordings from Recycle Bin", + Long: "Purge recordings from the recycle bin matching the supplied recording IDs, or purge all the recordings that are in the recycle bin. A recording, once purged, cannot be restored.\n\nOnly the following two entities can use this API\n\n* Administrator: A user or an application with the scope `spark-admin:recordings_write`.\n\n* User: An authenticated user who does not have the scope `spark-admin:recordings_write` but has `spark:recordings_write`.\n\nAs an `administrator`, you can purge a list of recordings or all recordings of a particular user within the org you manage from the recycle bin.\n\nAs a `user`, you can purge a list of your own recordings or all your recordings from the recycle bin.\n\n* If `purgeAll` is `true`:\n * `recordingIds` should be empty.\n * If the caller of this API is an `administrator`, `ownerEmail` should not be empty and all recordings owned the `ownerEmail` will be purged from the recycle bin.\n * If the caller of this API is a `user`, `ownerEmail` should be empty and all recordings owned by the caller will be purged from the recycle bin.\n\n* If `purgeAll` is `false`:\n * `ownerEmail` should be empty.\n * `recordingIds` should not be empty and its maximum size is `100`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/convergedRecordings/purge") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("purgeAll", purgeAll, cmd.Flags().Changed("purge-all")) + req.BodyString("ownerEmail", ownerEmail) + req.BodyStringSlice("recordingIds", recordingIds) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().BoolVar(&purgeAll, "purge-all", false, "") + cmd.Flags().StringVar(&ownerEmail, "owner-email", "", "") + cmd.Flags().StringSliceVar(&recordingIds, "recording-ids", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + convergedRecordingsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/calling/custom_announcements.go b/cmd/calling/custom_announcements.go index be0ed9c..058c483 100644 --- a/cmd/calling/custom_announcements.go +++ b/cmd/calling/custom_announcements.go @@ -40,7 +40,7 @@ func registerAnnouncementCmd(use, short, long string, method string, return fmt.Errorf("reading audio file: %w", err) } - req := client.NewRequest(config.CallingBaseURL(), method, buildPath(locationID, announcementID)) + req := client.NewRequest(config.CallingBaseURL, method, buildPath(locationID, announcementID)) req.QueryParam("orgId", orgID) if err := req.SetMultipart([]client.MultipartPart{ { diff --git a/cmd/calling/custom_converged_recordings.go b/cmd/calling/custom_converged_recordings.go index 869c70d..6af3273 100644 --- a/cmd/calling/custom_converged_recordings.go +++ b/cmd/calling/custom_converged_recordings.go @@ -39,7 +39,7 @@ Examples: webex calling converged-recordings download --recording-id --output call.vtt --type transcript`, RunE: func(c *cobra.Command, args []string) error { // Step 1: GET recording metadata - req := client.NewRequest(config.CallingBaseURL(), "GET", "/convergedRecordings/{recordingId}") + req := client.NewRequest(config.CallingBaseURL, "GET", "/convergedRecordings/{recordingId}") req.PathParam("recordingId", recordingID) resp, statusCode, err := req.Do() diff --git a/cmd/calling/custom_voicemail_greetings.go b/cmd/calling/custom_voicemail_greetings.go index 9e77649..04de37b 100644 --- a/cmd/calling/custom_voicemail_greetings.go +++ b/cmd/calling/custom_voicemail_greetings.go @@ -172,7 +172,7 @@ func registerGreetingUpload(parentCmd *cobra.Command, use, short, long string, return fmt.Errorf("reading audio file: %w", err) } - req := client.NewRequest(config.CallingBaseURL(), "POST", path) + req := client.NewRequest(config.CallingBaseURL, "POST", path) req.QueryParam("orgId", orgID) if err := req.SetMultipart([]client.MultipartPart{ { diff --git a/cmd/calling/customer_assist.go b/cmd/calling/customer_assist.go new file mode 100644 index 0000000..cb77a74 --- /dev/null +++ b/cmd/calling/customer_assist.go @@ -0,0 +1,420 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package calling + +import ( + "fmt" + "strconv" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa +var _ = strings.Join + +var customerAssistCmd = &cobra.Command{ + Use: "customer-assist", + Short: "CustomerAssist commands", +} + +func init() { + cmd.CallingCmd.AddCommand(customerAssistCmd) + + { // list-wrap-up-reasons + cmd := &cobra.Command{ + Use: "list-wrap-up-reasons", + Short: "List Wrap Up Reasons", + Long: "Return the list of wrap-up reasons configured for a customer.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues. Upon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue. Admins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nRetrieving the list of wrap-up reasons requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/cxEssentials/wrapup/reasons") + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + customerAssistCmd.AddCommand(cmd) + } + + { // create-wrap-up-reason + var name string + var description string + var queues []string + var assignAllQueuesEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-wrap-up-reason", + Short: "Create Wrap Up Reason", + Long: "Create a wrap-up reason.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues.\nUpon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue.\nAdmins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nCreating a wrap-up reason requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/cxEssentials/wrapup/reasons") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("name", name) + req.BodyString("description", description) + req.BodyStringSlice("queues", queues) + req.BodyBool("assignAllQueuesEnabled", assignAllQueuesEnabled, cmd.Flags().Changed("assign-all-queues-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&description, "description", "", "") + cmd.Flags().StringSliceVar(&queues, "queues", nil, "") + cmd.Flags().BoolVar(&assignAllQueuesEnabled, "assign-all-queues-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + customerAssistCmd.AddCommand(cmd) + } + + { // get-wrap-up-reason + var wrapupReasonId string + cmd := &cobra.Command{ + Use: "get-wrap-up-reason", + Short: "Read Wrap Up Reason", + Long: "Return the wrap-up reason by ID.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues.\nUpon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue.\nAdmins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nRetrieving the wrap-up reason by ID requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/cxEssentials/wrapup/reasons/{wrapupReasonId}") + req.PathParam("wrapupReasonId", wrapupReasonId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&wrapupReasonId, "wrapup-reason-id", "", "Wrap-up reason ID.") + cmd.MarkFlagRequired("wrapup-reason-id") + customerAssistCmd.AddCommand(cmd) + } + + { // update-wrap-up-reason + var wrapupReasonId string + var name string + var description string + var queuesToAssign []string + var queuesToUnassign []string + var assignAllQueuesEnabled bool + var unassignAllQueuesEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-wrap-up-reason", + Short: "Update Wrap Up Reason", + Long: "Modify a wrap-up reason.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues.\nUpon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue.\nAdmins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nModifying a wrap-up reason requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/cxEssentials/wrapup/reasons/{wrapupReasonId}") + req.PathParam("wrapupReasonId", wrapupReasonId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("name", name) + req.BodyString("description", description) + req.BodyStringSlice("queuesToAssign", queuesToAssign) + req.BodyStringSlice("queuesToUnassign", queuesToUnassign) + req.BodyBool("assignAllQueuesEnabled", assignAllQueuesEnabled, cmd.Flags().Changed("assign-all-queues-enabled")) + req.BodyBool("unassignAllQueuesEnabled", unassignAllQueuesEnabled, cmd.Flags().Changed("unassign-all-queues-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&wrapupReasonId, "wrapup-reason-id", "", "Wrap-up reason ID.") + cmd.MarkFlagRequired("wrapup-reason-id") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&description, "description", "", "") + cmd.Flags().StringSliceVar(&queuesToAssign, "queues-to-assign", nil, "") + cmd.Flags().StringSliceVar(&queuesToUnassign, "queues-to-unassign", nil, "") + cmd.Flags().BoolVar(&assignAllQueuesEnabled, "assign-all-queues-enabled", false, "") + cmd.Flags().BoolVar(&unassignAllQueuesEnabled, "unassign-all-queues-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + customerAssistCmd.AddCommand(cmd) + } + + { // delete-wrap-up-reason + var wrapupReasonId string + cmd := &cobra.Command{ + Use: "delete-wrap-up-reason", + Short: "Delete Wrap Up Reason", + Long: "Delete a wrap-up reason.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues.\nUpon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue.\nAdmins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nDeleting the wrap-up reason requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/cxEssentials/wrapup/reasons/{wrapupReasonId}") + req.PathParam("wrapupReasonId", wrapupReasonId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&wrapupReasonId, "wrapup-reason-id", "", "Wrap-up reason ID.") + cmd.MarkFlagRequired("wrapup-reason-id") + customerAssistCmd.AddCommand(cmd) + } + + { // validate-wrap-up-reason + var name string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "validate-wrap-up-reason", + Short: "Validate Wrap Up Reason", + Long: "Validate the wrap-up reason name.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues.\nUpon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue.\nAdmins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nValidating the wrap-up reason name requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/cxEssentials/wrapup/reasons/actions/validateName/invoke") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("name", name) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + customerAssistCmd.AddCommand(cmd) + } + + { // get-available-queues + var wrapupReasonId string + cmd := &cobra.Command{ + Use: "get-available-queues", + Short: "Read Available Queues", + Long: "Return the available queues for a wrap-up reason.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues.\nUpon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue.\nAdmins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nRetrieving the available queues for a wrap-up reason requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/cxEssentials/wrapup/reasons/{wrapupReasonId}/availableQueues") + req.PathParam("wrapupReasonId", wrapupReasonId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&wrapupReasonId, "wrapup-reason-id", "", "Wrap-up reason ID.") + cmd.MarkFlagRequired("wrapup-reason-id") + customerAssistCmd.AddCommand(cmd) + } + + { // get-wrap-up-reason-settings + var locationId string + var queueId string + cmd := &cobra.Command{ + Use: "get-wrap-up-reason-settings", + Short: "Read Wrap Up Reason Settings", + Long: "Return a wrap-up reason by location ID and queue ID.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues.\nUpon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue.\nAdmins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nRetrieving the wrap-up reason by location ID and queue ID requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/cxEssentials/locations/{locationId}/queues/{queueId}/wrapup/settings") + req.PathParam("locationId", locationId) + req.PathParam("queueId", queueId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "The location ID.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&queueId, "queue-id", "", "The queue ID.") + cmd.MarkFlagRequired("queue-id") + customerAssistCmd.AddCommand(cmd) + } + + { // update-wrap-up-reason-settings + var locationId string + var queueId string + var wrapupReasons []string + var defaultWrapupReasonId string + var wrapupTimerEnabled bool + var wrapupTimer int64 + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-wrap-up-reason-settings", + Short: "Update Wrap Up Reason Settings", + Long: "Modify a wrap-up reason by location ID and queue ID.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues.\nUpon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue.\nAdmins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nModifying a wrap-up reason by location ID and queue ID requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/cxEssentials/locations/{locationId}/queues/{queueId}/wrapup/settings") + req.PathParam("locationId", locationId) + req.PathParam("queueId", queueId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("wrapupReasons", wrapupReasons) + req.BodyString("defaultWrapupReasonId", defaultWrapupReasonId) + req.BodyBool("wrapupTimerEnabled", wrapupTimerEnabled, cmd.Flags().Changed("wrapup-timer-enabled")) + req.BodyInt("wrapupTimer", wrapupTimer, cmd.Flags().Changed("wrapup-timer")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "The location ID.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&queueId, "queue-id", "", "The queue ID.") + cmd.MarkFlagRequired("queue-id") + cmd.Flags().StringSliceVar(&wrapupReasons, "wrapup-reasons", nil, "") + cmd.Flags().StringVar(&defaultWrapupReasonId, "default-wrapup-reason-id", "", "") + cmd.Flags().BoolVar(&wrapupTimerEnabled, "wrapup-timer-enabled", false, "") + cmd.Flags().Int64Var(&wrapupTimer, "wrapup-timer", 0, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + customerAssistCmd.AddCommand(cmd) + } + + { // get-screen-pop-configuration + var locationId string + var queueId string + var orgId string + cmd := &cobra.Command{ + Use: "get-screen-pop-configuration", + Short: "Read Screen Pop Configuration", + Long: "Returns the screen pop configuration for a call queue in a location.\n\nScreen pop lets agents view customer-related info in a pop-up window.\n\nRetrieving the screen pop configuration requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/queues/{queueId}/cxEssentials/screenPop") + req.PathParam("locationId", locationId) + req.PathParam("queueId", queueId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "The location ID where the call queue resides.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&queueId, "queue-id", "", "The call queue ID for which screen pop configuration is modified.") + cmd.MarkFlagRequired("queue-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "The organization ID of the customer or partner's organization.") + customerAssistCmd.AddCommand(cmd) + } + + { // update-screen-pop-configuration + var locationId string + var queueId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-screen-pop-configuration", + Short: "Update Screen Pop Configuration", + Long: "Modifies the screen pop configuration for a call queue in a location.\n\nScreen pop lets agents view customer-related info in a pop-up window.\n\nModifying the screen pop configuration requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/locations/{locationId}/queues/{queueId}/cxEssentials/screenPop") + req.PathParam("locationId", locationId) + req.PathParam("queueId", queueId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "The location ID where the call queue resides.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&queueId, "queue-id", "", "The call queue ID for which screen pop configuration is modified.") + cmd.MarkFlagRequired("queue-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "The organization ID of the customer or partner's organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + customerAssistCmd.AddCommand(cmd) + } + + { // list-available-agents + var locationId string + var orgId string + var hasCxEssentials string + cmd := &cobra.Command{ + Use: "list-available-agents", + Short: "List Available Agents", + Long: "Return a list of available agents with Customer Assist license in a location.\n\nRetrieving the list of available agents requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/cxEssentials/agents/availableAgents") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + req.QueryParam("hasCxEssentials", hasCxEssentials) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Retrieve the list of avaiilable agents in this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "The organization ID of the customer or partner's organization.") + cmd.Flags().StringVar(&hasCxEssentials, "has-cx-essentials", "", "Returns only the list of available agents with Customer Assist license when `true`, otherwise returns the list of available agents with Customer Experience Basic license.") + customerAssistCmd.AddCommand(cmd) + } + +} diff --git a/cmd/calling/customer_experience_essentials.go b/cmd/calling/customer_experience_essentials.go new file mode 100644 index 0000000..703b89f --- /dev/null +++ b/cmd/calling/customer_experience_essentials.go @@ -0,0 +1,420 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package calling + +import ( + "fmt" + "strconv" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa +var _ = strings.Join + +var customerExperienceEssentialsCmd = &cobra.Command{ + Use: "customer-experience-essentials", + Short: "CustomerExperienceEssentials commands", +} + +func init() { + cmd.CallingCmd.AddCommand(customerExperienceEssentialsCmd) + + { // list-wrap-up-reasons + cmd := &cobra.Command{ + Use: "list-wrap-up-reasons", + Short: "List Wrap Up Reasons", + Long: "Return the list of wrap-up reasons configured for a customer.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues. Upon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue. Admins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nRetrieving the list of wrap-up reasons requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/cxEssentials/wrapup/reasons") + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + customerExperienceEssentialsCmd.AddCommand(cmd) + } + + { // create-wrap-up-reason + var name string + var description string + var queues []string + var assignAllQueuesEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-wrap-up-reason", + Short: "Create Wrap Up Reason", + Long: "Create a wrap-up reason.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues.\nUpon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue.\nAdmins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nCreating a wrap-up reason requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/cxEssentials/wrapup/reasons") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("name", name) + req.BodyString("description", description) + req.BodyStringSlice("queues", queues) + req.BodyBool("assignAllQueuesEnabled", assignAllQueuesEnabled, cmd.Flags().Changed("assign-all-queues-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&description, "description", "", "") + cmd.Flags().StringSliceVar(&queues, "queues", nil, "") + cmd.Flags().BoolVar(&assignAllQueuesEnabled, "assign-all-queues-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + customerExperienceEssentialsCmd.AddCommand(cmd) + } + + { // get-wrap-up-reason + var wrapupReasonId string + cmd := &cobra.Command{ + Use: "get-wrap-up-reason", + Short: "Read Wrap Up Reason", + Long: "Return the wrap-up reason by ID.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues.\nUpon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue.\nAdmins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nRetrieving the wrap-up reason by ID requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/cxEssentials/wrapup/reasons/{wrapupReasonId}") + req.PathParam("wrapupReasonId", wrapupReasonId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&wrapupReasonId, "wrapup-reason-id", "", "Wrap-up reason ID.") + cmd.MarkFlagRequired("wrapup-reason-id") + customerExperienceEssentialsCmd.AddCommand(cmd) + } + + { // update-wrap-up-reason + var wrapupReasonId string + var name string + var description string + var queuesToAssign []string + var queuesToUnassign []string + var assignAllQueuesEnabled bool + var unassignAllQueuesEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-wrap-up-reason", + Short: "Update Wrap Up Reason", + Long: "Modify a wrap-up reason.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues.\nUpon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue.\nAdmins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nModifying a wrap-up reason requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/cxEssentials/wrapup/reasons/{wrapupReasonId}") + req.PathParam("wrapupReasonId", wrapupReasonId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("name", name) + req.BodyString("description", description) + req.BodyStringSlice("queuesToAssign", queuesToAssign) + req.BodyStringSlice("queuesToUnassign", queuesToUnassign) + req.BodyBool("assignAllQueuesEnabled", assignAllQueuesEnabled, cmd.Flags().Changed("assign-all-queues-enabled")) + req.BodyBool("unassignAllQueuesEnabled", unassignAllQueuesEnabled, cmd.Flags().Changed("unassign-all-queues-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&wrapupReasonId, "wrapup-reason-id", "", "Wrap-up reason ID.") + cmd.MarkFlagRequired("wrapup-reason-id") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&description, "description", "", "") + cmd.Flags().StringSliceVar(&queuesToAssign, "queues-to-assign", nil, "") + cmd.Flags().StringSliceVar(&queuesToUnassign, "queues-to-unassign", nil, "") + cmd.Flags().BoolVar(&assignAllQueuesEnabled, "assign-all-queues-enabled", false, "") + cmd.Flags().BoolVar(&unassignAllQueuesEnabled, "unassign-all-queues-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + customerExperienceEssentialsCmd.AddCommand(cmd) + } + + { // delete-wrap-up-reason + var wrapupReasonId string + cmd := &cobra.Command{ + Use: "delete-wrap-up-reason", + Short: "Delete Wrap Up Reason", + Long: "Delete a wrap-up reason.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues.\nUpon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue.\nAdmins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nDeleting the wrap-up reason requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/cxEssentials/wrapup/reasons/{wrapupReasonId}") + req.PathParam("wrapupReasonId", wrapupReasonId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&wrapupReasonId, "wrapup-reason-id", "", "Wrap-up reason ID.") + cmd.MarkFlagRequired("wrapup-reason-id") + customerExperienceEssentialsCmd.AddCommand(cmd) + } + + { // validate-wrap-up-reason + var name string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "validate-wrap-up-reason", + Short: "Validate Wrap Up Reason", + Long: "Validate the wrap-up reason name.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues.\nUpon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue.\nAdmins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nValidating the wrap-up reason name requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/cxEssentials/wrapup/reasons/actions/validateName/invoke") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("name", name) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + customerExperienceEssentialsCmd.AddCommand(cmd) + } + + { // get-available-queues + var wrapupReasonId string + cmd := &cobra.Command{ + Use: "get-available-queues", + Short: "Read Available Queues", + Long: "Return the available queues for a wrap-up reason.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues.\nUpon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue.\nAdmins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nRetrieving the available queues for a wrap-up reason requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/cxEssentials/wrapup/reasons/{wrapupReasonId}/availableQueues") + req.PathParam("wrapupReasonId", wrapupReasonId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&wrapupReasonId, "wrapup-reason-id", "", "Wrap-up reason ID.") + cmd.MarkFlagRequired("wrapup-reason-id") + customerExperienceEssentialsCmd.AddCommand(cmd) + } + + { // get-wrap-up-reason-settings + var locationId string + var queueId string + cmd := &cobra.Command{ + Use: "get-wrap-up-reason-settings", + Short: "Read Wrap Up Reason Settings", + Long: "Return a wrap-up reason by location ID and queue ID.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues.\nUpon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue.\nAdmins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nRetrieving the wrap-up reason by location ID and queue ID requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/cxEssentials/locations/{locationId}/queues/{queueId}/wrapup/settings") + req.PathParam("locationId", locationId) + req.PathParam("queueId", queueId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "The location ID.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&queueId, "queue-id", "", "The queue ID.") + cmd.MarkFlagRequired("queue-id") + customerExperienceEssentialsCmd.AddCommand(cmd) + } + + { // update-wrap-up-reason-settings + var locationId string + var queueId string + var wrapupReasons []string + var defaultWrapupReasonId string + var wrapupTimerEnabled bool + var wrapupTimer int64 + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-wrap-up-reason-settings", + Short: "Update Wrap Up Reason Settings", + Long: "Modify a wrap-up reason by location ID and queue ID.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues.\nUpon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue.\nAdmins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nModifying a wrap-up reason by location ID and queue ID requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/cxEssentials/locations/{locationId}/queues/{queueId}/wrapup/settings") + req.PathParam("locationId", locationId) + req.PathParam("queueId", queueId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("wrapupReasons", wrapupReasons) + req.BodyString("defaultWrapupReasonId", defaultWrapupReasonId) + req.BodyBool("wrapupTimerEnabled", wrapupTimerEnabled, cmd.Flags().Changed("wrapup-timer-enabled")) + req.BodyInt("wrapupTimer", wrapupTimer, cmd.Flags().Changed("wrapup-timer")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "The location ID.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&queueId, "queue-id", "", "The queue ID.") + cmd.MarkFlagRequired("queue-id") + cmd.Flags().StringSliceVar(&wrapupReasons, "wrapup-reasons", nil, "") + cmd.Flags().StringVar(&defaultWrapupReasonId, "default-wrapup-reason-id", "", "") + cmd.Flags().BoolVar(&wrapupTimerEnabled, "wrapup-timer-enabled", false, "") + cmd.Flags().Int64Var(&wrapupTimer, "wrapup-timer", 0, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + customerExperienceEssentialsCmd.AddCommand(cmd) + } + + { // get-screen-pop-configuration + var locationId string + var queueId string + var orgId string + cmd := &cobra.Command{ + Use: "get-screen-pop-configuration", + Short: "Read Screen Pop Configuration", + Long: "Returns the screen pop configuration for a call queue in a location.\n\nScreen pop lets agents view customer-related info in a pop-up window.\n\nRetrieving the screen pop configuration requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/queues/{queueId}/cxEssentials/screenPop") + req.PathParam("locationId", locationId) + req.PathParam("queueId", queueId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "The location ID where the call queue resides.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&queueId, "queue-id", "", "The call queue ID for which screen pop configuration is modified.") + cmd.MarkFlagRequired("queue-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "The organization ID of the customer or partner's organization.") + customerExperienceEssentialsCmd.AddCommand(cmd) + } + + { // update-screen-pop-configuration + var locationId string + var queueId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-screen-pop-configuration", + Short: "Update Screen Pop Configuration", + Long: "Modifies the screen pop configuration for a call queue in a location.\n\nScreen pop lets agents view customer-related info in a pop-up window.\n\nModifying the screen pop configuration requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/locations/{locationId}/queues/{queueId}/cxEssentials/screenPop") + req.PathParam("locationId", locationId) + req.PathParam("queueId", queueId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "The location ID where the call queue resides.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&queueId, "queue-id", "", "The call queue ID for which screen pop configuration is modified.") + cmd.MarkFlagRequired("queue-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "The organization ID of the customer or partner's organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + customerExperienceEssentialsCmd.AddCommand(cmd) + } + + { // list-available-agents + var locationId string + var orgId string + var hasCxEssentials string + cmd := &cobra.Command{ + Use: "list-available-agents", + Short: "List Available Agents", + Long: "Return a list of available agents with Customer Experience Essentials license in a location.\n\nRetrieving the list of available agents requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/cxEssentials/agents/availableAgents") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + req.QueryParam("hasCxEssentials", hasCxEssentials) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Retrieve the list of avaiilable agents in this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "The organization ID of the customer or partner's organization.") + cmd.Flags().StringVar(&hasCxEssentials, "has-cx-essentials", "", "Returns only the list of available agents with Customer Experience Essentials license when `true`, otherwise returns the list of available agents with Customer Experience Basic license.") + customerExperienceEssentialsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/calling/dect_devices.go b/cmd/calling/dect_devices.go new file mode 100644 index 0000000..e40cbcb --- /dev/null +++ b/cmd/calling/dect_devices.go @@ -0,0 +1,904 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package calling + +import ( + "fmt" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strings.Join + +var dectDevicesCmd = &cobra.Command{ + Use: "dect-devices", + Short: "DectDevices commands", +} + +func init() { + cmd.CallingCmd.AddCommand(dectDevicesCmd) + + { // create-network + var locationId string + var orgId string + var name string + var model string + var defaultAccessCodeEnabled bool + var defaultAccessCode string + var displayName string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-network", + Short: "Create a DECT Network", + Long: "Create a multi-cell DECT network for a given location.\n\nCreating a DECT network requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/locations/{locationId}/dectNetworks") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("name", name) + req.BodyString("model", model) + req.BodyBool("defaultAccessCodeEnabled", defaultAccessCodeEnabled, cmd.Flags().Changed("default-access-code-enabled")) + req.BodyString("defaultAccessCode", defaultAccessCode) + req.BodyString("displayName", displayName) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Create a DECT network in this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Create a DECT network in this organization.") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&model, "model", "", "") + cmd.Flags().BoolVar(&defaultAccessCodeEnabled, "default-access-code-enabled", false, "") + cmd.Flags().StringVar(&defaultAccessCode, "default-access-code", "", "") + cmd.Flags().StringVar(&displayName, "display-name", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + dectDevicesCmd.AddCommand(cmd) + } + + { // list-networks + var orgId string + var name string + var locationId string + cmd := &cobra.Command{ + Use: "list-networks", + Short: "Get the List of DECT Networks for an organization", + Long: "Retrieves the list of DECT networks for an organization.\n\nDECT Networks provide roaming voice services via base stations and wireless handsets. A DECT network can be provisioned up to 1000 lines across up to 254 base stations.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/dectNetworks") + req.QueryParam("orgId", orgId) + req.QueryParam("name", name) + req.QueryParam("locationId", locationId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List of DECT networks in this organization.") + cmd.Flags().StringVar(&name, "name", "", "List of DECT networks with this name.") + cmd.Flags().StringVar(&locationId, "location-id", "", "List of DECT networks at this location.") + dectDevicesCmd.AddCommand(cmd) + } + + { // get-network + var locationId string + var dectNetworkId string + var orgId string + cmd := &cobra.Command{ + Use: "get-network", + Short: "Get DECT Network Details", + Long: "Retrieves the details of a DECT network.\n\nDECT Networks provide roaming voice services via base stations and wireless handsets. A DECT network can be provisioned up to 1000 lines across up to 254 base stations.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/dectNetworks/{dectNetworkId}") + req.PathParam("locationId", locationId) + req.PathParam("dectNetworkId", dectNetworkId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Details of the DECT network at this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&dectNetworkId, "dect-network-id", "", "Details of the specified DECT network.") + cmd.MarkFlagRequired("dect-network-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Details of the DECT network in this organization.") + dectDevicesCmd.AddCommand(cmd) + } + + { // update-network + var locationId string + var dectNetworkId string + var orgId string + var name string + var defaultAccessCodeEnabled bool + var defaultAccessCode string + var displayName string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-network", + Short: "Update DECT Network", + Long: "Update the details of a DECT network.\n\nDECT Networks provide roaming voice services via base stations and wireless handsets. A DECT network can be provisioned up to 1000 lines across up to 254 base stations.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/locations/{locationId}/dectNetworks/{dectNetworkId}") + req.PathParam("locationId", locationId) + req.PathParam("dectNetworkId", dectNetworkId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("name", name) + req.BodyBool("defaultAccessCodeEnabled", defaultAccessCodeEnabled, cmd.Flags().Changed("default-access-code-enabled")) + req.BodyString("defaultAccessCode", defaultAccessCode) + req.BodyString("displayName", displayName) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Update DECT network details in the specified location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&dectNetworkId, "dect-network-id", "", "Update DECT network details in the specified DECT network.") + cmd.MarkFlagRequired("dect-network-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Update DECT network details in the specified organization.") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().BoolVar(&defaultAccessCodeEnabled, "default-access-code-enabled", false, "") + cmd.Flags().StringVar(&defaultAccessCode, "default-access-code", "", "") + cmd.Flags().StringVar(&displayName, "display-name", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + dectDevicesCmd.AddCommand(cmd) + } + + { // delete-network + var locationId string + var dectNetworkId string + var orgId string + cmd := &cobra.Command{ + Use: "delete-network", + Short: "Delete DECT Network", + Long: "Delete a DECT network.\n\nDECT Networks provide roaming voice services via base stations and wireless handsets. A DECT network can be provisioned up to 1000 lines across up to 254 base stations.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/locations/{locationId}/dectNetworks/{dectNetworkId}") + req.PathParam("locationId", locationId) + req.PathParam("dectNetworkId", dectNetworkId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Delete the DECT network in the specified location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&dectNetworkId, "dect-network-id", "", "Delete the specified DECT network.") + cmd.MarkFlagRequired("dect-network-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Delete the DECT network in the specified organization.") + dectDevicesCmd.AddCommand(cmd) + } + + { // create-multiple-base-stations + var locationId string + var dectNetworkId string + var orgId string + var baseStationMacs []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-multiple-base-stations", + Short: "Create Multiple Base Stations", + Long: "This API is used to create multiple base stations in a DECT network in an organization.\n\nCreating base stations in a DECT network requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/locations/{locationId}/dectNetworks/{dectNetworkId}/baseStations") + req.PathParam("locationId", locationId) + req.PathParam("dectNetworkId", dectNetworkId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("baseStationMacs", baseStationMacs) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Create a base station in this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&dectNetworkId, "dect-network-id", "", "Create a base station for the DECT network.") + cmd.MarkFlagRequired("dect-network-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Create a base station for a DECT network in this organization.") + cmd.Flags().StringSliceVar(&baseStationMacs, "base-station-macs", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + dectDevicesCmd.AddCommand(cmd) + } + + { // list-network-base-stations + var locationId string + var dectNetworkId string + var orgId string + cmd := &cobra.Command{ + Use: "list-network-base-stations", + Short: "Get a list of DECT Network Base Stations", + Long: "Retrieve a list of base stations in a DECT Network.\n\nA DECT network supports 2 types of base stations, DECT DBS-110 Single-Cell and DECT DBS-210 Multi-Cell.\nA DECT DBS-110 allows up to 30 lines of registration and supports 1 base station only. A DECT DBS-210 can have up to 254 base stations and supports up to 1000 lines of registration.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/dectNetworks/{dectNetworkId}/baseStations") + req.PathParam("locationId", locationId) + req.PathParam("dectNetworkId", dectNetworkId) + req.QueryParam("orgId", orgId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location containing the DECT network.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&dectNetworkId, "dect-network-id", "", "Retrieve the list of base stations in the specified DECT network ID.") + cmd.MarkFlagRequired("dect-network-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization containing the DECT network.") + dectDevicesCmd.AddCommand(cmd) + } + + { // delete-bulk-network-base-stations + var locationId string + var dectNetworkId string + var orgId string + cmd := &cobra.Command{ + Use: "delete-bulk-network-base-stations", + Short: "Delete bulk DECT Network Base Stations", + Long: "Delete all the base stations in the DECT Network.\n\nA DECT network supports 2 types of base stations, DECT DBS-110 Single-Cell and DECT DBS-210 Multi-Cell.\nA DECT DBS-110 allows up to 30 lines of registration and supports 1 base station only. A DECT DBS-210 can have up to 254 base stations and supports up to 1000 lines of registration.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/locations/{locationId}/dectNetworks/{dectNetworkId}/baseStations") + req.PathParam("locationId", locationId) + req.PathParam("dectNetworkId", dectNetworkId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location containing the DECT network.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&dectNetworkId, "dect-network-id", "", "Delete all the base stations in the specified DECT network ID.") + cmd.MarkFlagRequired("dect-network-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization containing the DECT network.") + dectDevicesCmd.AddCommand(cmd) + } + + { // get-network-base-station + var locationId string + var dectNetworkId string + var baseStationId string + var orgId string + cmd := &cobra.Command{ + Use: "get-network-base-station", + Short: "Get the details of a specific DECT Network Base Station", + Long: "Retrieve details of a specific base station in the DECT Network.\n\nA DECT network supports 2 types of base stations, DECT DBS-110 Single-Cell and DECT DBS-210 Multi-Cell.\nA DECT DBS-110 allows up to 30 lines of registration and supports 1 base station only. A DECT DBS-210 can have up to 254 base stations and supports up to 1000 lines of registration.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/dectNetworks/{dectNetworkId}/baseStations/{baseStationId}") + req.PathParam("locationId", locationId) + req.PathParam("dectNetworkId", dectNetworkId) + req.PathParam("baseStationId", baseStationId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location containing the DECT network.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&dectNetworkId, "dect-network-id", "", "Retrieve details of a specific base station in the specified DECT network ID.") + cmd.MarkFlagRequired("dect-network-id") + cmd.Flags().StringVar(&baseStationId, "base-station-id", "", "Retrieve details of the specific DECT base station ID.") + cmd.MarkFlagRequired("base-station-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization containing the DECT network.") + dectDevicesCmd.AddCommand(cmd) + } + + { // delete-network-base-station + var locationId string + var dectNetworkId string + var baseStationId string + var orgId string + cmd := &cobra.Command{ + Use: "delete-network-base-station", + Short: "Delete a specific DECT Network Base Station", + Long: "Delete a specific base station in the DECT Network.\n\nA DECT network supports 2 types of base stations, DECT DBS-110 Single-Cell and DECT DBS-210 Multi-Cell.\nA DECT DBS-110 allows up to 30 lines of registration and supports 1 base station only. A DECT DBS-210 can have up to 254 base stations and supports up to 1000 lines of registration.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/locations/{locationId}/dectNetworks/{dectNetworkId}/baseStations/{baseStationId}") + req.PathParam("locationId", locationId) + req.PathParam("dectNetworkId", dectNetworkId) + req.PathParam("baseStationId", baseStationId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location containing the DECT network.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&dectNetworkId, "dect-network-id", "", "Delete a specific base station in the specified DECT network ID.") + cmd.MarkFlagRequired("dect-network-id") + cmd.Flags().StringVar(&baseStationId, "base-station-id", "", "Delete the specific DECT base station ID.") + cmd.MarkFlagRequired("base-station-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization containing the DECT network.") + dectDevicesCmd.AddCommand(cmd) + } + + { // create-handset-network + var locationId string + var dectNetworkId string + var orgId string + var line1MemberId string + var customDisplayName string + var line2MemberId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-handset-network", + Short: "Add a Handset to a DECT Network", + Long: "Add a handset to a DECT network in a location in an organization.\n\nAdding a handset to a DECT network requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n
Adding a DECT handset to a person with a Webex Calling Standard license will disable Webex Calling across their Webex mobile, tablet, desktop, and browser applications.
\n\n
Adding or removing handsets to the DECT network in less than 90 seconds may result in base station not having the latest configuration until the base station is rebooted.
", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/locations/{locationId}/dectNetworks/{dectNetworkId}/handsets") + req.PathParam("locationId", locationId) + req.PathParam("dectNetworkId", dectNetworkId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("line1MemberId", line1MemberId) + req.BodyString("customDisplayName", customDisplayName) + req.BodyString("line2MemberId", line2MemberId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Add handset in this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&dectNetworkId, "dect-network-id", "", "A unique identifier for the DECT network.") + cmd.MarkFlagRequired("dect-network-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Add handset in this organization.") + cmd.Flags().StringVar(&line1MemberId, "line1-member-id", "", "") + cmd.Flags().StringVar(&customDisplayName, "custom-display-name", "", "") + cmd.Flags().StringVar(&line2MemberId, "line2-member-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + dectDevicesCmd.AddCommand(cmd) + } + + { // list-handsets-network-id + var locationId string + var dectNetworkId string + var orgId string + var basestationId string + var memberId string + cmd := &cobra.Command{ + Use: "list-handsets-network-id", + Short: "Get List of Handsets for a DECT Network ID", + Long: "List all the handsets associated with a DECT Network ID.\n\nA handset can have up to two lines, and a DECT network supports a total of 120 lines across all handsets.\nA member on line1 of a DECT handset can be of type PEOPLE or PLACE while a member on line2 of a DECT handset can be of type PEOPLE, PLACE, or VIRTUAL_LINE.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/dectNetworks/{dectNetworkId}/handsets") + req.PathParam("locationId", locationId) + req.PathParam("dectNetworkId", dectNetworkId) + req.QueryParam("orgId", orgId) + req.QueryParam("basestationId", basestationId) + req.QueryParam("memberId", memberId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location containing the DECT network.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&dectNetworkId, "dect-network-id", "", "Search handset details in the specified DECT network ID.") + cmd.MarkFlagRequired("dect-network-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization containing the DECT network.") + cmd.Flags().StringVar(&basestationId, "basestation-id", "", "Search handset details in the specified DECT base station ID.") + cmd.Flags().StringVar(&memberId, "member-id", "", "ID of the member of the handset. Members can be of type PEOPLE, PLACE, or VIRTUAL_LINE.") + dectDevicesCmd.AddCommand(cmd) + } + + { // get-network-handset + var locationId string + var dectNetworkId string + var handsetId string + var orgId string + cmd := &cobra.Command{ + Use: "get-network-handset", + Short: "Get Specific DECT Network Handset Details", + Long: "List the specific DECT Network handset details.\n\nA handset can have up to two lines, and a DECT network supports a total of 120 lines across all handsets.\nA member on line1 of a DECT handset can be of type PEOPLE or PLACE while a member on line2 of a DECT handset can be of type PEOPLE, PLACE, or VIRTUAL_LINE.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/dectNetworks/{dectNetworkId}/handsets/{handsetId}") + req.PathParam("locationId", locationId) + req.PathParam("dectNetworkId", dectNetworkId) + req.PathParam("handsetId", handsetId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location containing the DECT network.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&dectNetworkId, "dect-network-id", "", "Search handset details in the specified DECT network ID.") + cmd.MarkFlagRequired("dect-network-id") + cmd.Flags().StringVar(&handsetId, "handset-id", "", "A unique identifier for the handset.") + cmd.MarkFlagRequired("handset-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization containing the DECT network.") + dectDevicesCmd.AddCommand(cmd) + } + + { // update-network-handset + var locationId string + var dectNetworkId string + var handsetId string + var orgId string + var line1MemberId string + var customDisplayName string + var line2MemberId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-network-handset", + Short: "Update DECT Network Handset", + Long: "Update the line assignment on a handset.\n\nA handset can have up to two lines, and a DECT network supports a total of 120 lines across all handsets.\nA member on line1 of a DECT handset can be of type PEOPLE or PLACE while a member on line2 of a DECT handset can be of type PEOPLE, PLACE, or VIRTUAL_LINE.\n\nUpdating a DECT Network handset requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n
Adding a person with a Webex Calling Standard license to the DECT handset line1 will disable Webex Calling across their Webex mobile, tablet, desktop, and browser applications. \nRemoving a person with a Webex Calling Standard license from the DECT handset line1 will enable Webex Calling across their Webex mobile, tablet, desktop, and browser applications.
\n\n
Adding or removing handsets to the DECT network in less than 90 seconds may result in base station not having the latest configuration until the base station is rebooted.
", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/locations/{locationId}/dectNetworks/{dectNetworkId}/handsets/{handsetId}") + req.PathParam("locationId", locationId) + req.PathParam("dectNetworkId", dectNetworkId) + req.PathParam("handsetId", handsetId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("line1MemberId", line1MemberId) + req.BodyString("customDisplayName", customDisplayName) + req.BodyString("line2MemberId", line2MemberId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location containing the DECT network.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&dectNetworkId, "dect-network-id", "", "Update handset details in the specified DECT network.") + cmd.MarkFlagRequired("dect-network-id") + cmd.Flags().StringVar(&handsetId, "handset-id", "", "A unique identifier for the handset.") + cmd.MarkFlagRequired("handset-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization containing the DECT network.") + cmd.Flags().StringVar(&line1MemberId, "line1-member-id", "", "") + cmd.Flags().StringVar(&customDisplayName, "custom-display-name", "", "") + cmd.Flags().StringVar(&line2MemberId, "line2-member-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + dectDevicesCmd.AddCommand(cmd) + } + + { // delete-network-handset + var locationId string + var dectNetworkId string + var handsetId string + var orgId string + cmd := &cobra.Command{ + Use: "delete-network-handset", + Short: "Delete specific DECT Network Handset Details", + Long: "Delete a specific DECT Network handset.\n\nA handset can have up to two lines, and a DECT network supports a total of 120 lines across all handsets.\nA member on line1 of a DECT handset can be of type PEOPLE or PLACE while a member on line2 of a DECT handset can be of type PEOPLE, PLACE, or VIRTUAL_LINE.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n
Deleting a DECT handset from a person with a Webex Calling Standard license will enable Webex Calling across their Webex mobile, tablet, desktop, and browser applications.
\n\n
Adding or removing handsets to the DECT network in less than 90 seconds may result in base station not having the latest configuration until the base station is rebooted.
", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/locations/{locationId}/dectNetworks/{dectNetworkId}/handsets/{handsetId}") + req.PathParam("locationId", locationId) + req.PathParam("dectNetworkId", dectNetworkId) + req.PathParam("handsetId", handsetId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location containing the DECT network.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&dectNetworkId, "dect-network-id", "", "Delete handset details in the specified DECT network ID.") + cmd.MarkFlagRequired("dect-network-id") + cmd.Flags().StringVar(&handsetId, "handset-id", "", "A unique identifier for the handset.") + cmd.MarkFlagRequired("handset-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization containing the DECT network.") + dectDevicesCmd.AddCommand(cmd) + } + + { // delete-multiple-handsets + var locationId string + var dectNetworkId string + var orgId string + var handsetIds []string + var deleteAll bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "delete-multiple-handsets", + Short: "Delete multiple handsets", + Long: "Delete multiple handsets or all of them.\n\nA handset can have up to two lines, and a DECT network supports a total of 120 lines across all handsets.\nA member on line1 of a DECT handset can be of type PEOPLE or PLACE while a member on line2 of a DECT handset can be of type PEOPLE, PLACE, or VIRTUAL_LINE.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n
Deleting a DECT handset from a person with a Webex Calling Standard license will enable Webex Calling across their Webex mobile, tablet, desktop, and browser applications.
\n\n
Adding or removing handsets to the DECT network in less than 90 seconds may result in base station not having the latest configuration until the base station is rebooted.
", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/locations/{locationId}/dectNetworks/{dectNetworkId}/handsets") + req.PathParam("locationId", locationId) + req.PathParam("dectNetworkId", dectNetworkId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("handsetIds", handsetIds) + req.BodyBool("deleteAll", deleteAll, cmd.Flags().Changed("delete-all")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location containing the DECT network.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&dectNetworkId, "dect-network-id", "", "Delete handset details in the specified DECT network ID.") + cmd.MarkFlagRequired("dect-network-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization containing the DECT network.") + cmd.Flags().StringSliceVar(&handsetIds, "handset-ids", nil, "") + cmd.Flags().BoolVar(&deleteAll, "delete-all", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + dectDevicesCmd.AddCommand(cmd) + } + + { // create-list-handsets-network + var locationId string + var dectNetworkId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-list-handsets-network", + Short: "Add a List of Handsets to a DECT Network", + Long: "Add a list of up to 50 handsets to a DECT network in a location.\n\nA DECT network acts as a container that can support up to 1,000 lines across all handsets, with each handset capable of handling up to two lines. Once the network is created, you can add bases, handsets, and assign users or lines as needed.\n\nAdding a list of handsets to a DECT network requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n
Adding a DECT handset to a person with a Webex Calling Standard license will disable Webex Calling across their Webex mobile, tablet, desktop, and browser applications.\n\n
\n\n
Adding or removing handsets to the DECT network in less than 90 seconds may result in base station not having the latest configuration until the base station is rebooted.
", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/locations/{locationId}/dectNetworks/{dectNetworkId}/handsets/bulk") + req.PathParam("locationId", locationId) + req.PathParam("dectNetworkId", dectNetworkId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Add handsets in this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&dectNetworkId, "dect-network-id", "", "A unique identifier for the DECT network.") + cmd.MarkFlagRequired("dect-network-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Add handsets in this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + dectDevicesCmd.AddCommand(cmd) + } + + { // list-networks-associated-person + var personId string + var orgId string + cmd := &cobra.Command{ + Use: "list-networks-associated-person", + Short: "GET List of DECT networks associated with a Person", + Long: "Retrieves the list of DECT networks for a person in an organization.\n\nDECT Network provides roaming voice services via base stations and wireless handsets. DECT network can be provisioned up to 1000 lines across up to 254 base stations.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/{personId}/dectNetworks") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "List of DECT networks associated with this person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "List of DECT networks associated with a person in this organization.") + dectDevicesCmd.AddCommand(cmd) + } + + { // list-networks-associated-workspace + var workspaceId string + var orgId string + cmd := &cobra.Command{ + Use: "list-networks-associated-workspace", + Short: "GET List of DECT networks associated with a workspace", + Long: "Retrieves the list of DECT networks for a workspace in an organization.\n\nDECT Network provides roaming voice services via base stations and wireless handsets. DECT network can be provisioned up to 1000 lines across up to 254 base stations.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/workspaces/{workspaceId}/dectNetworks") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "List of DECT networks associated with this workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "List of DECT networks associated with a workspace in this organization.") + dectDevicesCmd.AddCommand(cmd) + } + + { // search-available-members + var orgId string + var start string + var max string + var memberName string + var phoneNumber string + var extension string + var order string + var locationId string + var excludeVirtualLine string + var usageType string + cmd := &cobra.Command{ + Use: "search-available-members", + Short: "Search Available Members", + Long: "List the members that are available to be assigned to DECT handset lines.\n\nThis requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/devices/availableMembers") + req.QueryParam("orgId", orgId) + req.QueryParam("start", start) + req.QueryParam("max", max) + req.QueryParam("memberName", memberName) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("extension", extension) + req.QueryParam("order", order) + req.QueryParam("locationId", locationId) + req.QueryParam("excludeVirtualLine", excludeVirtualLine) + req.QueryParam("usageType", usageType) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Search members in this organization.") + cmd.Flags().StringVar(&start, "start", "", "Specifies the offset from the first result that you want to fetch.") + cmd.Flags().StringVar(&max, "max", "", "Specifies the maximum number of records that you want to fetch.") + cmd.Flags().StringVar(&memberName, "member-name", "", "Search (Contains) numbers based on member name.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Search (Contains) based on number.") + cmd.Flags().StringVar(&extension, "extension", "", "Search (Contains) based on extension.") + cmd.Flags().StringVar(&order, "order", "", "Sort the list of available members on the device in ascending order by name, using either last name `lname` or first name `fname`. Default sort is the last name in ascending order.") + cmd.Flags().StringVar(&locationId, "location-id", "", "List members for the location ID.") + cmd.Flags().StringVar(&excludeVirtualLine, "exclude-virtual-line", "", "If true, search results will exclude virtual lines in the member list. NOTE: Virtual lines cannot be assigned as the primary line.") + cmd.Flags().StringVar(&usageType, "usage-type", "", "Search for members eligible to become the owner of the device, or share line on the device.") + dectDevicesCmd.AddCommand(cmd) + } + + { // generate-enable-service-password + var locationId string + var dectNetworkId string + var orgId string + cmd := &cobra.Command{ + Use: "generate-enable-service-password", + Short: "Generate and Enable DECT Serviceability Password", + Long: "Generates and enables a 16-character DECT serviceability password.\n\n
Generating a password and transmitting it to the DECT network can reboot the entire network. Be sure you choose an appropriate time to generate a new password.
\n\nThe DECT serviceability password, also known as the admin override password, provides read/write access to DECT base stations for performing system serviceability and troubleshooting functions.\n\nThis API requires either a full administrator auth token with the scope `spark-admin:telephony_config_write`, or a device administrator token with the scope of `spark-admin:devices_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/locations/{locationId}/dectNetworks/{dectNetworkId}/serviceabilityPassword/actions/generate/invoke") + req.PathParam("locationId", locationId) + req.PathParam("dectNetworkId", dectNetworkId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Unique identifier for the location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&dectNetworkId, "dect-network-id", "", "Unique identifier for the DECT network.") + cmd.MarkFlagRequired("dect-network-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Unique identifier for the organization.") + dectDevicesCmd.AddCommand(cmd) + } + + { // get-service-password-status + var locationId string + var dectNetworkId string + var orgId string + cmd := &cobra.Command{ + Use: "get-service-password-status", + Short: "Get DECT Serviceability Password status", + Long: "Retrieves the DECT serviceability password status.\n\n
If the serviceability password is enabled but has not been generated, the `enabled` status will be returned as `true` even though there is no active serviceability password.
\n\nThe DECT serviceability password, also known as the admin override password, provides read/write access to DECT base stations for performing system serviceability and troubleshooting functions.\n\nThis API requires an auth token with either a full, read-only token with the scope of `spark-admin:telephony_config_read`, or a device administrator token with the scope of `spark-admin:devices_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/dectNetworks/{dectNetworkId}/serviceabilityPassword") + req.PathParam("locationId", locationId) + req.PathParam("dectNetworkId", dectNetworkId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Unique identifier for the location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&dectNetworkId, "dect-network-id", "", "Unique identifier for the DECT network.") + cmd.MarkFlagRequired("dect-network-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Unique identifier for the organization.") + dectDevicesCmd.AddCommand(cmd) + } + + { // update-service-password-status + var locationId string + var dectNetworkId string + var orgId string + var enabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-service-password-status", + Short: "Update DECT Serviceability Password status", + Long: "Enables or disables the DECT serviceability password.\n\n
Enabling or disabling the password and transmitting it to the DECT network can reboot the entire network. Be sure you choose an appropriate time for this action.
\n\n
If enabling is requested, but the serviceability password has not been generated, we will not actively reject the request even though there is no serviceability password.
\n\nThe DECT serviceability password, also known as the admin override password, provides read/write access to DECT base stations for performing system serviceability and troubleshooting functions.\n\nThis API requires either a full administrator auth token with the scope `spark-admin:telephony_config_write`, or a device administrator token with the scope of `spark-admin:devices_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/locations/{locationId}/dectNetworks/{dectNetworkId}/serviceabilityPassword") + req.PathParam("locationId", locationId) + req.PathParam("dectNetworkId", dectNetworkId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Unique identifier for the location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&dectNetworkId, "dect-network-id", "", "Unique identifier for the DECT network.") + cmd.MarkFlagRequired("dect-network-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Unique identifier for the organization.") + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + dectDevicesCmd.AddCommand(cmd) + } + +} diff --git a/cmd/calling/device_call.go b/cmd/calling/device_call.go new file mode 100644 index 0000000..4c75364 --- /dev/null +++ b/cmd/calling/device_call.go @@ -0,0 +1,2159 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package calling + +import ( + "fmt" + "strconv" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa +var _ = strings.Join + +var deviceCallCmd = &cobra.Command{ + Use: "device-call", + Short: "DeviceCall commands", +} + +func init() { + cmd.CallingCmd.AddCommand(deviceCallCmd) + + { // get-members + var deviceId string + var orgId string + cmd := &cobra.Command{ + Use: "get-members", + Short: "Get Device Members", + Long: "Get the list of all the members of the device including primary and secondary users.\n\nA device member can be either a person or a workspace. An admin can access the list of member details, modify member details and\nsearch for available members on a device.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/devices/{deviceId}/members") + req.PathParam("deviceId", deviceId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&deviceId, "device-id", "", "Unique identifier for the device.") + cmd.MarkFlagRequired("device-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieves the list of all members of the device in this organization.") + deviceCallCmd.AddCommand(cmd) + } + + { // update-members + var deviceId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-members", + Short: "Update Members on the device", + Long: "Modify member details on the device.\n\nA device member can be either a person, virtual line or a workspace. An admin can access the list of member details, modify member details and\nsearch for available members on a device.\n\nModifying members on the device requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/devices/{deviceId}/members") + req.PathParam("deviceId", deviceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&deviceId, "device-id", "", "Unique identifier for the device.") + cmd.MarkFlagRequired("device-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Modify members on the device in this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // search-members + var deviceId string + var orgId string + var start string + var max string + var memberName string + var phoneNumber string + var locationId string + var extension string + var usageType string + var order string + cmd := &cobra.Command{ + Use: "search-members", + Short: "Search Members", + Long: "Search members that can be assigned to the device.\n\nA device member can be either a person or a workspace. A admin can access the list of member details, modify member details and\nsearch for available members on a device.\n\nThis requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/devices/{deviceId}/availableMembers") + req.PathParam("deviceId", deviceId) + req.QueryParam("orgId", orgId) + req.QueryParam("start", start) + req.QueryParam("max", max) + req.QueryParam("memberName", memberName) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("locationId", locationId) + req.QueryParam("extension", extension) + req.QueryParam("usageType", usageType) + req.QueryParam("order", order) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&deviceId, "device-id", "", "Unique identifier for the device.") + cmd.MarkFlagRequired("device-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieves the list of available members on the device in this organization.") + cmd.Flags().StringVar(&start, "start", "", "Specifies the offset from the first result that you want to fetch.") + cmd.Flags().StringVar(&max, "max", "", "Specifies the maximum number of records that you want to fetch.") + cmd.Flags().StringVar(&memberName, "member-name", "", "Search (Contains) numbers based on member name.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Search (Contains) based on number.") + cmd.Flags().StringVar(&locationId, "location-id", "", "Unique identifier for the location.") + cmd.Flags().StringVar(&extension, "extension", "", "Search (Contains) based on extension.") + cmd.Flags().StringVar(&usageType, "usage-type", "", "Search for members eligible to become the owner of the device, or share line on the device.") + cmd.Flags().StringVar(&order, "order", "", "Sort the list of available members on the device in ascending order by name, use either last name `lname` or first name `fname`. Default: last name in ascending order.") + deviceCallCmd.AddCommand(cmd) + } + + { // apply-changes + var deviceId string + var orgId string + cmd := &cobra.Command{ + Use: "apply-changes", + Short: "Apply Changes for a specific device", + Long: "Issues request to the device to download and apply changes to the configuration.\n\nApplying changes for a specific device requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/devices/{deviceId}/actions/applyChanges/invoke") + req.PathParam("deviceId", deviceId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&deviceId, "device-id", "", "Unique identifier for the device.") + cmd.MarkFlagRequired("device-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Apply changes for a device in this organization.") + deviceCallCmd.AddCommand(cmd) + } + + { // get-settings + var deviceId string + var orgId string + var deviceModel string + cmd := &cobra.Command{ + Use: "get-settings", + Short: "Get Device Settings", + Long: "Get override settings for a device.\n\nDevice settings lists all the applicable settings for MPP, ATA and Wifi devices at the device level. An admin can also modify the settings. DECT devices do not support settings at the device level.\n\nThis requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/devices/{deviceId}/settings") + req.PathParam("deviceId", deviceId) + req.QueryParam("orgId", orgId) + req.QueryParam("deviceModel", deviceModel) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&deviceId, "device-id", "", "Unique identifier for the device.") + cmd.MarkFlagRequired("device-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Settings on the device in this organization.") + cmd.Flags().StringVar(&deviceModel, "device-model", "", "The model type of the device. The corresponding device model display name sometimes called the product name, can also be used to specify the model.") + deviceCallCmd.AddCommand(cmd) + } + + { // update-settings + var deviceId string + var orgId string + var deviceModel string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-settings", + Short: "Update device settings", + Long: "Modify override settings for a device.\n\nDevice settings list all the applicable settings for an MPP and an ATA devices at the device level. Admins can also modify the settings. NOTE: DECT devices do not support settings at the device level.\n\nUpdating settings on the device requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/devices/{deviceId}/settings") + req.PathParam("deviceId", deviceId) + req.QueryParam("orgId", orgId) + req.QueryParam("deviceModel", deviceModel) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&deviceId, "device-id", "", "Unique identifier for the device.") + cmd.MarkFlagRequired("device-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization in which the device resides..") + cmd.Flags().StringVar(&deviceModel, "device-model", "", "The model type of the device. The corresponding device model display name sometimes called the product name, can also be used to specify the model.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // get-location-settings + var locationId string + var orgId string + cmd := &cobra.Command{ + Use: "get-location-settings", + Short: "Get Location Device Settings", + Long: "Get device override settings for a location.\n\nThis requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/devices/settings") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Unique identifier for the location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization in which the device resides.") + deviceCallCmd.AddCommand(cmd) + } + + { // get-webex-calling + var deviceId string + var orgId string + cmd := &cobra.Command{ + Use: "get-webex-calling", + Short: "Get Webex Calling Device Details", + Long: "
Not supported for Webex for Government (FedRAMP)
\n\nRetrieves Webex Calling device details that include information needed for third-party device management.\n\nWebex calling devices are associated with a specific user Workspace or Virtual Line. Webex Calling devices share the location with the entity that owns them.\n\nPerson or workspace to which the device is assigned. Its fields point to a primary line/port of the device.\n\nRequires a full, location, user, or read-only admin auth token with the scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/devices/{deviceId}") + req.PathParam("deviceId", deviceId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&deviceId, "device-id", "", "Unique identifier for the device.") + cmd.MarkFlagRequired("device-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the device resides.") + deviceCallCmd.AddCommand(cmd) + } + + { // update-third-party + var deviceId string + var orgId string + var sipPassword string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-third-party", + Short: "Update Third Party Device", + Long: "
Not supported for Webex for Government (FedRAMP)
\n\nModify a device's `sipPassword`.\n\nUpdating `sipPassword` on the device requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/devices/{deviceId}") + req.PathParam("deviceId", deviceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("sipPassword", sipPassword) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&deviceId, "device-id", "", "Unique identifier for the device.") + cmd.MarkFlagRequired("device-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the device resides.") + cmd.Flags().StringVar(&sipPassword, "sip-password", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // get-person + var personId string + var orgId string + cmd := &cobra.Command{ + Use: "get-person", + Short: "Get Person Devices", + Long: "Get all devices for a person.\n\nThis requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/{personId}/devices") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Person for whom to retrieve devices.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization to which the person belongs.") + deviceCallCmd.AddCommand(cmd) + } + + { // update-hoteling-settings-person-primary + var personId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-hoteling-settings-person-primary", + Short: "Modify Hoteling Settings for a Person's Primary Devices", + Long: "Modify hoteling login configuration on a person's Webex Calling Devices which are in effect when the device is the user's primary device and device type is PRIMARY. To view the current hoteling login settings, see the `hoteling` field in [Get Person Devices](/docs/api/v1/device-call-settings/get-person-devices).\n\nModifying devices for a person requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/{personId}/devices/settings/hoteling") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "ID of the person associated with the device.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization to which the person belongs.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // get-workspace + var workspaceId string + var orgId string + cmd := &cobra.Command{ + Use: "get-workspace", + Short: "Get Workspace Devices", + Long: "Get all devices for a workspace.\n\nThis requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/workspaces/{workspaceId}/devices") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "ID of the workspace for which to retrieve devices.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization to which the workspace belongs.") + deviceCallCmd.AddCommand(cmd) + } + + { // update-workspace + var workspaceId string + var orgId string + var enabled bool + var limitGuestUse bool + var guestHoursLimit int64 + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-workspace", + Short: "Modify Workspace Devices", + Long: "Modify devices for a workspace.\n\nModifying devices for a workspace requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/workspaces/{workspaceId}/devices") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + req.BodyBool("limitGuestUse", limitGuestUse, cmd.Flags().Changed("limit-guest-use")) + req.BodyInt("guestHoursLimit", guestHoursLimit, cmd.Flags().Changed("guest-hours-limit")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "ID of the workspace for which to modify devices.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization to which the workspace belongs.") + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().BoolVar(&limitGuestUse, "limit-guest-use", false, "") + cmd.Flags().Int64Var(&guestHoursLimit, "guest-hours-limit", 0, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // list-supported + var orgId string + var allowConfigureLayoutEnabled string + var typeVal string + cmd := &cobra.Command{ + Use: "list-supported", + Short: "Read the List of Supported Devices", + Long: "Gets the list of supported devices for an organization.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/supportedDevices") + req.QueryParam("orgId", orgId) + req.QueryParam("allowConfigureLayoutEnabled", allowConfigureLayoutEnabled) + req.QueryParam("type", typeVal) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List supported devices for an organization.") + cmd.Flags().StringVar(&allowConfigureLayoutEnabled, "allow-configure-layout-enabled", "", "List supported devices that allow the user to configure the layout.") + cmd.Flags().StringVar(&typeVal, "type", "", "List supported devices of a specific type. To excluded device types from a request or query, add `type=not:DEVICE_TYPE`. For example, `type=not:MPP`.") + deviceCallCmd.AddCommand(cmd) + } + + { // get-override-settings + var orgId string + cmd := &cobra.Command{ + Use: "get-override-settings", + Short: "Read the device override settings for a organization", + Long: "Get device override settings for an organization.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/devices/settings") + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List supported devices for an organization.") + deviceCallCmd.AddCommand(cmd) + } + + { // create-line-key-template + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-line-key-template", + Short: "Create a Line Key Template", + Long: "Create a Line Key Template in this organization.\n\nLine Keys, also known as Programmable Line Keys (PLK), are the keys found on either side of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows customers to create a `Line Key Template` for a device model.\n\nCreating a Line Key Template requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/devices/lineKeyTemplates") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization to which the line key template belongs.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // list-line-key-templates + var orgId string + cmd := &cobra.Command{ + Use: "list-line-key-templates", + Short: "Read the list of Line Key Templates", + Long: "List all Line Key Templates available for this organization.\n\nLine Keys also known as Programmable Line Keys (PLK) are the keys found on either sides of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to retrieve the list of Line Key Templates that are available for the organization.\n\nRetrieving this list requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/devices/lineKeyTemplates") + req.QueryParam("orgId", orgId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List line key templates for this organization.") + deviceCallCmd.AddCommand(cmd) + } + + { // get-line-key-template + var templateId string + var orgId string + cmd := &cobra.Command{ + Use: "get-line-key-template", + Short: "Get details of a Line Key Template", + Long: "Get detailed information about a Line Key Template by template ID in an organization.\n\nLine Keys, also known as Programmable Line Keys (PLK), are the keys found on either side of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to retrieve a line key template by its ID in an organization.\n\nRetrieving a line key template requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/devices/lineKeyTemplates/{templateId}") + req.PathParam("templateId", templateId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&templateId, "template-id", "", "Get line key template for this template ID.") + cmd.MarkFlagRequired("template-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve a line key template for this organization.") + deviceCallCmd.AddCommand(cmd) + } + + { // update-line-key-template + var templateId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-line-key-template", + Short: "Modify a Line Key Template", + Long: "Modify a Line Key Template by its template ID in an organization.\n\nLine Keys, also known as Programmable Line Keys (PLK), are the keys found on either side of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to modify an existing Line Key Template by its ID in an organization.\n\nModifying an existing Line Key Template requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/devices/lineKeyTemplates/{templateId}") + req.PathParam("templateId", templateId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&templateId, "template-id", "", "Modify line key template with this template ID.") + cmd.MarkFlagRequired("template-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Modify a line key template for this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // delete-line-key-template + var templateId string + var orgId string + cmd := &cobra.Command{ + Use: "delete-line-key-template", + Short: "Delete a Line Key Template", + Long: "Delete a Line Key Template by its template ID in an organization.\n\nLine Keys also known as Programmable Line Keys (PLK) are the keys found on either sides of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to delete an existing Line Key Templates by its ID in an organization.\n\nDeleting an existing line key template requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/devices/lineKeyTemplates/{templateId}") + req.PathParam("templateId", templateId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&templateId, "template-id", "", "Delete line key template with this template ID.") + cmd.MarkFlagRequired("template-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Delete a line key template for this organization.") + deviceCallCmd.AddCommand(cmd) + } + + { // preview-apply-line-key-template + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "preview-apply-line-key-template", + Short: "Preview Apply Line Key Template", + Long: "Preview the number of devices that will be affected by the application of a Line Key Template or when resetting devices to their factory Line Key settings.\n\nLine Keys, also known as Programmable Line Keys (PLK), are the keys found on either side of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to preview the number of devices that will be affected if a customer were to apply a Line Key Template or apply factory default Line Key settings to devices.\n\nRetrieving the number of devices affected requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/devices/actions/previewApplyLineKeyTemplate/invoke") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Preview Line Key Template for this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // apply-line-key-template + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "apply-line-key-template", + Short: "Apply a Line Key Template", + Long: "Apply a Line Key Template or reset devices to their factory Line Key settings.\n\nLine Keys, also known as Programmable Line Keys (PLK), are the keys found on either side of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to apply a line key template or apply factory default Line Key settings to devices in a set of locations or across all locations in the organization.\n\nApplying a Line Key Template or resetting devices to their default Line Key configuration requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/jobs/devices/applyLineKeyTemplate") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Apply Line Key Template for this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // list-apply-line-key-template-jobs + var orgId string + cmd := &cobra.Command{ + Use: "list-apply-line-key-template-jobs", + Short: "Get List of Apply Line Key Template jobs", + Long: "Get the list of all apply line key templates jobs in an organization.\n\nLine Keys also known as Programmable Line Keys (PLK) are the keys found on either sides of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to retrieve all the apply line key templates jobs in an organization.\n\nRetrieving the list of apply line key templates jobs in an organization requires a full, user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/jobs/devices/applyLineKeyTemplate") + req.QueryParam("orgId", orgId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve list of line key templates jobs in this organization.") + deviceCallCmd.AddCommand(cmd) + } + + { // get-job-status-apply-line-key-template-job + var jobId string + var orgId string + cmd := &cobra.Command{ + Use: "get-job-status-apply-line-key-template-job", + Short: "Get the job status of an Apply Line Key Template job", + Long: "Get the status of an apply line key template job by its job ID.\n\nLine Keys also known as Programmable Line Keys (PLK) are the keys found on either sides of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to check the status of an apply line key templates job by job ID in an organization.\n\nChecking the the status of an apply line key templates job in an organization requires a full, user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/jobs/devices/applyLineKeyTemplate/{jobId}") + req.PathParam("jobId", jobId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&jobId, "job-id", "", "Retrieve job status for this `jobId`.") + cmd.MarkFlagRequired("job-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Check a line key template job status in this organization.") + deviceCallCmd.AddCommand(cmd) + } + + { // get-job-errors-apply-line-key-template-job + var jobId string + var orgId string + cmd := &cobra.Command{ + Use: "get-job-errors-apply-line-key-template-job", + Short: "Get job errors for an Apply Line Key Template job", + Long: "GET job errors for an apply Line Key Template job in an organization.\n\nLine Keys also known as Programmable Line Keys (PLK) are the keys found on either sides of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to retrieve all the errors of an apply line key templates job by job ID in an organization.\n\nRetrieving all the errors of an apply line key templates job in an organization requires a full, user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/jobs/devices/applyLineKeyTemplate/{jobId}/errors") + req.PathParam("jobId", jobId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&jobId, "job-id", "", "Retrieve job errors for this `jobId`.") + cmd.MarkFlagRequired("job-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve list of errors for an apply line key template job in this organization.") + deviceCallCmd.AddCommand(cmd) + } + + { // get-dect-type-list-deprecated + var orgId string + cmd := &cobra.Command{ + Use: "get-dect-type-list-deprecated", + Short: "Read the DECT device type list - Deprecated", + Long: "
Not supported for Webex for Government (FedRAMP).
\n\n
The REST path for this API has changed to [GET /telephony/config/devices/dectNetworks/supportedDevices{?orgId}]. The use of this old REST path is deprecated and will be decommissioned on October 10, 2024. Please start using it for all future projects.
\n\nGet DECT device type list with base stations and line ports supported count. This is a static list.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/devices/dects/supportedDevices") + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "") + deviceCallCmd.AddCommand(cmd) + } + + { // get-dect-type-list + var orgId string + cmd := &cobra.Command{ + Use: "get-dect-type-list", + Short: "Read the DECT device type list", + Long: "
Not supported for Webex for Government (FedRAMP).
\n\nGet DECT device type list with base stations and line ports supported count. This is a static list.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/devices/dectNetworks/supportedDevices") + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "") + deviceCallCmd.AddCommand(cmd) + } + + { // validate-list-mac-address + var orgId string + var macs []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "validate-list-mac-address", + Short: "Validate a list of MAC address", + Long: "Validate a list of MAC addresses.\n\nValidating this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/devices/actions/validateMacs/invoke") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("macs", macs) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Validate the mac address(es) for this organization.") + cmd.Flags().StringSliceVar(&macs, "macs", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // update-settings-across-org-location-job + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-settings-across-org-location-job", + Short: "Change Device Settings Across Organization Or Location Job", + Long: "Change device settings across organization or locations jobs.\n\nPerforms bulk and asynchronous processing for all types of device settings initiated by organization and system admins in a stateful persistent manner. This job will modify the requested device settings across all the devices. Whenever a location ID is specified in the request, it will modify the requested device settings only for the devices that are part of the provided location within an organization.\n\nReturns a unique job ID which can then be utilized further to retrieve status and errors for the same.\n\nOnly one job per customer can be running at any given time within the same organization. An attempt to run multiple jobs at the same time will result in a 409 error response.\n\nRunning a job requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/jobs/devices/callDeviceSettings") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Apply change device settings for all the devices under this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // list-change-settings-jobs + var orgId string + var start string + var max string + cmd := &cobra.Command{ + Use: "list-change-settings-jobs", + Short: "List Change Device Settings Jobs", + Long: "List change device settings jobs.\n\nLists all the jobs for jobType `calldevicesettings` for the given organization in order of most recent one to oldest one irrespective of its status.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/jobs/devices/callDeviceSettings") + req.QueryParam("orgId", orgId) + req.QueryParam("start", start) + req.QueryParam("max", max) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve list of 'calldevicesettings' jobs for this organization.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of jobs. Default is 0.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of jobs returned to this maximum count. Default is 2000.") + deviceCallCmd.AddCommand(cmd) + } + + { // get-change-settings-job-status + var jobId string + cmd := &cobra.Command{ + Use: "get-change-settings-job-status", + Short: "Get Change Device Settings Job Status", + Long: "Get change device settings job status.\n\nProvides details of the job with `jobId` of `jobType` `calldevicesettings`.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/jobs/devices/callDeviceSettings/{jobId}") + req.PathParam("jobId", jobId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&jobId, "job-id", "", "Retrieve job details for this `jobId`.") + cmd.MarkFlagRequired("job-id") + deviceCallCmd.AddCommand(cmd) + } + + { // list-change-settings-job-errors + var jobId string + var orgId string + var start string + var max string + cmd := &cobra.Command{ + Use: "list-change-settings-job-errors", + Short: "List Change Device Settings Job Errors", + Long: "List change device settings job errors.\n\nLists all error details of the job with `jobId` of `jobType` `calldevicesettings`.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/jobs/devices/callDeviceSettings/{jobId}/errors") + req.PathParam("jobId", jobId) + req.QueryParam("orgId", orgId) + req.QueryParam("start", start) + req.QueryParam("max", max) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&jobId, "job-id", "", "Retrieve job details for this `jobId`.") + cmd.MarkFlagRequired("job-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve list of jobs for this organization.") + cmd.Flags().StringVar(&start, "start", "", "Specifies the offset from the first result that you want to fetch. Default is 0.") + cmd.Flags().StringVar(&max, "max", "", "Specifies the maximum number of records that you want to fetch. Default is 2000") + deviceCallCmd.AddCommand(cmd) + } + + { // get-layout-id + var deviceId string + var orgId string + cmd := &cobra.Command{ + Use: "get-layout-id", + Short: "Get Device Layout by Device ID", + Long: "Get layout information of a device by device ID in an organization.\n\nDevice layout customizes a user\u2019s programmable line keys (PLK) on the phone and any attached Key Expansion Modules (KEM) with the existing configured line members and the user\u2019s monitoring list.\n\nThis API requires a full or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/devices/{deviceId}/layout") + req.PathParam("deviceId", deviceId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&deviceId, "device-id", "", "Get device layout for this device ID.") + cmd.MarkFlagRequired("device-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve a device layout for the device in this organization.") + deviceCallCmd.AddCommand(cmd) + } + + { // update-layout-id + var deviceId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-layout-id", + Short: "Modify Device Layout by Device ID", + Long: "Modify the layout of a device by device ID in an organization.\n\nDevice layout customizes a user\u2019s programmable line keys (PLK) on the phone and any attached Key Expansion Modules (KEM) with the existing configured line members and the user\u2019s monitoring list.\n\nThis API requires a full or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/devices/{deviceId}/layout") + req.PathParam("deviceId", deviceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&deviceId, "device-id", "", "Modify device layout for this device ID.") + cmd.MarkFlagRequired("device-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Modify a device layout for the device in this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // rebuild-phones-configuration + var orgId string + var locationId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "rebuild-phones-configuration", + Short: "Rebuild Phones Configuration", + Long: "
Not supported for Webex for Government (FedRAMP)
.\n\nRebuild all phone configurations for the specified location.\n\nRebuild phones jobs are used when there is a change in the network configuration of phones in a location, i.e. a change in the network configuration of devices in a location from public to private and vice-versa.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/jobs/devices/rebuildPhones") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("locationId", locationId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Rebuild phones for this organization.") + cmd.Flags().StringVar(&locationId, "location-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // list-rebuild-phones-jobs + var orgId string + cmd := &cobra.Command{ + Use: "list-rebuild-phones-jobs", + Short: "List Rebuild Phones Jobs", + Long: "
Not supported for Webex for Government (FedRAMP)
.\n\nGet the list of all Rebuild Phones jobs in an organization.\n\nRebuild phones jobs are used when there is a change in the network configuration of phones in a location, i.e. a change in the network configuration of devices in a location from public to private and vice-versa.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/jobs/devices/rebuildPhones") + req.QueryParam("orgId", orgId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List of rebuild phones jobs in this organization.") + deviceCallCmd.AddCommand(cmd) + } + + { // get-job-status-rebuild-phones-job + var jobId string + var orgId string + cmd := &cobra.Command{ + Use: "get-job-status-rebuild-phones-job", + Short: "Get the Job Status of a Rebuild Phones Job", + Long: "
Not supported for Webex for Government (FedRAMP)
.\n\nGet the details of a rebuild phones job by its job ID.\n\nRebuild phones jobs are used when there is a change in the network configuration of phones in a location, i.e. a change in the network configuration of devices in a location from public to private and vice-versa.\n\nThis API requires requires a full administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/jobs/devices/rebuildPhones/{jobId}") + req.PathParam("jobId", jobId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&jobId, "job-id", "", "Retrieve job status for this `jobId`.") + cmd.MarkFlagRequired("job-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Check a rebuild phones job status in this organization.") + deviceCallCmd.AddCommand(cmd) + } + + { // get-job-errors-rebuild-phones-job + var jobId string + var orgId string + cmd := &cobra.Command{ + Use: "get-job-errors-rebuild-phones-job", + Short: "Get Job Errors for a Rebuild Phones Job", + Long: "
Not supported for Webex for Government (FedRAMP)
.\n\nGet errors for a rebuild phones job in an organization.\n\nRebuild phones jobs are used when there is a change in the network configuration of phones in a location, i.e. a change in the network configuration of devices in a location from public to private and vice-versa.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/jobs/devices/rebuildPhones/{jobId}/errors") + req.PathParam("jobId", jobId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&jobId, "job-id", "", "Retrieve job errors for this `jobId`.") + cmd.MarkFlagRequired("job-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve list of errors for a rebuild phones job in this organization.") + deviceCallCmd.AddCommand(cmd) + } + + { // get-settings-person + var personId string + var orgId string + cmd := &cobra.Command{ + Use: "get-settings-person", + Short: "Get Device Settings for a Person", + Long: "Device settings list the compression settings for a person.\n\nDevice settings customize a device's behavior and performance. The compression field optimizes call quality for inbound and outbound calls.\n\nThis API requires a full, location, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/{personId}/devices/settings") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "ID of the person for whom to retrieve device settings.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieves the device settings for a person in this organization.") + deviceCallCmd.AddCommand(cmd) + } + + { // update-settings-person + var personId string + var orgId string + var compression string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-settings-person", + Short: "Update Device Settings for a Person", + Long: "Update device settings modifies the compression settings for a person.\n\nDevice settings customize a device's behavior and performance. The compression field optimizes call quality for inbound and outbound calls.\n\nThis API requires a full, location, or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/{personId}/devices/settings") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("compression", compression) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "ID of the person for whom to update device settings.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Modify device settings for a person in this organization.") + cmd.Flags().StringVar(&compression, "compression", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // get-settings-workspace + var workspaceId string + var orgId string + cmd := &cobra.Command{ + Use: "get-settings-workspace", + Short: "Get Device Settings for a Workspace", + Long: "Device settings list the compression settings for a workspace.\n\nDevice settings customize a device's behavior and performance. The compression field optimizes call quality for inbound and outbound calls.\n\nThis API requires a full, location, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/workspaces/{workspaceId}/devices/settings") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "ID of the workspace for which to retrieve device settings.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieves the device settings for a workspace in this organization.") + deviceCallCmd.AddCommand(cmd) + } + + { // update-settings-workspace + var workspaceId string + var orgId string + var compression string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-settings-workspace", + Short: "Update Device Settings for a Workspace", + Long: "Update device settings modifies the compression settings for a workspace.\n\nDevice settings customize a device's behavior and performance. The compression field optimizes call quality for inbound and outbound calls.\n\nThis API requires a full, location, or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/workspaces/{workspaceId}/devices/settings") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("compression", compression) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "ID of the workspace for which to update device settings.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Modify the device settings for a workspace in this organization.") + cmd.Flags().StringVar(&compression, "compression", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // list-background-images + var orgId string + cmd := &cobra.Command{ + Use: "list-background-images", + Short: "Read the List of Background Images", + Long: "Gets the list of device background images for an organization.\n\nWebex Calling supports the upload of up to 100 background image files for each org. These image files can then be referenced by MPP phones in that org for use as their background image.\n\nRetrieving this list requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/devices/backgroundImages") + req.QueryParam("orgId", orgId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieves the list of images in this organization.") + deviceCallCmd.AddCommand(cmd) + } + + { // delete-background-images + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "delete-background-images", + Short: "Delete Device Background Images", + Long: "Delete the list of designated device background images for an organization. Maximum is 10 images per request.\n\nDeleting a device background image requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/devices/backgroundImages") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Deletes the list of images in this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // upload-background-image + var deviceId string + var orgId string + cmd := &cobra.Command{ + Use: "upload-background-image", + Short: "Upload a Device Background Image", + Long: "Configure a device's background image by uploading an image with file format, `.jpeg` or `.png`, encoded image file. Maximum image file size allowed to upload is 625 KB.\n\nThe request must be a multipart/form-data request rather than JSON, using the image/jpeg or image/png content-type.\n\nWebex Calling supports the upload of up to 100 background image files for each org. These image files can then be referenced by MPP phones in that org for use as their background image.\n\nUploading a device background image requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**WARNING:** This API is not callable using the developer portal web interface due to the lack of support for multipart POST. This API can be utilized using other tools that support multipart POST, such as Postman.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/devices/{deviceId}/actions/backgroundImageUpload/invoke") + req.PathParam("deviceId", deviceId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&deviceId, "device-id", "", "Unique identifier for the device.") + cmd.MarkFlagRequired("device-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Uploads the image in this organization.") + deviceCallCmd.AddCommand(cmd) + } + + { // get-user-count + var personId string + var orgId string + cmd := &cobra.Command{ + Use: "get-user-count", + Short: "Get User Devices Count", + Long: "Get the total device and application count for a person.\n\nThe device count can be used to determine if more devices can be added for users with a device count limit. For example, users with standard calling licenses can only have one physical device.\n\nThis requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/{personId}/devices/count") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Person for whom to retrieve the device count.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization to which the person belongs.") + deviceCallCmd.AddCommand(cmd) + } + + { // get-count-members + var deviceId string + var orgId string + var memberName string + var phoneNumber string + var locationId string + var extension string + var usageType string + cmd := &cobra.Command{ + Use: "get-count-members", + Short: "Get Count of Members", + Long: "Get the count of members that can be assigned to the device.\n\nA device member can be either a person or a workspace.\n\nThis requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/devices/{deviceId}/availableMembers/count") + req.PathParam("deviceId", deviceId) + req.QueryParam("orgId", orgId) + req.QueryParam("memberName", memberName) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("locationId", locationId) + req.QueryParam("extension", extension) + req.QueryParam("usageType", usageType) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&deviceId, "device-id", "", "Unique identifier for the device.") + cmd.MarkFlagRequired("device-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieves the count of available members on the device in this organization.") + cmd.Flags().StringVar(&memberName, "member-name", "", "Search (Contains) numbers based on member name.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Search (Contains) based on number.") + cmd.Flags().StringVar(&locationId, "location-id", "", "Unique identifier for the location.") + cmd.Flags().StringVar(&extension, "extension", "", "Search (Contains) based on extension.") + cmd.Flags().StringVar(&usageType, "usage-type", "", "Search for members eligible to become the owner of the device, or share line on the device. * `DEVICE_OWNER` - Search for members eligible to become the owner of the device. * `SHARED_LINE` - Search for members eligible to share line on the device.") + deviceCallCmd.AddCommand(cmd) + } + + { // get-count-available-members + var orgId string + var memberName string + var phoneNumber string + var locationId string + var extension string + var usageType string + var excludeVirtualLine string + var deviceLocationId string + cmd := &cobra.Command{ + Use: "get-count-available-members", + Short: "Get Count of Available Members", + Long: "Get the count of members that can be assigned to devices.\n\nA device member can be either a person or a workspace.\n\nThis requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/devices/availableMembers/count") + req.QueryParam("orgId", orgId) + req.QueryParam("memberName", memberName) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("locationId", locationId) + req.QueryParam("extension", extension) + req.QueryParam("usageType", usageType) + req.QueryParam("excludeVirtualLine", excludeVirtualLine) + req.QueryParam("deviceLocationId", deviceLocationId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieves the count of available members in this organization.") + cmd.Flags().StringVar(&memberName, "member-name", "", "Search (Contains) numbers based on member name.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Search (Contains) based on number.") + cmd.Flags().StringVar(&locationId, "location-id", "", "Unique identifier for the location.") + cmd.Flags().StringVar(&extension, "extension", "", "Search (Contains) based on extension.") + cmd.Flags().StringVar(&usageType, "usage-type", "", "Search for members eligible to become the owner of the device, or share line on the device. * `DEVICE_OWNER` - Search for members eligible to become the owner of the device. * `SHARED_LINE` - Search for members eligible to share line on the device.") + cmd.Flags().StringVar(&excludeVirtualLine, "exclude-virtual-line", "", "If true, filters out virtual lines from the available members list.") + cmd.Flags().StringVar(&deviceLocationId, "device-location-id", "", "Unique identifier for the device's location. When specified, filters available members to those in the same location as the device.") + deviceCallCmd.AddCommand(cmd) + } + + { // list-supported-2 + var orgId string + var allowConfigureLayoutEnabled string + var typeVal string + cmd := &cobra.Command{ + Use: "list-supported-2", + Short: "Read the List of Supported Devices", + Long: "Gets the list of supported devices for an organization.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/supportedDevices") + req.QueryParam("orgId", orgId) + req.QueryParam("allowConfigureLayoutEnabled", allowConfigureLayoutEnabled) + req.QueryParam("type", typeVal) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List supported devices for an organization.") + cmd.Flags().StringVar(&allowConfigureLayoutEnabled, "allow-configure-layout-enabled", "", "List supported devices that allow the user to configure the layout.") + cmd.Flags().StringVar(&typeVal, "type", "", "List supported devices of a specific type. To excluded device types from a request or query, add `type=not:DEVICE_TYPE`. For example, `type=not:MPP`.") + deviceCallCmd.AddCommand(cmd) + } + + { // get-validation-schema + var orgId string + var familyOrModelDisplayName string + cmd := &cobra.Command{ + Use: "get-validation-schema", + Short: "Get Validation Schema", + Long: "This API returns the validation schema for `tags` of all or specific `familyOrModelDisplayName`.\n\nThe schema is used to validate the `tag` for devices in the `Webex Calling` platform. The schema includes information about the required fields, data types, and validation rules for each setting.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/devices/dynamicSettings/validationSchema") + req.QueryParam("orgId", orgId) + req.QueryParam("familyOrModelDisplayName", familyOrModelDisplayName) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Validation schema for devices in this organization.") + cmd.Flags().StringVar(&familyOrModelDisplayName, "family-or-model-display-name", "", "Device family or model display name to filter the schema.") + deviceCallCmd.AddCommand(cmd) + } + + { // get-settings-groups + var orgId string + var familyOrModelDisplayName string + var includeSettingsType string + cmd := &cobra.Command{ + Use: "get-settings-groups", + Short: "Get Settings Groups", + Long: "This API returns the `settingsGroups` that define the structure and association of tags for dynamic device settings.\n\n The `settingsGroups` are used to organize the tags into logical groups, making it easier to manage and configure dynamic device settings.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/devices/dynamicSettings/settingsGroups") + req.QueryParam("orgId", orgId) + req.QueryParam("familyOrModelDisplayName", familyOrModelDisplayName) + req.QueryParam("includeSettingsType", includeSettingsType) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Settings groups for devices in this organization.") + cmd.Flags().StringVar(&familyOrModelDisplayName, "family-or-model-display-name", "", "Device family or model display name to filter the `settingsGroups`.") + cmd.Flags().StringVar(&includeSettingsType, "include-settings-type", "", "To show groups or tabs or both. Query param is case insensitive. Default is `ALL`.") + deviceCallCmd.AddCommand(cmd) + } + + { // get-customer-dynamic-settings + var orgId string + var familyOrModelDisplayName string + var tags []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "get-customer-dynamic-settings", + Short: "Get Customer Device Dynamic Settings", + Long: "Retrieve dynamic settings for specific device tags at customer level, allowing filters by `familyOrModelDisplayName` and `tag` identifier.\n\nThis API lets you request the values of multiple `Device Settings` at once by specifying a list of `familyOrModelDisplayName` and tag combinations.\n\nThis requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/lists/devices/dynamicSettings/actions/getSettings/invoke") + req.QueryParam("orgId", orgId) + req.QueryParam("familyOrModelDisplayName", familyOrModelDisplayName) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("tags", tags) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List of device dynamic settings in this organization.") + cmd.Flags().StringVar(&familyOrModelDisplayName, "family-or-model-display-name", "", "(Required) The family or model name for the device. If no tag is specified, all tags related to `familyOrModelDisplayName` are returned.") + cmd.Flags().StringSliceVar(&tags, "tags", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // get-location-dynamic-settings + var locationId string + var orgId string + var familyOrModelDisplayName string + var tags []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "get-location-dynamic-settings", + Short: "Get Location Device Dynamic Settings", + Long: "Retrieve dynamic settings for specific device tags at the specified location level, allowing filters by `familyOrModelDisplayName` and `tag` identifier.\n\nThis API lets you request the values of multiple `Device Settings` at once by specifying a list of `familyOrModelDisplayName` and tag combinations for a specific location.\n\nThis requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/lists/locations/{locationId}/devices/dynamicSettings/actions/getSettings/invoke") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + req.QueryParam("familyOrModelDisplayName", familyOrModelDisplayName) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("tags", tags) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "(Required) Unique identifier for the `location`.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Unique identifier for the `organization` to which this location belongs.") + cmd.Flags().StringVar(&familyOrModelDisplayName, "family-or-model-display-name", "", "(Required) The family or model name for the device. If no tag is specified, all tags related to `familyOrModelDisplayName` are returned.") + cmd.Flags().StringSliceVar(&tags, "tags", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // get-dynamic-settings + var deviceId string + var orgId string + var tags []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "get-dynamic-settings", + Short: "Get Device Dynamic Settings", + Long: "Retrieve settings for a specified device.\n\nThis API retrieves device settings based on the specified `tags`; if the `tags` field is empty or missing, all settings for the device are returned.\n\nThis requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/lists/devices/{deviceId}/dynamicSettings/actions/getSettings/invoke") + req.PathParam("deviceId", deviceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("tags", tags) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&deviceId, "device-id", "", "(Required) Device for which to retrieve settings.") + cmd.MarkFlagRequired("device-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization to which the `device` belongs.") + cmd.Flags().StringSliceVar(&tags, "tags", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // update-specified-settings + var deviceId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-specified-settings", + Short: "Update specified settings for the device.", + Long: "Modify dynamic settings for a specified device.\n\nThis API updates device settings based on the specified `tags`. If the `tags` field is empty, the request has no effect.\n\nThis requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/devices/{deviceId}/dynamicSettings") + req.PathParam("deviceId", deviceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&deviceId, "device-id", "", "(Required) Device for which to update settings.") + cmd.MarkFlagRequired("device-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization to which the device belongs.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // updates-dynamic-settings-across-org-location + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "updates-dynamic-settings-across-org-location", + Short: "Updates dynamic Device Settings Across Organization Or Location", + Long: "Creates a job to update device settings at location or organization level.\n\nThe job runs asynchronously and persistently, applying the requested settings in bulk to all relevant devices, which may belong to multiple families as specified in the request. If a `locationId` is provided, only devices in that location are affected.\n\nA unique job ID is returned to track status and errors.\n\nOnly one job can run per customer per organization at a time. Additionally, this job cannot run in parallel with other device jobs such as [Call device settings](/docs/api/v1/device-call-settings/change-device-settings-across-organization-or-location-job) and [Rebuild Phones](/docs/api/v1/device-call-settings/rebuild-phones-configuration).\n\nRunning a job requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/jobs/devices/dynamicDeviceSettings") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Apply update dynamic device settings for all the devices under this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // list-dynamic-settings-jobs + var orgId string + var start string + var max string + cmd := &cobra.Command{ + Use: "list-dynamic-settings-jobs", + Short: "List dynamic device Settings Jobs", + Long: "List dynamic device settings jobs.\n\nLists all the jobs for job type `dynamicdevicesettings` for the given organization in order of most recent one to oldest one irrespective of its status.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/jobs/devices/dynamicDeviceSettings") + req.QueryParam("orgId", orgId) + req.QueryParam("start", start) + req.QueryParam("max", max) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve list of dynamic device settings jobs for this organization.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of jobs. Default is 0.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of jobs returned to this maximum count. Default is 2000.") + deviceCallCmd.AddCommand(cmd) + } + + { // get-dynamic-settings-job-status + var jobId string + cmd := &cobra.Command{ + Use: "get-dynamic-settings-job-status", + Short: "Get Device Dynamic Settings Job Status", + Long: "Get dynamic device settings job status.\n\nProvides details of the job with `jobId` of `jobType` `dynamicdevicesettings`.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/jobs/devices/dynamicDeviceSettings/{jobId}") + req.PathParam("jobId", jobId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&jobId, "job-id", "", "(Required) Retrieve job details for this `jobId`.") + cmd.MarkFlagRequired("job-id") + deviceCallCmd.AddCommand(cmd) + } + + { // list-dynamic-settings-job-errors + var jobId string + var orgId string + var start string + var max string + cmd := &cobra.Command{ + Use: "list-dynamic-settings-job-errors", + Short: "List Dynamic Device Settings Job Errors", + Long: "List Update dynamic device settings job errors.\n\nLists all error details of the job with `jobId` of `jobType` `dynamicdevicesettings`.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/jobs/devices/dynamicDeviceSettings/{jobId}/errors") + req.PathParam("jobId", jobId) + req.QueryParam("orgId", orgId) + req.QueryParam("start", start) + req.QueryParam("max", max) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&jobId, "job-id", "", "(Required) Retrieve job details for this `jobId`.") + cmd.MarkFlagRequired("job-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve the status of job for this organization.") + cmd.Flags().StringVar(&start, "start", "", "Specifies the offset from the first result that you want to fetch. Default is 0.") + cmd.Flags().StringVar(&max, "max", "", "Specifies the maximum number of records that you want to fetch. Default is 2000") + deviceCallCmd.AddCommand(cmd) + } + + { // list-supported-3 + var orgId string + var allowConfigureLayoutEnabled string + var typeVal string + cmd := &cobra.Command{ + Use: "list-supported-3", + Short: "Read the List of Supported Devices", + Long: "Gets the list of supported devices for an organization.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/supportedDevices") + req.QueryParam("orgId", orgId) + req.QueryParam("allowConfigureLayoutEnabled", allowConfigureLayoutEnabled) + req.QueryParam("type", typeVal) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List supported devices for an organization.") + cmd.Flags().StringVar(&allowConfigureLayoutEnabled, "allow-configure-layout-enabled", "", "List supported devices that allow the user to configure the layout.") + cmd.Flags().StringVar(&typeVal, "type", "", "List supported devices of a specific type. To excluded device types from a request or query, add `type=not:DEVICE_TYPE`. For example, `type=not:MPP`.") + deviceCallCmd.AddCommand(cmd) + } + + { // get-settings-groups-2 + var orgId string + var familyOrModelDisplayName string + var includeSettingsType string + cmd := &cobra.Command{ + Use: "get-settings-groups-2", + Short: "Get Settings Groups", + Long: "This API returns the `settingsGroups` that define the structure and association of tags for device dynamic settings.\n\n The `settingsGroups` are used to organize the tags into logical groups, making it easier to manage and configure device dynamic settings.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/devices/dynamicSettings/settingsGroups") + req.QueryParam("orgId", orgId) + req.QueryParam("familyOrModelDisplayName", familyOrModelDisplayName) + req.QueryParam("includeSettingsType", includeSettingsType) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Settings groups for devices in this organization.") + cmd.Flags().StringVar(&familyOrModelDisplayName, "family-or-model-display-name", "", "Device family or model display name to filter the `settingsGroups`.") + cmd.Flags().StringVar(&includeSettingsType, "include-settings-type", "", "To show groups or tabs or both. Query param is case insensitive. Default is `ALL`.") + deviceCallCmd.AddCommand(cmd) + } + + { // get-customer-dynamic-settings-2 + var orgId string + var familyOrModelDisplayName string + var tags []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "get-customer-dynamic-settings-2", + Short: "Get Customer Device Dynamic Settings", + Long: "Retrieve dynamic settings for specific device tags at customer level, allowing filters by `familyOrModelDisplayName` and `tag` identifier.\n\nThis API lets you request the values of multiple `Device Settings` at once by specifying a list of `familyOrModelDisplayName` and tag combinations.\n\nThis requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/lists/devices/dynamicSettings/actions/getSettings/invoke") + req.QueryParam("orgId", orgId) + req.QueryParam("familyOrModelDisplayName", familyOrModelDisplayName) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("tags", tags) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List of device dynamic settings in this organization.") + cmd.Flags().StringVar(&familyOrModelDisplayName, "family-or-model-display-name", "", "The family or model name for the device. If no tag is specified, all tags related to `familyOrModelDisplayName` are returned.") + cmd.Flags().StringSliceVar(&tags, "tags", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // get-location-dynamic-settings-2 + var locationId string + var orgId string + var familyOrModelDisplayName string + var tags []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "get-location-dynamic-settings-2", + Short: "Get Location Device Dynamic Settings", + Long: "Retrieve dynamic settings for specific device tags at the specified location level, allowing filters by `familyOrModelDisplayName` and `tag` identifier.\n\nThis API lets you request the values of multiple `Device Settings` at once by specifying a list of `familyOrModelDisplayName` and tag combinations for a specific location.\n\nThis requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/lists/locations/{locationId}/devices/dynamicSettings/actions/getSettings/invoke") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + req.QueryParam("familyOrModelDisplayName", familyOrModelDisplayName) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("tags", tags) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Unique identifier for the `location`.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Unique identifier for the `organization` to which this location belongs.") + cmd.Flags().StringVar(&familyOrModelDisplayName, "family-or-model-display-name", "", "The family or model name for the device. If no tag is specified, all tags related to `familyOrModelDisplayName` are returned.") + cmd.Flags().StringSliceVar(&tags, "tags", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // get-dynamic-settings-2 + var deviceId string + var orgId string + var tags []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "get-dynamic-settings-2", + Short: "Get Device Dynamic Settings", + Long: "Retrieve settings for a specified device.\n\nThis API retrieves device settings based on the specified `tags`; if the `tags` field is empty or missing, all settings for the device are returned.\n\nThis requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/lists/devices/{deviceId}/dynamicSettings/actions/getSettings/invoke") + req.PathParam("deviceId", deviceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("tags", tags) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&deviceId, "device-id", "", "Device for which to retrieve settings.") + cmd.MarkFlagRequired("device-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization to which the `device` belongs.") + cmd.Flags().StringSliceVar(&tags, "tags", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // update-dynamic-settings + var deviceId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-dynamic-settings", + Short: "Update Device Dynamic Settings", + Long: "Modify dynamic settings for a specified device.\n\nThis API updates device settings based on the specified `tags`. If the `tags` field is empty, the request has no effect.\n\nThis requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/devices/{deviceId}/dynamicSettings") + req.PathParam("deviceId", deviceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&deviceId, "device-id", "", "Device for which to update settings.") + cmd.MarkFlagRequired("device-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization to which the device belongs.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // update-dynamic-settings-across-org-location + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-dynamic-settings-across-org-location", + Short: "Update Device Dynamic Settings Across Organization or Location", + Long: "Creates a job to update device settings at location or organization level.\n\nThe job runs asynchronously and persistently, applying the requested settings in bulk to all relevant devices, which may belong to multiple families as specified in the request. If a `locationId` is provided, only devices in that location are affected.\n\nA unique job ID is returned to track status and errors.\n\nOnly one job can run per customer per organization at a time. Additionally, this job cannot run in parallel with other device jobs such as [Call device settings](/docs/api/v1/device-call-settings/change-device-settings-across-organization-or-location-job) and [Rebuild Phones](/docs/api/v1/device-call-settings/rebuild-phones-configuration).\n\nRunning a job requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/jobs/devices/dynamicDeviceSettings") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Apply update device dynamic settings for all the devices under this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // list-dynamic-settings-jobs-2 + var orgId string + var start string + var max string + cmd := &cobra.Command{ + Use: "list-dynamic-settings-jobs-2", + Short: "List Device Dynamic Settings Jobs", + Long: "List device dynamic settings jobs.\n\nLists all the jobs for job type `dynamicdevicesettings` for the given organization in order of most recent one to oldest one irrespective of its status.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/jobs/devices/dynamicDeviceSettings") + req.QueryParam("orgId", orgId) + req.QueryParam("start", start) + req.QueryParam("max", max) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve list of device dynamic settings jobs for this organization.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of jobs. Default is 0.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of jobs returned to this maximum count. Default is 2000.") + deviceCallCmd.AddCommand(cmd) + } + + { // get-dynamic-settings-job-status-2 + var jobId string + cmd := &cobra.Command{ + Use: "get-dynamic-settings-job-status-2", + Short: "Get Device Dynamic Settings Job Status", + Long: "Get device dynamic settings job status.\n\nProvides details of the job with `jobId` of `jobType` `dynamicdevicesettings`.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/jobs/devices/dynamicDeviceSettings/{jobId}") + req.PathParam("jobId", jobId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&jobId, "job-id", "", "Retrieve job details for this `jobId`.") + cmd.MarkFlagRequired("job-id") + deviceCallCmd.AddCommand(cmd) + } + + { // list-dynamic-settings-job-errors-2 + var jobId string + var orgId string + var start string + var max string + cmd := &cobra.Command{ + Use: "list-dynamic-settings-job-errors-2", + Short: "List Device Dynamic Settings Job Errors", + Long: "List Update device dynamic settings job errors.\n\nLists all error details of the job with `jobId` of `jobType` `dynamicdevicesettings`.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/jobs/devices/dynamicDeviceSettings/{jobId}/errors") + req.PathParam("jobId", jobId) + req.QueryParam("orgId", orgId) + req.QueryParam("start", start) + req.QueryParam("max", max) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&jobId, "job-id", "", "Retrieve job details for this `jobId`.") + cmd.MarkFlagRequired("job-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve the status of job for this organization.") + cmd.Flags().StringVar(&start, "start", "", "Specifies the offset from the first result that you want to fetch. Default is 0.") + cmd.Flags().StringVar(&max, "max", "", "Specifies the maximum number of records that you want to fetch. Default is 2000") + deviceCallCmd.AddCommand(cmd) + } + +} diff --git a/cmd/calling/devices.go b/cmd/calling/devices.go new file mode 100644 index 0000000..1f12824 --- /dev/null +++ b/cmd/calling/devices.go @@ -0,0 +1,298 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package calling + +import ( + "fmt" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strings.Join + +var devicesCmd = &cobra.Command{ + Use: "devices", + Short: "Devices commands", +} + +func init() { + cmd.CallingCmd.AddCommand(devicesCmd) + + { // list + var max string + var start string + var displayName string + var personId string + var workspaceId string + var orgId string + var connectionStatus string + var product string + var typeVal string + var serial string + var tag string + var software string + var upgradeChannel string + var errorCode string + var capability string + var permission string + var locationId string + var workspaceLocationId string + var mac string + var devicePlatform string + var plannedMaintenance string + cmd := &cobra.Command{ + Use: "list", + Short: "List Devices", + Long: "Lists all active Webex devices associated with the authenticated user, such as devices activated in personal mode. This requires the `spark:devices_read` scope. Administrators can list all devices within their organization. This requires an administrator auth token with the `spark-admin:devices_read` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/devices") + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("displayName", displayName) + req.QueryParam("personId", personId) + req.QueryParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + req.QueryParam("connectionStatus", connectionStatus) + req.QueryParam("product", product) + req.QueryParam("type", typeVal) + req.QueryParam("serial", serial) + req.QueryParam("tag", tag) + req.QueryParam("software", software) + req.QueryParam("upgradeChannel", upgradeChannel) + req.QueryParam("errorCode", errorCode) + req.QueryParam("capability", capability) + req.QueryParam("permission", permission) + req.QueryParam("locationId", locationId) + req.QueryParam("workspaceLocationId", workspaceLocationId) + req.QueryParam("mac", mac) + req.QueryParam("devicePlatform", devicePlatform) + req.QueryParam("plannedMaintenance", plannedMaintenance) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&max, "max", "", "Limit the maximum number of devices in the response.") + cmd.Flags().StringVar(&start, "start", "", " Offset. Default is 0. ") + cmd.Flags().StringVar(&displayName, "display-name", "", " List devices with this display name. ") + cmd.Flags().StringVar(&personId, "person-id", "", " List devices by person ID. ") + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", " List devices by workspace ID. ") + cmd.Flags().StringVar(&orgId, "org-id", "", " List devices in this organization. Only admin users of another organization (such as partners) may use this parameter. ") + cmd.Flags().StringVar(&connectionStatus, "connection-status", "", " List devices with this connection status. ") + cmd.Flags().StringVar(&product, "product", "", " List devices with this product name. ") + cmd.Flags().StringVar(&typeVal, "type", "", " List devices with this type. ") + cmd.Flags().StringVar(&serial, "serial", "", " List devices with this serial number. ") + cmd.Flags().StringVar(&tag, "tag", "", " List devices which have a tag. Searching for multiple tags (logical AND) can be done by comma separating the `tag` values or adding several `tag` parameters. ") + cmd.Flags().StringVar(&software, "software", "", " List devices with this software version. ") + cmd.Flags().StringVar(&upgradeChannel, "upgrade-channel", "", " List devices with this upgrade channel. ") + cmd.Flags().StringVar(&errorCode, "error-code", "", " List devices with this error code. ") + cmd.Flags().StringVar(&capability, "capability", "", " List devices with this capability. ") + cmd.Flags().StringVar(&permission, "permission", "", " List devices with this permission. ") + cmd.Flags().StringVar(&locationId, "location-id", "", " List devices by location ID. ") + cmd.Flags().StringVar(&workspaceLocationId, "workspace-location-id", "", " List devices by workspace location ID. Deprecated, prefer `locationId`. ") + cmd.Flags().StringVar(&mac, "mac", "", " List devices with this MAC address. ") + cmd.Flags().StringVar(&devicePlatform, "device-platform", "", " List devices with this device platform. ") + cmd.Flags().StringVar(&plannedMaintenance, "planned-maintenance", "", " List devices with this planned maintenance. ") + devicesCmd.AddCommand(cmd) + } + + { // create-mac-address + var orgId string + var mac string + var model string + var workspaceId string + var personId string + var password string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-mac-address", + Short: "Create a Device by MAC Address", + Long: "Create a phone by its MAC address in a specific workspace or for a person.\n\nSpecify the `mac`, `model` and either `workspaceId` or `personId`.\n\n* You can get the `model` from the [supported devices](/docs/api/v1/device-call-settings/read-the-list-of-supported-devices) API.\n\n* Either `workspaceId` or `personId` should be provided. If both are supplied, the request will be invalid.\n\n* The `password` field is only required for third party devices. You can obtain the required third party phone configuration from [here](/docs/api/v1/beta-device-call-settings-with-third-party-device-support/get-third-party-device).\n\n
Adding a device to a person with a Webex Calling Standard license will disable Webex Calling across their Webex mobile, tablet, desktop, and browser applications.

When adding devices to a Webex Calling Professional licensed person or workspace, wait for each API call to finish before starting the next. This prevents race conditions that can cause errors when assigning primary versus secondary device status.
", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/devices") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("mac", mac) + req.BodyString("model", model) + req.BodyString("workspaceId", workspaceId) + req.BodyString("personId", personId) + req.BodyString("password", password) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "The organization associated with the device. If left empty, the organization associated with the caller will be used.") + cmd.Flags().StringVar(&mac, "mac", "", "") + cmd.Flags().StringVar(&model, "model", "", "") + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "") + cmd.Flags().StringVar(&personId, "person-id", "", "") + cmd.Flags().StringVar(&password, "password", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + devicesCmd.AddCommand(cmd) + } + + { // get + var deviceId string + var orgId string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Device Details", + Long: "Shows details for a device, by ID. This requires an auth token with the `spark:devices_read` scope to see your own device, or `spark-admin:devices_read` to see any other device in your organization.\n\nSpecify the device ID in the `deviceId` parameter in the URI.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/devices/{deviceId}") + req.PathParam("deviceId", deviceId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&deviceId, "device-id", "", " A unique identifier for the device. ") + cmd.MarkFlagRequired("device-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "The organization associated with the device. If left empty, the organization associated with the caller will be used.") + devicesCmd.AddCommand(cmd) + } + + { // delete + var deviceId string + var orgId string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete a Device", + Long: "Deletes a device, by ID. Deleting your own device requires an auth token with the `spark:devices_write` scope. Deleting any other device in the organization will require an administrator auth token with the `spark-admin:devices_write` scope.\n\nSpecify the device ID in the `deviceId` parameter in the URI.\n\n
Deleting a device from a person with a Webex Calling Standard license will enable Webex Calling across their Webex mobile, tablet, desktop, and browser applications.
", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/devices/{deviceId}") + req.PathParam("deviceId", deviceId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&deviceId, "device-id", "", "A unique identifier for the device.") + cmd.MarkFlagRequired("device-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "The organization associated with the device. If left empty, the organization associated with the caller will be used.") + devicesCmd.AddCommand(cmd) + } + + { // update-tags + var deviceId string + var orgId string + var op string + var path string + var value []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-tags", + Short: "Modify Device Tags", + Long: "Create, delete or update tags on a device. For your own device, this requires an auth token with the `spark:devices_write` scope. An auth token with the `spark-admin:devices_write` scope is required to operate on other devices within the organization.\n\nSpecify the device ID in the `deviceId` parameter in the URI.\n\nInclude only the tag array in the request body, no other device attributes can be changed. This action will overwrite any previous tags. A common approach is to first [GET the devices's details](/docs/api/v1/devices/get-device-details), make changes to the `tags` array, and then PATCH the new complete array with this endpoint.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PATCH", "/devices/{deviceId}") + req.PathParam("deviceId", deviceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("op", op) + req.BodyString("path", path) + req.BodyStringSlice("value", value) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&deviceId, "device-id", "", "Unique identifier for the device.") + cmd.MarkFlagRequired("device-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "The organization associated with the device. If left empty, the organization associated with the caller will be used.") + cmd.Flags().StringVar(&op, "op", "", "") + cmd.Flags().StringVar(&path, "path", "", "") + cmd.Flags().StringSliceVar(&value, "value", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + devicesCmd.AddCommand(cmd) + } + + { // create-activation-code + var orgId string + var workspaceId string + var personId string + var model string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-activation-code", + Short: "Create a Device Activation Code", + Long: "Generate an activation code for a device in a specific workspace by `workspaceId` or for a person by `personId`. This requires an auth token with the `spark-admin:devices_write` scope, and either `identity:placeonetimepassword_create` (allows creating activation codes for workspaces only) or `identity:one_time_password` (allows creating activation codes for workspaces or persons).\n\n* Adding a device to a workspace with calling type `none` or `thirdPartySipCalling` will reset the workspace calling type to `freeCalling`.\n\n* Either `workspaceId` or `personId` should be provided. If both are supplied, the request will be invalid.\n\n* If no `model` is supplied, the `code` returned will only be accepted on RoomOS devices.\n\n* If your device is a phone, you must provide the `model` as a field. You can get the `model` from the [supported devices](/docs/api/v1/device-call-settings/read-the-list-of-supported-devices) API.\n\n
Adding a device to a person with a Webex Calling Standard license will disable Webex Calling across their Webex mobile, tablet, desktop, and browser applications.

When adding devices to a Webex Calling Professional licensed person or workspace, wait for each API call to finish before starting the next. This prevents race conditions that can cause errors when assigning primary versus secondary device status.
", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/devices/activationCode") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("workspaceId", workspaceId) + req.BodyString("personId", personId) + req.BodyString("model", model) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "The organization associated with the activation code generated. If left empty, the organization associated with the caller will be used.") + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "") + cmd.Flags().StringVar(&personId, "person-id", "", "") + cmd.Flags().StringVar(&model, "model", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + devicesCmd.AddCommand(cmd) + } + +} diff --git a/cmd/calling/emergency_services.go b/cmd/calling/emergency_services.go new file mode 100644 index 0000000..9d10227 --- /dev/null +++ b/cmd/calling/emergency_services.go @@ -0,0 +1,858 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package calling + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var emergencyServicesCmd = &cobra.Command{ + Use: "emergency-services", + Short: "EmergencyServices commands", +} + +func init() { + cmd.CallingCmd.AddCommand(emergencyServicesCmd) + + { // update-redsky-settings + var orgId string + var enabled bool + var companyId string + var secret string + var externalTenantEnabled bool + var email string + var password string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-redsky-settings", + Short: "Update RedSky Service Settings", + Long: "Update the RedSky service settings.\n\nThe Enhanced Emergency (E911) Service for Webex Calling provides dynamic location support and a network that routes emergency calls to Public Safety Answering Points (PSAP) around the US, its territories, and Canada. E911 services are provided in conjunction with a RedSky account.\n\nUpdating the RedSky service settings requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/redSky/serviceSettings") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + req.BodyString("companyId", companyId) + req.BodyString("secret", secret) + req.BodyBool("externalTenantEnabled", externalTenantEnabled, cmd.Flags().Changed("external-tenant-enabled")) + req.BodyString("email", email) + req.BodyString("password", password) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Update E911 settings for the organization.") + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().StringVar(&companyId, "company-id", "", "") + cmd.Flags().StringVar(&secret, "secret", "", "") + cmd.Flags().BoolVar(&externalTenantEnabled, "external-tenant-enabled", false, "") + cmd.Flags().StringVar(&email, "email", "", "") + cmd.Flags().StringVar(&password, "password", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + emergencyServicesCmd.AddCommand(cmd) + } + + { // create-account-admin-redsky + var orgId string + var email string + var orgPrefix string + var partnerRedskyOrgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-account-admin-redsky", + Short: "Create an Account and Admin in RedSky", + Long: "Create an account and admin in RedSky.\n\nThe Enhanced Emergency (E911) Service for Webex Calling provides dynamic location support and a network that routes emergency calls to Public Safety Answering Points (PSAP) around the US, its territories, and Canada. E911 services are provided in conjunction with a RedSky account.\n\nCreating a RedSky account requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/redSky") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("email", email) + req.BodyString("orgPrefix", orgPrefix) + req.BodyString("partnerRedskyOrgId", partnerRedskyOrgId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Create RedSky account for the organization.") + cmd.Flags().StringVar(&email, "email", "", "") + cmd.Flags().StringVar(&orgPrefix, "org-prefix", "", "") + cmd.Flags().StringVar(&partnerRedskyOrgId, "partner-redsky-org-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + emergencyServicesCmd.AddCommand(cmd) + } + + { // get-redsky-account + var orgId string + cmd := &cobra.Command{ + Use: "get-redsky-account", + Short: "Retrieve RedSky Account Details for an Organization", + Long: "Retrieve RedSky account details for an organization.\n\nThe Enhanced Emergency (E911) Service for Webex Calling provides dynamic location support and a network that routes emergency calls to Public Safety Answering Points (PSAP) around the US, its territories, and Canada. E911 services are provided in conjunction with a RedSky account.\n\nTo retrieve the RedSky account details requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/redSky") + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve RedSky account for the organization.") + emergencyServicesCmd.AddCommand(cmd) + } + + { // update-org-redsky-account-compliance-status + var orgId string + var complianceStatus string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-org-redsky-account-compliance-status", + Short: "Update the Organization RedSky Account's Compliance Status", + Long: "Update the compliance status for the customer's RedSky account.\n\nThe Enhanced Emergency (E911) Service for Webex Calling provides dynamic location support and a network that routes emergency calls to Public Safety Answering Points (PSAP) around the US, its territories, and Canada. E911 services are provided in conjunction with a RedSky account.\n\nUpdating the RedSky account's compliance status requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/redSky/status") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("complianceStatus", complianceStatus) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Update E911 compliance status for the organization.") + cmd.Flags().StringVar(&complianceStatus, "compliance-status", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + emergencyServicesCmd.AddCommand(cmd) + } + + { // get-org-compliance-status-redsky-account + var orgId string + cmd := &cobra.Command{ + Use: "get-org-compliance-status-redsky-account", + Short: "Get the Organization Compliance Status for a RedSky Account", + Long: "Get the organization compliance status for a RedSky account. The `locationStatus.state` in the response will show the state for the location that is in the earliest stage of configuration.\n\nThe enhanced emergency (E911) service for Webex Calling provides an emergency service designed for organizations with a hybrid or nomadic workforce. It provides dynamic location support and a network that routes emergency calls to Public Safety Answering Points (PSAP) around the US, its territories, and Canada.\n\nTo retrieve organization compliance status requires a full, user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/redSky/status") + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve the compliance status for the organization.") + emergencyServicesCmd.AddCommand(cmd) + } + + { // get-org-compliance-status-location-status-list + var orgId string + var start string + var max string + var order string + cmd := &cobra.Command{ + Use: "get-org-compliance-status-location-status-list", + Short: "Get the Organization Compliance Status and the Location Status List", + Long: "Get the organization compliance status and the location status list for a RedSky account.\n\nThe enhanced emergency (E911) service for Webex Calling provides an emergency service designed for organizations with a hybrid or nomadic workforce. It provides dynamic location support and a network that routes emergency calls to Public Safety Answering Points (PSAP) around the US, its territories, and Canada.\n\nTo retrieve organization compliance status requires a full, user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/redSky/complianceStatus") + req.QueryParam("orgId", orgId) + req.QueryParam("start", start) + req.QueryParam("max", max) + req.QueryParam("order", order) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve the compliance status and the list of location statuses for the organization.") + cmd.Flags().StringVar(&start, "start", "", "Specifies the offset from the first result that you want to fetch.") + cmd.Flags().StringVar(&max, "max", "", "Specifies the maximum number of records that you want to fetch.") + cmd.Flags().StringVar(&order, "order", "", "Sort the list of locations in ascending or descending order. To sort in descending order append `-desc` to possible sort order values. Possible sort order values are `locationName` and `locationState`.") + emergencyServicesCmd.AddCommand(cmd) + } + + { // login-redsky-admin-account + var orgId string + var email string + var password string + var redSkyOrgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "login-redsky-admin-account", + Short: "Login to a RedSky Admin Account", + Long: "Login to Redsky for an existing account admin user to retrieve the `companyId` and verify the status of `externalTenantEnabled`. The password provided will not be stored.\n\nThe enhanced emergency (E911) service for Webex Calling provides an emergency service designed for organizations with a hybrid or nomadic workforce. It provides dynamic location support and a network that routes emergency calls to Public Safety Answering Points (PSAP) around the US, its territories, and Canada.\n\nLogging in requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/redSky/actions/login/invoke") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("email", email) + req.BodyString("password", password) + req.BodyString("redSkyOrgId", redSkyOrgId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Login to a RedSky account for the organization.") + cmd.Flags().StringVar(&email, "email", "", "") + cmd.Flags().StringVar(&password, "password", "", "") + cmd.Flags().StringVar(&redSkyOrgId, "red-sky-org-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + emergencyServicesCmd.AddCommand(cmd) + } + + { // get-location-redsky-calling-parameters + var locationId string + var orgId string + cmd := &cobra.Command{ + Use: "get-location-redsky-calling-parameters", + Short: "Get a Location's RedSky Emergency Calling Parameters", + Long: "Get the Emergency Calling Parameters for a specific location.\n\nThe enhanced emergency (E911) service for Webex Calling provides an emergency service designed for organizations with a hybrid or nomadic workforce. It provides dynamic location support and a network that routes emergency calls to Public Safety Answering Points (PSAP) around the US, its territories, and Canada.\n\nTo retrieve location calling parameters requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/redSky") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Retrieve Calling Parameters for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve Calling Parameters for the location in this organization.") + emergencyServicesCmd.AddCommand(cmd) + } + + { // get-location-redsky-compliance-status + var locationId string + var orgId string + cmd := &cobra.Command{ + Use: "get-location-redsky-compliance-status", + Short: "Get a Location's RedSky Compliance Status", + Long: "Get RedSky compliance status for a specific location.\n\nThe enhanced emergency (E911) service for Webex Calling provides an emergency service designed for organizations with a hybrid or nomadic workforce. It provides dynamic location support and a network that routes emergency calls to Public Safety Answering Points (PSAP) around the US, its territories, and Canada.\n\nRetrieving the location's compliance status requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/redSky/status") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Retrieve the compliance status for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve compliance status for the location in this organization.") + emergencyServicesCmd.AddCommand(cmd) + } + + { // update-location-redsky-compliance-status + var locationId string + var orgId string + var complianceStatus string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-location-redsky-compliance-status", + Short: "Update a Location's RedSky Compliance Status", + Long: "Update the compliance status for a specific location.\n\nThe Enhanced Emergency (E911) Service for Webex Calling provides dynamic location support and a network that routes emergency calls to Public Safety Answering Points (PSAP) around the US, its territories, and Canada. E911 services are provided in conjunction with a RedSky account.\n\nUpdating the RedSky account's compliance status requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/locations/{locationId}/redSky/status") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("complianceStatus", complianceStatus) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Update the E911 compliance status for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Update the E911 compliance status for the location in this organization.") + cmd.Flags().StringVar(&complianceStatus, "compliance-status", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + emergencyServicesCmd.AddCommand(cmd) + } + + { // create-redsky-building-address-location + var locationId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-redsky-building-address-location", + Short: "Create a RedSky Building Address and Alert Email for a Location", + Long: "Add a RedSky building address and alert email for a specified location.\n\nThe Enhanced Emergency (E911) Service for Webex Calling provides dynamic location support and a network that routes emergency calls to Public Safety Answering Points (PSAP) around the US, its territories, and Canada. E911 services are provided in conjunction with a RedSky account.\n\nCreating a building address and alert email requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/locations/{locationId}/redSky/building") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Create the building address and alert email for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "The organization in which the location exists.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + emergencyServicesCmd.AddCommand(cmd) + } + + { // update-redsky-building-address-location + var locationId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-redsky-building-address-location", + Short: "Update a RedSky Building Address for a Location", + Long: "Update a RedSky building address for a specified location.\n\nThe Enhanced Emergency (E911) Service for Webex Calling provides dynamic location support and a network that routes emergency calls to Public Safety Answering Points (PSAP) around the US, its territories, and Canada. E911 services are provided in conjunction with a RedSky account.\n\nUpdating a building address requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/locations/{locationId}/redSky/building") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Update the building address for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "The organization in which the location exists.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + emergencyServicesCmd.AddCommand(cmd) + } + + { // get-org-call-notification + var orgId string + cmd := &cobra.Command{ + Use: "get-org-call-notification", + Short: "Get an Organization Emergency Call Notification", + Long: "Get organization emergency call notification.\n\nEmergency Call Notifications can be enabled at the organization level, allowing specified email addresses to receive email notifications when an emergency call is made. To comply with U.S. Public Law 115-127, also known as Kari\u2019s Law, any call that's made from within your organization to emergency services must generate an email notification.\n\nTo retrieve organization call notifications requires a full, user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/emergencyCallNotification") + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve Emergency Call Notification attributes for the organization.") + emergencyServicesCmd.AddCommand(cmd) + } + + { // update-org-call-notification + var orgId string + var emergencyCallNotificationEnabled bool + var allowEmailNotificationAllLocationEnabled bool + var emailAddress string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-org-call-notification", + Short: "Update an Organization Emergency Call Notification", + Long: "Update an organization emergency call notification.\n\nOnce settings are enabled at the organization level, the configured email address will receive emergency call notifications for all locations.\n\nEmergency Call Notifications can be enabled at the organization level, allowing specified email addresses to receive email notifications when an emergency call is made. To comply with U.S. Public Law 115-127, also known as Kari\u2019s Law, any call that's made from within your organization to emergency services must generate an email notification.\n\nTo update organization call notification requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/emergencyCallNotification") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("emergencyCallNotificationEnabled", emergencyCallNotificationEnabled, cmd.Flags().Changed("emergency-call-notification-enabled")) + req.BodyBool("allowEmailNotificationAllLocationEnabled", allowEmailNotificationAllLocationEnabled, cmd.Flags().Changed("allow-email-notification-all-location-enabled")) + req.BodyString("emailAddress", emailAddress) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Update Emergency Call Notification attributes for the organization.") + cmd.Flags().BoolVar(&emergencyCallNotificationEnabled, "emergency-call-notification-enabled", false, "") + cmd.Flags().BoolVar(&allowEmailNotificationAllLocationEnabled, "allow-email-notification-all-location-enabled", false, "") + cmd.Flags().StringVar(&emailAddress, "email-address", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + emergencyServicesCmd.AddCommand(cmd) + } + + { // get-location-call-notification + var locationId string + var orgId string + cmd := &cobra.Command{ + Use: "get-location-call-notification", + Short: "Get a Location Emergency Call Notification", + Long: "Get location emergency call notification.\n\nEmergency Call Notifications can be enabled at the organization level, allowing specified email addresses to receive email notifications when an emergency call is made. Once activated at the organization level, individual locations can configure this setting to direct notifications to specific email addresses. To comply with U.S. Public Law 115-127, also known as Kari\u2019s Law, any call that's made from within your organization to emergency services must generate an email notification.\n\nTo retrieve location call notifications requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/emergencyCallNotification") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Retrieve Emergency Call Notification attributes for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve Emergency Call Notification attributes for the location in this organization.") + emergencyServicesCmd.AddCommand(cmd) + } + + { // update-location-call-notification + var locationId string + var orgId string + var emergencyCallNotificationEnabled bool + var emailAddress string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-location-call-notification", + Short: "Update a Location Emergency Call Notification", + Long: "Update a location emergency call notification.\n\nOnce settings enabled at the organization level, the configured email address will receive emergency call notifications for all locations; for specific location customization, users can navigate to Management > Locations, select the Calling tab, and update the Emergency Call Notification settings.\n\nEmergency Call Notifications can be enabled at the organization level, allowing specified email addresses to receive email notifications when an emergency call is made. Once activated at the organization level, individual locations can configure this setting to direct notifications to specific email addresses. To comply with U.S. Public Law 115-127, also known as Kari\u2019s Law, any call that's made from within your organization to emergency services must generate an email notification.\n\nTo update location call notification requires a full, user or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/locations/{locationId}/emergencyCallNotification") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("emergencyCallNotificationEnabled", emergencyCallNotificationEnabled, cmd.Flags().Changed("emergency-call-notification-enabled")) + req.BodyString("emailAddress", emailAddress) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Update Emergency Call Notification attributes for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Update Emergency Call Notification attributes for a location in this organization.") + cmd.Flags().BoolVar(&emergencyCallNotificationEnabled, "emergency-call-notification-enabled", false, "") + cmd.Flags().StringVar(&emailAddress, "email-address", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + emergencyServicesCmd.AddCommand(cmd) + } + + { // get-dependencies-hunt-group-callback + var huntGroupId string + var orgId string + cmd := &cobra.Command{ + Use: "get-dependencies-hunt-group-callback", + Short: "Get Dependencies for a Hunt Group Emergency Callback Number", + Long: "Retrieves the emergency callback number dependencies for a specific hunt group.\n\nHunt groups can route incoming calls to a group of people, workspaces or virtual lines. You can even configure a pattern to route to a whole group.\n\nRetrieving the dependencies requires a full, user, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/huntGroups/{huntGroupId}/emergencyCallbackNumber/dependencies") + req.PathParam("huntGroupId", huntGroupId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&huntGroupId, "hunt-group-id", "", "Unique identifier for the hunt group.") + cmd.MarkFlagRequired("hunt-group-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve Emergency Callback Number attributes for the hunt group under this organization.") + emergencyServicesCmd.AddCommand(cmd) + } + + { // get-person-callback + var personId string + var orgId string + cmd := &cobra.Command{ + Use: "get-person-callback", + Short: "Get a Person's Emergency Callback Number", + Long: "Retrieve a person's emergency callback number settings.\n\nEmergency Callback Configurations can be enabled at the organization level, Users without individual telephone numbers, such as extension-only users, must be set up with accurate Emergency Callback Numbers (ECBN) and Emergency Service Addresses to enable them to make emergency calls. These users can either utilize the default ECBN for their location or be assigned another specific telephone number from that location for emergency purposes.\n\nTo retrieve a person's callback number requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/{personId}/emergencyCallbackNumber") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + emergencyServicesCmd.AddCommand(cmd) + } + + { // update-person-callback + var personId string + var orgId string + var selected string + var locationMemberId string + var elinEnabled bool + var elinForWebexAppEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-person-callback", + Short: "Update a Person's Emergency Callback Number", + Long: "Update a person's emergency callback number settings.\n\nEmergency Callback Configurations can be enabled at the organization level, Users without individual telephone numbers, such as extension-only users, must be set up with accurate Emergency Callback Numbers (ECBN) to enable them to make emergency calls. These users can either utilize the default ECBN for their location or be assigned another specific telephone number from that location for emergency purposes.\n\nTo update an emergency callback number requires a full, location, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/{personId}/emergencyCallbackNumber") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("selected", selected) + req.BodyString("locationMemberId", locationMemberId) + req.BodyBool("elinEnabled", elinEnabled, cmd.Flags().Changed("elin-enabled")) + req.BodyBool("elinForWebexAppEnabled", elinForWebexAppEnabled, cmd.Flags().Changed("elin-for-webex-app-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + cmd.Flags().StringVar(&selected, "selected", "", "") + cmd.Flags().StringVar(&locationMemberId, "location-member-id", "", "") + cmd.Flags().BoolVar(&elinEnabled, "elin-enabled", false, "") + cmd.Flags().BoolVar(&elinForWebexAppEnabled, "elin-for-webex-app-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + emergencyServicesCmd.AddCommand(cmd) + } + + { // get-person-callback-dependencies + var personId string + var orgId string + cmd := &cobra.Command{ + Use: "get-person-callback-dependencies", + Short: "Retrieve A Person's Emergency Callback Number Dependencies", + Long: "Retrieve Emergency Callback Number dependencies for a person.\n\nEmergency Callback Configurations can be enabled at the organization level, Users without individual telephone numbers, such as extension-only users, must be set up with accurate Emergency Call Back Numbers (ECBN) to enable them to make emergency calls. These users can either utilize the default ECBN for their location or be assigned another specific telephone number from that location for emergency purposes.\n\nRetrieving the dependencies requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/{personId}/emergencyCallbackNumber/dependencies") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve Emergency Callback Number attributes for this organization.") + emergencyServicesCmd.AddCommand(cmd) + } + + { // get-workspace-callback + var workspaceId string + var orgId string + cmd := &cobra.Command{ + Use: "get-workspace-callback", + Short: "Get a Workspace Emergency Callback Number", + Long: "Retrieve the emergency callback number setting associated with a specific workspace.\n\nEmergency Callback Configurations can be enabled at the organization level, Users without individual telephone numbers, such as extension-only users, must be set up with accurate Emergency Callback Numbers (ECBN) and Emergency Service Addresses to enable them to make emergency calls. These users can either utilize the default ECBN for their location or be assigned another specific telephone number from that location for emergency purposes.\n\nTo retrieve an emergency callback number, it requires a full, location, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/workspaces/{workspaceId}/emergencyCallbackNumber") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Retrieve Emergency Callback Number attributes for this workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve Emergency Callback Number attributes for this organization.") + emergencyServicesCmd.AddCommand(cmd) + } + + { // update-workspace-callback + var workspaceId string + var orgId string + var selected string + var locationMemberId string + var elinEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-workspace-callback", + Short: "Update a Workspace Emergency Callback Number", + Long: "Update the emergency callback number settings for a workspace.\n\nEmergency Callback Configurations can be enabled at the organization level, Users without individual telephone numbers, such as extension-only users, must be set up with accurate Emergency Call Back Numbers (ECBN) to enable them to make emergency calls. These users can either utilize the default ECBN for their location or be assigned another specific telephone number from that location for emergency purposes.\n\nTo update an emergency callback number requires a full, location, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/workspaces/{workspaceId}/emergencyCallbackNumber") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("selected", selected) + req.BodyString("locationMemberId", locationMemberId) + req.BodyBool("elinEnabled", elinEnabled, cmd.Flags().Changed("elin-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Updating Emergency Callback Number attributes for this workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Updating Emergency Callback Number attributes for this organization.") + cmd.Flags().StringVar(&selected, "selected", "", "") + cmd.Flags().StringVar(&locationMemberId, "location-member-id", "", "") + cmd.Flags().BoolVar(&elinEnabled, "elin-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + emergencyServicesCmd.AddCommand(cmd) + } + + { // get-workspace-callback-dependencies + var workspaceId string + var orgId string + cmd := &cobra.Command{ + Use: "get-workspace-callback-dependencies", + Short: "Retrieve Workspace Emergency Callback Number Dependencies", + Long: "Retrieve Emergency Callback Number dependencies for a workspace.\n\nEmergency Callback Configurations can be enabled at the organization level, Users without individual telephone numbers, such as extension-only users, must be set up with accurate Emergency Call Back Numbers (ECBN) to enable them to make emergency calls. These users can either utilize the default ECBN for their location or be assigned another specific telephone number from that location for emergency purposes.\n\nRetrieving the dependencies requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/workspaces/{workspaceId}/emergencyCallbackNumber/dependencies") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Retrieve Emergency Callback Number attributes for this workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve Emergency Callback Number attributes for this organization.") + emergencyServicesCmd.AddCommand(cmd) + } + + { // get-dependencies-vline-callback + var virtualLineId string + var orgId string + cmd := &cobra.Command{ + Use: "get-dependencies-vline-callback", + Short: "Get Dependencies for a Virtual Line Emergency Callback Number", + Long: "Retrieves the emergency callback number dependencies for a specific virtual line.\n\nVirtual line is a capability in Webex Calling that allows administrators to configure multiple lines for Webex Calling users.\n\nRetrieving the dependencies requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/virtualLines/{virtualLineId}/emergencyCallbackNumber/dependencies") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Unique identifier for the virtual line.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "List virtual lines for this organization.") + emergencyServicesCmd.AddCommand(cmd) + } + + { // get-vline-callback-settings + var virtualLineId string + var orgId string + cmd := &cobra.Command{ + Use: "get-vline-callback-settings", + Short: "Get the Virtual Line's Emergency Callback settings", + Long: "Retrieves the emergency callback number settings for a specific virtual line.\n\nVirtual line is a capability in Webex Calling that allows administrators to configure multiple lines for Webex Calling users.\n\nRetrieving the dependencies requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/virtualLines/{virtualLineId}/emergencyCallbackNumber") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Unique identifier for the virtual line.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "List virtual lines for this organization.") + emergencyServicesCmd.AddCommand(cmd) + } + + { // update-vline-callback-settings + var virtualLineId string + var orgId string + var selected string + var locationMemberId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-vline-callback-settings", + Short: "Update a Virtual Line's Emergency Callback settings", + Long: "Update the emergency callback number settings for a specific virtual line.\n\nVirtual line is a capability in Webex Calling that allows administrators to configure multiple lines for Webex Calling users.\n\nTo update virtual line callback number requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/virtualLines/{virtualLineId}/emergencyCallbackNumber") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("selected", selected) + req.BodyString("locationMemberId", locationMemberId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Unique identifier for the virtual line.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "List virtual lines for this organization.") + cmd.Flags().StringVar(&selected, "selected", "", "") + cmd.Flags().StringVar(&locationMemberId, "location-member-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + emergencyServicesCmd.AddCommand(cmd) + } + +} diff --git a/cmd/calling/external_voicemail.go b/cmd/calling/external_voicemail.go new file mode 100644 index 0000000..8fd420a --- /dev/null +++ b/cmd/calling/external_voicemail.go @@ -0,0 +1,932 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package calling + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var externalVoicemailCmd = &cobra.Command{ + Use: "external-voicemail", + Short: "ExternalVoicemail commands", +} + +func init() { + cmd.CallingCmd.AddCommand(externalVoicemailCmd) + + { // dial + var destination string + var endpointId string + var singleNumberReachPhoneNumber string + var lineOwnerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "dial", + Short: "Dial", + Long: `Initiate an outbound call to a specified destination. This is also commonly referred to as Click to Call or Click to Dial. Alerts occur on all the devices belonging to a user unless an optional endpointId is specified in which case only the device or application identified by the endpointId is alerted. When a user answers an alerting device, an outbound call is placed from that device to the destination.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/calls/dial") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("destination", destination) + req.BodyString("endpointId", endpointId) + req.BodyString("singleNumberReachPhoneNumber", singleNumberReachPhoneNumber) + req.BodyString("lineOwnerId", lineOwnerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&destination, "destination", "", "") + cmd.Flags().StringVar(&endpointId, "endpoint-id", "", "") + cmd.Flags().StringVar(&singleNumberReachPhoneNumber, "single-number-reach-phone-number", "", "") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + externalVoicemailCmd.AddCommand(cmd) + } + + { // answer + var callId string + var endpointId string + var lineOwnerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "answer", + Short: "Answer", + Long: `Answer an incoming call. When no endpointId is specified, the call is answered on the user's primary device. When an endpointId is specified, the call is answered on the device or application identified by the endpointId. The answer API is rejected if the device is not alerting for the call or the device does not support answer via API.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/calls/answer") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callId", callId) + req.BodyString("endpointId", endpointId) + req.BodyString("lineOwnerId", lineOwnerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callId, "call-id", "", "") + cmd.Flags().StringVar(&endpointId, "endpoint-id", "", "") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + externalVoicemailCmd.AddCommand(cmd) + } + + { // reject + var callId string + var action string + var lineOwnerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "reject", + Short: "Reject", + Long: `Reject an unanswered incoming call.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/calls/reject") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callId", callId) + req.BodyString("action", action) + req.BodyString("lineOwnerId", lineOwnerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callId, "call-id", "", "") + cmd.Flags().StringVar(&action, "action", "", "") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + externalVoicemailCmd.AddCommand(cmd) + } + + { // hangup + var callId string + var lineOwnerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "hangup", + Short: "Hangup", + Long: `Hangup a call. If used on an unanswered incoming call, the call is rejected and sent to busy.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/calls/hangup") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callId", callId) + req.BodyString("lineOwnerId", lineOwnerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callId, "call-id", "", "") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + externalVoicemailCmd.AddCommand(cmd) + } + + { // hold + var callId string + var lineOwnerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "hold", + Short: "Hold", + Long: `Hold a connected call.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/calls/hold") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callId", callId) + req.BodyString("lineOwnerId", lineOwnerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callId, "call-id", "", "") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + externalVoicemailCmd.AddCommand(cmd) + } + + { // resume + var callId string + var lineOwnerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "resume", + Short: "Resume", + Long: `Resume a held call.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/calls/resume") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callId", callId) + req.BodyString("lineOwnerId", lineOwnerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callId, "call-id", "", "") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + externalVoicemailCmd.AddCommand(cmd) + } + + { // mute + var callId string + var lineOwnerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "mute", + Short: "Mute", + Long: `Mute a call. This API can only be used for a call that reports itself as mute capable via the muteCapable field in the call details.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/calls/mute") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callId", callId) + req.BodyString("lineOwnerId", lineOwnerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callId, "call-id", "", "") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + externalVoicemailCmd.AddCommand(cmd) + } + + { // unmute + var callId string + var lineOwnerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "unmute", + Short: "Unmute", + Long: `Unmute a call. This API can only be used for a call that reports itself as mute capable via the muteCapable field in the call details.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/calls/unmute") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callId", callId) + req.BodyString("lineOwnerId", lineOwnerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callId, "call-id", "", "") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + externalVoicemailCmd.AddCommand(cmd) + } + + { // divert + var callId string + var destination string + var toVoicemail bool + var lineOwnerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "divert", + Short: "Divert", + Long: `Divert a call to a destination or a user's voicemail. This is also commonly referred to as a Blind Transfer.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/calls/divert") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callId", callId) + req.BodyString("destination", destination) + req.BodyBool("toVoicemail", toVoicemail, cmd.Flags().Changed("to-voicemail")) + req.BodyString("lineOwnerId", lineOwnerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callId, "call-id", "", "") + cmd.Flags().StringVar(&destination, "destination", "", "") + cmd.Flags().BoolVar(&toVoicemail, "to-voicemail", false, "") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + externalVoicemailCmd.AddCommand(cmd) + } + + { // transfer + var callId1 string + var callId2 string + var destination string + var lineOwnerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "transfer", + Short: "Transfer", + Long: "Transfer two calls together.\n\nUnanswered incoming calls cannot be transferred but can be diverted using the divert API.\n\nIf the user has only two calls and wants to transfer them together, the `callId1` and `callId2` parameters are optional and when not provided the calls are automatically selected and transferred.\n\nIf the user has more than two calls and wants to transfer two of them together, the `callId1` and `callId2` parameters are mandatory to specify which calls are being transferred. Those are also commonly referred to as Attended Transfer, Consultative Transfer, or Supervised Transfer and will return a `204` response.\n\nIf the user wants to transfer one call to a new destination but only when the destination responds, the `callId1` and destination parameters are mandatory to specify the call being transferred and the destination.\n\nThis is referred to as a Mute Transfer and is similar to the divert API with the difference of waiting for the destination to respond prior to transferring the call. If the destination does not respond, the call is not transferred. This will return a `201` response.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/calls/transfer") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callId1", callId1) + req.BodyString("callId2", callId2) + req.BodyString("destination", destination) + req.BodyString("lineOwnerId", lineOwnerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callId1, "call-id1", "", "") + cmd.Flags().StringVar(&callId2, "call-id2", "", "") + cmd.Flags().StringVar(&destination, "destination", "", "") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + externalVoicemailCmd.AddCommand(cmd) + } + + { // park + var callId string + var destination string + var isGroupPark bool + var lineOwnerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "park", + Short: "Park", + Long: `Park a connected call. The number field in the response can be used as the destination for the retrieve command to retrieve the parked call.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/calls/park") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callId", callId) + req.BodyString("destination", destination) + req.BodyBool("isGroupPark", isGroupPark, cmd.Flags().Changed("is-group-park")) + req.BodyString("lineOwnerId", lineOwnerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callId, "call-id", "", "") + cmd.Flags().StringVar(&destination, "destination", "", "") + cmd.Flags().BoolVar(&isGroupPark, "is-group-park", false, "") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + externalVoicemailCmd.AddCommand(cmd) + } + + { // get + var destination string + var endpointId string + var singleNumberReachPhoneNumber string + var lineOwnerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "get", + Short: "Retrieve", + Long: `Retrieve a parked call. A new call is initiated to perform the retrieval in a similar manner to the dial command. The number field from the park command response can be used as the destination for the retrieve command.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/calls/retrieve") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("destination", destination) + req.BodyString("endpointId", endpointId) + req.BodyString("singleNumberReachPhoneNumber", singleNumberReachPhoneNumber) + req.BodyString("lineOwnerId", lineOwnerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&destination, "destination", "", "") + cmd.Flags().StringVar(&endpointId, "endpoint-id", "", "") + cmd.Flags().StringVar(&singleNumberReachPhoneNumber, "single-number-reach-phone-number", "", "") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + externalVoicemailCmd.AddCommand(cmd) + } + + { // start-recording + var callId string + var lineOwnerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "start-recording", + Short: "Start Recording", + Long: `Start recording a call. Use of this API is only valid when the user's call recording mode is set to "On Demand".`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/calls/startRecording") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callId", callId) + req.BodyString("lineOwnerId", lineOwnerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callId, "call-id", "", "") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + externalVoicemailCmd.AddCommand(cmd) + } + + { // stop-recording + var callId string + var lineOwnerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "stop-recording", + Short: "Stop Recording", + Long: `Stop recording a call. Use of this API is only valid when a call is being recorded and the user's call recording mode is set to "On Demand".`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/calls/stopRecording") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callId", callId) + req.BodyString("lineOwnerId", lineOwnerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callId, "call-id", "", "") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + externalVoicemailCmd.AddCommand(cmd) + } + + { // pause-recording + var callId string + var lineOwnerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "pause-recording", + Short: "Pause Recording", + Long: `Pause recording on a call. Use of this API is only valid when a call is being recorded and the user's call recording mode is set to "On Demand" or "Always with Pause/Resume".`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/calls/pauseRecording") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callId", callId) + req.BodyString("lineOwnerId", lineOwnerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callId, "call-id", "", "") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + externalVoicemailCmd.AddCommand(cmd) + } + + { // resume-recording + var callId string + var lineOwnerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "resume-recording", + Short: "Resume Recording", + Long: `Resume recording a call. Use of this API is only valid when a call's recording is paused and the user's call recording mode is set to "On Demand" or "Always with Pause/Resume".`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/calls/resumeRecording") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callId", callId) + req.BodyString("lineOwnerId", lineOwnerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callId, "call-id", "", "") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + externalVoicemailCmd.AddCommand(cmd) + } + + { // transmit-dtmf + var callId string + var dtmf string + var lineOwnerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "transmit-dtmf", + Short: "Transmit DTMF", + Long: `Transmit DTMF digits to a call.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/calls/transmitDtmf") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callId", callId) + req.BodyString("dtmf", dtmf) + req.BodyString("lineOwnerId", lineOwnerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callId, "call-id", "", "") + cmd.Flags().StringVar(&dtmf, "dtmf", "", "") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + externalVoicemailCmd.AddCommand(cmd) + } + + { // push + var callId string + var lineOwnerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "push", + Short: "Push", + Long: `Pushes a call from the assistant to the executive the call is associated with. Use of this API is only valid when the assistant's call is associated with an executive.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/calls/push") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callId", callId) + req.BodyString("lineOwnerId", lineOwnerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callId, "call-id", "", "") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + externalVoicemailCmd.AddCommand(cmd) + } + + { // pickup + var target string + var endpointId string + var singleNumberReachPhoneNumber string + var lineOwnerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "pickup", + Short: "Pickup", + Long: `Picks up an incoming call to another user. A new call is initiated to perform the pickup in a similar manner to the dial command. When target is not present, the API pickups up a call from the user's call pickup group. When target is present, the API pickups an incoming call from the specified target user.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/calls/pickup") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("target", target) + req.BodyString("endpointId", endpointId) + req.BodyString("singleNumberReachPhoneNumber", singleNumberReachPhoneNumber) + req.BodyString("lineOwnerId", lineOwnerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&target, "target", "", "") + cmd.Flags().StringVar(&endpointId, "endpoint-id", "", "") + cmd.Flags().StringVar(&singleNumberReachPhoneNumber, "single-number-reach-phone-number", "", "") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + externalVoicemailCmd.AddCommand(cmd) + } + + { // barge + var target string + var endpointId string + var singleNumberReachPhoneNumber string + var lineOwnerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "barge", + Short: "Barge In", + Long: `Barge-in on another user's answered call. A new call is initiated to perform the barge-in in a similar manner to the dial command.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/calls/bargeIn") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("target", target) + req.BodyString("endpointId", endpointId) + req.BodyString("singleNumberReachPhoneNumber", singleNumberReachPhoneNumber) + req.BodyString("lineOwnerId", lineOwnerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&target, "target", "", "") + cmd.Flags().StringVar(&endpointId, "endpoint-id", "", "") + cmd.Flags().StringVar(&singleNumberReachPhoneNumber, "single-number-reach-phone-number", "", "") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + externalVoicemailCmd.AddCommand(cmd) + } + + { // list-calls + var lineOwnerId string + cmd := &cobra.Command{ + Use: "list-calls", + Short: "List Calls", + Long: `Get the list of details for all active calls associated with the user.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/calls") + req.QueryParam("lineOwnerId", lineOwnerId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "The ID of a user, workspace, or virtual line for which there is a secondary line on a device owned by the user invoking the API.") + externalVoicemailCmd.AddCommand(cmd) + } + + { // get-call + var callId string + var lineOwnerId string + cmd := &cobra.Command{ + Use: "get-call", + Short: "Get Call Details", + Long: `Get the details of the specified active call for the user.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/calls/{callId}") + req.PathParam("callId", callId) + req.QueryParam("lineOwnerId", lineOwnerId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callId, "call-id", "", "The call identifier of the call.") + cmd.MarkFlagRequired("call-id") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "The ID of a user, workspace, or virtual line for which there is a secondary line on a device owned by the user invoking the API.") + externalVoicemailCmd.AddCommand(cmd) + } + + { // list-call-history + var typeVal string + cmd := &cobra.Command{ + Use: "list-call-history", + Short: "List Call History", + Long: "Get the list of call history records for the user. A maximum of 20 call history records per type (`placed`, `missed`, `received`) are returned.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/calls/history") + req.QueryParam("type", typeVal) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&typeVal, "type", "", "The type of call history records to retrieve. If not specified, then all call history records are retrieved.") + externalVoicemailCmd.AddCommand(cmd) + } + + { // update-clear-message-waiting-indicator + var id string + var orgId string + var action string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-clear-message-waiting-indicator", + Short: "Set or Clear Message Waiting Indicator (MWI) Status", + Long: "Enables an external voicemail service to SET or CLEAR the Message Waiting Indicator (MWI) for a person or workspace.\n\nInvoke the API using a bearer token from a Service App in the target organization, created by a full admin with the scope `spark-admin:calls_write`.\n\nSpecify the target user or workspace with the required `id` query parameter.\n\nOptionally, use the orgId parameter to indicate the organization; if omitted, the Service App\u2019s organization is used.\n\nIf `orgId` is provided, it must match the Service App\u2019s organization or be a managed organization.\n\nSet the desired action (SET or CLEAR) in the message body\u2019s action field.\n\nLearn more about [using Webex Service Apps](https://developer.webex.com/messaging/docs/service-apps).", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/externalVoicemail/mwi") + req.QueryParam("id", id) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("action", action) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "Unique identifier for the user or workspace.") + cmd.Flags().StringVar(&orgId, "org-id", "", "Id of the organization to which the user or workspace belongs. If not provided, the orgId of the Service App is used. If provided, the organization must be the same as or managed by the Service App's organization.") + cmd.Flags().StringVar(&action, "action", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + externalVoicemailCmd.AddCommand(cmd) + } + + { // pull + var endpointId string + var lineOwnerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "pull", + Short: "Pull", + Long: `Pull a call from one device to another. A temporary new call is initiated to perform the call pull in a similar manner to the dial command. When a user answers an alerting device, the device is connected to the pulled call and the new call created for the call pull is released.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/calls/pull") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("endpointId", endpointId) + req.BodyString("lineOwnerId", lineOwnerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&endpointId, "endpoint-id", "", "") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + externalVoicemailCmd.AddCommand(cmd) + } + +} diff --git a/cmd/calling/hot_desk.go b/cmd/calling/hot_desk.go new file mode 100644 index 0000000..aaa155d --- /dev/null +++ b/cmd/calling/hot_desk.go @@ -0,0 +1,83 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package calling + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var hotDeskCmd = &cobra.Command{ + Use: "hot-desk", + Short: "HotDesk commands", +} + +func init() { + cmd.CallingCmd.AddCommand(hotDeskCmd) + + { // list-sessions + var orgId string + var personId string + var workspaceId string + cmd := &cobra.Command{ + Use: "list-sessions", + Short: "List Sessions", + Long: "List hot desk sessions.\n\nUse query parameters to filter the response.\nThe `orgId` parameter is for use by partner administrators acting on a managed organization.\nThe `personId` and `workspaceId` parameters are optional and are used to filter the response to only include sessions for a specific person or workspace.\nWhen used together they are used as an AND filter.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/hotdesk/sessions") + req.QueryParam("orgId", orgId) + req.QueryParam("personId", personId) + req.QueryParam("workspaceId", workspaceId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List sessions in this organization. Only admin users of another organization (such as partners) may use this parameter.") + cmd.Flags().StringVar(&personId, "person-id", "", "List sessions for this person.") + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "List sessions for this workspace.") + hotDeskCmd.AddCommand(cmd) + } + + { // delete-session + var sessionId string + cmd := &cobra.Command{ + Use: "delete-session", + Short: "Delete Session", + Long: `Delete a hot desk session.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/hotdesk/sessions/{sessionId}") + req.PathParam("sessionId", sessionId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&sessionId, "session-id", "", "The unique identifier for the hot desk session.") + cmd.MarkFlagRequired("session-id") + hotDeskCmd.AddCommand(cmd) + } + +} diff --git a/cmd/calling/hot_desking_sign_in_via_voice_portal.go b/cmd/calling/hot_desking_sign_in_via_voice_portal.go new file mode 100644 index 0000000..8c62ad2 --- /dev/null +++ b/cmd/calling/hot_desking_sign_in_via_voice_portal.go @@ -0,0 +1,154 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package calling + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var hotDeskingSignInViaVoicePortalCmd = &cobra.Command{ + Use: "hot-desking-sign-in-via-voice-portal", + Short: "HotDeskingSignInViaVoicePortal commands", +} + +func init() { + cmd.CallingCmd.AddCommand(hotDeskingSignInViaVoicePortalCmd) + + { // location + var locationId string + var orgId string + cmd := &cobra.Command{ + Use: "location", + Short: "Voice Portal Hot desking sign in details for a location", + Long: "Get the Hot desking sign in details for a location.\n\nThis requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/features/hotDesking") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location in which the hot desking sign in resides.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + hotDeskingSignInViaVoicePortalCmd.AddCommand(cmd) + } + + { // update-location + var locationId string + var orgId string + var voicePortalHotDeskSignInEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-location", + Short: "Update Voice Portal Hot desking sign in details for a location", + Long: "Update the Hot desking sign in details for a location.\n\nThis requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/locations/{locationId}/features/hotDesking") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("voicePortalHotDeskSignInEnabled", voicePortalHotDeskSignInEnabled, cmd.Flags().Changed("voice-portal-hot-desk-sign-in-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location in which the hot desking sign in resides.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().BoolVar(&voicePortalHotDeskSignInEnabled, "voice-portal-hot-desk-sign-in-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + hotDeskingSignInViaVoicePortalCmd.AddCommand(cmd) + } + + { // user + var personId string + var orgId string + cmd := &cobra.Command{ + Use: "user", + Short: "Voice Portal Hot desking sign in details for a user", + Long: "Get the Hot desking sign in details for a user.\n\nThis requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/{personId}/features/hotDesking/guest") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "ID of the person associated with the hot desking details.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + hotDeskingSignInViaVoicePortalCmd.AddCommand(cmd) + } + + { // update-user + var personId string + var orgId string + var voicePortalHotDeskSignInEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-user", + Short: "Update Voice Portal Hot desking sign in details for a user", + Long: "Update the Hot desking sign in details for a user.\n\nThis requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/{personId}/features/hotDesking/guest") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("voicePortalHotDeskSignInEnabled", voicePortalHotDeskSignInEnabled, cmd.Flags().Changed("voice-portal-hot-desk-sign-in-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "ID of the person associated with the hot desking details.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().BoolVar(&voicePortalHotDeskSignInEnabled, "voice-portal-hot-desk-sign-in-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + hotDeskingSignInViaVoicePortalCmd.AddCommand(cmd) + } + +} diff --git a/cmd/calling/hunt_group.go b/cmd/calling/hunt_group.go new file mode 100644 index 0000000..b0b595b --- /dev/null +++ b/cmd/calling/hunt_group.go @@ -0,0 +1,581 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package calling + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var huntGroupCmd = &cobra.Command{ + Use: "hunt-group", + Short: "HuntGroup commands", +} + +func init() { + cmd.CallingCmd.AddCommand(huntGroupCmd) + + { // list + var orgId string + var locationId string + var max string + var start string + var name string + var phoneNumber string + cmd := &cobra.Command{ + Use: "list", + Short: "Read the List of Hunt Groups", + Long: "List all calling Hunt Groups for the organization.\n\nHunt groups can route incoming calls to a group of people or workspaces. You can even configure a pattern to route to a whole group.\n\nRetrieving this list requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/huntGroups") + req.QueryParam("orgId", orgId) + req.QueryParam("locationId", locationId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("name", name) + req.QueryParam("phoneNumber", phoneNumber) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List hunt groups for this organization.") + cmd.Flags().StringVar(&locationId, "location-id", "", "Only return hunt groups with matching location ID.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of objects returned to this maximum count.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching objects.") + cmd.Flags().StringVar(&name, "name", "", "Only return hunt groups with the matching name.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Only return hunt groups with the matching primary phone number or extension.") + huntGroupCmd.AddCommand(cmd) + } + + { // create + var locationId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a Hunt Group", + Long: "Create new Hunt Groups for the given location.\n\nHunt groups can route incoming calls to a group of people, workspaces or virtual lines. You can even configure a pattern to route to a whole group.\n\nCreating a hunt group requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/locations/{locationId}/huntGroups") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Create the hunt group for the given location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Create the hunt group for this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + huntGroupCmd.AddCommand(cmd) + } + + { // delete + var locationId string + var huntGroupId string + var orgId string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete a Hunt Group", + Long: "Delete the designated Hunt Group.\n\nHunt groups can route incoming calls to a group of people or workspaces. You can even configure a pattern to route to a whole group.\n\nDeleting a hunt group requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/locations/{locationId}/huntGroups/{huntGroupId}") + req.PathParam("locationId", locationId) + req.PathParam("huntGroupId", huntGroupId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location from which to delete a hunt group.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&huntGroupId, "hunt-group-id", "", "Delete the hunt group with the matching ID.") + cmd.MarkFlagRequired("hunt-group-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Delete the hunt group from this organization.") + huntGroupCmd.AddCommand(cmd) + } + + { // get + var locationId string + var huntGroupId string + var orgId string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Details for a Hunt Group", + Long: "Retrieve Hunt Group details.\n\nHunt groups can route incoming calls to a group of people, workspaces or virtual lines. You can even configure a pattern to route to a whole group.\n\nRetrieving hunt group details requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/huntGroups/{huntGroupId}") + req.PathParam("locationId", locationId) + req.PathParam("huntGroupId", huntGroupId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Retrieve settings for a hunt group in this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&huntGroupId, "hunt-group-id", "", "Retrieve settings for the hunt group with this identifier.") + cmd.MarkFlagRequired("hunt-group-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve hunt group settings from this organization.") + huntGroupCmd.AddCommand(cmd) + } + + { // update + var locationId string + var huntGroupId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Short: "Update a Hunt Group", + Long: "Update the designated Hunt Group.\n\nHunt groups can route incoming calls to a group of people, workspaces or virtual lines. You can even configure a pattern to route to a whole group.\n\nUpdating a hunt group requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/locations/{locationId}/huntGroups/{huntGroupId}") + req.PathParam("locationId", locationId) + req.PathParam("huntGroupId", huntGroupId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Update the hunt group for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&huntGroupId, "hunt-group-id", "", "Update settings for the hunt group with the matching ID.") + cmd.MarkFlagRequired("hunt-group-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Update hunt group settings from this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + huntGroupCmd.AddCommand(cmd) + } + + { // get-call-forward + var locationId string + var huntGroupId string + var orgId string + cmd := &cobra.Command{ + Use: "get-call-forward", + Short: "Get Call Forwarding Settings for a Hunt Group", + Long: "Retrieve Call Forwarding settings for the specified Hunt Group including the list of call forwarding rules.\n\nThe call forwarding feature allows you to direct all incoming calls based on specific criteria that you define.\nBelow are the available options for configuring your call forwarding:\n1. Always forward calls to a designated number.\n2. Forward calls to a designated number based on certain criteria.\n3. Forward calls using different modes.\n\nRetrieving call forwarding settings for a hunt group requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/huntGroups/{huntGroupId}/callForwarding") + req.PathParam("locationId", locationId) + req.PathParam("huntGroupId", huntGroupId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location in which this hunt group exists.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&huntGroupId, "hunt-group-id", "", "Read the call forwarding settings for this hunt group.") + cmd.MarkFlagRequired("hunt-group-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve hunt group forwarding settings from this organization.") + huntGroupCmd.AddCommand(cmd) + } + + { // update-call-forward + var locationId string + var huntGroupId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-call-forward", + Short: "Update Call Forwarding Settings for a Hunt Group", + Long: "Update Call Forwarding settings for the specified Hunt Group.\n\nThe call forwarding feature allows you to direct all incoming calls based on specific criteria that you define.\nBelow are the available options for configuring your call forwarding:\n1. Always forward calls to a designated number.\n2. Forward calls to a designated number based on certain criteria.\n3. Forward calls using different modes.\n\nUpdating call forwarding settings for a hunt group requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/locations/{locationId}/huntGroups/{huntGroupId}/callForwarding") + req.PathParam("locationId", locationId) + req.PathParam("huntGroupId", huntGroupId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location from which this hunt group exists.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&huntGroupId, "hunt-group-id", "", "Update call forwarding settings for this hunt group.") + cmd.MarkFlagRequired("hunt-group-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Update hunt group forwarding settings from this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + huntGroupCmd.AddCommand(cmd) + } + + { // create-selective-forward-rule + var locationId string + var huntGroupId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-selective-forward-rule", + Short: "Create a Selective Call Forwarding Rule for a Hunt Group", + Long: "Create a Selective Call Forwarding Rule for the designated Hunt Group.\n\nA selective call forwarding rule for a hunt group allows calls to be forwarded or not forwarded to the designated number, based on the defined criteria.\n\nNote that the list of existing call forward rules is available in the hunt group's call forwarding settings.\n\nCreating a selective call forwarding rule for a hunt group requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: The Call Forwarding Rule ID will change upon modification of the Call Forwarding Rule name.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/locations/{locationId}/huntGroups/{huntGroupId}/callForwarding/selectiveRules") + req.PathParam("locationId", locationId) + req.PathParam("huntGroupId", huntGroupId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location in which this hunt group exists.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&huntGroupId, "hunt-group-id", "", "Create the rule for this hunt group.") + cmd.MarkFlagRequired("hunt-group-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Create the hunt group rule for this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + huntGroupCmd.AddCommand(cmd) + } + + { // get-selective-forward-rule + var locationId string + var huntGroupId string + var ruleId string + var orgId string + cmd := &cobra.Command{ + Use: "get-selective-forward-rule", + Short: "Get Selective Call Forwarding Rule for a Hunt Group", + Long: "Retrieve a Selective Call Forwarding Rule's settings for the designated Hunt Group.\n\nA selective call forwarding rule for a hunt group allows calls to be forwarded or not forwarded to the designated number, based on the defined criteria.\n\nNote that the list of existing call forward rules is available in the hunt group's call forwarding settings.\n\nRetrieving a selective call forwarding rule's settings for a hunt group requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.\n\n**NOTE**: The Call Forwarding Rule ID will change upon modification of the Call Forwarding Rule name.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/huntGroups/{huntGroupId}/callForwarding/selectiveRules/{ruleId}") + req.PathParam("locationId", locationId) + req.PathParam("huntGroupId", huntGroupId) + req.PathParam("ruleId", ruleId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location in which this hunt group exists.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&huntGroupId, "hunt-group-id", "", "Retrieve settings for a rule for this hunt group.") + cmd.MarkFlagRequired("hunt-group-id") + cmd.Flags().StringVar(&ruleId, "rule-id", "", "Hunt group rule you are retrieving settings for.") + cmd.MarkFlagRequired("rule-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve hunt group rule settings for this organization.") + huntGroupCmd.AddCommand(cmd) + } + + { // update-selective-forward-rule + var locationId string + var huntGroupId string + var ruleId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-selective-forward-rule", + Short: "Update a Selective Call Forwarding Rule for a Hunt Group", + Long: "Update a Selective Call Forwarding Rule's settings for the designated Hunt Group.\n\nA selective call forwarding rule for a hunt group allows calls to be forwarded or not forwarded to the designated number, based on the defined criteria.\n\nNote that the list of existing call forward rules is available in the hunt group's call forwarding settings.\n\nUpdating a selective call forwarding rule's settings for a hunt group requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: The Call Forwarding Rule ID will change upon modification of the Call Forwarding Rule name.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/locations/{locationId}/huntGroups/{huntGroupId}/callForwarding/selectiveRules/{ruleId}") + req.PathParam("locationId", locationId) + req.PathParam("huntGroupId", huntGroupId) + req.PathParam("ruleId", ruleId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location in which this hunt group exists.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&huntGroupId, "hunt-group-id", "", "Update settings for a rule for this hunt group.") + cmd.MarkFlagRequired("hunt-group-id") + cmd.Flags().StringVar(&ruleId, "rule-id", "", "Hunt group rule you are updating settings for.") + cmd.MarkFlagRequired("rule-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Update hunt group rule settings for this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + huntGroupCmd.AddCommand(cmd) + } + + { // delete-selective-forward-rule + var locationId string + var huntGroupId string + var ruleId string + var orgId string + cmd := &cobra.Command{ + Use: "delete-selective-forward-rule", + Short: "Delete a Selective Call Forwarding Rule for a Hunt Group", + Long: "Delete a Selective Call Forwarding Rule for the designated Hunt Group.\n\nA selective call forwarding rule for a hunt group allows calls to be forwarded or not forwarded to the designated number, based on the defined criteria.\n\nNote that the list of existing call forward rules is available in the hunt group's call forwarding settings.\n\nDeleting a selective call forwarding rule for a hunt group requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: The Call Forwarding Rule ID will change upon modification of the Call Forwarding Rule name.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/locations/{locationId}/huntGroups/{huntGroupId}/callForwarding/selectiveRules/{ruleId}") + req.PathParam("locationId", locationId) + req.PathParam("huntGroupId", huntGroupId) + req.PathParam("ruleId", ruleId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location in which this hunt group exists.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&huntGroupId, "hunt-group-id", "", "Delete the rule for this hunt group.") + cmd.MarkFlagRequired("hunt-group-id") + cmd.Flags().StringVar(&ruleId, "rule-id", "", "Hunt group rule you are deleting.") + cmd.MarkFlagRequired("rule-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Delete hunt group rule from this organization.") + huntGroupCmd.AddCommand(cmd) + } + + { // get-primary-numbers + var locationId string + var orgId string + var max string + var start string + var phoneNumber string + cmd := &cobra.Command{ + Use: "get-primary-numbers", + Short: "Get Hunt Group Primary Available Phone Numbers", + Long: "List the service and standard PSTN numbers that are available to be assigned as the hunt group's primary phone number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/huntGroups/availableNumbers") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("phoneNumber", phoneNumber) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Return the list of phone numbers for this location within the given organization. The maximum length is 36.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "List numbers for this organization.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of phone numbers returned to this maximum count. The default is 2000.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching phone numbers. The default is 0.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array.") + huntGroupCmd.AddCommand(cmd) + } + + { // get-alternate-numbers + var locationId string + var orgId string + var max string + var start string + var phoneNumber string + cmd := &cobra.Command{ + Use: "get-alternate-numbers", + Short: "Get Hunt Group Alternate Available Phone Numbers", + Long: "List the service and standard PSTN numbers that are available to be assigned as the hunt group's alternate phone number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/huntGroups/alternate/availableNumbers") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("phoneNumber", phoneNumber) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Return the list of phone numbers for this location within the given organization. The maximum length is 36.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "List numbers for this organization.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of phone numbers returned to this maximum count. The default is 2000.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching phone numbers. The default is 0.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array.") + huntGroupCmd.AddCommand(cmd) + } + + { // get-forward-available-numbers + var locationId string + var orgId string + var max string + var start string + var phoneNumber string + var ownerName string + var extension string + cmd := &cobra.Command{ + Use: "get-forward-available-numbers", + Short: "Get Hunt Group Call Forward Available Phone Numbers", + Long: "List the service and standard PSTN numbers that are available to be assigned as the hunt group's call forward number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are assigned to an owning entity.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/huntGroups/callForwarding/availableNumbers") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("ownerName", ownerName) + req.QueryParam("extension", extension) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Return the list of phone numbers for this location within the given organization. The maximum length is 36.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "List numbers for this organization.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of phone numbers returned to this maximum count. The default is 2000.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching phone numbers. The default is 0.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array.") + cmd.Flags().StringVar(&ownerName, "owner-name", "", "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255.") + cmd.Flags().StringVar(&extension, "extension", "", "Returns the list of PSTN phone numbers with the given `extension`.") + huntGroupCmd.AddCommand(cmd) + } + + { // switch-mode-call-forward + var locationId string + var huntGroupId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "switch-mode-call-forward", + Short: "Switch Mode for Call Forwarding Settings for a Hunt Group", + Long: "Switches the current operating mode of the `Hunt Group` to the mode as per normal operations.\n\nOperating modes allow call forwarding to be configured based on predefined schedules, enabling different routing behaviors during business hours, after hours, or holidays.\n\nSwitching operating mode for a `hunt group` requires a full, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/locations/{locationId}/huntGroups/{huntGroupId}/callForwarding/actions/switchMode/invoke") + req.PathParam("locationId", locationId) + req.PathParam("huntGroupId", huntGroupId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "`Location` in which this `hunt group` exists.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&huntGroupId, "hunt-group-id", "", "Switch operating mode to normal operations for this `hunt group`.") + cmd.MarkFlagRequired("hunt-group-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Switch operating mode as per normal operations for the `hunt group` from this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + huntGroupCmd.AddCommand(cmd) + } + +} diff --git a/cmd/calling/location_call.go b/cmd/calling/location_call.go new file mode 100644 index 0000000..ab01643 --- /dev/null +++ b/cmd/calling/location_call.go @@ -0,0 +1,1353 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package calling + +import ( + "fmt" + "strconv" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa +var _ = strings.Join + +var locationCallCmd = &cobra.Command{ + Use: "location-call", + Short: "LocationCall commands", +} + +func init() { + cmd.CallingCmd.AddCommand(locationCallCmd) + + { // list-dial-patterns + var dialPlanId string + var orgId string + var dialPattern string + var max string + var start string + var order string + cmd := &cobra.Command{ + Use: "list-dial-patterns", + Short: "Read the List of Dial Patterns", + Long: "List all Dial Patterns for the organization.\n\nDial plans route calls to on-premises destinations by use of trunks or route groups.\nThey are configured globally for an enterprise and apply to all users, regardless of location.\nA dial plan also specifies the routing choice (trunk or route group) for calls that match any of its dial patterns.\nSpecific dial patterns can be defined as part of your dial plan.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/premisePstn/dialPlans/{dialPlanId}/dialPatterns") + req.PathParam("dialPlanId", dialPlanId) + req.QueryParam("orgId", orgId) + req.QueryParam("dialPattern", dialPattern) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("order", order) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&dialPlanId, "dial-plan-id", "", "ID of the dial plan.") + cmd.MarkFlagRequired("dial-plan-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization to which the dial patterns belong.") + cmd.Flags().StringVar(&dialPattern, "dial-pattern", "", "An enterprise dial pattern is represented by a sequence of digits (1-9), followed by optional wildcard characters. Valid wildcard characters are `!` (matches any sequence of digits) and `X` (matches a single digit, 0-9). The `!` wildcard can only occur once at the end and only in an E.164 pattern ") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of objects returned to this maximum count.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching objects.") + cmd.Flags().StringVar(&order, "order", "", "Order the dial patterns according to the designated fields. Available sort fields: `dialPattern`.") + locationCallCmd.AddCommand(cmd) + } + + { // list-webex-calling + var orgId string + var max string + var start string + var name string + var order string + cmd := &cobra.Command{ + Use: "list-webex-calling", + Short: "List Locations Webex Calling Details", + Long: "Lists Webex Calling locations for an organization with Webex Calling details.\n\nSearching and viewing locations with Webex Calling details in your\norganization require an administrator auth token with the\n`spark-admin:telephony_config_read` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations") + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("name", name) + req.QueryParam("order", order) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List locations for this organization.") + cmd.Flags().StringVar(&max, "max", "", "Limit the maximum number of locations in the response.") + cmd.Flags().StringVar(&start, "start", "", "Specify the offset from the first result that you want to fetch.") + cmd.Flags().StringVar(&name, "name", "", "List locations whose name contains this string.") + cmd.Flags().StringVar(&order, "order", "", "Sort the list of locations based on `name`, either asc or desc.") + locationCallCmd.AddCommand(cmd) + } + + { // enable-webex-calling + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "enable-webex-calling", + Short: "Enable a Location for Webex Calling", + Long: "Enable a location by adding it to Webex Calling. This add Webex Calling support to a\nlocation created created using the POST /v1/locations API.\n\nLocations are used to support calling features which can be defined at the location level.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/locations") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + locationCallCmd.AddCommand(cmd) + } + + { // get-webex-calling + var locationId string + var orgId string + cmd := &cobra.Command{ + Use: "get-webex-calling", + Short: "Get Location Webex Calling Details", + Long: `Shows Webex Calling details for a location, by ID. + +Specifies the location ID in the locationId parameter in the URI. + +Searching and viewing locations in your organization requires an administrator auth token with the spark-admin:telephony_config_read scope.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Retrieve Webex Calling location attributes for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve Webex Calling location attributes for this organization.") + locationCallCmd.AddCommand(cmd) + } + + { // update-webex-calling + var locationId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-webex-calling", + Short: "Update Location Webex Calling Details", + Long: "Update Webex Calling details for a location, by ID.\n\nSpecifies the location ID in the `locationId` parameter in the URI.\n\nModifying the `connection` via API is only supported for the local PSTN types of `TRUNK` and `ROUTE_GROUP`.\n\nUpdating a location in your organization requires an administrator auth token with the `spark-admin:telephony_config_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/locations/{locationId}") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Updating Webex Calling location attributes for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Updating Webex Calling location attributes for this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + locationCallCmd.AddCommand(cmd) + } + + { // list-update-routing-prefix-jobs + var orgId string + cmd := &cobra.Command{ + Use: "list-update-routing-prefix-jobs", + Short: "Get a List of Update Routing Prefix jobs", + Long: "Get the list of all update routing prefix jobs in an organization.\n\nThe routing prefix is associated with a location and is used to route calls belonging to that location.\nThis API allows users to retrieve all the update routing prefix jobs in an organization.\n\nRetrieving the list of update routing prefix jobs in an organization requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/jobs/updateRoutingPrefix") + req.QueryParam("orgId", orgId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve list of update routing prefix jobs in this organization.") + locationCallCmd.AddCommand(cmd) + } + + { // get-job-status-update-routing-prefix-job + var jobId string + var orgId string + cmd := &cobra.Command{ + Use: "get-job-status-update-routing-prefix-job", + Short: "Get the job status of Update Routing Prefix job", + Long: "Get the status of the update routing prefix job by its job ID.\n\nThe routing prefix is associated with a location and is used to route calls belonging to that location.\nThis API allows users to check the status of update routing prefix job by job ID in an organization.\n\nChecking the status of the update routing prefix job in an organization requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/jobs/updateRoutingPrefix/{jobId}") + req.PathParam("jobId", jobId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&jobId, "job-id", "", "Retrieve job status for this `jobId`.") + cmd.MarkFlagRequired("job-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Check update routing prefix job status in this organization.") + locationCallCmd.AddCommand(cmd) + } + + { // get-job-errors-update-routing-prefix-job + var jobId string + var orgId string + cmd := &cobra.Command{ + Use: "get-job-errors-update-routing-prefix-job", + Short: "Get job errors for update routing prefix job", + Long: "GET job errors for the update routing prefix job in an organization.\n\nThe routing prefix is associated with a location and is used to route calls belonging to that location.\nThis API allows users to retrieve all the errors of the update routing prefix job by job ID in an organization.\n\nRetrieving all the errors of the update routing prefix job in an organization requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/jobs/updateRoutingPrefix/{jobId}/errors") + req.PathParam("jobId", jobId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&jobId, "job-id", "", "Retrieve job errors for this `jobId`.") + cmd.MarkFlagRequired("job-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve list of errors for update routing prefix job in this organization.") + locationCallCmd.AddCommand(cmd) + } + + { // update-announcement-language + var locationId string + var orgId string + var announcementLanguageCode string + var agentEnabled bool + var serviceEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-announcement-language", + Short: "Change Announcement Language", + Long: "Change announcement language for the given location.\n\nChange announcement language for current people/workspaces and/or existing feature configurations. This does not change the default announcement language which is applied to new users/workspaces and new feature configurations.\n\nChanging the announcement language for the given location requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/locations/{locationId}/actions/modifyAnnouncementLanguage/invoke") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("announcementLanguageCode", announcementLanguageCode) + req.BodyBool("agentEnabled", agentEnabled, cmd.Flags().Changed("agent-enabled")) + req.BodyBool("serviceEnabled", serviceEnabled, cmd.Flags().Changed("service-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Change announcement language for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Change announcement language for this organization.") + cmd.Flags().StringVar(&announcementLanguageCode, "announcement-language-code", "", "") + cmd.Flags().BoolVar(&agentEnabled, "agent-enabled", false, "") + cmd.Flags().BoolVar(&serviceEnabled, "service-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + locationCallCmd.AddCommand(cmd) + } + + { // get-emergency-callback + var locationId string + var orgId string + cmd := &cobra.Command{ + Use: "get-emergency-callback", + Short: "Get a Location Emergency callback number", + Long: "Get location emergency callback number.\n\n* To retrieve location callback number requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/features/emergencyCallbackNumber") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Update location attributes for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Update location attributes for this organization.") + locationCallCmd.AddCommand(cmd) + } + + { // update-emergency-callback + var locationId string + var orgId string + var selected string + var locationMemberId string + var elinExpiryTimeMinutes int64 + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-emergency-callback", + Short: "Update a Location Emergency callback number", + Long: "Update details for a location emergency callback number.\n\n* Updating a location callback number requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/locations/{locationId}/features/emergencyCallbackNumber") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("selected", selected) + req.BodyString("locationMemberId", locationMemberId) + req.BodyInt("elinExpiryTimeMinutes", elinExpiryTimeMinutes, cmd.Flags().Changed("elin-expiry-time-minutes")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Update location attributes for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Update location attributes for this organization.") + cmd.Flags().StringVar(&selected, "selected", "", "") + cmd.Flags().StringVar(&locationMemberId, "location-member-id", "", "") + cmd.Flags().Int64Var(&elinExpiryTimeMinutes, "elin-expiry-time-minutes", 0, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + locationCallCmd.AddCommand(cmd) + } + + { // validate-list-extensions + var orgId string + var extensions []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "validate-list-extensions", + Short: "Validate the List of Extensions", + Long: "Validates the list of Extensions provided by the customer at the organization level. It checks the extension meets the current extension length limits and does not conflict with the extensions of organization-level entities and settings. To check for extension use across all locations, use the [Get Phone Numbers](/v1/telephony/config/numbers) API. To validate an extension and check for conflicts for a specific location, use the [Validate Extensions](/docs/api/v1/location-call-settings/validate-extensions) API.\n\nRetrieving this list requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/actions/validateExtensions/invoke") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("extensions", extensions) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Validate Extension for this organization.") + cmd.Flags().StringSliceVar(&extensions, "extensions", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + locationCallCmd.AddCommand(cmd) + } + + { // validate-extensions + var locationId string + var orgId string + var extensions []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "validate-extensions", + Short: "Validate Extensions", + Long: "Validate extensions for a specific location.\n\nValidating extensions requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/locations/{locationId}/actions/validateExtensions/invoke") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("extensions", extensions) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Validate extensions for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Validate extensions for this organization.") + cmd.Flags().StringSliceVar(&extensions, "extensions", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + locationCallCmd.AddCommand(cmd) + } + + { // update-music-hold + var locationId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-music-hold", + Short: "Update Music On Hold", + Long: "Update the location's music on hold settings.\n\nLocation music on hold settings allows you to play music when a call is placed on hold or parked.\n\nUpdating a location's music on hold settings requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/locations/{locationId}/musicOnHold") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Update music on hold settings for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Update music on hold settings for this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + locationCallCmd.AddCommand(cmd) + } + + { // get-music-hold + var locationId string + var orgId string + cmd := &cobra.Command{ + Use: "get-music-hold", + Short: "Get Music On Hold", + Long: "Retrieve the location's music on hold settings.\n\nLocation music on hold settings allows you to play music when a call is placed on hold or parked.\n\nRetrieving a location's music on hold settings requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/musicOnHold") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Retrieve music on hold settings for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve music on hold settings for this organization.") + locationCallCmd.AddCommand(cmd) + } + + { // get-private-network-connect + var locationId string + var orgId string + cmd := &cobra.Command{ + Use: "get-private-network-connect", + Short: "Get Private Network Connect", + Long: "Retrieve the location's network connection type.\n\nNetwork Connection Type determines if the location's network connection is public or private.\n\nRetrieving a location's network connection type requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/privateNetworkConnect") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Retrieve the network connection type for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve the network connection type for this organization.") + locationCallCmd.AddCommand(cmd) + } + + { // update-private-network-connect + var locationId string + var orgId string + var networkConnectionType string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-private-network-connect", + Short: "Update Private Network Connect", + Long: "Update the location's network connection type.\n\nNetwork Connection Type determines if the location's network connection is public or private.\n\nUpdating a location's network connection type requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/locations/{locationId}/privateNetworkConnect") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("networkConnectionType", networkConnectionType) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Update the network connection type for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Update network connection type for this organization.") + cmd.Flags().StringVar(&networkConnectionType, "network-connection-type", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + locationCallCmd.AddCommand(cmd) + } + + { // list-routing-choices + var orgId string + var routeGroupName string + var trunkName string + var max string + var start string + var order string + cmd := &cobra.Command{ + Use: "list-routing-choices", + Short: "Read the List of Routing Choices", + Long: "List all Routes for the organization.\n\nTrunk and Route Group qualify as Route. Trunks and Route Groups provide you the ability to configure Webex Calling to manage calls between Webex Calling hosted users and premises PBX users. This solution lets you configure users to use Cloud PSTN (CCP or Cisco PSTN) or Premises-based PSTN.\n\nRetrieving this list requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/routeChoices") + req.QueryParam("orgId", orgId) + req.QueryParam("routeGroupName", routeGroupName) + req.QueryParam("trunkName", trunkName) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("order", order) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List route identities for this organization.") + cmd.Flags().StringVar(&routeGroupName, "route-group-name", "", "Return the list of route identities matching the Route group name.") + cmd.Flags().StringVar(&trunkName, "trunk-name", "", "Return the list of route identities matching the Trunk name.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of objects returned to this maximum count.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching objects.") + cmd.Flags().StringVar(&order, "order", "", "Order the route identities according to the designated fields. Available sort fields: `routeName`, `routeType`.") + locationCallCmd.AddCommand(cmd) + } + + { // list-phone-numbers-available-external-caller-id + var locationId string + var orgId string + var max string + var start string + var phoneNumber string + var ownerName string + var personId string + cmd := &cobra.Command{ + Use: "list-phone-numbers-available-external-caller-id", + Short: "Get the List of Phone Numbers Available for External Caller ID", + Long: "Get the list of phone numbers available for external caller ID usage by a Webex Calling entity (such as a person, virtual line, or workspace) within the specified location.\nNumbers from the specified location are returned and cross location numbers are returned as well where the number's location has the same country, PSTN provider, and zone (only applicable for India locations) as the specified location.\nWhen `personId` is specified, and the person belongs to a cisco PSTN location, has a mobile number assigned as primary DN, and does not have a billing plan, only the assigned mobile number is returned as the available number for caller ID.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/externalCallerId/availableNumbers") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("ownerName", ownerName) + req.QueryParam("personId", personId) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Retrieve available external caller ID numbers for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "List numbers for this organization.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of phone numbers returned to this maximum count. The default is 2000.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching phone numbers. The default is 0.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Filter phone numbers based on the provided list in the `phoneNumber` array.") + cmd.Flags().StringVar(&ownerName, "owner-name", "", "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255.") + cmd.Flags().StringVar(&personId, "person-id", "", "Retrieve available external caller ID numbers for this person. If `personId` is not provided it may result in the unsuccessful assignment of the returned number. This parameter has no effect when workspace or virtual line ID is used.") + locationCallCmd.AddCommand(cmd) + } + + { // get-available-numbers + var locationId string + var orgId string + var max string + var start string + var phoneNumber string + var ownerName string + cmd := &cobra.Command{ + Use: "get-available-numbers", + Short: "Get Available Phone Numbers for a Location with Given Criteria", + Long: "List the service and standard PSTN numbers that are available to be assigned as the location's main number.\nThese numbers are associated with the location specified in the request URL and can be active/inactive and assigned to an owning entity or unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/availableNumbers") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("ownerName", ownerName) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Return the list of phone numbers for this location within the given organization. The maximum length is 36.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "List numbers for this organization.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of phone numbers returned to this maximum count. The default is 2000.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching phone numbers. The default is 0.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array.") + cmd.Flags().StringVar(&ownerName, "owner-name", "", "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255.") + locationCallCmd.AddCommand(cmd) + } + + { // get-webex-go-available-numbers + var locationId string + var orgId string + var max string + var start string + var phoneNumber string + cmd := &cobra.Command{ + Use: "get-webex-go-available-numbers", + Short: "Get Webex Go Available Phone Numbers", + Long: "List standard numbers that are available to be assigned as the webex go phone number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/webexGo/availableNumbers") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("phoneNumber", phoneNumber) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Return the list of phone numbers for this location within the given organization. The maximum length is 36.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "List numbers for this organization.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of phone numbers returned to this maximum count. The default is 2000.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching phone numbers. The default is 0.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array.") + locationCallCmd.AddCommand(cmd) + } + + { // get-ecbn-available-numbers + var locationId string + var orgId string + var max string + var start string + var phoneNumber string + var ownerName string + cmd := &cobra.Command{ + Use: "get-ecbn-available-numbers", + Short: "Get Location ECBN Available Phone Numbers", + Long: "List standard numbers that are available to be assigned as the location's emergency callback number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are assigned to an owning entity.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/emergencyCallbackNumber/availableNumbers") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("ownerName", ownerName) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Return the list of phone numbers for this location within the given organization. The maximum length is 36.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "List numbers for this organization.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of phone numbers returned to this maximum count. The default is 2000.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching phone numbers. The default is 0.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array.") + cmd.Flags().StringVar(&ownerName, "owner-name", "", "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255.") + locationCallCmd.AddCommand(cmd) + } + + { // get-intercept-available-numbers + var locationId string + var orgId string + var max string + var start string + var phoneNumber string + var ownerName string + var extension string + cmd := &cobra.Command{ + Use: "get-intercept-available-numbers", + Short: "Get Location Call Intercept Available Phone Numbers", + Long: "List the service and standard PSTN numbers that are available to be assigned as the location's call intercept number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are assigned to an owning entity.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/callIntercept/availableNumbers") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("ownerName", ownerName) + req.QueryParam("extension", extension) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Return the list of phone numbers for this location within the given organization. The maximum length is 36.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "List numbers for this organization.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of phone numbers returned to this maximum count. The default is 2000.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching phone numbers. The default is 0.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array.") + cmd.Flags().StringVar(&ownerName, "owner-name", "", "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255.") + cmd.Flags().StringVar(&extension, "extension", "", "Returns the list of phone numbers with the given `extension`.") + locationCallCmd.AddCommand(cmd) + } + + { // create-receptionist-contact-directory + var locationId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-receptionist-contact-directory", + Short: "Create a Receptionist Contact Directory", + Long: "Create a new Receptionist Contact Directory for a location.\n\nReceptionist Contact Directories can be used to create named directories of users and/or location features (Auto Attendant, Call Queue, Hunt Group, Single Number Reach, and Paging Group).\n\nAdding a directory requires a full or write-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/locations/{locationId}/receptionistContacts/directories") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Add a Receptionist Contact Directory to this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Add a Receptionist Contact Directory to this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + locationCallCmd.AddCommand(cmd) + } + + { // list-receptionist-contact-directories + var locationId string + var orgId string + cmd := &cobra.Command{ + Use: "list-receptionist-contact-directories", + Short: "Read list of Receptionist Contact Directories", + Long: "List all Receptionist Contact Directories for a location.\n\nReceptionist Contact Directories can be used to create named directories of users.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/receptionistContacts/directories") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "List Receptionist Contact Directories for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "List Receptionist Contact Directories for this organization.") + locationCallCmd.AddCommand(cmd) + } + + { // get-receptionist-contact-directory + var locationId string + var directoryId string + var orgId string + var searchCriteriaModeOr string + var firstName string + var lastName string + var phoneNumber string + var extension string + var personId string + cmd := &cobra.Command{ + Use: "get-receptionist-contact-directory", + Short: "Get details for a Receptionist Contact Directory", + Long: "Get details for a specific Receptionist Contact Directory from a location.\n\nReceptionist Contact Directories are uniquely named per location and contain directories of Persons, Auto Attendants, Call Queues, Hunt Groups, Single Number Reaches, and Paging Groups.\n\nThis API is currently supported for Webex calling organizations with fewer than 2000 users or location-based calling features. For organizations with more than 2000 users or location features, the API will throw an error 25395.\n\nRetrieving details requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/receptionistContacts/directories/{directoryId}") + req.PathParam("locationId", locationId) + req.PathParam("directoryId", directoryId) + req.QueryParam("orgId", orgId) + req.QueryParam("searchCriteriaModeOr", searchCriteriaModeOr) + req.QueryParam("firstName", firstName) + req.QueryParam("lastName", lastName) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("extension", extension) + req.QueryParam("personId", personId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Get a Receptionist Contact Directory from this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&directoryId, "directory-id", "", "Get details for the Receptionist Contact Directory with this identifier.") + cmd.MarkFlagRequired("directory-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Get a Receptionist Contact Directory from this organization.") + cmd.Flags().StringVar(&searchCriteriaModeOr, "search-criteria-mode-or", "", "When `true`, results matching any one of the search criteria are included. The value can only be `true` or not included in the request. Specifying `searchCriteriaModeOr` without any search criteria, or setting it to `false` results in an `ErrorResponse`. If no search criteria is specified, all results are returned.") + cmd.Flags().StringVar(&firstName, "first-name", "", "Search for directories that contain people with the indicated first name.") + cmd.Flags().StringVar(&lastName, "last-name", "", "Search for directories that contain people with the indicated last name.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Search for directories that contain people with the indicated phone number.") + cmd.Flags().StringVar(&extension, "extension", "", "Search for directories that contain people with the indicated extension.") + cmd.Flags().StringVar(&personId, "person-id", "", "Search for directories that contain people with the indicated person ID.") + locationCallCmd.AddCommand(cmd) + } + + { // delete-receptionist-contact-directory + var locationId string + var directoryId string + var orgId string + cmd := &cobra.Command{ + Use: "delete-receptionist-contact-directory", + Short: "Delete a Receptionist Contact Directory", + Long: "Delete a Receptionist Contact Directory from a location.\n\nReceptionist Contact Directories can be used to create named directories of users.\n\nDeleting a directory requires a full or write-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/locations/{locationId}/receptionistContacts/directories/{directoryId}") + req.PathParam("locationId", locationId) + req.PathParam("directoryId", directoryId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Delete a Receptionist Contact Directory from this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&directoryId, "directory-id", "", "Delete the Receptionist Contact Directory ID with the matching ID.") + cmd.MarkFlagRequired("directory-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Delete a Receptionist Contact Directory from this organization.") + locationCallCmd.AddCommand(cmd) + } + + { // update-receptionist-contact-directory + var locationId string + var directoryId string + var orgId string + var name string + var contacts []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-receptionist-contact-directory", + Short: "Modify a Receptionist Contact Directory", + Long: "Modify Receptionist Contact Directories attached to a location. This modification will replace the existing list of contacts with the new incoming contacts list from the request body. The API does not support incremental updates.\n\nReceptionist Contact Directories can be used to create named groups of Persons, Auto Attendants, Call Queues, Hunt Groups, Single Number Reaches, and Paging Groups.\n\nModifying a directory requires a full or write-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/locations/{locationId}/receptionistContacts/directories/{directoryId}") + req.PathParam("locationId", locationId) + req.PathParam("directoryId", directoryId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("name", name) + req.BodyStringSlice("contacts", contacts) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Modify list of Receptionist Contact Directories for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&directoryId, "directory-id", "", "Get details for the Receptionist Contact Directory with this identifier.") + cmd.MarkFlagRequired("directory-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Modify list of Receptionist Contact Directories for this organization.") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringSliceVar(&contacts, "contacts", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + locationCallCmd.AddCommand(cmd) + } + + { // get-available-charge-numbers + var locationId string + var orgId string + var max string + var start string + var phoneNumber string + var ownerName string + cmd := &cobra.Command{ + Use: "get-available-charge-numbers", + Short: "Get Available Charge Numbers for a Location with Given Criteria", + Long: "List the numbers that are available to be assigned as the location's charge number.\n\nThese numbers are non-toll-free and non-mobile numbers assigned to the location specified in the request URL.\n\nRetrieving this list requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/chargeNumber/availableNumbers") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("ownerName", ownerName) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Return the list of available charge numbers for this location within the given organization. The maximum length is 36.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "List numbers for this organization.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of phone numbers returned to this maximum count. The default is 2000.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching phone numbers. The default is 0.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array.") + cmd.Flags().StringVar(&ownerName, "owner-name", "", "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255.") + locationCallCmd.AddCommand(cmd) + } + + { // disable-webex-calling + var orgId string + var locationId string + var locationName string + var forceDelete bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "disable-webex-calling", + Short: "Disable a Location for Webex Calling", + Long: "Disable a Location for Webex Calling.\n\nInitiating a disable calling location job requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\nThe API returns a jobId that can be used with other job-related APIs to track the status and progress of the disable operation.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/jobs/locations/deleteCallingLocation") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("locationId", locationId) + req.BodyString("locationName", locationName) + req.BodyBool("forceDelete", forceDelete, cmd.Flags().Changed("force-delete")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization ID for disabling the location for Webex Calling.") + cmd.Flags().StringVar(&locationId, "location-id", "", "") + cmd.Flags().StringVar(&locationName, "location-name", "", "") + cmd.Flags().BoolVar(&forceDelete, "force-delete", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + locationCallCmd.AddCommand(cmd) + } + + { // list-disable-calling-jobs + var orgId string + var max string + var start string + cmd := &cobra.Command{ + Use: "list-disable-calling-jobs", + Short: "Get a List of Disable Calling Location Jobs", + Long: "Get a List of Disable Calling Location Jobs for the organization.\n\nRetrieving the list of disable calling location jobs requires a full administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/jobs/locations/deleteCallingLocation") + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List disable calling location jobs for this organization.") + cmd.Flags().StringVar(&max, "max", "", "Maximum number of jobs to return.") + cmd.Flags().StringVar(&start, "start", "", "Offset to start returning records from.") + locationCallCmd.AddCommand(cmd) + } + + { // check-delete-check-disabling-webex-calling + var locationId string + var orgId string + cmd := &cobra.Command{ + Use: "check-delete-check-disabling-webex-calling", + Short: "Safe Delete Check Before Disabling a Location for Webex Calling", + Long: "Performs a safe delete check operation to identify any issues that would prevent the calling location from being disabled. This API helps identify resources that need to be addressed before a calling location can be successfully disabled.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/locations/{locationId}/actions/precheckForDeletion/invoke") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Unique identifier for the location to be checked.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization ID for which the safe delete check operation is being performed.") + locationCallCmd.AddCommand(cmd) + } + + { // pause-disable-calling-job + var jobId string + var orgId string + cmd := &cobra.Command{ + Use: "pause-disable-calling-job", + Short: "Pause a Disable Calling Location Job", + Long: "Pause an in-progress disable calling location job. The job must be in the PROCESSING state to be paused.\n\nPausing a job requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/jobs/locations/deleteCallingLocation/{jobId}/actions/pause/invoke") + req.PathParam("jobId", jobId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&jobId, "job-id", "", "Unique identifier for the job to pause.") + cmd.MarkFlagRequired("job-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization ID for which to pause the job.") + locationCallCmd.AddCommand(cmd) + } + + { // resume-paused-disable-calling-job + var jobId string + var orgId string + cmd := &cobra.Command{ + Use: "resume-paused-disable-calling-job", + Short: "Resume a Paused Disable Calling Location Job", + Long: "Resume a previously paused disable calling location job. The job must be in the PAUSED state to be resumed.\n\nResuming a job requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/jobs/locations/deleteCallingLocation/{jobId}/actions/resume/invoke") + req.PathParam("jobId", jobId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&jobId, "job-id", "", "Unique identifier for the job to resume.") + cmd.MarkFlagRequired("job-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization ID for which to resume the job.") + locationCallCmd.AddCommand(cmd) + } + + { // get-errors-disable-calling-job + var jobId string + var orgId string + cmd := &cobra.Command{ + Use: "get-errors-disable-calling-job", + Short: "Retrieve Errors for a Disable Calling Location Job", + Long: "Retrieve detailed error information for a disable calling location job. This is particularly useful for jobs that have failed or encountered errors during processing.\n\nRetrieving job errors requires a full administrator auth token with a scope of `spark-admin:telephony_config_read`.\n\nPossible error codes include:\n* `BATCH-1012002` - Unable to delete calling location from Broadworks.\n* `BATCH-1012004` - Safe delete checks failed.\n* `BATCH-1012005` - Failed to perform safe delete checks.\n* `BATCH-1012006` - Trunks in use in the location. Count: {0}\n* `BATCH-1012007` - Users associated with the location. Count: {0}\n* `BATCH-1012008` - Workspaces associated with the location. Count: {0}\n* `BATCH-1012009` - Virtual lines associated with the location. Count: {0}\n* `BATCH-1012010` - Number order is pending.\n* `BATCH-1012011` - Features associated with the location. This is a blocking error, use forceDelete to disable the calling location.\n* `BATCH-1012012` - Not allowed to delete the last calling location. Calling requires at least one active location in the organization, This is a blocking error.\n* `BATCH-1012013` - Local gateway's associated with the location. Count: {0}. This is a blocking error, use forceDelete to disable the calling location.\n* `BATCH-1012014` - Location not found.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/jobs/locations/deleteCallingLocation/{jobId}/errors") + req.PathParam("jobId", jobId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&jobId, "job-id", "", "Unique identifier for the job to get errors for.") + cmd.MarkFlagRequired("job-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization ID for disable calling location job.") + locationCallCmd.AddCommand(cmd) + } + + { // get-disable-calling-job-status + var jobId string + var orgId string + cmd := &cobra.Command{ + Use: "get-disable-calling-job-status", + Short: "Get Disable Calling Location Job Status", + Long: "Get the status and details of a specific disable calling location job.\n\nRetrieving job status requires a full administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/jobs/locations/deleteCallingLocation/{jobId}") + req.PathParam("jobId", jobId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&jobId, "job-id", "", "Unique identifier for the job.") + cmd.MarkFlagRequired("job-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization ID for which to retrieve the job status.") + locationCallCmd.AddCommand(cmd) + } + + { // get-captions-settings + var locationId string + var orgId string + cmd := &cobra.Command{ + Use: "get-captions-settings", + Short: "Get the location call captions settings", + Long: "Retrieve the location's call captions settings.\n\n**NOTE**: The call captions feature is not supported for locations in India.\n\nThe call caption feature allows the customer to enable and manage closed captions and transcript functionality (rolling caption panel) in Webex Calling, without requiring the user to escalate the call to a meeting.\n\nThis API requires a full, read-only, or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/callCaptions") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Unique identifier for the location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Unique identifier for the organization.") + locationCallCmd.AddCommand(cmd) + } + + { // update-captions-settings + var locationId string + var orgId string + var locationClosedCaptionsEnabled bool + var locationTranscriptsEnabled bool + var useOrgSettingsEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-captions-settings", + Short: "Update the location call captions settings", + Long: "Update the location's call captions settings.\n\n**NOTE**: The call captions feature is not supported for locations in India.\n\nThe call caption feature allows the customer to enable and manage closed captions and transcript functionality (rolling caption panel) in Webex Calling, without requiring the user to escalate the call to a meeting.\n\nThis API requires a full or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/locations/{locationId}/callCaptions") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("locationClosedCaptionsEnabled", locationClosedCaptionsEnabled, cmd.Flags().Changed("location-closed-captions-enabled")) + req.BodyBool("locationTranscriptsEnabled", locationTranscriptsEnabled, cmd.Flags().Changed("location-transcripts-enabled")) + req.BodyBool("useOrgSettingsEnabled", useOrgSettingsEnabled, cmd.Flags().Changed("use-org-settings-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Unique identifier for the location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Unique identifier for the organization.") + cmd.Flags().BoolVar(&locationClosedCaptionsEnabled, "location-closed-captions-enabled", false, "") + cmd.Flags().BoolVar(&locationTranscriptsEnabled, "location-transcripts-enabled", false, "") + cmd.Flags().BoolVar(&useOrgSettingsEnabled, "use-org-settings-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + locationCallCmd.AddCommand(cmd) + } + +} diff --git a/cmd/calling/location_call_handling.go b/cmd/calling/location_call_handling.go new file mode 100644 index 0000000..d0a2a72 --- /dev/null +++ b/cmd/calling/location_call_handling.go @@ -0,0 +1,653 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package calling + +import ( + "fmt" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strings.Join + +var locationCallHandlingCmd = &cobra.Command{ + Use: "location-call-handling", + Short: "LocationCallHandling commands", +} + +func init() { + cmd.CallingCmd.AddCommand(locationCallHandlingCmd) + + { // generate-example-password + var locationId string + var orgId string + var generate []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "generate-example-password", + Short: "Generate example password for Location", + Long: "Generates an example password using the effective password settings for the location. If you don't specify anything in the `generate` field or don't provide a request body, then you will receive a SIP password by default.\n\nUsed while creating a trunk and shouldn't be used anywhere else.\n\nGenerating an example password requires a full or write-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/locations/{locationId}/actions/generatePassword/invoke") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("generate", generate) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location for which example password has to be generated.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization to which the location belongs.") + cmd.Flags().StringSliceVar(&generate, "generate", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + locationCallHandlingCmd.AddCommand(cmd) + } + + { // get-internal-dialing-configuration + var locationId string + var orgId string + cmd := &cobra.Command{ + Use: "get-internal-dialing-configuration", + Short: "Read the Internal Dialing configuration for a location", + Long: "Get current configuration for routing unknown extensions to the Premises as internal calls\n\nIf some users in a location are registered to a PBX, retrieve the setting to route unknown extensions (digits that match the extension length) to the PBX.\n\nRetrieving the internal dialing configuration requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/internalDialing") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "location for which internal calling configuration is being requested") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "List route identities for this organization.") + locationCallHandlingCmd.AddCommand(cmd) + } + + { // update-internal-dialing-configuration + var locationId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-internal-dialing-configuration", + Short: "Modify the Internal Dialing configuration for a location", + Long: "Modify current configuration for routing unknown extensions to the premise as internal calls\n\nIf some users in a location are registered to a PBX, enable the setting to route unknown extensions (digits that match the extension length) to the PBX.\n\nEditing the internal dialing configuration requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/locations/{locationId}/internalDialing") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "location for which internal calling configuration is being requested") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "List route identities for this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + locationCallHandlingCmd.AddCommand(cmd) + } + + { // get-intercept + var locationId string + var orgId string + cmd := &cobra.Command{ + Use: "get-intercept", + Short: "Get Location Intercept", + Long: "Retrieve intercept location details for a customer location.\n\nIntercept incoming or outgoing calls for persons in your organization. If this is enabled, calls are either routed to a designated number the person chooses, or to the person's voicemail.\n\nRetrieving intercept location details requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/intercept") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Retrieve intercept details for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve intercept location details for a customer location.") + locationCallHandlingCmd.AddCommand(cmd) + } + + { // update-intercept + var locationId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-intercept", + Short: "Put Location Intercept", + Long: "Modifies the intercept location details for a customer location.\n\nIntercept incoming or outgoing calls for users in your organization. If this is enabled, calls are either routed to a designated number the user chooses, or to the user's voicemail.\n\nModifying the intercept location details requires a full, user administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/locations/{locationId}/intercept") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Modifies the intercept details for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Modifies the intercept location details for a customer location.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + locationCallHandlingCmd.AddCommand(cmd) + } + + { // get-outgoing-permission + var locationId string + var orgId string + cmd := &cobra.Command{ + Use: "get-outgoing-permission", + Short: "Get Location Outgoing Permission", + Long: `Retrieve the location's outgoing call settings. + +A location's outgoing call settings allow you to determine the types of calls the people/workspaces at the location are allowed to make, as well as configure the default calling permission for each call type at the location. + +Retrieving a location's outgoing call settings requires a full, user or read-only administrator or location administrator auth token with a scope of spark-admin:telephony_config_read.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/outgoingPermission") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Retrieve outgoing call settings for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve outgoing call settings for this organization.") + locationCallHandlingCmd.AddCommand(cmd) + } + + { // update-outgoing-permission + var locationId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-outgoing-permission", + Short: "Update Location Outgoing Permission", + Long: `Update the location's outgoing call settings. + +Location's outgoing call settings allows you to determine the types of calls the people/workspaces at this location are allowed to make and configure the default calling permission for each call type at a location. + +Updating a location's outgoing call settings requires a full administrator or location administrator auth token with a scope of spark-admin:telephony_config_write.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/locations/{locationId}/outgoingPermission") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Update outgoing call settings for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Update outgoing call settings for this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + locationCallHandlingCmd.AddCommand(cmd) + } + + { // get-outgoing-auto-transfer + var locationId string + var orgId string + cmd := &cobra.Command{ + Use: "get-outgoing-auto-transfer", + Short: "Get Outgoing Permission Auto Transfer Number", + Long: "Get the transfer numbers for the outbound permission in a location.\n\nOutbound permissions can specify which transfer number an outbound call should transfer to via the `action` field.\n\nRetrieving an auto transfer number requires a full, user or read-only administrator or location administrator auth token with a scope of spark-admin:telephony_config_read.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/outgoingPermission/autoTransferNumbers") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Retrieve auto transfer number for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve auto transfer number for this organization.") + locationCallHandlingCmd.AddCommand(cmd) + } + + { // update-outgoing-auto-transfer + var locationId string + var orgId string + var autoTransferNumber1 string + var autoTransferNumber2 string + var autoTransferNumber3 string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-outgoing-auto-transfer", + Short: "Put Outgoing Permission Auto Transfer Number", + Long: "Modifies the transfer numbers for the outbound permission in a location.\n\nOutbound permissions can specify which transfer number an outbound call should transfer to via the `action` field.\n\nUpdating auto transfer number requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/locations/{locationId}/outgoingPermission/autoTransferNumbers") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("autoTransferNumber1", autoTransferNumber1) + req.BodyString("autoTransferNumber2", autoTransferNumber2) + req.BodyString("autoTransferNumber3", autoTransferNumber3) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Updating auto transfer number for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Updating auto transfer number for this organization.") + cmd.Flags().StringVar(&autoTransferNumber1, "auto-transfer-number1", "", "") + cmd.Flags().StringVar(&autoTransferNumber2, "auto-transfer-number2", "", "") + cmd.Flags().StringVar(&autoTransferNumber3, "auto-transfer-number3", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + locationCallHandlingCmd.AddCommand(cmd) + } + + { // get-outgoing-permission-access-code + var locationId string + var orgId string + cmd := &cobra.Command{ + Use: "get-outgoing-permission-access-code", + Short: "Get Outgoing Permission Location Access Code", + Long: "Retrieve access codes details for a customer location.\n\nUse Access Codes to bypass the set permissions for all persons/workspaces at this location.\n\nRetrieving access codes details requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/outgoingPermission/accessCodes") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Retrieve access codes details for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve access codes details for a customer location.") + locationCallHandlingCmd.AddCommand(cmd) + } + + { // create-outgoing-permission-access-code-customer + var locationId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-outgoing-permission-access-code-customer", + Short: "Create Outgoing Permission a new access code for a customer location", + Long: `Add a new access code for the given location for a customer. + +Use Access Codes to bypass the set permissions for all persons/workspaces at this location. + +Creating an access code for the given location requires a full or user administrator or location administrator auth token with a scope of spark-admin:telephony_config_write.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/locations/{locationId}/outgoingPermission/accessCodes") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Add new access code for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Add new access code for this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + locationCallHandlingCmd.AddCommand(cmd) + } + + { // delete-outgoing-access-code + var locationId string + var orgId string + var deleteCodes []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "delete-outgoing-access-code", + Short: "Delete Outgoing Permission Access Code Location", + Long: "Deletes the access code details for a particular location for a customer.\n\nUse Access Codes to bypass the set permissions for all persons/workspaces at this location.\n\nModifying the access code location details requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/locations/{locationId}/outgoingPermission/accessCodes") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("deleteCodes", deleteCodes) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Deletes the access code details for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Deletes the access code details for a customer location.") + cmd.Flags().StringSliceVar(&deleteCodes, "delete-codes", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + locationCallHandlingCmd.AddCommand(cmd) + } + + { // delete-all-outgoing-access-code + var locationId string + var orgId string + cmd := &cobra.Command{ + Use: "delete-all-outgoing-access-code", + Short: "Delete all Outgoing Permission Access Code for a Location", + Long: "Deletes all the access codes for a particular location for a customer.\n\nUse Access Codes to bypass the set permissions for all persons/workspaces at this location.\n\nDeleting the access codes requires a full or user administrator or location administrator auth token with the `spark-admin:telephony_config_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/locations/{locationId}/outgoingPermission/accessCodes") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Deletes all the access codes for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Deletes the access codes for a customer location.") + locationCallHandlingCmd.AddCommand(cmd) + } + + { // get-outgoing-digit-pattern + var locationId string + var orgId string + cmd := &cobra.Command{ + Use: "get-outgoing-digit-pattern", + Short: "Get Outgoing Permission Digit Pattern for a Location", + Long: "Get the digit patterns for the outbound permission in a location.\n\nUse Digit Patterns to bypass the set permissions for all persons/workspaces at this location.\n\nRetrieving digit patterns requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/outgoingPermission/digitPatterns") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Retrieve the digit patterns for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve the digit patterns for this organization.") + locationCallHandlingCmd.AddCommand(cmd) + } + + { // create-outgoing-permission-digit-pattern + var locationId string + var orgId string + var name string + var pattern string + var action string + var transferEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-outgoing-permission-digit-pattern", + Short: "Create Outgoing Permission a new Digit Pattern for a location", + Long: "Add a new digit pattern for the given location for a customer.\n\nUse Digit Patterns to bypass the set permissions for all persons/workspaces at this location.\n\nCreating a digit pattern requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/locations/{locationId}/outgoingPermission/digitPatterns") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("name", name) + req.BodyString("pattern", pattern) + req.BodyString("action", action) + req.BodyBool("transferEnabled", transferEnabled, cmd.Flags().Changed("transfer-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Add a new digit pattern for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Add a new digit pattern for this organization.") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&pattern, "pattern", "", "") + cmd.Flags().StringVar(&action, "action", "", "") + cmd.Flags().BoolVar(&transferEnabled, "transfer-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + locationCallHandlingCmd.AddCommand(cmd) + } + + { // delete-all-outgoing-digit-patterns + var locationId string + var orgId string + cmd := &cobra.Command{ + Use: "delete-all-outgoing-digit-patterns", + Short: "Delete all Outgoing Permission Digit Patterns for a Location", + Long: "Deletes all the digit patterns for a particular location for a customer.\n\nUse Digit Patterns to bypass the set permissions for all persons/workspaces at this location.\n\nDeleting the digit patterns requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/locations/{locationId}/outgoingPermission/digitPatterns") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Delete the digit patterns for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Delete the digit patterns for this organization.") + locationCallHandlingCmd.AddCommand(cmd) + } + + { // get-outgoing-digit-pattern-2 + var locationId string + var digitPatternId string + var orgId string + cmd := &cobra.Command{ + Use: "get-outgoing-digit-pattern-2", + Short: "Get Details for a Outgoing Permission Digit Pattern for a Location", + Long: "Get the digit pattern details.\n\nUse Digit Patterns to bypass the set permissions for all persons/workspaces at this location.\n\nRetrieving digit pattern details requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/outgoingPermission/digitPatterns/{digitPatternId}") + req.PathParam("locationId", locationId) + req.PathParam("digitPatternId", digitPatternId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Retrieve the digit pattern details for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&digitPatternId, "digit-pattern-id", "", "Retrieve the digit pattern with the matching ID.") + cmd.MarkFlagRequired("digit-pattern-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve the digit pattern details for this organization.") + locationCallHandlingCmd.AddCommand(cmd) + } + + { // update-outgoing-digit-pattern + var locationId string + var digitPatternId string + var orgId string + var name string + var pattern string + var action string + var transferEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-outgoing-digit-pattern", + Short: "Update a Outgoing Permission Digit Pattern for a Location", + Long: "Update the designated digit pattern.\n\nUse Digit Patterns to bypass the set permissions for all persons/workspaces at this location.\n\nUpdating a digit pattern requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/locations/{locationId}/outgoingPermission/digitPatterns/{digitPatternId}") + req.PathParam("locationId", locationId) + req.PathParam("digitPatternId", digitPatternId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("name", name) + req.BodyString("pattern", pattern) + req.BodyString("action", action) + req.BodyBool("transferEnabled", transferEnabled, cmd.Flags().Changed("transfer-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Update the digit pattern for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&digitPatternId, "digit-pattern-id", "", "Update the digit pattern with the matching ID.") + cmd.MarkFlagRequired("digit-pattern-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Update the digit pattern for this organization.") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&pattern, "pattern", "", "") + cmd.Flags().StringVar(&action, "action", "", "") + cmd.Flags().BoolVar(&transferEnabled, "transfer-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + locationCallHandlingCmd.AddCommand(cmd) + } + + { // delete-outgoing-digit-pattern + var locationId string + var digitPatternId string + var orgId string + cmd := &cobra.Command{ + Use: "delete-outgoing-digit-pattern", + Short: "Delete a Outgoing Permission Digit Pattern for a Location", + Long: "Delete the designated digit pattern.\n\nUse Digit Patterns to bypass the set permissions for all persons/workspaces at this location.\n\nDeleting a digit pattern requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/locations/{locationId}/outgoingPermission/digitPatterns/{digitPatternId}") + req.PathParam("locationId", locationId) + req.PathParam("digitPatternId", digitPatternId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Delete the digit pattern for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&digitPatternId, "digit-pattern-id", "", "Delete the digit pattern with the matching ID.") + cmd.MarkFlagRequired("digit-pattern-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Delete the digit pattern for this organization.") + locationCallHandlingCmd.AddCommand(cmd) + } + +} diff --git a/cmd/calling/location_schedules.go b/cmd/calling/location_schedules.go new file mode 100644 index 0000000..04fc21c --- /dev/null +++ b/cmd/calling/location_schedules.go @@ -0,0 +1,375 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package calling + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var locationSchedulesCmd = &cobra.Command{ + Use: "location-schedules", + Short: "LocationSchedules commands", +} + +func init() { + cmd.CallingCmd.AddCommand(locationSchedulesCmd) + + { // list + var locationId string + var orgId string + var max string + var start string + var name string + var typeVal string + cmd := &cobra.Command{ + Use: "list", + Short: "Read the List of Schedules", + Long: "List all schedules for the given location of the organization.\n\nA time schedule establishes a set of times during the day or holidays in the year in which a feature, for example auto attendants, can perform a specific action.\n\nRetrieving this list requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/schedules") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("name", name) + req.QueryParam("type", typeVal) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Return the list of schedules for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "List schedules for this organization.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of objects returned to this maximum count.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching objects.") + cmd.Flags().StringVar(&name, "name", "", "Only return schedules with the matching name.") + cmd.Flags().StringVar(&typeVal, "type", "", "Type of the schedule.") + locationSchedulesCmd.AddCommand(cmd) + } + + { // create + var locationId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a Schedule", + Long: "Create new Schedule for the given location.\n\nA time schedule establishes a set of times during the day or holidays in the year in which a feature, for example auto attendants, can perform a specific action.\n\nCreating a schedule requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/locations/{locationId}/schedules") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Create the schedule for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Create the schedule for this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + locationSchedulesCmd.AddCommand(cmd) + } + + { // get + var locationId string + var typeVal string + var scheduleId string + var orgId string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Details for a Schedule", + Long: "Retrieve Schedule details.\n\nA time schedule establishes a set of times during the day or holidays in the year in which a feature, for example auto attendants, can perform a specific action.\n\nRetrieving schedule details requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/schedules/{type}/{scheduleId}") + req.PathParam("locationId", locationId) + req.PathParam("type", typeVal) + req.PathParam("scheduleId", scheduleId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Retrieve schedule details in this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&typeVal, "type", "", "Type of the schedule.") + cmd.MarkFlagRequired("type") + cmd.Flags().StringVar(&scheduleId, "schedule-id", "", "Retrieve the schedule with the matching ID.") + cmd.MarkFlagRequired("schedule-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve schedule details from this organization.") + locationSchedulesCmd.AddCommand(cmd) + } + + { // update + var locationId string + var typeVal string + var scheduleId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Short: "Update a Schedule", + Long: "Update the designated schedule.\n\nA time schedule establishes a set of times during the day or holidays in the year in which a feature, for example auto attendants, can perform a specific action.\n\nUpdating a schedule requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: The Schedule ID will change upon modification of the Schedule name.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/locations/{locationId}/schedules/{type}/{scheduleId}") + req.PathParam("locationId", locationId) + req.PathParam("type", typeVal) + req.PathParam("scheduleId", scheduleId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location in which this schedule exists.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&typeVal, "type", "", "Type of schedule.") + cmd.MarkFlagRequired("type") + cmd.Flags().StringVar(&scheduleId, "schedule-id", "", "Update schedule with the matching ID.") + cmd.MarkFlagRequired("schedule-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Update schedule from this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + locationSchedulesCmd.AddCommand(cmd) + } + + { // delete + var locationId string + var typeVal string + var scheduleId string + var orgId string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete a Schedule", + Long: "Delete the designated Schedule.\n\nA time schedule establishes a set of times during the day or holidays in the year in which a feature, for example auto attendants, can perform a specific action.\n\nDeleting a schedule requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/locations/{locationId}/schedules/{type}/{scheduleId}") + req.PathParam("locationId", locationId) + req.PathParam("type", typeVal) + req.PathParam("scheduleId", scheduleId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location from which to delete a schedule.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&typeVal, "type", "", "Type of the schedule.") + cmd.MarkFlagRequired("type") + cmd.Flags().StringVar(&scheduleId, "schedule-id", "", "Delete the schedule with the matching ID.") + cmd.MarkFlagRequired("schedule-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Delete the schedule from this organization.") + locationSchedulesCmd.AddCommand(cmd) + } + + { // get-event + var locationId string + var typeVal string + var scheduleId string + var eventId string + var orgId string + cmd := &cobra.Command{ + Use: "get-event", + Short: "Get Details for a Schedule Event", + Long: "Retrieve Schedule Event details.\n\nA time schedule establishes a set of times during the day or holidays in the year in which a feature, for example auto attendants, can perform a specific action.\n\nRetrieving a schedule event's details requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/schedules/{type}/{scheduleId}/events/{eventId}") + req.PathParam("locationId", locationId) + req.PathParam("type", typeVal) + req.PathParam("scheduleId", scheduleId) + req.PathParam("eventId", eventId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Retrieve schedule event details in this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&typeVal, "type", "", "Type of schedule.") + cmd.MarkFlagRequired("type") + cmd.Flags().StringVar(&scheduleId, "schedule-id", "", "Retrieve the schedule event with the matching schedule ID.") + cmd.MarkFlagRequired("schedule-id") + cmd.Flags().StringVar(&eventId, "event-id", "", "Retrieve the schedule event with the matching schedule event ID.") + cmd.MarkFlagRequired("event-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve schedule event details from this organization.") + locationSchedulesCmd.AddCommand(cmd) + } + + { // update-event + var locationId string + var typeVal string + var scheduleId string + var eventId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-event", + Short: "Update a Schedule Event", + Long: "Update the designated Schedule Event.\n\nA time schedule establishes a set of times during the day or holidays in the year in which a feature, for example auto attendants, can perform a specific action.\n\nUpdating a schedule event requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: The schedule event ID will change upon modification of the schedule event name.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/locations/{locationId}/schedules/{type}/{scheduleId}/events/{eventId}") + req.PathParam("locationId", locationId) + req.PathParam("type", typeVal) + req.PathParam("scheduleId", scheduleId) + req.PathParam("eventId", eventId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location in which this schedule event exists.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&typeVal, "type", "", "Type of schedule. + `businessHours` - Business hours schedule type. + `holidays` - Holidays schedule type.") + cmd.MarkFlagRequired("type") + cmd.Flags().StringVar(&scheduleId, "schedule-id", "", "Update schedule event with the matching schedule ID.") + cmd.MarkFlagRequired("schedule-id") + cmd.Flags().StringVar(&eventId, "event-id", "", "Update the schedule event with the matching schedule event ID.") + cmd.MarkFlagRequired("event-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Update schedule from this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + locationSchedulesCmd.AddCommand(cmd) + } + + { // delete-event + var locationId string + var typeVal string + var scheduleId string + var eventId string + var orgId string + cmd := &cobra.Command{ + Use: "delete-event", + Short: "Delete a Schedule Event", + Long: "Delete the designated Schedule Event.\n\nA time schedule establishes a set of times during the day or holidays in the year in which a feature, for example auto attendants, can perform a specific action.\n\nDeleting a schedule event requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/locations/{locationId}/schedules/{type}/{scheduleId}/events/{eventId}") + req.PathParam("locationId", locationId) + req.PathParam("type", typeVal) + req.PathParam("scheduleId", scheduleId) + req.PathParam("eventId", eventId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location from which to delete a schedule.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&typeVal, "type", "", "Type of schedule.") + cmd.MarkFlagRequired("type") + cmd.Flags().StringVar(&scheduleId, "schedule-id", "", "Delete the schedule with the matching ID.") + cmd.MarkFlagRequired("schedule-id") + cmd.Flags().StringVar(&eventId, "event-id", "", "Delete the schedule event with the matching schedule event ID.") + cmd.MarkFlagRequired("event-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Delete the schedule from this organization.") + locationSchedulesCmd.AddCommand(cmd) + } + + { // create-event + var locationId string + var typeVal string + var scheduleId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-event", + Short: "Create a Schedule Event", + Long: "Create new Event for the given location Schedule.\n\nA time schedule establishes a set of times during the day or holidays in the year in which a feature, for example auto attendants, can perform a specific action.\n\nCreating a schedule event requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/locations/{locationId}/schedules/{type}/{scheduleId}/events") + req.PathParam("locationId", locationId) + req.PathParam("type", typeVal) + req.PathParam("scheduleId", scheduleId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Create the schedule for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&typeVal, "type", "", "Type of schedule.") + cmd.MarkFlagRequired("type") + cmd.Flags().StringVar(&scheduleId, "schedule-id", "", "Create event for a given schedule ID.") + cmd.MarkFlagRequired("schedule-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Create the schedule for this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + locationSchedulesCmd.AddCommand(cmd) + } + +} diff --git a/cmd/calling/location_voicemail.go b/cmd/calling/location_voicemail.go new file mode 100644 index 0000000..ec5c6fc --- /dev/null +++ b/cmd/calling/location_voicemail.go @@ -0,0 +1,471 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package calling + +import ( + "fmt" + "strconv" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa + +var locationVoicemailCmd = &cobra.Command{ + Use: "location-voicemail", + Short: "LocationVoicemail commands", +} + +func init() { + cmd.CallingCmd.AddCommand(locationVoicemailCmd) + + { // get + var locationId string + var orgId string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Location Voicemail", + Long: "Retrieve voicemail settings for a specific location.\n\nLocation voicemail settings allows you to enable voicemail transcription for a specific location.\n\nRetrieving a location's voicemail settings requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/voicemail") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Retrieve voicemail settings for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve voicemail settings for this organization.") + locationVoicemailCmd.AddCommand(cmd) + } + + { // update + var locationId string + var orgId string + var voicemailTranscriptionEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Short: "Update Location Voicemail", + Long: "Update the voicemail settings for a specific location.\n\nLocation voicemail settings allows you to enable voicemail transcription for a specific location.\n\nUpdating a location's voicemail settings requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/locations/{locationId}/voicemail") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("voicemailTranscriptionEnabled", voicemailTranscriptionEnabled, cmd.Flags().Changed("voicemail-transcription-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Update voicemail settings for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Update voicemail settings for this organization.") + cmd.Flags().BoolVar(&voicemailTranscriptionEnabled, "voicemail-transcription-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + locationVoicemailCmd.AddCommand(cmd) + } + + { // get-voiceportal + var locationId string + var orgId string + cmd := &cobra.Command{ + Use: "get-voiceportal", + Short: "Get VoicePortal", + Long: "Retrieve Voice portal information for the location.\n\nVoice portals provide an interactive voice response (IVR)\nsystem so administrators can manage auto attendant announcements.\n\nRetrieving voice portal information for an organization requires a full read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/voicePortal") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location to which the voice portal belongs.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization to which the voice portal belongs.") + locationVoicemailCmd.AddCommand(cmd) + } + + { // update-voiceportal + var locationId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-voiceportal", + Short: "Update VoicePortal", + Long: "Update Voice portal information for the location.\n\nVoice portals provide an interactive voice response (IVR)\nsystem so administrators can manage auto attendant anouncements.\n\nUpdating voice portal information for an organization and/or rules requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/locations/{locationId}/voicePortal") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location to which the voice portal belongs.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Update voicemail rules for this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + locationVoicemailCmd.AddCommand(cmd) + } + + { // get-voiceportal-passcode-rule + var locationId string + var orgId string + cmd := &cobra.Command{ + Use: "get-voiceportal-passcode-rule", + Short: "Get VoicePortal Passcode Rule", + Long: "Retrieve the voice portal passcode rule for a location.\n\nVoice portals provide an interactive voice response (IVR) system so administrators can manage auto attendant anouncements\n\nRetrieving the voice portal passcode rule requires a full read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/voicePortal/passcodeRules") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Retrieve voice portal passcode rules for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve voice portal passcode rules for this organization.") + locationVoicemailCmd.AddCommand(cmd) + } + + { // list-voicemailgroup + var orgId string + var locationId string + var name string + var phoneNumber string + var max string + var start string + cmd := &cobra.Command{ + Use: "list-voicemailgroup", + Short: "List VoicemailGroup", + Long: "List the voicemail group information for the organization.\n\nYou can create a shared voicemail box and inbound FAX box to\nassign to users or call routing features like an auto attendant, call queue, or hunt group.\n\nRetrieving a voicemail group for the organization requires a full read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/voicemailGroups") + req.QueryParam("orgId", orgId) + req.QueryParam("locationId", locationId) + req.QueryParam("name", name) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("max", max) + req.QueryParam("start", start) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization to which the voicemail group belongs.") + cmd.Flags().StringVar(&locationId, "location-id", "", "Location to which the voicemail group belongs.") + cmd.Flags().StringVar(&name, "name", "", "Search (Contains) based on voicemail group name") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Search (Contains) based on number or extension") + cmd.Flags().StringVar(&max, "max", "", "Limit the maximum number of events in the response. The maximum value is `200`.") + cmd.Flags().StringVar(&start, "start", "", "Offset from the first result that you want to fetch.") + locationVoicemailCmd.AddCommand(cmd) + } + + { // get-group + var locationId string + var voicemailGroupId string + var orgId string + cmd := &cobra.Command{ + Use: "get-group", + Short: "Get Location Voicemail Group", + Long: "Retrieve voicemail group details for a location.\n\nManage your voicemail group settings for a specific location, like when you want your voicemail to be active, message storage settings, and how you would like to be notified of new voicemail messages.\n\nRetrieving voicemail group details requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/voicemailGroups/{voicemailGroupId}") + req.PathParam("locationId", locationId) + req.PathParam("voicemailGroupId", voicemailGroupId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Retrieve voicemail group details for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&voicemailGroupId, "voicemail-group-id", "", "Retrieve voicemail group details for this voicemail group ID.") + cmd.MarkFlagRequired("voicemail-group-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve voicemail group details for a customer location.") + locationVoicemailCmd.AddCommand(cmd) + } + + { // update-group + var locationId string + var voicemailGroupId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-group", + Short: "Modify Location Voicemail Group", + Long: "Modifies the voicemail group location details for a particular location for a customer.\n\nManage your voicemail settings, like when you want your voicemail to be active, message storage settings, and how you would like to be notified of new voicemail messages.\n\nModifying the voicemail group location details requires a full, user administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/locations/{locationId}/voicemailGroups/{voicemailGroupId}") + req.PathParam("locationId", locationId) + req.PathParam("voicemailGroupId", voicemailGroupId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Modifies the voicemail group details for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&voicemailGroupId, "voicemail-group-id", "", "Modifies the voicemail group details for this voicemail group ID.") + cmd.MarkFlagRequired("voicemail-group-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Modifies the voicemail group details for a customer location.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + locationVoicemailCmd.AddCommand(cmd) + } + + { // delete-group + var locationId string + var voicemailGroupId string + var orgId string + cmd := &cobra.Command{ + Use: "delete-group", + Short: "Delete a Voicemail Group for a Location", + Long: "Delete the designated voicemail group.\n\nDeleting a voicemail group requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/locations/{locationId}/voicemailGroups/{voicemailGroupId}") + req.PathParam("locationId", locationId) + req.PathParam("voicemailGroupId", voicemailGroupId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location from which to delete a voicemail group.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&voicemailGroupId, "voicemail-group-id", "", "Delete the voicemail group with the matching ID.") + cmd.MarkFlagRequired("voicemail-group-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Delete the voicemail group from this organization.") + locationVoicemailCmd.AddCommand(cmd) + } + + { // create-group + var locationId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-group", + Short: "Create a new Voicemail Group for a Location", + Long: "Create a new voicemail group for the given location for a customer.\n\nA voicemail group can be created for given location for a customer.\n\nCreating a voicemail group for the given location requires a full or user administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/locations/{locationId}/voicemailGroups") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Create a new voice mail group for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Create a new voice mail group for this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + locationVoicemailCmd.AddCommand(cmd) + } + + { // get-group-fax-available-numbers + var locationId string + var orgId string + var max string + var start string + var phoneNumber string + cmd := &cobra.Command{ + Use: "get-group-fax-available-numbers", + Short: "Get Voicemail Group Fax Message Available Phone Numbers", + Long: "List the standard and service PSTN numbers that are available to be assigned as a voicemail group's FAX message phone number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/voicemailGroups/faxMessage/availableNumbers") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("phoneNumber", phoneNumber) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Return the list of phone numbers for this location within the given organization. The maximum length is 36.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "List numbers for this organization.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of phone numbers returned to this maximum count. The default is 2000.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching phone numbers. The default is 0.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array.") + locationVoicemailCmd.AddCommand(cmd) + } + + { // get-group-available-numbers + var locationId string + var orgId string + var max string + var start string + var phoneNumber string + cmd := &cobra.Command{ + Use: "get-group-available-numbers", + Short: "Get Voicemail Group Available Phone Numbers", + Long: "List the service and standard PSTN numbers that are available to be assigned as a voicemail group's phone number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/voicemailGroups/availableNumbers") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("phoneNumber", phoneNumber) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Return the list of phone numbers for this location within the given organization. The maximum length is 36.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "List numbers for this organization.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of phone numbers returned to this maximum count. The default is 2000.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching phone numbers. The default is 0.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array.") + locationVoicemailCmd.AddCommand(cmd) + } + + { // get-voiceportal-available-numbers + var locationId string + var orgId string + var max string + var start string + var phoneNumber string + cmd := &cobra.Command{ + Use: "get-voiceportal-available-numbers", + Short: "Get VoicePortal Available Phone Numbers", + Long: "List the service and standard PSTN numbers that are available to be assigned as the location voice portal's phone number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/voicePortal/availableNumbers") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("phoneNumber", phoneNumber) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Return the list of phone numbers for this location within the given organization. The maximum length is 36.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "List numbers for this organization.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of phone numbers returned to this maximum count. The default is 2000.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching phone numbers. The default is 0.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array.") + locationVoicemailCmd.AddCommand(cmd) + } + +} diff --git a/cmd/calling/locations.go b/cmd/calling/locations.go new file mode 100644 index 0000000..ff02466 --- /dev/null +++ b/cmd/calling/locations.go @@ -0,0 +1,342 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package calling + +import ( + "fmt" + "strconv" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa + +var locationsCmd = &cobra.Command{ + Use: "locations", + Short: "Locations commands", +} + +func init() { + cmd.CallingCmd.AddCommand(locationsCmd) + + { // list + var name string + var id string + var orgId string + var max string + cmd := &cobra.Command{ + Use: "list", + Short: "List Locations", + Long: "List locations for an organization.\n\n* Use query parameters to filter the result set by location name, ID, or organization.\n\n* Long result sets will be split into [pages](/docs/basics#pagination).\n\n* Searching and viewing locations in your organization requires an administrator or location administrator auth token with any of the following scopes: `spark-admin:locations_read`, `spark-admin:people_read` or `spark-admin:device_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/locations") + req.QueryParam("name", name) + req.QueryParam("id", id) + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&name, "name", "", "List locations whose name contains this string (case-insensitive).") + cmd.Flags().StringVar(&id, "id", "", "List locations by ID.") + cmd.Flags().StringVar(&orgId, "org-id", "", "List locations in this organization. Only admin users of another organization (such as partners) may use this parameter.") + cmd.Flags().StringVar(&max, "max", "", "Limit the maximum number of location in the response.") + locationsCmd.AddCommand(cmd) + } + + { // create + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a Location", + Long: "Create a new Location for a given organization. Only an admin in the organization can create a new Location.\n\n* Creating a location in your organization requires a full administrator auth token with a scope of `spark-admin:locations_write`.\n\n* Partners may specify `orgId` query parameter to create location in managed organization.\n\n* The following body parameters are required to create a new location: \n * `name`\n * `timeZone`\n * `preferredLanguage`\n * `address`\n * `announcementLanguage`.\n\n* `latitude`, `longitude` and `notes` are optional parameters to create a new location.\n\n* **Important:** While the `name` field supports up to 256 characters, locations that will be enabled for Webex Calling must have names with a maximum of 80 characters. If you plan to enable calling for this location, ensure the name does not exceed 80 characters to maintain compatibility with Control Hub and calling features.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/locations") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Create a location common attribute for this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + locationsCmd.AddCommand(cmd) + } + + { // get + var locationId string + var orgId string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Location Details", + Long: "Shows details for a location, by ID.\n\n* Specify the location ID in the `locationId` parameter in the URI.\n\n* Use query parameter `orgId` to filter the result set by organization(optional).\n\n* Searching and viewing location in your organization requires an administrator or location administrator auth token with any of the following scopes:\n\n * `spark-admin:locations_read`\n * `spark-admin:people_read`\n * `spark-admin:device_read`", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/locations/{locationId}") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "A unique identifier for the location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Get location common attributes for this organization.") + locationsCmd.AddCommand(cmd) + } + + { // update + var locationId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Short: "Update a Location", + Long: "Update details for a location, by ID.\n\n* Updating a location in your organization requires a full administrator or location administrator auth token with a scope of `spark-admin:locations_write`.\n\n* Specify the location ID in the `locationId` parameter in the URI.\n\n* Partners may specify `orgId` query parameter to update location in managed organization.\n\n* **Important:** While the `name` field supports up to 256 characters, locations that are enabled for Webex Calling must have names with a maximum of 80 characters. If the location is enabled for calling, ensure the name does not exceed 80 characters to maintain compatibility with Control Hub and calling features.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/locations/{locationId}") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Update location common attributes for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Update location common attributes for this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + locationsCmd.AddCommand(cmd) + } + + { // list-floors + var locationId string + cmd := &cobra.Command{ + Use: "list-floors", + Short: "List Location Floors", + Long: "List location floors.\nRequires an administrator auth token with the `spark-admin:locations_read` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/locations/{locationId}/floors") + req.PathParam("locationId", locationId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "A unique identifier for the location.") + cmd.MarkFlagRequired("location-id") + locationsCmd.AddCommand(cmd) + } + + { // create-floor + var locationId string + var floorNumber int64 + var displayName string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-floor", + Short: "Create a Location Floor", + Long: "Create a new floor in the given location. The `displayName` parameter is optional, and omitting it will result in the creation of a floor without that value set.\nRequires an administrator auth token with the `spark-admin:locations_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/locations/{locationId}/floors") + req.PathParam("locationId", locationId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyInt("floorNumber", floorNumber, cmd.Flags().Changed("floor-number")) + req.BodyString("displayName", displayName) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "A unique identifier for the location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().Int64Var(&floorNumber, "floor-number", 0, "") + cmd.Flags().StringVar(&displayName, "display-name", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + locationsCmd.AddCommand(cmd) + } + + { // get-floor + var locationId string + var floorId string + cmd := &cobra.Command{ + Use: "get-floor", + Short: "Get Location Floor Details", + Long: "Shows details for a floor, by ID. Specify the floor ID in the `floorId` parameter in the URI.\nRequires an administrator auth token with the `spark-admin:locations_read` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/locations/{locationId}/floors/{floorId}") + req.PathParam("locationId", locationId) + req.PathParam("floorId", floorId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "A unique identifier for the location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&floorId, "floor-id", "", "A unique identifier for the floor.") + cmd.MarkFlagRequired("floor-id") + locationsCmd.AddCommand(cmd) + } + + { // update-floor + var locationId string + var floorId string + var floorNumber int64 + var displayName string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-floor", + Short: "Update a Location Floor", + Long: "Updates details for a floor, by ID. Specify the floor ID in the `floorId` parameter in the URI. Include all details for the floor returned by a previous call to [Get Location Floor Details](/docs/api/v1/locations/get-location-floor-details). Omitting the optional `displayName` field will result in that field no longer being defined for the floor.\nRequires an administrator auth token with the `spark-admin:locations_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/locations/{locationId}/floors/{floorId}") + req.PathParam("locationId", locationId) + req.PathParam("floorId", floorId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyInt("floorNumber", floorNumber, cmd.Flags().Changed("floor-number")) + req.BodyString("displayName", displayName) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "A unique identifier for the location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&floorId, "floor-id", "", "A unique identifier for the floor.") + cmd.MarkFlagRequired("floor-id") + cmd.Flags().Int64Var(&floorNumber, "floor-number", 0, "") + cmd.Flags().StringVar(&displayName, "display-name", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + locationsCmd.AddCommand(cmd) + } + + { // delete-floor + var locationId string + var floorId string + cmd := &cobra.Command{ + Use: "delete-floor", + Short: "Delete a Location Floor", + Long: "Deletes a floor, by ID.\nRequires an administrator auth token with the `spark-admin:locations_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/locations/{locationId}/floors/{floorId}") + req.PathParam("locationId", locationId) + req.PathParam("floorId", floorId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "A unique identifier for the location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&floorId, "floor-id", "", "A unique identifier for the floor.") + cmd.MarkFlagRequired("floor-id") + locationsCmd.AddCommand(cmd) + } + + { // delete + var locationId string + var orgId string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete Location", + Long: "Delete a location, by ID.\n\n* Specify the location ID in the `locationId` parameter in the URI.\n\n* Deleting a location in your organization requires a full administrator auth token with a scope of `spark-admin:locations_write`.\n\n* NOTE: Disabling Webex Calling for a Webex Calling enabled location is required prior to deleting a location.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/locations/{locationId}") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "A unique identifier for the location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Specify the organization for the location to be deleted.") + locationsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/calling/metrics.go b/cmd/calling/metrics.go new file mode 100644 index 0000000..d6f117e --- /dev/null +++ b/cmd/calling/metrics.go @@ -0,0 +1,71 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package calling + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/Cloverhound/webex-cli/internal/timeutil" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = timeutil.ParseLastISO + +var metricsCmd = &cobra.Command{ + Use: "metrics", + Short: "Metrics commands", +} + +func init() { + cmd.CallingCmd.AddCommand(metricsCmd) + + { // get-call-quality-stats + var from string + var to string + var location string + var last string + cmd := &cobra.Command{ + Use: "get-call-quality-stats", + Short: "Webex Calling Call Quality Stats", + Long: `Returns aggregated Webex Calling call and media-quality statistics for the authenticated organization. A call or media session is classified as good quality when all available audio and video quality measurements meet their defined thresholds. Missing individual quality measurements do not cause the call or session to be classified as poor quality. + +You can query data for a time range of up to seven days within the previous 3 weeks. For older historical data, use the Webex Calling Media Quality dashboard or reports. For more information on Media Quality KPI definitions, [click here](https://help.webex.com/en-us/article/n0rlwxe/Analytics-for-Your-Cloud-Collaboration-Portfolio#Cisco_Concept.dita_7609f9dc-3b80-4c0f-9456-5aaa385c4e27). + +This operation requires a Pro Pack for Control Hub license. The access token must include the analytics:read_all scope and represent either a full administrator or read-only administrator. The organization is derived from the access token. + +
The base URL for these APIs is **analytics.webexapis.com**, which does not work with the **Try It** feature.
`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.AnalyticsBaseURL, "GET", "/v1/analytics/callQualityStats") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("from", from) + req.QueryParam("to", to) + req.QueryParam("location", location) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&from, "from", "", "Inclusive UTC start time in yyyy-MM-ddTHH:mm:ssZ format. If omitted while to is provided, it is seven days before the effective to time. If both times are omitted, it is seven days before the current time.") + cmd.Flags().StringVar(&to, "to", "", "Exclusive UTC end time in yyyy-MM-ddTHH:mm:ssZ format. A value later than the current time is clamped to the current time. If omitted while from is provided, it is the earlier of seven days after from and the current time. If both times are omitted, it is the current time.") + cmd.Flags().StringVar(&location, "location", "", "Exact Webex Calling location name. Omit it or provide an empty value to include all locations.") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + metricsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/calling/mode_management.go b/cmd/calling/mode_management.go new file mode 100644 index 0000000..23740fd --- /dev/null +++ b/cmd/calling/mode_management.go @@ -0,0 +1,270 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package calling + +import ( + "fmt" + "strconv" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa +var _ = strings.Join + +var modeManagementCmd = &cobra.Command{ + Use: "mode-management", + Short: "ModeManagement commands", +} + +func init() { + cmd.CallingCmd.AddCommand(modeManagementCmd) + + { // get-features + cmd := &cobra.Command{ + Use: "get-features", + Short: "Get Mode Management Features", + Long: "Retrieves a list of all mode management features (Auto Attendants, Call Queues, and Hunt Groups) for which the authenticated user has been designated as a mode manager. This API returns basic information about each feature including its ID, name, and type.\n\nMode Management allows designated managers to switch features between different operational configurations based on time schedules or manual triggers. This is useful for managing business hours, holidays, and emergency scenarios.\n\nThis API requires a user auth token with the `spark:telephony_config_read` scope. The authenticated user must be configured as a mode manager for at least one feature to receive results.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/modeManagement/features") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + modeManagementCmd.AddCommand(cmd) + } + + { // get-common + var featureIds string + cmd := &cobra.Command{ + Use: "get-common", + Short: "Get Common Modes", + Long: "Retrieves a list of common operating mode names that are shared across multiple specified features. This API accepts a list of feature IDs and returns only the mode names that exist in all of the specified features, allowing managers to switch multiple features to the same mode simultaneously.\n\nCommon modes are useful when you need to coordinate operational changes across multiple features. For example, switching an entire office to \"Holiday\" mode across all Auto Attendants and Call Queues at once.\n\nThis API requires a user auth token with the `spark:telephony_config_read` scope. The authenticated user must be a mode manager for the specified features.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/modeManagement/features/commonModes") + req.QueryParam("featureIds", featureIds) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&featureIds, "feature-ids", "", "List of feature IDs (comma-separated) for auto attendants, call queues, or hunt groups") + modeManagementCmd.AddCommand(cmd) + } + + { // switch-multiple-features + var featureIds []string + var operatingModeName string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "switch-multiple-features", + Short: "Switch Mode for Multiple Features", + Long: "Switches the operating mode for multiple features simultaneously by specifying a common mode name. This API accepts a list of feature IDs and sets all of them to the specified operating mode, provided that mode exists for all features.\n\nThis bulk operation is particularly useful for coordinating operational changes across an organization, such as activating holiday modes, emergency procedures, or after-hours configurations across multiple Auto Attendants, Call Queues, and Hunt Groups at once.\n\nThis API requires a user auth token with the `spark:telephony_config_write` scope. The authenticated user must be a mode manager for all specified features.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/people/me/settings/modeManagement/features/actions/switchMode/invoke") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("featureIds", featureIds) + req.BodyString("operatingModeName", operatingModeName) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringSliceVar(&featureIds, "feature-ids", nil, "") + cmd.Flags().StringVar(&operatingModeName, "operating-mode-name", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + modeManagementCmd.AddCommand(cmd) + } + + { // get-feature + var featureId string + cmd := &cobra.Command{ + Use: "get-feature", + Short: "Get Mode Management Feature", + Long: "Retrieves detailed information about a specific mode management feature including its current operating mode and exception status. This API provides the feature's ID, name, type, current operating mode ID, and whether it is currently in an exception mode.\n\nException mode indicates that the feature has been manually switched to a different mode than what its schedule dictates. This information is critical for mode managers to understand the current state of their features.\n\nThis API requires a user auth token with the `spark:telephony_config_read` scope. The authenticated user must be a mode manager for the specified feature.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/modeManagement/features/{featureId}") + req.PathParam("featureId", featureId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&featureId, "feature-id", "", "Unique identifier for the feature.") + cmd.MarkFlagRequired("feature-id") + modeManagementCmd.AddCommand(cmd) + } + + { // get-normal-operation + var featureId string + cmd := &cobra.Command{ + Use: "get-normal-operation", + Short: "Get Normal Operation Mode", + Long: "Retrieves the current normal operating mode that the feature is scheduled to be in based on its time schedules. This represents the mode the feature would be in if no manual exceptions or overrides were active.\n\nThe normal operation mode is determined by the feature's configured schedules and may differ from the actual current operating mode if a manual exception has been applied. This API helps managers understand what the scheduled behavior is versus the actual current state.\n\nThis API requires a user auth token with the `spark:telephony_config_read` scope. The authenticated user must be a mode manager for the specified feature.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/modeManagement/features/{featureId}/normalOperationMode") + req.PathParam("featureId", featureId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&featureId, "feature-id", "", "Unique identifier for the feature.") + cmd.MarkFlagRequired("feature-id") + modeManagementCmd.AddCommand(cmd) + } + + { // get-operating + var featureId string + var modeId string + cmd := &cobra.Command{ + Use: "get-operating", + Short: "Get Operating Mode", + Long: "Retrieves detailed information about a specific operating mode for a feature, including the mode's ID and name. This API allows managers to get the details of any operating mode configured for a feature.\n\nOperating modes define different configurations for how a feature behaves (e.g., business hours routing vs. after-hours routing). Each mode has a unique ID and a descriptive name that helps managers identify its purpose.\n\nThis API requires a user auth token with the `spark:telephony_config_read` scope. The authenticated user must be a mode manager for the specified feature.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/me/settings/modeManagement/features/{featureId}/modes/{modeId}") + req.PathParam("featureId", featureId) + req.PathParam("modeId", modeId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&featureId, "feature-id", "", "Unique identifier for the feature.") + cmd.MarkFlagRequired("feature-id") + cmd.Flags().StringVar(&modeId, "mode-id", "", "Unique identifier for the operating mode.") + cmd.MarkFlagRequired("mode-id") + modeManagementCmd.AddCommand(cmd) + } + + { // switch-normal-operation + var featureId string + cmd := &cobra.Command{ + Use: "switch-normal-operation", + Short: "Switch to Normal Operation", + Long: "Switches the feature back to its normal scheduled operation mode, removing any manual exceptions or overrides that may be active. This returns the feature to operating according to its configured time schedules.\n\nThis operation is useful when a temporary manual mode change (exception) is no longer needed and you want to restore automatic schedule-based operation. It effectively cancels any active manual mode switches.\n\nThis API requires a user auth token with the `spark:telephony_config_write` scope. The authenticated user must be a mode manager for the specified feature.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/people/me/settings/modeManagement/features/{featureId}/actions/switchToNormalOperation/invoke") + req.PathParam("featureId", featureId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&featureId, "feature-id", "", "Unique identifier for the feature.") + cmd.MarkFlagRequired("feature-id") + modeManagementCmd.AddCommand(cmd) + } + + { // switch-single-feature + var featureId string + var operatingModeId string + var isManualSwitchbackEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "switch-single-feature", + Short: "Switch Mode for Single Feature", + Long: "Switches the operating mode for a single feature to a specified mode, either temporarily or with manual switchback. This API creates an exception to the feature's normal scheduled operation, allowing managers to manually control the feature's behavior.\n\nYou can configure whether the mode switch is temporary (automatically reverts based on schedule) or requires manual switchback. This is useful for handling unexpected situations like emergency closures, special events, or unscheduled breaks.\n\nThis API requires a user auth token with the `spark:telephony_config_write` scope. The authenticated user must be a mode manager for the specified feature.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/people/me/settings/modeManagement/features/{featureId}/actions/switchMode/invoke") + req.PathParam("featureId", featureId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("operatingModeId", operatingModeId) + req.BodyBool("isManualSwitchbackEnabled", isManualSwitchbackEnabled, cmd.Flags().Changed("is-manual-switchback-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&featureId, "feature-id", "", "Unique identifier for the feature.") + cmd.MarkFlagRequired("feature-id") + cmd.Flags().StringVar(&operatingModeId, "operating-mode-id", "", "") + cmd.Flags().BoolVar(&isManualSwitchbackEnabled, "is-manual-switchback-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + modeManagementCmd.AddCommand(cmd) + } + + { // extend-current-operating-duration + var featureId string + var operatingModeId string + var extensionTime int64 + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "extend-current-operating-duration", + Short: "Extend Current Operating Mode Duration", + Long: "Extends the duration of the current operating mode by adding additional time before it expires or reverts to scheduled operation. This API allows managers to prolong a temporary mode change without having to switch modes again.\n\nExtension time can be specified in 30-minute increments up to 720 minutes (12 hours). If no extension time is provided, the mode is extended with a manual switchback exception, meaning it will remain active until manually changed.\n\nThis API requires a user auth token with the `spark:telephony_config_write` scope. The authenticated user must be a mode manager for the specified feature.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/people/me/settings/modeManagement/features/{featureId}/actions/extendMode/invoke") + req.PathParam("featureId", featureId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("operatingModeId", operatingModeId) + req.BodyInt("extensionTime", extensionTime, cmd.Flags().Changed("extension-time")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&featureId, "feature-id", "", "Unique identifier for the feature.") + cmd.MarkFlagRequired("feature-id") + cmd.Flags().StringVar(&operatingModeId, "operating-mode-id", "", "") + cmd.Flags().Int64Var(&extensionTime, "extension-time", 0, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + modeManagementCmd.AddCommand(cmd) + } + +} diff --git a/cmd/calling/numbers.go b/cmd/calling/numbers.go new file mode 100644 index 0000000..e2ffb3e --- /dev/null +++ b/cmd/calling/numbers.go @@ -0,0 +1,448 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package calling + +import ( + "fmt" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strings.Join + +var numbersCmd = &cobra.Command{ + Use: "numbers", + Short: "Numbers commands", +} + +func init() { + cmd.CallingCmd.AddCommand(numbersCmd) + + { // create-phone-location + var locationId string + var orgId string + var phoneNumbers []string + var numberType string + var numberUsageType string + var state string + var subscriptionId string + var carrierId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-phone-location", + Short: "Add Phone Numbers to a location", + Long: "Adds a specified set of phone numbers to a location for an organization. Phone numbers must follow the E.164 format.\n\nEach location has a set of phone numbers that can be assigned to people, workspaces, or features. Active phone numbers are in service.\n\nAdding a phone number to a location requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\nPhone numbers included in the request that already exist in the location will simply be ignored.\n\n
\n\n
This API is only supported for adding DID and Toll-free numbers to non-integrated PSTN connection types such as Local Gateway (LGW) and Non-integrated CPP. It should never be used for locations with integrated PSTN connection types like Cisco Calling Plans or Integrated CCP because backend data issues may occur.\n
\n
Mobile numbers can be added to any location that has PSTN connection setup. Only 20 mobile numbers can be added per request.\n
", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/locations/{locationId}/numbers") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("phoneNumbers", phoneNumbers) + req.BodyString("numberType", numberType) + req.BodyString("numberUsageType", numberUsageType) + req.BodyString("state", state) + req.BodyString("subscriptionId", subscriptionId) + req.BodyString("carrierId", carrierId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "LocationId to which numbers should be added.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization of the Route Group.") + cmd.Flags().StringSliceVar(&phoneNumbers, "phone-numbers", nil, "") + cmd.Flags().StringVar(&numberType, "number-type", "", "") + cmd.Flags().StringVar(&numberUsageType, "number-usage-type", "", "") + cmd.Flags().StringVar(&state, "state", "", "") + cmd.Flags().StringVar(&subscriptionId, "subscription-id", "", "") + cmd.Flags().StringVar(&carrierId, "carrier-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + numbersCmd.AddCommand(cmd) + } + + { // manage-state-location + var locationId string + var orgId string + var phoneNumbers []string + var action string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "manage-state-location", + Short: "Manage Number State in a location", + Long: "Activate or deactivate the specified set of phone numbers in a location for an organization.\n\nEach location has a set of phone numbers that can be assigned to people, workspaces, or features. Phone numbers must follow the E.164 format.\n\nActive phone numbers are in service. A mobile number is activated when assigned to a user. This API will not activate or deactivate mobile numbers.\n\nManaging phone number state in a location requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n
\n\n
This API is only supported for non-integrated PSTN connection types of Local Gateway (LGW) and Non-integrated CCP.
", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/locations/{locationId}/numbers") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("phoneNumbers", phoneNumbers) + req.BodyString("action", action) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "`LocationId` to which numbers should be added.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization of the Route Group.") + cmd.Flags().StringSliceVar(&phoneNumbers, "phone-numbers", nil, "") + cmd.Flags().StringVar(&action, "action", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + numbersCmd.AddCommand(cmd) + } + + { // delete-phone-location + var locationId string + var orgId string + var phoneNumbers []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "delete-phone-location", + Short: "Remove phone numbers from a location", + Long: "Remove the specified set of phone numbers from a location for an organization.\n\nPhone numbers must follow the E.164 format.\n\nRemoving a mobile number may require more time depending on mobile carrier capabilities.\n\nRemoving a phone number from a location requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\nA location's main number cannot be removed.\n\n
\n\n
This API is only supported for non-integrated PSTN connection types of Local Gateway (LGW) and Non-integrated CPP. It should never be used for locations with integrated PSTN connection types like Cisco Calling Plans or Integrated CCP because backend data issues may occur.
", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/locations/{locationId}/numbers") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("phoneNumbers", phoneNumbers) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "`LocationId` to which numbers should be added.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization of the Route Group.") + cmd.Flags().StringSliceVar(&phoneNumbers, "phone-numbers", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + numbersCmd.AddCommand(cmd) + } + + { // validate-phone + var orgId string + var phoneNumbers []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "validate-phone", + Short: "Validate phone numbers", + Long: "Validate the list of phone numbers in an organization. Each phone number's availability is indicated in the response.\n\nEach location has a set of phone numbers that can be assigned to people, workspaces, or features. Phone numbers must follow the E.164 format for all countries, except for the United States, which can also follow the National format. Active phone numbers are in service.\n\nValidating a phone number in an organization requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/actions/validateNumbers/invoke") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("phoneNumbers", phoneNumbers) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization of the Route Group.") + cmd.Flags().StringSliceVar(&phoneNumbers, "phone-numbers", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + numbersCmd.AddCommand(cmd) + } + + { // get-phone-org + var orgId string + var locationId string + var max string + var start string + var phoneNumber string + var available string + var order string + var ownerName string + var ownerId string + var ownerType string + var extension string + var numberType string + var phoneNumberType string + var state string + var details string + var tollFreeNumbers string + var restrictedNonGeoNumbers string + var includedTelephonyTypes string + var serviceNumber string + cmd := &cobra.Command{ + Use: "get-phone-org", + Short: "Get Phone Numbers for an Organization with Given Criteria", + Long: "List all the phone numbers for the given organization along with the status and owner (if any).\n\nNumbers can be standard, service, or mobile. Both standard and service numbers are PSTN numbers.\nService numbers are considered high-utilization or high-concurrency phone numbers and can be assigned to features like auto-attendants, call queues, and hunt groups.\nPhone numbers can be linked to a specific location, be active or inactive, and be assigned or unassigned.\nThe owner of a number is the person, workspace, or feature to which the number is assigned.\nOnly a person can own a mobile number.\n\nRetrieving this list requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/numbers") + req.QueryParam("orgId", orgId) + req.QueryParam("locationId", locationId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("available", available) + req.QueryParam("order", order) + req.QueryParam("ownerName", ownerName) + req.QueryParam("ownerId", ownerId) + req.QueryParam("ownerType", ownerType) + req.QueryParam("extension", extension) + req.QueryParam("numberType", numberType) + req.QueryParam("phoneNumberType", phoneNumberType) + req.QueryParam("state", state) + req.QueryParam("details", details) + req.QueryParam("tollFreeNumbers", tollFreeNumbers) + req.QueryParam("restrictedNonGeoNumbers", restrictedNonGeoNumbers) + req.QueryParam("includedTelephonyTypes", includedTelephonyTypes) + req.QueryParam("serviceNumber", serviceNumber) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List numbers for this organization.") + cmd.Flags().StringVar(&locationId, "location-id", "", "Return the list of phone numbers for this location within the given organization. The maximum length is 36.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of phone numbers returned to this maximum count. The default is 2000.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching phone numbers. The default is 0.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Search for this `phoneNumber`.") + cmd.Flags().StringVar(&available, "available", "", "Search among the available phone numbers. This parameter cannot be used along with `ownerType` parameter when set to `true`.") + cmd.Flags().StringVar(&order, "order", "", "Sort the list of phone numbers based on the following:`lastName`,`dn`,`extension`. Sorted by number and extension in ascending order.") + cmd.Flags().StringVar(&ownerName, "owner-name", "", "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255.") + cmd.Flags().StringVar(&ownerId, "owner-id", "", "Returns only the matched number/extension entries assigned to the feature with the specified UUID or `broadsoftId`.") + cmd.Flags().StringVar(&ownerType, "owner-type", "", "Returns the list of phone numbers of the given `ownerType`. Possible input values:") + cmd.Flags().StringVar(&extension, "extension", "", "Returns the list of phone numbers with the given extension.") + cmd.Flags().StringVar(&numberType, "number-type", "", "Returns the filtered list of phone numbers that contain a given type of number. `available` or `state` query parameters cannot be used when `numberType=EXTENSION`. Possible input values:") + cmd.Flags().StringVar(&phoneNumberType, "phone-number-type", "", "Returns the filtered list of phone numbers of the given `phoneNumberType`. Response excludes any extensions without numbers. Possible input values:") + cmd.Flags().StringVar(&state, "state", "", "Returns the list of phone numbers with the matching state. Response excludes any extensions without numbers. Possible input values:") + cmd.Flags().StringVar(&details, "details", "", "Returns the overall count of the phone numbers along with other details for a given organization.") + cmd.Flags().StringVar(&tollFreeNumbers, "toll-free-numbers", "", "Returns the list of toll-free phone numbers.") + cmd.Flags().StringVar(&restrictedNonGeoNumbers, "restricted-non-geo-numbers", "", "Returns the list of restricted non-geographical numbers.") + cmd.Flags().StringVar(&includedTelephonyTypes, "included-telephony-types", "", "Returns the list of phone numbers that are of given `includedTelephonyTypes`. By default, if this query parameter is not provided, it will list both PSTN and Mobile Numbers. Possible input values are PSTN_NUMBER or MOBILE_NUMBER.") + cmd.Flags().StringVar(&serviceNumber, "service-number", "", "Returns the list of service phone numbers.") + numbersCmd.AddCommand(cmd) + } + + { // list-manage-jobs + var orgId string + var start string + var max string + cmd := &cobra.Command{ + Use: "list-manage-jobs", + Short: "List Manage Numbers Jobs", + Long: "Lists all Manage Numbers jobs for the given organization in order of most recent one to oldest one irrespective of its status.\n\nThe public API only supports initiating jobs which move numbers between locations.\n\nVia Control Hub they can initiate both the move and delete, so this listing can show both.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/jobs/numbers/manageNumbers") + req.QueryParam("orgId", orgId) + req.QueryParam("start", start) + req.QueryParam("max", max) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve list of Manage Number jobs for this organization.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of jobs. Default is 0.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of jobs returned to this maximum count. Default is 2000.") + numbersCmd.AddCommand(cmd) + } + + { // initiate-jobs + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "initiate-jobs", + Short: "Initiate Number Jobs", + Long: "Starts the execution of an operation on a set of numbers. Supported operations are: `MOVE`, `NUMBER_USAGE_CHANGE`.\n\nUp to 1000 numbers can be given in `MOVE` operation type and `NUMBER_USAGE_CHANGE` operation type per request.\nIf another move number job request is initiated while a move job is in progress, the API call will receive a `409` HTTP status code.\n\nIn order to move a number the following is required:\n\n* The number must be unassigned.\n\n* Both locations must have the same PSTN Connection Type.\n\n* Both locations must have the same PSTN Provider.\n\n* Both locations have to be in the same country.\n\nFor example, you can move from Cisco Calling Plan to Cisco Calling Plan, but you cannot move from Cisco Calling Plan to a location with Cloud Connected PSTN.\n\nIn order to change the number usage the following is required:\n\n* The number must be unassigned.\n\n* Number Usage Type can be set to `NONE` if carrier has the PSTN service `GEOGRAPHIC_NUMBERS`.\n\n* Number Usage Type can be set to `SERVICE` if carrier has the PSTN service `SERVICE_NUMBERS`.\n\nFor example, you can initiate a `NUMBER_USAGE_CHANGE` job to change the number type from Standard number to Service number, or the other way around.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/jobs/numbers/manageNumbers") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + numbersCmd.AddCommand(cmd) + } + + { // get-manage-job-status + var jobId string + cmd := &cobra.Command{ + Use: "get-manage-job-status", + Short: "Get Manage Numbers Job Status", + Long: "Returns the status and other details of the job.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/jobs/numbers/manageNumbers/{jobId}") + req.PathParam("jobId", jobId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&jobId, "job-id", "", "Retrieve job details for this `jobId`.") + cmd.MarkFlagRequired("job-id") + numbersCmd.AddCommand(cmd) + } + + { // pause-manage-job + var jobId string + var orgId string + cmd := &cobra.Command{ + Use: "pause-manage-job", + Short: "Pause the Manage Numbers Job", + Long: "Pause the running Manage Numbers Job. A paused job can be resumed.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/jobs/numbers/manageNumbers/{jobId}/actions/pause/invoke") + req.PathParam("jobId", jobId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&jobId, "job-id", "", "Pause the Manage Numbers job for this `jobId`.") + cmd.MarkFlagRequired("job-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Pause the Manage Numbers job for this organization.") + numbersCmd.AddCommand(cmd) + } + + { // resume-manage-job + var jobId string + var orgId string + cmd := &cobra.Command{ + Use: "resume-manage-job", + Short: "Resume the Manage Numbers Job", + Long: "Resume the paused Manage Numbers Job. A paused job can be resumed.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/jobs/numbers/manageNumbers/{jobId}/actions/resume/invoke") + req.PathParam("jobId", jobId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&jobId, "job-id", "", "Resume the Manage Numbers job for this `jobId`.") + cmd.MarkFlagRequired("job-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Resume the Manage Numbers job for this organization.") + numbersCmd.AddCommand(cmd) + } + + { // list-manage-job-errors + var jobId string + var orgId string + var start string + var max string + cmd := &cobra.Command{ + Use: "list-manage-job-errors", + Short: "List Manage Numbers Job errors", + Long: "Lists all error details of Manage Numbers job. This will not list any errors if `exitCode` is `COMPLETED`. If the status is `COMPLETED_WITH_ERRORS` then this lists the cause of failures.\n\nList of possible Errors:\n\n+ BATCH-1017021 - Failed to move because it is an inactive number.\n\n+ BATCH-1017022 - Failed to move because the source location and target location have different CCP providers.\n\n+ BATCH-1017023 - Failed because it is not an unassigned number.\n\n+ BATCH-1017024 - Failed because it is a main number.\n\n+ BATCH-1017027 - Manage Numbers Move Operation is not supported.\n\n+ BATCH-1017031 - Hydra request is supported only for single number move job.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/jobs/numbers/manageNumbers/{jobId}/errors") + req.PathParam("jobId", jobId) + req.QueryParam("orgId", orgId) + req.QueryParam("start", start) + req.QueryParam("max", max) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&jobId, "job-id", "", "Retrieve the error details for this `jobId`.") + cmd.MarkFlagRequired("job-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve list of jobs for this organization.") + cmd.Flags().StringVar(&start, "start", "", "Specifies the error offset from the first result that you want to fetch.") + cmd.Flags().StringVar(&max, "max", "", "Specifies the maximum number of records that you want to fetch.") + numbersCmd.AddCommand(cmd) + } + +} diff --git a/cmd/calling/operating_modes.go b/cmd/calling/operating_modes.go new file mode 100644 index 0000000..11bcad8 --- /dev/null +++ b/cmd/calling/operating_modes.go @@ -0,0 +1,396 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package calling + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var operatingModesCmd = &cobra.Command{ + Use: "operating-modes", + Short: "OperatingModes commands", +} + +func init() { + cmd.CallingCmd.AddCommand(operatingModesCmd) + + { // list + var name string + var limitToLocationId string + var limitToOrgLevelEnabled string + var max string + var start string + var order string + var orgId string + cmd := &cobra.Command{ + Use: "list", + Short: "Read the List of Operating Modes", + Long: "Retrieve `Operating Modes` list defined at location, or organization level. Use query parameters to filter the result set by location or level. The list returned is sorted in ascending order by operating mode name. Long result sets are split into [pages](/docs/basics#pagination).\n\n`Operating modes` help manage calls more efficiently by routing them based on predefined settings.\n\nRetrieving this list requires a full, read-only, or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/operatingModes") + req.QueryParam("name", name) + req.QueryParam("limitToLocationId", limitToLocationId) + req.QueryParam("limitToOrgLevelEnabled", limitToOrgLevelEnabled) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("order", order) + req.QueryParam("orgId", orgId) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&name, "name", "", "List `operating modes` whose name contains this string.") + cmd.Flags().StringVar(&limitToLocationId, "limit-to-location-id", "", "Location query parameter to filter the `operating modes` from that location only.") + cmd.Flags().StringVar(&limitToOrgLevelEnabled, "limit-to-org-level-enabled", "", "If true, only return `operating modes` defined at the organization level.") + cmd.Flags().StringVar(&max, "max", "", "Maximum number of `operating modes` to return in a single page. `max` must be equal to, or greater than `1`, and equal to or less than `100`.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching objects.") + cmd.Flags().StringVar(&order, "order", "", "Sort the list of `operating modes` based on `name`, either asc, or desc.") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve `operating modes` list from this organization.") + operatingModesCmd.AddCommand(cmd) + } + + { // get + var modeId string + var orgId string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Details for an Operating Mode", + Long: "Retrieve an `Operating Mode` by `Operating Mode ID`.\n\n`Operating modes` can be used to define call routing rules for different scenarios like business hours, after hours, holidays, etc.\n\nRetrieving an `operating mode` requires a full, read-only, or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/operatingModes/{modeId}") + req.PathParam("modeId", modeId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&modeId, "mode-id", "", "Get the `operating mode` with the matching ID.") + cmd.MarkFlagRequired("mode-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Get the `operating mode` from this organization.") + operatingModesCmd.AddCommand(cmd) + } + + { // update + var modeId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Short: "Modify an Operating Mode", + Long: "Modify the designated `Operating Mode's` configuration.\n\n`Operating modes` can be used to define call routing rules for different scenarios like business hours, after hours, holidays, etc.\n\nModifying an `Operating Mode` requires a full, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/operatingModes/{modeId}") + req.PathParam("modeId", modeId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&modeId, "mode-id", "", "Modify the `operating mode` with the matching ID.") + cmd.MarkFlagRequired("mode-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Modify the `operating mode` from this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + operatingModesCmd.AddCommand(cmd) + } + + { // delete + var modeId string + var orgId string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete an Operating Mode", + Long: "Delete the designated `Operating Mode`.\n\nDeleting an `Operating Mode` requires a full, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/operatingModes/{modeId}") + req.PathParam("modeId", modeId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&modeId, "mode-id", "", "Delete the `operating mode` with the matching ID.") + cmd.MarkFlagRequired("mode-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Delete the `operating mode` from this organization.") + operatingModesCmd.AddCommand(cmd) + } + + { // create + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create an Operating Mode", + Long: "Create an `Operating Mode` at an organization, or a location level.\n\n`Operating modes` can be used to define call routing rules for different scenarios like business hours, after hours, holidays, etc.\n\nCreating an `Operating Mode` requires a full, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/operatingModes") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Create the `operating mode` for this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + operatingModesCmd.AddCommand(cmd) + } + + { // get-holiday + var modeId string + var holidayId string + var orgId string + cmd := &cobra.Command{ + Use: "get-holiday", + Short: "Get details for an Operating Mode Holiday", + Long: "Retrieve an `Operating Mode Holiday` by ID.\n\nHolidays define a recurring schedule for the `Operating Modes`.\n\nRetrieving an `Operating Mode Holiday` requires a full, read-only, or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/operatingModes/{modeId}/holidays/{holidayId}") + req.PathParam("modeId", modeId) + req.PathParam("holidayId", holidayId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&modeId, "mode-id", "", "Get the holiday from this `operating mode` matching ID.") + cmd.MarkFlagRequired("mode-id") + cmd.Flags().StringVar(&holidayId, "holiday-id", "", "Get the `operating mode Holiday` with the matching ID.") + cmd.MarkFlagRequired("holiday-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Get the `operating mode` from this organization.") + operatingModesCmd.AddCommand(cmd) + } + + { // update-holiday + var modeId string + var holidayId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-holiday", + Short: "Modify an Operating Mode Holiday", + Long: "Modify the designated `Operating Mode Holiday's` configuration.\n\nModifying an `Operating Mode Holiday` requires a full, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/operatingModes/{modeId}/holidays/{holidayId}") + req.PathParam("modeId", modeId) + req.PathParam("holidayId", holidayId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&modeId, "mode-id", "", "Modify the holiday from this `operating mode` matching ID.") + cmd.MarkFlagRequired("mode-id") + cmd.Flags().StringVar(&holidayId, "holiday-id", "", "Modify the `Holiday` with the matching ID.") + cmd.MarkFlagRequired("holiday-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Modify the `operating mode` from this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + operatingModesCmd.AddCommand(cmd) + } + + { // delete-holiday + var modeId string + var holidayId string + var orgId string + cmd := &cobra.Command{ + Use: "delete-holiday", + Short: "Delete an Operating Mode Holiday", + Long: "Delete the designated `Operating Mode Holiday`.\n\nDeleting an `Operating Mode Holiday` requires a full, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/operatingModes/{modeId}/holidays/{holidayId}") + req.PathParam("modeId", modeId) + req.PathParam("holidayId", holidayId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&modeId, "mode-id", "", "Delete the holiday from this `operating mode` matching ID.") + cmd.MarkFlagRequired("mode-id") + cmd.Flags().StringVar(&holidayId, "holiday-id", "", "Delete the holiday with the matching ID.") + cmd.MarkFlagRequired("holiday-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Delete the `operating mode` from this organization.") + operatingModesCmd.AddCommand(cmd) + } + + { // create-holiday + var modeId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-holiday", + Short: "Create an Operating Mode Holiday", + Long: "Create a holiday schedule event for the designated `Operating Mode`.\n\nHolidays define a recurring schedule for the `Operating Modes`. An `Operating Mode` can have a max of 150 holidays.\n\nCreating an `Operating Mode Holiday` requires a full, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/operatingModes/{modeId}/holidays") + req.PathParam("modeId", modeId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&modeId, "mode-id", "", "Create the holiday for this `operating mode`.") + cmd.MarkFlagRequired("mode-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Create the `operating mode holiday` for this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + operatingModesCmd.AddCommand(cmd) + } + + { // list-available-location + var locationId string + var orgId string + cmd := &cobra.Command{ + Use: "list-available-location", + Short: "Retrieve the List of Available Operating Modes in a Location", + Long: "Retrieve list of `Operating Modes` which are available to be assigned to a location level feature (`Auto Attendant`, `Call Queue`, or `Hunt Group`). Since each location and an org can have a max of 100 `Operating Modes` defined. The max number of `operating modes` that can be returned is 200.\n\n`Operating modes` can be used to define call routing rules for different scenarios like business hours, after hours, holidays, etc. for the `Auto Attendant`, `Call Queue`, and `Hunt Group` features.\n\nRetrieving this list requires a full, read-only, or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/operatingModes/availableOperatingModes") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Retrieve `operating modes` list from this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve `operating modes` list from this organization.") + operatingModesCmd.AddCommand(cmd) + } + + { // get-forward-available-numbers + var locationId string + var orgId string + var max string + var start string + var phoneNumber string + var ownerName string + var extension string + cmd := &cobra.Command{ + Use: "get-forward-available-numbers", + Short: "Get Operating Mode Call Forward Available Phone Numbers", + Long: "List the service and standard PSTN numbers that are available to be assigned as a operating mode's call forward number.\n\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are assigned to an owning entity.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/operatingModes/callForwarding/availableNumbers") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("ownerName", ownerName) + req.QueryParam("extension", extension) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Return the list of phone numbers for this location within the given organization. The maximum length is 36.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "List numbers for this organization.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of phone numbers returned to this maximum count. The default is 2000.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching phone numbers. The default is 0.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array.") + cmd.Flags().StringVar(&ownerName, "owner-name", "", "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255.") + cmd.Flags().StringVar(&extension, "extension", "", "Returns the list of PSTN phone numbers with the given `extension`.") + operatingModesCmd.AddCommand(cmd) + } + +} diff --git a/cmd/calling/paging_group.go b/cmd/calling/paging_group.go new file mode 100644 index 0000000..f1ea166 --- /dev/null +++ b/cmd/calling/paging_group.go @@ -0,0 +1,243 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package calling + +import ( + "fmt" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strings.Join + +var pagingGroupCmd = &cobra.Command{ + Use: "paging-group", + Short: "PagingGroup commands", +} + +func init() { + cmd.CallingCmd.AddCommand(pagingGroupCmd) + + { // list + var orgId string + var max string + var start string + var locationId string + var name string + var phoneNumber string + cmd := &cobra.Command{ + Use: "list", + Short: "Read the List of Paging Groups", + Long: "List all Paging Groups for the organization.\n\nGroup Paging allows a person to place a one-way call or group page to up to 75 people and/or workspaces by\ndialing a number or extension assigned to a specific paging group. The Group Paging service makes a simultaneous call to all the assigned targets.\n\nRetrieving this list requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/paging") + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("locationId", locationId) + req.QueryParam("name", name) + req.QueryParam("phoneNumber", phoneNumber) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List paging groups for this organization.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of objects returned to this maximum count. Default is 2000") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching objects. Default is 0") + cmd.Flags().StringVar(&locationId, "location-id", "", "Return only paging groups with matching location ID. Default is all locations") + cmd.Flags().StringVar(&name, "name", "", "Return only paging groups with the matching name.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Return only paging groups with matching primary phone number or extension.") + pagingGroupCmd.AddCommand(cmd) + } + + { // create + var locationId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a new Paging Group", + Long: "Create a new Paging Group for the given location.\n\nGroup Paging allows a one-way call or group page to up to 75 people, workspaces and virtual lines by\ndialing a number or extension assigned to a specific paging group. The Group Paging service makes a simultaneous call to all the assigned targets.\n\nCreating a paging group requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/locations/{locationId}/paging") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Create the paging group for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Create the paging group for this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + pagingGroupCmd.AddCommand(cmd) + } + + { // delete + var locationId string + var pagingId string + var orgId string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete a Paging Group", + Long: "Delete the designated Paging Group.\n\nGroup Paging allows a person to place a one-way call or group page to up to 75 people and/or workspaces by\ndialing a number or extension assigned to a specific paging group. The Group Paging service makes a simultaneous call to all the assigned targets.\n\nDeleting a paging group requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/locations/{locationId}/paging/{pagingId}") + req.PathParam("locationId", locationId) + req.PathParam("pagingId", pagingId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location from which to delete a paging group.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&pagingId, "paging-id", "", "Delete the paging group with the matching ID.") + cmd.MarkFlagRequired("paging-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Delete the paging group from this organization.") + pagingGroupCmd.AddCommand(cmd) + } + + { // get + var locationId string + var pagingId string + var orgId string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Details for a Paging Group", + Long: "Retrieve Paging Group details.\n\nGroup Paging allows a person, place or virtual line a one-way call or group page to up to 75 people and/or workspaces and/or virtual line by\ndialing a number or extension assigned to a specific paging group. The Group Paging service makes a simultaneous call to all the assigned targets.\n\nRetrieving paging group details requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/paging/{pagingId}") + req.PathParam("locationId", locationId) + req.PathParam("pagingId", pagingId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Retrieve settings for a paging group in this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&pagingId, "paging-id", "", "Retrieve settings for the paging group with this identifier.") + cmd.MarkFlagRequired("paging-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve paging group settings from this organization.") + pagingGroupCmd.AddCommand(cmd) + } + + { // update + var locationId string + var pagingId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Short: "Update a Paging Group", + Long: "Update the designated Paging Group.\n\nGroup Paging allows a person to place a one-way call or group page to up to 75 people, workspaces and virtual lines by\ndialing a number or extension assigned to a specific paging group. The Group Paging service makes a simultaneous call to all the assigned targets.\n\nUpdating a paging group requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/locations/{locationId}/paging/{pagingId}") + req.PathParam("locationId", locationId) + req.PathParam("pagingId", pagingId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Update settings for a paging group in this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&pagingId, "paging-id", "", "Update settings for the paging group with this identifier.") + cmd.MarkFlagRequired("paging-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Update paging group settings from this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + pagingGroupCmd.AddCommand(cmd) + } + + { // get-primary-numbers + var locationId string + var orgId string + var max string + var start string + var phoneNumber string + cmd := &cobra.Command{ + Use: "get-primary-numbers", + Short: "Get Paging Group Primary Available Phone Numbers", + Long: "List the service and standard PSTN numbers that are available to be assigned as the paging group's primary phone number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/paging/availableNumbers") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("phoneNumber", phoneNumber) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Return the list of phone numbers for this location within the given organization. The maximum length is 36.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "List numbers for this organization.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of phone numbers returned to this maximum count. The default is 2000.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching phone numbers. The default is 0.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array.") + pagingGroupCmd.AddCommand(cmd) + } + +} diff --git a/cmd/calling/partner_reports_templates.go b/cmd/calling/partner_reports_templates.go new file mode 100644 index 0000000..24fc4f8 --- /dev/null +++ b/cmd/calling/partner_reports_templates.go @@ -0,0 +1,204 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package calling + +import ( + "fmt" + "strconv" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/Cloverhound/webex-cli/internal/timeutil" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa +var _ = timeutil.ParseLastISO + +var partnerReportsTemplatesCmd = &cobra.Command{ + Use: "partner-reports-templates", + Short: "PartnerReportsTemplates commands", +} + +func init() { + cmd.CallingCmd.AddCommand(partnerReportsTemplatesCmd) + + { // list + var service string + var templateId string + var from string + var to string + var regionId string + var onBehalfOfSubPartnerOrgId string + var last string + cmd := &cobra.Command{ + Use: "list", + Short: "List Reports", + Long: "Lists all reports previously generated from a given region. Use query parameters to filter the response. The parameters are optional.\n\nTo access this endpoint, you must use an administrator token with `spark-admin:reports_read` and `identity:people_read` scopes.\n\n
CSV reports for Webex suite services are only supported for organizations based in one region per API request. Organizations based in a different region will require a separate request with region specified.
\n\n
When no region is specified, the request defaults to Partner organization's home region.
\n\n
Reports are usually provided in zip format. A content-header application/zip or application/octet-stream does indicate the zip format. There is usually no .zip file extension.
", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/partner/reports") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("service", service) + req.QueryParam("templateId", templateId) + req.QueryParam("from", from) + req.QueryParam("to", to) + req.QueryParam("regionId", regionId) + req.QueryParam("onBehalfOfSubPartnerOrgId", onBehalfOfSubPartnerOrgId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&service, "service", "", "List reports which use this service.") + cmd.Flags().StringVar(&templateId, "template-id", "", "List reports with this report template ID.") + cmd.Flags().StringVar(&from, "from", "", "List reports that were created on or after this date.") + cmd.Flags().StringVar(&to, "to", "", "List reports that were created before this date.") + cmd.Flags().StringVar(®ionId, "region-id", "", "Data in the report will be from organizations in this region, for example, US, CA, or EU.") + cmd.Flags().StringVar(&onBehalfOfSubPartnerOrgId, "on-behalf-of-sub-partner-org-id", "", "The encoded organization ID for the sub partner.") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + partnerReportsTemplatesCmd.AddCommand(cmd) + } + + { // create + var onBehalfOfSubPartnerOrgId string + var templateId int64 + var startDate string + var endDate string + var regionId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a Report", + Long: "Create a new report. A new report can be created using `templateId` available from the _List Report Templates_ API. For each `templateId`, there are a set of validation rules that need to be followed.\n\nThe `templateId` parameter is a number. However, it is a limitation of developer.webex.com platform that it is passed as a string when you try to test the API from here.\n\nTo access this endpoint, you must use an administrator token with `spark-admin:reports_write` and `identity:people_read` scopes.\n\n**Notes**:\n\n
CSV reports for Webex suite services are only created for organizations in the specified region. Organizations based in a different region will require a separate request with region specified.
\n\n
When no region is specified, the request defaults to Partner organization's home region. A request against a region where there are no organizations will return blank CSV files.
", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/partner/reports") + req.QueryParam("onBehalfOfSubPartnerOrgId", onBehalfOfSubPartnerOrgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyInt("templateId", templateId, cmd.Flags().Changed("template-id")) + req.BodyString("startDate", startDate) + req.BodyString("endDate", endDate) + req.BodyString("regionId", regionId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&onBehalfOfSubPartnerOrgId, "on-behalf-of-sub-partner-org-id", "", "The encoded organization ID for the sub partner.") + cmd.Flags().Int64Var(&templateId, "template-id", 0, "") + cmd.Flags().StringVar(&startDate, "start-date", "", "") + cmd.Flags().StringVar(&endDate, "end-date", "", "") + cmd.Flags().StringVar(®ionId, "region-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + partnerReportsTemplatesCmd.AddCommand(cmd) + } + + { // get + var reportId string + var onBehalfOfSubPartnerOrgId string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Report Details", + Long: "Shows details for a report by report ID.\n\nSpecify the report ID in the `reportId` parameter in the URI.\n\nTo access this endpoint, you must use an administrator token with `spark-admin:reports_read` and `identity:people_read` scopes.\n\n**Notes**:\n\n
Reports are usually provided in zip format. A content-header application/zip or application/octet-stream does indicate the zip format. There is usually no .zip file extension.
", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/partner/reports/{reportId}") + req.PathParam("reportId", reportId) + req.QueryParam("onBehalfOfSubPartnerOrgId", onBehalfOfSubPartnerOrgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&reportId, "report-id", "", "The unique identifier for the report.") + cmd.MarkFlagRequired("report-id") + cmd.Flags().StringVar(&onBehalfOfSubPartnerOrgId, "on-behalf-of-sub-partner-org-id", "", "The encoded organization ID for the sub partner.") + partnerReportsTemplatesCmd.AddCommand(cmd) + } + + { // delete + var reportId string + var onBehalfOfSubPartnerOrgId string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete a Report", + Long: "Remove a report from the system.\n\nSpecify the report ID in the `reportId` parameter in the URI\n\nTo access this endpoint, you must use an administrator token with `spark-admin:reports_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/partner/reports/{reportId}") + req.PathParam("reportId", reportId) + req.QueryParam("onBehalfOfSubPartnerOrgId", onBehalfOfSubPartnerOrgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&reportId, "report-id", "", "The unique identifier for the report.") + cmd.MarkFlagRequired("report-id") + cmd.Flags().StringVar(&onBehalfOfSubPartnerOrgId, "on-behalf-of-sub-partner-org-id", "", "The encoded organization ID for the sub partner.") + partnerReportsTemplatesCmd.AddCommand(cmd) + } + + { // list-2 + var onBehalfOfSubPartnerOrgId string + cmd := &cobra.Command{ + Use: "list-2", + Short: "List Report Templates", + Long: "List report templates. Report templates are available for use with the Partner Reports API.\n\nTo access this endpoint, you must use an administrator token with `spark-admin:reports_read` and `identity:people_read` [scopes](/docs/integrations#scopes). The authenticated user must be a Partner full administrator or Partner read-only administrator of the organization.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/partner/reports/templates") + req.QueryParam("onBehalfOfSubPartnerOrgId", onBehalfOfSubPartnerOrgId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&onBehalfOfSubPartnerOrgId, "on-behalf-of-sub-partner-org-id", "", "The encoded organization ID for the sub partner.") + partnerReportsTemplatesCmd.AddCommand(cmd) + } + +} diff --git a/cmd/calling/people.go b/cmd/calling/people.go new file mode 100644 index 0000000..e8966c2 --- /dev/null +++ b/cmd/calling/people.go @@ -0,0 +1,222 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package calling + +import ( + "fmt" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strings.Join + +var peopleCmd = &cobra.Command{ + Use: "people", + Short: "People commands", +} + +func init() { + cmd.CallingCmd.AddCommand(peopleCmd) + + { // list + var email string + var displayName string + var id string + var orgId string + var roles string + var callingData string + var locationId string + var max string + var excludeStatus string + cmd := &cobra.Command{ + Use: "list", + Short: "List People", + Long: "List people in your organization. For most users, either the `email` or `displayName` parameter is required. Admin users can omit these fields and list all users in their organization.\n\nResponse properties associated with a user's presence status, such as `status` or `lastActivity`, will only be returned for people within your organization or an organization you manage. Presence information will not be returned if the authenticated user has [disabled status sharing](https://help.webex.com/nkzs6wl/). Calling /people frequently to poll `status` information for a large set of users will quickly lead to `429` errors and throttling of such requests and is therefore discouraged.\n\nAdmin users can include `Webex Calling` (BroadCloud) user details in the response by specifying `callingData` parameter as `true`. Admin users can list all users in a location. Admin users will receive an enriched payload with additional administrative fields like `licenses`,`roles`, `locations` etc. These fields are shown when accessing a user via GET /people/{id}, not when doing a GET /people?id=\n\nLookup by `email` is only supported for people within the same org or where a partner admin relationship is in place.\n\nLookup by `roles` is only supported for Admin users for the people within the same org.\n\nLong result sets will be split into [pages](/docs/basics#pagination).", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/people") + req.QueryParam("email", email) + req.QueryParam("displayName", displayName) + req.QueryParam("id", id) + req.QueryParam("orgId", orgId) + req.QueryParam("roles", roles) + req.QueryParam("callingData", callingData) + req.QueryParam("locationId", locationId) + req.QueryParam("max", max) + req.QueryParam("excludeStatus", excludeStatus) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&email, "email", "", "List people with this email address. For non-admin requests, either this or `displayName` are required. With the exception of partner admins and a managed org relationship, people lookup by email is only available for users in the same org.") + cmd.Flags().StringVar(&displayName, "display-name", "", "List people whose name starts with this string. For non-admin requests, either this or email are required.") + cmd.Flags().StringVar(&id, "id", "", "List people by ID. Accepts up to 85 person IDs separated by commas. If this parameter is provided then presence information (such as the `lastActivity` or `status` properties) will not be included in the response.") + cmd.Flags().StringVar(&orgId, "org-id", "", "List people in this organization. Only admin users of another organization (such as partners) may use this parameter.") + cmd.Flags().StringVar(&roles, "roles", "", "List of roleIds separated by commas.") + cmd.Flags().StringVar(&callingData, "calling-data", "", "Include Webex Calling user details in the response.") + cmd.Flags().StringVar(&locationId, "location-id", "", "List people present in this location.") + cmd.Flags().StringVar(&max, "max", "", "Limit the maximum number of people in the response. If `callingData`=true, then `max` will not be more than 100. If `locationId` is specified then `max` will not be more than 50.") + cmd.Flags().StringVar(&excludeStatus, "exclude-status", "", "Omit people status/availability to enhance query performance.") + peopleCmd.AddCommand(cmd) + } + + { // create-person + var callingData string + var minResponse string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-person", + Short: "Create a Person", + Long: "Create a new user account for a given organization. Only an admin can create a new user account.\n\nAt least one of the following body parameters is required to create a new user: `displayName`, `firstName`, `lastName`.\n\nCurrently, users may have only one email address associated with their account. The `emails` parameter is an array, which accepts multiple values to allow for future expansion, but currently only one email address will be used for the new user.\n\nAdmin users can include `Webex calling` (BroadCloud) user details in the response by specifying `callingData` parameter as true. It may happen that the POST request with calling data returns a 400 status, but the person was created still. One way to get into this state is if an invalid phone number is assigned to a user. The people API aggregates calls to several other microservices, and one may have failed. A best practice is to check if the user exists before retrying. This can be done with the user's email address and a GET /people.\n\nWhen doing attendee management, append `#attendee` to the `siteUrl` parameter (e.g. `mysite.webex.com#attendee`) to make the new user an attendee for a site.\n\n**NOTES**:\n\n* For creating a `Webex Calling` user, you must provide `phoneNumbers` or `extension`, `locationId`, and `licenses` string in the same request.\n\n* `SipAddresses` are asigned via an asynchronous process. This means that the POST response may not show the SIPAddresses immediately. Instead you can verify them with a separate GET to /people, after they were newly configured.\n\n* When assigning multiple licenses in a single request, the system will assign all valid and available licenses. If any requested licenses cannot be assigned, the operation will continue with the remaining licenses. As a result, it is possible that not all requested licenses are assigned to the user.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/people") + req.QueryParam("callingData", callingData) + req.QueryParam("minResponse", minResponse) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callingData, "calling-data", "", "Include Webex Calling user details in the response.") + cmd.Flags().StringVar(&minResponse, "min-response", "", "Set to `true` to improve performance by omitting person details and returning only the ID in the response when successful. If unsuccessful the response will have optional error details.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + peopleCmd.AddCommand(cmd) + } + + { // get-person + var personId string + var callingData string + cmd := &cobra.Command{ + Use: "get-person", + Short: "Get Person Details", + Long: "Shows details for a person, by ID.\n\nResponse properties associated with a user's presence status, such as `status` or `lastActivity`, will only be displayed for people within your organization or an organization you manage. Presence information will not be shown if the authenticated user has [disabled status sharing](https://help.webex.com/nkzs6wl/).\n\nAdmin users can include `Webex Calling` (BroadCloud) user details in the response by specifying `callingData` parameter as `true`.\n\nSpecify the person ID in the `personId` parameter in the URI.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/people/{personId}") + req.PathParam("personId", personId) + req.QueryParam("callingData", callingData) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&callingData, "calling-data", "", "Include Webex Calling user details in the response.") + peopleCmd.AddCommand(cmd) + } + + { // update-person + var personId string + var callingData string + var showAllTypes string + var minResponse string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-person", + Short: "Update a Person", + Long: "Update details for a person, by ID.\n\nSpecify the person ID in the `personId` parameter in the URI. Only an admin can update a person details.\n\nInclude all details for the person. This action expects all user details to be present in the request. A common approach is to first [GET the person's details](/docs/api/v1/people/get-person-details), make changes, then PUT both the changed and unchanged values.\n\nAdmin users can include `Webex Calling` (BroadCloud) user details in the response by specifying `callingData` parameter as true.\n\nWhen doing attendee management, to update a user from host role to an attendee for a site append `#attendee` to the respective `siteUrl` and remove the meeting host license for this site from the license array.\nTo update a person from an attendee role to a host for a site, add the meeting license for this site in the meeting array, and remove that site from the `siteurl` parameter.\n\nTo remove the attendee privilege for a user on a meeting site, remove the `sitename#attendee` from the `siteUrl`s array. The `showAllTypes` parameter must be set to `true`.\n\n**NOTE**:\n\n* The `locationId` can only be set when assigning a calling license to a user. It cannot be changed if a user is already an existing calling user.\n\n* The `extension` field should be used to update the Webex Calling extension for a person. The extension value should not include the location routing prefix. The `work_extension` type in the `phoneNumbers` object as seen in the response payload of [List People](/docs/api/v1/people/list-people) or [Get Person Details](/docs/api/v1/people/get-person-details), cannot be used to set the Webex Calling extension for a person.\n\n* When updating a user with multiple email addresses using a PUT request, ensure that the primary email address is listed first in the array. Note that the order of email addresses returned by a GET request is not guaranteed..\n\n* The People API is a combination of several microservices, each responsible for specific attributes of a person. As a result, a PUT request that returns an error response code may still have altered some values of the person's data. Therefore, it is recommended to perform a GET request after encountering an error to verify the current state of the resource. \n\n* Some licenses are implicitly assigned by the system and cannot be admin controlled. They are necessary for the baseline function of the Webex system. If you get an error about implicitly assigned licensed that cannot be removed, please ensure you have the corresponding license in your PUT request.\n\n* When assigning multiple licenses in a single request, the system will assign all valid and available licenses. If any requested licenses cannot be assigned, the operation will continue with the remaining licenses. As a result, it is possible that not all requested licenses are assigned to the user.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/people/{personId}") + req.PathParam("personId", personId) + req.QueryParam("callingData", callingData) + req.QueryParam("showAllTypes", showAllTypes) + req.QueryParam("minResponse", minResponse) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&callingData, "calling-data", "", "Include Webex Calling user details in the response.") + cmd.Flags().StringVar(&showAllTypes, "show-all-types", "", "Include additional user data like `#attendee` role.") + cmd.Flags().StringVar(&minResponse, "min-response", "", "Set to `true` to improve performance by omitting person details in the response. If unsuccessful the response will have optional error details.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + peopleCmd.AddCommand(cmd) + } + + { // delete-person + var personId string + cmd := &cobra.Command{ + Use: "delete-person", + Short: "Delete a Person", + Long: "Remove a person from the system.\n\n**Required Administrator Roles:**\n\nThe following administrators have permission to use this API:\n\n**Customer Organization:**\n- Full administrator\n- User administrator\n\n**Partner/External Access:**\n- External full administrator\n\n**Note:** External read-only administrators, provisioning administrators, and device administrators cannot delete users.\n\nSpecify the person ID in the `personId` parameter in the URI.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/people/{personId}") + req.PathParam("personId", personId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + peopleCmd.AddCommand(cmd) + } + + { // get-my-own + var callingData string + cmd := &cobra.Command{ + Use: "get-my-own", + Short: "Get My Own Details", + Long: "Get profile details for the authenticated user. This is the same as GET `/people/{personId}` using the Person ID associated with your Auth token.\n\nAdmin users can include `Webex Calling` (BroadCloud) user details in the response by specifying `callingData` parameter as true.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/people/me") + req.QueryParam("callingData", callingData) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callingData, "calling-data", "", "Include Webex Calling user details in the response.") + peopleCmd.AddCommand(cmd) + } + +} diff --git a/cmd/calling/pstn.go b/cmd/calling/pstn.go new file mode 100644 index 0000000..d2c7f52 --- /dev/null +++ b/cmd/calling/pstn.go @@ -0,0 +1,326 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package calling + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var pstnCmd = &cobra.Command{ + Use: "pstn", + Short: "Pstn commands", +} + +func init() { + cmd.CallingCmd.AddCommand(pstnCmd) + + { // get-connection-options-location + var locationId string + var orgId string + var serviceTypes string + cmd := &cobra.Command{ + Use: "get-connection-options-location", + Short: "Retrieve PSTN Connection Options for a Location", + Long: "Retrieve the list of PSTN connection options available for a location.\n\nPSTN location connection settings enables the admin to configure or change the PSTN provider for a location.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_pstn_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/pstn/locations/{locationId}/connectionOptions") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + req.QueryParam("serviceTypes", serviceTypes) + req.QueryParam("serviceTypes", serviceTypes) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Return the list of List PSTN location connection options for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "List PSTN location connection options for this organization.") + cmd.Flags().StringVar(&serviceTypes, "service-types", "", "Use the `serviceTypes` parameter to fetch connections for the following services * `MOBILE_NUMBERS`") + pstnCmd.AddCommand(cmd) + } + + { // setup-connection-location + var locationId string + var orgId string + var id string + var premiseRouteType string + var premiseRouteId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "setup-connection-location", + Short: "Setup PSTN Connection for a Location", + Long: "Set up or update the PSTN connection details for a location.\n\nPSTN location connection settings enables the admin to configure or change the PSTN provider for a location.\n\nSetting up PSTN connection on a location requires a full administrator auth token with scopes of `spark-admin:telephony_pstn_write` and `spark-admin:telephony_pstn_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/pstn/locations/{locationId}/connection") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("id", id) + req.BodyString("premiseRouteType", premiseRouteType) + req.BodyString("premiseRouteId", premiseRouteId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Setup PSTN location connection options for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Setup PSTN location connection for this organization.") + cmd.Flags().StringVar(&id, "id", "", "") + cmd.Flags().StringVar(&premiseRouteType, "premise-route-type", "", "") + cmd.Flags().StringVar(&premiseRouteId, "premise-route-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + pstnCmd.AddCommand(cmd) + } + + { // get-connection-location + var locationId string + var orgId string + cmd := &cobra.Command{ + Use: "get-connection-location", + Short: "Retrieve PSTN Connection for a Location", + Long: "Retrieves the current configured PSTN connection details for a location.\n\nPSTN location connection settings enables the admin to configure or change the PSTN provider for a location.\n\nRetrieving the PSTN connection details for a location requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_pstn_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/pstn/locations/{locationId}/connection") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Retrieve PSTN location connection details for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve PSTN location connection details for this organization.") + pstnCmd.AddCommand(cmd) + } + + { // update-emergency-address-phone-number + var phoneNumber string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-emergency-address-phone-number", + Short: "Update the Emergency Address for a Phone Number", + Long: "Update the emergency address for a phone number.\n\nEmergency address settings allow the admin to configure or update the physical address associated with a phone number or a location.\n\nUpdating the emergency address for a phone number requires a full administrator auth token with scope of `spark-admin:telephony_pstn_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/pstn/numbers/{phoneNumber}/emergencyAddress") + req.PathParam("phoneNumber", phoneNumber) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Update the emergency address for this phone number.") + cmd.MarkFlagRequired("phone-number") + cmd.Flags().StringVar(&orgId, "org-id", "", "Update the emergency address of phone number in this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + pstnCmd.AddCommand(cmd) + } + + { // emergency-address-lookup-verify-address-is-valid + var locationId string + var orgId string + var address1 string + var address2 string + var city string + var state string + var postalCode string + var country string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "emergency-address-lookup-verify-address-is-valid", + Short: "Emergency Address Lookup to Verify if Address is Valid", + Long: "Returns a suggested address. If the input address is valid and unchanged, no errors are returned. If the input address requires corrections, the response includes a suggested address along with error details.\n\nEmergency address settings allow the admin to configure or update the physical address associated with a phone number or a location.\n\nEmergency address lookup to verify if address is valid requires a full administrator auth token with scope of `spark-admin:telephony_pstn_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/pstn/locations/{locationId}/emergencyAddress/lookup") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("address1", address1) + req.BodyString("address2", address2) + req.BodyString("city", city) + req.BodyString("state", state) + req.BodyString("postalCode", postalCode) + req.BodyString("country", country) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Emergency address lookup for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Emergency address lookup for this organization.") + cmd.Flags().StringVar(&address1, "address1", "", "") + cmd.Flags().StringVar(&address2, "address2", "", "") + cmd.Flags().StringVar(&city, "city", "", "") + cmd.Flags().StringVar(&state, "state", "", "") + cmd.Flags().StringVar(&postalCode, "postal-code", "", "") + cmd.Flags().StringVar(&country, "country", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + pstnCmd.AddCommand(cmd) + } + + { // create-emergency-address-location + var locationId string + var orgId string + var address1 string + var address2 string + var city string + var state string + var postalCode string + var country string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-emergency-address-location", + Short: "Add an Emergency Address to a Location", + Long: "Adds a new emergency address to the specified location. On success, returns the unique identifier of the newly created emergency address.\n\nEmergency address settings allow the admin to configure or update the physical address associated with a phone number or a location.\n\nAdding emergency address to a location requires a full administrator auth token with scope of `spark-admin:telephony_pstn_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/pstn/locations/{locationId}/emergencyAddress") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("address1", address1) + req.BodyString("address2", address2) + req.BodyString("city", city) + req.BodyString("state", state) + req.BodyString("postalCode", postalCode) + req.BodyString("country", country) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location to which the emergency address will be added.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Adding emergency address for a location in this organization.") + cmd.Flags().StringVar(&address1, "address1", "", "") + cmd.Flags().StringVar(&address2, "address2", "", "") + cmd.Flags().StringVar(&city, "city", "", "") + cmd.Flags().StringVar(&state, "state", "", "") + cmd.Flags().StringVar(&postalCode, "postal-code", "", "") + cmd.Flags().StringVar(&country, "country", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + pstnCmd.AddCommand(cmd) + } + + { // update-emergency-address-location + var locationId string + var addressId string + var orgId string + var address1 string + var address2 string + var city string + var state string + var postalCode string + var country string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-emergency-address-location", + Short: "Update the Emergency Address of a Location", + Long: "Updates the emergency address of the specified location.\n\nEmergency address settings allow the admin to configure or update the physical address associated with a phone number or a location.\n\nUpdating the emergency address of a location requires a full administrator auth token with scope of `spark-admin:telephony_pstn_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/pstn/locations/{locationId}/emergencyAddresses/{addressId}") + req.PathParam("locationId", locationId) + req.PathParam("addressId", addressId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("address1", address1) + req.BodyString("address2", address2) + req.BodyString("city", city) + req.BodyString("state", state) + req.BodyString("postalCode", postalCode) + req.BodyString("country", country) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Location for which the emergency address will be updated.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&addressId, "address-id", "", "Unique identifier for the emergency address that will be updated.") + cmd.MarkFlagRequired("address-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Updating the emergency address of a location in this organization.") + cmd.Flags().StringVar(&address1, "address1", "", "") + cmd.Flags().StringVar(&address2, "address2", "", "") + cmd.Flags().StringVar(&city, "city", "", "") + cmd.Flags().StringVar(&state, "state", "", "") + cmd.Flags().StringVar(&postalCode, "postal-code", "", "") + cmd.Flags().StringVar(&country, "country", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + pstnCmd.AddCommand(cmd) + } + +} diff --git a/cmd/calling/recording_report.go b/cmd/calling/recording_report.go new file mode 100644 index 0000000..6d6436d --- /dev/null +++ b/cmd/calling/recording_report.go @@ -0,0 +1,192 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package calling + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/Cloverhound/webex-cli/internal/timeutil" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = timeutil.ParseLastISO + +var recordingReportCmd = &cobra.Command{ + Use: "recording-report", + Short: "RecordingReport commands", +} + +func init() { + cmd.CallingCmd.AddCommand(recordingReportCmd) + + { // list-audit-summaries + var max string + var from string + var to string + var hostEmail string + var siteUrl string + var timezone string + var last string + cmd := &cobra.Command{ + Use: "list-audit-summaries", + Short: "List of Recording Audit Report Summaries", + Long: "Lists of recording audit report summaries. You can specify a date range and the maximum number of recording audit report summaries to return.\n\nOnly recording audit report summaries of meetings hosted by or shared with the authenticated user will be listed.\n\nThe list returned is sorted in descending order by the date and time that the recordings were created.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n* If `siteUrl` is specified, the recording audit report summaries of the specified site will be listed; otherwise, recording audit report summaries of the user's preferred site will be listed. All available Webex sites and the preferred site of the user can be retrieved by the `Get Site List` API.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/recordingReport/accessSummary") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("max", max) + req.QueryParam("from", from) + req.QueryParam("to", to) + req.QueryParam("hostEmail", hostEmail) + req.QueryParam("siteUrl", siteUrl) + req.Header("timezone", timezone) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&max, "max", "", "Maximum number of recording audit report summaries to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`.") + cmd.Flags().StringVar(&from, "from", "", "Starting date and time (inclusive) for recording audit report summaries to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`. Please note that the interval between `to` and `from` cannot exceed 90 days and the interval between the current time and `from` cannot exceed 365 days.") + cmd.Flags().StringVar(&to, "to", "", "Ending date and time (exclusive) for recording audit report summaries to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`. Please note that the interval between `to` and `from` cannot exceed 90 days and the interval between the current time and `from` cannot exceed 365 days.") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin on-behalf-of scopes. If set, the admin may specify the email of a user in a site they manage and the API will return recording audit report summaries of that user. If a special value of `all` is set for `hostEmail`, the admin can list recording audit report summaries of all users on the target site, not of a single user.") + cmd.Flags().StringVar(&siteUrl, "site-url", "", "URL of the Webex site which the API lists recording audit report summaries from. If not specified, the API lists summary audit report for recordings from the user's preferred site. All available Webex sites and the preferred site of the user can be retrieved by `Get Site List` API.") + cmd.Flags().StringVar(&timezone, "timezone", "", "e.g. UTC") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + recordingReportCmd.AddCommand(cmd) + } + + { // get-audit + var recordingId string + var hostEmail string + var max string + var timezone string + cmd := &cobra.Command{ + Use: "get-audit", + Short: "Get Recording Audit Report Details", + Long: "Retrieves details for a recording audit report with a specified recording ID.\n\nOnly recording audit report details of meetings hosted by or shared with the authenticated user may be retrieved.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/recordingReport/accessDetail") + req.QueryParam("recordingId", recordingId) + req.QueryParam("hostEmail", hostEmail) + req.QueryParam("max", max) + req.Header("timezone", timezone) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&recordingId, "recording-id", "", "A unique identifier for the recording.") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin on-behalf-of scopes. If set, the admin may specify the email of a user in a site they manage and the API will return recording details of that user.") + cmd.Flags().StringVar(&max, "max", "", "Maximum number of recording audit report details to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`.") + cmd.Flags().StringVar(&timezone, "timezone", "", "e.g. UTC") + recordingReportCmd.AddCommand(cmd) + } + + { // list-meeting-archive-summaries + var max string + var from string + var to string + var siteUrl string + var timezone string + var last string + cmd := &cobra.Command{ + Use: "list-meeting-archive-summaries", + Short: "List Meeting Archive Summaries", + Long: "Lists of meeting archive summaries. You can specify a date range and the maximum number of meeting archive summaries to return.\n\nMeeting archive summaries are only available to full administrators, not even the meeting host.\n\nThe list returned is sorted in descending order by the date and time that the archives were created.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n* If `siteUrl` is specified, the meeting archive summaries of the specified site will be listed; otherwise, meeting archive summaries of the user's preferred site will be listed. All available Webex sites and the preferred site of the user can be retrieved by the `Get Site List` API.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/recordingReport/meetingArchiveSummaries") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("max", max) + req.QueryParam("from", from) + req.QueryParam("to", to) + req.QueryParam("siteUrl", siteUrl) + req.Header("timezone", timezone) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&max, "max", "", "Maximum number of meeting archive summaries to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`.") + cmd.Flags().StringVar(&from, "from", "", "Starting date and time (inclusive) for meeting archive summaries to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`. Please note that the interval between `to` and `from` cannot exceed 30 days.") + cmd.Flags().StringVar(&to, "to", "", "Ending date and time (exclusive) for meeting archive summaries to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`. Please note that the interval between `to` and `from` cannot exceed 30 days.") + cmd.Flags().StringVar(&siteUrl, "site-url", "", "URL of the Webex site which the API lists meeting archive summaries from. If not specified, the API lists meeting archive summaries for recordings from the user's preferred site. All available Webex sites and the preferred site of the user can be retrieved by `Get Site List` API.") + cmd.Flags().StringVar(&timezone, "timezone", "", "e.g. UTC") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + recordingReportCmd.AddCommand(cmd) + } + + { // get-meeting-archive + var archiveId string + var timezone string + cmd := &cobra.Command{ + Use: "get-meeting-archive", + Short: "Get Meeting Archive Details", + Long: "Retrieves details for a meeting archive report with a specified archive ID, which contains recording metadata.\n\nMeeting archive details are only available to full administrators, not even the meeting host.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/recordingReport/meetingArchives/{archiveId}") + req.PathParam("archiveId", archiveId) + req.Header("timezone", timezone) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&archiveId, "archive-id", "", "A unique identifier for the meeting archive summary.") + cmd.MarkFlagRequired("archive-id") + cmd.Flags().StringVar(&timezone, "timezone", "", "e.g. UTC") + recordingReportCmd.AddCommand(cmd) + } + +} diff --git a/cmd/calling/reports.go b/cmd/calling/reports.go new file mode 100644 index 0000000..0772cf5 --- /dev/null +++ b/cmd/calling/reports.go @@ -0,0 +1,164 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package calling + +import ( + "fmt" + "strconv" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/Cloverhound/webex-cli/internal/timeutil" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa +var _ = timeutil.ParseLastISO + +var reportsCmd = &cobra.Command{ + Use: "reports", + Short: "Reports commands", +} + +func init() { + cmd.CallingCmd.AddCommand(reportsCmd) + + { // list + var reportId string + var service string + var templateId string + var from string + var to string + var last string + cmd := &cobra.Command{ + Use: "list", + Short: "List Reports", + Long: "Lists all reports. Use query parameters to filter the response. The parameters are optional. However, `from` and `to` parameters should be provided together.\n\n**Notes**:\nCSV reports for Webex suite services are only supported for organizations based in the North American region. Organizations based in a different region will return blank CSV files for any Teams reports.\n\nReports are usually provided in zip format. A Content-header `application/zip` or `application/octet-stream` does indicate the zip format. There is usually no .zip file extension.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/reports") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("reportId", reportId) + req.QueryParam("service", service) + req.QueryParam("templateId", templateId) + req.QueryParam("from", from) + req.QueryParam("to", to) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&reportId, "report-id", "", "List reports by ID.") + cmd.Flags().StringVar(&service, "service", "", "List reports which use this service.") + cmd.Flags().StringVar(&templateId, "template-id", "", "List reports with this report template ID.") + cmd.Flags().StringVar(&from, "from", "", "List reports that were created on or after this date.") + cmd.Flags().StringVar(&to, "to", "", "List reports that were created before this date.") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + reportsCmd.AddCommand(cmd) + } + + { // create + var templateId int64 + var startDate string + var endDate string + var siteList string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a Report", + Long: "Create a new report. For each `templateId`, there are a set of validation rules that need to be followed. For example, for templates belonging to Webex, the user needs to provide `siteUrl`. These validation rules can be retrieved via the [Report Templates API](/docs/api/v1/report-templates).\n\nThe 'templateId' parameter is a number. However, it is a limitation of developer.webex.com platform that it is passed as a string when you try to test the API from here.\n\nCSV reports for Webex suite services are only supported for organizations based in the North American region. Organizations based in a different region will return blank CSV files for any Teams reports.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/reports") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyInt("templateId", templateId, cmd.Flags().Changed("template-id")) + req.BodyString("startDate", startDate) + req.BodyString("endDate", endDate) + req.BodyString("siteList", siteList) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().Int64Var(&templateId, "template-id", 0, "") + cmd.Flags().StringVar(&startDate, "start-date", "", "") + cmd.Flags().StringVar(&endDate, "end-date", "", "") + cmd.Flags().StringVar(&siteList, "site-list", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + reportsCmd.AddCommand(cmd) + } + + { // get + var reportId string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Report Details", + Long: "Shows details for a report, by report ID.\n\nSpecify the report ID in the `reportId` parameter in the URI.\n\n**Notes**:\nCSV reports for Webex suite services are only supported for organizations based in the North American region. Organizations based in a different region will return blank CSV files for any Teams reports.\n\nReports are usually provided in zip format. A Content-header `application/zip` or `application/octet-stream` does indicate the zip format. There is usually no .zip file extension.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/reports/{reportId}") + req.PathParam("reportId", reportId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&reportId, "report-id", "", "The unique identifier for the report.") + cmd.MarkFlagRequired("report-id") + reportsCmd.AddCommand(cmd) + } + + { // delete + var reportId string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete a Report", + Long: "Remove a report from the system.\n\nSpecify the report ID in the `reportId` parameter in the URI\n\nCSV reports for Webex suite services are only supported for organizations based in the North American region. Organizations based in a different region will return blank CSV files for any Teams reports.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/reports/{reportId}") + req.PathParam("reportId", reportId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&reportId, "report-id", "", "The unique identifier for the report.") + cmd.MarkFlagRequired("report-id") + reportsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/calling/reports_detailed_call_history.go b/cmd/calling/reports_detailed_call_history.go new file mode 100644 index 0000000..fe6496b --- /dev/null +++ b/cmd/calling/reports_detailed_call_history.go @@ -0,0 +1,102 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package calling + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var reportsDetailedCallHistoryCmd = &cobra.Command{ + Use: "reports-detailed-call-history", + Short: "ReportsDetailedCallHistory commands", +} + +func init() { + cmd.CallingCmd.AddCommand(reportsDetailedCallHistoryCmd) + + { // get + var startTime string + var endTime string + var locations string + var max string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Detailed Call History", + Long: "Provides Webex Calling Detailed Call History data for your organization.\n\nResults can be filtered with the `startTime`, `endTime` and `locations` request parameters. The `startTime` and `endTime` parameters specify the start and end of the time period for the Detailed Call History reports you wish to collect. The API will return all reports that were created between `startTime` and `endTime`.\n\n

\nResponse entries may be added as more information is made available for the reports.\nValues in response items may be extended as more capabilities are added to Webex Calling.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.AnalyticsCallingBaseURL(), "GET", "/cdr_feed") + req.QueryParam("startTime", startTime) + req.QueryParam("endTime", endTime) + req.QueryParam("locations", locations) + req.QueryParam("max", max) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&startTime, "start-time", "", "Time of the first report you wish to collect. (Report time is the time the call finished). **Note:** The specified time must be between 5 minutes ago and 48 hours ago, and formatted as `YYYY-MM-DDTHH:MM:SS.mmmZ`.") + cmd.Flags().StringVar(&endTime, "end-time", "", "Time of the last report you wish to collect. (Report time is the time the call finished). **Note:** The specified time should be later than `startTime` but no later than 48 hours, and formatted as `YYYY-MM-DDTHH:MM:SS.mmmZ`.") + cmd.Flags().StringVar(&locations, "locations", "", "Name of the location (as shown in Control Hub). Up to 10 comma-separated locations can be provided. Allows you to query reports by location.") + cmd.Flags().StringVar(&max, "max", "", "Limit the maximum number of reports per page of the response. The range is 500 to 5000. Values below 500 are automatically adjusted up to 500, and values above 5000 are automatically adjusted down to 5000. When the API has more reports to return than the max value, the API response will be paginated. Follow the next link contained in the “Link” header within a response to request the next page of results. If there is no next link, all reports for the selected time range have been collected. For instance, let's say the initial API request is https://analytics-calling.webexapis.com/v1/cdr_feed?endTime=2025-08-15T10:00:00.000Z&startTime=2025-08-15T08:00:00.000Z&max=5000 The link header in the response would look something like <;rel=\"next\">") + reportsDetailedCallHistoryCmd.AddCommand(cmd) + } + + { // get-live-stream + var startTime string + var endTime string + var locations string + var max string + cmd := &cobra.Command{ + Use: "get-live-stream", + Short: "Get Live Stream Detailed Call History", + Long: "Provides Webex Calling Detailed Call History data for your organization.\n\nResults can be filtered with the `startTime`, `endTime` and `locations` request parameters. The `startTime` and `endTime` parameters specify the time window during which Detailed Call History data was inserted into the Webex Calling cloud. The API will return all reports whose insertion time into the Webex Calling cloud falls between `startTime` and `endTime`.\n\n

\nResponse entries may be added as more information is made available for the reports.\nValues in response items may be extended as more capabilities are added to Webex Calling.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.AnalyticsCallingBaseURL(), "GET", "/cdr_stream") + req.QueryParam("startTime", startTime) + req.QueryParam("endTime", endTime) + req.QueryParam("locations", locations) + req.QueryParam("max", max) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&startTime, "start-time", "", "The start date-time of the first record you wish to collect in UTC time. It would be the earliest time at which the data was inserted into the Webex Calling cloud for the records you wish to collect. Format must be as `YYYY-MM-DDTHH:MM:SS.mmmZ`. `startTime` can't be older than 12 hours from your current UTC time. The window period between `startTime` and `endTime` must not exceed 2 hours in a single API request.") + cmd.Flags().StringVar(&endTime, "end-time", "", "The end date-time of the last record you wish to collect in UTC time. It would be the latest time at which the data was inserted into the Webex Calling cloud for the records you wish to collect. Format must be as `YYYY-MM-DDTHH:MM:SS.mmmZ`. `endTime` must be 1 minute ago from your current UTC time and can’t be older than 12 hours. `endTime` must be greater than `startTime`. The window period between `startTime` and `endTime` must not exceed 2 hours in a single API request.") + cmd.Flags().StringVar(&locations, "locations", "", "Name of the location (as shown in Control Hub). Up to 10 comma-separated locations can be provided. Allows you to query reports by location.") + cmd.Flags().StringVar(&max, "max", "", "Limit the maximum number of reports per page of the response. The range is 500 to 5000. Values below 500 are automatically adjusted up to 500, and values above 5000 are automatically adjusted down to 5000. When the API has more reports to return than the max value, the API response will be paginated. Follow the next link contained in the “Link” header within a response to request the next page of results. If there is no next link, all reports for the selected time range have been collected. For instance, let's say the initial API request is https://analytics-calling.webexapis.com/v1/cdr_stream?endTime=2025-08-15T10:00:00.000Z&startTime=2025-08-15T08:00:00.000Z&max=5000 The link header in the response would look something like <;rel=\"next\">") + reportsDetailedCallHistoryCmd.AddCommand(cmd) + } + +} diff --git a/cmd/calling/send_activation_email.go b/cmd/calling/send_activation_email.go new file mode 100644 index 0000000..aa26dd3 --- /dev/null +++ b/cmd/calling/send_activation_email.go @@ -0,0 +1,110 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package calling + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var sendActivationEmailCmd = &cobra.Command{ + Use: "send-activation-email", + Short: "SendActivationEmail commands", +} + +func init() { + cmd.CallingCmd.AddCommand(sendActivationEmailCmd) + + { // initiate-bulk-resend-job + var orgId string + cmd := &cobra.Command{ + Use: "initiate-bulk-resend-job", + Short: "Initiate Bulk Activation Email Resend Job", + Long: "Initiate a bulk activation email resend job that sends an activation email to all eligible users in an organization. Only a single instance of the job can be running for an organization.\n\nRequires a full or user administrator auth token with a scope of `spark-admin:people_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/identity/organizations/{orgId}/jobs/sendActivationEmails") + req.PathParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Initiate job for this organization.") + cmd.MarkFlagRequired("org-id") + sendActivationEmailCmd.AddCommand(cmd) + } + + { // get-bulk-resend-job-status + var orgId string + var jobId string + cmd := &cobra.Command{ + Use: "get-bulk-resend-job-status", + Short: "Get Bulk Activation Email Resend Job Status", + Long: "Get the details of an activation email resend job by its job ID.\n\nRequires a full or user administrator auth token with a scope of `spark-admin:people_write` or read-only administrator auth token with a scope of `spark-admin:people_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/identity/organizations/{orgId}/jobs/sendActivationEmails/{jobId}/status") + req.PathParam("orgId", orgId) + req.PathParam("jobId", jobId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Check job status for this organization.") + cmd.MarkFlagRequired("org-id") + cmd.Flags().StringVar(&jobId, "job-id", "", "Retrieve job status for this `jobId`.") + cmd.MarkFlagRequired("job-id") + sendActivationEmailCmd.AddCommand(cmd) + } + + { // get-bulk-resend-job-errors + var orgId string + var jobId string + var max string + cmd := &cobra.Command{ + Use: "get-bulk-resend-job-errors", + Short: "Get Bulk Activation Email Resend Job Errors", + Long: "Get errors of an activation email resend job by its job ID.\n\nRequires a full or user administrator auth token with a scope of `spark-admin:people_write` or read-only administrator auth token with a scope of `spark-admin:people_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/identity/organizations/{orgId}/jobs/sendActivationEmails/{jobId}/errors") + req.PathParam("orgId", orgId) + req.PathParam("jobId", jobId) + req.QueryParam("max", max) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Check job status for this organization.") + cmd.MarkFlagRequired("org-id") + cmd.Flags().StringVar(&jobId, "job-id", "", "Retrieve job status for this `jobId`.") + cmd.MarkFlagRequired("job-id") + cmd.Flags().StringVar(&max, "max", "", "Limit the maximum number of errors in the response.") + sendActivationEmailCmd.AddCommand(cmd) + } + +} diff --git a/cmd/calling/single_number_reach.go b/cmd/calling/single_number_reach.go new file mode 100644 index 0000000..1b610aa --- /dev/null +++ b/cmd/calling/single_number_reach.go @@ -0,0 +1,254 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package calling + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var singleNumberReachCmd = &cobra.Command{ + Use: "single-number-reach", + Short: "SingleNumberReach commands", +} + +func init() { + cmd.CallingCmd.AddCommand(singleNumberReachCmd) + + { // get-primary + var locationId string + var orgId string + var max string + var start string + var phoneNumber string + cmd := &cobra.Command{ + Use: "get-primary", + Short: "Get Single Number Reach Primary Available Phone Numbers", + Long: "List the service and standard PSTN numbers that are available to be assigned as the single number reach's primary phone number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/singleNumberReach/availableNumbers") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("phoneNumber", phoneNumber) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Return the list of phone numbers for this location within the given organization. The maximum length is 36.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "List numbers for this organization.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of phone numbers returned to this maximum count. The default is 2000.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching phone numbers. The default is 0.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array.") + singleNumberReachCmd.AddCommand(cmd) + } + + { // create-person + var personId string + var phoneNumber string + var enabled bool + var name string + var doNotForwardCallsEnabled bool + var answerConfirmationEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-person", + Short: "Create Single Number Reach For a Person", + Long: "Create a single number reach for a person in an organization.\n\nSingle number reach allows you to setup your work calls ring any phone number. This means that your office phone, mobile phone, or any other designated devices can ring at the same time, ensuring you don't miss important calls.\n\nCreating a single number reach for a person requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/people/{personId}/singleNumberReach/numbers") + req.PathParam("personId", personId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("phoneNumber", phoneNumber) + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + req.BodyString("name", name) + req.BodyBool("doNotForwardCallsEnabled", doNotForwardCallsEnabled, cmd.Flags().Changed("do-not-forward-calls-enabled")) + req.BodyBool("answerConfirmationEnabled", answerConfirmationEnabled, cmd.Flags().Changed("answer-confirmation-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "") + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().BoolVar(&doNotForwardCallsEnabled, "do-not-forward-calls-enabled", false, "") + cmd.Flags().BoolVar(&answerConfirmationEnabled, "answer-confirmation-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + singleNumberReachCmd.AddCommand(cmd) + } + + { // get-settings-person + var personId string + cmd := &cobra.Command{ + Use: "get-settings-person", + Short: "Get Single Number Reach Settings For A Person", + Long: "Retrieve Single Number Reach settings for the given person.\n\nSingle number reach allows you to setup your work calls ring any phone number. This means that your office phone, mobile phone, or any other designated devices can ring at the same time, ensuring you don't miss important calls.\n\nRetrieving Single number reach settings requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/{personId}/singleNumberReach") + req.PathParam("personId", personId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + singleNumberReachCmd.AddCommand(cmd) + } + + { // update-settings-person + var personId string + var alertAllNumbersForClickToDialCallsEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-settings-person", + Short: "Update Single Number Reach Settings For A Person", + Long: "Update Single number reach settings for a person.\n\nSingle number reach allows you to setup your work calls ring any phone number. This means that your office phone, mobile phone, or any other designated devices can ring at the same time, ensuring you don't miss important calls.\n\nUpdating a single number reach settings for a person requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/{personId}/singleNumberReach") + req.PathParam("personId", personId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("alertAllNumbersForClickToDialCallsEnabled", alertAllNumbersForClickToDialCallsEnabled, cmd.Flags().Changed("alert-all-numbers-for-click-to-dial-calls-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().BoolVar(&alertAllNumbersForClickToDialCallsEnabled, "alert-all-numbers-for-click-to-dial-calls-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + singleNumberReachCmd.AddCommand(cmd) + } + + { // update-settings + var personId string + var id string + var phoneNumber string + var enabled bool + var name string + var doNotForwardCallsEnabled bool + var answerConfirmationEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-settings", + Short: "Update Single Number Reach Settings For A Number", + Long: "Update Single number reach settings for a number.\n\nSingle number reach allows you to setup your work calls ring any phone number. This means that your office phone, mobile phone, or any other designated devices can ring at the same time, ensuring you don't miss important calls.\n\nThe response returns an ID that can change if the phoneNumber is modified, as the ID contains base64 encoded phone number data.\n\nUpdating a single number reach settings for a number requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/{personId}/singleNumberReach/numbers/{id}") + req.PathParam("personId", personId) + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("phoneNumber", phoneNumber) + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + req.BodyString("name", name) + req.BodyBool("doNotForwardCallsEnabled", doNotForwardCallsEnabled, cmd.Flags().Changed("do-not-forward-calls-enabled")) + req.BodyBool("answerConfirmationEnabled", answerConfirmationEnabled, cmd.Flags().Changed("answer-confirmation-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&id, "id", "", "Unique identifier for single number reach.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "") + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().BoolVar(&doNotForwardCallsEnabled, "do-not-forward-calls-enabled", false, "") + cmd.Flags().BoolVar(&answerConfirmationEnabled, "answer-confirmation-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + singleNumberReachCmd.AddCommand(cmd) + } + + { // delete + var personId string + var id string + var orgId string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete A Single Number Reach Number", + Long: "Delete Single number reach number for a person.\n\nSingle number reach allows you to setup your work calls ring any phone number. This means that your office phone, mobile phone, or any other designated devices can ring at the same time, ensuring you don't miss important calls.\n\nDeleting a Single number reach number requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/people/{personId}/singleNumberReach/numbers/{id}") + req.PathParam("personId", personId) + req.PathParam("id", id) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&id, "id", "", "Unique identifier for single number reach.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Unique identifier for the organization.") + singleNumberReachCmd.AddCommand(cmd) + } + +} diff --git a/cmd/calling/user_call.go b/cmd/calling/user_call.go new file mode 100644 index 0000000..73ceca0 --- /dev/null +++ b/cmd/calling/user_call.go @@ -0,0 +1,4967 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package calling + +import ( + "fmt" + "strconv" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa +var _ = strings.Join + +var userCallCmd = &cobra.Command{ + Use: "user-call", + Short: "UserCall commands", +} + +func init() { + cmd.CallingCmd.AddCommand(userCallCmd) + + { // get-person-application-services-settings + var personId string + var orgId string + cmd := &cobra.Command{ + Use: "get-person-application-services-settings", + Short: "Retrieve a person's Application Services Settings", + Long: `Application services let you determine the ringing behavior for calls made to people in certain scenarios. You can also specify which devices can download the Webex Calling app. + +This API requires a full, user, or read-only administrator or location administrator auth token with a scope of spark-admin:people_read.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/people/{personId}/features/applications") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "(Required) Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + userCallCmd.AddCommand(cmd) + } + + { // update-person-application-services-settings + var personId string + var orgId string + var ringDevicesForClickToDialCallsEnabled bool + var ringDevicesForGroupPageEnabled bool + var ringDevicesForCallParkEnabled bool + var browserClientEnabled bool + var desktopClientEnabled bool + var tabletClientEnabled bool + var mobileClientEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-person-application-services-settings", + Short: "Modify a person's Application Services Settings", + Long: `Application services let you determine the ringing behavior for calls made to users in certain scenarios. You can also specify which devices users can download the Webex Calling app on. + +This API requires a full or user administrator or location administrator auth token with the spark-admin:people_write scope.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/people/{personId}/features/applications") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("ringDevicesForClickToDialCallsEnabled", ringDevicesForClickToDialCallsEnabled, cmd.Flags().Changed("ring-devices-for-click-to-dial-calls-enabled")) + req.BodyBool("ringDevicesForGroupPageEnabled", ringDevicesForGroupPageEnabled, cmd.Flags().Changed("ring-devices-for-group-page-enabled")) + req.BodyBool("ringDevicesForCallParkEnabled", ringDevicesForCallParkEnabled, cmd.Flags().Changed("ring-devices-for-call-park-enabled")) + req.BodyBool("browserClientEnabled", browserClientEnabled, cmd.Flags().Changed("browser-client-enabled")) + req.BodyBool("desktopClientEnabled", desktopClientEnabled, cmd.Flags().Changed("desktop-client-enabled")) + req.BodyBool("tabletClientEnabled", tabletClientEnabled, cmd.Flags().Changed("tablet-client-enabled")) + req.BodyBool("mobileClientEnabled", mobileClientEnabled, cmd.Flags().Changed("mobile-client-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + cmd.Flags().BoolVar(&ringDevicesForClickToDialCallsEnabled, "ring-devices-for-click-to-dial-calls-enabled", false, "") + cmd.Flags().BoolVar(&ringDevicesForGroupPageEnabled, "ring-devices-for-group-page-enabled", false, "") + cmd.Flags().BoolVar(&ringDevicesForCallParkEnabled, "ring-devices-for-call-park-enabled", false, "") + cmd.Flags().BoolVar(&browserClientEnabled, "browser-client-enabled", false, "") + cmd.Flags().BoolVar(&desktopClientEnabled, "desktop-client-enabled", false, "") + cmd.Flags().BoolVar(&tabletClientEnabled, "tablet-client-enabled", false, "") + cmd.Flags().BoolVar(&mobileClientEnabled, "mobile-client-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // get-barge-settings-person + var personId string + var orgId string + cmd := &cobra.Command{ + Use: "get-barge-settings-person", + Short: "Read Barge In Settings for a Person", + Long: "Retrieve a person's Barge In settings.\n\nThe Barge In feature enables you to use a Feature Access Code (FAC) to answer a call that was directed to another subscriber, or barge-in on the call if it was already answered. Barge In can be used across locations.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:people_read` or a user auth token with `spark:people_read` scope can be used by a person to read their own settings.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/people/{personId}/features/bargeIn") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + userCallCmd.AddCommand(cmd) + } + + { // update-barge-settings-person + var personId string + var orgId string + var enabled bool + var toneEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-barge-settings-person", + Short: "Configure Barge In Settings for a Person", + Long: "Configure a person's Barge In settings.\n\nThe Barge In feature enables you to use a Feature Access Code (FAC) to answer a call that was directed to another subscriber, or barge-in on the call if it was already answered. Barge In can be used across locations.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope or a user auth token with `spark:people_write` scope can be used by a person to update their own settings.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/people/{personId}/features/bargeIn") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + req.BodyBool("toneEnabled", toneEnabled, cmd.Flags().Changed("tone-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().BoolVar(&toneEnabled, "tone-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // get-forwarding-settings-person + var personId string + var orgId string + cmd := &cobra.Command{ + Use: "get-forwarding-settings-person", + Short: "Read Forwarding Settings for a Person", + Long: "Retrieve a person's Call Forwarding settings.\n\nThree types of call forwarding are supported:\n\n+ Always - forwards all incoming calls to the destination you choose.\n\n+ When busy - forwards all incoming calls to the destination you chose while the phone is in use or the person is busy.\n\n+ When no answer - forwarding only occurs when you are away or not answering your phone.\n\nIn addition, the Business Continuity feature will send calls to a destination of your choice if your phone is not connected to the network for any reason, such as a power outage, failed Internet connection, or wiring problem.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:people_read` or a user auth token with `spark:people_read` scope can be used by a person to read their own settings.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/people/{personId}/features/callForwarding") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + userCallCmd.AddCommand(cmd) + } + + { // update-forward-person + var personId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-forward-person", + Short: "Configure Call Forwarding Settings for a Person", + Long: "Configure a person's Call Forwarding settings.\n\nThree types of call forwarding are supported:\n\n+ Always - forwards all incoming calls to the destination you choose.\n\n+ When busy - forwards all incoming calls to the destination you chose while the phone is in use or the person is busy.\n\n+ When no answer - forwarding only occurs when you are away or not answering your phone.\n\nIn addition, the Business Continuity feature will send calls to a destination of your choice if your phone is not connected to the network for any reason, such as a power outage, failed Internet connection, or wiring problem.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope or a user auth token with `spark:people_write` scope can be used by a person to update their settings.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/people/{personId}/features/callForwarding") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // get-intercept-settings-person + var personId string + var orgId string + cmd := &cobra.Command{ + Use: "get-intercept-settings-person", + Short: "Read Call Intercept Settings for a Person", + Long: "Retrieves Person's Call Intercept settings.\n\nThe intercept feature gracefully takes a person's phone out of service, while providing callers with informative announcements and alternative routing options. Depending on the service configuration, none, some, or all incoming calls to the specified person are intercepted. Also depending on the service configuration, outgoing calls are intercepted or rerouted to another location.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:people_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/people/{personId}/features/intercept") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + userCallCmd.AddCommand(cmd) + } + + { // update-intercept-settings-person + var personId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-intercept-settings-person", + Short: "Configure Call Intercept Settings for a Person", + Long: "Configures a person's Call Intercept settings.\n\nThe intercept feature gracefully takes a person's phone out of service, while providing callers with informative announcements and alternative routing options. Depending on the service configuration, none, some, or all incoming calls to the specified person are intercepted. Also depending on the service configuration, outgoing calls are intercepted or rerouted to another location.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/people/{personId}/features/intercept") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // get-recording-person + var personId string + var orgId string + cmd := &cobra.Command{ + Use: "get-recording-person", + Short: "Read Call Recording Settings for a Person", + Long: "Retrieve a person's Call Recording settings.\n\nThe Call Recording feature provides a hosted mechanism to record the calls placed and received on the Carrier platform for replay and archival. This feature is helpful for quality assurance, security, training, and more.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_read` scope.\n\n
A person with a Webex Calling Standard license is eligible for the Call Recording feature only when the Call Recording vendor is Webex.
", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/people/{personId}/features/callRecording") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + userCallCmd.AddCommand(cmd) + } + + { // update-recording-person + var personId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-recording-person", + Short: "Configure Call Recording Settings for a Person", + Long: "Configure a person's Call Recording settings.\n\nThe Call Recording feature provides a hosted mechanism to record the calls placed and received on the Carrier platform for replay and archival. This feature is helpful for quality assurance, security, training, and more.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope.\n\n
A person with a Webex Calling Standard license is eligible for the Call Recording feature only when the Call Recording vendor is Webex.
", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/people/{personId}/features/callRecording") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // get-waiting-settings-person + var personId string + var orgId string + cmd := &cobra.Command{ + Use: "get-waiting-settings-person", + Short: "Read Call Waiting Settings for a Person", + Long: "Retrieve a person's Call Waiting settings.\n\nWith this feature, a person can place an active call on hold and answer an incoming call. When enabled, while you are on an active call, a tone alerts you of an incoming call and you can choose to answer or ignore the call.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:people_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/people/{personId}/features/callWaiting") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + userCallCmd.AddCommand(cmd) + } + + { // update-waiting-settings-person + var personId string + var orgId string + var enabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-waiting-settings-person", + Short: "Configure Call Waiting Settings for a Person", + Long: "Configure a person's Call Waiting settings.\n\nWith this feature, a person can place an active call on hold and answer an incoming call. When enabled, while you are on an active call, a tone alerts you of an incoming call and you can choose to answer or ignore the call.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/people/{personId}/features/callWaiting") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // get-caller-id-person + var personId string + var orgId string + cmd := &cobra.Command{ + Use: "get-caller-id-person", + Short: "Read Caller ID Settings for a Person", + Long: "Retrieve a person's Caller ID settings.\n\nCaller ID settings control how a person's information is displayed when making outgoing calls.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:people_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/people/{personId}/features/callerId") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + userCallCmd.AddCommand(cmd) + } + + { // update-caller-id-person + var personId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-caller-id-person", + Short: "Configure Caller ID Settings for a Person", + Long: "Configure a person's Caller ID settings.\n\nCaller ID settings control how a person's information is displayed when making outgoing calls.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/people/{personId}/features/callerId") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // get-person-calling-behavior + var personId string + var orgId string + cmd := &cobra.Command{ + Use: "get-person-calling-behavior", + Short: "Read Person's Calling Behavior", + Long: "Retrieves the calling behavior and UC Manager Profile settings for the person which includes overall calling behavior and calling UC Manager Profile ID.\n\nWebex Calling Behavior controls which Webex telephony application and which UC Manager Profile is to be used for a person.\n\nAn organization has an organization-wide default Calling Behavior that may be overridden for individual persons.\n\nUC Manager Profiles are applicable if your organization uses Jabber in Team Messaging mode or Calling in Webex (Unified CM).\n\nThe UC Manager Profile also has an organization-wide default and may be overridden for individual persons.\n\nThis API requires a full, user, or read-only administrator auth token with a scope of `spark-admin:people_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/people/{personId}/features/callingBehavior") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + userCallCmd.AddCommand(cmd) + } + + { // update-person-calling-behavior + var personId string + var orgId string + var behaviorType string + var profileId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-person-calling-behavior", + Short: "Configure a person's Calling Behavior", + Long: "Modifies the calling behavior settings for the person which includes calling behavior and UC Manager Profile ID.\n\nWebex Calling Behavior controls which Webex telephony application and which UC Manager Profile is to be used for a person.\n\nAn organization has an organization-wide default Calling Behavior that may be overridden for individual persons.\n\nUC Manager Profiles are applicable if your organization uses Jabber in Team Messaging mode or Calling in Webex (Unified CM).\n\nThe UC Manager Profile also has an organization-wide default and may be overridden for individual persons.\n\nThis API requires a full or user administrator auth token with the `spark-admin:people_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/people/{personId}/features/callingBehavior") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("behaviorType", behaviorType) + req.BodyString("profileId", profileId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + cmd.Flags().StringVar(&behaviorType, "behavior-type", "", "") + cmd.Flags().StringVar(&profileId, "profile-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // get-do-not-disturb-settings-person + var personId string + var orgId string + cmd := &cobra.Command{ + Use: "get-do-not-disturb-settings-person", + Short: "Read Do Not Disturb Settings for a Person", + Long: "Retrieve a person's Do Not Disturb settings.\n\nWhen enabled, this feature will give all incoming calls the busy treatment. Optionally, you can enable a Ring Reminder to play a brief tone on your desktop phone when you receive incoming calls.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:people_read` or a user auth token with `spark:people_read` scope can be used by a person to read their settings.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/people/{personId}/features/doNotDisturb") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + userCallCmd.AddCommand(cmd) + } + + { // update-do-not-disturb-settings-person + var personId string + var orgId string + var webexGoOverrideEnabled bool + var enabled bool + var ringSplashEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-do-not-disturb-settings-person", + Short: "Configure Do Not Disturb Settings for a Person", + Long: "Configure a person's Do Not Disturb settings.\n\nWhen enabled, this feature will give all incoming calls the busy treatment. Optionally, you can enable a Ring Reminder to play a brief tone on your desktop phone when you receive incoming calls.\n\nThis API requires a full or user administrator auth token with the `spark-admin:people_write` scope or a user auth token with `spark:people_write` scope can be used by a person to update their settings.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/people/{personId}/features/doNotDisturb") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("webexGoOverrideEnabled", webexGoOverrideEnabled, cmd.Flags().Changed("webex-go-override-enabled")) + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + req.BodyBool("ringSplashEnabled", ringSplashEnabled, cmd.Flags().Changed("ring-splash-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + cmd.Flags().BoolVar(&webexGoOverrideEnabled, "webex-go-override-enabled", false, "") + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().BoolVar(&ringSplashEnabled, "ring-splash-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // get-executive-assistant-settings-person + var personId string + var orgId string + cmd := &cobra.Command{ + Use: "get-executive-assistant-settings-person", + Short: "Retrieve Executive Assistant Settings for a Person", + Long: "Retrieve the executive assistant settings for the specified `personId`.\n\nPeople with the executive service enabled, can select from a pool of assistants who have been assigned the executive assistant service and who can answer or place calls on their behalf. Executive assistants can set the call forward destination and join or leave an executive's pool.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:people_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/people/{personId}/features/executiveAssistant") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + userCallCmd.AddCommand(cmd) + } + + { // update-executive-assistant-settings-person + var personId string + var orgId string + var typeVal string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-executive-assistant-settings-person", + Short: "Modify Executive Assistant Settings for a Person", + Long: "Modify the executive assistant settings for the specified personId.\n\nPeople with the executive service enabled, can select from a pool of assistants who have been assigned the executive assistant service and who can answer or place calls on their behalf. Executive assistants can set the call forward destination and join or leave an executive's pool.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/people/{personId}/features/executiveAssistant") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("type", typeVal) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + cmd.Flags().StringVar(&typeVal, "type", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // get-hoteling-settings-person + var personId string + var orgId string + cmd := &cobra.Command{ + Use: "get-hoteling-settings-person", + Short: "Read Hoteling Settings for a Person", + Long: "Retrieve a person's hoteling settings.\n\nAs an administrator, you can enable hoteling for people so that their phone profile (phone number, features, and calling plan) is temporarily loaded onto a shared (host) phone.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:people_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/people/{personId}/features/hoteling") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + userCallCmd.AddCommand(cmd) + } + + { // update-hoteling-settings-person + var personId string + var orgId string + var enabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-hoteling-settings-person", + Short: "Configure Hoteling Settings for a Person", + Long: "Configure a person's hoteling settings.\n\nAs an administrator, you can enable hoteling for people so that their phone profile (phone number, features, and calling plan) is temporarily loaded onto a shared (host) phone.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/people/{personId}/features/hoteling") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // get-person-monitoring-settings + var personId string + var orgId string + cmd := &cobra.Command{ + Use: "get-person-monitoring-settings", + Short: "Retrieve a person's Monitoring Settings", + Long: "Retrieves the monitoring settings of the person, which shows specified people, places, virtual lines or call park extenions that are being monitored.\nMonitors the line status which indicates if a person, place or virtual line is on a call and if a call has been parked on that extension.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:people_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/people/{personId}/features/monitoring") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + userCallCmd.AddCommand(cmd) + } + + { // update-person-monitoring-settings + var personId string + var orgId string + var enableCallParkNotification bool + var monitoredElements []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-person-monitoring-settings", + Short: "Modify a person's Monitoring Settings", + Long: "Modifies the monitoring settings of the person.\nMonitors the line status of specified people, places, virtual lines or call park extension. The line status indicates if a person, place or virtual line is on a call and if a call has been parked on that extension.\n\nThe number of monitored elements is limited to 50.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/people/{personId}/features/monitoring") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("enableCallParkNotification", enableCallParkNotification, cmd.Flags().Changed("enable-call-park-notification")) + req.BodyStringSlice("monitoredElements", monitoredElements) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + cmd.Flags().BoolVar(&enableCallParkNotification, "enable-call-park-notification", false, "") + cmd.Flags().StringSliceVar(&monitoredElements, "monitored-elements", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // get-incoming-permission-settings-person + var personId string + var orgId string + cmd := &cobra.Command{ + Use: "get-incoming-permission-settings-person", + Short: "Read Incoming Permission Settings for a Person", + Long: "Retrieve a person's Incoming Permission settings.\n\nYou can change the incoming calling permissions for a person if you want them to be different from your organization's default.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:people_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/people/{personId}/features/incomingPermission") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + userCallCmd.AddCommand(cmd) + } + + { // update-incoming-permission-settings-person + var personId string + var orgId string + var useCustomEnabled bool + var externalTransfer string + var internalCallsEnabled bool + var collectCallsEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-incoming-permission-settings-person", + Short: "Configure Incoming Permission Settings for a Person", + Long: "Configure a person's Incoming Permission settings.\n\nYou can change the incoming calling permissions for a person if you want them to be different from your organization's default.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/people/{personId}/features/incomingPermission") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("useCustomEnabled", useCustomEnabled, cmd.Flags().Changed("use-custom-enabled")) + req.BodyString("externalTransfer", externalTransfer) + req.BodyBool("internalCallsEnabled", internalCallsEnabled, cmd.Flags().Changed("internal-calls-enabled")) + req.BodyBool("collectCallsEnabled", collectCallsEnabled, cmd.Flags().Changed("collect-calls-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + cmd.Flags().BoolVar(&useCustomEnabled, "use-custom-enabled", false, "") + cmd.Flags().StringVar(&externalTransfer, "external-transfer", "", "") + cmd.Flags().BoolVar(&internalCallsEnabled, "internal-calls-enabled", false, "") + cmd.Flags().BoolVar(&collectCallsEnabled, "collect-calls-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // get-person-outgoing-permissions-settings + var personId string + var orgId string + cmd := &cobra.Command{ + Use: "get-person-outgoing-permissions-settings", + Short: "Retrieve a person's Outgoing Calling Permissions Settings", + Long: "Retrieve a person's Outgoing Calling Permissions settings.\n\nOutgoing calling permissions regulate behavior for calls placed to various destinations and default to the local level settings. You can change the outgoing calling permissions for a person if you want them to be different from your organization's default.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:people_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/people/{personId}/features/outgoingPermission") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + userCallCmd.AddCommand(cmd) + } + + { // update-person-outgoing-permissions-settings + var personId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-person-outgoing-permissions-settings", + Short: "Modify a person's Outgoing Calling Permissions Settings", + Long: "Modify a person's Outgoing Calling Permissions settings.\n\nOutgoing calling permissions regulate behavior for calls placed to various destinations and default to the local level settings. You can change the outgoing calling permissions for a person if you want them to be different from your organization's default.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/people/{personId}/features/outgoingPermission") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // list-phone-numbers-person + var personId string + var orgId string + var preferE164Format string + cmd := &cobra.Command{ + Use: "list-phone-numbers-person", + Short: "Get a List of Phone Numbers for a Person", + Long: "Get a person's phone numbers including alternate numbers.\n\nA person can have one or more phone numbers and/or extensions via which they can be called.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_read` scope.\n\n
\n\n
The `preferE164Format` query parameter can be used to get phone numbers either in E.164 format or in their legacy format. The support for getting phone numbers in non-E.164 format in some geographies will be removed in the future.
", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/people/{personId}/features/numbers") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + req.QueryParam("preferE164Format", preferE164Format) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + cmd.Flags().StringVar(&preferE164Format, "prefer-e164-format", "", "Return phone numbers in E.164 format.") + userCallCmd.AddCommand(cmd) + } + + { // get-person-privacy-settings + var personId string + var orgId string + cmd := &cobra.Command{ + Use: "get-person-privacy-settings", + Short: "Get a person's Privacy Settings", + Long: `Get a person's privacy settings for the specified person ID. + +The privacy feature enables the person's line to be monitored by others and determine if they can be reached by Auto Attendant services. + +This API requires a full, user, or read-only administrator or location administrator auth token with a scope of spark-admin:people_read.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/people/{personId}/features/privacy") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + userCallCmd.AddCommand(cmd) + } + + { // update-person-privacy-settings + var personId string + var orgId string + var aaExtensionDialingEnabled bool + var aaNamingDialingEnabled bool + var enablePhoneStatusDirectoryPrivacy bool + var enablePhoneStatusPickupBargeInPrivacy bool + var monitoringAgents []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-person-privacy-settings", + Short: "Configure a person's Privacy Settings", + Long: `Configure a person's privacy settings for the specified person ID. + +The privacy feature enables the person's line to be monitored by others and determine if they can be reached by Auto Attendant services. + +This API requires a full or user administrator or location administrator auth token with the spark-admin:people_write scope.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/people/{personId}/features/privacy") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("aaExtensionDialingEnabled", aaExtensionDialingEnabled, cmd.Flags().Changed("aa-extension-dialing-enabled")) + req.BodyBool("aaNamingDialingEnabled", aaNamingDialingEnabled, cmd.Flags().Changed("aa-naming-dialing-enabled")) + req.BodyBool("enablePhoneStatusDirectoryPrivacy", enablePhoneStatusDirectoryPrivacy, cmd.Flags().Changed("enable-phone-status-directory-privacy")) + req.BodyBool("enablePhoneStatusPickupBargeInPrivacy", enablePhoneStatusPickupBargeInPrivacy, cmd.Flags().Changed("enable-phone-status-pickup-barge-in-privacy")) + req.BodyStringSlice("monitoringAgents", monitoringAgents) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + cmd.Flags().BoolVar(&aaExtensionDialingEnabled, "aa-extension-dialing-enabled", false, "") + cmd.Flags().BoolVar(&aaNamingDialingEnabled, "aa-naming-dialing-enabled", false, "") + cmd.Flags().BoolVar(&enablePhoneStatusDirectoryPrivacy, "enable-phone-status-directory-privacy", false, "") + cmd.Flags().BoolVar(&enablePhoneStatusPickupBargeInPrivacy, "enable-phone-status-pickup-barge-in-privacy", false, "") + cmd.Flags().StringSliceVar(&monitoringAgents, "monitoring-agents", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // get-push-to-talk-settings-person + var personId string + var orgId string + cmd := &cobra.Command{ + Use: "get-push-to-talk-settings-person", + Short: "Read Push-to-Talk Settings for a Person", + Long: "Retrieve a person's Push-to-Talk settings.\n\nPush-to-Talk allows the use of desk phones as either a one-way or two-way intercom that connects people in different parts of your organization.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:people_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/people/{personId}/features/pushToTalk") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + userCallCmd.AddCommand(cmd) + } + + { // update-push-to-talk-settings-person + var personId string + var orgId string + var allowAutoAnswer bool + var connectionType string + var accessType string + var members []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-push-to-talk-settings-person", + Short: "Configure Push-to-Talk Settings for a Person", + Long: "Configure a person's Push-to-Talk settings.\n\nPush-to-Talk allows the use of desk phones as either a one-way or two-way intercom that connects people in different parts of your organization.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/people/{personId}/features/pushToTalk") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("allowAutoAnswer", allowAutoAnswer, cmd.Flags().Changed("allow-auto-answer")) + req.BodyString("connectionType", connectionType) + req.BodyString("accessType", accessType) + req.BodyStringSlice("members", members) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + cmd.Flags().BoolVar(&allowAutoAnswer, "allow-auto-answer", false, "") + cmd.Flags().StringVar(&connectionType, "connection-type", "", "") + cmd.Flags().StringVar(&accessType, "access-type", "", "") + cmd.Flags().StringSliceVar(&members, "members", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // get-receptionist-client-settings-person + var personId string + var orgId string + cmd := &cobra.Command{ + Use: "get-receptionist-client-settings-person", + Short: "Read Receptionist Client Settings for a Person", + Long: "Retrieve a person's Receptionist Client settings.\n\nTo help support the needs of your front-office personnel, you can set up people, workspaces or virtual lines as telephone attendants so that they can screen all incoming calls to certain numbers within your organization.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:people_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/people/{personId}/features/reception") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + userCallCmd.AddCommand(cmd) + } + + { // update-receptionist-client-settings-person + var personId string + var orgId string + var receptionEnabled bool + var monitoredMembers []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-receptionist-client-settings-person", + Short: "Configure Receptionist Client Settings for a Person", + Long: "Configure a person's Receptionist Client settings.\n\nTo help support the needs of your front-office personnel, you can set up people, workspaces or virtual lines as telephone attendants so that they can screen all incoming calls to certain numbers within your organization.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/people/{personId}/features/reception") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("receptionEnabled", receptionEnabled, cmd.Flags().Changed("reception-enabled")) + req.BodyStringSlice("monitoredMembers", monitoredMembers) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + cmd.Flags().BoolVar(&receptionEnabled, "reception-enabled", false, "") + cmd.Flags().StringSliceVar(&monitoredMembers, "monitored-members", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // list-schedules-person + var personId string + var orgId string + var start string + var max string + var name string + var typeVal string + cmd := &cobra.Command{ + Use: "list-schedules-person", + Short: "List of Schedules for a Person", + Long: "List schedules for a person in an organization.\n\nSchedules are used to support calling features and can be defined at the location or person level. `businessHours` schedules allow you to apply specific call settings at different times of the day or week by defining one or more events. `holidays` schedules define exceptions to normal business hours by defining one or more events.\n\nThis API requires a full, user, or read-only administrator auth token with a scope of `spark-admin:people_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/people/{personId}/features/schedules") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + req.QueryParam("start", start) + req.QueryParam("max", max) + req.QueryParam("name", name) + req.QueryParam("type", typeVal) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + cmd.Flags().StringVar(&start, "start", "", "Specifies the offset from the first result that you want to fetch.") + cmd.Flags().StringVar(&max, "max", "", "Specifies the maximum number of records that you want to fetch.") + cmd.Flags().StringVar(&name, "name", "", "Specifies the case insensitive substring to be matched against the schedule names. The maximum length is 40.") + cmd.Flags().StringVar(&typeVal, "type", "", "Specifies the schedule event type to be matched on the given type.") + userCallCmd.AddCommand(cmd) + } + + { // create-schedule-person + var personId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-schedule-person", + Short: "Create Schedule for a Person", + Long: "Create a new schedule for a person.\n\nSchedules are used to support calling features and can be defined at the location or person level. `businessHours` schedules allow you to apply specific call settings at different times of the day or week by defining one or more events. `holidays` schedules define exceptions to normal business hours by defining one or more events.\n\nThis API requires a full or user administrator auth token with the `spark-admin:people_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/people/{personId}/features/schedules") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // get-schedule + var personId string + var scheduleType string + var scheduleId string + var orgId string + cmd := &cobra.Command{ + Use: "get-schedule", + Short: "Get a Schedule Details", + Long: "Retrieve a schedule by its schedule ID.\n\nSchedules are used to support calling features and can be defined at the location or person level. `businessHours` schedules allow you to apply specific call settings at different times of the day or week by defining one or more events. `holidays` schedules define exceptions to normal business hours by defining one or more events.\n\nThis API requires a full, user, or read-only administrator auth token with a scope of `spark-admin:people_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/people/{personId}/features/schedules/{scheduleType}/{scheduleId}") + req.PathParam("personId", personId) + req.PathParam("scheduleType", scheduleType) + req.PathParam("scheduleId", scheduleId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "Type of schedule, either `businessHours` or `holidays`.") + cmd.MarkFlagRequired("schedule-type") + cmd.Flags().StringVar(&scheduleId, "schedule-id", "", "Unique identifier for the schedule.") + cmd.MarkFlagRequired("schedule-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + userCallCmd.AddCommand(cmd) + } + + { // update-schedule + var personId string + var scheduleType string + var scheduleId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-schedule", + Short: "Update a Schedule", + Long: "Modify a schedule by its schedule ID.\n\nSchedules are used to support calling features and can be defined at the location or person level. `businessHours` schedules allow you to apply specific call settings at different times of the day or week by defining one or more events. `holidays` schedules define exceptions to normal business hours by defining one or more events.\n\nThis API requires a full or user administrator auth token with the `spark-admin:people_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/people/{personId}/features/schedules/{scheduleType}/{scheduleId}") + req.PathParam("personId", personId) + req.PathParam("scheduleType", scheduleType) + req.PathParam("scheduleId", scheduleId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "Type of schedule, either `businessHours` or `holidays`.") + cmd.MarkFlagRequired("schedule-type") + cmd.Flags().StringVar(&scheduleId, "schedule-id", "", "Unique identifier for the schedule.") + cmd.MarkFlagRequired("schedule-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // delete-schedule + var personId string + var scheduleType string + var scheduleId string + var orgId string + cmd := &cobra.Command{ + Use: "delete-schedule", + Short: "Delete a Schedule", + Long: "Delete a schedule by its schedule ID.\n\nSchedules are used to support calling features and can be defined at the location or person level. `businessHours` schedules allow you to apply specific call settings at different times of the day or week by defining one or more events. `holidays` schedules define exceptions to normal business hours by defining one or more events.\n\nThis API requires a full or user administrator auth token with the `spark-admin:people_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/people/{personId}/features/schedules/{scheduleType}/{scheduleId}") + req.PathParam("personId", personId) + req.PathParam("scheduleType", scheduleType) + req.PathParam("scheduleId", scheduleId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "Type of schedule, either `businessHours` or `holidays`.") + cmd.MarkFlagRequired("schedule-type") + cmd.Flags().StringVar(&scheduleId, "schedule-id", "", "Unique identifier for the schedule.") + cmd.MarkFlagRequired("schedule-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + userCallCmd.AddCommand(cmd) + } + + { // get-event-person-schedule + var personId string + var scheduleType string + var scheduleId string + var eventId string + var orgId string + cmd := &cobra.Command{ + Use: "get-event-person-schedule", + Short: "Fetch Event for a person's Schedule", + Long: "People can use shared location schedules or define personal schedules containing events.\n\n`businessHours` schedules allow you to apply specific call settings at different times of the day or week by defining one or more events. `holidays` schedules define exceptions to normal business hours by defining one or more events.\n\nThis API requires a full, user, or read-only administrator auth token with a scope of `spark-admin:people_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/people/{personId}/features/schedules/{scheduleType}/{scheduleId}/events/{eventId}") + req.PathParam("personId", personId) + req.PathParam("scheduleType", scheduleType) + req.PathParam("scheduleId", scheduleId) + req.PathParam("eventId", eventId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "Type of schedule, either `businessHours` or `holidays`.") + cmd.MarkFlagRequired("schedule-type") + cmd.Flags().StringVar(&scheduleId, "schedule-id", "", "Unique identifier for the schedule.") + cmd.MarkFlagRequired("schedule-id") + cmd.Flags().StringVar(&eventId, "event-id", "", "Unique identifier for the event.") + cmd.MarkFlagRequired("event-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + userCallCmd.AddCommand(cmd) + } + + { // update-event-person-schedule + var personId string + var scheduleType string + var scheduleId string + var eventId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-event-person-schedule", + Short: "Update an Event for a person's Schedule", + Long: "People can use shared location schedules or define personal schedules containing events.\n\n`businessHours` schedules allow you to apply specific call settings at different times of the day or week by defining one or more events. `holidays` schedules define exceptions to normal business hours by defining one or more events.\n\nThis API requires a full or user administrator auth token with the `spark-admin:people_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/people/{personId}/features/schedules/{scheduleType}/{scheduleId}/events/{eventId}") + req.PathParam("personId", personId) + req.PathParam("scheduleType", scheduleType) + req.PathParam("scheduleId", scheduleId) + req.PathParam("eventId", eventId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "Type of schedule, either `businessHours` or `holidays`.") + cmd.MarkFlagRequired("schedule-type") + cmd.Flags().StringVar(&scheduleId, "schedule-id", "", "Unique identifier for the schedule.") + cmd.MarkFlagRequired("schedule-id") + cmd.Flags().StringVar(&eventId, "event-id", "", "Unique identifier for the event.") + cmd.MarkFlagRequired("event-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // delete-event-person-schedule + var personId string + var scheduleType string + var scheduleId string + var eventId string + var orgId string + cmd := &cobra.Command{ + Use: "delete-event-person-schedule", + Short: "Delete an Event for a person's Schedule", + Long: "People can use shared location schedules or define personal schedules containing events.\n\n`businessHours` schedules allow you to apply specific call settings at different times of the day or week by defining one or more events. `holidays` schedules define exceptions to normal business hours by defining one or more events.\n\nThis API requires a full or user administrator auth token with the `spark-admin:people_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/people/{personId}/features/schedules/{scheduleType}/{scheduleId}/events/{eventId}") + req.PathParam("personId", personId) + req.PathParam("scheduleType", scheduleType) + req.PathParam("scheduleId", scheduleId) + req.PathParam("eventId", eventId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "Type of schedule, either `businessHours` or `holidays`.") + cmd.MarkFlagRequired("schedule-type") + cmd.Flags().StringVar(&scheduleId, "schedule-id", "", "Unique identifier for the schedule.") + cmd.MarkFlagRequired("schedule-id") + cmd.Flags().StringVar(&eventId, "event-id", "", "Unique identifier for the event.") + cmd.MarkFlagRequired("event-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + userCallCmd.AddCommand(cmd) + } + + { // create-event-person-schedule + var personId string + var scheduleType string + var scheduleId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-event-person-schedule", + Short: "Add a New Event for Person's Schedule", + Long: "People can use shared location schedules or define personal schedules containing events.\n\n`businessHours` schedules allow you to apply specific call settings at different times of the day or week by defining one or more events. `holidays` schedules define exceptions to normal business hours by defining one or more events.\n\nThis API requires a full or user administrator auth token with the `spark-admin:people_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/people/{personId}/features/schedules/{scheduleType}/{scheduleId}/events") + req.PathParam("personId", personId) + req.PathParam("scheduleType", scheduleType) + req.PathParam("scheduleId", scheduleId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "Type of schedule, either `businessHours` or `holidays`.") + cmd.MarkFlagRequired("schedule-type") + cmd.Flags().StringVar(&scheduleId, "schedule-id", "", "Unique identifier for the schedule.") + cmd.MarkFlagRequired("schedule-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // get-voicemail-person + var personId string + var orgId string + cmd := &cobra.Command{ + Use: "get-voicemail-person", + Short: "Read Voicemail Settings for a Person", + Long: "Retrieve a person's Voicemail settings.\n\nThe voicemail feature transfers callers to voicemail based on your settings. You can then retrieve voice messages via Voicemail. Voicemail audio is sent in Waveform Audio File Format, `.wav`, format.\n\nOptionally, notifications can be sent to a mobile phone via text or email. These notifications will not include the voicemail files.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:people_read` or a user auth token with `spark:people_read` scope can be used by a person to read their settings.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/people/{personId}/features/voicemail") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + userCallCmd.AddCommand(cmd) + } + + { // update-voicemail-person + var personId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-voicemail-person", + Short: "Configure Voicemail Settings for a Person", + Long: "Configure a person's Voicemail settings.\n\nThe voicemail feature transfers callers to voicemail based on your settings. You can then retrieve voice messages via Voicemail. Voicemail audio is sent in Waveform Audio File Format, `.wav`, format.\n\nOptionally, notifications can be sent to a mobile phone via text or email. These notifications will not include the voicemail files.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope or a user auth token with `spark:people_write` scope can be used by a person to update their settings.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/people/{personId}/features/voicemail") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // reset-voicemail-pin + var personId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "reset-voicemail-pin", + Short: "Reset Voicemail PIN", + Long: "Reset a voicemail PIN for a person.\n\nThe voicemail feature transfers callers to voicemail based on your settings. You can then retrieve voice messages via Voicemail. A voicemail PIN is used to retrieve your voicemail messages.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope.\n\n**NOTE**: This API is expected to have an empty request body and Content-Type header should be set to `application/json`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/people/{personId}/features/voicemail/actions/resetPin/invoke") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // validate-initiate-move-job + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "validate-initiate-move-job", + Short: "Validate or Initiate Move Users Job", + Long: "This API allows the user to perform one of the following operations:\n\n* Setting the `validate` attribute to `true` validates the user move.\n\n* Setting the `validate` attribute to `false` performs the user move.\n\n
\n\nNotes:\n\n* A maximum of `100` users can be moved at a time.\n\n* Setting the `validate` attribute to `true` only allowed for calling user.\n\n* When a single non calling user is moved, it will be moved synchronously without creating any job.\n\n
\n\nErrors occurring during the initial API request validation are captured directly in the error response, along with the appropriate HTTP status code.\n\n
\n\nBelow is a list of possible error `code` values and their associated `message`, which can be found in the `errors` array during initial API request validation, regardless of the `validate` attribute value:\n\n* BATCH-400 - Attribute 'User ID' is required.\n\n* BATCH-400 - Users list should not be empty.\n\n* BATCH-400 - Users should not be empty.\n\n* 1026006 - Attribute 'Validate' is required.\n\n* 1026010 - User is not a valid Calling User.\n\n* 1026011 - Users list should not be empty.\n\n* 1026012 - Users should not be empty.\n\n* 1026013 - The source and the target location cannot be the same.\n\n* 1026014 - Error occurred while processing the move users request.\n\n* 1026015 - Error occurred while moving user number to target location.\n\n* 1026016 - User should have either phone number or extension.\n\n* 1026017 - Phone number is not in e164 format.\n\n* 1026018 - Selected Users list exceeds the maximum limit.\n\n* 1026019 - Duplicate entry for user is not allowed.\n\n* 1026020 - Validate 'true' is supported only for single user.\n\n* 1026021 - Attribute location id is required for Calling user.\n\n* 1026022 - Validate 'true' is supported for calling users only.\n\n* 1026023 - Extension and phone number is supported for calling users only.\n\n* 2150012 - User was not found\n\n
\n\nWhen the `validate` attribute is set to true, the API identifies and returns the `errors` and `impacts` associated with the user move in the response.\n\n
\n\nBelow is a list of possible error `code` values and their associated `message`, which can be found in the `errors` array, when `validate` attribute is set to be true:\n\n* 4003 - `User Not Found`\n\n* 4007 - `User Not Found`\n\n* 4152 - `Location Not Found`\n\n* 5620 - `Location Not Found`\n\n* 4202 - `The extension is not available. It is already assigned to a user : {0}`\n\n* 8264 - `Routing profile is different with new group: {0}`\n\n* 19600 - `User has to be within an enterprise to be moved.`\n\n* 19601 - `User can only be moved to a different group within the same enterprise.`\n\n* 19602 - `Only regular end user can be moved. Service instance virtual user cannot be moved.`\n\n* 19603 - `New group already reaches maximum number of user limits.`\n\n* 19604 - `The {0} number of the user is the same as the calling line ID of the group.`\n\n* 19605 - `User is assigned services not authorized to the new group: {0}.`\n\n* 19606 - `User is in an active hoteling/flexible seating association.`\n\n* 19607 - `User is pilot user of a trunk group.`\n\n* 19608 - `User is using group level device profiles which is used by other users in current group. Following are the device profiles shared with other users: {0}.`\n\n* 19609 - `Following device profiles cannot be moved to the new group because there are already devices with the same name defined in the new group: {0}.`\n\n* 19610 - `The extension of the user is used as transfer to operator number for following Auto Attendent : {0}.`\n\n* 19611 - `Fail to move announcement file from {0} to {1}.`\n\n* 19612 - `Fail to move device management file from {0} to {1}.`\n\n* 19613 - `User is assigned service packs not authorized to the new group: {0}.`\n\n* 25008 - `Missing Mandatory field name: {0}`\n\n* 25110 - `{fieldName} cannot be less than {0} or greater than {1} characters.`\n\n* 25378 - `Target location is same as user's current location.`\n\n* 25379 - `Error Occurred while Fetching User's Current Location Id.`\n\n* 25381 - `Error Occurred while rolling back to Old Location Call recording Settings`\n\n* 25382 - `Error Occurred while Disabling Call Recording for user which is required Before User can be Moved`\n\n* 25383 - `OCI Error while moving user`\n\n* 25384 - `Error Occurred while checking for Possible Call Recording Impact.`\n\n* 25385 - `Error Occurred while getting Call Recording Settings`\n\n* 27559 - `The groupExternalId search criteria contains groups with different calling zone.`\n\n* 27960 - `Parameter isWebexCalling, newPhoneNumber, or newExtension can only be set in Webex Calling deployment mode.`\n\n* 27961 - `Parameter isWebexCalling shall be set if newPhoneNumber or newExtension is set.`\n\n* 27962 - `Work space cannot be moved.`\n\n* 27963 - `Virtual profile user cannot be moved.`\n\n* 27965 - `The user's phone number: {0}, is same as the current group charge number.`\n\n* 27966 - `The phone number, {0}, is not available in the new group.`\n\n* 27967 - `User is configured as the ECBN user for another user in the current group.`\n\n* 27968 - `User is configured as the ECBN user for the current group.`\n\n* 27969 - `User is associated with DECT handset(s): {0}`\n\n* 27970 - `User is using a customer managed device: {0}`\n\n* 27971 - `User is using an ATA device: {0}`\n\n* 27972 - `User is in an active hotdesking association.`\n\n* 27975 - `Need to unassign CLID number from group before moving the number to the new group. Phone number: {0}`\n\n* 27976 - `Local Gateway configuration is different with new group. Phone number: {0}`\n\n* 1026015 - `Error occurred while moving user number to target location`\n\n* 10010000 - `Total numbers exceeded maximum limit allowed`\n\n* 10010001 - `to-location and from-location cannot be same`\n\n* 10010002 - `to-location and from-location should belong to same customer`\n\n* 10010003 - `to-location must have a carrier`\n\n* 10010004 - `from-location must have a carrier`\n\n* 10010005 - `Different Carrier move is not supported for non-Cisco PSTN carriers.`\n\n* 10010006 - `Number move not supported for WEBEX_DIRECT carriers.`\n\n* 10010007 - `Numbers out of sync, missing on CPAPI`\n\n* 10010008 - `from-location not found or pstn connection missing in CPAPI`\n\n* 10010010 - `from-location is in transition`\n\n* 10010009 - `to-location not found or pstn connection missing in CPAPI`\n\n* 10010011 - `to-location is in transition`\n\n* 10010012 - `Numbers don't have a carrier Id`\n\n* 10010013 - `Location less numbers don't have a carrier Id`\n\n* 10010014 - `Different Carrier move is not supported for numbers with different country or region.`\n\n* 10010015 - `Numbers contain mobile and non-mobile types.`\n\n* 10010016 - `To/From location carriers must be same for mobile numbers.`\n\n* 10010017 - `Move request for location less number not supported`\n\n* 10010200 - `Move request for more than one block number is not supported`\n\n* 10010201 - `Cannot move block number as few numbers not from the block starting %s to %s`\n\n* 10010202 - `Cannot move block number as few numbers failed VERIFICATION from the block %s to %s`\n\n* 10010203 - `Cannot move block number as few numbers missing from the block %s to %s`\n\n* 10010204 - `Cannot move number as it is NOT a part of the block %s to %s`\n\n* 10010205 - `Move request for Cisco PSTN block order not supported.`\n\n* 10010299 - `Move order couldn't be created as no valid number to move`\n\n* 10030000 - `Number not found`\n\n* 10030001 - `Number does not belong to from-location`\n\n* 10030002 - `Number is not present in CPAPI`\n\n* 10030003 - `Number assigned to an user or device`\n\n* 10030004 - `Number not in Active status`\n\n* 10030005 - `Number is set as main number of the location`\n\n* 10030006 - `Number has pending order associated with it`\n\n* 10030007 - `Number belongs to a location but a from-location was not set`\n\n* 10030008 - `Numbers from multiple carrier ids are not supported`\n\n* 10030009 - `Location less number belongs to a location. from-location value is set to null or no location id`\n\n* 10030010 - `One or more numbers are not portable.`\n\n* 10030011 - `Mobile number carrier was not set`\n\n* 10030012 - `Number must be assigned for assigned move`\n\n* 10050000 - `Failed to update customer reference for phone numbers on carrier`\n\n* 10050001 - `Failed to update customer reference`\n\n* 10050002 - `Order is not of operation type MOVE`\n\n* 10050003 - `CPAPI delete call failed`\n\n* 10050004 - `Not found in database`\n\n* 10050005 - `Error sending notification to WxcBillingService`\n\n* 10050006 - `CPAPI provision number as active call failed with status %s ,reason %s`\n\n* 10050007 - `Failed to update E911 Service`\n\n* 10050008 - `Target location does not have Inbound Toll Free license`\n\n* 10050009 - `Source location or Target location subscription found cancelled or suspended`\n\n* 10050010 - `Moving On Premises or Non Integrated CCP numbers from one location to another is not supported.`\n\n* 10099999 - `{Error Code} - {Error Message}`\n\n
\n\nBelow is a list of possible impact `code` values and their associated `message`, which can be found in the `impacts` array, when `validate` attribute is set to be true:\n\n* 19701 - `The identity/device profile the user is using is moved to the new group: {0}.`\n\n* 19702 - `The user level customized incoming digit string setting is removed from the user. User is set to use the new group setting.`\n\n* 19703 - `The user level customized outgoing digit plan setting is removed from the user. User is set to use the new group setting.`\n\n* 19704 - `The user level customized enhanced outgoing calling plan setting is removed from the user. User is set to use the new group setting.`\n\n* 19705 - `User is removed from following group services: {0}.`\n\n* 19706 - `The current group schedule used in any criteria is removed from the service settings.`\n\n* 19707 - `User is removed from the department of the old group.`\n\n* 19708 - `User is changed to use the default communication barring profile of the new group.`\n\n* 19709 - `The communication barring profile of the user is assigned to the new group: {0}.`\n\n* 19710 - `The charge number for the user is removed.`\n\n* 19711 - `The disabled FACs for the user are removed because they are not available in the new group.`\n\n* 19712 - `User is removed from trunk group.`\n\n* 19713 - `The extension of the user is reset to empty due to either the length is out of bounds of the new group, or the extension is already taken in new group.`\n\n* 19714 - `The extension of the following alternate number is reset to empty due to either the length out of bounds of the new group or the extension is already taken in new group: {0}.`\n\n* 19715 - `The collaborate room using current group default collaborate bridge is moved to the default collaborate bridge of the new group.`\n\n* 19716 - `Previously stored voice messages of the user are no longer available. The new voice message will be stored on the mail server of the new group.`\n\n* 19717 - `The primary number, alternate numbers or fax messaging number of the user are assigned to the new group: {0}.`\n\n* 19718 - `Following domains are assigned to the new group: {0}.`\n\n* 19719 - `The NCOS of the user is assigned to the new group: {0}.`\n\n* 19720 - `The office zone of the user is assigned to the new group: {0}.`\n\n* 19721 - `The announcement media files are relocated to the new group directory.`\n\n* 19722 - `User CLID number is set to use the new group CLID number: {0}.`\n\n* 19723 - `New group CLID number is not configured.`\n\n* 19724 - `The group level announcement file(s) are removed from the user's music on hold settings.`\n\n* 25388 - `Target Location Does not Have Vendor Configured. Call Recording for user will be disabled`\n\n* 25389 - `Call Recording Vendor for user will be changed from:{0} to:{1}`\n\n* 25390 - `Dub point of user is moved to new external group`\n\n* 25391 - `Error Occurred while moving Call recording Settings to new location`\n\n* 25392 - `Error Occurred while checking for Possible Call Recording Impact.`\n\n* 25393 - `Sending Billing Notification Failed`\n\nThis API requires a full administrator auth token with the scopes `spark-admin:telephony_config_write`, `spark-admin:people_write`, and `identity:groups_rw`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/jobs/person/moveLocation") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Create Move Users job for this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // list-move-jobs + var orgId string + var start string + var max string + cmd := &cobra.Command{ + Use: "list-move-jobs", + Short: "List Move Users Jobs", + Long: "Lists all the Move Users jobs for the given organization in order of most recent job to oldest job irrespective of its status.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/jobs/person/moveLocation") + req.QueryParam("orgId", orgId) + req.QueryParam("start", start) + req.QueryParam("max", max) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve list of Move Users jobs for this organization.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of jobs. Default is 0.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of jobs returned to this maximum count. Default is 2000.") + userCallCmd.AddCommand(cmd) + } + + { // get-move-job-status + var jobId string + var orgId string + cmd := &cobra.Command{ + Use: "get-move-job-status", + Short: "Get Move Users Job Status", + Long: "Returns the status and other details of the job.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/jobs/person/moveLocation/{jobId}") + req.PathParam("jobId", jobId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&jobId, "job-id", "", "Retrieve job details for this `jobId`.") + cmd.MarkFlagRequired("job-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve job details for this organization.") + userCallCmd.AddCommand(cmd) + } + + { // pause-move-job + var jobId string + var orgId string + cmd := &cobra.Command{ + Use: "pause-move-job", + Short: "Pause the Move Users Job", + Long: "Pause the running Move Users Job. A paused job can be resumed.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/jobs/person/moveLocation/{jobId}/actions/pause/invoke") + req.PathParam("jobId", jobId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&jobId, "job-id", "", "Pause the Move Users job for this `jobId`.") + cmd.MarkFlagRequired("job-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Pause the Move Users job for this organization.") + userCallCmd.AddCommand(cmd) + } + + { // resume-move-job + var jobId string + var orgId string + cmd := &cobra.Command{ + Use: "resume-move-job", + Short: "Resume the Move Users Job", + Long: "Resume the paused Move Users Job that is in paused status.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/jobs/person/moveLocation/{jobId}/actions/resume/invoke") + req.PathParam("jobId", jobId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&jobId, "job-id", "", "Resume the Move Users job for this `jobId`.") + cmd.MarkFlagRequired("job-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Resume the Move Users job for this organization.") + userCallCmd.AddCommand(cmd) + } + + { // list-move-job-errors + var jobId string + var orgId string + var start string + var max string + cmd := &cobra.Command{ + Use: "list-move-job-errors", + Short: "List Move Users Job errors", + Long: "Lists all error details of Move Users job. This will not list any errors if `exitCode` is `COMPLETED`. If the status is `COMPLETED_WITH_ERRORS` then this lists the cause of failures.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/jobs/person/moveLocation/{jobId}/errors") + req.PathParam("jobId", jobId) + req.QueryParam("orgId", orgId) + req.QueryParam("start", start) + req.QueryParam("max", max) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&jobId, "job-id", "", "Retrieve the error details for this `jobId`.") + cmd.MarkFlagRequired("job-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve list of jobs for this organization.") + cmd.Flags().StringVar(&start, "start", "", "Specifies the error offset from the first result that you want to fetch.") + cmd.Flags().StringVar(&max, "max", "", "Specifies the maximum number of records that you want to fetch.") + userCallCmd.AddCommand(cmd) + } + + { // get-music-hold-settings-person + var personId string + var orgId string + cmd := &cobra.Command{ + Use: "get-music-hold-settings-person", + Short: "Retrieve Music On Hold Settings for a Person", + Long: "Retrieve the person's music on hold settings.\n\nMusic on hold is played when a caller is put on hold, or the call is parked.\n\nRetrieving a person's music on hold settings requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/{personId}/musicOnHold") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + userCallCmd.AddCommand(cmd) + } + + { // update-music-hold-settings-person + var personId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-music-hold-settings-person", + Short: "Configure Music On Hold Settings for a Person", + Long: "Configure a person's music on hold settings.\n\nMusic on hold is played when a caller is put on hold, or the call is parked.\n\nTo configure music on hold settings for a person, music on hold setting must be enabled for this location.\n\nUpdating a person's music on hold settings requires a full or user administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/{personId}/musicOnHold") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // get-access-codes-person + var personId string + var orgId string + cmd := &cobra.Command{ + Use: "get-access-codes-person", + Short: "Retrieve Access Codes for a Person", + Long: "Retrieve the person's access codes.\n\nAccess codes are used to bypass permissions.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/{personId}/outgoingPermission/accessCodes") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + userCallCmd.AddCommand(cmd) + } + + { // update-access-codes-person + var personId string + var orgId string + var deleteCodes []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-access-codes-person", + Short: "Modify Access Codes for a Person", + Long: "Modify a person's access codes.\n\nAccess codes are used to bypass permissions.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:telephony_config_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/{personId}/outgoingPermission/accessCodes") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("deleteCodes", deleteCodes) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().StringSliceVar(&deleteCodes, "delete-codes", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // create-access-codes-person + var personId string + var orgId string + var code string + var description string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-access-codes-person", + Short: "Create Access Codes for a Person", + Long: "Create new Access codes for the person.\n\nAccess codes are used to bypass permissions.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:telephony_config_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/people/{personId}/outgoingPermission/accessCodes") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("code", code) + req.BodyString("description", description) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().StringVar(&code, "code", "", "") + cmd.Flags().StringVar(&description, "description", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // delete-access-codes-person + var personId string + var orgId string + cmd := &cobra.Command{ + Use: "delete-access-codes-person", + Short: "Delete Access Codes for a Person", + Long: "Deletes all Access codes for the person.\n\nAccess codes are used to bypass permissions.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:telephony_config_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/people/{personId}/outgoingPermission/accessCodes") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + userCallCmd.AddCommand(cmd) + } + + { // get-transfer-numbers-person + var personId string + var orgId string + cmd := &cobra.Command{ + Use: "get-transfer-numbers-person", + Short: "Retrieve Transfer Numbers for a Person", + Long: "Retrieve the person's transfer numbers.\n\nWhen calling a specific call type, this person will be automatically transferred to another number. The person assigned the Auto Transfer Number can then approve the call and send it through or reject the call type. You can add up to 3 numbers.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/{personId}/outgoingPermission/autoTransferNumbers") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + userCallCmd.AddCommand(cmd) + } + + { // update-transfer-numbers-person + var personId string + var orgId string + var useCustomTransferNumbers bool + var autoTransferNumber1 string + var autoTransferNumber2 string + var autoTransferNumber3 string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-transfer-numbers-person", + Short: "Modify Transfer Numbers for a Person", + Long: "Modify a person's transfer numbers.\n\nWhen calling a specific call type, this person will be automatically transferred to another number. The person assigned the Auto Transfer Number can then approve the call and send it through or reject the call type. You can add up to 3 numbers.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:telephony_config_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/{personId}/outgoingPermission/autoTransferNumbers") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("useCustomTransferNumbers", useCustomTransferNumbers, cmd.Flags().Changed("use-custom-transfer-numbers")) + req.BodyString("autoTransferNumber1", autoTransferNumber1) + req.BodyString("autoTransferNumber2", autoTransferNumber2) + req.BodyString("autoTransferNumber3", autoTransferNumber3) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().BoolVar(&useCustomTransferNumbers, "use-custom-transfer-numbers", false, "") + cmd.Flags().StringVar(&autoTransferNumber1, "auto-transfer-number1", "", "") + cmd.Flags().StringVar(&autoTransferNumber2, "auto-transfer-number2", "", "") + cmd.Flags().StringVar(&autoTransferNumber3, "auto-transfer-number3", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // get-digit-patterns-person + var personId string + var orgId string + cmd := &cobra.Command{ + Use: "get-digit-patterns-person", + Short: "Retrieve Digit Patterns for a Person", + Long: "Retrieve the person's digit patterns.\n\nDigit patterns are used to bypass permissions.\n\nRetrieving digit patterns requires a full or user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/{personId}/outgoingPermission/digitPatterns") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + userCallCmd.AddCommand(cmd) + } + + { // create-digit-patterns-person + var personId string + var orgId string + var name string + var pattern string + var action string + var transferEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-digit-patterns-person", + Short: "Create Digit Patterns for a Person", + Long: "Create a new digit pattern for the given person.\n\nDigit patterns are used to bypass permissions.\n\nCreating the digit pattern requires a full or user or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/people/{personId}/outgoingPermission/digitPatterns") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("name", name) + req.BodyString("pattern", pattern) + req.BodyString("action", action) + req.BodyBool("transferEnabled", transferEnabled, cmd.Flags().Changed("transfer-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&pattern, "pattern", "", "") + cmd.Flags().StringVar(&action, "action", "", "") + cmd.Flags().BoolVar(&transferEnabled, "transfer-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // update-digit-pattern-control-person + var personId string + var orgId string + var useCustomDigitPatterns bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-digit-pattern-control-person", + Short: "Modify the Digit Pattern Category Control Settings for a Person", + Long: "Modifies whether this user uses the specified digit patterns when placing outbound calls or not.\n\nUpdating the digit pattern category control settings requires a full or user or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/{personId}/outgoingPermission/digitPatterns") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("useCustomDigitPatterns", useCustomDigitPatterns, cmd.Flags().Changed("use-custom-digit-patterns")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().BoolVar(&useCustomDigitPatterns, "use-custom-digit-patterns", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // delete-all-digit-patterns-person + var personId string + var orgId string + cmd := &cobra.Command{ + Use: "delete-all-digit-patterns-person", + Short: "Delete all Digit Patterns for a Person", + Long: "Delete all digit patterns for a Person.\n\nDigit patterns are used to bypass permissions.\n\nDeleting the digit patterns requires a full or user or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/people/{personId}/outgoingPermission/digitPatterns") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + userCallCmd.AddCommand(cmd) + } + + { // get-digit-pattern-person + var personId string + var digitPatternId string + var orgId string + cmd := &cobra.Command{ + Use: "get-digit-pattern-person", + Short: "Retrieve Digit Pattern Details for a Person", + Long: "Retrieve the digit pattern details for a person.\n\nDigit patterns are used to bypass permissions.\n\nRetrieving the digit pattern details requires a full or user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/{personId}/outgoingPermission/digitPatterns/{digitPatternId}") + req.PathParam("personId", personId) + req.PathParam("digitPatternId", digitPatternId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&digitPatternId, "digit-pattern-id", "", "Unique identifier for the digit pattern.") + cmd.MarkFlagRequired("digit-pattern-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + userCallCmd.AddCommand(cmd) + } + + { // update-digit-pattern-person + var personId string + var digitPatternId string + var orgId string + var name string + var pattern string + var action string + var transferEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-digit-pattern-person", + Short: "Modify a Digit Pattern for a Person", + Long: "Modify a digit pattern for a Person.\n\nDigit patterns are used to bypass permissions.\n\nUpdating the digit pattern requires a full or user or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/{personId}/outgoingPermission/digitPatterns/{digitPatternId}") + req.PathParam("personId", personId) + req.PathParam("digitPatternId", digitPatternId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("name", name) + req.BodyString("pattern", pattern) + req.BodyString("action", action) + req.BodyBool("transferEnabled", transferEnabled, cmd.Flags().Changed("transfer-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&digitPatternId, "digit-pattern-id", "", "Unique identifier for the digit pattern.") + cmd.MarkFlagRequired("digit-pattern-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&pattern, "pattern", "", "") + cmd.Flags().StringVar(&action, "action", "", "") + cmd.Flags().BoolVar(&transferEnabled, "transfer-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // delete-digit-pattern-person + var personId string + var digitPatternId string + var orgId string + cmd := &cobra.Command{ + Use: "delete-digit-pattern-person", + Short: "Delete a Digit Pattern for a Person", + Long: "Delete a digit pattern for a Person.\n\nDigit patterns are used to bypass permissions.\n\nDeleting the digit pattern requires a full or user or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/people/{personId}/outgoingPermission/digitPatterns/{digitPatternId}") + req.PathParam("personId", personId) + req.PathParam("digitPatternId", digitPatternId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&digitPatternId, "digit-pattern-id", "", "Unique identifier for the digit pattern.") + cmd.MarkFlagRequired("digit-pattern-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + userCallCmd.AddCommand(cmd) + } + + { // assign-unassign-numbers-person + var personId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "assign-unassign-numbers-person", + Short: "Assign or Unassign numbers to a person", + Long: "Assign or unassign alternate phone numbers to a person.\n\nEach location has a set of phone numbers that can be assigned to people, workspaces, or features. Phone numbers must follow the E.164 format for all countries, except for the United States, which can also follow the National format. Active phone numbers are in service.\n\nAssigning or unassigning an alternate phone number to a person requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/{personId}/numbers") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identitfier of the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization of the Route Group.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // get-preferred-endpoint + var personId string + var orgId string + cmd := &cobra.Command{ + Use: "get-preferred-endpoint", + Short: "Get Preferred Answer Endpoint", + Long: "Get the person's preferred answer endpoint and the list of endpoints available for selection. The preferred answer endpoint is null if one has not been selected. The list of endpoints is empty if the person has no endpoints assigned which support the preferred answer endpoint functionality. These endpoints can be used by the following Call Control API's that allow the person to specify an endpointId to use for the call:
\n\n+ [/v1/telephony/calls/dial](/docs/api/v1/call-controls/dial)
\n\n+ [/v1/telephony/calls/retrieve](/docs/api/v1/call-controls/retrieve)
\n\n+ [/v1/telephony/calls/pickup](/docs/api/v1/call-controls/pickup)
\n\n+ [/v1/telephony/calls/barge-in](/docs/api/v1/call-controls/barge-in)
\n\n+ [/v1/telephony/calls/answer](/docs/api/v1/call-controls/answer)
\n\nThis API requires `spark:telephony_config_read` or `spark-admin:telephony_config_read` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/{personId}/preferredAnswerEndpoint") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + userCallCmd.AddCommand(cmd) + } + + { // update-preferred-endpoint + var personId string + var orgId string + var preferredAnswerEndpointId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-preferred-endpoint", + Short: "Modify Preferred Answer Endpoint", + Long: "Sets or clears the person\u2019s preferred answer endpoint. To clear the preferred answer endpoint the `preferredAnswerEndpointId` attribute must be set to null.
\nThis API requires `spark:telephony_config_write` or `spark-admin:telephony_config_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/{personId}/preferredAnswerEndpoint") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("preferredAnswerEndpointId", preferredAnswerEndpointId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + cmd.Flags().StringVar(&preferredAnswerEndpointId, "preferred-answer-endpoint-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // search-shared-line-appearance-members + var personId string + var applicationId string + var max string + var start string + var location string + var name string + var number string + var order string + var extension string + cmd := &cobra.Command{ + Use: "search-shared-line-appearance-members", + Short: "Search Shared-Line Appearance Members", + Long: "Get members available for shared-line assignment to a Webex Calling Apps Desktop device.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_read` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/{personId}/applications/{applicationId}/availableMembers") + req.PathParam("personId", personId) + req.PathParam("applicationId", applicationId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("location", location) + req.QueryParam("name", name) + req.QueryParam("number", number) + req.QueryParam("order", order) + req.QueryParam("extension", extension) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&applicationId, "application-id", "", "A unique identifier for the application.") + cmd.MarkFlagRequired("application-id") + cmd.Flags().StringVar(&max, "max", "", "Number of records per page.") + cmd.Flags().StringVar(&start, "start", "", "Page number.") + cmd.Flags().StringVar(&location, "location", "", "Location ID for the user.") + cmd.Flags().StringVar(&name, "name", "", "Search for users with names that match the query.") + cmd.Flags().StringVar(&number, "number", "", "Search for users with numbers that match the query.") + cmd.Flags().StringVar(&order, "order", "", "Sort by first name (`fname`) or last name (`lname`).") + cmd.Flags().StringVar(&extension, "extension", "", "Search for users with extensions that match the query.") + userCallCmd.AddCommand(cmd) + } + + { // get-shared-line-appearance-members + var personId string + var applicationId string + cmd := &cobra.Command{ + Use: "get-shared-line-appearance-members", + Short: "Get Shared-Line Appearance Members", + Long: "Get primary and secondary members assigned to a shared line on a Webex Calling Apps Desktop device.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_read` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/{personId}/applications/{applicationId}/members") + req.PathParam("personId", personId) + req.PathParam("applicationId", applicationId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&applicationId, "application-id", "", "A unique identifier for the application.") + cmd.MarkFlagRequired("application-id") + userCallCmd.AddCommand(cmd) + } + + { // update-shared-line-appearance-members + var personId string + var applicationId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-shared-line-appearance-members", + Short: "Put Shared-Line Appearance Members", + Long: "Add or modify primary and secondary users assigned to shared-lines on a Webex Calling Apps Desktop device.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/{personId}/applications/{applicationId}/members") + req.PathParam("personId", personId) + req.PathParam("applicationId", applicationId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&applicationId, "application-id", "", "A unique identifier for the application.") + cmd.MarkFlagRequired("application-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // update-person-voicemail-passcode + var personId string + var orgId string + var passcode string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-person-voicemail-passcode", + Short: "Modify a person's voicemail passcode", + Long: "Modify a person's voicemail passcode.\n\nModifying a person's voicemail passcode requires a full administrator, user administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/{personId}/voicemail/passcode") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("passcode", passcode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Modify voicemail passcode for this person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Modify voicemail passcode for a person in this organization.") + cmd.Flags().StringVar(&passcode, "passcode", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // get-message-summary + cmd := &cobra.Command{ + Use: "get-message-summary", + Short: "Get Message Summary", + Long: `Get a summary of the voicemail messages for the user.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/voiceMessages/summary") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + userCallCmd.AddCommand(cmd) + } + + { // list-messages + var lineOwnerId string + cmd := &cobra.Command{ + Use: "list-messages", + Short: "List Messages", + Long: `Get the list of all voicemail messages for the user.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/voiceMessages") + req.QueryParam("lineOwnerId", lineOwnerId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "The ID of a user, workspace, or virtual line for which there is a secondary line on a device owned by the user invoking the API.") + userCallCmd.AddCommand(cmd) + } + + { // delete-message + var messageId string + cmd := &cobra.Command{ + Use: "delete-message", + Short: "Delete Message", + Long: `Delete a specfic voicemail message for the user.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/voiceMessages/{messageId}") + req.PathParam("messageId", messageId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&messageId, "message-id", "", "The message identifer of the voicemail message to delete") + cmd.MarkFlagRequired("message-id") + userCallCmd.AddCommand(cmd) + } + + { // mark-read + var messageId string + var lineOwnerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "mark-read", + Short: "Mark As Read", + Long: "Update the voicemail message(s) as read for the user.\n\nIf the `messageId` is provided, then only mark that message as read. Otherwise, all messages for the user are marked as read.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/voiceMessages/markAsRead") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("messageId", messageId) + req.BodyString("lineOwnerId", lineOwnerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&messageId, "message-id", "", "") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // mark-unread + var messageId string + var lineOwnerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "mark-unread", + Short: "Mark As Unread", + Long: "Update the voicemail message(s) as unread for the user.\n\nIf the `messageId` is provided, then only mark that message as unread. Otherwise, all messages for the user are marked as unread.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/voiceMessages/markAsUnread") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("messageId", messageId) + req.BodyString("lineOwnerId", lineOwnerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&messageId, "message-id", "", "") + cmd.Flags().StringVar(&lineOwnerId, "line-owner-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // get-agent-list-available-caller-ids + var personId string + var orgId string + cmd := &cobra.Command{ + Use: "get-agent-list-available-caller-ids", + Short: "Retrieve Agent's List of Available Caller IDs", + Long: "Get the list of call queues and hunt groups available for caller ID use by this person as an agent.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:people_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/{personId}/agent/availableCallerIds") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + userCallCmd.AddCommand(cmd) + } + + { // get-agent-caller-id + var personId string + cmd := &cobra.Command{ + Use: "get-agent-caller-id", + Short: "Retrieve Agent's Caller ID Information", + Long: "Retrieve the Agent's Caller ID Information.\n\nEach agent will be able to set their outgoing Caller ID as either the Call Queue's Caller ID, Hunt Group's Caller ID or their own configured Caller ID.\n\nThis API requires a full admin or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/{personId}/agent/callerId") + req.PathParam("personId", personId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + userCallCmd.AddCommand(cmd) + } + + { // update-agent-caller-id + var personId string + var selectedCallerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-agent-caller-id", + Short: "Modify Agent's Caller ID Information", + Long: "Modify Agent's Caller ID Information.\n\nEach Agent will be able to set their outgoing Caller ID as either the designated Call Queue's Caller ID or Hunt Group's Caller ID or their own configured Caller ID\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:telephony_config_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/{personId}/agent/callerId") + req.PathParam("personId", personId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("selectedCallerId", selectedCallerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&selectedCallerId, "selected-caller-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // get-bridge-settings-person + var personId string + var orgId string + cmd := &cobra.Command{ + Use: "get-bridge-settings-person", + Short: "Read Call Bridge Settings for a Person", + Long: "Retrieve a person's Call Bridge settings.\n\nThis API requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:people_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/{personId}/features/callBridge") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + userCallCmd.AddCommand(cmd) + } + + { // update-bridge-settings-person + var personId string + var orgId string + var warningToneEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-bridge-settings-person", + Short: "Configure Call Bridge Settings for a Person", + Long: "Configure a person's Call Bridge settings.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/{personId}/features/callBridge") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("warningToneEnabled", warningToneEnabled, cmd.Flags().Changed("warning-tone-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + cmd.Flags().BoolVar(&warningToneEnabled, "warning-tone-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // get-person-secondary-available-numbers + var personId string + var orgId string + var max string + var start string + var phoneNumber string + cmd := &cobra.Command{ + Use: "get-person-secondary-available-numbers", + Short: "Get Person Secondary Available Phone Numbers", + Long: "List standard numbers that are available to be assigned as a person's secondary phone number.\nThese numbers are associated with the location of the person specified in the request URL, can be active or inactive, and are unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/{personId}/secondary/availableNumbers") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("phoneNumber", phoneNumber) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "List numbers for this organization.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of phone numbers returned to this maximum count. The default is 2000.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching phone numbers. The default is 0.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array.") + userCallCmd.AddCommand(cmd) + } + + { // get-person-fax-available-numbers + var personId string + var orgId string + var max string + var start string + var phoneNumber string + cmd := &cobra.Command{ + Use: "get-person-fax-available-numbers", + Short: "Get Person Fax Message Available Phone Numbers", + Long: "List standard numbers that are available to be assigned as a person's FAX message number.\nThese numbers are associated with the location of the person specified in the request URL, can be active or inactive, and are unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/{personId}/faxMessage/availableNumbers") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("phoneNumber", phoneNumber) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "List numbers for this organization.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of phone numbers returned to this maximum count. The default is 2000.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching phone numbers. The default is 0.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array.") + userCallCmd.AddCommand(cmd) + } + + { // get-person-forward-available-numbers + var personId string + var orgId string + var max string + var start string + var phoneNumber string + var ownerName string + var extension string + cmd := &cobra.Command{ + Use: "get-person-forward-available-numbers", + Short: "Get Person Call Forward Available Phone Numbers", + Long: "List the service and standard PSTN numbers that are available to be assigned as a person's call forward number.\nThese numbers are associated with the location of the person specified in the request URL, can be active or inactive, and are assigned to an owning entity.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/{personId}/callForwarding/availableNumbers") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("ownerName", ownerName) + req.QueryParam("extension", extension) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "List numbers for this organization.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of phone numbers returned to this maximum count. The default is 2000.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching phone numbers. The default is 0.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array.") + cmd.Flags().StringVar(&ownerName, "owner-name", "", "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255.") + cmd.Flags().StringVar(&extension, "extension", "", "Returns the list of PSTN phone numbers with the given `extension`.") + userCallCmd.AddCommand(cmd) + } + + { // get-person-primary-numbers + var orgId string + var locationId string + var max string + var start string + var phoneNumber string + var licenseType string + cmd := &cobra.Command{ + Use: "get-person-primary-numbers", + Short: "Get Person Primary Available Phone Numbers", + Long: "List numbers that are available to be assigned as a person's primary phone number.\nBy default, this API returns standard and mobile numbers from all locations that are unassigned. The parameters `licenseType` and `locationId` must align with the person's settings to determine the appropriate number for assignment.\nFailure to provide these parameters may result in the unsuccessful assignment of the returned number.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/primary/availableNumbers") + req.QueryParam("orgId", orgId) + req.QueryParam("locationId", locationId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("licenseType", licenseType) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List numbers for this organization.") + cmd.Flags().StringVar(&locationId, "location-id", "", "Return the list of phone numbers for this location within the given organization. The maximum length is 36.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of phone numbers returned to this maximum count. The default is 2000.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching phone numbers. The default is 0.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array.") + cmd.Flags().StringVar(&licenseType, "license-type", "", "Used to search numbers according to the person's `licenseType` to which the number will be assigned.") + userCallCmd.AddCommand(cmd) + } + + { // get-person-ecbn-available-numbers + var personId string + var orgId string + var max string + var start string + var phoneNumber string + var ownerName string + cmd := &cobra.Command{ + Use: "get-person-ecbn-available-numbers", + Short: "Get Person ECBN Available Phone Numbers", + Long: "List standard numbers that are available to be assigned as a person's emergency callback number.\nThese numbers are associated with the location of the person specified in the request URL, can be active or inactive, and are assigned to an owning entity.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/{personId}/emergencyCallbackNumber/availableNumbers") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("ownerName", ownerName) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "List numbers for this organization.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of phone numbers returned to this maximum count. The default is 2000.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching phone numbers. The default is 0.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array.") + cmd.Flags().StringVar(&ownerName, "owner-name", "", "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255.") + userCallCmd.AddCommand(cmd) + } + + { // get-person-intercept-available-numbers + var personId string + var orgId string + var max string + var start string + var phoneNumber string + var ownerName string + var extension string + cmd := &cobra.Command{ + Use: "get-person-intercept-available-numbers", + Short: "Get Person Call Intercept Available Phone Numbers", + Long: "List the service and standard PSTN numbers that are available to be assigned as a person's call intercept number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are assigned to an owning entity.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/{personId}/callIntercept/availableNumbers") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("ownerName", ownerName) + req.QueryParam("extension", extension) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "List numbers for this organization.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of phone numbers returned to this maximum count. The default is 2000.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching phone numbers. The default is 0.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array.") + cmd.Flags().StringVar(&ownerName, "owner-name", "", "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255.") + cmd.Flags().StringVar(&extension, "extension", "", "Returns the list of PSTN phone numbers with the given `extension`.") + userCallCmd.AddCommand(cmd) + } + + { // get-person-ms-teams-settings + var personId string + var orgId string + cmd := &cobra.Command{ + Use: "get-person-ms-teams-settings", + Short: "Retrieve a Person's MS Teams Settings", + Long: "
Not supported for Webex for Government (FedRAMP)
\n\nRetrieve a person's MS Teams settings.\n\nAt a person level, MS Teams settings allow access to retrieving the `HIDE WEBEX APP` and `PRESENCE SYNC` settings.\n\nTo retrieve a person's MS Teams settings requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/{personId}/settings/msTeams") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter since the default is the same organization as the token used to access the API.") + userCallCmd.AddCommand(cmd) + } + + { // update-person-ms-teams-setting + var personId string + var orgId string + var settingName string + var value bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-person-ms-teams-setting", + Short: "Configure a Person's MS Teams Setting", + Long: "
Not supported for Webex for Government (FedRAMP)
\n\nConfigure a Person's MS Teams setting.\n\nMS Teams settings can be configured at the person level.\n\nRequires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/{personId}/settings/msTeams") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("settingName", settingName) + req.BodyBool("value", value, cmd.Flags().Changed("value")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter since the default is the same organization as the token used to access the API.") + cmd.Flags().StringVar(&settingName, "setting-name", "", "") + cmd.Flags().BoolVar(&value, "value", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // get-personal-assistant + var personId string + var orgId string + cmd := &cobra.Command{ + Use: "get-personal-assistant", + Short: "Get Personal Assistant", + Long: "Retrieve Personal Assistant details for a specific user.\n\nPersonal Assistant is used to manage a user's incoming calls when they are away.\n\nRetrieving Personal Assistant details requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/{personId}/features/personalAssistant") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Get Personal Assistant details for the organization.") + userCallCmd.AddCommand(cmd) + } + + { // update-personal-assistant + var personId string + var orgId string + var enabled bool + var presence string + var untilDateTime string + var transferEnabled bool + var transferNumber string + var alerting string + var alertMeFirstNumberOfRings int64 + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-personal-assistant", + Short: "Update Personal Assistant", + Long: "Update Personal Assistant details for a specific user.\n\nPersonal Assistant is used to manage a user's incoming calls when they are away.\n\nUpdating Personal Assistant details requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/{personId}/features/personalAssistant") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + req.BodyString("presence", presence) + req.BodyString("untilDateTime", untilDateTime) + req.BodyBool("transferEnabled", transferEnabled, cmd.Flags().Changed("transfer-enabled")) + req.BodyString("transferNumber", transferNumber) + req.BodyString("alerting", alerting) + req.BodyInt("alertMeFirstNumberOfRings", alertMeFirstNumberOfRings, cmd.Flags().Changed("alert-me-first-number-of-rings")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Update Personal Assistant details for the organization.") + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().StringVar(&presence, "presence", "", "") + cmd.Flags().StringVar(&untilDateTime, "until-date-time", "", "") + cmd.Flags().BoolVar(&transferEnabled, "transfer-enabled", false, "") + cmd.Flags().StringVar(&transferNumber, "transfer-number", "", "") + cmd.Flags().StringVar(&alerting, "alerting", "", "") + cmd.Flags().Int64Var(&alertMeFirstNumberOfRings, "alert-me-first-number-of-rings", 0, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // list-available-features + var personId string + var name string + var phoneNumber string + var extension string + var max string + var start string + var order string + var orgId string + cmd := &cobra.Command{ + Use: "list-available-features", + Short: "Retrieve the List of Available Features", + Long: "Retrieve a list of feature identifiers that can be assigned to a user for `Mode Management`. Feature identifiers reference feature instances like `Auto Attendants`, `Call Queues`, and `Hunt Groups`.\n\nFeatures with mode-based call forwarding enabled can be assigned to a user for `Mode Management`.\n\nRetrieving this list requires a full, read-only, or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/{personId}/modeManagement/availableFeatures") + req.PathParam("personId", personId) + req.QueryParam("name", name) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("extension", extension) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("order", order) + req.QueryParam("orgId", orgId) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the user.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&name, "name", "", "List features whose `name` contains this string.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "List features whose phoneNumber contains this matching string.") + cmd.Flags().StringVar(&extension, "extension", "", "List features whose `extension` contains this matching string.") + cmd.Flags().StringVar(&max, "max", "", "Maximum number of features to return in a single page.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching objects.") + cmd.Flags().StringVar(&order, "order", "", "Sort the list of features based on `name`, `phoneNumber`, or `extension`, either `asc`, or `desc`.") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve features list from this organization.") + userCallCmd.AddCommand(cmd) + } + + { // list-features-assigned-mode-management + var personId string + var orgId string + cmd := &cobra.Command{ + Use: "list-features-assigned-mode-management", + Short: "Retrieve the List of Features Assigned to a User for Mode Management", + Long: "Retrieve a list of feature identifiers that are already assigned to a user for `Mode Management`. Feature identifiers reference feature instances like `Auto Attendants`, `Call Queues`, and `Hunt Groups`.\nA maximum of 50 features can be assigned to a user for `Mode Management`.\n\nFeatures with mode-based call forwarding enabled can be assigned to a user for `Mode Management`.\n\nRetrieving this list requires a full, read-only, or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/{personId}/modeManagement/features") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the user.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve features list from this organization.") + userCallCmd.AddCommand(cmd) + } + + { // assign-list-features-mode-management + var personId string + var orgId string + var featureIds []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "assign-list-features-mode-management", + Short: "Assign a List of Features to a User for Mode Management", + Long: "Assign a user a list of feature identifiers for `Mode Management`. Feature identifiers reference feature instances like `Auto Attendants`, `Call Queues`, and `Hunt Groups`.\nA maximum of 50 features can be assigned to a user for `Mode Management`.\n\nUpdating mode management settings for a user requires a full, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/{personId}/modeManagement/features") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("featureIds", featureIds) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the user.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve features list from this organization.") + cmd.Flags().StringSliceVar(&featureIds, "feature-ids", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // get-users-selective-accept-list + var personId string + var orgId string + cmd := &cobra.Command{ + Use: "get-users-selective-accept-list", + Short: "Get the User\u2019s Selective Call Accept Criteria List", + Long: "Retrieve selective call accept criteria list for a user.\n\nWith the selective call accept feature, you can create different rules to accept specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, read-only, or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/{personId}/selectiveAccept") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization in which the user resides.") + userCallCmd.AddCommand(cmd) + } + + { // update-users-selective-accept + var personId string + var orgId string + var enabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-users-selective-accept", + Short: "Update User\u2019s Selective Call Accept Criteria", + Long: "Modify selective call accept setting for a user.\n\nWith the Selective Call accept feature, you can create different rules to accept specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/{personId}/selectiveAccept") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization in which the user resides.") + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // create-users-selective-accept-service + var personId string + var orgId string + var callsFrom string + var acceptEnabled bool + var scheduleName string + var scheduleType string + var scheduleLevel string + var anonymousCallersEnabled bool + var unavailableCallersEnabled bool + var phoneNumbers []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-users-selective-accept-service", + Short: "Create a Criteria to the User\u2019s Selective Call Accept Service", + Long: "Add a criteria to the user's selective call accept service.\n\nWith the Selective Call accept feature, you can create different rules to accept specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/people/{personId}/selectiveAccept/criteria") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callsFrom", callsFrom) + req.BodyBool("acceptEnabled", acceptEnabled, cmd.Flags().Changed("accept-enabled")) + req.BodyString("scheduleName", scheduleName) + req.BodyString("scheduleType", scheduleType) + req.BodyString("scheduleLevel", scheduleLevel) + req.BodyBool("anonymousCallersEnabled", anonymousCallersEnabled, cmd.Flags().Changed("anonymous-callers-enabled")) + req.BodyBool("unavailableCallersEnabled", unavailableCallersEnabled, cmd.Flags().Changed("unavailable-callers-enabled")) + req.BodyStringSlice("phoneNumbers", phoneNumbers) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization in which the user resides.") + cmd.Flags().StringVar(&callsFrom, "calls-from", "", "") + cmd.Flags().BoolVar(&acceptEnabled, "accept-enabled", false, "") + cmd.Flags().StringVar(&scheduleName, "schedule-name", "", "") + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "") + cmd.Flags().StringVar(&scheduleLevel, "schedule-level", "", "") + cmd.Flags().BoolVar(&anonymousCallersEnabled, "anonymous-callers-enabled", false, "") + cmd.Flags().BoolVar(&unavailableCallersEnabled, "unavailable-callers-enabled", false, "") + cmd.Flags().StringSliceVar(&phoneNumbers, "phone-numbers", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // get-users-selective-accept-service + var personId string + var id string + var orgId string + cmd := &cobra.Command{ + Use: "get-users-selective-accept-service", + Short: "Get a Criteria for the User\u2019s Selective Call Accept Service", + Long: "Get the criteria details for the user's selective call accept service.\n\nWith the Selective Call accept feature, you can create different rules to accept specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, read-only, or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/{personId}/selectiveAccept/criteria/{id}") + req.PathParam("personId", personId) + req.PathParam("id", id) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&id, "id", "", "Criteria ID.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization in which the user resides.") + userCallCmd.AddCommand(cmd) + } + + { // update-users-selective-accept-service + var personId string + var id string + var orgId string + var callsFrom string + var acceptEnabled bool + var scheduleName string + var scheduleType string + var scheduleLevel string + var anonymousCallersEnabled bool + var unavailableCallersEnabled bool + var phoneNumbers []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-users-selective-accept-service", + Short: "Modify a Criteria From the User\u2019s Selective Call Accept Service", + Long: "Modify a criteria for the user's selective call accept service.\n\nWith the Selective Call Accept feature, you can create different rules to accept specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/{personId}/selectiveAccept/criteria/{id}") + req.PathParam("personId", personId) + req.PathParam("id", id) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callsFrom", callsFrom) + req.BodyBool("acceptEnabled", acceptEnabled, cmd.Flags().Changed("accept-enabled")) + req.BodyString("scheduleName", scheduleName) + req.BodyString("scheduleType", scheduleType) + req.BodyString("scheduleLevel", scheduleLevel) + req.BodyBool("anonymousCallersEnabled", anonymousCallersEnabled, cmd.Flags().Changed("anonymous-callers-enabled")) + req.BodyBool("unavailableCallersEnabled", unavailableCallersEnabled, cmd.Flags().Changed("unavailable-callers-enabled")) + req.BodyStringSlice("phoneNumbers", phoneNumbers) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&id, "id", "", "Criteria ID.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization in which the user resides.") + cmd.Flags().StringVar(&callsFrom, "calls-from", "", "") + cmd.Flags().BoolVar(&acceptEnabled, "accept-enabled", false, "") + cmd.Flags().StringVar(&scheduleName, "schedule-name", "", "") + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "") + cmd.Flags().StringVar(&scheduleLevel, "schedule-level", "", "") + cmd.Flags().BoolVar(&anonymousCallersEnabled, "anonymous-callers-enabled", false, "") + cmd.Flags().BoolVar(&unavailableCallersEnabled, "unavailable-callers-enabled", false, "") + cmd.Flags().StringSliceVar(&phoneNumbers, "phone-numbers", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // delete-users-selective-accept-service + var personId string + var id string + var orgId string + cmd := &cobra.Command{ + Use: "delete-users-selective-accept-service", + Short: "Delete a Criteria From the User\u2019s Selective Call Accept service", + Long: "Delete a criteria from the user's selective call accept criteria list.\n\nWith the Selective Call Accept feature, you can create different rules to accept specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/people/{personId}/selectiveAccept/criteria/{id}") + req.PathParam("personId", personId) + req.PathParam("id", id) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&id, "id", "", "Criteria ID.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization in which the user resides.") + userCallCmd.AddCommand(cmd) + } + + { // get-users-selective-reject-listing + var personId string + var orgId string + cmd := &cobra.Command{ + Use: "get-users-selective-reject-listing", + Short: "Get the User\u2019s Selective Call Rejection Criteria Listing", + Long: "Retrieve selective call rejection criteria for a user.\n\nWith the Selective Call Rejection feature, you can create different rules to reject specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, read-only, or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/{personId}/selectiveReject") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization in which the user resides.") + userCallCmd.AddCommand(cmd) + } + + { // update-users-selective-reject-list + var personId string + var orgId string + var enabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-users-selective-reject-list", + Short: "Update User\u2019s Selective Call Rejection Criteria List", + Long: "Modify selective call rejection setting for a user.\n\nWith the Selective Call Rejection feature, you can create different rules to reject specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/{personId}/selectiveReject") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization in which the user resides.") + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // create-users-selective-reject-service + var personId string + var orgId string + var callsFrom string + var rejectEnabled bool + var scheduleName string + var scheduleType string + var scheduleLevel string + var anonymousCallersEnabled bool + var unavailableCallersEnabled bool + var phoneNumbers []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-users-selective-reject-service", + Short: "Create a Criteria to the User\u2019s Selective Call Rejection Service", + Long: "Add a criteria to the user's selective call rejection service.\n\nWith the Selective Call Rejection feature, you can create different rules to reject specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/people/{personId}/selectiveReject/criteria") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callsFrom", callsFrom) + req.BodyBool("rejectEnabled", rejectEnabled, cmd.Flags().Changed("reject-enabled")) + req.BodyString("scheduleName", scheduleName) + req.BodyString("scheduleType", scheduleType) + req.BodyString("scheduleLevel", scheduleLevel) + req.BodyBool("anonymousCallersEnabled", anonymousCallersEnabled, cmd.Flags().Changed("anonymous-callers-enabled")) + req.BodyBool("unavailableCallersEnabled", unavailableCallersEnabled, cmd.Flags().Changed("unavailable-callers-enabled")) + req.BodyStringSlice("phoneNumbers", phoneNumbers) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization in which the user resides.") + cmd.Flags().StringVar(&callsFrom, "calls-from", "", "") + cmd.Flags().BoolVar(&rejectEnabled, "reject-enabled", false, "") + cmd.Flags().StringVar(&scheduleName, "schedule-name", "", "") + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "") + cmd.Flags().StringVar(&scheduleLevel, "schedule-level", "", "") + cmd.Flags().BoolVar(&anonymousCallersEnabled, "anonymous-callers-enabled", false, "") + cmd.Flags().BoolVar(&unavailableCallersEnabled, "unavailable-callers-enabled", false, "") + cmd.Flags().StringSliceVar(&phoneNumbers, "phone-numbers", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // get-users-selective-reject-service + var personId string + var id string + var orgId string + cmd := &cobra.Command{ + Use: "get-users-selective-reject-service", + Short: "Get a Criteria for the User\u2019s Selective Call Rejection Service", + Long: "Get a criteria for the user's selective call rejection service.\n\nWith the Selective Call Rejection feature, you can create different rules to reject specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, read-only, or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/{personId}/selectiveReject/criteria/{id}") + req.PathParam("personId", personId) + req.PathParam("id", id) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&id, "id", "", "Criteria ID.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization in which the user resides.") + userCallCmd.AddCommand(cmd) + } + + { // update-users-selective-reject-service + var personId string + var id string + var orgId string + var callsFrom string + var rejectEnabled bool + var scheduleName string + var scheduleType string + var scheduleLevel string + var anonymousCallersEnabled bool + var unavailableCallersEnabled bool + var phoneNumbers []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-users-selective-reject-service", + Short: "Modify a Criteria for the User\u2019s Selective Call Rejection Service", + Long: "Modify a criteria for the user's selective call rejection service.\n\nWith the Selective Call Rejection feature, you can create different rules to reject specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/{personId}/selectiveReject/criteria/{id}") + req.PathParam("personId", personId) + req.PathParam("id", id) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callsFrom", callsFrom) + req.BodyBool("rejectEnabled", rejectEnabled, cmd.Flags().Changed("reject-enabled")) + req.BodyString("scheduleName", scheduleName) + req.BodyString("scheduleType", scheduleType) + req.BodyString("scheduleLevel", scheduleLevel) + req.BodyBool("anonymousCallersEnabled", anonymousCallersEnabled, cmd.Flags().Changed("anonymous-callers-enabled")) + req.BodyBool("unavailableCallersEnabled", unavailableCallersEnabled, cmd.Flags().Changed("unavailable-callers-enabled")) + req.BodyStringSlice("phoneNumbers", phoneNumbers) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&id, "id", "", "Criteria ID.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization in which the user resides.") + cmd.Flags().StringVar(&callsFrom, "calls-from", "", "") + cmd.Flags().BoolVar(&rejectEnabled, "reject-enabled", false, "") + cmd.Flags().StringVar(&scheduleName, "schedule-name", "", "") + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "") + cmd.Flags().StringVar(&scheduleLevel, "schedule-level", "", "") + cmd.Flags().BoolVar(&anonymousCallersEnabled, "anonymous-callers-enabled", false, "") + cmd.Flags().BoolVar(&unavailableCallersEnabled, "unavailable-callers-enabled", false, "") + cmd.Flags().StringSliceVar(&phoneNumbers, "phone-numbers", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // delete-users-selective-reject-service + var personId string + var id string + var orgId string + cmd := &cobra.Command{ + Use: "delete-users-selective-reject-service", + Short: "Delete a Criteria From the User\u2019s Selective Call Rejection Service", + Long: "Delete a criteria from the user's selective call rejection service.\n\nWith the Selective Call Rejection feature, you can create different rules to reject specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/people/{personId}/selectiveReject/criteria/{id}") + req.PathParam("personId", personId) + req.PathParam("id", id) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&id, "id", "", "Criteria ID.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization in which the user resides.") + userCallCmd.AddCommand(cmd) + } + + { // get-users-selective-forward + var personId string + var orgId string + cmd := &cobra.Command{ + Use: "get-users-selective-forward", + Short: "Get the User\u2019s Selective Call Forwarding", + Long: "Retrieve selective call forwarding criteria for a user.\n\nWith the Selective Call Forwarding feature, you can create different rules to forward specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, read-only, or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/{personId}/selectiveForward") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization in which the user resides.") + userCallCmd.AddCommand(cmd) + } + + { // update-users-selective-forward-list + var personId string + var orgId string + var enabled bool + var defaultPhoneNumberToForward string + var ringReminderEnabled bool + var destinationVoicemailEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-users-selective-forward-list", + Short: "Update User\u2019s Selective Call Forwarding Criteria List", + Long: "Modify selective call forwarding setting for a user.\n\nWith the Selective Call Forwarding feature, you can create different rules to forward specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/{personId}/selectiveForward") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + req.BodyString("defaultPhoneNumberToForward", defaultPhoneNumberToForward) + req.BodyBool("ringReminderEnabled", ringReminderEnabled, cmd.Flags().Changed("ring-reminder-enabled")) + req.BodyBool("destinationVoicemailEnabled", destinationVoicemailEnabled, cmd.Flags().Changed("destination-voicemail-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization in which the user resides.") + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().StringVar(&defaultPhoneNumberToForward, "default-phone-number-to-forward", "", "") + cmd.Flags().BoolVar(&ringReminderEnabled, "ring-reminder-enabled", false, "") + cmd.Flags().BoolVar(&destinationVoicemailEnabled, "destination-voicemail-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // create-users-selective-forward-service + var personId string + var orgId string + var forwardToPhoneNumber string + var sendToVoicemailEnabled bool + var callsFrom string + var scheduleName string + var scheduleType string + var scheduleLevel string + var anonymousCallersEnabled bool + var unavailableCallersEnabled bool + var phoneNumbers []string + var forwardEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-users-selective-forward-service", + Short: "Create a Criteria to the User\u2019s Selective Call Forwarding Service", + Long: "Add a criteria to the user's selective call forwarding service.\n\nWith the Selective Call Forwarding feature, you can create different rules to forward specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/people/{personId}/selectiveForward/criteria") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("forwardToPhoneNumber", forwardToPhoneNumber) + req.BodyBool("sendToVoicemailEnabled", sendToVoicemailEnabled, cmd.Flags().Changed("send-to-voicemail-enabled")) + req.BodyString("callsFrom", callsFrom) + req.BodyString("scheduleName", scheduleName) + req.BodyString("scheduleType", scheduleType) + req.BodyString("scheduleLevel", scheduleLevel) + req.BodyBool("anonymousCallersEnabled", anonymousCallersEnabled, cmd.Flags().Changed("anonymous-callers-enabled")) + req.BodyBool("unavailableCallersEnabled", unavailableCallersEnabled, cmd.Flags().Changed("unavailable-callers-enabled")) + req.BodyStringSlice("phoneNumbers", phoneNumbers) + req.BodyBool("forwardEnabled", forwardEnabled, cmd.Flags().Changed("forward-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization in which the user resides.") + cmd.Flags().StringVar(&forwardToPhoneNumber, "forward-to-phone-number", "", "") + cmd.Flags().BoolVar(&sendToVoicemailEnabled, "send-to-voicemail-enabled", false, "") + cmd.Flags().StringVar(&callsFrom, "calls-from", "", "") + cmd.Flags().StringVar(&scheduleName, "schedule-name", "", "") + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "") + cmd.Flags().StringVar(&scheduleLevel, "schedule-level", "", "") + cmd.Flags().BoolVar(&anonymousCallersEnabled, "anonymous-callers-enabled", false, "") + cmd.Flags().BoolVar(&unavailableCallersEnabled, "unavailable-callers-enabled", false, "") + cmd.Flags().StringSliceVar(&phoneNumbers, "phone-numbers", nil, "") + cmd.Flags().BoolVar(&forwardEnabled, "forward-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // get-users-selective-forward-service + var personId string + var id string + var orgId string + cmd := &cobra.Command{ + Use: "get-users-selective-forward-service", + Short: "Get a Criteria for the User\u2019s Selective Call Forwarding Service", + Long: "Get the criteria details for the user's selective call forwarding service.\n\nWith the Selective Call Forwarding feature, you can create different rules to forward specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, read-only, or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/{personId}/selectiveForward/criteria/{id}") + req.PathParam("personId", personId) + req.PathParam("id", id) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&id, "id", "", "Criteria ID.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization in which the user resides.") + userCallCmd.AddCommand(cmd) + } + + { // update-users-selective-forward-service + var personId string + var id string + var orgId string + var forwardToPhoneNumber string + var sendToVoicemailEnabled bool + var callsFrom string + var scheduleName string + var scheduleType string + var scheduleLevel string + var anonymousCallersEnabled bool + var unavailableCallersEnabled bool + var phoneNumbers []string + var forwardEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-users-selective-forward-service", + Short: "Modify a Criteria for the User\u2019s Selective Call Forwarding Service", + Long: "Modify a criteria for the user's selective call forwarding service.\n\nWith the Selective Call Forwarding feature, you can create different rules to forward specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/{personId}/selectiveForward/criteria/{id}") + req.PathParam("personId", personId) + req.PathParam("id", id) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("forwardToPhoneNumber", forwardToPhoneNumber) + req.BodyBool("sendToVoicemailEnabled", sendToVoicemailEnabled, cmd.Flags().Changed("send-to-voicemail-enabled")) + req.BodyString("callsFrom", callsFrom) + req.BodyString("scheduleName", scheduleName) + req.BodyString("scheduleType", scheduleType) + req.BodyString("scheduleLevel", scheduleLevel) + req.BodyBool("anonymousCallersEnabled", anonymousCallersEnabled, cmd.Flags().Changed("anonymous-callers-enabled")) + req.BodyBool("unavailableCallersEnabled", unavailableCallersEnabled, cmd.Flags().Changed("unavailable-callers-enabled")) + req.BodyStringSlice("phoneNumbers", phoneNumbers) + req.BodyBool("forwardEnabled", forwardEnabled, cmd.Flags().Changed("forward-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&id, "id", "", "Criteria ID.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization in which the user resides.") + cmd.Flags().StringVar(&forwardToPhoneNumber, "forward-to-phone-number", "", "") + cmd.Flags().BoolVar(&sendToVoicemailEnabled, "send-to-voicemail-enabled", false, "") + cmd.Flags().StringVar(&callsFrom, "calls-from", "", "") + cmd.Flags().StringVar(&scheduleName, "schedule-name", "", "") + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "") + cmd.Flags().StringVar(&scheduleLevel, "schedule-level", "", "") + cmd.Flags().BoolVar(&anonymousCallersEnabled, "anonymous-callers-enabled", false, "") + cmd.Flags().BoolVar(&unavailableCallersEnabled, "unavailable-callers-enabled", false, "") + cmd.Flags().StringSliceVar(&phoneNumbers, "phone-numbers", nil, "") + cmd.Flags().BoolVar(&forwardEnabled, "forward-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // delete-users-selective-forward-service + var personId string + var id string + var orgId string + cmd := &cobra.Command{ + Use: "delete-users-selective-forward-service", + Short: "Delete a Criteria From the User\u2019s Selective Call Forwarding Service", + Long: "Delete a criteria from the user's selective call forwarding service.\n\nWith the Selective Call Forwarding feature, you can create different rules to forward specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/people/{personId}/selectiveForward/criteria/{id}") + req.PathParam("personId", personId) + req.PathParam("id", id) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&id, "id", "", "Criteria ID.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization in which the user resides.") + userCallCmd.AddCommand(cmd) + } + + { // get-person-application-services-settings-2 + var personId string + var orgId string + cmd := &cobra.Command{ + Use: "get-person-application-services-settings-2", + Short: "Retrieve a person's Application Services Settings New", + Long: "Gets mobile and PC applications settings for a user.\n\nApplication services let you determine the ringing behavior for calls made to people in certain scenarios. You can also specify which devices can download the Webex Calling app.\n\nRequires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/people/{personId}/features/applications") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + userCallCmd.AddCommand(cmd) + } + + { // search-shared-line-appearance-members-2 + var personId string + var max string + var start string + var order string + var location string + var name string + var phoneNumber string + var extension string + cmd := &cobra.Command{ + Use: "search-shared-line-appearance-members-2", + Short: "Search Shared-Line Appearance Members New", + Long: "Get members available for shared-line assignment to a Webex Calling Apps.\n\nLike most hardware devices, applications support assigning additional shared lines which can monitored and utilized by the application.\n\nThis API requires a full, user, or location administrator auth token with the `spark-admin:telephony_config_read` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/{personId}/applications/availableMembers") + req.PathParam("personId", personId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("order", order) + req.QueryParam("location", location) + req.QueryParam("name", name) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("extension", extension) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of objects returned to this maximum count.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching objects.") + cmd.Flags().StringVar(&order, "order", "", "Order the Route Lists according to number, ascending or descending.") + cmd.Flags().StringVar(&location, "location", "", "Location ID for the user.") + cmd.Flags().StringVar(&name, "name", "", "Search for users with names that match the query.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Search for users with numbers that match the query.") + cmd.Flags().StringVar(&extension, "extension", "", "Search for users with extensions that match the query.") + userCallCmd.AddCommand(cmd) + } + + { // get-shared-line-appearance-members-2 + var personId string + cmd := &cobra.Command{ + Use: "get-shared-line-appearance-members-2", + Short: "Get Shared-Line Appearance Members New", + Long: "Get primary and secondary members assigned to a shared line on a Webex Calling Apps.\n\nLike most hardware devices, applications support assigning additional shared lines which can monitored and utilized by the application.\n\nThis API requires a full, user, or location administrator auth token with the `spark-admin:telephony_config_read` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/{personId}/applications/members") + req.PathParam("personId", personId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + userCallCmd.AddCommand(cmd) + } + + { // update-shared-line-appearance-members-2 + var personId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-shared-line-appearance-members-2", + Short: "Put Shared-Line Appearance Members New", + Long: "Add or modify primary and secondary users assigned to shared-lines on a Webex Calling Apps.\n\nLike most hardware devices, applications support assigning additional shared lines which can monitored and utilized by the application.\n\nThis API requires a full, user, or location administrator auth token with the `spark-admin:telephony_config_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/{personId}/applications/members") + req.PathParam("personId", personId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // get-captions-settings + var personId string + var orgId string + cmd := &cobra.Command{ + Use: "get-captions-settings", + Short: "Get the user call captions settings", + Long: "Retrieve the user's call captions settings.\n\n**NOTE**: The call captions feature is not supported for Webex Calling Standard users or users assigned to locations in India.\n\nThe call caption feature allows the customer to enable and manage closed captions and transcript functionality (rolling caption panel) in Webex Calling, without requiring the user to escalate the call to a meeting.\n\nThis API requires a full, user, read-only, or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/{personId}/callCaptions") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Unique identifier for the organization.") + userCallCmd.AddCommand(cmd) + } + + { // update-captions-settings + var personId string + var orgId string + var userClosedCaptionsEnabled bool + var userTranscriptsEnabled bool + var useLocationSettingsEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-captions-settings", + Short: "Update the user call captions settings", + Long: "Update the user's call captions settings.\n\n**NOTE**: The call captions feature is not supported for Webex Calling Standard users or users assigned to locations in India.\n\nThe call caption feature allows the customer to enable and manage closed captions and transcript functionality (rolling caption panel) in Webex Calling, without requiring the user to escalate the call to a meeting.\n\nThis API requires a full, user or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/{personId}/callCaptions") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("userClosedCaptionsEnabled", userClosedCaptionsEnabled, cmd.Flags().Changed("user-closed-captions-enabled")) + req.BodyBool("userTranscriptsEnabled", userTranscriptsEnabled, cmd.Flags().Changed("user-transcripts-enabled")) + req.BodyBool("useLocationSettingsEnabled", useLocationSettingsEnabled, cmd.Flags().Changed("use-location-settings-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Unique identifier for the organization.") + cmd.Flags().BoolVar(&userClosedCaptionsEnabled, "user-closed-captions-enabled", false, "") + cmd.Flags().BoolVar(&userTranscriptsEnabled, "user-transcripts-enabled", false, "") + cmd.Flags().BoolVar(&useLocationSettingsEnabled, "use-location-settings-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // get-person-executive-filtering-settings + var personId string + var orgId string + cmd := &cobra.Command{ + Use: "get-person-executive-filtering-settings", + Short: "Get Person Executive Call Filtering Settings", + Long: "Retrieve the executive call filtering settings for the specified person.\n\nExecutive Call Filtering in Webex allows you to control which calls are allowed to reach the executive assistant based on custom criteria, such as specific phone numbers or call types. You can enable or disable call filtering and configure filter rules to manage incoming calls.\n\nThis API requires a full, user, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/{personId}/executive/callFiltering") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization ID for the user.") + userCallCmd.AddCommand(cmd) + } + + { // update-person-executive-filtering-settings + var personId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-person-executive-filtering-settings", + Short: "Modify Person Executive Call Filtering Settings", + Long: "Update the executive call filtering settings for the specified person.\n\nExecutive Call Filtering in Webex allows you to control which calls are allowed to reach the executive assistant based on custom criteria, such as specific phone numbers or call types. You can enable or disable call filtering and configure filter rules to manage incoming calls.\n\nThis API requires a full, user, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/{personId}/executive/callFiltering") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization ID for the user.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // get-person-executive-filtering-settings-2 + var personId string + var id string + var orgId string + cmd := &cobra.Command{ + Use: "get-person-executive-filtering-settings-2", + Short: "Get Person Executive Call Filtering Criteria Settings", + Long: "Retrieve the executive call filtering criteria settings for the specified person.\n\nExecutive Call Filtering Criteria in Webex allows you to retrieve the detailed configuration for a specific filter rule. This includes schedule settings, phone number filters, and call routing preferences for executive call filtering.\n\nThis API requires a full, user, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/{personId}/executive/callFiltering/criteria/{id}") + req.PathParam("personId", personId) + req.PathParam("id", id) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&id, "id", "", "The `id` parameter specifies the unique identifier for the executive call filtering criteria.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization ID for the user.") + userCallCmd.AddCommand(cmd) + } + + { // update-person-executive-filtering-settings-2 + var personId string + var id string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-person-executive-filtering-settings-2", + Short: "Modify Person Executive Call Filtering Criteria Settings", + Long: "Update the executive call filtering settings for the specified person.\n\nExecutive Call Filtering in Webex allows you to control which calls are allowed to reach the executive assistant based on custom criteria, such as specific phone numbers or call types. You can enable or disable call filtering and configure filter rules to manage incoming calls.\n\nThis API requires a full, user or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/{personId}/executive/callFiltering/criteria/{id}") + req.PathParam("personId", personId) + req.PathParam("id", id) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&id, "id", "", "The `id` parameter specifies the unique identifier for the executive call filtering criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL2RHVnpkRjltYVd4MFpYST0`.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization ID for the user.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // delete-person-executive-filtering + var personId string + var id string + var orgId string + cmd := &cobra.Command{ + Use: "delete-person-executive-filtering", + Short: "Delete Person Executive Call Filtering Criteria", + Long: "Delete a specific executive call filtering criteria configuration for the specified person.\n\nExecutive Call Filtering Criteria in Webex allows you to manage detailed filter rules for incoming calls. This API removes a specific filter rule by its unique identifier.\n\nThis API requires a full, user or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/people/{personId}/executive/callFiltering/criteria/{id}") + req.PathParam("personId", personId) + req.PathParam("id", id) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&id, "id", "", "The `id` parameter specifies the unique identifier for the executive call filtering criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL2RHVnpkRjltYVd4MFpYST0`.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization ID for the user.") + userCallCmd.AddCommand(cmd) + } + + { // create-person-executive-filtering + var personId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-person-executive-filtering", + Short: "Add Person Executive Call Filtering Criteria", + Long: "Create a new executive call filtering criteria configuration for the specified person.\n\nExecutive Call Filtering Criteria in Webex allows you to define detailed filter rules for incoming calls. This API creates a new filter rule with the specified configuration, including schedule, phone numbers, and call routing preferences.\n\nThis API requires a full, user or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/people/{personId}/executive/callFiltering/criteria") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization ID for the user.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // get-person-executive-alert-settings + var personId string + var orgId string + cmd := &cobra.Command{ + Use: "get-person-executive-alert-settings", + Short: "Get Person Executive Alert Settings", + Long: "Get executive alert settings for the specified person.\n\nExecutive Alert settings in Webex allow you to control how calls are routed to executive assistants, including alerting mode, rollover options, and caller ID presentation. You can configure settings such as sequential or simultaneous alerting, and specify what happens when calls aren't answered.\n\nThis API requires a full, user, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/{personId}/executive/alert") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization ID for the person.") + userCallCmd.AddCommand(cmd) + } + + { // update-person-executive-alert-settings + var personId string + var orgId string + var alertingMode string + var nextAssistantNumberOfRings int64 + var rolloverEnabled bool + var rolloverAction string + var rolloverForwardToPhoneNumber string + var rolloverWaitTimeInSecs int64 + var clidNameMode string + var customClidname string + var customClidnameInUnicode string + var clidPhoneNumberMode string + var customClidphoneNumber string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-person-executive-alert-settings", + Short: "Modify Person Executive Alert Settings", + Long: "Update executive alert settings for the specified person.\n\nExecutive Alert settings in Webex allow you to control how calls are routed to executive assistants, including alerting mode, rollover options, and caller ID presentation. You can configure settings such as sequential or simultaneous alerting, and specify what happens when calls aren't answered.\n\nThis API requires a full, user, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/{personId}/executive/alert") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("alertingMode", alertingMode) + req.BodyInt("nextAssistantNumberOfRings", nextAssistantNumberOfRings, cmd.Flags().Changed("next-assistant-number-of-rings")) + req.BodyBool("rolloverEnabled", rolloverEnabled, cmd.Flags().Changed("rollover-enabled")) + req.BodyString("rolloverAction", rolloverAction) + req.BodyString("rolloverForwardToPhoneNumber", rolloverForwardToPhoneNumber) + req.BodyInt("rolloverWaitTimeInSecs", rolloverWaitTimeInSecs, cmd.Flags().Changed("rollover-wait-time-in-secs")) + req.BodyString("clidNameMode", clidNameMode) + req.BodyString("customCLIDName", customClidname) + req.BodyString("customCLIDNameInUnicode", customClidnameInUnicode) + req.BodyString("clidPhoneNumberMode", clidPhoneNumberMode) + req.BodyString("customCLIDPhoneNumber", customClidphoneNumber) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization ID for the person.") + cmd.Flags().StringVar(&alertingMode, "alerting-mode", "", "") + cmd.Flags().Int64Var(&nextAssistantNumberOfRings, "next-assistant-number-of-rings", 0, "") + cmd.Flags().BoolVar(&rolloverEnabled, "rollover-enabled", false, "") + cmd.Flags().StringVar(&rolloverAction, "rollover-action", "", "") + cmd.Flags().StringVar(&rolloverForwardToPhoneNumber, "rollover-forward-to-phone-number", "", "") + cmd.Flags().Int64Var(&rolloverWaitTimeInSecs, "rollover-wait-time-in-secs", 0, "") + cmd.Flags().StringVar(&clidNameMode, "clid-name-mode", "", "") + cmd.Flags().StringVar(&customClidname, "custom-clidname", "", "") + cmd.Flags().StringVar(&customClidnameInUnicode, "custom-clidname-in-unicode", "", "") + cmd.Flags().StringVar(&clidPhoneNumberMode, "clid-phone-number-mode", "", "") + cmd.Flags().StringVar(&customClidphoneNumber, "custom-clidphone-number", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // get-person-executive-assigned-assistants + var personId string + var orgId string + cmd := &cobra.Command{ + Use: "get-person-executive-assigned-assistants", + Short: "Get Person Executive Assigned Assistants", + Long: "Get list of assigned executive assistants for the specified person.\n\nAs an executive, you can add assistants to your executive pool to manage calls for you. You can set when and which types of calls they can handle. Assistants can opt in when needed or opt out when not required.\n\nThis API requires a full, user, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/{personId}/executive/assignedAssistants") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization ID for the person.") + userCallCmd.AddCommand(cmd) + } + + { // update-person-executive-assigned-assistants + var personId string + var orgId string + var assistantIds []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-person-executive-assigned-assistants", + Short: "Modify Person Executive Assigned Assistants", + Long: "Update assigned executive assistants for the specified person.\n\nAs an executive, you can add assistants to your executive pool to manage calls for you. You can set when and which types of calls they can handle. Assistants can opt in when needed or opt out when not required.\n\nThis API requires a full, user, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/{personId}/executive/assignedAssistants") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("assistantIds", assistantIds) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization ID for the person.") + cmd.Flags().StringSliceVar(&assistantIds, "assistant-ids", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // get-person-executive-available-assistants + var personId string + var orgId string + var max string + var start string + var name string + var phoneNumber string + cmd := &cobra.Command{ + Use: "get-person-executive-available-assistants", + Short: "Get Person Executive Available Assistants", + Long: "Retrieves a list of people available for assignment as executive assistants to the specified person.\n\nAs an executive, you can add assistants to your executive pool to manage calls for you. You can set when and which types of calls they can handle. Assistants can opt in when needed or opt out when not required.\n\nThis API requires a full, user, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/{personId}/executive/availableAssistants") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("name", name) + req.QueryParam("phoneNumber", phoneNumber) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization ID for the person.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of objects returned to this maximum count.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching objects.") + cmd.Flags().StringVar(&name, "name", "", "Only return people with the matching name (person's first and last name combination).") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Only return people with the matching phone number or extension.") + userCallCmd.AddCommand(cmd) + } + + { // get-person-executive-assistant-settings + var personId string + var orgId string + cmd := &cobra.Command{ + Use: "get-person-executive-assistant-settings", + Short: "Get Person Executive Assistant Settings", + Long: "Get executive assistant settings for the specified person when person is configured as executive assistant.\n\nExecutive assistants can make, answer, intercept, and route calls appropriately on behalf of their executive.\nAssistants can also set the call forwarding destination, and join or leave an executive\u2019s pool.\n\nThis API requires a full, user, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/{personId}/executive/assistant") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization ID for the person.") + userCallCmd.AddCommand(cmd) + } + + { // update-person-executive-assistant-settings + var personId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-person-executive-assistant-settings", + Short: "Modify Person Executive Assistant Settings", + Long: "Update executive assistant settings for the specified person when person is configured as executive assistant.\n\nExecutive assistants can make, answer, intercept, and route calls appropriately on behalf of their executive.\nAssistants can also set the call forwarding destination, and join or leave an executive\u2019s pool.\n\nThis API requires a full, user, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/{personId}/executive/assistant") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization ID for the person.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // get-person-executive-screening-settings + var personId string + var orgId string + cmd := &cobra.Command{ + Use: "get-person-executive-screening-settings", + Short: "Get Person Executive Screening Settings", + Long: "Get executive screening settings for the specified person.\n\nExecutive Screening in Webex allows you to manage how incoming calls are screened and alerted based on your preferences. You can enable or disable executive screening and configure alert types and locations for notifications.\n\nThis API requires a full, user, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/{personId}/executive/screening") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization ID for the person.") + userCallCmd.AddCommand(cmd) + } + + { // update-person-executive-screening-settings + var personId string + var orgId string + var enabled bool + var alertType string + var alertAnywhereLocationEnabled bool + var alertMobilityLocationEnabled bool + var alertSharedCallAppearanceLocationEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-person-executive-screening-settings", + Short: "Modify Person Executive Screening Settings", + Long: "Update executive screening settings for the specified person.\n\nExecutive Screening in Webex allows you to manage how incoming calls are screened and alerted based on your preferences. You can enable or disable executive screening and configure alert types and locations for notifications.\n\nThis API requires a full, user, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/{personId}/executive/screening") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + req.BodyString("alertType", alertType) + req.BodyBool("alertAnywhereLocationEnabled", alertAnywhereLocationEnabled, cmd.Flags().Changed("alert-anywhere-location-enabled")) + req.BodyBool("alertMobilityLocationEnabled", alertMobilityLocationEnabled, cmd.Flags().Changed("alert-mobility-location-enabled")) + req.BodyBool("alertSharedCallAppearanceLocationEnabled", alertSharedCallAppearanceLocationEnabled, cmd.Flags().Changed("alert-shared-call-appearance-location-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization ID for the person.") + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().StringVar(&alertType, "alert-type", "", "") + cmd.Flags().BoolVar(&alertAnywhereLocationEnabled, "alert-anywhere-location-enabled", false, "") + cmd.Flags().BoolVar(&alertMobilityLocationEnabled, "alert-mobility-location-enabled", false, "") + cmd.Flags().BoolVar(&alertSharedCallAppearanceLocationEnabled, "alert-shared-call-appearance-location-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // get-count-shared-line-appearance-members + var personId string + var orgId string + var locationId string + var memberName string + var phoneNumber string + var extension string + cmd := &cobra.Command{ + Use: "get-count-shared-line-appearance-members", + Short: "Get Count of Shared-Line Appearance Members", + Long: "Get the count of members available for shared-line assignment to Webex Calling Apps.\n\nShared-line appearance allows multiple devices or applications to share a single line for call handling.\n\nThis API requires a full, user, or location administrator auth token with the `spark-admin:telephony_config_read` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/{personId}/applications/availableMembers/count") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + req.QueryParam("locationId", locationId) + req.QueryParam("memberName", memberName) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("extension", extension) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization ID for the person.") + cmd.Flags().StringVar(&locationId, "location-id", "", "Location ID for the person.") + cmd.Flags().StringVar(&memberName, "member-name", "", "Search for people with names that match the query.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Search for people with numbers that match the query.") + cmd.Flags().StringVar(&extension, "extension", "", "Search for people with extensions that match the query.") + userCallCmd.AddCommand(cmd) + } + + { // get-timezone-announcement-language-settings-person + var personId string + var orgId string + cmd := &cobra.Command{ + Use: "get-timezone-announcement-language-settings-person", + Short: "Get Timezone and Announcement Language Settings of a Person", + Long: "Retrieve a person's timezone and announcement language settings.\n\nWebex Calling supports configuring timezone and announcement language preferences, allowing personalized call experience based on their location and language preferences.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/{personId}") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Retrieve timezone and announcement language settings of this person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization ID. If not specified, uses the organization from the OAuth token.") + userCallCmd.AddCommand(cmd) + } + + { // update-timezone-announcement-language-settings-person + var personId string + var orgId string + var announcementLanguage string + var timeZone string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-timezone-announcement-language-settings-person", + Short: "Update Timezone and Announcement Language Settings of a Person", + Long: "Modify a person's timezone and announcement language settings.\n\nWebex Calling supports configuring timezone and announcement language preferences, allowing personalized call experience based on their location and language preferences.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/{personId}") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("announcementLanguage", announcementLanguage) + req.BodyString("timeZone", timeZone) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Modify timezone and announcement language settings of this person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization ID. If not specified, uses the organization from the OAuth token.") + cmd.Flags().StringVar(&announcementLanguage, "announcement-language", "", "") + cmd.Flags().StringVar(&timeZone, "time-zone", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userCallCmd.AddCommand(cmd) + } + + { // get-country-calling-configuration + var countryCode string + var orgId string + cmd := &cobra.Command{ + Use: "get-country-calling-configuration", + Short: "Get Country Calling Configuration", + Long: "Retrieve country-specific configuration details including state requirements, zip code requirements, available states, and supported time zones.\n\nThis information helps administrators configure user settings with valid timezone and location data for a specific country.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/countries/{countryCode}") + req.PathParam("countryCode", countryCode) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&countryCode, "country-code", "", "The ISO country code to retrieve configuration for.") + cmd.MarkFlagRequired("country-code") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization ID. If not specified, uses the organization from the OAuth token.") + userCallCmd.AddCommand(cmd) + } + +} diff --git a/cmd/calling/virtual_extensions.go b/cmd/calling/virtual_extensions.go new file mode 100644 index 0000000..76390fe --- /dev/null +++ b/cmd/calling/virtual_extensions.go @@ -0,0 +1,558 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package calling + +import ( + "fmt" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strings.Join + +var virtualExtensionsCmd = &cobra.Command{ + Use: "virtual-extensions", + Short: "VirtualExtensions commands", +} + +func init() { + cmd.CallingCmd.AddCommand(virtualExtensionsCmd) + + { // create + var orgId string + var displayName string + var phoneNumber string + var extension string + var firstName string + var lastName string + var locationId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a Virtual Extension", + Long: "Create new Virtual Extension for the given organization or location.\n\nYou can set up virtual extensions at the organization or location level. The organization level enables everyone across your organization to dial the same extension number to reach someone.\nYou can use the location level virtual extension like any other extension assigned to the specific location.\nUsers at the specific location can dial the extension. However, users at other locations can reach the virtual extension by dialing the ESN.\n\nCreating a virtual extension requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write` and `identity:contacts_rw`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/virtualExtensions") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("displayName", displayName) + req.BodyString("phoneNumber", phoneNumber) + req.BodyString("extension", extension) + req.BodyString("firstName", firstName) + req.BodyString("lastName", lastName) + req.BodyString("locationId", locationId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Unique identifier for the organization.") + cmd.Flags().StringVar(&displayName, "display-name", "", "") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "") + cmd.Flags().StringVar(&extension, "extension", "", "") + cmd.Flags().StringVar(&firstName, "first-name", "", "") + cmd.Flags().StringVar(&lastName, "last-name", "", "") + cmd.Flags().StringVar(&locationId, "location-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + virtualExtensionsCmd.AddCommand(cmd) + } + + { // list + var orgId string + var max string + var start string + var order string + var extension string + var phoneNumber string + var name string + var locationName string + var locationId string + var orgLevelOnly string + cmd := &cobra.Command{ + Use: "list", + Short: "Read the List of Virtual Extensions", + Long: "Retrieve virtual extensions associated with a specific customer.\n\nThe GET Virtual Extensions API allows administrators to retrieve a list of virtual extensions configured within their organization. Virtual extensions enable users to dial extension numbers that route to external phone numbers, such as those of remote workers or frequently contacted clients.\nThis API returns key information including the extension, associated phone number (in E.164 format), display name, and the location to which the virtual extension belongs\nThe API supports filtering by various parameters, such as extension number, phone number, and location name. The results can be paginated using the `max` and `start` parameters, and the order of the results can be specified using the `order` parameter.\n\nRetrieving a Virtual Extension requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/virtualExtensions") + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("order", order) + req.QueryParam("extension", extension) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("name", name) + req.QueryParam("locationName", locationName) + req.QueryParam("locationId", locationId) + req.QueryParam("orgLevelOnly", orgLevelOnly) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Unique identifier for the organization.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of virtual extensions returned to this maximum count. Default is 10.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching virtual extensions. Default is 0.") + cmd.Flags().StringVar(&order, "order", "", "Order the list of virtual extensions in ascending or descending order. Default is ascending.") + cmd.Flags().StringVar(&extension, "extension", "", "Filter the list of virtual extensions by extension number.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Filter the list of virtual extensions by phone number.") + cmd.Flags().StringVar(&name, "name", "", "Filter the list of virtual extensions by name. This can be either first name or last name.") + cmd.Flags().StringVar(&locationName, "location-name", "", "Filter the list of virtual extensions by location name.(Only one of the locationName, locationId, and OrgLevelOnly query parameters is allowed at the same time.)") + cmd.Flags().StringVar(&locationId, "location-id", "", "Filter the list of virtual extensions by location ID.") + cmd.Flags().StringVar(&orgLevelOnly, "org-level-only", "", "Filter the list of virtual extensions by organization level. If orgLevelOnly is true, return only the organization level virtual extensions.") + virtualExtensionsCmd.AddCommand(cmd) + } + + { // get + var extensionId string + var orgId string + cmd := &cobra.Command{ + Use: "get", + Short: "Get a Virtual Extension", + Long: "Retrieve Virtual Extension details for the given extension ID.\n\nVirtual extensions integrate remote workers on separate telephony systems into Webex Calling, enabling users to reach them via extension dialing.\nThis endpoint allows administrators to retrieve configuration details for a specific virtual extension, ensuring visibility into the mapping between extensions and external phone numbers.\n\nRetrieving a Virtual Extension requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/virtualExtensions/{extensionId}") + req.PathParam("extensionId", extensionId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&extensionId, "extension-id", "", "ID of the virtual extension.") + cmd.MarkFlagRequired("extension-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Unique identifier for the organization.") + virtualExtensionsCmd.AddCommand(cmd) + } + + { // update + var extensionId string + var orgId string + var firstName string + var lastName string + var displayName string + var phoneNumber string + var extension string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Short: "Update a Virtual Extension", + Long: "Update Virtual Extension details for the given extension ID.\n\nThis API updates the configuration of an existing virtual extension identified by its unique extension ID. Administrators can modify fields such as the extension, associated phone number (in E.164 format), display name, and location etc.\n\nUpdating a Virtual Extension requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write` and `identity:contacts_rw`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/virtualExtensions/{extensionId}") + req.PathParam("extensionId", extensionId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("firstName", firstName) + req.BodyString("lastName", lastName) + req.BodyString("displayName", displayName) + req.BodyString("phoneNumber", phoneNumber) + req.BodyString("extension", extension) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&extensionId, "extension-id", "", "ID of the virtual extension.") + cmd.MarkFlagRequired("extension-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Unique identifier for the organization.") + cmd.Flags().StringVar(&firstName, "first-name", "", "") + cmd.Flags().StringVar(&lastName, "last-name", "", "") + cmd.Flags().StringVar(&displayName, "display-name", "", "") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "") + cmd.Flags().StringVar(&extension, "extension", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + virtualExtensionsCmd.AddCommand(cmd) + } + + { // delete + var extensionId string + var orgId string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete a Virtual Extension", + Long: "Delete Virtual Extension using the extension ID.\n\nThis API permanently deletes a virtual extension from the organization. Once deleted, the extension will no longer route calls to the external phone number, and users won\u2019t be able to reach it via the assigned extension.\n\nDeleting a Virtual Extension requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write` and `identity:contacts_rw`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/virtualExtensions/{extensionId}") + req.PathParam("extensionId", extensionId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&extensionId, "extension-id", "", "ID of the virtual extension.") + cmd.MarkFlagRequired("extension-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Unique identifier for the organization.") + virtualExtensionsCmd.AddCommand(cmd) + } + + { // get-settings + var orgId string + cmd := &cobra.Command{ + Use: "get-settings", + Short: "Get Virtual extension settings", + Long: "Retrieve Virtual Extension settings for the given Org.\n\nThis API retrieves the virtual extension mode settings configured for a given organization. Virtual extensions can operate in two modes: STANDARD and ENHANCED. The selected mode determines how the system handles routing and signaling for virtual extensions.\nBy default, the virtual extensions that you create use the Standard mode. Another mode, enhanced signaling mode, is available to all customers, however, virtual extensions won't function properly in this mode unless your PSTN provider supports special network signaling extensions and there aren't many PSTN providers that do.\n\nRetrieving a Virtual Extension settings requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/virtualExtensions/settings") + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Unique identifier for the organization.") + virtualExtensionsCmd.AddCommand(cmd) + } + + { // update-settings + var orgId string + var mode string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-settings", + Short: "Modify Virtual Extension Settings", + Long: "Update Virtual Extension details for the given extension ID.\n\nThis endpoint updates the virtual extension settings for an organization. It is primarily used to configure the operating mode for virtual extensions.\nModes determine how virtual extensions are assigned or managed within the system.\n\nUpdating a Virtual Extension requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/virtualExtensions/settings") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("mode", mode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Unique identifier for the organization.") + cmd.Flags().StringVar(&mode, "mode", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + virtualExtensionsCmd.AddCommand(cmd) + } + + { // validate-external-phone-number + var orgId string + var phoneNumbers []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "validate-external-phone-number", + Short: "Validate an external phone number", + Long: "Validate external phone number for the given organization.\n\nThis API is designed to validate external phone numbers before they are assigned as virtual extensions for a customer.\nIt ensures that the provided numbers are properly formatted, eligible for use, and not already in use within the system.\nThis validation is typically part of a pre-check process during provisioning or number assignment workflows, helping administrators or systems prevent conflicts or errors related to number reuse or format issues.\n\nCreating a virtual extension requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/virtualExtensions/actions/validateNumbers/invoke") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("phoneNumbers", phoneNumbers) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Unique identifier for the organization.") + cmd.Flags().StringSliceVar(&phoneNumbers, "phone-numbers", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + virtualExtensionsCmd.AddCommand(cmd) + } + + { // create-range + var orgId string + var name string + var prefix string + var patterns []string + var locationId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-range", + Short: "Create a Virtual Extension Range", + Long: "Create a new Virtual Extension Range for the given organization or location.\n\nVirtual extension ranges integrate remote workers on a separate telephony system into Webex Calling and enable extension dialing. Using these ranges, you can define patterns that can be used to route calls at a location level or an organization level. You are allowed to define virtual extensions ranges in addition to individual virtual extensions.\nThis works in both Standard and Enhanced modes\n\nVirtual extension range can be set up at the organization or location level.\n\nCreating a virtual extension range requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/virtualExtensionRanges") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("name", name) + req.BodyString("prefix", prefix) + req.BodyStringSlice("patterns", patterns) + req.BodyString("locationId", locationId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Unique identifier for the organization.") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&prefix, "prefix", "", "") + cmd.Flags().StringSliceVar(&patterns, "patterns", nil, "") + cmd.Flags().StringVar(&locationId, "location-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + virtualExtensionsCmd.AddCommand(cmd) + } + + { // list-range + var orgId string + var max string + var start string + var order string + var name string + var prefix string + var locationId string + var orgLevelOnly string + cmd := &cobra.Command{ + Use: "list-range", + Short: "Get a list of a Virtual Extension Range", + Long: "Retrieves the list of Virtual Extension Ranges.\n\nVirtual extension ranges integrate remote workers on a separate telephony system into Webex Calling and enable extension dialing. Using these ranges, you can define patterns that can be used to route calls at a location level or an organization level. You are allowed to define virtual extensions ranges in addition to individual virtual extensions.\nThis works in both Standard and Enhanced modes\n\nRetrieving a virtual extension range requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/virtualExtensionRanges") + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("order", order) + req.QueryParam("name", name) + req.QueryParam("prefix", prefix) + req.QueryParam("locationId", locationId) + req.QueryParam("orgLevelOnly", orgLevelOnly) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Unique identifier for the organization.") + cmd.Flags().StringVar(&max, "max", "", "Maximum number of results to return.") + cmd.Flags().StringVar(&start, "start", "", "The starting index of the results to return.") + cmd.Flags().StringVar(&order, "order", "", "Sort the list of virtual extension ranges by name or prefix, either ASC or DSC. Default sort order is ASC.") + cmd.Flags().StringVar(&name, "name", "", "Filter the list of virtual extension ranges by name.") + cmd.Flags().StringVar(&prefix, "prefix", "", "Filter the list of virtual extension ranges by prefix.") + cmd.Flags().StringVar(&locationId, "location-id", "", "Filter the list of virtual extension ranges by location ID. Only one of the `locationId` and `OrgLevelOnly` query parameters is allowed at the same time.") + cmd.Flags().StringVar(&orgLevelOnly, "org-level-only", "", "Filter the list of virtual extension ranges by organization level. If `orgLevelOnly` is true, return only the organization level virtual extension ranges.") + virtualExtensionsCmd.AddCommand(cmd) + } + + { // get-range + var extensionRangeId string + var orgId string + cmd := &cobra.Command{ + Use: "get-range", + Short: "Get details of a Virtual Extension Range", + Long: "Retrieve virtual extension range details for the given extension range ID.\n\nVirtual extension ranges integrate remote workers on a separate telephony system into Webex Calling and enable extension dialing. Using these ranges, you can define patterns that can be used to route calls at a location level or an organization level. You are allowed to define virtual extensions ranges in addition to individual virtual extensions.\nThis works in both Standard and Enhanced modes\n\nRetrieving a virtual extension range requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/virtualExtensionRanges/{extensionRangeId}") + req.PathParam("extensionRangeId", extensionRangeId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&extensionRangeId, "extension-range-id", "", "ID of the virtual extension range.") + cmd.MarkFlagRequired("extension-range-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Unique identifier for the organization.") + virtualExtensionsCmd.AddCommand(cmd) + } + + { // delete-range + var extensionRangeId string + var orgId string + cmd := &cobra.Command{ + Use: "delete-range", + Short: "Delete a Virtual Extension Range", + Long: "Delete a virtual extension range for the given extension range ID.\n\nVirtual extension ranges integrate remote workers on a separate telephony system into Webex Calling and enable extension dialing. Using these ranges, you can define patterns that can be used to route calls at a location level or an organization level. You are allowed to define virtual extensions ranges in addition to individual virtual extensions.\nThis works in both Standard and Enhanced modes\n\nDeleting a virtual extension range requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/virtualExtensionRanges/{extensionRangeId}") + req.PathParam("extensionRangeId", extensionRangeId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&extensionRangeId, "extension-range-id", "", "ID of the virtual extension range.") + cmd.MarkFlagRequired("extension-range-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Unique identifier for the organization.") + virtualExtensionsCmd.AddCommand(cmd) + } + + { // update-range + var extensionRangeId string + var orgId string + var name string + var prefix string + var patterns []string + var action string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-range", + Short: "Modify Virtual Extension Range", + Long: "Modify virtual extension range for the given extension range ID.\n\nVirtual extension ranges integrate remote workers on a separate telephony system into Webex Calling and enable extension dialing. Using these ranges, you can define patterns that can be used to route calls at a location level or an organization level. You are allowed to define virtual extensions ranges in addition to individual virtual extensions.\nThis works in both Standard and Enhanced modes\n\nModifying a virtual extension range requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/virtualExtensionRanges/{extensionRangeId}") + req.PathParam("extensionRangeId", extensionRangeId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("name", name) + req.BodyString("prefix", prefix) + req.BodyStringSlice("patterns", patterns) + req.BodyString("action", action) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&extensionRangeId, "extension-range-id", "", "ID of the virtual extension range.") + cmd.MarkFlagRequired("extension-range-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Unique identifier for the organization.") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&prefix, "prefix", "", "") + cmd.Flags().StringSliceVar(&patterns, "patterns", nil, "") + cmd.Flags().StringVar(&action, "action", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + virtualExtensionsCmd.AddCommand(cmd) + } + + { // validate-prefix-pattern-range + var orgId string + var locationId string + var name string + var prefix string + var patterns []string + var rangeId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "validate-prefix-pattern-range", + Short: "Validate the prefix and extension pattern for a Virtual Extension Range", + Long: "Validate the prefix and extension pattern for a Virtual Extension Range.\n\nVirtual extension ranges integrate remote workers on a separate telephony system into Webex Calling and enable extension dialing. Using these ranges, you can define patterns that can be used to route calls at a location level or an organization level. You are allowed to define virtual extensions ranges in addition to individual virtual extensions.\nThis works in both Standard and Enhanced modes\n\nValidating a prefix and extension pattern for a Virtual Extension Range requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/virtualExtensionRanges/actions/validate/invoke") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("locationId", locationId) + req.BodyString("name", name) + req.BodyString("prefix", prefix) + req.BodyStringSlice("patterns", patterns) + req.BodyString("rangeId", rangeId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Unique identifier for the organization.") + cmd.Flags().StringVar(&locationId, "location-id", "", "") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&prefix, "prefix", "", "") + cmd.Flags().StringSliceVar(&patterns, "patterns", nil, "") + cmd.Flags().StringVar(&rangeId, "range-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + virtualExtensionsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/calling/virtual_line_call.go b/cmd/calling/virtual_line_call.go new file mode 100644 index 0000000..019e3c7 --- /dev/null +++ b/cmd/calling/virtual_line_call.go @@ -0,0 +1,2112 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package calling + +import ( + "fmt" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strings.Join + +var virtualLineCallCmd = &cobra.Command{ + Use: "virtual-line-call", + Short: "VirtualLineCall commands", +} + +func init() { + cmd.CallingCmd.AddCommand(virtualLineCallCmd) + + { // list + var orgId string + var locationId string + var max string + var start string + var id string + var ownerName string + var phoneNumber string + var locationName string + var order string + var hasDeviceAssigned string + var hasExtensionAssigned string + var hasDnAssigned string + cmd := &cobra.Command{ + Use: "list", + Short: "Read the List of Virtual Lines", + Long: "List all Virtual Lines for the organization.\n\nVirtual line is a capability in Webex Calling that allows administrators to configure multiple lines to Webex Calling users.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/virtualLines") + req.QueryParam("orgId", orgId) + req.QueryParam("locationId", locationId) + req.QueryParam("locationId", locationId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("id", id) + req.QueryParam("id", id) + req.QueryParam("ownerName", ownerName) + req.QueryParam("ownerName", ownerName) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("locationName", locationName) + req.QueryParam("locationName", locationName) + req.QueryParam("order", order) + req.QueryParam("order", order) + req.QueryParam("hasDeviceAssigned", hasDeviceAssigned) + req.QueryParam("hasExtensionAssigned", hasExtensionAssigned) + req.QueryParam("hasDnAssigned", hasDnAssigned) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List virtual lines for this organization.") + cmd.Flags().StringVar(&locationId, "location-id", "", "Return the list of virtual lines matching these location ids. Example for multiple values - `?locationId=locId1&locationId=locId2`.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of objects returned to this maximum count.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching objects.") + cmd.Flags().StringVar(&id, "id", "", "Return the list of virtual lines matching these virtualLineIds. Example for multiple values - `?id=id1&id=id2`.") + cmd.Flags().StringVar(&ownerName, "owner-name", "", "Return the list of virtual lines matching these owner names. Example for multiple values - `?ownerName=name1&ownerName=name2`.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Return the list of virtual lines matching these phone numbers. Example for multiple values - `?phoneNumber=number1&phoneNumber=number2`.") + cmd.Flags().StringVar(&locationName, "location-name", "", "Return the list of virtual lines matching the location names. Example for multiple values - `?locationName=loc1&locationName=loc2`.") + cmd.Flags().StringVar(&order, "order", "", "Return the list of virtual lines based on the order. Default sort will be in an Ascending order. Maximum 3 orders allowed at a time. Example for multiple values - `?order=order1&order=order2`.") + cmd.Flags().StringVar(&hasDeviceAssigned, "has-device-assigned", "", "If `true`, includes only virtual lines with devices assigned. When not explicitly specified, the default includes both virtual lines with devices assigned and not assigned.") + cmd.Flags().StringVar(&hasExtensionAssigned, "has-extension-assigned", "", "If `true`, includes only virtual lines with an extension assigned. When not explicitly specified, the default includes both virtual lines with extension assigned and not assigned.") + cmd.Flags().StringVar(&hasDnAssigned, "has-dn-assigned", "", "If `true`, includes only virtual lines with an assigned directory number, also known as a Dn. When not explicitly specified, the default includes both virtual lines with a Dn assigned and not assigned.") + virtualLineCallCmd.AddCommand(cmd) + } + + { // create + var orgId string + var firstName string + var lastName string + var locationId string + var displayName string + var phoneNumber string + var extension string + var callerIdLastName string + var callerIdFirstName string + var callerIdNumber string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a Virtual Line", + Long: "Create new Virtual Line for the given location.\n\nVirtual line is a capability in Webex Calling that allows administrators to configure multiple lines to Webex Calling users.\n\nCreating a virtual line requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/virtualLines") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("firstName", firstName) + req.BodyString("lastName", lastName) + req.BodyString("locationId", locationId) + req.BodyString("displayName", displayName) + req.BodyString("phoneNumber", phoneNumber) + req.BodyString("extension", extension) + req.BodyString("callerIdLastName", callerIdLastName) + req.BodyString("callerIdFirstName", callerIdFirstName) + req.BodyString("callerIdNumber", callerIdNumber) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Create the virtual line for this organization.") + cmd.Flags().StringVar(&firstName, "first-name", "", "") + cmd.Flags().StringVar(&lastName, "last-name", "", "") + cmd.Flags().StringVar(&locationId, "location-id", "", "") + cmd.Flags().StringVar(&displayName, "display-name", "", "") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "") + cmd.Flags().StringVar(&extension, "extension", "", "") + cmd.Flags().StringVar(&callerIdLastName, "caller-id-last-name", "", "") + cmd.Flags().StringVar(&callerIdFirstName, "caller-id-first-name", "", "") + cmd.Flags().StringVar(&callerIdNumber, "caller-id-number", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + virtualLineCallCmd.AddCommand(cmd) + } + + { // get-recording + var virtualLineId string + var orgId string + cmd := &cobra.Command{ + Use: "get-recording", + Short: "Read Call Recording Settings for a Virtual Line", + Long: "Retrieve Virtual Line's Call Recording settings.\n\nThe Call Recording feature provides a hosted mechanism to record the calls placed and received on the Carrier platform for replay and archival. This feature is helpful for quality assurance, security, training, and more.\n\nThis API requires a full or user administrator auth token with the `spark-admin:telephony_config_read` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/virtualLines/{virtualLineId}/callRecording") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Unique identifier for the virtual line.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + virtualLineCallCmd.AddCommand(cmd) + } + + { // update-recording + var virtualLineId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-recording", + Short: "Configure Call Recording Settings for a Virtual Line", + Long: "Configure virtual line's Call Recording settings.\n\nThe Call Recording feature provides a hosted mechanism to record the calls placed and received on the Carrier platform for replay and archival. This feature is helpful for quality assurance, security, training, and more.\n\nThis API requires a full or user administrator auth token with the `spark-admin:telephony_config_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/virtualLines/{virtualLineId}/callRecording") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Unique identifier for the virtual line.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the virtual profile resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + virtualLineCallCmd.AddCommand(cmd) + } + + { // delete + var virtualLineId string + var orgId string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete a Virtual Line", + Long: "Delete the designated Virtual Line.\n\nVirtual line is a capability in Webex Calling that allows administrators to configure multiple lines to Webex Calling users.\n\nDeleting a virtual line requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write` and `identity:contacts_rw`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/virtualLines/{virtualLineId}") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Delete the virtual line with the matching ID.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Delete the virtual line from this organization.") + virtualLineCallCmd.AddCommand(cmd) + } + + { // get + var virtualLineId string + var orgId string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Details for a Virtual Line", + Long: "Retrieve Virtual Line details.\n\nVirtual line is a capability in Webex Calling that allows administrators to configure multiple lines to Webex Calling users.\n\nRetrieving virtual line details requires a full or user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/virtualLines/{virtualLineId}") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Retrieve settings for a virtual line with the matching ID.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve virtual line settings from this organization.") + virtualLineCallCmd.AddCommand(cmd) + } + + { // update + var virtualLineId string + var orgId string + var firstName string + var lastName string + var displayName string + var phoneNumber string + var extension string + var announcementLanguage string + var callerIdLastName string + var callerIdFirstName string + var callerIdNumber string + var timeZone string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Short: "Update a Virtual Line", + Long: "Update the designated Virtual Line.\n\nVirtual line is a capability in Webex Calling that allows administrators to configure multiple lines to Webex Calling users.\n\nUpdating a virtual line requires a full or user or location administrator auth token with a scope of `spark-admin:telephony_config_write` and `identity:contacts_rw`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/virtualLines/{virtualLineId}") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("firstName", firstName) + req.BodyString("lastName", lastName) + req.BodyString("displayName", displayName) + req.BodyString("phoneNumber", phoneNumber) + req.BodyString("extension", extension) + req.BodyString("announcementLanguage", announcementLanguage) + req.BodyString("callerIdLastName", callerIdLastName) + req.BodyString("callerIdFirstName", callerIdFirstName) + req.BodyString("callerIdNumber", callerIdNumber) + req.BodyString("timeZone", timeZone) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Update settings for a virtual line with the matching ID.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Update virtual line settings from this organization.") + cmd.Flags().StringVar(&firstName, "first-name", "", "") + cmd.Flags().StringVar(&lastName, "last-name", "", "") + cmd.Flags().StringVar(&displayName, "display-name", "", "") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "") + cmd.Flags().StringVar(&extension, "extension", "", "") + cmd.Flags().StringVar(&announcementLanguage, "announcement-language", "", "") + cmd.Flags().StringVar(&callerIdLastName, "caller-id-last-name", "", "") + cmd.Flags().StringVar(&callerIdFirstName, "caller-id-first-name", "", "") + cmd.Flags().StringVar(&callerIdNumber, "caller-id-number", "", "") + cmd.Flags().StringVar(&timeZone, "time-zone", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + virtualLineCallCmd.AddCommand(cmd) + } + + { // get-phone-number-assigned + var virtualLineId string + var orgId string + cmd := &cobra.Command{ + Use: "get-phone-number-assigned", + Short: "Get Phone Number assigned for a Virtual Line", + Long: "Get details on the assigned phone number and extension for the virtual line.\n\nRetrieving virtual line phone number details requires a full or user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/virtualLines/{virtualLineId}/number") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Retrieve settings for a virtual line with the matching ID.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve virtual line settings from this organization.") + virtualLineCallCmd.AddCommand(cmd) + } + + { // update-directory-search + var virtualLineId string + var orgId string + var enabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-directory-search", + Short: "Update Directory search for a Virtual Line", + Long: "Update the directory search for a designated Virtual Line.\n\nVirtual line is a capability in Webex Calling that allows administrators to configure multiple lines to Webex Calling users.\n\nUpdating Directory search for a virtual line requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write` and `identity:contacts_rw`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/virtualLines/{virtualLineId}/directorySearch") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Update settings for a virtual line with the matching ID.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Update virtual line settings from this organization.") + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + virtualLineCallCmd.AddCommand(cmd) + } + + { // list-devices-assigned + var virtualLineId string + var orgId string + cmd := &cobra.Command{ + Use: "list-devices-assigned", + Short: "Get List of Devices assigned for a Virtual Line", + Long: "Retrieve Device details assigned for a virtual line.\n\nVirtual line is a capability in Webex Calling that allows administrators to configure multiple lines to Webex Calling users.\n\nRetrieving the assigned device detials for a virtual line requires a full or user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/virtualLines/{virtualLineId}/devices") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Retrieve settings for a virtual line with the matching ID.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve virtual line settings from this organization.") + virtualLineCallCmd.AddCommand(cmd) + } + + { // list-networks-handsets + var virtualLineId string + var orgId string + cmd := &cobra.Command{ + Use: "list-networks-handsets", + Short: "Get List of DECT Networks Handsets for a Virtual Line", + Long: "
Not supported for Webex for Government (FedRAMP)
\n\nRetrieve DECT Network details assigned for a virtual line.\n\nVirtual line is a capability in Webex Calling that allows administrators to configure multiple lines to Webex Calling users.\n\nRetrieving the assigned device detials for a virtual line requires a full or user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/virtualLines/{virtualLineId}/dectNetworks") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Retrieve settings for a virtual line with the matching ID.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve virtual line settings from this organization.") + virtualLineCallCmd.AddCommand(cmd) + } + + { // get-caller-id + var virtualLineId string + var orgId string + cmd := &cobra.Command{ + Use: "get-caller-id", + Short: "Read Caller ID Settings for a Virtual Line", + Long: "Retrieve a virtual line's Caller ID settings.\n\nCaller ID settings control how a virtual line's information is displayed when making outgoing calls.\n\nRetrieving the caller ID settings for a virtual line requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/virtualLines/{virtualLineId}/callerId") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Retrieve settings for a virtual line with the matching ID.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter, as the default is the same organization as the token used to access the API.") + virtualLineCallCmd.AddCommand(cmd) + } + + { // update-caller-id + var virtualLineId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-caller-id", + Short: "Configure Caller ID Settings for a Virtual Line", + Long: "Configure a virtual line's Caller ID settings.\n\nCaller ID settings control how a virtual line's information is displayed when making outgoing calls.\n\nUpdating the caller ID settings for a virtual line requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/virtualLines/{virtualLineId}/callerId") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Update settings for a virtual line with the matching ID.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter, as the default is the same organization as the token used to access the API.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + virtualLineCallCmd.AddCommand(cmd) + } + + { // get-waiting-settings + var virtualLineId string + var orgId string + cmd := &cobra.Command{ + Use: "get-waiting-settings", + Short: "Read Call Waiting Settings for a Virtual Line", + Long: "Retrieve a virtual line's Call Waiting settings.\n\nWith this feature, a virtual line can place an active call on hold and answer an incoming call. When enabled, while you are on an active call, a tone alerts you of an incoming call and you can choose to answer or ignore the call.\n\nRetrieving the call waiting settings for a virtual line requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/virtualLines/{virtualLineId}/callWaiting") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Retrieve settings for a virtual line with the matching ID.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + virtualLineCallCmd.AddCommand(cmd) + } + + { // update-waiting-settings + var virtualLineId string + var orgId string + var enabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-waiting-settings", + Short: "Configure Call Waiting Settings for a Virtual Line", + Long: "Configure a virtual line's Call Waiting settings.\n\nWith this feature, a virtual line can place an active call on hold and answer an incoming call. When enabled, while you are on an active call, a tone alerts you of an incoming call and you can choose to answer or ignore the call.\n\nUpdating the call waiting settings for a virtual line requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/virtualLines/{virtualLineId}/callWaiting") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Update settings for a virtual line with the matching ID.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + virtualLineCallCmd.AddCommand(cmd) + } + + { // get-forward + var virtualLineId string + var orgId string + cmd := &cobra.Command{ + Use: "get-forward", + Short: "Read Call Forwarding Settings for a Virtual Line", + Long: "Retrieve a virtual line's Call Forwarding settings.\n\nThree types of call forwarding are supported:\n\n+ Always - forwards all incoming calls to the destination you choose.\n\n+ When busy - forwards all incoming calls to the destination you chose while the phone is in use or the virtual line is busy.\n\n+ When no answer - forwarding only occurs when you are away or not answering your phone.\n\nIn addition, the Business Continuity feature will send calls to a destination of your choice if your phone is not connected to the network for any reason, such as a power outage, failed Internet connection, or wiring problem.\n\nRetrieving the call forwarding settings for a virtual line requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/virtualLines/{virtualLineId}/callForwarding") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Retrieve settings for a virtual line with the matching ID.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + virtualLineCallCmd.AddCommand(cmd) + } + + { // update-forward + var virtualLineId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-forward", + Short: "Configure Call Forwarding Settings for a Virtual Line", + Long: "Configure a virtual line's Call Forwarding settings.\n\nThree types of call forwarding are supported:\n\n+ Always - forwards all incoming calls to the destination you choose.\n\n+ When busy - forwards all incoming calls to the destination you chose while the phone is in use or the virtual line is busy.\n\n+ When no answer - forwarding only occurs when you are away or not answering your phone.\n\nIn addition, the Business Continuity feature will send calls to a destination of your choice if your phone is not connected to the network for any reason, such as a power outage, failed Internet connection, or wiring problem.\n\nUpdating the call forwarding settings for a virtual line requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/virtualLines/{virtualLineId}/callForwarding") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Update settings for a virtual line with the matching ID.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + virtualLineCallCmd.AddCommand(cmd) + } + + { // get-incoming-permission-settings + var virtualLineId string + var orgId string + cmd := &cobra.Command{ + Use: "get-incoming-permission-settings", + Short: "Read Incoming Permission Settings for a Virtual Line", + Long: "Retrieve a virtual line's Incoming Permission settings.\n\nYou can change the incoming calling permissions for a virtual line if you want them to be different from your organization's default.\n\nRetrieving the incoming permission settings for a virtual line requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/virtualLines/{virtualLineId}/incomingPermission") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Retrieve settings for a virtual line with the matching ID.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + virtualLineCallCmd.AddCommand(cmd) + } + + { // update-incoming-permission-settings + var virtualLineId string + var orgId string + var useCustomEnabled bool + var externalTransfer string + var internalCallsEnabled bool + var collectCallsEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-incoming-permission-settings", + Short: "Configure Incoming Permission Settings for a Virtual Line", + Long: "Configure a virtual line's Incoming Permission settings.\n\nYou can change the incoming calling permissions for a virtual line if you want them to be different from your organization's default.\n\nUpdating the incoming permission settings for a virtual line requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/virtualLines/{virtualLineId}/incomingPermission") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("useCustomEnabled", useCustomEnabled, cmd.Flags().Changed("use-custom-enabled")) + req.BodyString("externalTransfer", externalTransfer) + req.BodyBool("internalCallsEnabled", internalCallsEnabled, cmd.Flags().Changed("internal-calls-enabled")) + req.BodyBool("collectCallsEnabled", collectCallsEnabled, cmd.Flags().Changed("collect-calls-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Update settings for a virtual line with the matching ID.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + cmd.Flags().BoolVar(&useCustomEnabled, "use-custom-enabled", false, "") + cmd.Flags().StringVar(&externalTransfer, "external-transfer", "", "") + cmd.Flags().BoolVar(&internalCallsEnabled, "internal-calls-enabled", false, "") + cmd.Flags().BoolVar(&collectCallsEnabled, "collect-calls-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + virtualLineCallCmd.AddCommand(cmd) + } + + { // get-outgoing-permissions-settings + var virtualLineId string + var orgId string + cmd := &cobra.Command{ + Use: "get-outgoing-permissions-settings", + Short: "Retrieve a virtual line's Outgoing Calling Permissions Settings", + Long: "Retrieve a virtual line's Outgoing Calling Permissions settings.\n\nOutgoing calling permissions regulate behavior for calls placed to various destinations and default to the local level settings. You can change the outgoing calling permissions for a virtual line if you want them to be different from your organization's default.\n\nRetrieving the outgoing permission settings for a virtual line requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/virtualLines/{virtualLineId}/outgoingPermission") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Retrieve settings for a virtual line with the matching ID.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + virtualLineCallCmd.AddCommand(cmd) + } + + { // update-outgoing-permissions-settings + var virtualLineId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-outgoing-permissions-settings", + Short: "Modify a virtual line's Outgoing Calling Permissions Settings", + Long: "Modify a virtual line's Outgoing Calling Permissions settings.\n\nOutgoing calling permissions regulate behavior for calls placed to various destinations and default to the local level settings. You can change the outgoing calling permissions for a virtual line if you want them to be different from your organization's default.\n\nUpdating the outgoing permission settings for a virtual line requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/virtualLines/{virtualLineId}/outgoingPermission") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Update settings for a virtual line with the matching ID.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + virtualLineCallCmd.AddCommand(cmd) + } + + { // get-access-codes + var virtualLineId string + var orgId string + cmd := &cobra.Command{ + Use: "get-access-codes", + Short: "Retrieve Access Codes for a Virtual Line", + Long: `Retrieve the virtual line's access codes. + +Access codes are used to bypass permissions. + +This API requires a full, user or read-only administrator auth token with a scope of spark-admin:telephony_config_read`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/virtualLines/{virtualLineId}/outgoingPermission/accessCodes") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Unique identifier for the virtual line.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + virtualLineCallCmd.AddCommand(cmd) + } + + { // update-access-codes + var virtualLineId string + var orgId string + var deleteCodes []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-access-codes", + Short: "Modify Access Codes for a Virtual Line", + Long: "Modify a virtual line's access codes.\n\nAccess codes are used to bypass permissions.\n\nThis API requires a full or user administrator auth token with the `spark-admin:telephony_config_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/virtualLines/{virtualLineId}/outgoingPermission/accessCodes") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("deleteCodes", deleteCodes) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Unique identifier for the virtual line.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().StringSliceVar(&deleteCodes, "delete-codes", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + virtualLineCallCmd.AddCommand(cmd) + } + + { // create-access-codes + var virtualLineId string + var orgId string + var code string + var description string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-access-codes", + Short: "Create Access Codes for a Virtual Line", + Long: "Create a new access codes for the virtual line.\n\nAccess codes are used to bypass permissions.\n\nThis API requires a full or user administrator auth token with the `spark-admin:telephony_config_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/virtualLines/{virtualLineId}/outgoingPermission/accessCodes") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("code", code) + req.BodyString("description", description) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Unique identifier for the virtual line.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().StringVar(&code, "code", "", "") + cmd.Flags().StringVar(&description, "description", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + virtualLineCallCmd.AddCommand(cmd) + } + + { // delete-access-codes + var virtualLineId string + var orgId string + cmd := &cobra.Command{ + Use: "delete-access-codes", + Short: "Delete Access Codes for a Virtual Line", + Long: "Deletes all access codes for the virtual line.\n\nAccess codes are used to bypass permissions.\n\nThis API requires a full or user administrator auth token with the `spark-admin:telephony_config_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/virtualLines/{virtualLineId}/outgoingPermission/accessCodes") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Unique identifier for the virtual line.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + virtualLineCallCmd.AddCommand(cmd) + } + + { // get-transfer-numbers + var virtualLineId string + var orgId string + cmd := &cobra.Command{ + Use: "get-transfer-numbers", + Short: "Retrieve Transfer Numbers for a Virtual Line", + Long: `Retrieve the virtual line's transfer numbers. + +When calling a specific call type, this virtual line will be automatically transferred to another number. The virtual line assigned to the Auto Transfer Number can then approve the call and send it through or reject the call type. You can add up to 3 numbers. + +This API requires a full, user or read-only administrator auth token with a scope of spark-admin:telephony_config_read`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/virtualLines/{virtualLineId}/outgoingPermission/autoTransferNumbers") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Unique identifier for the virtual line.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + virtualLineCallCmd.AddCommand(cmd) + } + + { // update-transfer-numbers + var virtualLineId string + var orgId string + var useCustomTransferNumbers bool + var autoTransferNumber1 string + var autoTransferNumber2 string + var autoTransferNumber3 string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-transfer-numbers", + Short: "Modify Transfer Numbers for a Virtual Line", + Long: "Modify a virtual line's transfer numbers.\n\nWhen calling a specific call type, this virtual line will be automatically transferred to another number. The virtual line assigned the Auto Transfer Number can then approve the call and send it through or reject the call type. You can add up to 3 numbers.\n\nThis API requires a full or user administrator auth token with the `spark-admin:telephony_config_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/virtualLines/{virtualLineId}/outgoingPermission/autoTransferNumbers") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("useCustomTransferNumbers", useCustomTransferNumbers, cmd.Flags().Changed("use-custom-transfer-numbers")) + req.BodyString("autoTransferNumber1", autoTransferNumber1) + req.BodyString("autoTransferNumber2", autoTransferNumber2) + req.BodyString("autoTransferNumber3", autoTransferNumber3) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Unique identifier for the virtual line.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().BoolVar(&useCustomTransferNumbers, "use-custom-transfer-numbers", false, "") + cmd.Flags().StringVar(&autoTransferNumber1, "auto-transfer-number1", "", "") + cmd.Flags().StringVar(&autoTransferNumber2, "auto-transfer-number2", "", "") + cmd.Flags().StringVar(&autoTransferNumber3, "auto-transfer-number3", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + virtualLineCallCmd.AddCommand(cmd) + } + + { // get-digit-patterns-profile + var virtualLineId string + var orgId string + cmd := &cobra.Command{ + Use: "get-digit-patterns-profile", + Short: "Retrieve Digit Patterns for a Virtual Profile", + Long: "Get list of digit patterns for the virtual profile.\n\nDigit patterns are used to bypass permissions.\n\nRetrieving this list requires a full, user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/virtualLines/{virtualLineId}/outgoingPermission/digitPatterns") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Unique identifier for the virtual line.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + virtualLineCallCmd.AddCommand(cmd) + } + + { // create-digit-pattern-profile + var virtualLineId string + var orgId string + var name string + var pattern string + var action string + var transferEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-digit-pattern-profile", + Short: "Create Digit Pattern for a Virtual Profile", + Long: "Create a new digit pattern for a virtual profile.\n\nDigit patterns are used to bypass permissions.\n\nCreating the digit pattern requires a full or user or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/virtualLines/{virtualLineId}/outgoingPermission/digitPatterns") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("name", name) + req.BodyString("pattern", pattern) + req.BodyString("action", action) + req.BodyBool("transferEnabled", transferEnabled, cmd.Flags().Changed("transfer-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Unique identifier for the virtual line.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&pattern, "pattern", "", "") + cmd.Flags().StringVar(&action, "action", "", "") + cmd.Flags().BoolVar(&transferEnabled, "transfer-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + virtualLineCallCmd.AddCommand(cmd) + } + + { // update-digit-pattern-control-profile + var virtualLineId string + var orgId string + var useCustomDigitPatterns bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-digit-pattern-control-profile", + Short: "Modify the Digit Pattern Category Control Settings for a Virtual Profile", + Long: "Modifies whether this virtual profile uses the specified digit patterns when placing outbound calls or not.\n\nUpdating the digit pattern category control settings requires a full or user or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/virtualLines/{virtualLineId}/outgoingPermission/digitPatterns") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("useCustomDigitPatterns", useCustomDigitPatterns, cmd.Flags().Changed("use-custom-digit-patterns")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Unique identifier for the virtual line.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + cmd.Flags().BoolVar(&useCustomDigitPatterns, "use-custom-digit-patterns", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + virtualLineCallCmd.AddCommand(cmd) + } + + { // delete-all-digit-patterns-profile + var virtualLineId string + var orgId string + cmd := &cobra.Command{ + Use: "delete-all-digit-patterns-profile", + Short: "Delete all Digit Patterns for a Virtual Profile", + Long: "Delete all digit patterns for a virtual profile.\n\nDigit patterns are used to bypass permissions.\n\nDeleting the digit patterns requires a full or user or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/virtualLines/{virtualLineId}/outgoingPermission/digitPatterns") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Unique identifier for the virtual line.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + virtualLineCallCmd.AddCommand(cmd) + } + + { // get-specified-digit-pattern-profile + var virtualLineId string + var digitPatternId string + var orgId string + cmd := &cobra.Command{ + Use: "get-specified-digit-pattern-profile", + Short: "Retrieve Specified Digit Pattern Details for a Virtual Profile", + Long: "Get the specified digit pattern for the virtual profile\u200b.\n\nDigit patterns are used to bypass permissions.\n\nRetrieving the digit pattern details requires a full, user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/virtualLines/{virtualLineId}/outgoingPermission/digitPatterns/{digitPatternId}") + req.PathParam("virtualLineId", virtualLineId) + req.PathParam("digitPatternId", digitPatternId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Unique identifier for the virtual line.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&digitPatternId, "digit-pattern-id", "", "Unique identifier for the digit pattern.") + cmd.MarkFlagRequired("digit-pattern-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + virtualLineCallCmd.AddCommand(cmd) + } + + { // update-digit-pattern-profile + var virtualLineId string + var digitPatternId string + var orgId string + var name string + var pattern string + var action string + var transferEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-digit-pattern-profile", + Short: "Modify a Digit Pattern for a Virtual Profile", + Long: "Modify a digit patterns for a virtual profile.\n\nDigit patterns are used to bypass permissions.\n\nUpdating the digit pattern requires a full or user or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/virtualLines/{virtualLineId}/outgoingPermission/digitPatterns/{digitPatternId}") + req.PathParam("virtualLineId", virtualLineId) + req.PathParam("digitPatternId", digitPatternId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("name", name) + req.BodyString("pattern", pattern) + req.BodyString("action", action) + req.BodyBool("transferEnabled", transferEnabled, cmd.Flags().Changed("transfer-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Unique identifier for the virtual line.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&digitPatternId, "digit-pattern-id", "", "Unique identifier for the digit pattern.") + cmd.MarkFlagRequired("digit-pattern-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&pattern, "pattern", "", "") + cmd.Flags().StringVar(&action, "action", "", "") + cmd.Flags().BoolVar(&transferEnabled, "transfer-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + virtualLineCallCmd.AddCommand(cmd) + } + + { // delete-digit-pattern-profile + var virtualLineId string + var digitPatternId string + var orgId string + cmd := &cobra.Command{ + Use: "delete-digit-pattern-profile", + Short: "Delete a Digit Pattern for a Virtual Profile", + Long: "Delete a digit pattern for a virtual profile.\n\nDigit patterns are used to bypass permissions.\n\nDeleting the digit pattern requires a full or user or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/virtualLines/{virtualLineId}/outgoingPermission/digitPatterns/{digitPatternId}") + req.PathParam("virtualLineId", virtualLineId) + req.PathParam("digitPatternId", digitPatternId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Unique identifier for the virtual line.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&digitPatternId, "digit-pattern-id", "", "Unique identifier for the digit pattern.") + cmd.MarkFlagRequired("digit-pattern-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + virtualLineCallCmd.AddCommand(cmd) + } + + { // get-intercept-settings + var virtualLineId string + var orgId string + cmd := &cobra.Command{ + Use: "get-intercept-settings", + Short: "Read Call Intercept Settings for a Virtual Line", + Long: "Retrieves Virtual Line's Call Intercept settings.\n\nThe intercept feature gracefully takes a virtual line's phone out of service, while providing callers with informative announcements and alternative routing options. Depending on the service configuration, none, some, or all incoming calls to the specified virtual line are intercepted. Also depending on the service configuration, outgoing calls are intercepted or rerouted to another location.\n\nRetrieving the intercept settings for a virtual line requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/virtualLines/{virtualLineId}/intercept") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Retrieve settings for a virtual line with the matching ID.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + virtualLineCallCmd.AddCommand(cmd) + } + + { // update-intercept-settings + var virtualLineId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-intercept-settings", + Short: "Configure Call Intercept Settings for a Virtual Line", + Long: "Configures a virtual line's Call Intercept settings.\n\nThe intercept feature gracefully takes a virtual line's phone out of service, while providing callers with informative announcements and alternative routing options. Depending on the service configuration, none, some, or all incoming calls to the specified virtual line are intercepted. Also depending on the service configuration, outgoing calls are intercepted or rerouted to another location.\n\nUpdating the intercept settings for a virtual line requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/virtualLines/{virtualLineId}/intercept") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Update settings for a virtual line with the matching ID.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + virtualLineCallCmd.AddCommand(cmd) + } + + { // get-agent-list-available-caller-ids + var virtualLineId string + var orgId string + cmd := &cobra.Command{ + Use: "get-agent-list-available-caller-ids", + Short: "Retrieve Agent's List of Available Caller IDs", + Long: "Get the list of call queues and hunt groups available for caller ID use by this virtual line as an agent.\n\nThis API requires a full, user, or read-only administrator auth token with a scope of `spark-admin:people_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/virtualLines/{virtualLineId}/agent/availableCallerIds") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Unique identifier for the Virtual Line.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the Virtual Line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + virtualLineCallCmd.AddCommand(cmd) + } + + { // get-agent-caller-id + var virtualLineId string + cmd := &cobra.Command{ + Use: "get-agent-caller-id", + Short: "Retrieve Agent's Caller ID Information", + Long: "Retrieve the Agent's Caller ID Information.\n\nEach agent will be able to set their outgoing Caller ID as either the Call Queue's Caller ID, Hunt Group's Caller ID or their own configured Caller ID.\n\nThis API requires a full admin or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/virtualLines/{virtualLineId}/agent/callerId") + req.PathParam("virtualLineId", virtualLineId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Unique identifier for the Virtual Line.") + cmd.MarkFlagRequired("virtual-line-id") + virtualLineCallCmd.AddCommand(cmd) + } + + { // update-agent-caller-id + var virtualLineId string + var selectedCallerId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-agent-caller-id", + Short: "Modify Agent's Caller ID Information", + Long: "Modify Agent's Caller ID Information.\n\nEach Agent is able to set their outgoing Caller ID as either the designated Call Queue's Caller ID or the Hunt Group's Caller ID or their own configured Caller ID.\nThis API requires a full or user administrator auth token with the `spark-admin:telephony_config_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/virtualLines/{virtualLineId}/agent/callerId") + req.PathParam("virtualLineId", virtualLineId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("selectedCallerId", selectedCallerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Unique identifier for the Virtual Line.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&selectedCallerId, "selected-caller-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + virtualLineCallCmd.AddCommand(cmd) + } + + { // get-voicemail + var virtualLineId string + var orgId string + cmd := &cobra.Command{ + Use: "get-voicemail", + Short: "Read Voicemail Settings for a Virtual Line", + Long: "Retrieve a virtual line's voicemail settings.\n\nThe voicemail feature transfers callers to voicemail based on your settings. You can then retrieve voice messages via voicemail.\n\nOptionally, notifications can be sent to a mobile phone via text or email. These notifications will not include the voicemail files.\n\nRetrieving the voicemail settings for a virtual line requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/virtualLines/{virtualLineId}/voicemail") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Retrieve settings for a virtual line with the matching ID.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + virtualLineCallCmd.AddCommand(cmd) + } + + { // update-voicemail + var virtualLineId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-voicemail", + Short: "Configure Voicemail Settings for a Virtual Line", + Long: "Configure a virtual line's voicemail settings.\n\nThe voicemail feature transfers callers to voicemail based on your settings. You can then retrieve voice messages via voicemail.\n\nOptionally, notifications can be sent to a mobile phone via text or email. These notifications will not include the voicemail files.\n\nUpdating the voicemail settings for a virtual line requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/virtualLines/{virtualLineId}/voicemail") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Retrieve settings for a virtual line with the matching ID.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + virtualLineCallCmd.AddCommand(cmd) + } + + { // reset-voicemail-pin + var virtualLineId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "reset-voicemail-pin", + Short: "Reset Voicemail PIN for a Virtual Line", + Long: "Reset a voicemail PIN for a virtual line.\n\nThe voicemail feature transfers callers to voicemail based on your settings. You can then retrieve voice messages via Voicemail. A voicemail PIN is used to retrieve your voicemail messages.\n\nUpdating the voicemail pin for a virtual line requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: This API is expected to have an empty request body and Content-Type header should be set to `application/json`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/virtualLines/{virtualLineId}/voicemail/actions/resetPin/invoke") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Retrieve settings for a virtual line with the matching ID.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + virtualLineCallCmd.AddCommand(cmd) + } + + { // update-voicemail-passcode + var virtualLineId string + var orgId string + var passcode string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-voicemail-passcode", + Short: "Modify a virtual line's voicemail passcode", + Long: "Modify a virtual line's voicemail passcode.\n\nModifying a virtual line's voicemail passcode requires a full administrator, user administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/virtualLines/{virtualLineId}/voicemail/passcode") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("passcode", passcode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Modify voicemail passcode for this virtual line.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Modify voicemail passcode for a virtual line in this organization.") + cmd.Flags().StringVar(&passcode, "passcode", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + virtualLineCallCmd.AddCommand(cmd) + } + + { // get-music-hold-settings + var virtualLineId string + var orgId string + cmd := &cobra.Command{ + Use: "get-music-hold-settings", + Short: "Retrieve Music On Hold Settings for a Virtual Line", + Long: "Retrieve the virtual line's music on hold settings.\n\nMusic on hold is played when a caller is put on hold, or the call is parked.\n\nRetrieving the music on hold settings for a virtual line requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/virtualLines/{virtualLineId}/musicOnHold") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Retrieve settings for a virtual line with the matching ID.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + virtualLineCallCmd.AddCommand(cmd) + } + + { // update-music-hold-settings + var virtualLineId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-music-hold-settings", + Short: "Configure Music On Hold Settings for a Virtual Line", + Long: "Configure a virtual line's music on hold settings.\n\nMusic on hold is played when a caller is put on hold, or the call is parked.\n\nTo configure music on hold settings for a virtual line, music on hold setting must be enabled for this location.\n\nUpdating the music on hold settings for a virtual line requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/virtualLines/{virtualLineId}/musicOnHold") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Retrieve settings for a virtual line with the matching ID.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + virtualLineCallCmd.AddCommand(cmd) + } + + { // get-push-to-talk-settings + var virtualLineId string + var orgId string + cmd := &cobra.Command{ + Use: "get-push-to-talk-settings", + Short: "Read Push-to-Talk Settings for a Virtual Line", + Long: "Retrieve a virtual line's Push-to-Talk settings.\n\nPush-to-Talk allows the use of desk phones as either a one-way or two-way intercom that connects people in different parts of your organization.\n\nRetrieving the Push-to-Talk settings for a virtual line requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/virtualLines/{virtualLineId}/pushToTalk") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Retrieve settings for a virtual line with the matching ID.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + virtualLineCallCmd.AddCommand(cmd) + } + + { // update-push-to-talk-settings + var virtualLineId string + var orgId string + var allowAutoAnswer bool + var connectionType string + var accessType string + var members []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-push-to-talk-settings", + Short: "Configure Push-to-Talk Settings for a Virtual Line", + Long: "Configure a virtual line's Push-to-Talk settings.\n\nPush-to-Talk allows the use of desk phones as either a one-way or two-way intercom that connects people in different parts of your organization.\n\nUpdating the Push-to-Talk settings for a virtual line requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/virtualLines/{virtualLineId}/pushToTalk") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("allowAutoAnswer", allowAutoAnswer, cmd.Flags().Changed("allow-auto-answer")) + req.BodyString("connectionType", connectionType) + req.BodyString("accessType", accessType) + req.BodyStringSlice("members", members) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Retrieve settings for a virtual line with the matching ID.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + cmd.Flags().BoolVar(&allowAutoAnswer, "allow-auto-answer", false, "") + cmd.Flags().StringVar(&connectionType, "connection-type", "", "") + cmd.Flags().StringVar(&accessType, "access-type", "", "") + cmd.Flags().StringSliceVar(&members, "members", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + virtualLineCallCmd.AddCommand(cmd) + } + + { // get-bridge-settings + var virtualLineId string + var orgId string + cmd := &cobra.Command{ + Use: "get-bridge-settings", + Short: "Read Call Bridge Settings for a Virtual Line", + Long: "Retrieve a virtual line's call bridge settings.\n\nRetrieving the call bridge settings for a virtual line requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/virtualLines/{virtualLineId}/callBridge") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Retrieve settings for a virtual line with the matching ID.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + virtualLineCallCmd.AddCommand(cmd) + } + + { // update-bridge-settings + var virtualLineId string + var orgId string + var warningToneEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-bridge-settings", + Short: "Configure Call Bridge Settings for a Virtual Line", + Long: "Configure a virtual line's call bridge settings.\n\nUpdating the call bridge settings for a virtual line requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/virtualLines/{virtualLineId}/callBridge") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("warningToneEnabled", warningToneEnabled, cmd.Flags().Changed("warning-tone-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Retrieve settings for a virtual line with the matching ID.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + cmd.Flags().BoolVar(&warningToneEnabled, "warning-tone-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + virtualLineCallCmd.AddCommand(cmd) + } + + { // get-barge-settings + var virtualLineId string + var orgId string + cmd := &cobra.Command{ + Use: "get-barge-settings", + Short: "Read Barge In Settings for a Virtual Line", + Long: "Retrieve a virtual line's barge in settings.\n\nThe Barge In feature enables you to use a Feature Access Code (FAC) to answer a call that was directed to another subscriber, or barge-in on the call if it was already answered. Barge In can be used across locations.\n\nRetrieving the barge in settings for a virtual line requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/virtualLines/{virtualLineId}/bargeIn") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Retrieve settings for a virtual line with the matching ID.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + virtualLineCallCmd.AddCommand(cmd) + } + + { // update-barge-settings + var virtualLineId string + var orgId string + var enabled bool + var toneEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-barge-settings", + Short: "Configure Barge In Settings for a Virtual Line", + Long: "Configure a virtual line's barge in settings.\n\nThe Barge In feature enables you to use a Feature Access Code (FAC) to answer a call that was directed to another subscriber, or barge-in on the call if it was already answered. Barge In can be used across locations.\n\nUpdating the barge in settings for a virtual line requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/virtualLines/{virtualLineId}/bargeIn") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + req.BodyBool("toneEnabled", toneEnabled, cmd.Flags().Changed("tone-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Retrieve settings for a virtual line with the matching ID.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().BoolVar(&toneEnabled, "tone-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + virtualLineCallCmd.AddCommand(cmd) + } + + { // get-privacy-settings + var virtualLineId string + var orgId string + cmd := &cobra.Command{ + Use: "get-privacy-settings", + Short: "Get a Virtual Line's Privacy Settings", + Long: "Get a virtual line's privacy settings for the specified virtual line ID.\n\nThe privacy feature enables the virtual line's line to be monitored by others and determine if they can be reached by Auto Attendant services.\n\nRetrieving the privacy settings for a virtual line requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/virtualLines/{virtualLineId}/privacy") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Retrieve settings for a virtual line with the matching ID.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + virtualLineCallCmd.AddCommand(cmd) + } + + { // update-privacy-settings + var virtualLineId string + var orgId string + var aaExtensionDialingEnabled bool + var aaNamingDialingEnabled bool + var enablePhoneStatusDirectoryPrivacy bool + var enablePhoneStatusPickupBargeInPrivacy bool + var monitoringAgents []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-privacy-settings", + Short: "Configure a Virtual Line's Privacy Settings", + Long: "Configure a virtual line's privacy settings for the specified virtual line ID.\n\nThe privacy feature enables the virtual line's line to be monitored by others and determine if they can be reached by Auto Attendant services.\n\nUpdating the privacy settings for a virtual line requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/virtualLines/{virtualLineId}/privacy") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("aaExtensionDialingEnabled", aaExtensionDialingEnabled, cmd.Flags().Changed("aa-extension-dialing-enabled")) + req.BodyBool("aaNamingDialingEnabled", aaNamingDialingEnabled, cmd.Flags().Changed("aa-naming-dialing-enabled")) + req.BodyBool("enablePhoneStatusDirectoryPrivacy", enablePhoneStatusDirectoryPrivacy, cmd.Flags().Changed("enable-phone-status-directory-privacy")) + req.BodyBool("enablePhoneStatusPickupBargeInPrivacy", enablePhoneStatusPickupBargeInPrivacy, cmd.Flags().Changed("enable-phone-status-pickup-barge-in-privacy")) + req.BodyStringSlice("monitoringAgents", monitoringAgents) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Retrieve settings for a virtual line with the matching ID.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.") + cmd.Flags().BoolVar(&aaExtensionDialingEnabled, "aa-extension-dialing-enabled", false, "") + cmd.Flags().BoolVar(&aaNamingDialingEnabled, "aa-naming-dialing-enabled", false, "") + cmd.Flags().BoolVar(&enablePhoneStatusDirectoryPrivacy, "enable-phone-status-directory-privacy", false, "") + cmd.Flags().BoolVar(&enablePhoneStatusPickupBargeInPrivacy, "enable-phone-status-pickup-barge-in-privacy", false, "") + cmd.Flags().StringSliceVar(&monitoringAgents, "monitoring-agents", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + virtualLineCallCmd.AddCommand(cmd) + } + + { // get-fax-available-numbers + var virtualLineId string + var orgId string + var max string + var start string + var phoneNumber string + cmd := &cobra.Command{ + Use: "get-fax-available-numbers", + Short: "Get Virtual Line Fax Message Available Phone Numbers", + Long: "List standard numbers that are available to be assigned as a virtual line's FAX message number.\nThese numbers are associated with the location of the virtual line specified in the request URL, can be active or inactive, and are unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/virtualLines/{virtualLineId}/faxMessage/availableNumbers") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("phoneNumber", phoneNumber) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Unique identifier for the virtual line.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "List numbers for this organization.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of phone numbers returned to this maximum count. The default is 2000.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching phone numbers. The default is 0.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array.") + virtualLineCallCmd.AddCommand(cmd) + } + + { // get-forward-available-numbers + var virtualLineId string + var orgId string + var max string + var start string + var phoneNumber string + var ownerName string + var extension string + cmd := &cobra.Command{ + Use: "get-forward-available-numbers", + Short: "Get Virtual Line Call Forward Available Phone Numbers", + Long: "List the service and standard PSTN numbers that are available to be assigned as a virtual line's call forward number.\nThese numbers are associated with the location of the virtual line specified in the request URL, can be active or inactive, and are assigned to an owning entity.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/virtualLines/{virtualLineId}/callForwarding/availableNumbers") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("ownerName", ownerName) + req.QueryParam("extension", extension) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Unique identifier for the virtual line.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "List numbers for this organization.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of phone numbers returned to this maximum count. The default is 2000.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching phone numbers. The default is 0.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array.") + cmd.Flags().StringVar(&ownerName, "owner-name", "", "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255.") + cmd.Flags().StringVar(&extension, "extension", "", "Returns the list of PSTN phone numbers with the given `extension`.") + virtualLineCallCmd.AddCommand(cmd) + } + + { // get-available-numbers + var orgId string + var locationId string + var max string + var start string + var phoneNumber string + cmd := &cobra.Command{ + Use: "get-available-numbers", + Short: "Get Virtual Line Available Phone Numbers", + Long: "List standard numbers that are available to be assigned as a virtual line's phone number.\nBy default, this API returns unassigned numbers from all locations. To select the suitable number for assignment, ensure the virtual line's location ID is provided as the `locationId` request parameter.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/virtualLines/availableNumbers") + req.QueryParam("orgId", orgId) + req.QueryParam("locationId", locationId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("phoneNumber", phoneNumber) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List numbers for this organization.") + cmd.Flags().StringVar(&locationId, "location-id", "", "Return the list of phone numbers for this location within the given organization. The maximum length is 36.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of phone numbers returned to this maximum count. The default is 2000.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching phone numbers. The default is 0.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array.") + virtualLineCallCmd.AddCommand(cmd) + } + + { // get-ecbn-available-numbers + var virtualLineId string + var orgId string + var max string + var start string + var phoneNumber string + var ownerName string + cmd := &cobra.Command{ + Use: "get-ecbn-available-numbers", + Short: "Get Virtual Line ECBN Available Phone Numbers", + Long: "List standard numbers that can be assigned as a virtual line's call forward number.\nThese numbers are associated with the location of the virtual line specified in the request URL, can be active or inactive, and are assigned to an owning entity.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/virtualLines/{virtualLineId}/emergencyCallbackNumber/availableNumbers") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("ownerName", ownerName) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Unique identifier for the virtual line.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "List numbers for this organization.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of phone numbers returned to this maximum count. The default is 2000.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching phone numbers. The default is 0.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array.") + cmd.Flags().StringVar(&ownerName, "owner-name", "", "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255.") + virtualLineCallCmd.AddCommand(cmd) + } + + { // get-intercept-available-numbers + var virtualLineId string + var orgId string + var max string + var start string + var phoneNumber string + var ownerName string + var extension string + cmd := &cobra.Command{ + Use: "get-intercept-available-numbers", + Short: "Get Virtual Line Call Intercept Available Phone Numbers", + Long: "List the service and standard PSTN numbers that are available to be assigned as a virtual line's call intercept number.\nThese numbers are associated with the location of the virtual line specified in the request URL, can be active or inactive, and are assigned to an owning entity.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/virtualLines/{virtualLineId}/callIntercept/availableNumbers") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("ownerName", ownerName) + req.QueryParam("extension", extension) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Unique identifier for the virtual line.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "List numbers for this organization.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of phone numbers returned to this maximum count. The default is 2000.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching phone numbers. The default is 0.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array.") + cmd.Flags().StringVar(&ownerName, "owner-name", "", "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255.") + cmd.Flags().StringVar(&extension, "extension", "", "Returns the list of PSTN phone numbers with the given `extension`.") + virtualLineCallCmd.AddCommand(cmd) + } + + { // get-donotdisturb-settings + var virtualLineId string + var orgId string + cmd := &cobra.Command{ + Use: "get-donotdisturb-settings", + Short: "Retrieve DoNotDisturb Settings for a Virtual Line", + Long: "Retrieve DoNotDisturb Settings for a Virtual Line.\n\nSilence incoming calls with the Do Not Disturb feature.\nWhen enabled, callers hear the busy signal.\n\nThis API requires a full, read-only or location administrator auth token with a scope of `telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/virtualLines/{virtualLineId}/doNotDisturb") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Unique identifier for the virtual line.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the virtual line resides.") + virtualLineCallCmd.AddCommand(cmd) + } + + { // update-donotdisturb-settings + var virtualLineId string + var orgId string + var enabled bool + var ringSplashEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-donotdisturb-settings", + Short: "Modify DoNotDisturb Settings for a Virtual Line", + Long: "Modify DoNotDisturb Settings for a Virtual Line.\n\nSilence incoming calls with the Do Not Disturb feature.\nWhen enabled, callers hear the busy signal.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:telephony_config_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/virtualLines/{virtualLineId}/doNotDisturb") + req.PathParam("virtualLineId", virtualLineId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + req.BodyBool("ringSplashEnabled", ringSplashEnabled, cmd.Flags().Changed("ring-splash-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&virtualLineId, "virtual-line-id", "", "Unique identifier for the virtual line.") + cmd.MarkFlagRequired("virtual-line-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the virtual line resides.") + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().BoolVar(&ringSplashEnabled, "ring-splash-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + virtualLineCallCmd.AddCommand(cmd) + } + +} diff --git a/cmd/calling/workspace_call.go b/cmd/calling/workspace_call.go new file mode 100644 index 0000000..a4d931e --- /dev/null +++ b/cmd/calling/workspace_call.go @@ -0,0 +1,3423 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package calling + +import ( + "fmt" + "strconv" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa +var _ = strings.Join + +var workspaceCallCmd = &cobra.Command{ + Use: "workspace-call", + Short: "WorkspaceCall commands", +} + +func init() { + cmd.CallingCmd.AddCommand(workspaceCallCmd) + + { // get-forward + var workspaceId string + var orgId string + cmd := &cobra.Command{ + Use: "get-forward", + Short: "Retrieve Call Forwarding Settings for a Workspace", + Long: "Retrieve Call Forwarding Settings for a Workspace.\n\nThree types of call forwarding are supported:\n\n+ Always - forwards all incoming calls to the destination you choose.\n\n+ When busy, forwards all incoming calls to the destination you chose while the phone is in use or the person is busy.\n\n+ When no answer, forwarding only occurs when you are away or not answering your phone.\n\nIn addition, the Business Continuity feature will send calls to a destination of your choice if your phone is not connected to the network for any reason, such as a power outage, failed Internet connection, or wiring problem.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with `spark:workspaces_read` scope can be used to read workspace settings.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/workspaces/{workspaceId}/features/callForwarding") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + workspaceCallCmd.AddCommand(cmd) + } + + { // update-forward + var workspaceId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-forward", + Short: "Modify Call Forwarding Settings for a Workspace", + Long: "Modify call forwarding settings for a Workspace.\n\nThree types of call forwarding are supported:\n\n+ Always - forwards all incoming calls to the destination you choose.\n\n+ When busy, forwards all incoming calls to the destination you chose while the phone is in use or the person is busy.\n\n+ When no answer, forwarding only occurs when you are away or not answering your phone.\n\nIn addition, the Business Continuity feature will send calls to a destination of your choice if your phone is not connected to the network for any reason, such as a power outage, failed Internet connection, or wiring problem.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with `spark:workspaces_write` scope can be used to update workspace settings.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/workspaces/{workspaceId}/features/callForwarding") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspaceCallCmd.AddCommand(cmd) + } + + { // get-waiting-settings + var workspaceId string + var orgId string + cmd := &cobra.Command{ + Use: "get-waiting-settings", + Short: "Retrieve Call Waiting Settings for a Workspace", + Long: "Retrieve Call Waiting Settings for a Workspace.\n\nCall Waiting allows workspaces to handle multiple simultaneous calls. Workspaces with Call Waiting enabled can place a call on hold to answer or initiate another call.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with `spark:workspaces_read` scope can be used to read workspace settings.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/workspaces/{workspaceId}/features/callWaiting") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + workspaceCallCmd.AddCommand(cmd) + } + + { // update-waiting-settings + var workspaceId string + var orgId string + var enabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-waiting-settings", + Short: "Modify Call Waiting Settings for a Workspace", + Long: "Modify Call Waiting Settings for a Workspace.\n\nCall Waiting allows workspaces to handle multiple simultaneous calls. Workspaces with Call Waiting enabled can place a call on hold to answer or initiate another call.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with `spark:workspaces_write` scope can be used to update workspace settings.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/workspaces/{workspaceId}/features/callWaiting") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspaceCallCmd.AddCommand(cmd) + } + + { // get-caller-id + var workspaceId string + var orgId string + cmd := &cobra.Command{ + Use: "get-caller-id", + Short: "Read Caller ID Settings for a Workspace", + Long: "Retrieve a workspace's Caller ID settings.\n\nCaller ID settings control how a workspace's information is displayed when making outgoing calls.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with `spark:workspaces_read` scope can be used to read workspace settings.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/workspaces/{workspaceId}/features/callerId") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + workspaceCallCmd.AddCommand(cmd) + } + + { // update-caller-id + var workspaceId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-caller-id", + Short: "Configure Caller ID Settings for a Workspace", + Long: "Configure workspace's Caller ID settings.\n\nCaller ID settings control how a workspace's information is displayed when making outgoing calls.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with `spark:workspaces_write` scope can be used to update workspace settings.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/workspaces/{workspaceId}/features/callerId") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspaceCallCmd.AddCommand(cmd) + } + + { // get-monitoring-settings + var workspaceId string + var orgId string + cmd := &cobra.Command{ + Use: "get-monitoring-settings", + Short: "Retrieve Monitoring Settings for a Workspace", + Long: "Retrieves Monitoring settings for a Workspace.\n\nAllow workspaces to monitor the line status of specified agents, workspaces, or call park extensions. The line status indicates if a monitored agent or a workspace is on a call, or if a call has been parked on the monitored call park extension.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with `spark:workspaces_read` scope can be used to read workspace settings.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/workspaces/{workspaceId}/features/monitoring") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + workspaceCallCmd.AddCommand(cmd) + } + + { // update-monitoring-settings + var workspaceId string + var orgId string + var enableCallParkNotification bool + var monitoredElements []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-monitoring-settings", + Short: "Modify Monitoring Settings for a Workspace", + Long: "Modify Monitoring settings for a Workspace.\n\nAllow workspaces to monitor the line status of specified agents, workspaces, or call park extensions. The line status indicates if a monitored agent or a workspace is on a call, or if a call has been parked on the monitored call park extension.\n\nThe number of monitored elements is limited to 50.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with `spark:workspaces_write` scope can be used to update workspace settings.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/workspaces/{workspaceId}/features/monitoring") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("enableCallParkNotification", enableCallParkNotification, cmd.Flags().Changed("enable-call-park-notification")) + req.BodyStringSlice("monitoredElements", monitoredElements) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().BoolVar(&enableCallParkNotification, "enable-call-park-notification", false, "") + cmd.Flags().StringSliceVar(&monitoredElements, "monitored-elements", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspaceCallCmd.AddCommand(cmd) + } + + { // list-numbers-associated + var workspaceId string + var orgId string + cmd := &cobra.Command{ + Use: "list-numbers-associated", + Short: "List numbers associated with a specific workspace", + Long: "List the PSTN phone numbers associated with a specific workspace, by ID, within the organization. Also shows the location and organization associated with the workspace.\n\nRetrieving this list requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:workspaces_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/workspaces/{workspaceId}/features/numbers") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "List numbers for this workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Workspace is in this organization. Only admin users of another organization (such as partners) can use this parameter as the default is the same organization as the token used to access the API.") + workspaceCallCmd.AddCommand(cmd) + } + + { // get-incoming-permission-settings + var workspaceId string + var orgId string + cmd := &cobra.Command{ + Use: "get-incoming-permission-settings", + Short: "Retrieve Incoming Permission Settings for a Workspace", + Long: "Retrieve Incoming Permission settings for a Workspace.\n\nIncoming permission settings allow modifying permissions for a workspace that can be different from the organization's default to manage different call types.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with `spark:workspaces_read` scope can be used to read workspace settings.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/workspaces/{workspaceId}/features/incomingPermission") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + workspaceCallCmd.AddCommand(cmd) + } + + { // update-incoming-permission-settings + var workspaceId string + var orgId string + var useCustomEnabled bool + var externalTransfer string + var internalCallsEnabled bool + var collectCallsEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-incoming-permission-settings", + Short: "Modify Incoming Permission Settings for a Workspace", + Long: "Modify Incoming Permission settings for a Workspace.\n\nIncoming permission settings allow modifying permissions for a workspace that can be different from the organization's default to manage different call types.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with `spark:workspaces_write` scope can be used to update workspace settings.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/workspaces/{workspaceId}/features/incomingPermission") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("useCustomEnabled", useCustomEnabled, cmd.Flags().Changed("use-custom-enabled")) + req.BodyString("externalTransfer", externalTransfer) + req.BodyBool("internalCallsEnabled", internalCallsEnabled, cmd.Flags().Changed("internal-calls-enabled")) + req.BodyBool("collectCallsEnabled", collectCallsEnabled, cmd.Flags().Changed("collect-calls-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().BoolVar(&useCustomEnabled, "use-custom-enabled", false, "") + cmd.Flags().StringVar(&externalTransfer, "external-transfer", "", "") + cmd.Flags().BoolVar(&internalCallsEnabled, "internal-calls-enabled", false, "") + cmd.Flags().BoolVar(&collectCallsEnabled, "collect-calls-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspaceCallCmd.AddCommand(cmd) + } + + { // get-outgoing-permission-settings + var workspaceId string + var orgId string + cmd := &cobra.Command{ + Use: "get-outgoing-permission-settings", + Short: "Retrieve Outgoing Permission Settings for a Workspace", + Long: "Retrieve Outgoing Permission settings for a Workspace.\n\nTurn on outgoing call settings for this workspace to override the calling settings from the location that are used by default.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with `spark:workspaces_read` scope can be used to read workspace settings.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/workspaces/{workspaceId}/features/outgoingPermission") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + workspaceCallCmd.AddCommand(cmd) + } + + { // update-outgoing-permission-settings + var workspaceId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-outgoing-permission-settings", + Short: "Modify Outgoing Permission Settings for a Workspace", + Long: "Modify Outgoing Permission settings for a Place.\n\nTurn on outgoing call settings for this workspace to override the calling settings from the location that are used by default.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with `spark:workspaces_write` scope can be used to update workspace settings.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/workspaces/{workspaceId}/features/outgoingPermission") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspaceCallCmd.AddCommand(cmd) + } + + { // get-access-codes + var workspaceId string + var orgId string + cmd := &cobra.Command{ + Use: "get-access-codes", + Short: "Retrieve Access Codes for a Workspace", + Long: "Retrieve Access codes for a Workspace.\n\nAccess codes are used to bypass permissions.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with `spark:workspaces_read` scope can be used to read workspace settings.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/workspaces/{workspaceId}/features/outgoingPermission/accessCodes") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + workspaceCallCmd.AddCommand(cmd) + } + + { // update-access-codes + var workspaceId string + var orgId string + var deleteCodes []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-access-codes", + Short: "Modify Access Codes for a Workspace", + Long: "Modify Access codes for a workspace.\n\nAccess codes are used to bypass permissions.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with `spark:workspaces_write` scope can be used to update workspace settings.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/workspaces/{workspaceId}/features/outgoingPermission/accessCodes") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("deleteCodes", deleteCodes) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().StringSliceVar(&deleteCodes, "delete-codes", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspaceCallCmd.AddCommand(cmd) + } + + { // create-access-codes + var workspaceId string + var orgId string + var code string + var description string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-access-codes", + Short: "Create Access Codes for a Workspace", + Long: "Create new Access codes for the given workspace.\n\nAccess codes are used to bypass permissions.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with `spark:workspaces_write` scope can be used to update workspace settings.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/workspaces/{workspaceId}/features/outgoingPermission/accessCodes") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("code", code) + req.BodyString("description", description) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().StringVar(&code, "code", "", "") + cmd.Flags().StringVar(&description, "description", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspaceCallCmd.AddCommand(cmd) + } + + { // delete-all-access-codes + var workspaceId string + var orgId string + cmd := &cobra.Command{ + Use: "delete-all-access-codes", + Short: "Delete all Access Codes for a Workspace", + Long: "Deletes all Access codes for the given workspace.\n\nAccess codes are used to bypass permissions.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with `spark:workspaces_write` scope can be used to update workspace settings.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/workspaces/{workspaceId}/features/outgoingPermission/accessCodes") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + workspaceCallCmd.AddCommand(cmd) + } + + { // get-intercept-settings + var workspaceId string + var orgId string + cmd := &cobra.Command{ + Use: "get-intercept-settings", + Short: "Read Call Intercept Settings for a Workspace", + Long: "Retrieves Workspace's Call Intercept Settings\n\nThe intercept feature gracefully takes a workspace's phone out of service, while providing callers with informative announcements and alternative routing options. Depending on the service configuration, none, some, or all incoming calls to the specified workspace are intercepted. Also depending on the service configuration, outgoing calls are intercepted or rerouted to another location.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with `spark:workspaces_read` scope can be used to read workspace settings.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/workspaces/{workspaceId}/features/intercept") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + workspaceCallCmd.AddCommand(cmd) + } + + { // update-intercept-settings + var workspaceId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-intercept-settings", + Short: "Configure Call Intercept Settings for a Workspace", + Long: "Configures a Workspace's Call Intercept Settings\n\nThe intercept feature gracefully takes a workspace's phone out of service, while providing callers with informative announcements and alternative routing options. Depending on the service configuration, none, some, or all incoming calls to the specified person are intercepted. Also depending on the service configuration, outgoing calls are intercepted or rerouted to another location.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:workspaces_write` or a user auth token with `spark:workspaces_read` scope can be used by a person to read their settings.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/workspaces/{workspaceId}/features/intercept") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspaceCallCmd.AddCommand(cmd) + } + + { // get-transfer-numbers-settings + var workspaceId string + var orgId string + cmd := &cobra.Command{ + Use: "get-transfer-numbers-settings", + Short: "Retrieve Transfer Numbers Settings for a Workspace", + Long: "Retrieve Transfer Numbers Settings for a Workspace.\n\nWhen calling a specific call type, this workspace will be automatically transferred to another number. The person assigned the Auto Transfer Number can then approve the call and send it through or reject the call type. You can add up to 3 numbers.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with `spark:workspaces_read` scope can be used to read workspace settings.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/workspaces/{workspaceId}/features/outgoingPermission/autoTransferNumbers") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + workspaceCallCmd.AddCommand(cmd) + } + + { // update-transfer-numbers-settings + var workspaceId string + var orgId string + var useCustomTransferNumbers bool + var autoTransferNumber1 string + var autoTransferNumber2 string + var autoTransferNumber3 string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-transfer-numbers-settings", + Short: "Modify Transfer Numbers Settings for a Workspace", + Long: "Modify Transfer Numbers Settings for a place.\n\nWhen calling a specific call type, this workspace will be automatically transferred to another number. The person assigned the Auto Transfer Number can then approve the call and send it through or reject the call type. You can add up to 3 numbers.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with `spark:workspaces_write` scope can be used to update workspace settings.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/workspaces/{workspaceId}/features/outgoingPermission/autoTransferNumbers") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("useCustomTransferNumbers", useCustomTransferNumbers, cmd.Flags().Changed("use-custom-transfer-numbers")) + req.BodyString("autoTransferNumber1", autoTransferNumber1) + req.BodyString("autoTransferNumber2", autoTransferNumber2) + req.BodyString("autoTransferNumber3", autoTransferNumber3) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().BoolVar(&useCustomTransferNumbers, "use-custom-transfer-numbers", false, "") + cmd.Flags().StringVar(&autoTransferNumber1, "auto-transfer-number1", "", "") + cmd.Flags().StringVar(&autoTransferNumber2, "auto-transfer-number2", "", "") + cmd.Flags().StringVar(&autoTransferNumber3, "auto-transfer-number3", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspaceCallCmd.AddCommand(cmd) + } + + { // get-music-hold-settings + var workspaceId string + var orgId string + cmd := &cobra.Command{ + Use: "get-music-hold-settings", + Short: "Retrieve Music On Hold Settings for a Workspace", + Long: "Retrieve Music On Hold Settings for a Workspace.\n\nMusic on hold is played when a caller is put on hold, or the call is parked.\n\nRetrieving a workspace's music on hold settings requires a full, device or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/workspaces/{workspaceId}/musicOnHold") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + workspaceCallCmd.AddCommand(cmd) + } + + { // update-music-hold-settings + var workspaceId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-music-hold-settings", + Short: "Modify Music On Hold Settings for a Workspace", + Long: "Modify music on hold settings for a Workspace.\n\nMusic on hold is played when a caller is put on hold, or the call is parked.\n\nTo configure music on hold setting for a workspace, music on hold setting must be enabled for this location.\n\nThis API requires a full or device administrator or location administrator auth token with the `spark-admin:telephony_config_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/workspaces/{workspaceId}/musicOnHold") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspaceCallCmd.AddCommand(cmd) + } + + { // delete-access-code + var workspaceId string + var accessCode string + var orgId string + cmd := &cobra.Command{ + Use: "delete-access-code", + Short: "Delete a Specific Access Code for a Workspace", + Long: "Deletes a specific access code for the given workspace.\n\nAccess codes are used to bypass permissions.\n\nThis API requires a full, device or location administrator auth token with the scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/workspaces/{workspaceId}/features/accessCodes/{accessCode}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("accessCode", accessCode) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&accessCode, "access-code", "", "Access code for outgoing calls.") + cmd.MarkFlagRequired("access-code") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + workspaceCallCmd.AddCommand(cmd) + } + + { // get-all-digit-patterns + var workspaceId string + var orgId string + cmd := &cobra.Command{ + Use: "get-all-digit-patterns", + Short: "Retrieve all Digit Patterns for a Workspace", + Long: "Retrieve all digit patterns for a Workspace.\n\nDigit patterns are used to bypass permissions.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/workspaces/{workspaceId}/outgoingPermission/digitPatterns") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + workspaceCallCmd.AddCommand(cmd) + } + + { // create-digit-pattern + var workspaceId string + var orgId string + var name string + var pattern string + var action string + var transferEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-digit-pattern", + Short: "Create Digit Pattern for a Workspace", + Long: "Create a new digit pattern for the given workspace.\n\nDigit patterns are used to bypass permissions.\n\nThis API requires a full or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/workspaces/{workspaceId}/outgoingPermission/digitPatterns") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("name", name) + req.BodyString("pattern", pattern) + req.BodyString("action", action) + req.BodyBool("transferEnabled", transferEnabled, cmd.Flags().Changed("transfer-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&pattern, "pattern", "", "") + cmd.Flags().StringVar(&action, "action", "", "") + cmd.Flags().BoolVar(&transferEnabled, "transfer-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspaceCallCmd.AddCommand(cmd) + } + + { // update-digit-pattern-control + var workspaceId string + var orgId string + var useCustomDigitPatterns bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-digit-pattern-control", + Short: "Modify the Digit Pattern Category Control Settings for the Workspace", + Long: "Modifies whether this workspace uses the specified digit patterns when placing outbound calls or not.\n\nUpdating the digit pattern category control settings requires a full or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/workspaces/{workspaceId}/outgoingPermission/digitPatterns") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("useCustomDigitPatterns", useCustomDigitPatterns, cmd.Flags().Changed("use-custom-digit-patterns")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().BoolVar(&useCustomDigitPatterns, "use-custom-digit-patterns", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspaceCallCmd.AddCommand(cmd) + } + + { // delete-all-digit-patterns + var workspaceId string + var orgId string + cmd := &cobra.Command{ + Use: "delete-all-digit-patterns", + Short: "Delete all Digit Patterns for a Workspace", + Long: "Delete all digit patterns for a Workspace.\n\nDigit patterns are used to bypass permissions.\n\nThis API requires a full or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/workspaces/{workspaceId}/outgoingPermission/digitPatterns") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + workspaceCallCmd.AddCommand(cmd) + } + + { // get-digit-pattern + var workspaceId string + var digitPatternId string + var orgId string + cmd := &cobra.Command{ + Use: "get-digit-pattern", + Short: "Retrieve a Digit Pattern details for the Workspace", + Long: "Retrieve the designated digit pattern.\n\nDigit patterns are used to bypass permissions.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/workspaces/{workspaceId}/outgoingPermission/digitPatterns/{digitPatternId}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("digitPatternId", digitPatternId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&digitPatternId, "digit-pattern-id", "", "Unique identifier for the digit pattern.") + cmd.MarkFlagRequired("digit-pattern-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + workspaceCallCmd.AddCommand(cmd) + } + + { // update-digit-pattern + var workspaceId string + var digitPatternId string + var orgId string + var name string + var pattern string + var action string + var transferEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-digit-pattern", + Short: "Modify a Digit Pattern for the Workspace", + Long: "Modify the designated digit pattern.\n\nDigit patterns are used to bypass permissions.\n\nThis API requires a full or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/workspaces/{workspaceId}/outgoingPermission/digitPatterns/{digitPatternId}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("digitPatternId", digitPatternId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("name", name) + req.BodyString("pattern", pattern) + req.BodyString("action", action) + req.BodyBool("transferEnabled", transferEnabled, cmd.Flags().Changed("transfer-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&digitPatternId, "digit-pattern-id", "", "Unique identifier for the digit pattern.") + cmd.MarkFlagRequired("digit-pattern-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&pattern, "pattern", "", "") + cmd.Flags().StringVar(&action, "action", "", "") + cmd.Flags().BoolVar(&transferEnabled, "transfer-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspaceCallCmd.AddCommand(cmd) + } + + { // delete-digit-pattern + var workspaceId string + var digitPatternId string + var orgId string + cmd := &cobra.Command{ + Use: "delete-digit-pattern", + Short: "Delete a Digit Pattern for the Workspace", + Long: "Delete a digit pattern for a Workspace.\n\nDigit patterns are used to bypass permissions.\n\nThis API requires a full or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/workspaces/{workspaceId}/outgoingPermission/digitPatterns/{digitPatternId}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("digitPatternId", digitPatternId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&digitPatternId, "digit-pattern-id", "", "Unique identifier for the digit pattern.") + cmd.MarkFlagRequired("digit-pattern-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + workspaceCallCmd.AddCommand(cmd) + } + + { // get-recording + var workspaceId string + var orgId string + cmd := &cobra.Command{ + Use: "get-recording", + Short: "Retrieve Call Recording Settings for a Workspace", + Long: "Retrieve call recording settings for a workspace.\n\nThe Call Recording feature provides a hosted mechanism to record the calls placed and received on the Carrier platform for replay and archival. This feature is helpful for quality assurance, security, training, and more.\n\nThis API requires a full, read-only, device or location administrator auth token with the `spark-admin:telephony_config_read` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/workspaces/{workspaceId}/features/callRecordings") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + workspaceCallCmd.AddCommand(cmd) + } + + { // update-recording + var workspaceId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-recording", + Short: "Modify Call Recording Settings for a Workspace", + Long: "Modify call forwarding settings for a workspace.\n\nThe Call Recording feature provides a hosted mechanism to record the calls placed and received on the Carrier platform for replay and archival. This feature is helpful for quality assurance, security, training, and more.\n\nThe vendor's terms of service have to be accepted to enable call recording. Vendor details along with the terms of service URL are shared when the vendor's terms of service are not accepted yet.\n\nThis API requires a full, device or location administrator auth token with the `spark-admin:telephony_config_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/workspaces/{workspaceId}/features/callRecordings") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspaceCallCmd.AddCommand(cmd) + } + + { // get-available-numbers + var orgId string + var locationId string + var max string + var start string + var phoneNumber string + cmd := &cobra.Command{ + Use: "get-available-numbers", + Short: "Get Workspace Available Phone Numbers", + Long: "List standard numbers that are available to be assigned as a workspace's phone number.\nBy default, this API returns numbers from all locations that are unassigned. To select the suitable number for assignment, ensure the workspace's location ID is provided as the `locationId` request parameter.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/workspaces/availableNumbers") + req.QueryParam("orgId", orgId) + req.QueryParam("locationId", locationId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("phoneNumber", phoneNumber) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List numbers for this organization.") + cmd.Flags().StringVar(&locationId, "location-id", "", "Return the list of phone numbers for this location within the given organization. The maximum length is 36.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of phone numbers returned to this maximum count. The default is 2000.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching phone numbers. The default is 0.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array.") + workspaceCallCmd.AddCommand(cmd) + } + + { // get-ecbn-available-numbers + var workspaceId string + var orgId string + var max string + var start string + var phoneNumber string + var ownerName string + cmd := &cobra.Command{ + Use: "get-ecbn-available-numbers", + Short: "Get Workspace ECBN Available Phone Numbers", + Long: "List standard numbers that are available to be assigned as a workspace's emergency callback number.\nThese numbers are associated with the location of the workspace specified in the request URL, can be active or inactive, and are assigned to an owning entity.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/workspaces/{workspaceId}/emergencyCallbackNumber/availableNumbers") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("ownerName", ownerName) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "List numbers for this organization.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of phone numbers returned to this maximum count. The default is 2000.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching phone numbers. The default is 0.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array.") + cmd.Flags().StringVar(&ownerName, "owner-name", "", "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255.") + workspaceCallCmd.AddCommand(cmd) + } + + { // get-forward-available-numbers + var workspaceId string + var orgId string + var max string + var start string + var phoneNumber string + var ownerName string + var extension string + cmd := &cobra.Command{ + Use: "get-forward-available-numbers", + Short: "Get Workspace Call Forward Available Phone Numbers", + Long: "List the service and standard PSTN numbers that are available to be assigned as a workspace's call forward number.\nThese numbers are associated with the location of the workspace specified in the request URL, can be active or inactive, and are assigned to an owning entity.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/workspaces/{workspaceId}/callForwarding/availableNumbers") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("ownerName", ownerName) + req.QueryParam("extension", extension) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "List numbers for this organization.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of phone numbers returned to this maximum count. The default is 2000.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching phone numbers. The default is 0.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array.") + cmd.Flags().StringVar(&ownerName, "owner-name", "", "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255.") + cmd.Flags().StringVar(&extension, "extension", "", "Returns the list of PSTN phone numbers with the given `extension`.") + workspaceCallCmd.AddCommand(cmd) + } + + { // get-intercept-available-numbers + var workspaceId string + var orgId string + var max string + var start string + var phoneNumber string + var ownerName string + var extension string + cmd := &cobra.Command{ + Use: "get-intercept-available-numbers", + Short: "Get Workspace Call Intercept Available Phone Numbers", + Long: "List the service and standard PSTN numbers that are available to be assigned as a workspace's call intercept number.\nThese numbers are associated with the location of the workspace specified in the request URL, can be active or inactive, and are assigned to an owning entity.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/workspaces/{workspaceId}/callIntercept/availableNumbers") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("ownerName", ownerName) + req.QueryParam("extension", extension) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "List numbers for this organization.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of phone numbers returned to this maximum count. The default is 2000.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching phone numbers. The default is 0.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array.") + cmd.Flags().StringVar(&ownerName, "owner-name", "", "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255.") + cmd.Flags().StringVar(&extension, "extension", "", "Returns the list of PSTN phone numbers with the given `extension`.") + workspaceCallCmd.AddCommand(cmd) + } + + { // get-anonymous-settings + var workspaceId string + var orgId string + cmd := &cobra.Command{ + Use: "get-anonymous-settings", + Short: "Retrieve Anonymous Call Settings for a Workspace", + Long: "Retrieve Anonymous Call Settings for a Workspace.\n\nAnonymous Call Rejection, when enabled, blocks all incoming calls from unidentified or blocked caller IDs.\n\nThis API requires a full, read-only or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with a scope of `spark:workspaces_read` to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/workspaces/{workspaceId}/anonymousCallReject") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + workspaceCallCmd.AddCommand(cmd) + } + + { // update-anonymous-settings + var workspaceId string + var orgId string + var enabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-anonymous-settings", + Short: "Modify Anonymous Call Settings for a Workspace", + Long: "Modify Anonymous Call Settings for a Workspace.\n\nAnonymous Call Rejection, when enabled, blocks all incoming calls from unidentified or blocked caller IDs.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/workspaces/{workspaceId}/anonymousCallReject") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspaceCallCmd.AddCommand(cmd) + } + + { // get-barge-settings + var workspaceId string + var orgId string + cmd := &cobra.Command{ + Use: "get-barge-settings", + Short: "Retrieve Barge In Call Settings for a Workspace", + Long: "Retrieve Barge In Call Settings for a Workspace.\n\nBarge In, when enabled, allows you to use the Feature Access Code (FAC) on your desk phone to answer someone else\u2019s phone call or barge in on a call they\u2019ve already answered.\n\nThis API requires a full, read-only or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with a scope of `spark:workspaces_read` to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/workspaces/{workspaceId}/bargeIn") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + workspaceCallCmd.AddCommand(cmd) + } + + { // update-barge-settings + var workspaceId string + var orgId string + var enabled bool + var toneEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-barge-settings", + Short: "Modify Barge In Call Settings for a Workspace", + Long: "Modify Barge In Call Settings for a Workspace.\n\nBarge In, when enabled, allows you to use the Feature Access Code (FAC) on your desk phone to answer someone else\u2019s phone call or barge in on a call they\u2019ve already answered.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/workspaces/{workspaceId}/bargeIn") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + req.BodyBool("toneEnabled", toneEnabled, cmd.Flags().Changed("tone-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().BoolVar(&toneEnabled, "tone-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspaceCallCmd.AddCommand(cmd) + } + + { // get-donotdisturb-settings + var workspaceId string + var orgId string + cmd := &cobra.Command{ + Use: "get-donotdisturb-settings", + Short: "Retrieve DoNotDisturb Settings for a Workspace", + Long: "Retrieve DoNotDisturb Settings for a Workspace.\n\nSilence incoming calls with the Do Not Disturb feature.\nWhen enabled, callers hear the busy signal.\n\nThis API requires a full, read-only or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with a scope of `spark:workspaces_read` to read workspace settings.\n\n**NOTE**: This API is available for professional and common area licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/workspaces/{workspaceId}/doNotDisturb") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + workspaceCallCmd.AddCommand(cmd) + } + + { // update-donotdisturb-settings + var workspaceId string + var orgId string + var enabled bool + var ringSplashEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-donotdisturb-settings", + Short: "Modify DoNotDisturb Settings for a Workspace", + Long: "Modify DoNotDisturb Settings for a Workspace.\n\nSilence incoming calls with the Do Not Disturb feature.\nWhen enabled, callers hear the busy signal.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional and common area licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/workspaces/{workspaceId}/doNotDisturb") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + req.BodyBool("ringSplashEnabled", ringSplashEnabled, cmd.Flags().Changed("ring-splash-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().BoolVar(&ringSplashEnabled, "ring-splash-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspaceCallCmd.AddCommand(cmd) + } + + { // get-bridge-warning-tone + var workspaceId string + var orgId string + cmd := &cobra.Command{ + Use: "get-bridge-warning-tone", + Short: "Retrieve Call Bridge Warning Tone Settings for a Workspace", + Long: "Retrieve Call Bridge Warning Tone Settings for a Workspace.\n\nCall Bridge Warning Tone, when enabled, ensures that users hear a warning tone when other users bridge into an active call on the same shared line appearance.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with `spark:workspaces_read` scope can be used to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/workspaces/{workspaceId}/callBridge") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + workspaceCallCmd.AddCommand(cmd) + } + + { // update-bridge-warning-tone + var workspaceId string + var orgId string + var warningToneEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-bridge-warning-tone", + Short: "Modify Call Bridge Warning Tone Settings for a Workspace", + Long: "Modify Call Bridge Warning Tone Settings for a Workspace.\n\nCall Bridge Warning Tone, when enabled, ensures that users hear a warning tone when other users bridge into an active call on the same shared line appearance.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:workspaces_write` scope can be used to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/workspaces/{workspaceId}/callBridge") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("warningToneEnabled", warningToneEnabled, cmd.Flags().Changed("warning-tone-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().BoolVar(&warningToneEnabled, "warning-tone-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspaceCallCmd.AddCommand(cmd) + } + + { // get-push-to-talk-settings + var workspaceId string + var orgId string + cmd := &cobra.Command{ + Use: "get-push-to-talk-settings", + Short: "Read Push-to-Talk Settings for a Workspace", + Long: "Retrieve Push-to-Talk settings for a workspace.\n\nPush-to-Talk allows the use of desk phones as either a one-way or two-way intercom that connects people/workspaces in different parts of your organization.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:workspaces_read` scope can be used to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/workspaces/{workspaceId}/pushToTalk") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + workspaceCallCmd.AddCommand(cmd) + } + + { // update-push-to-talk-settings + var workspaceId string + var orgId string + var allowAutoAnswer bool + var connectionType string + var accessType string + var members []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-push-to-talk-settings", + Short: "Configure Push-to-Talk Settings for a Workspace", + Long: "Configure Push-to-Talk settings for a workspace.\n\nPush-to-Talk allows the use of desk phones as either a one-way or two-way intercom that connects people/workspaces in different parts of your organization.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:workspaces_write` scope can be used to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/workspaces/{workspaceId}/pushToTalk") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("allowAutoAnswer", allowAutoAnswer, cmd.Flags().Changed("allow-auto-answer")) + req.BodyString("connectionType", connectionType) + req.BodyString("accessType", accessType) + req.BodyStringSlice("members", members) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().BoolVar(&allowAutoAnswer, "allow-auto-answer", false, "") + cmd.Flags().StringVar(&connectionType, "connection-type", "", "") + cmd.Flags().StringVar(&accessType, "access-type", "", "") + cmd.Flags().StringSliceVar(&members, "members", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspaceCallCmd.AddCommand(cmd) + } + + { // get-privacy-settings + var workspaceId string + var orgId string + cmd := &cobra.Command{ + Use: "get-privacy-settings", + Short: "Retrieve Privacy Settings for a Workspace", + Long: "Retrieve Privacy Settings for a Workspace.\n\nThe privacy feature enables the Workspaces line to be monitored by others and determine if they can be reached by Auto Attendant services.\n\nThis API requires a full, read-only or location administrator auth token with a scope of `spark-admin:workspaces_read` scope to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/workspaces/{workspaceId}/privacy") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + workspaceCallCmd.AddCommand(cmd) + } + + { // update-privacy-settings + var workspaceId string + var orgId string + var aaExtensionDialingEnabled bool + var aaNamingDialingEnabled bool + var enablePhoneStatusDirectoryPrivacy bool + var enablePhoneStatusPickupBargeInPrivacy bool + var monitoringAgents []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-privacy-settings", + Short: "Modify Privacy Settings for a Workspace", + Long: "Modify Privacy Settings for a Workspace.\n\nThe privacy feature enables the Workspaces line to be monitored by others and determine if they can be reached by Auto Attendant services.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/workspaces/{workspaceId}/privacy") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("aaExtensionDialingEnabled", aaExtensionDialingEnabled, cmd.Flags().Changed("aa-extension-dialing-enabled")) + req.BodyBool("aaNamingDialingEnabled", aaNamingDialingEnabled, cmd.Flags().Changed("aa-naming-dialing-enabled")) + req.BodyBool("enablePhoneStatusDirectoryPrivacy", enablePhoneStatusDirectoryPrivacy, cmd.Flags().Changed("enable-phone-status-directory-privacy")) + req.BodyBool("enablePhoneStatusPickupBargeInPrivacy", enablePhoneStatusPickupBargeInPrivacy, cmd.Flags().Changed("enable-phone-status-pickup-barge-in-privacy")) + req.BodyStringSlice("monitoringAgents", monitoringAgents) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().BoolVar(&aaExtensionDialingEnabled, "aa-extension-dialing-enabled", false, "") + cmd.Flags().BoolVar(&aaNamingDialingEnabled, "aa-naming-dialing-enabled", false, "") + cmd.Flags().BoolVar(&enablePhoneStatusDirectoryPrivacy, "enable-phone-status-directory-privacy", false, "") + cmd.Flags().BoolVar(&enablePhoneStatusPickupBargeInPrivacy, "enable-phone-status-pickup-barge-in-privacy", false, "") + cmd.Flags().StringSliceVar(&monitoringAgents, "monitoring-agents", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspaceCallCmd.AddCommand(cmd) + } + + { // get-voicemail + var workspaceId string + var orgId string + cmd := &cobra.Command{ + Use: "get-voicemail", + Short: "Read Voicemail Settings for a Workspace", + Long: "Retrieve a workspace Voicemail settings.\n\nThe voicemail feature transfers callers to voicemail based on your settings. You can then retrieve voice messages via Voicemail. Voicemail audio is sent in Waveform Audio File Format, `.wav`, format.\n\nOptionally, notifications can be sent to a mobile phone via text or email. These notifications will not include the voicemail files.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:workspaces_read` scope can be used to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/workspaces/{workspaceId}/voicemail") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + workspaceCallCmd.AddCommand(cmd) + } + + { // update-voicemail + var workspaceId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-voicemail", + Short: "Configure Voicemail Settings for a Workspace", + Long: "Configure a workspace Voicemail settings.\n\nThe voicemail feature transfers callers to voicemail based on your settings. You can then retrieve voice messages via Voicemail. Voicemail audio is sent in Waveform Audio File Format, `.wav`, format.\n\nOptionally, notifications can be sent to a mobile phone via text or email. These notifications will not include the voicemail files.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:workspaces_write` scope can be used to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/workspaces/{workspaceId}/voicemail") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspaceCallCmd.AddCommand(cmd) + } + + { // update-voicemail-passcode + var placeId string + var orgId string + var passcode string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-voicemail-passcode", + Short: "Modify Voicemail Passcode for a Workspace", + Long: "Modify voicemail passcode for a workspace.\n\nModifying the voicemail passcode for a workspace requires a full administrator, device administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/workspaces/{placeId}/voicemail/passcode") + req.PathParam("placeId", placeId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("passcode", passcode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&placeId, "place-id", "", "Modify voicemail passcode for this workspace.") + cmd.MarkFlagRequired("place-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Modify voicemail passcode for a workspace in this organization.") + cmd.Flags().StringVar(&passcode, "passcode", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspaceCallCmd.AddCommand(cmd) + } + + { // get-sequential-ring + var workspaceId string + var id string + var orgId string + cmd := &cobra.Command{ + Use: "get-sequential-ring", + Short: "Retrieve Sequential Ring Criteria for a Workspace", + Long: "Retrieve sequential ring criteria for a workspace.\n\nThe sequential ring feature enables you to create a list of up to five phone numbers. When the workspace receives incoming calls, these numbers will ring one after another.\nThe sequential ring criteria specify settings such as schedule and incoming numbers for which to sequentially ring or not.\n\nThis API requires a full, read-only or location administrator auth token with a scope of `spark-admin:workspaces_read` to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/workspaces/{workspaceId}/sequentialRing/criteria/{id}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("id", id) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&id, "id", "", "Unique identifier for the criteria.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + workspaceCallCmd.AddCommand(cmd) + } + + { // update-sequential-ring + var workspaceId string + var id string + var orgId string + var scheduleName string + var scheduleType string + var scheduleLevel string + var callsFrom string + var anonymousCallersEnabled bool + var unavailableCallersEnabled bool + var phoneNumbers []string + var ringEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-sequential-ring", + Short: "Modify Sequential Ring Criteria for a Workspace", + Long: "Modify sequential ring criteria for a workspace.\n\nThe sequential ring feature enables you to create a list of up to five phone numbers. When the workspace receives incoming calls, these numbers will ring one after another.\nThe sequential ring criteria specify settings such as schedule and incoming numbers for which to sequentially ring or not.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/workspaces/{workspaceId}/sequentialRing/criteria/{id}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("id", id) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("scheduleName", scheduleName) + req.BodyString("scheduleType", scheduleType) + req.BodyString("scheduleLevel", scheduleLevel) + req.BodyString("callsFrom", callsFrom) + req.BodyBool("anonymousCallersEnabled", anonymousCallersEnabled, cmd.Flags().Changed("anonymous-callers-enabled")) + req.BodyBool("unavailableCallersEnabled", unavailableCallersEnabled, cmd.Flags().Changed("unavailable-callers-enabled")) + req.BodyStringSlice("phoneNumbers", phoneNumbers) + req.BodyBool("ringEnabled", ringEnabled, cmd.Flags().Changed("ring-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&id, "id", "", "Unique identifier for the criteria.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().StringVar(&scheduleName, "schedule-name", "", "") + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "") + cmd.Flags().StringVar(&scheduleLevel, "schedule-level", "", "") + cmd.Flags().StringVar(&callsFrom, "calls-from", "", "") + cmd.Flags().BoolVar(&anonymousCallersEnabled, "anonymous-callers-enabled", false, "") + cmd.Flags().BoolVar(&unavailableCallersEnabled, "unavailable-callers-enabled", false, "") + cmd.Flags().StringSliceVar(&phoneNumbers, "phone-numbers", nil, "") + cmd.Flags().BoolVar(&ringEnabled, "ring-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspaceCallCmd.AddCommand(cmd) + } + + { // delete-sequential-ring + var workspaceId string + var id string + var orgId string + cmd := &cobra.Command{ + Use: "delete-sequential-ring", + Short: "Delete Sequential Ring Criteria for a Workspace", + Long: "Delete sequential ring criteria for a workspace.\n\nThe sequential ring feature enables you to create a list of up to five phone numbers. When the workspace receives incoming calls, these numbers will ring one after another.\nThe sequential ring criteria specify settings such as schedule and incoming numbers for which to sequentially ring or not.\n\nThis API requires a full, read-only or location administrator auth token with a scope of `spark-admin:workspaces_read` to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/workspaces/{workspaceId}/sequentialRing/criteria/{id}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("id", id) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&id, "id", "", "Unique identifier for the criteria.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + workspaceCallCmd.AddCommand(cmd) + } + + { // get-policy-settings + var workspaceId string + var orgId string + cmd := &cobra.Command{ + Use: "get-policy-settings", + Short: "Read Call Policy Settings for a Workspace", + Long: "Retrieve a workspace Call Policies settings.\n\nThe call policy feature enables administrator to configure call policy settings such as Connected Line Identification Privacy on Redirected Calls for a professional workspace.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:workspaces_read` scope can be used to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/workspaces/{workspaceId}/callPolicies") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + workspaceCallCmd.AddCommand(cmd) + } + + { // update-policy-settings + var workspaceId string + var orgId string + var connectedLineIdPrivacyOnRedirectedCalls string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-policy-settings", + Short: "Configure Call Policy Settings for a Workspace", + Long: "Configure a workspace Call Policies settings.\n\nThe call policy feature enables administrator to configure call policy settings such as Connected Line Identification Privacy on Redirected Calls for a professional workspace.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:workspaces_write` scope can be used to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/workspaces/{workspaceId}/callPolicies") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("connectedLineIdPrivacyOnRedirectedCalls", connectedLineIdPrivacyOnRedirectedCalls) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().StringVar(&connectedLineIdPrivacyOnRedirectedCalls, "connected-line-id-privacy-on-redirected-calls", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspaceCallCmd.AddCommand(cmd) + } + + { // create-sequential-ring + var workspaceId string + var orgId string + var callsFrom string + var ringEnabled bool + var scheduleName string + var scheduleType string + var scheduleLevel string + var anonymousCallersEnabled bool + var unavailableCallersEnabled bool + var phoneNumbers []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-sequential-ring", + Short: "Create Sequential Ring Criteria for a Workspace", + Long: "Create sequential ring criteria for a workspace.\n\nThe sequential ring feature enables you to create a list of up to five phone numbers. When the workspace receives incoming calls, these numbers will ring one after another.\nThe sequential ring criteria specify settings such as schedule and incoming numbers for which to sequentially ring or not.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/workspaces/{workspaceId}/sequentialRing/criteria") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callsFrom", callsFrom) + req.BodyBool("ringEnabled", ringEnabled, cmd.Flags().Changed("ring-enabled")) + req.BodyString("scheduleName", scheduleName) + req.BodyString("scheduleType", scheduleType) + req.BodyString("scheduleLevel", scheduleLevel) + req.BodyBool("anonymousCallersEnabled", anonymousCallersEnabled, cmd.Flags().Changed("anonymous-callers-enabled")) + req.BodyBool("unavailableCallersEnabled", unavailableCallersEnabled, cmd.Flags().Changed("unavailable-callers-enabled")) + req.BodyStringSlice("phoneNumbers", phoneNumbers) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().StringVar(&callsFrom, "calls-from", "", "") + cmd.Flags().BoolVar(&ringEnabled, "ring-enabled", false, "") + cmd.Flags().StringVar(&scheduleName, "schedule-name", "", "") + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "") + cmd.Flags().StringVar(&scheduleLevel, "schedule-level", "", "") + cmd.Flags().BoolVar(&anonymousCallersEnabled, "anonymous-callers-enabled", false, "") + cmd.Flags().BoolVar(&unavailableCallersEnabled, "unavailable-callers-enabled", false, "") + cmd.Flags().StringSliceVar(&phoneNumbers, "phone-numbers", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspaceCallCmd.AddCommand(cmd) + } + + { // get-sequential-ring-settings + var workspaceId string + var orgId string + cmd := &cobra.Command{ + Use: "get-sequential-ring-settings", + Short: "Retrieve Sequential Ring Settings for a Workspace", + Long: "Retrieve sequential ring settings for a workspace.\n\nThe sequential ring feature enables you to create a list of up to five phone numbers. When the workspace receives incoming calls, these numbers will ring one after another.\n\nThis API requires a full, read-only or location administrator auth token with a scope of `spark-admin:workspaces_read` to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/workspaces/{workspaceId}/sequentialRing") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + workspaceCallCmd.AddCommand(cmd) + } + + { // update-sequential-ring-settings + var workspaceId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-sequential-ring-settings", + Short: "Modify Sequential Ring Settings for a Workspace", + Long: "Modify sequential ring settings for a workspace.\n\nThe sequential ring feature enables you to create a list of up to five phone numbers. When the workspace receives incoming calls, these numbers will ring one after another.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/workspaces/{workspaceId}/sequentialRing") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspaceCallCmd.AddCommand(cmd) + } + + { // get-simultaneous-ring-settings + var workspaceId string + var orgId string + cmd := &cobra.Command{ + Use: "get-simultaneous-ring-settings", + Short: "Retrieve Simultaneous Ring Settings for a Workspace", + Long: "Retrieve Simultaneous Ring Settings for a Workspace.\n\nThe Simultaneous Ring feature allows you to configure your office phone and other phones of your choice to ring simultaneously.\nSchedules can also be set up to ring these phones during certain times of the day or days of the week.\n\nThis API requires a full, read-only or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with a scope of `spark:workspaces_read` to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/workspaces/{workspaceId}/simultaneousRing") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + workspaceCallCmd.AddCommand(cmd) + } + + { // update-simultaneous-ring-settings + var workspaceId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-simultaneous-ring-settings", + Short: "Modify Simultaneous Ring Settings for a Workspace", + Long: "Modify Simultaneous Ring Settings for a Workspace.\n\nThe Simultaneous Ring feature allows you to configure the workspace phones of your choice to ring simultaneously.\nSchedules can also be set up to ring these phones during certain times of the day or days of the week.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/workspaces/{workspaceId}/simultaneousRing") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspaceCallCmd.AddCommand(cmd) + } + + { // get-simultaneous-ring + var workspaceId string + var id string + var orgId string + cmd := &cobra.Command{ + Use: "get-simultaneous-ring", + Short: "Retrieve Simultaneous Ring Criteria for a Workspace", + Long: "Retrieve Simultaneous Ring Criteria Settings for a Workspace.\n\nThe Simultaneous Ring feature allows you to configure your office phone and other phones of your choice to ring simultaneously.\nSimultaneous Ring Criteria (Schedules) can also be set up to ring these phones during certain times of the day or days of the week.\n\nThis API requires a full, read-only or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with a scope of `spark:workspaces_read` to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/workspaces/{workspaceId}/simultaneousRing/criteria/{id}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("id", id) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&id, "id", "", "Unique identifier for the criteria.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + workspaceCallCmd.AddCommand(cmd) + } + + { // update-simultaneous-ring + var workspaceId string + var id string + var orgId string + var scheduleName string + var scheduleType string + var scheduleLevel string + var callsFrom string + var anonymousCallersEnabled bool + var unavailableCallersEnabled bool + var phoneNumbers []string + var ringEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-simultaneous-ring", + Short: "Modify Simultaneous Ring Criteria for a Workspace", + Long: "Modify Simultaneous Ring Criteria Settings for a Workspace.\n\nThe Simultaneous Ring feature allows you to configure your office phone and other phones of your choice to ring simultaneously.\nSimultaneous Ring Criteria (Schedules) can also be set up to ring these phones during certain times of the day or days of the week.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/workspaces/{workspaceId}/simultaneousRing/criteria/{id}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("id", id) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("scheduleName", scheduleName) + req.BodyString("scheduleType", scheduleType) + req.BodyString("scheduleLevel", scheduleLevel) + req.BodyString("callsFrom", callsFrom) + req.BodyBool("anonymousCallersEnabled", anonymousCallersEnabled, cmd.Flags().Changed("anonymous-callers-enabled")) + req.BodyBool("unavailableCallersEnabled", unavailableCallersEnabled, cmd.Flags().Changed("unavailable-callers-enabled")) + req.BodyStringSlice("phoneNumbers", phoneNumbers) + req.BodyBool("ringEnabled", ringEnabled, cmd.Flags().Changed("ring-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&id, "id", "", "Unique identifier for the criteria.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().StringVar(&scheduleName, "schedule-name", "", "") + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "") + cmd.Flags().StringVar(&scheduleLevel, "schedule-level", "", "") + cmd.Flags().StringVar(&callsFrom, "calls-from", "", "") + cmd.Flags().BoolVar(&anonymousCallersEnabled, "anonymous-callers-enabled", false, "") + cmd.Flags().BoolVar(&unavailableCallersEnabled, "unavailable-callers-enabled", false, "") + cmd.Flags().StringSliceVar(&phoneNumbers, "phone-numbers", nil, "") + cmd.Flags().BoolVar(&ringEnabled, "ring-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspaceCallCmd.AddCommand(cmd) + } + + { // delete-simultaneous-ring + var workspaceId string + var id string + var orgId string + cmd := &cobra.Command{ + Use: "delete-simultaneous-ring", + Short: "Delete Simultaneous Ring Criteria for a Workspace", + Long: "Delete simultaneous ring criteria Settings for a workspace.\n\nThe Simultaneous Ring feature allows you to configure your office phone and other phones of your choice to ring simultaneously.\nSimultaneous Ring Criteria (Schedules) can also be set up to ring these phones during certain times of the day or days of the week.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/workspaces/{workspaceId}/simultaneousRing/criteria/{id}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("id", id) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&id, "id", "", "Unique identifier for the criteria.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + workspaceCallCmd.AddCommand(cmd) + } + + { // create-simultaneous-ring + var workspaceId string + var orgId string + var scheduleName string + var scheduleType string + var scheduleLevel string + var callsFrom string + var ringEnabled bool + var anonymousCallersEnabled bool + var unavailableCallersEnabled bool + var phoneNumbers []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-simultaneous-ring", + Short: "Create Simultaneous Ring Criteria for a Workspace", + Long: "Create Simultaneous Ring Criteria Settings for a Workspace.\n\nThe Simultaneous Ring feature allows you to configure your office phone and other phones of your choice to ring simultaneously.\nSimultaneous Ring Criteria (Schedules) can also be set up to ring these phones during certain times of the day or days of the week.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/workspaces/{workspaceId}/simultaneousRing/criteria") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("scheduleName", scheduleName) + req.BodyString("scheduleType", scheduleType) + req.BodyString("scheduleLevel", scheduleLevel) + req.BodyString("callsFrom", callsFrom) + req.BodyBool("ringEnabled", ringEnabled, cmd.Flags().Changed("ring-enabled")) + req.BodyBool("anonymousCallersEnabled", anonymousCallersEnabled, cmd.Flags().Changed("anonymous-callers-enabled")) + req.BodyBool("unavailableCallersEnabled", unavailableCallersEnabled, cmd.Flags().Changed("unavailable-callers-enabled")) + req.BodyStringSlice("phoneNumbers", phoneNumbers) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().StringVar(&scheduleName, "schedule-name", "", "") + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "") + cmd.Flags().StringVar(&scheduleLevel, "schedule-level", "", "") + cmd.Flags().StringVar(&callsFrom, "calls-from", "", "") + cmd.Flags().BoolVar(&ringEnabled, "ring-enabled", false, "") + cmd.Flags().BoolVar(&anonymousCallersEnabled, "anonymous-callers-enabled", false, "") + cmd.Flags().BoolVar(&unavailableCallersEnabled, "unavailable-callers-enabled", false, "") + cmd.Flags().StringSliceVar(&phoneNumbers, "phone-numbers", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspaceCallCmd.AddCommand(cmd) + } + + { // get-selective-reject-settings + var workspaceId string + var orgId string + cmd := &cobra.Command{ + Use: "get-selective-reject-settings", + Short: "Retrieve Selective Reject Settings for a Workspace", + Long: "Retrieve Selective Reject Settings for a Workspace.\n\nWith the Selective Reject feature, you can reject calls at specific times from specific callers. This setting takes precedence over Selectively Accept Calls.\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, read-only or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with a scope of `spark:workspaces_read` to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/workspaces/{workspaceId}/selectiveReject") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + workspaceCallCmd.AddCommand(cmd) + } + + { // update-selective-reject-settings + var workspaceId string + var orgId string + var enabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-selective-reject-settings", + Short: "Modify Selective Reject Settings for a Workspace", + Long: "Modify Selective Reject Settings for a Workspace.\n\nWith the Selective Reject feature, you can reject calls at specific times from specific callers. This setting takes precedence over Selectively Accept Calls.\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/workspaces/{workspaceId}/selectiveReject") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspaceCallCmd.AddCommand(cmd) + } + + { // get-selective-reject + var workspaceId string + var id string + var orgId string + cmd := &cobra.Command{ + Use: "get-selective-reject", + Short: "Retrieve Selective Reject Criteria for a Workspace", + Long: "Retrieve Selective Reject Criteria Settings for a Workspace.\n\nWith the Selective Reject feature, you can reject calls at specific times from specific callers. This setting takes precedence over Selectively Accept Calls.\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, read-only or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with a scope of `spark:workspaces_read` to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/workspaces/{workspaceId}/selectiveReject/criteria/{id}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("id", id) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&id, "id", "", "Unique identifier for the criteria.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + workspaceCallCmd.AddCommand(cmd) + } + + { // update-selective-reject + var workspaceId string + var id string + var orgId string + var scheduleName string + var scheduleType string + var scheduleLevel string + var callsFrom string + var anonymousCallersEnabled bool + var unavailableCallersEnabled bool + var phoneNumbers []string + var rejectEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-selective-reject", + Short: "Modify Selective Reject Criteria for a Workspace", + Long: "Modify Selective Reject Criteria Settings for a Workspace.\n\nWith the Selective Reject feature, you can reject calls at specific times from specific callers. This setting takes precedence over Selectively Accept Calls.\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/workspaces/{workspaceId}/selectiveReject/criteria/{id}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("id", id) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("scheduleName", scheduleName) + req.BodyString("scheduleType", scheduleType) + req.BodyString("scheduleLevel", scheduleLevel) + req.BodyString("callsFrom", callsFrom) + req.BodyBool("anonymousCallersEnabled", anonymousCallersEnabled, cmd.Flags().Changed("anonymous-callers-enabled")) + req.BodyBool("unavailableCallersEnabled", unavailableCallersEnabled, cmd.Flags().Changed("unavailable-callers-enabled")) + req.BodyStringSlice("phoneNumbers", phoneNumbers) + req.BodyBool("rejectEnabled", rejectEnabled, cmd.Flags().Changed("reject-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&id, "id", "", "Unique identifier for the criteria.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().StringVar(&scheduleName, "schedule-name", "", "") + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "") + cmd.Flags().StringVar(&scheduleLevel, "schedule-level", "", "") + cmd.Flags().StringVar(&callsFrom, "calls-from", "", "") + cmd.Flags().BoolVar(&anonymousCallersEnabled, "anonymous-callers-enabled", false, "") + cmd.Flags().BoolVar(&unavailableCallersEnabled, "unavailable-callers-enabled", false, "") + cmd.Flags().StringSliceVar(&phoneNumbers, "phone-numbers", nil, "") + cmd.Flags().BoolVar(&rejectEnabled, "reject-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspaceCallCmd.AddCommand(cmd) + } + + { // delete-selective-reject + var workspaceId string + var id string + var orgId string + cmd := &cobra.Command{ + Use: "delete-selective-reject", + Short: "Delete Selective Reject Criteria for a Workspace", + Long: "Delete Selective Reject criteria Settings for a workspace.\n\nWith the Selective Reject feature, you can reject calls at specific times from specific callers. This setting takes precedence over Selectively Accept Calls.\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/workspaces/{workspaceId}/selectiveReject/criteria/{id}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("id", id) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&id, "id", "", "Unique identifier for the criteria.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + workspaceCallCmd.AddCommand(cmd) + } + + { // create-selective-reject + var workspaceId string + var orgId string + var scheduleName string + var scheduleType string + var scheduleLevel string + var callsFrom string + var rejectEnabled bool + var anonymousCallersEnabled bool + var unavailableCallersEnabled bool + var phoneNumbers []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-selective-reject", + Short: "Create Selective Reject Criteria for a Workspace", + Long: "Create Selective Reject Criteria Settings for a Workspace.\n\nWith the Selective Reject feature, you can reject calls at specific times from specific callers. This setting takes precedence over Selectively Accept Calls.\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/workspaces/{workspaceId}/selectiveReject/criteria") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("scheduleName", scheduleName) + req.BodyString("scheduleType", scheduleType) + req.BodyString("scheduleLevel", scheduleLevel) + req.BodyString("callsFrom", callsFrom) + req.BodyBool("rejectEnabled", rejectEnabled, cmd.Flags().Changed("reject-enabled")) + req.BodyBool("anonymousCallersEnabled", anonymousCallersEnabled, cmd.Flags().Changed("anonymous-callers-enabled")) + req.BodyBool("unavailableCallersEnabled", unavailableCallersEnabled, cmd.Flags().Changed("unavailable-callers-enabled")) + req.BodyStringSlice("phoneNumbers", phoneNumbers) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().StringVar(&scheduleName, "schedule-name", "", "") + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "") + cmd.Flags().StringVar(&scheduleLevel, "schedule-level", "", "") + cmd.Flags().StringVar(&callsFrom, "calls-from", "", "") + cmd.Flags().BoolVar(&rejectEnabled, "reject-enabled", false, "") + cmd.Flags().BoolVar(&anonymousCallersEnabled, "anonymous-callers-enabled", false, "") + cmd.Flags().BoolVar(&unavailableCallersEnabled, "unavailable-callers-enabled", false, "") + cmd.Flags().StringSliceVar(&phoneNumbers, "phone-numbers", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspaceCallCmd.AddCommand(cmd) + } + + { // assign-unassign-numbers-associated + var workspaceId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "assign-unassign-numbers-associated", + Short: "Assign or Unassign numbers associated with a specific workspace", + Long: "Assign or unassign alternate phone numbers associated with a specific workspace.\n\nEach location has a set of phone numbers that can be assigned to people, workspaces, or features. Phone numbers must follow the E.164 format for all countries, except for the United States, which can also follow the National format. Active phone numbers are in service.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/workspaces/{workspaceId}/numbers") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspaceCallCmd.AddCommand(cmd) + } + + { // get-selective-accept-settings + var workspaceId string + var orgId string + cmd := &cobra.Command{ + Use: "get-selective-accept-settings", + Short: "Retrieve Selective Accept Settings for a Workspace", + Long: "Retrieve Selective Accept Settings for a Workspace.\n\nWith the Selective Accept feature, you can accept calls at specific times from specific callers.\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, read-only or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with a scope of `spark:workspaces_read` to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/workspaces/{workspaceId}/selectiveAccept") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + workspaceCallCmd.AddCommand(cmd) + } + + { // update-selective-accept-settings + var workspaceId string + var orgId string + var enabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-selective-accept-settings", + Short: "Modify Selective Accept Settings for a Workspace", + Long: "Modify Selective Accept Settings for a Workspace.\n\nWith the Selective Accept feature, you can accept calls at specific times from specific callers.\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/workspaces/{workspaceId}/selectiveAccept") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspaceCallCmd.AddCommand(cmd) + } + + { // get-selective-accept + var workspaceId string + var id string + var orgId string + cmd := &cobra.Command{ + Use: "get-selective-accept", + Short: "Retrieve Selective Accept Criteria for a Workspace", + Long: "Retrieve Selective Accept Criteria Settings for a Workspace.\n\nWith the Selective Accept feature, you can accept calls at specific times from specific callers.\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, read-only or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with a scope of `spark:workspaces_read` to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/workspaces/{workspaceId}/selectiveAccept/criteria/{id}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("id", id) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&id, "id", "", "Unique identifier for the criteria.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + workspaceCallCmd.AddCommand(cmd) + } + + { // update-selective-accept + var workspaceId string + var id string + var orgId string + var scheduleName string + var scheduleType string + var scheduleLevel string + var callsFrom string + var anonymousCallersEnabled bool + var unavailableCallersEnabled bool + var phoneNumbers []string + var acceptEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-selective-accept", + Short: "Modify Selective Accept Criteria for a Workspace", + Long: "Modify Selective Accept Criteria Settings for a Workspace.\n\nWith the Selective Accept feature, you can accept calls at specific times from specific callers\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/workspaces/{workspaceId}/selectiveAccept/criteria/{id}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("id", id) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("scheduleName", scheduleName) + req.BodyString("scheduleType", scheduleType) + req.BodyString("scheduleLevel", scheduleLevel) + req.BodyString("callsFrom", callsFrom) + req.BodyBool("anonymousCallersEnabled", anonymousCallersEnabled, cmd.Flags().Changed("anonymous-callers-enabled")) + req.BodyBool("unavailableCallersEnabled", unavailableCallersEnabled, cmd.Flags().Changed("unavailable-callers-enabled")) + req.BodyStringSlice("phoneNumbers", phoneNumbers) + req.BodyBool("acceptEnabled", acceptEnabled, cmd.Flags().Changed("accept-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&id, "id", "", "Unique identifier for the criteria.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().StringVar(&scheduleName, "schedule-name", "", "") + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "") + cmd.Flags().StringVar(&scheduleLevel, "schedule-level", "", "") + cmd.Flags().StringVar(&callsFrom, "calls-from", "", "") + cmd.Flags().BoolVar(&anonymousCallersEnabled, "anonymous-callers-enabled", false, "") + cmd.Flags().BoolVar(&unavailableCallersEnabled, "unavailable-callers-enabled", false, "") + cmd.Flags().StringSliceVar(&phoneNumbers, "phone-numbers", nil, "") + cmd.Flags().BoolVar(&acceptEnabled, "accept-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspaceCallCmd.AddCommand(cmd) + } + + { // delete-selective-accept + var workspaceId string + var id string + var orgId string + cmd := &cobra.Command{ + Use: "delete-selective-accept", + Short: "Delete Selective Accept Criteria for a Workspace", + Long: "Delete Selective Accept criteria Settings for a workspace.\n\nWith the Selective Accept feature, you can accept calls at specific times from specific callers.\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/workspaces/{workspaceId}/selectiveAccept/criteria/{id}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("id", id) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&id, "id", "", "Unique identifier for the criteria.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + workspaceCallCmd.AddCommand(cmd) + } + + { // create-selective-accept + var workspaceId string + var orgId string + var scheduleName string + var scheduleType string + var scheduleLevel string + var callsFrom string + var acceptEnabled bool + var anonymousCallersEnabled bool + var unavailableCallersEnabled bool + var phoneNumbers []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-selective-accept", + Short: "Create Selective Accept Criteria for a Workspace", + Long: "Create Selective Accept Criteria Settings for a Workspace.\n\nWith the Selective Accept feature, you can reject calls at specific times from specific callers. This setting takes precedence over Selectively Accept Calls.\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/workspaces/{workspaceId}/selectiveAccept/criteria") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("scheduleName", scheduleName) + req.BodyString("scheduleType", scheduleType) + req.BodyString("scheduleLevel", scheduleLevel) + req.BodyString("callsFrom", callsFrom) + req.BodyBool("acceptEnabled", acceptEnabled, cmd.Flags().Changed("accept-enabled")) + req.BodyBool("anonymousCallersEnabled", anonymousCallersEnabled, cmd.Flags().Changed("anonymous-callers-enabled")) + req.BodyBool("unavailableCallersEnabled", unavailableCallersEnabled, cmd.Flags().Changed("unavailable-callers-enabled")) + req.BodyStringSlice("phoneNumbers", phoneNumbers) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().StringVar(&scheduleName, "schedule-name", "", "") + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "") + cmd.Flags().StringVar(&scheduleLevel, "schedule-level", "", "") + cmd.Flags().StringVar(&callsFrom, "calls-from", "", "") + cmd.Flags().BoolVar(&acceptEnabled, "accept-enabled", false, "") + cmd.Flags().BoolVar(&anonymousCallersEnabled, "anonymous-callers-enabled", false, "") + cmd.Flags().BoolVar(&unavailableCallersEnabled, "unavailable-callers-enabled", false, "") + cmd.Flags().StringSliceVar(&phoneNumbers, "phone-numbers", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspaceCallCmd.AddCommand(cmd) + } + + { // get-priority-alert-settings + var workspaceId string + var orgId string + cmd := &cobra.Command{ + Use: "get-priority-alert-settings", + Short: "Retrieve Priority Alert Settings for a Workspace", + Long: "Retrieve Priority Alert Settings for a Workspace.\n\nThe priority alert feature enables administrators to configure priority alert settings for a professional workspace.\n\nThis API requires a full, user, or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with a scope of `spark:workspaces_read` to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/workspaces/{workspaceId}/priorityAlert") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + workspaceCallCmd.AddCommand(cmd) + } + + { // update-priority-alert-settings + var workspaceId string + var orgId string + var enabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-priority-alert-settings", + Short: "Configure Priority Alert Settings for a Workspace", + Long: "Configure a workspace Priority Alert Settings.\n\nThe priority alert feature enables administrator to configure priority alert settings for a professional workspace.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:workspaces_write` scope that can be used to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/workspaces/{workspaceId}/priorityAlert") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspaceCallCmd.AddCommand(cmd) + } + + { // get-priority-alert + var workspaceId string + var id string + var orgId string + cmd := &cobra.Command{ + Use: "get-priority-alert", + Short: "Retrieve Priority Alert Criteria for a Workspace", + Long: "Retrieve Priority Alert Criteria Settings for a Workspace.\n\nThe priority alert feature enables administrators to configure priority alert settings for a professional workspace.\nPriority Alert Criteria (Schedules) can also be set up to alert these phones during certain times of the day or days of the week.\n\nThis API requires a full, user, or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with a scope of `spark:workspaces_read` to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/workspaces/{workspaceId}/priorityAlert/criteria/{id}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("id", id) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&id, "id", "", "Unique identifier for the criteria.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + workspaceCallCmd.AddCommand(cmd) + } + + { // update-priority-alert + var workspaceId string + var id string + var orgId string + var scheduleName string + var scheduleType string + var scheduleLevel string + var callsFrom string + var anonymousCallersEnabled bool + var unavailableCallersEnabled bool + var phoneNumbers []string + var notificationEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-priority-alert", + Short: "Modify Priority Alert Criteria for a Workspace", + Long: "Modify Priority Alert Criteria Settings for a Workspace.\n\nThe priority alert feature enables administrators to configure priority alert settings for a professional workspace.\nPriority Alert Criteria (Schedules) can also be set up to alert these phones during certain times of the day or days of the week.\n\nThis API requires a full, user, or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/workspaces/{workspaceId}/priorityAlert/criteria/{id}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("id", id) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("scheduleName", scheduleName) + req.BodyString("scheduleType", scheduleType) + req.BodyString("scheduleLevel", scheduleLevel) + req.BodyString("callsFrom", callsFrom) + req.BodyBool("anonymousCallersEnabled", anonymousCallersEnabled, cmd.Flags().Changed("anonymous-callers-enabled")) + req.BodyBool("unavailableCallersEnabled", unavailableCallersEnabled, cmd.Flags().Changed("unavailable-callers-enabled")) + req.BodyStringSlice("phoneNumbers", phoneNumbers) + req.BodyBool("notificationEnabled", notificationEnabled, cmd.Flags().Changed("notification-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&id, "id", "", "Unique identifier for the criteria.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().StringVar(&scheduleName, "schedule-name", "", "") + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "") + cmd.Flags().StringVar(&scheduleLevel, "schedule-level", "", "") + cmd.Flags().StringVar(&callsFrom, "calls-from", "", "") + cmd.Flags().BoolVar(&anonymousCallersEnabled, "anonymous-callers-enabled", false, "") + cmd.Flags().BoolVar(&unavailableCallersEnabled, "unavailable-callers-enabled", false, "") + cmd.Flags().StringSliceVar(&phoneNumbers, "phone-numbers", nil, "") + cmd.Flags().BoolVar(¬ificationEnabled, "notification-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspaceCallCmd.AddCommand(cmd) + } + + { // delete-priority-alert + var workspaceId string + var id string + var orgId string + cmd := &cobra.Command{ + Use: "delete-priority-alert", + Short: "Delete Priority Alert Criteria for a Workspace", + Long: "Delete Priority Alert criteria Settings for a workspace.\n\nThe priority alert feature enables administrators to configure priority alert settings for a professional workspace.\nPriority Alert Criteria (Schedules) can also be set up to alert these phones during certain times of the day or days of the week.\n\nThis API requires a full, user, or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/workspaces/{workspaceId}/priorityAlert/criteria/{id}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("id", id) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&id, "id", "", "Unique identifier for the criteria.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + workspaceCallCmd.AddCommand(cmd) + } + + { // create-priority-alert + var workspaceId string + var orgId string + var scheduleName string + var scheduleType string + var scheduleLevel string + var callsFrom string + var notificationEnabled bool + var anonymousCallersEnabled bool + var unavailableCallersEnabled bool + var phoneNumbers []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-priority-alert", + Short: "Create Priority Alert Criteria for a Workspace", + Long: "Create Priority Alert Criteria Settings for a Workspace.\n\nThe priority alert feature enables administrators to configure priority alert settings for a professional workspace.\nPriority Alert Criteria (Schedules) can also be set up to alert these phones during certain times of the day or days of the week.\n\nThis API requires a full, user, or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/workspaces/{workspaceId}/priorityAlert/criteria") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("scheduleName", scheduleName) + req.BodyString("scheduleType", scheduleType) + req.BodyString("scheduleLevel", scheduleLevel) + req.BodyString("callsFrom", callsFrom) + req.BodyBool("notificationEnabled", notificationEnabled, cmd.Flags().Changed("notification-enabled")) + req.BodyBool("anonymousCallersEnabled", anonymousCallersEnabled, cmd.Flags().Changed("anonymous-callers-enabled")) + req.BodyBool("unavailableCallersEnabled", unavailableCallersEnabled, cmd.Flags().Changed("unavailable-callers-enabled")) + req.BodyStringSlice("phoneNumbers", phoneNumbers) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().StringVar(&scheduleName, "schedule-name", "", "") + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "") + cmd.Flags().StringVar(&scheduleLevel, "schedule-level", "", "") + cmd.Flags().StringVar(&callsFrom, "calls-from", "", "") + cmd.Flags().BoolVar(¬ificationEnabled, "notification-enabled", false, "") + cmd.Flags().BoolVar(&anonymousCallersEnabled, "anonymous-callers-enabled", false, "") + cmd.Flags().BoolVar(&unavailableCallersEnabled, "unavailable-callers-enabled", false, "") + cmd.Flags().StringSliceVar(&phoneNumbers, "phone-numbers", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspaceCallCmd.AddCommand(cmd) + } + + { // get-selective-forward-settings + var workspaceId string + var orgId string + cmd := &cobra.Command{ + Use: "get-selective-forward-settings", + Short: "Retrieve Selective Forward Settings for a Workspace", + Long: "Retrieve Selective Forward Call Settings for a Workspace.\n\nWith the Selective Forward feature, you can forward calls at specific times from specific callers. This setting takes precedence over call forwarding.\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, read-only or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with a scope of `spark:workspaces_read` to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/workspaces/{workspaceId}/selectiveForward") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + workspaceCallCmd.AddCommand(cmd) + } + + { // update-selective-forward-settings + var workspaceId string + var orgId string + var enabled bool + var defaultPhoneNumberToForward string + var ringReminderEnabled bool + var destinationVoicemailEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-selective-forward-settings", + Short: "Modify Selective Forward Settings for a Workspace", + Long: "Modify Selective Forward Call Settings for a Workspace.\n\nWith the Selective Forward feature, you can forward calls at specific times from specific callers. This setting takes precedence over call forwarding.\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/workspaces/{workspaceId}/selectiveForward") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + req.BodyString("defaultPhoneNumberToForward", defaultPhoneNumberToForward) + req.BodyBool("ringReminderEnabled", ringReminderEnabled, cmd.Flags().Changed("ring-reminder-enabled")) + req.BodyBool("destinationVoicemailEnabled", destinationVoicemailEnabled, cmd.Flags().Changed("destination-voicemail-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().StringVar(&defaultPhoneNumberToForward, "default-phone-number-to-forward", "", "") + cmd.Flags().BoolVar(&ringReminderEnabled, "ring-reminder-enabled", false, "") + cmd.Flags().BoolVar(&destinationVoicemailEnabled, "destination-voicemail-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspaceCallCmd.AddCommand(cmd) + } + + { // get-selective-forward + var workspaceId string + var id string + var orgId string + cmd := &cobra.Command{ + Use: "get-selective-forward", + Short: "Retrieve Selective Forward Criteria for a Workspace", + Long: "Retrieve Selective Forward Criteria Settings for a Workspace.\n\nWith the Selective Forward feature, you can forward calls at specific times from specific callers. This setting takes precedence over call forwarding.\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, read-only or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with a scope of `spark:workspaces_read` to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/workspaces/{workspaceId}/selectiveForward/criteria/{id}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("id", id) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&id, "id", "", "Unique identifier for the criteria.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + workspaceCallCmd.AddCommand(cmd) + } + + { // update-selective-forward + var workspaceId string + var id string + var orgId string + var callsFrom string + var forwardToPhoneNumber string + var destinationVoicemailEnabled bool + var scheduleName string + var scheduleType string + var scheduleLevel string + var anonymousCallersEnabled bool + var unavailableCallersEnabled bool + var numbers []string + var forwardEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-selective-forward", + Short: "Modify Selective Forward Criteria for a Workspace", + Long: "Modify Selective Forward Call Criteria Settings for a Workspace.\n\nWith the Selective Forward feature, you can forward calls at specific times from specific callers. This setting takes precedence over call forwarding.\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/workspaces/{workspaceId}/selectiveForward/criteria/{id}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("id", id) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callsFrom", callsFrom) + req.BodyString("forwardToPhoneNumber", forwardToPhoneNumber) + req.BodyBool("destinationVoicemailEnabled", destinationVoicemailEnabled, cmd.Flags().Changed("destination-voicemail-enabled")) + req.BodyString("scheduleName", scheduleName) + req.BodyString("scheduleType", scheduleType) + req.BodyString("scheduleLevel", scheduleLevel) + req.BodyBool("anonymousCallersEnabled", anonymousCallersEnabled, cmd.Flags().Changed("anonymous-callers-enabled")) + req.BodyBool("unavailableCallersEnabled", unavailableCallersEnabled, cmd.Flags().Changed("unavailable-callers-enabled")) + req.BodyStringSlice("numbers", numbers) + req.BodyBool("forwardEnabled", forwardEnabled, cmd.Flags().Changed("forward-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&id, "id", "", "Unique identifier for the criteria.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().StringVar(&callsFrom, "calls-from", "", "") + cmd.Flags().StringVar(&forwardToPhoneNumber, "forward-to-phone-number", "", "") + cmd.Flags().BoolVar(&destinationVoicemailEnabled, "destination-voicemail-enabled", false, "") + cmd.Flags().StringVar(&scheduleName, "schedule-name", "", "") + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "") + cmd.Flags().StringVar(&scheduleLevel, "schedule-level", "", "") + cmd.Flags().BoolVar(&anonymousCallersEnabled, "anonymous-callers-enabled", false, "") + cmd.Flags().BoolVar(&unavailableCallersEnabled, "unavailable-callers-enabled", false, "") + cmd.Flags().StringSliceVar(&numbers, "numbers", nil, "") + cmd.Flags().BoolVar(&forwardEnabled, "forward-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspaceCallCmd.AddCommand(cmd) + } + + { // delete-selective-forward + var workspaceId string + var id string + var orgId string + cmd := &cobra.Command{ + Use: "delete-selective-forward", + Short: "Delete Selective Forward Criteria for a Workspace", + Long: "Delete Selective Forward Call criteria Settings for a workspace.\n\nWith the Selective Forward feature, you can forward calls at specific times from specific callers. This setting takes precedence over call forwarding.\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/workspaces/{workspaceId}/selectiveForward/criteria/{id}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("id", id) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&id, "id", "", "Unique identifier for the criteria.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + workspaceCallCmd.AddCommand(cmd) + } + + { // create-selective-forward + var workspaceId string + var orgId string + var callsFrom string + var forwardToPhoneNumber string + var destinationVoicemailEnabled bool + var scheduleName string + var scheduleType string + var scheduleLevel string + var anonymousCallersEnabled bool + var unavailableCallersEnabled bool + var numbers []string + var forwardEnabled bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-selective-forward", + Short: "Create Selective Forward Criteria for a Workspace", + Long: "Create Selective Forward Call Criteria Settings for a Workspace.\n\nWith the Selective Forward feature, you can forward calls at specific times from specific callers. This setting takes precedence over call forwarding.\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/workspaces/{workspaceId}/selectiveForward/criteria") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("callsFrom", callsFrom) + req.BodyString("forwardToPhoneNumber", forwardToPhoneNumber) + req.BodyBool("destinationVoicemailEnabled", destinationVoicemailEnabled, cmd.Flags().Changed("destination-voicemail-enabled")) + req.BodyString("scheduleName", scheduleName) + req.BodyString("scheduleType", scheduleType) + req.BodyString("scheduleLevel", scheduleLevel) + req.BodyBool("anonymousCallersEnabled", anonymousCallersEnabled, cmd.Flags().Changed("anonymous-callers-enabled")) + req.BodyBool("unavailableCallersEnabled", unavailableCallersEnabled, cmd.Flags().Changed("unavailable-callers-enabled")) + req.BodyStringSlice("numbers", numbers) + req.BodyBool("forwardEnabled", forwardEnabled, cmd.Flags().Changed("forward-enabled")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.") + cmd.Flags().StringVar(&callsFrom, "calls-from", "", "") + cmd.Flags().StringVar(&forwardToPhoneNumber, "forward-to-phone-number", "", "") + cmd.Flags().BoolVar(&destinationVoicemailEnabled, "destination-voicemail-enabled", false, "") + cmd.Flags().StringVar(&scheduleName, "schedule-name", "", "") + cmd.Flags().StringVar(&scheduleType, "schedule-type", "", "") + cmd.Flags().StringVar(&scheduleLevel, "schedule-level", "", "") + cmd.Flags().BoolVar(&anonymousCallersEnabled, "anonymous-callers-enabled", false, "") + cmd.Flags().BoolVar(&unavailableCallersEnabled, "unavailable-callers-enabled", false, "") + cmd.Flags().StringSliceVar(&numbers, "numbers", nil, "") + cmd.Flags().BoolVar(&forwardEnabled, "forward-enabled", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspaceCallCmd.AddCommand(cmd) + } + + { // get-fax-available-numbers + var workspaceId string + var orgId string + var max string + var start string + var phoneNumber string + cmd := &cobra.Command{ + Use: "get-fax-available-numbers", + Short: "Get Workspace Fax Message Available Phone Numbers", + Long: "List standard numbers that are available to be assigned as a workspace's FAX message number.\nThese numbers are associated with the location of the workspace specified in the request URL, can be active or inactive, and are unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.\n\n
Only available for workspaces with the professional license entitlement.
", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/workspaces/{workspaceId}/faxMessage/availableNumbers") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("phoneNumber", phoneNumber) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "List numbers for this organization.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of phone numbers returned to this maximum count. The default is 2000.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching phone numbers. The default is 0.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array.") + workspaceCallCmd.AddCommand(cmd) + } + + { // get-secondary-available-numbers + var workspaceId string + var orgId string + var max string + var start string + var phoneNumber string + cmd := &cobra.Command{ + Use: "get-secondary-available-numbers", + Short: "Get Workspace Secondary Available Phone Numbers", + Long: "List standard numbers that are available to be assigned as a workspace's secondary number.\nThese numbers are associated with the location of the workspace specified in the request URL, can be active or inactive, and are unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.\n\n
Only available for workspaces with the professional license entitlement.
", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/workspaces/{workspaceId}/secondary/availableNumbers") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("phoneNumber", phoneNumber) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "List numbers for this organization.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of phone numbers returned to this maximum count. The default is 2000.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of matching phone numbers. The default is 0.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array.") + workspaceCallCmd.AddCommand(cmd) + } + +} diff --git a/cmd/calling/workspaces.go b/cmd/calling/workspaces.go new file mode 100644 index 0000000..d68b117 --- /dev/null +++ b/cmd/calling/workspaces.go @@ -0,0 +1,264 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package calling + +import ( + "fmt" + "strconv" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa + +var workspacesCmd = &cobra.Command{ + Use: "workspaces", + Short: "Workspaces commands", +} + +func init() { + cmd.CallingCmd.AddCommand(workspacesCmd) + + { // list + var orgId string + var locationId string + var workspaceLocationId string + var floorId string + var displayName string + var capacity string + var typeVal string + var start string + var max string + var calling string + var supportedDevices string + var calendar string + var deviceHostedMeetingsEnabled string + var devicePlatform string + var healthLevel string + var includeDevices string + var includeCapabilities string + var plannedMaintenance string + var customAttribute string + cmd := &cobra.Command{ + Use: "list", + Short: "List Workspaces", + Long: "List workspaces.\n\nUse query parameters to filter the response. The `orgId` parameter can only be used by admin users of another organization (such as partners). The `locationId`, `workspaceLocationId`, `indoorNavigation`, `floorId`, `capacity` and `type` fields will only be present for workspaces that have a value set for them. The special values `notSet` (for filtering on category) and `-1` (for filtering on capacity) can be used to filter for workspaces without a type and/or capacity.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/workspaces") + req.QueryParam("orgId", orgId) + req.QueryParam("locationId", locationId) + req.QueryParam("workspaceLocationId", workspaceLocationId) + req.QueryParam("floorId", floorId) + req.QueryParam("displayName", displayName) + req.QueryParam("capacity", capacity) + req.QueryParam("type", typeVal) + req.QueryParam("start", start) + req.QueryParam("max", max) + req.QueryParam("calling", calling) + req.QueryParam("supportedDevices", supportedDevices) + req.QueryParam("calendar", calendar) + req.QueryParam("deviceHostedMeetingsEnabled", deviceHostedMeetingsEnabled) + req.QueryParam("devicePlatform", devicePlatform) + req.QueryParam("healthLevel", healthLevel) + req.QueryParam("includeDevices", includeDevices) + req.QueryParam("includeCapabilities", includeCapabilities) + req.QueryParam("plannedMaintenance", plannedMaintenance) + req.QueryParam("customAttribute", customAttribute) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List workspaces in this organization. Only admin users of another organization (such as partners) may use this parameter.") + cmd.Flags().StringVar(&locationId, "location-id", "", "Location associated with the workspace. Values must originate from the /locations API and not the legacy /workspaceLocations API.") + cmd.Flags().StringVar(&workspaceLocationId, "workspace-location-id", "", "Location associated with the workspace. Both values from the /locations API and the legacy /workspaceLocations API are supported. This field is deprecated and integrations should prefer `locationId` going forward.") + cmd.Flags().StringVar(&floorId, "floor-id", "", "Floor associated with the workspace.") + cmd.Flags().StringVar(&displayName, "display-name", "", "List workspaces by display name.") + cmd.Flags().StringVar(&capacity, "capacity", "", "List workspaces with the given capacity. Must be -1 or higher. A value of -1 lists workspaces with no capacity set.") + cmd.Flags().StringVar(&typeVal, "type", "", "List workspaces by type.") + cmd.Flags().StringVar(&start, "start", "", "Offset. Default is 0.") + cmd.Flags().StringVar(&max, "max", "", "Limit the maximum number of workspaces in the response.") + cmd.Flags().StringVar(&calling, "calling", "", "List workspaces by calling type.") + cmd.Flags().StringVar(&supportedDevices, "supported-devices", "", "List workspaces by supported devices.") + cmd.Flags().StringVar(&calendar, "calendar", "", "List workspaces by calendar type.") + cmd.Flags().StringVar(&deviceHostedMeetingsEnabled, "device-hosted-meetings-enabled", "", "List workspaces enabled for device hosted meetings.") + cmd.Flags().StringVar(&devicePlatform, "device-platform", "", "List workspaces by device platform.") + cmd.Flags().StringVar(&healthLevel, "health-level", "", "List workspaces by health level.") + cmd.Flags().StringVar(&includeDevices, "include-devices", "", "Flag identifying whether to include the devices associated with the workspace in the response.") + cmd.Flags().StringVar(&includeCapabilities, "include-capabilities", "", "Flag identifying whether to include the workspace capabilities in the response.") + cmd.Flags().StringVar(&plannedMaintenance, "planned-maintenance", "", "List workspaces with given maintenance mode.") + cmd.Flags().StringVar(&customAttribute, "custom-attribute", "", "List workspaces with given custom attribute key.") + workspacesCmd.AddCommand(cmd) + } + + { // create + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a Workspace", + Long: "Create a workspace.\n\nThe `locationId`, `workspaceLocationId`, `floorId`, `indoorNavigation`, `capacity`, `type`, `notes` and `hotdeskingStatus` parameters are optional, and omitting them will result in the creation of a workspace without these values set, or set to their default. A `locationId` must be provided when the `floorId` is set. Calendar and calling can also be set for a new workspace. Omitting them will default to free calling and no calendaring. The `orgId` parameter can only be used by admin users of another organization (such as partners).\n\n* Information for Webex Calling fields may be found here: [locations](/docs/api/v1/locations/list-locations), [available numbers](/docs/api/v1/numbers/get-phone-numbers-for-an-organization-with-given-criterias) and [licenses](/docs/api/v1/licenses).\n\n* The `locationId` and `supportedDevices` fields cannot be changed once configured.\n\n* When creating a `webexCalling` workspace that is not hot desk only, a `locationId` and either a `phoneNumber` or `extension` or both is required. Furthermore, it is possible to set the `licenses` field with a list of Webex Calling license IDs, if desired. If multiple license IDs are provided, the oldest suitable one will be applied. If no licenses are supplied, the oldest suitable one from the active subscriptions will be automaticaly applied.\n\n* When creating a hot desk only workspace, `phoneNumber` and `extension` fields are not applicable. Furthermore, `deviceHostedMeetingsEnabled`, and `calendar` services are not applicable. If any of these fields are provided the API will return an error. The `calling` type is `webexCalling`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/workspaces") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspacesCmd.AddCommand(cmd) + } + + { // get + var workspaceId string + var includeDevices string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Workspace Details", + Long: "Shows details for a workspace, by ID.\n\nThe `locationId`, `workspaceLocationId`, `floorId`, `indoorNavigation`, `capacity`, `type` and `notes` fields will only be present if they have been set for the workspace. Specify the workspace ID in the `workspaceId` parameter in the URI.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/workspaces/{workspaceId}") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("includeDevices", includeDevices) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "(Required) A unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&includeDevices, "include-devices", "", "Flag identifying whether to include the devices associated with the workspace in the response.") + workspacesCmd.AddCommand(cmd) + } + + { // update + var workspaceId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Short: "Update a Workspace", + Long: "Updates details for a workspace by ID.\n\nSpecify the workspace ID in the `workspaceId` parameter in the URI. Include all details for the workspace that are present in a [GET request for the workspace details](/docs/api/v1/workspaces/get-workspace-details). Not including the optional `capacity`, `type` or `notes` fields will result in the fields no longer being defined for the workspace. A `locationId` must be provided when the `floorId` is set. The `locationId`, `workspaceLocationId`, `floorId`, `supportedDevices`, `calendar` and `calling` fields do not change when omitted from the update request.\n\n* Information for Webex Calling fields may be found here: [locations](/docs/api/v1/locations/list-locations) and [available numbers](/docs/api/v1/numbers/get-phone-numbers-for-an-organization-with-given-criterias).\n\n* Updating the `calling` parameter is only supported if the existing `calling` type is `freeCalling`, `none`, `thirdPartySipCalling` or `webexCalling`.\n\n* Updating the `calling` parameter to `none`, `thirdPartySipCalling` or `webexCalling` is not supported if the workspace contains any devices.\n\n* The `locationId` and `supportedDevices` fields cannot be changed once configured.\n\n* When updating `webexCalling` information on a workspace that is not hot desk only, a `locationId` and either a `phoneNumber` or `extension` or both is required. Furthermore, the `licenses` field can be set with a list of Webex Calling license IDs, if desired. If multiple license IDs are provided, the oldest suitable one will be applied. If a previously applied license ID is omitted, it will be replaced with one from the list provided. If the `licenses` field is omitted, the current calling license will be retained.\n\n* When specifying a hot desk only license on a hot desk only workspace, `deviceHostedMeetingsEnabled`, and `calendar` services are not supported and will be automatically disabled. In addition to this, the `phoneNumber` and `extension` will be removed from the workspace. Attempting to enable any of these services, or provide a `phoneNumber` or `extension` will result in an error. The `calling` type for these requests is `webexCalling`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/workspaces/{workspaceId}") + req.PathParam("workspaceId", workspaceId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "A unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspacesCmd.AddCommand(cmd) + } + + { // delete + var workspaceId string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete a Workspace", + Long: "Deletes a workspace by ID.\n\nAlso deletes all devices associated with the workspace. Any deleted devices will need to be reactivated. Specify the workspace ID in the `workspaceId` parameter in the URI.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/workspaces/{workspaceId}") + req.PathParam("workspaceId", workspaceId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "A unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + workspacesCmd.AddCommand(cmd) + } + + { // get-capabilities + var workspaceId string + cmd := &cobra.Command{ + Use: "get-capabilities", + Short: "Get Workspace Capabilities", + Long: "Shows the capabilities for a workspace by ID.\n\nReturns a set of capabilities, including whether or not the capability is supported by any device in the workspace, and if the capability is configured (enabled). For example for a specific capability like `occupancyDetection`, the API will return if the capability is supported and/or configured such that occupancy detection data will flow from the workspace (device) to the cloud. Specify the workspace ID in the `workspaceId` parameter in the URI.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/workspaces/{workspaceId}/capabilities") + req.PathParam("workspaceId", workspaceId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "A unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + workspacesCmd.AddCommand(cmd) + } + + { // get-2 + var workspaceId string + var includeDevices string + var includeCapabilities string + cmd := &cobra.Command{ + Use: "get-2", + Short: "Get Workspace Details", + Long: "Shows details for a workspace, by ID.\n\nThe `locationId`, `workspaceLocationId`, `floorId`, `indoorNavigation`, `capacity`, `type` and `notes` fields will only be present if they have been set for the workspace. Specify the workspace ID in the `workspaceId` parameter in the URI.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/workspaces/{workspaceId}") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("includeDevices", includeDevices) + req.QueryParam("includeCapabilities", includeCapabilities) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "A unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&includeDevices, "include-devices", "", "Flag identifying whether to include the devices associated with the workspace in the response.") + cmd.Flags().StringVar(&includeCapabilities, "include-capabilities", "", "Flag identifying whether to include the workspace capabilities in the response.") + workspacesCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/activities.go b/cmd/cc/activities.go new file mode 100644 index 0000000..afecec2 --- /dev/null +++ b/cmd/cc/activities.go @@ -0,0 +1,125 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var activitiesCmd = &cobra.Command{ + Use: "activities", + Short: "Activities commands", +} + +func init() { + cmd.CcCmd.AddCommand(activitiesCmd) + + { // list-definitions + var orgid string + cmd := &cobra.Command{ + Use: "list-definitions", + Short: "List Activity Definitions", + Long: "List all available activity types with their full schemas, including inputs, outputs, ports, and descriptions. The response is sufficient on its own to construct nodes \u2014 there is no separate schema endpoint.\n\nScope: `cjp:config_read`", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/{orgid}/project/{projectId}/v2/activities") + req.PathParam("orgid", orgid) + req.PathParam("projectId", "5e5c9ad6d61f870d6d778c1b") + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID.") + cmd.MarkFlagRequired("orgid") + activitiesCmd.AddCommand(cmd) + } + + { // describe + var orgid string + var activityName string + cmd := &cobra.Command{ + Use: "describe", + Short: "Describe an Activity", + Long: "Retrieve a single activity's full definition, including inputs, outputs, named ports, and the JSON Schema for its inputs \u2014 all returned inline.\n\nScope: `cjp:config_read`", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/{orgid}/project/{projectId}/v2/activities/{activityName}") + req.PathParam("orgid", orgid) + req.PathParam("projectId", "5e5c9ad6d61f870d6d778c1b") + req.PathParam("activityName", activityName) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&activityName, "activity-name", "", "Activity type name (e.g., `play-message`, `queue-contact`).") + cmd.MarkFlagRequired("activity-name") + activitiesCmd.AddCommand(cmd) + } + + { // get-input-choices + var orgid string + var activityName string + var inputName string + var search string + var validate string + var parentValue string + var parentInputName string + cmd := &cobra.Command{ + Use: "get-input-choices", + Short: "Get Activity Input Choices", + Long: "Resolve choices for an activity input. Use this when an activity input requires a value from a predefined or dynamically resolved set (e.g., available queues, audio files, agents).\n\nThis endpoint is only valid for inputs that expose choices (an input whose definition includes `allowedValues` or a `choicesEndpoint`, as returned by `describeActivity`). Calling it for an input that does not support choices returns 400.\n\nPass `search` to filter the choices (type-ahead). Add `validate=true` together with `search` to do a point-lookup of a single value instead of filtering \u2014 the match is against the choice's `value` (its ID), not its display `name`. For a cascading input whose allowed values depend on a sibling input, supply the parent with `parentInputName` and `parentValue`; otherwise a cascading input returns 400.\n\nFiltering and validation apply only to dynamic (`choicesEndpoint`-backed) inputs. A static input always returns its full enumerated list regardless of `search`/`validate`.\n\nScope: `cjp:config_read`", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/{orgid}/project/{projectId}/v2/activities/{activityName}/inputs/{inputName}/choices") + req.PathParam("orgid", orgid) + req.PathParam("projectId", "5e5c9ad6d61f870d6d778c1b") + req.PathParam("activityName", activityName) + req.PathParam("inputName", inputName) + req.QueryParam("search", search) + req.QueryParam("validate", validate) + req.QueryParam("parentValue", parentValue) + req.QueryParam("parentInputName", parentInputName) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&activityName, "activity-name", "", "Activity type name.") + cmd.MarkFlagRequired("activity-name") + cmd.Flags().StringVar(&inputName, "input-name", "", "Input field name. Must be an input that exposes choices (has `allowedValues` or a `choicesEndpoint`).") + cmd.MarkFlagRequired("input-name") + cmd.Flags().StringVar(&search, "search", "", "Search text used to filter the returned choices (type-ahead). When `validate=true`, this is instead the single value to look up.") + cmd.Flags().StringVar(&validate, "validate", "", "When `true` and `search` is supplied, performs a point-lookup of the single value in `search` (matched against the choice's `value`/ID) instead of filtering.") + cmd.Flags().StringVar(&parentValue, "parent-value", "", "Parent input value for a cascading/dynamic input (for example, the selected `channelType`).") + cmd.Flags().StringVar(&parentInputName, "parent-input-name", "", "Parent input name for a cascading/dynamic input. Required when `parentValue` is provided.") + activitiesCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/address_book.go b/cmd/cc/address_book.go new file mode 100644 index 0000000..eedb8ae --- /dev/null +++ b/cmd/cc/address_book.go @@ -0,0 +1,558 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + "strconv" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa + +var addressBookCmd = &cobra.Command{ + Use: "address-book", + Short: "AddressBook commands", +} + +func init() { + cmd.CcCmd.AddCommand(addressBookCmd) + + { // list + var orgid string + var filter string + var attributes string + var search string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "list", + Short: "List Address Book(s)", + Long: `Retrieve a list of Address Book(s) in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/v3/address-book") + req.PathParam("orgid", orgid) + req.QueryParam("filter", filter) + req.QueryParam("attributes", attributes) + req.QueryParam("search", search) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&filter, "filter", "", "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain space, and if so kindly bound it with quotes to apply filter. ") + cmd.Flags().StringVar(&attributes, "attributes", "", "Specify the attributes to be returned.Default all attributes are returned along with specified columns. All Attributes are supported") + cmd.Flags().StringVar(&search, "search", "", "Filter data based on the search keyword.Supported search columns(name, number) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\",\"number\");value==\"Cisco\" ") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + addressBookCmd.AddCommand(cmd) + } + + { // create + var orgid string + var name string + var parentType string + var organizationId string + var id string + var version int64 + var description string + var siteId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a new Address Book", + Long: `Create a new Address Book in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/v3/address-book") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("name", name) + req.BodyString("parentType", parentType) + req.BodyString("organizationId", organizationId) + req.BodyString("id", id) + req.BodyInt("version", version, cmd.Flags().Changed("version")) + req.BodyString("description", description) + req.BodyString("siteId", siteId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&parentType, "parent-type", "", "") + cmd.Flags().StringVar(&organizationId, "organization-id", "", "") + cmd.Flags().StringVar(&id, "id", "", "") + cmd.Flags().Int64Var(&version, "version", 0, "") + cmd.Flags().StringVar(&description, "description", "", "") + cmd.Flags().StringVar(&siteId, "site-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + addressBookCmd.AddCommand(cmd) + } + + { // bulk-export + var orgid string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "bulk-export", + Short: "Bulk export Address Book(s)", + Long: `Export all Address Book(s) in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/address-book/bulk-export") + req.PathParam("orgid", orgid) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + addressBookCmd.AddCommand(cmd) + } + + { // create-entry + var orgid string + var addressBookId string + var name string + var number string + var organizationId string + var id string + var version int64 + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-entry", + Short: "Create a new Address Book Entry", + Long: `Create a new Address Book Entry in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/address-book/{addressBookId}/entry") + req.PathParam("orgid", orgid) + req.PathParam("addressBookId", addressBookId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("name", name) + req.BodyString("number", number) + req.BodyString("organizationId", organizationId) + req.BodyString("id", id) + req.BodyInt("version", version, cmd.Flags().Changed("version")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&addressBookId, "address-book-id", "", "Resource ID of the Address Book") + cmd.MarkFlagRequired("address-book-id") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&number, "number", "", "") + cmd.Flags().StringVar(&organizationId, "organization-id", "", "") + cmd.Flags().StringVar(&id, "id", "", "") + cmd.Flags().Int64Var(&version, "version", 0, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + addressBookCmd.AddCommand(cmd) + } + + { // bulk-save-entry + var orgid string + var addressBookId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "bulk-save-entry", + Short: "Bulk save Address Book Entry(s)", + Long: `Create, Update or delete Address Book Entry(s) in bulk for an Address Book in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/address-book/{addressBookId}/entry/bulk") + req.PathParam("orgid", orgid) + req.PathParam("addressBookId", addressBookId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&addressBookId, "address-book-id", "", "Resource ID of the Address Book") + cmd.MarkFlagRequired("address-book-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + addressBookCmd.AddCommand(cmd) + } + + { // get-entry-id + var orgid string + var addressBookId string + var id string + cmd := &cobra.Command{ + Use: "get-entry-id", + Short: "Get specific Address Book Entry by ID", + Long: `Retrieve an existing Address Book Entry by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/address-book/{addressBookId}/entry/{id}") + req.PathParam("orgid", orgid) + req.PathParam("addressBookId", addressBookId) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&addressBookId, "address-book-id", "", "Resource ID of the Address Book") + cmd.MarkFlagRequired("address-book-id") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Address Book Entry") + cmd.MarkFlagRequired("id") + addressBookCmd.AddCommand(cmd) + } + + { // update-entry-id + var orgid string + var addressBookId string + var id string + var name string + var number string + var organizationId string + var version int64 + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-entry-id", + Short: "Update specific Address Book Entry by ID", + Long: `Update an existing Address Book Entry by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PUT", "/organization/{orgid}/address-book/{addressBookId}/entry/{id}") + req.PathParam("orgid", orgid) + req.PathParam("addressBookId", addressBookId) + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("name", name) + req.BodyString("number", number) + req.BodyString("organizationId", organizationId) + req.BodyString("id", id) + req.BodyInt("version", version, cmd.Flags().Changed("version")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&addressBookId, "address-book-id", "", "Resource ID of the Address Book") + cmd.MarkFlagRequired("address-book-id") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Address Book Entry") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&number, "number", "", "") + cmd.Flags().StringVar(&organizationId, "organization-id", "", "") + cmd.Flags().Int64Var(&version, "version", 0, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + addressBookCmd.AddCommand(cmd) + } + + { // delete-entry-id + var orgid string + var addressBookId string + var id string + cmd := &cobra.Command{ + Use: "delete-entry-id", + Short: "Delete specific Address Book Entry by ID", + Long: `Delete an existing Address Book Entry by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/organization/{orgid}/address-book/{addressBookId}/entry/{id}") + req.PathParam("orgid", orgid) + req.PathParam("addressBookId", addressBookId) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&addressBookId, "address-book-id", "", "Resource ID of the Address Book") + cmd.MarkFlagRequired("address-book-id") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Address Book Entry") + cmd.MarkFlagRequired("id") + addressBookCmd.AddCommand(cmd) + } + + { // get + var orgid string + var id string + cmd := &cobra.Command{ + Use: "get", + Aliases: []string{"get-id"}, + Short: "Get specific Address Book by ID", + Long: `Retrieve an existing Address Book by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/v3/address-book/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Address Book.") + cmd.MarkFlagRequired("id") + addressBookCmd.AddCommand(cmd) + } + + { // update + var orgid string + var id string + var name string + var parentType string + var organizationId string + var version int64 + var description string + var siteId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Aliases: []string{"update-id"}, + Short: "Update specific Address Book by ID", + Long: `Update an existing Address Book by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PUT", "/organization/{orgid}/v3/address-book/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("name", name) + req.BodyString("parentType", parentType) + req.BodyString("organizationId", organizationId) + req.BodyString("id", id) + req.BodyInt("version", version, cmd.Flags().Changed("version")) + req.BodyString("description", description) + req.BodyString("siteId", siteId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Address Book.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&parentType, "parent-type", "", "") + cmd.Flags().StringVar(&organizationId, "organization-id", "", "") + cmd.Flags().Int64Var(&version, "version", 0, "") + cmd.Flags().StringVar(&description, "description", "", "") + cmd.Flags().StringVar(&siteId, "site-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + addressBookCmd.AddCommand(cmd) + } + + { // delete + var orgid string + var id string + cmd := &cobra.Command{ + Use: "delete", + Aliases: []string{"delete-id"}, + Short: "Delete specific Address Book by ID", + Long: `Delete an existing Address Book by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/organization/{orgid}/v3/address-book/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Address Book.") + cmd.MarkFlagRequired("id") + addressBookCmd.AddCommand(cmd) + } + + { // list-references + var orgid string + var id string + var typeVal string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "list-references", + Short: "List references for a specific Address Book", + Long: `Retrieve a list of all entities that have reference to an existing Address Book by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/address-book/{id}/incoming-references") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + req.QueryParam("type", typeVal) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "ID of this contact center resource.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&typeVal, "type", "", "Entity type of the other entity that has a reference to this specific entity.") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + addressBookCmd.AddCommand(cmd) + } + + { // list-entry + var orgid string + var addressBookId string + var filter string + var attributes string + var search string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "list-entry", + Short: "List Address Book Entry(s)", + Long: `Retrieve a list of Address Book Entry(s) in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/v2/address-book/{addressBookId}/entry") + req.PathParam("orgid", orgid) + req.PathParam("addressBookId", addressBookId) + req.QueryParam("filter", filter) + req.QueryParam("attributes", attributes) + req.QueryParam("search", search) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&addressBookId, "address-book-id", "", "Resource ID of the Address Book") + cmd.MarkFlagRequired("address-book-id") + cmd.Flags().StringVar(&filter, "filter", "", "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain space, and if so kindly bound it with quotes to apply filter. ") + cmd.Flags().StringVar(&attributes, "attributes", "", "Specify the attributes to be returned.Default all attributes are returned along with specified columns. All Attributes are supported") + cmd.Flags().StringVar(&search, "search", "", "Filter data based on the search keyword.Supported search columns(name, number) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\",\"number\");value==\"Cisco\" ") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + addressBookCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/agent_personal_greeting_files.go b/cmd/cc/agent_personal_greeting_files.go new file mode 100644 index 0000000..8e86123 --- /dev/null +++ b/cmd/cc/agent_personal_greeting_files.go @@ -0,0 +1,276 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var agentPersonalGreetingFilesCmd = &cobra.Command{ + Use: "agent-personal-greeting-files", + Short: "AgentPersonalGreetingFiles commands", +} + +func init() { + cmd.CcCmd.AddCommand(agentPersonalGreetingFilesCmd) + + { // create + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Aliases: []string{"create-v2-api"}, + Short: "Create a new Greeting File", + Long: `Create a new Greeting File in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/v2/agent-personal-greeting") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + agentPersonalGreetingFilesCmd.AddCommand(cmd) + } + + { // delete-references + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "delete-references", + Aliases: []string{"delete-references-1"}, + Short: "Delete references of an agent from greeting files", + Long: `Removes all references of the specified agent (ciUserId) from greeting files in the given organization. Typically invoked when an agent is deleted or unassigned. in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/agent-personal-greeting/delete-reference") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + agentPersonalGreetingFilesCmd.AddCommand(cmd) + } + + { // get + var orgid string + var id string + var includeUrl string + cmd := &cobra.Command{ + Use: "get", + Aliases: []string{"get-id", "get-id-v2-api"}, + Short: "Get specific Greeting File by ID", + Long: `Retrieve an existing Greeting File by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/v2/agent-personal-greeting/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + req.QueryParam("includeUrl", includeUrl) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Greeting File.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&includeUrl, "include-url", "", "Indicates whether the URL for downloading the greeting file should be included in the response.") + agentPersonalGreetingFilesCmd.AddCommand(cmd) + } + + { // update + var orgid string + var id string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Aliases: []string{"update-id", "update-id-v2-api"}, + Short: "Update specific Greeting File by ID", + Long: `Update an existing Greeting File by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PUT", "/organization/{orgid}/v2/agent-personal-greeting/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Greeting File.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + agentPersonalGreetingFilesCmd.AddCommand(cmd) + } + + { // delete + var orgid string + var id string + cmd := &cobra.Command{ + Use: "delete", + Aliases: []string{"delete-id", "delete-id-v2-api"}, + Short: "Delete specific Greeting File by ID", + Long: `Delete an existing Greeting File by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/organization/{orgid}/v2/agent-personal-greeting/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Greeting File.") + cmd.MarkFlagRequired("id") + agentPersonalGreetingFilesCmd.AddCommand(cmd) + } + + { // patch + var orgid string + var id string + var attributeTag string + var greetingPurposeId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "patch", + Aliases: []string{"patch-id", "patch-id-v2-api"}, + Short: "Partially update Greeting File by ID", + Long: `Partially update Greeting File by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PATCH", "/organization/{orgid}/v2/agent-personal-greeting/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("attributeTag", attributeTag) + req.BodyString("greetingPurposeId", greetingPurposeId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Greeting File.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&attributeTag, "attribute-tag", "", "") + cmd.Flags().StringVar(&greetingPurposeId, "greeting-purpose-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + agentPersonalGreetingFilesCmd.AddCommand(cmd) + } + + { // list + var orgid string + var filter string + var search string + var attributes string + var page string + var pageSize string + var includeAgentDetails string + cmd := &cobra.Command{ + Use: "list", + Short: "List Greeting Files", + Long: `Retrieve a list of Greeting Files in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/v3/agent-personal-greeting") + req.PathParam("orgid", orgid) + req.QueryParam("filter", filter) + req.QueryParam("search", search) + req.QueryParam("attributes", attributes) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + req.QueryParam("includeAgentDetails", includeAgentDetails) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&filter, "filter", "", "Specify a filter based on which the results will be fetched. Supported fields are: firstName, lastName, email, ciUserId, and attributeTag. The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. ") + cmd.Flags().StringVar(&search, "search", "", "Filter data based on the search keyword.Supported search columns(firstName, lastName, email, attributeTag) The examples below show some search queries - \"Cisco\" - field==\"firstName\";value==\"Cisco\" - fields=in=(\"firstName\",\"email\");value==\"Cisco\" ") + cmd.Flags().StringVar(&attributes, "attributes", "", "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported.") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + cmd.Flags().StringVar(&includeAgentDetails, "include-agent-details", "", "If includeAgentDetails is set to true, projection, filtering, searching, and sorting on the agent's firstName, lastName, and email will be enabled.") + agentPersonalGreetingFilesCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/agent_summaries.go b/cmd/cc/agent_summaries.go new file mode 100644 index 0000000..3fb49d8 --- /dev/null +++ b/cmd/cc/agent_summaries.go @@ -0,0 +1,101 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var agentSummariesCmd = &cobra.Command{ + Use: "agent-summaries", + Short: "AgentSummaries commands", +} + +func init() { + cmd.CcCmd.AddCommand(agentSummariesCmd) + + { // list + var orgId string + var interactionId string + var searchType string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "list", + Short: "List summaries", + Long: `Lists summaries based on the requested search type.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/summary/list") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("orgId", orgId) + req.BodyString("interactionId", interactionId) + req.BodyString("searchType", searchType) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "") + cmd.Flags().StringVar(&interactionId, "interaction-id", "", "") + cmd.Flags().StringVar(&searchType, "search-type", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + agentSummariesCmd.AddCommand(cmd) + } + + { // list-2 + var orgId string + var searchType string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "list-2", + Short: "List summaries", + Long: `Lists summaries based on the requested search type.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/generated-summaries/search") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("orgId", orgId) + req.BodyString("searchType", searchType) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "") + cmd.Flags().StringVar(&searchType, "search-type", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + agentSummariesCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/agent_wellbeing.go b/cmd/cc/agent_wellbeing.go new file mode 100644 index 0000000..cca20fa --- /dev/null +++ b/cmd/cc/agent_wellbeing.go @@ -0,0 +1,237 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + "strconv" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa +var _ = strings.Join + +var agentWellbeingCmd = &cobra.Command{ + Use: "agent-wellbeing", + Short: "AgentWellbeing commands", +} + +func init() { + cmd.CcCmd.AddCommand(agentWellbeingCmd) + + { // subscribe-realtime-burnout-events + var xOrganizationId string + var destinationUrl string + var eventTypes []string + var name string + var description string + var secret string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "subscribe-realtime-burnout-events", + Short: "Subscribe for realtime burnout events", + Long: `This endpoint provides real-time burnout events that are generated for agents belonging to the organization. It gives us a WebSocket URL to which we can connect to receive the real-time burnout events.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v1/agentburnout/subscribe") + req.Header("X-ORGANIZATION-ID", xOrganizationId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("destinationUrl", destinationUrl) + req.BodyStringSlice("eventTypes", eventTypes) + req.BodyString("name", name) + req.BodyString("description", description) + req.BodyString("secret", secret) + req.BodyString("orgId", orgId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&xOrganizationId, "x-organization-id", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.Flags().StringVar(&destinationUrl, "destination-url", "", "") + cmd.Flags().StringSliceVar(&eventTypes, "event-types", nil, "") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&description, "description", "", "") + cmd.Flags().StringVar(&secret, "secret", "", "") + cmd.Flags().StringVar(&orgId, "org-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + agentWellbeingCmd.AddCommand(cmd) + } + + { // record-realtime-burnout-events + var xOrganizationId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "record-realtime-burnout-events", + Short: "Record the realtime burnout events", + Long: `The endpoint need to be invoked by Partners and Third-Party that will subscribe to the Agent Burnout system, in order to take certain action based on the agent burnout index calculated.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v1/agentburnout/action") + req.Header("X-ORGANIZATION-ID", xOrganizationId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&xOrganizationId, "x-organization-id", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + agentWellbeingCmd.AddCommand(cmd) + } + + { // get-burnout-id + var orgid string + var id string + cmd := &cobra.Command{ + Use: "get-burnout-id", + Short: "Get specific Agent Burnout resource by ID", + Long: `Retrieve an existing Agent Burnout resource by ID in a given organization. Deprecated. Use GET /ai-feature/agent-burnout/{id} instead.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/agent-burnout/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Agent Burnout resource.") + cmd.MarkFlagRequired("id") + agentWellbeingCmd.AddCommand(cmd) + } + + { // update-burnout-id + var orgid string + var id string + var agentInclusionType string + var enabled bool + var organizationId string + var version int64 + var wellnessBreakReminders string + var createdTime int64 + var lastUpdatedTime int64 + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-burnout-id", + Short: "Update specific Agent Burnout resource by ID", + Long: `Update an existing Agent Burnout resource by ID in a given organization. Deprecated. Use PUT /ai-feature/agent-burnout/{id} instead.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PUT", "/organization/{orgid}/agent-burnout/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("agentInclusionType", agentInclusionType) + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + req.BodyString("organizationId", organizationId) + req.BodyString("id", id) + req.BodyInt("version", version, cmd.Flags().Changed("version")) + req.BodyString("wellnessBreakReminders", wellnessBreakReminders) + req.BodyInt("createdTime", createdTime, cmd.Flags().Changed("created-time")) + req.BodyInt("lastUpdatedTime", lastUpdatedTime, cmd.Flags().Changed("last-updated-time")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Agent Burnout resource.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&agentInclusionType, "agent-inclusion-type", "", "") + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().StringVar(&organizationId, "organization-id", "", "") + cmd.Flags().Int64Var(&version, "version", 0, "") + cmd.Flags().StringVar(&wellnessBreakReminders, "wellness-break-reminders", "", "") + cmd.Flags().Int64Var(&createdTime, "created-time", 0, "") + cmd.Flags().Int64Var(&lastUpdatedTime, "last-updated-time", 0, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + agentWellbeingCmd.AddCommand(cmd) + } + + { // list-burnout + var orgid string + var filter string + var attributes string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "list-burnout", + Short: "List Agent Burnout resource(s)", + Long: `Retrieve a list of Agent Burnout resource(s) in a given organization.Only one entry per organization can exist for Agent Burnout resource. Deprecated. Use GET /v2/ai-feature/agent-burnout instead.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/v2/agent-burnout") + req.PathParam("orgid", orgid) + req.QueryParam("filter", filter) + req.QueryParam("attributes", attributes) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&filter, "filter", "", "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. ") + cmd.Flags().StringVar(&attributes, "attributes", "", "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported.") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + agentWellbeingCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/agents.go b/cmd/cc/agents.go new file mode 100644 index 0000000..801b773 --- /dev/null +++ b/cmd/cc/agents.go @@ -0,0 +1,382 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/Cloverhound/webex-cli/internal/timeutil" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strings.Join +var _ = timeutil.ParseLastISO + +var agentsCmd = &cobra.Command{ + Use: "agents", + Short: "Agents commands", +} + +func init() { + cmd.CcCmd.AddCommand(agentsCmd) + + { // login + var dialNumber string + var roles []string + var teamId string + var isExtension bool + var deviceType string + var deviceId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "login", + Short: "Login", + Long: `Allows the user to login to their desktop. It does not allow a duplicate login and sends an error message over websocket if an active session already exists. Requires the 'cjp:user' scope. When Licensed Administrator access is enabled for the organization, the access token must also contain at least one of the following roles: 'cjp.standard_agent', 'cjp.premium_agent', 'cjp.supervisor', 'cjp.admin', or 'id_full_admin'. A Licensed Administrator logging in with supervisor capabilities must have the 'cjp.admin' or 'id_full_admin' role, the 'cjp.premium_agent' role, and supervisor capabilities enabled. For a list of possible response messages, see the [Call Control API Guide](/documentation/guides/contact-control-apis).`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v2/agents/login") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("dialNumber", dialNumber) + req.BodyStringSlice("roles", roles) + req.BodyString("teamId", teamId) + req.BodyBool("isExtension", isExtension, cmd.Flags().Changed("is-extension")) + req.BodyString("deviceType", deviceType) + req.BodyString("deviceId", deviceId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&dialNumber, "dial-number", "", "") + cmd.Flags().StringSliceVar(&roles, "roles", nil, "") + cmd.Flags().StringVar(&teamId, "team-id", "", "") + cmd.Flags().BoolVar(&isExtension, "is-extension", false, "") + cmd.Flags().StringVar(&deviceType, "device-type", "", "") + cmd.Flags().StringVar(&deviceId, "device-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + agentsCmd.AddCommand(cmd) + } + + { // logout + var logoutReason string + var agentId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "logout", + Short: "Logout", + Long: `Allows the user to logout from their Desktop. This API needs to be called once the WSS session has been successfully established. Self logout for an agent or supervisor requires the 'cjp:user' scope. Logout on behalf of another user is available to a supervisor with the 'cjp:user' scope and 'cjp.supervisor' role, or to an authorized administrator, help-desk user, or partner with the applicable role: 'id_full_admin', 'id_readonly_admin', 'cjp.admin', 'atlas-portal.partner.salesadmin', 'atlas-portal.partner.helpdesk', or 'atlas-portal.partner.provision_admin'. Partner and external-administrator requests must also be authorized for the managed organization and include the organization and agent identifiers. For a list of possible response messages, see the [Call Control API Guide](/documentation/guides/contact-control-apis).`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PUT", "/v2/agents/logout") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("logoutReason", logoutReason) + req.BodyString("agentId", agentId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&logoutReason, "logout-reason", "", "") + cmd.Flags().StringVar(&agentId, "agent-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + agentsCmd.AddCommand(cmd) + } + + { // state-change + var channelType []string + var state string + var auxCodeId string + var reason string + var agentId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "state-change", + Short: "State Change", + Long: `Allows the user to toggle between the Idle and Available states for the requested channels. Self state changes for an agent or supervisor require the 'cjp:user' scope and an active agent session. Cross-agent state changes require the 'cjp:user' scope and 'cjp.supervisor' role, and are limited to users in the supervisor's authorized teams. A Licensed Administrator can perform a cross-agent state change when Licensed Administrator access is enabled and the token contains the 'cjp.admin' or 'id_full_admin' role together with the 'cjp.premium_agent' role; the administrator must also have supervisor capabilities enabled and access to the target user's team. Agent State Control must be enabled for the organization and requested channels. For a list of possible response messages, see the [Call Control API Guide](/documentation/guides/contact-control-apis).`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PUT", "/v2/agents/session/state") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("channelType", channelType) + req.BodyString("state", state) + req.BodyString("auxCodeId", auxCodeId) + req.BodyString("reason", reason) + req.BodyString("agentId", agentId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringSliceVar(&channelType, "channel-type", nil, "") + cmd.Flags().StringVar(&state, "state", "", "") + cmd.Flags().StringVar(&auxCodeId, "aux-code-id", "", "") + cmd.Flags().StringVar(&reason, "reason", "", "") + cmd.Flags().StringVar(&agentId, "agent-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + agentsCmd.AddCommand(cmd) + } + + { // reload + cmd := &cobra.Command{ + Use: "reload", + Short: "Reload", + Long: "Requests restoration of the active agent session, including agent state and assigned interaction context. This asynchronous API returns `202 Accepted` when the request is accepted for processing; the restoration result is delivered over WebSocket. The success notification is selected by the API version persisted when the agent logged in, not by the reload endpoint version. A V1 login session receives `AgentReloginSuccess`, and a V2 login session receives `AgentChannelReloginSuccess`; therefore, either reload endpoint can result in either success notification. The active session remains on its login version until the agent logs out and starts a new session. See [AgentReloginSuccess](/docs/contact-control-apis#agentreloginsuccess) and [AgentChannelReloginSuccess](/docs/contact-control-apis#agentchannelreloginsuccess) in the Contact Control API Guide. Requires the 'cjp:user' scope for authorization.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v2/agents/reload") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + agentsCmd.AddCommand(cmd) + } + + { // buddy-list + var agentProfileId string + var mediaType string + var state string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "buddy-list", + Short: "Buddy Agents List", + Long: `Returns the list of agents in the given state and media according to agent profile settings. Requires an agent or supervisor access token with the 'cjp:user' scope.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v1/agents/buddyList") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("agentProfileId", agentProfileId) + req.BodyString("mediaType", mediaType) + req.BodyString("state", state) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&agentProfileId, "agent-profile-id", "", "") + cmd.Flags().StringVar(&mediaType, "media-type", "", "") + cmd.Flags().StringVar(&state, "state", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + agentsCmd.AddCommand(cmd) + } + + { // get-activities + var agentIds string + var teamIds string + var channelTypes string + var from string + var to string + var pageSize string + var page string + var orgid string + var trackingId string + var last string + cmd := &cobra.Command{ + Use: "get-activities", + Short: "Get Agent Activities", + Long: `Retrieve agent activities. Requires a bearer access token authorized to access the requested organization and agent data. Results are sorted by start time in ascending order. +Maximum number of records that can be fetched for the given from and to is 10,000. +For this API, response compression using gzip can be enabled by including 'Accept-Encoding' header in the request with its value as 'gzip'. +The response will be compressed only if its size exceeds 1 MB. +If the header is not present in the request or if gzip is not listed as one of the encodings in the header's value (comma separated encodings), then API response will not be compressed and this can impact the latency as observed from clients.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/v1/agents/activities") + if last != "" { + var err error + from, to, err = timeutil.ParseLastEpochMs(last) + if err != nil { + return err + } + } + req.QueryParam("agentIds", agentIds) + req.QueryParam("agentIds", agentIds) + req.QueryParam("agentIds", agentIds) + req.QueryParam("agentIds", agentIds) + req.QueryParam("agentIds", agentIds) + req.QueryParam("agentIds", agentIds) + req.QueryParam("agentIds", agentIds) + req.QueryParam("agentIds", agentIds) + req.QueryParam("agentIds", agentIds) + req.QueryParam("agentIds", agentIds) + req.QueryParam("agentIds", agentIds) + req.QueryParam("agentIds", agentIds) + req.QueryParam("agentIds", agentIds) + req.QueryParam("agentIds", agentIds) + req.QueryParam("agentIds", agentIds) + req.QueryParam("agentIds", agentIds) + req.QueryParam("agentIds", agentIds) + req.QueryParam("agentIds", agentIds) + req.QueryParam("agentIds", agentIds) + req.QueryParam("agentIds", agentIds) + req.QueryParam("teamIds", teamIds) + req.QueryParam("teamIds", teamIds) + req.QueryParam("teamIds", teamIds) + req.QueryParam("teamIds", teamIds) + req.QueryParam("teamIds", teamIds) + req.QueryParam("teamIds", teamIds) + req.QueryParam("teamIds", teamIds) + req.QueryParam("teamIds", teamIds) + req.QueryParam("teamIds", teamIds) + req.QueryParam("teamIds", teamIds) + req.QueryParam("teamIds", teamIds) + req.QueryParam("teamIds", teamIds) + req.QueryParam("teamIds", teamIds) + req.QueryParam("teamIds", teamIds) + req.QueryParam("teamIds", teamIds) + req.QueryParam("teamIds", teamIds) + req.QueryParam("teamIds", teamIds) + req.QueryParam("teamIds", teamIds) + req.QueryParam("teamIds", teamIds) + req.QueryParam("teamIds", teamIds) + req.QueryParam("channelTypes", channelTypes) + req.QueryParam("channelTypes", channelTypes) + req.QueryParam("from", from) + req.QueryParam("to", to) + req.QueryParam("pageSize", pageSize) + req.QueryParam("page", page) + req.QueryParam("orgId", orgid) + req.Header("TrackingId", trackingId) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&agentIds, "agent-ids", "", "Filter agent activities by agent ids separated with commas if more than one value (max 100). By default, there is no agent filtering.") + cmd.Flags().StringVar(&teamIds, "team-ids", "", "Filter agent activities by team ids separated with commas if more than one value (max 100). By default, there is no team filtering.") + cmd.Flags().StringVar(&channelTypes, "channel-types", "", "Channel type(s) permitted in response. Separate values with commas. Must be lowercase. By default, there is no channelType filtering.") + cmd.Flags().StringVar(&from, "from", "", "Filter agent activities created after given epoch timestamp in UTC (in milliseconds).") + cmd.Flags().StringVar(&to, "to", "", "Filter agent activities created before given epoch timestamp in UTC (in milliseconds). If unspecified, queries up to the present. The difference between to and from timestamps must be less than 24 hours (86400000 milli seconds)") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Maximum page size in response. Maximum allowed value is 1000. Defaults to 100 items per page.") + cmd.Flags().StringVar(&page, "page", "", "Page number to be passed. Maximum number of records that can be fetched for the given from and to is 10,000. So maximum page number allowed is based on it. Defaults to 0.") + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to use for this operation. If unspecified, inferred from token. Token must have permission to interact with this organization.") + cmd.Flags().StringVar(&trackingId, "tracking-id", "", "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. ") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + agentsCmd.AddCommand(cmd) + } + + { // get-statistics + var from string + var to string + var interval string + var agentIds string + var orgid string + var trackingId string + var last string + cmd := &cobra.Command{ + Use: "get-statistics", + Short: "Get Agent Statistics", + Long: `Retrieve agent statistics for the specified time duration and interval. Requires a bearer access token authorized to access the requested organization and agent data. +For this API, response compression using gzip can be enabled by including 'Accept-Encoding' header in the request with its value as 'gzip'. +The response will be compressed only if its size exceeds 1 MB. +If the header is not present in the request or if gzip is not listed as one of the encodings in the header's value (comma separated encodings), then API response will not be compressed and this can impact the latency as observed from clients.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/v1/agents/statistics") + if last != "" { + var err error + from, to, err = timeutil.ParseLastEpochMs(last) + if err != nil { + return err + } + } + req.QueryParam("from", from) + req.QueryParam("to", to) + req.QueryParam("interval", interval) + req.QueryParam("agentIds", agentIds) + req.QueryParam("agentIds", agentIds) + req.QueryParam("agentIds", agentIds) + req.QueryParam("agentIds", agentIds) + req.QueryParam("agentIds", agentIds) + req.QueryParam("agentIds", agentIds) + req.QueryParam("agentIds", agentIds) + req.QueryParam("agentIds", agentIds) + req.QueryParam("agentIds", agentIds) + req.QueryParam("agentIds", agentIds) + req.QueryParam("agentIds", agentIds) + req.QueryParam("agentIds", agentIds) + req.QueryParam("agentIds", agentIds) + req.QueryParam("agentIds", agentIds) + req.QueryParam("agentIds", agentIds) + req.QueryParam("agentIds", agentIds) + req.QueryParam("agentIds", agentIds) + req.QueryParam("agentIds", agentIds) + req.QueryParam("agentIds", agentIds) + req.QueryParam("agentIds", agentIds) + req.QueryParam("orgId", orgid) + req.Header("TrackingId", trackingId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&from, "from", "", "Start time for the query (in epoch milliseconds). Any epoch time can be passed in the input, from date will be rounded down to nearest 15 minute window. For example, epoch time of 12:05 will be rounded down to 12:00.") + cmd.Flags().StringVar(&to, "to", "", "End time for the query (in epoch milliseconds). Any epoch time can be passed in the input, from date will be rounded down to nearest 15 minute window. For example, epoch time of 12:55 will be rounded down to 12:45. The difference between to and from time must be less than 24 hours (86400000 milliseconds).") + cmd.Flags().StringVar(&interval, "interval", "", "Time interval (in minutes) to chunk statistics by i.e. break up the entire from-to timeframe by this interval amount so that statistics can be viewed incrementally. Supported values are 15, 30, or 60.") + cmd.Flags().StringVar(&agentIds, "agent-ids", "", "Comma-separated list of agent IDs. A maximum of 100 values is permitted. If values are not provided, all agents of an organization are returned.") + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to use for this operation. If unspecified, inferred from token. Token must have permission to interact with this organization.") + cmd.Flags().StringVar(&trackingId, "tracking-id", "", "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. ") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + agentsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/ai_agent.go b/cmd/cc/ai_agent.go new file mode 100644 index 0000000..e8ef9d3 --- /dev/null +++ b/cmd/cc/ai_agent.go @@ -0,0 +1,459 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/aiagent" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strings.Join + +var aiAgentCmd = &cobra.Command{ + Use: "ai-agent", + Short: "AI Agent Studio agents, tools, publishing, export (unsupported private API)", +} + +func init() { + cmd.CcCmd.AddCommand(aiAgentCmd) + + { // list + var orgid string + var limit string + var offset string + cmd := &cobra.Command{ + Use: "list", + Short: "List AI agents", + Long: "Lists the organization's AI agents. Use an agent's `id` as --agent-id. Runtime tokens in the response are redacted.\n\nCaution: this command uses Webex AI Agent Studio's private API, which is not documented or supported by Cisco and can change or stop working without notice. Do not build production automation on it.", + RunE: func(cmd *cobra.Command, args []string) error { + aiagent.PrivateAPINotice() + req := client.NewRequest(config.AiAgentBaseURL, "GET", "/api/v2/organizations/{orgid}/agents/") + req.PathParam("orgid", orgid) + req.QueryParam("limit", limit) + req.QueryParam("offset", offset) + if config.Paginate() { + req.OffsetPaging("offset", "limit", 0) + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + resp = aiagent.RedactSecrets(resp) + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + resp = aiagent.RedactSecrets(resp) + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&limit, "limit", "", "Maximum number of agents to return.") + cmd.Flags().StringVar(&offset, "offset", "", "Number of agents to skip.") + aiAgentCmd.AddCommand(cmd) + } + + { // get + var agentId string + cmd := &cobra.Command{ + Use: "get", + Short: "Get AI agent", + Long: "Gets an AI agent's settings. `bot_metadata.ai_engine` here is the engine family; the exact engine is `bot_metadata.engine_identifier`.\n\nCaution: this command uses Webex AI Agent Studio's private API, which is not documented or supported by Cisco and can change or stop working without notice. Do not build production automation on it.", + RunE: func(cmd *cobra.Command, args []string) error { + aiagent.PrivateAPINotice() + req := client.NewRequest(config.AiAgentBaseURL, "GET", "/api/v1/bot/{agentId}/") + req.PathParam("agentId", agentId) + botToken, err := aiagent.BotToken(agentId) + if err != nil { + return err + } + req.Header("bot-access-token", botToken) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + resp = aiagent.RedactSecrets(resp) + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&agentId, "agent-id", "", "AI agent ID.") + cmd.MarkFlagRequired("agent-id") + aiAgentCmd.AddCommand(cmd) + } + + { // create + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create AI agent", + Long: "Creates an AI agent. `bot_unique_name` must be unique; Studio's own UI uses the name followed by `-` and 8 random letters and digits. Turning transparency off needs a `disable_reason`. Every new agent gets the system \"Agent handover\" tool.\n\nCaution: this command uses Webex AI Agent Studio's private API, which is not documented or supported by Cisco and can change or stop working without notice. Do not build production automation on it.", + RunE: func(cmd *cobra.Command, args []string) error { + aiagent.PrivateAPINotice() + req := client.NewRequest(config.AiAgentBaseURL, "POST", "/api/v1/bot/") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + resp = aiagent.RedactSecrets(resp) + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + aiAgentCmd.AddCommand(cmd) + } + + { // update + var agentId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Short: "Update AI agent", + Long: "Updates an AI agent's draft. `instruction` is the agent's prompt. Top-level fields left out keep their values. Send `bot_metadata.ai_engine` as the exact engine (`engine_identifier` from `get`), not the family that `get` reports in `ai_engine`, or the agent's engine changes. Callers get the change only after `publish`.\n\nCaution: this command uses Webex AI Agent Studio's private API, which is not documented or supported by Cisco and can change or stop working without notice. Do not build production automation on it.", + RunE: func(cmd *cobra.Command, args []string) error { + aiagent.PrivateAPINotice() + req := client.NewRequest(config.AiAgentBaseURL, "PUT", "/api/v1/bot/{agentId}/") + req.PathParam("agentId", agentId) + botToken, err := aiagent.BotToken(agentId) + if err != nil { + return err + } + req.Header("bot-access-token", botToken) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + resp = aiagent.RedactSecrets(resp) + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&agentId, "agent-id", "", "AI agent ID.") + cmd.MarkFlagRequired("agent-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + aiAgentCmd.AddCommand(cmd) + } + + { // delete + var agentId string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete AI agent", + Long: `Deletes an AI agent. + +Caution: this command uses Webex AI Agent Studio's private API, which is not documented or supported by Cisco and can change or stop working without notice. Do not build production automation on it.`, + RunE: func(cmd *cobra.Command, args []string) error { + aiagent.PrivateAPINotice() + req := client.NewRequest(config.AiAgentBaseURL, "DELETE", "/api/v1/bot/{agentId}/") + req.PathParam("agentId", agentId) + botToken, err := aiagent.BotToken(agentId) + if err != nil { + return err + } + req.Header("bot-access-token", botToken) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + resp = aiagent.RedactSecrets(resp) + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&agentId, "agent-id", "", "AI agent ID.") + cmd.MarkFlagRequired("agent-id") + aiAgentCmd.AddCommand(cmd) + } + + { // get-configuration + var agentId string + cmd := &cobra.Command{ + Use: "get-configuration", + Short: "Get AI agent configuration", + Long: "Gets the agent's draft configuration and its tools. `configuration.llm_agent_description` is the prompt. `state` is `saved` when the draft has unpublished changes and `cloned` when it matches the published version.\n\nCaution: this command uses Webex AI Agent Studio's private API, which is not documented or supported by Cisco and can change or stop working without notice. Do not build production automation on it.", + RunE: func(cmd *cobra.Command, args []string) error { + aiagent.PrivateAPINotice() + req := client.NewRequest(config.AiAgentBaseURL, "GET", "/api/v1/llmagent/getdefault/") + botToken, err := aiagent.BotToken(agentId) + if err != nil { + return err + } + req.Header("bot-access-token", botToken) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + resp = aiagent.RedactSecrets(resp) + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&agentId, "agent-id", "", "AI agent ID.") + cmd.MarkFlagRequired("agent-id") + aiAgentCmd.AddCommand(cmd) + } + + { // list-versions + var order_by string + var limit string + var offset string + var agentId string + cmd := &cobra.Command{ + Use: "list-versions", + Short: "List AI agent versions", + Long: "Lists the draft and the published versions (`state: live`) of the agent's configuration.\n\nCaution: this command uses Webex AI Agent Studio's private API, which is not documented or supported by Cisco and can change or stop working without notice. Do not build production automation on it.", + RunE: func(cmd *cobra.Command, args []string) error { + aiagent.PrivateAPINotice() + req := client.NewRequest(config.AiAgentBaseURL, "GET", "/api/v1/llmagent/") + req.QueryParam("order_by", order_by) + req.QueryParam("limit", limit) + req.QueryParam("offset", offset) + botToken, err := aiagent.BotToken(agentId) + if err != nil { + return err + } + req.Header("bot-access-token", botToken) + if config.Paginate() { + req.OffsetPaging("offset", "limit", 0) + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + resp = aiagent.RedactSecrets(resp) + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + resp = aiagent.RedactSecrets(resp) + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&order_by, "order_by", "", "Sort field; prefix with - for descending, for example -updated_at.") + cmd.Flags().StringVar(&limit, "limit", "", "Maximum number of versions to return.") + cmd.Flags().StringVar(&offset, "offset", "", "Number of versions to skip.") + cmd.Flags().StringVar(&agentId, "agent-id", "", "AI agent ID.") + cmd.MarkFlagRequired("agent-id") + aiAgentCmd.AddCommand(cmd) + } + + { // export + var agentId string + cmd := &cobra.Command{ + Use: "export", + Short: "Export AI agent", + Long: "Exports the agent's draft configuration and tools as one JSON document (`bot_type`, `configuration`, `tools`).\n\nCaution: this command uses Webex AI Agent Studio's private API, which is not documented or supported by Cisco and can change or stop working without notice. Do not build production automation on it.", + RunE: func(cmd *cobra.Command, args []string) error { + aiagent.PrivateAPINotice() + req := client.NewRequest(config.AiAgentBaseURL, "GET", "/api/v1/llmagent/export/") + botToken, err := aiagent.BotToken(agentId) + if err != nil { + return err + } + req.Header("bot-access-token", botToken) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + resp = aiagent.RedactSecrets(resp) + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&agentId, "agent-id", "", "AI agent ID.") + cmd.MarkFlagRequired("agent-id") + aiAgentCmd.AddCommand(cmd) + } + + { // publish + var agentId string + var description string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "publish", + Short: "Publish AI agent", + Long: `Publishes the agent's draft, so live calls use it. The description labels the version in the history. + +Caution: this command uses Webex AI Agent Studio's private API, which is not documented or supported by Cisco and can change or stop working without notice. Do not build production automation on it.`, + RunE: func(cmd *cobra.Command, args []string) error { + aiagent.PrivateAPINotice() + req := client.NewRequest(config.AiAgentBaseURL, "POST", "/api/v1/llmagent/makelive/") + botToken, err := aiagent.BotToken(agentId) + if err != nil { + return err + } + req.Header("bot-access-token", botToken) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("description", description) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + resp = aiagent.RedactSecrets(resp) + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&agentId, "agent-id", "", "AI agent ID.") + cmd.MarkFlagRequired("agent-id") + cmd.Flags().StringVar(&description, "description", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + aiAgentCmd.AddCommand(cmd) + } + + { // create-tool + var agentId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-tool", + Short: "Create AI agent tool", + Long: "Adds a tool (action) to the agent's draft. `input_entities` is required, in JSON Schema form, even when the tool takes no input. Copy a working tool from `get-configuration` for the fulfillment of flow and MCP tools.\n\nCaution: this command uses Webex AI Agent Studio's private API, which is not documented or supported by Cisco and can change or stop working without notice. Do not build production automation on it.", + RunE: func(cmd *cobra.Command, args []string) error { + aiagent.PrivateAPINotice() + req := client.NewRequest(config.AiAgentBaseURL, "POST", "/api/v1/llmagent/tool/create/") + botToken, err := aiagent.BotToken(agentId) + if err != nil { + return err + } + req.Header("bot-access-token", botToken) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + resp = aiagent.RedactSecrets(resp) + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&agentId, "agent-id", "", "AI agent ID.") + cmd.MarkFlagRequired("agent-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + aiAgentCmd.AddCommand(cmd) + } + + { // update-tool + var agentId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-tool", + Short: "Update AI agent tool", + Long: "Updates a tool in the agent's draft. Send the whole tool as `get-configuration` returns it, with `tool_id` set to its `id`.\n\nCaution: this command uses Webex AI Agent Studio's private API, which is not documented or supported by Cisco and can change or stop working without notice. Do not build production automation on it.", + RunE: func(cmd *cobra.Command, args []string) error { + aiagent.PrivateAPINotice() + req := client.NewRequest(config.AiAgentBaseURL, "POST", "/api/v1/llmagent/tool/update/") + botToken, err := aiagent.BotToken(agentId) + if err != nil { + return err + } + req.Header("bot-access-token", botToken) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + resp = aiagent.RedactSecrets(resp) + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&agentId, "agent-id", "", "AI agent ID.") + cmd.MarkFlagRequired("agent-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + aiAgentCmd.AddCommand(cmd) + } + + { // delete-tool + var agentId string + var tool_id string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "delete-tool", + Short: "Delete AI agent tool", + Long: `Deletes a tool from the agent's draft. + +Caution: this command uses Webex AI Agent Studio's private API, which is not documented or supported by Cisco and can change or stop working without notice. Do not build production automation on it.`, + RunE: func(cmd *cobra.Command, args []string) error { + aiagent.PrivateAPINotice() + req := client.NewRequest(config.AiAgentBaseURL, "POST", "/api/v1/llmagent/tool/delete/") + botToken, err := aiagent.BotToken(agentId) + if err != nil { + return err + } + req.Header("bot-access-token", botToken) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("tool_id", tool_id) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + resp = aiagent.RedactSecrets(resp) + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&agentId, "agent-id", "", "AI agent ID.") + cmd.MarkFlagRequired("agent-id") + cmd.Flags().StringVar(&tool_id, "tool_id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + aiAgentCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/ai_agent_session.go b/cmd/cc/ai_agent_session.go new file mode 100644 index 0000000..b2f2dc1 --- /dev/null +++ b/cmd/cc/ai_agent_session.go @@ -0,0 +1,152 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/aiagent" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var aiAgentSessionCmd = &cobra.Command{ + Use: "ai-agent-session", + Short: "AI Agent Studio sessions and messages (unsupported private API)", +} + +func init() { + cmd.CcCmd.AddCommand(aiAgentSessionCmd) + + { // list + var orgid string + var agentId string + var limit string + var offset string + cmd := &cobra.Command{ + Use: "list", + Short: "List AI agent sessions", + Long: "Lists the agent's conversation sessions. `is_test` marks preview sessions. For a voice session, `interaction_id` is the Contact Center task ID, which `webex cc captures list` accepts.\n\nCaution: this command uses Webex AI Agent Studio's private API, which is not documented or supported by Cisco and can change or stop working without notice. Do not build production automation on it.", + RunE: func(cmd *cobra.Command, args []string) error { + aiagent.PrivateAPINotice() + req := client.NewRequest(config.AiAgentBaseURL, "GET", "/api/v2/organizations/{orgid}/agents/{agentId}/sessions/") + req.PathParam("orgid", orgid) + req.PathParam("agentId", agentId) + req.QueryParam("limit", limit) + req.QueryParam("offset", offset) + if config.Paginate() { + req.OffsetPaging("offset", "limit", 0) + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + resp = aiagent.RedactSecrets(resp) + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + resp = aiagent.RedactSecrets(resp) + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&agentId, "agent-id", "", "AI agent ID.") + cmd.MarkFlagRequired("agent-id") + cmd.Flags().StringVar(&limit, "limit", "", "Maximum number of sessions to return.") + cmd.Flags().StringVar(&offset, "offset", "", "Number of sessions to skip.") + aiAgentSessionCmd.AddCommand(cmd) + } + + { // get + var orgid string + var agentId string + var sessionId string + cmd := &cobra.Command{ + Use: "get", + Short: "Get AI agent session", + Long: `Gets one conversation session. + +Caution: this command uses Webex AI Agent Studio's private API, which is not documented or supported by Cisco and can change or stop working without notice. Do not build production automation on it.`, + RunE: func(cmd *cobra.Command, args []string) error { + aiagent.PrivateAPINotice() + req := client.NewRequest(config.AiAgentBaseURL, "GET", "/api/v2/organizations/{orgid}/agents/{agentId}/sessions/{sessionId}/") + req.PathParam("orgid", orgid) + req.PathParam("agentId", agentId) + req.PathParam("sessionId", sessionId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + resp = aiagent.RedactSecrets(resp) + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&agentId, "agent-id", "", "AI agent ID.") + cmd.MarkFlagRequired("agent-id") + cmd.Flags().StringVar(&sessionId, "session-id", "", "Session ID.") + cmd.MarkFlagRequired("session-id") + aiAgentSessionCmd.AddCommand(cmd) + } + + { // list-messages + var orgid string + var agentId string + var sessionId string + var limit string + var offset string + cmd := &cobra.Command{ + Use: "list-messages", + Short: "List AI agent session messages", + Long: `Lists a session's messages. In an organization with Advanced Data Protection, the text of live sessions is encrypted; preview sessions are not. + +Caution: this command uses Webex AI Agent Studio's private API, which is not documented or supported by Cisco and can change or stop working without notice. Do not build production automation on it.`, + RunE: func(cmd *cobra.Command, args []string) error { + aiagent.PrivateAPINotice() + req := client.NewRequest(config.AiAgentBaseURL, "GET", "/api/v2/organizations/{orgid}/agents/{agentId}/sessions/{sessionId}/messages/") + req.PathParam("orgid", orgid) + req.PathParam("agentId", agentId) + req.PathParam("sessionId", sessionId) + req.QueryParam("limit", limit) + req.QueryParam("offset", offset) + if config.Paginate() { + req.OffsetPaging("offset", "limit", 0) + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + resp = aiagent.RedactSecrets(resp) + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + resp = aiagent.RedactSecrets(resp) + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&agentId, "agent-id", "", "AI agent ID.") + cmd.MarkFlagRequired("agent-id") + cmd.Flags().StringVar(&sessionId, "session-id", "", "Session ID.") + cmd.MarkFlagRequired("session-id") + cmd.Flags().StringVar(&limit, "limit", "", "Maximum number of messages to return.") + cmd.Flags().StringVar(&offset, "offset", "", "Number of messages to skip.") + aiAgentSessionCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/ai_agent_transcript.go b/cmd/cc/ai_agent_transcript.go new file mode 100644 index 0000000..b9b647a --- /dev/null +++ b/cmd/cc/ai_agent_transcript.go @@ -0,0 +1,155 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/aiagent" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var aiAgentTranscriptCmd = &cobra.Command{ + Use: "ai-agent-transcript", + Short: "AI Agent Studio audited transcript reads (unsupported private API)", +} + +func init() { + cmd.CcCmd.AddCommand(aiAgentTranscriptCmd) + + { // create-audit-record + var agentId string + var room_id string + var decrypt_audit_type string + var message string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-audit-record", + Short: "Create transcript audit record", + Long: "Records a compliance audit entry for reading a session's transcript, as Studio does before it shows one. `room_id` is the session ID and `message` the reason. The entry is permanent and names the caller, so create one only with a real reason. With a regular Webex login, the messages of an encrypted session stay encrypted after the audit.\n\nCaution: this command uses Webex AI Agent Studio's private API, which is not documented or supported by Cisco and can change or stop working without notice. Do not build production automation on it.", + RunE: func(cmd *cobra.Command, args []string) error { + aiagent.PrivateAPINotice() + req := client.NewRequest(config.AiAgentBaseURL, "POST", "/api/v1/decrypt_audit/") + botToken, err := aiagent.BotToken(agentId) + if err != nil { + return err + } + req.Header("bot-access-token", botToken) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("room_id", room_id) + req.BodyString("decrypt_audit_type", decrypt_audit_type) + req.BodyString("message", message) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + resp = aiagent.RedactSecrets(resp) + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&agentId, "agent-id", "", "AI agent ID.") + cmd.MarkFlagRequired("agent-id") + cmd.Flags().StringVar(&room_id, "room_id", "", "") + cmd.Flags().StringVar(&decrypt_audit_type, "decrypt_audit_type", "", "") + cmd.Flags().StringVar(&message, "message", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + aiAgentTranscriptCmd.AddCommand(cmd) + } + + { // get-session + var id string + var agentId string + cmd := &cobra.Command{ + Use: "get-session", + Short: "Get transcript session", + Long: "Gets a session's full record, including `data_encrypted` and its channels.\n\nCaution: this command uses Webex AI Agent Studio's private API, which is not documented or supported by Cisco and can change or stop working without notice. Do not build production automation on it.", + RunE: func(cmd *cobra.Command, args []string) error { + aiagent.PrivateAPINotice() + req := client.NewRequest(config.AiAgentBaseURL, "GET", "/api/v1/room/") + req.QueryParam("id", id) + botToken, err := aiagent.BotToken(agentId) + if err != nil { + return err + } + req.Header("bot-access-token", botToken) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + resp = aiagent.RedactSecrets(resp) + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "Session ID.") + cmd.Flags().StringVar(&agentId, "agent-id", "", "AI agent ID.") + cmd.MarkFlagRequired("agent-id") + aiAgentTranscriptCmd.AddCommand(cmd) + } + + { // list-messages + var room_id string + var order_by string + var limit string + var offset string + var agentId string + cmd := &cobra.Command{ + Use: "list-messages", + Short: "List transcript messages", + Long: "Lists a session's messages with full detail: tool calls, classification and `data_encrypted`. For an encrypted session, create an audit record first.\n\nCaution: this command uses Webex AI Agent Studio's private API, which is not documented or supported by Cisco and can change or stop working without notice. Do not build production automation on it.", + RunE: func(cmd *cobra.Command, args []string) error { + aiagent.PrivateAPINotice() + req := client.NewRequest(config.AiAgentBaseURL, "GET", "/api/v1/message/") + req.QueryParam("room_id", room_id) + req.QueryParam("order_by", order_by) + req.QueryParam("limit", limit) + req.QueryParam("offset", offset) + botToken, err := aiagent.BotToken(agentId) + if err != nil { + return err + } + req.Header("bot-access-token", botToken) + if config.Paginate() { + req.OffsetPaging("offset", "limit", 0) + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + resp = aiagent.RedactSecrets(resp) + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + resp = aiagent.RedactSecrets(resp) + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&room_id, "room_id", "", "Session ID.") + cmd.Flags().StringVar(&order_by, "order_by", "", "Sort field; prefix with - for descending.") + cmd.Flags().StringVar(&limit, "limit", "", "Maximum number of messages to return.") + cmd.Flags().StringVar(&offset, "offset", "", "Number of messages to skip.") + cmd.Flags().StringVar(&agentId, "agent-id", "", "AI agent ID.") + cmd.MarkFlagRequired("agent-id") + aiAgentTranscriptCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/ai_assistant.go b/cmd/cc/ai_assistant.go new file mode 100644 index 0000000..5221211 --- /dev/null +++ b/cmd/cc/ai_assistant.go @@ -0,0 +1,56 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var aiAssistantCmd = &cobra.Command{ + Use: "ai-assistant", + Short: "AiAssistant commands", +} + +func init() { + cmd.CcCmd.AddCommand(aiAssistantCmd) + + { // get-suggestions + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "get-suggestions", + Short: "Get suggestions", + Long: "API for getting suggestions based on transcripts. \n\nNotes:\n- Requires machine account token with scope `cjp:config_read` for WxCC\n- Requires machine account token with scope `cjp-hybrid-conn:read` for WxCCE/CCE.\n- `aiAssistantSkillId` / `source` is required for WxCCE/CCE.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/event") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + aiAssistantCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/ai_feature.go b/cmd/cc/ai_feature.go new file mode 100644 index 0000000..939cce9 --- /dev/null +++ b/cmd/cc/ai_feature.go @@ -0,0 +1,309 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + "strconv" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa + +var aiFeatureCmd = &cobra.Command{ + Use: "ai-feature", + Short: "AiFeature commands", +} + +func init() { + cmd.CcCmd.AddCommand(aiFeatureCmd) + + { // get + var orgid string + var id string + cmd := &cobra.Command{ + Use: "get", + Aliases: []string{"get-id"}, + Short: "Get specific AI Feature resource by ID", + Long: `Retrieve an existing AI Feature resource by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/ai-feature/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the AI Feature resource.") + cmd.MarkFlagRequired("id") + aiFeatureCmd.AddCommand(cmd) + } + + { // patch + var orgid string + var id string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "patch", + Aliases: []string{"patch-id"}, + Short: "Partially update AI Feature resource by ID", + Long: `Partially update AI Feature resource by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PATCH", "/organization/{orgid}/ai-feature/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the AI Feature resource.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + aiFeatureCmd.AddCommand(cmd) + } + + { // list + var orgid string + var filter string + var attributes string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "list", + Short: "List AI Feature resource(s)", + Long: `Retrieve a list of AI Feature resource(s) in a given organization.Only one entry per organization can exist for AI Feature resource.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/v2/ai-feature") + req.PathParam("orgid", orgid) + req.QueryParam("filter", filter) + req.QueryParam("attributes", attributes) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&filter, "filter", "", "Specify a filter based on which the results will be fetched. Supported filterable fields: id. The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. ") + cmd.Flags().StringVar(&attributes, "attributes", "", "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported.") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + aiFeatureCmd.AddCommand(cmd) + } + + { // create-question-mapped-autocsat + var orgid string + var questionId string + var questionnaireId string + var organizationId string + var id string + var version int64 + var createdTime int64 + var lastUpdatedTime int64 + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-question-mapped-autocsat", + Short: "Create a new Question mapped to AutoCSAT", + Long: `Create a new Auto CSAT mapped Question in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/ai-feature/auto-csat/question") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("questionId", questionId) + req.BodyString("questionnaireId", questionnaireId) + req.BodyString("organizationId", organizationId) + req.BodyString("id", id) + req.BodyInt("version", version, cmd.Flags().Changed("version")) + req.BodyInt("createdTime", createdTime, cmd.Flags().Changed("created-time")) + req.BodyInt("lastUpdatedTime", lastUpdatedTime, cmd.Flags().Changed("last-updated-time")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&questionId, "question-id", "", "") + cmd.Flags().StringVar(&questionnaireId, "questionnaire-id", "", "") + cmd.Flags().StringVar(&organizationId, "organization-id", "", "") + cmd.Flags().StringVar(&id, "id", "", "") + cmd.Flags().Int64Var(&version, "version", 0, "") + cmd.Flags().Int64Var(&createdTime, "created-time", 0, "") + cmd.Flags().Int64Var(&lastUpdatedTime, "last-updated-time", 0, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + aiFeatureCmd.AddCommand(cmd) + } + + { // bulk-save-question-mapped-autocsat + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "bulk-save-question-mapped-autocsat", + Short: "Bulk save Question mapped to AutoCSAT", + Long: `Create, Update or delete Auto CSAT mapped Question(s) in bulk for Auto CSAT resource in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/ai-feature/auto-csat/question/bulk") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + aiFeatureCmd.AddCommand(cmd) + } + + { // get-question-mapped-autocsat-id + var orgid string + var id string + cmd := &cobra.Command{ + Use: "get-question-mapped-autocsat-id", + Short: "Get specific Question mapped to AutoCSAT by ID", + Long: `Retrieve an existing Auto CSAT mapped Question by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/ai-feature/auto-csat/question/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Auto CSAT mapped Question.") + cmd.MarkFlagRequired("id") + aiFeatureCmd.AddCommand(cmd) + } + + { // delete-question-mapped-autocsat-id + var orgid string + var id string + cmd := &cobra.Command{ + Use: "delete-question-mapped-autocsat-id", + Short: "Delete specific Question mapped to AutoCSAT by ID", + Long: `Delete an existing Auto CSAT mapped Question by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/organization/{orgid}/ai-feature/auto-csat/question/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Auto CSAT mapped Question.") + cmd.MarkFlagRequired("id") + aiFeatureCmd.AddCommand(cmd) + } + + { // list-question-mapped-autocsat + var orgid string + var filter string + var attributes string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "list-question-mapped-autocsat", + Short: "List Question mapped to AutoCSAT(s)", + Long: `Retrieve a list of Auto CSAT mapped Question(s) in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/v2/ai-feature/auto-csat/question") + req.PathParam("orgid", orgid) + req.QueryParam("filter", filter) + req.QueryParam("attributes", attributes) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&filter, "filter", "", "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. ") + cmd.Flags().StringVar(&attributes, "attributes", "", "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported.(id, questionId, questionnaireId)") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + aiFeatureCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/asset.go b/cmd/cc/asset.go new file mode 100644 index 0000000..a189e32 --- /dev/null +++ b/cmd/cc/asset.go @@ -0,0 +1,326 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + "strconv" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa + +var assetCmd = &cobra.Command{ + Use: "asset", + Short: "Asset commands", +} + +func init() { + cmd.CcCmd.AddCommand(assetCmd) + + { // create + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a new Asset", + Long: `Create a new Asset in a given organization. Supports work item assets with the specified channel and data schema.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/asset") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + assetCmd.AddCommand(cmd) + } + + { // bulk-save + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "bulk-save", + Short: "Bulk save Assets", + Long: `Create, Update or delete Assets in bulk in a given organization. Supports CREATE, UPDATE, and DELETE actions in a single request.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/asset/bulk") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + assetCmd.AddCommand(cmd) + } + + { // get + var orgid string + var id string + var includeChannelName string + cmd := &cobra.Command{ + Use: "get", + Aliases: []string{"get-id"}, + Short: "Get specific Asset by ID", + Long: `Retrieve an existing Asset by ID in a given organization. Set includeChannelName to true to include the channel name in the response.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/asset/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + req.QueryParam("includeChannelName", includeChannelName) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Asset") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&includeChannelName, "include-channel-name", "", "Include channel name in the response.") + assetCmd.AddCommand(cmd) + } + + { // update + var orgid string + var id string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Aliases: []string{"update-id"}, + Short: "Update specific Asset by ID", + Long: `Update an existing Asset by ID in a given organization. Supported for WORK_ITEM assets. For CUSTOM_MESSAGING assets, use PATCH instead.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PUT", "/organization/{orgid}/asset/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Asset") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + assetCmd.AddCommand(cmd) + } + + { // delete + var orgid string + var id string + cmd := &cobra.Command{ + Use: "delete", + Aliases: []string{"delete-id"}, + Short: "Delete specific Asset by ID", + Long: `Delete an existing Asset by ID in a given organization. Validates whether the asset is associated with any flow before deletion.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/organization/{orgid}/asset/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Asset") + cmd.MarkFlagRequired("id") + assetCmd.AddCommand(cmd) + } + + { // patch + var orgid string + var id string + var valueType string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "patch", + Aliases: []string{"patch-id"}, + Short: "Partially update Asset by ID", + Long: `Partially update Asset by ID in a given organization. Supported only for CUSTOM_MESSAGING assets. Send only the fields to change; absent fields retain their current values. webhookConfig is optional; omit it to keep the existing credentials. For WORK_ITEM assets, use PUT instead.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PATCH", "/organization/{orgid}/asset/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("valueType", valueType) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Asset") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&valueType, "value-type", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + assetCmd.AddCommand(cmd) + } + + { // list-references + var orgid string + var id string + var typeVal string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "list-references", + Short: "List references for a specific Asset", + Long: `Retrieve a list of all entities that have reference to an existing Asset by ID in a given organization. For example, Entry Points.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/asset/{id}/incoming-references") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + req.QueryParam("type", typeVal) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "ID of this contact center resource.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&typeVal, "type", "", "Entity type of the other entity that has a reference to this specific entity.") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + assetCmd.AddCommand(cmd) + } + + { // list + var orgid string + var filter string + var attributes string + var search string + var page string + var pageSize string + var sort string + var includeCount string + var singleObjectResponse string + var includeChannelName string + var excludeEpassociated string + cmd := &cobra.Command{ + Use: "list", + Short: "List Assets", + Long: `Retrieve a list of Assets in a given organization. Supports pagination metadata. Set includeChannelName to true to include the channel name in the response. Set excludeEPAssociated to true to return only assets that are not associated with any Entry Point.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/v2/asset") + req.PathParam("orgid", orgid) + req.QueryParam("filter", filter) + req.QueryParam("attributes", attributes) + req.QueryParam("search", search) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + req.QueryParam("sort", sort) + req.QueryParam("includeCount", includeCount) + req.QueryParam("singleObjectResponse", singleObjectResponse) + req.QueryParam("includeChannelName", includeChannelName) + req.QueryParam("excludeEPAssociated", excludeEpassociated) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&filter, "filter", "", "Filter expression") + cmd.Flags().StringVar(&attributes, "attributes", "", "Supported attributes") + cmd.Flags().StringVar(&search, "search", "", "Filter data based on the search keyword.Supported search columns(name) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\");value==\"Cisco\" ") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + cmd.Flags().StringVar(&sort, "sort", "", "Sortable properties") + cmd.Flags().StringVar(&includeCount, "include-count", "", "Include count") + cmd.Flags().StringVar(&singleObjectResponse, "single-object-response", "", "Specify whether to include array fields in the response. This query parameter should be used only when the response contains a single record. It is not supported for responses with multiple objects and throws an exception.") + cmd.Flags().StringVar(&includeChannelName, "include-channel-name", "", "Include channel name in the response.") + cmd.Flags().StringVar(&excludeEpassociated, "exclude-epassociated", "", "When true, return only assets that are not associated with any Entry Point.") + assetCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/audio_files.go b/cmd/cc/audio_files.go new file mode 100644 index 0000000..0796ee4 --- /dev/null +++ b/cmd/cc/audio_files.go @@ -0,0 +1,277 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var audioFilesCmd = &cobra.Command{ + Use: "audio-files", + Short: "AudioFiles commands", +} + +func init() { + cmd.CcCmd.AddCommand(audioFilesCmd) + + { // create + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a new Audio File", + Long: `Create a new Audio File in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/audio-file") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + audioFilesCmd.AddCommand(cmd) + } + + { // get + var orgid string + var id string + var includeUrl string + cmd := &cobra.Command{ + Use: "get", + Aliases: []string{"get-id"}, + Short: "Get specific Audio File by ID", + Long: `Retrieve an existing Audio File by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/audio-file/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + req.QueryParam("includeUrl", includeUrl) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Audio File.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&includeUrl, "include-url", "", "Indicates if the URL for downloading Audio Fileshould be included in the response.") + audioFilesCmd.AddCommand(cmd) + } + + { // update + var orgid string + var id string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Aliases: []string{"update-id"}, + Short: "Update specific Audio File by ID", + Long: `Update an existing Audio File by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PUT", "/organization/{orgid}/audio-file/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Audio File.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + audioFilesCmd.AddCommand(cmd) + } + + { // delete + var orgid string + var id string + cmd := &cobra.Command{ + Use: "delete", + Aliases: []string{"delete-id"}, + Short: "Delete specific Audio File by ID", + Long: `Delete an existing Audio File by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/organization/{orgid}/audio-file/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Audio File.") + cmd.MarkFlagRequired("id") + audioFilesCmd.AddCommand(cmd) + } + + { // patch + var orgid string + var id string + var description string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "patch", + Aliases: []string{"patch-id"}, + Short: "Partially update Audio File by ID", + Long: `Partially update Audio File by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PATCH", "/organization/{orgid}/audio-file/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("description", description) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Audio File.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&description, "description", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + audioFilesCmd.AddCommand(cmd) + } + + { // list-references + var orgid string + var id string + var typeVal string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "list-references", + Short: "List references for a specific Audio File", + Long: `Retrieve a list of all entities that have reference to an existing Audio File by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/audio-file/{id}/incoming-references") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + req.QueryParam("type", typeVal) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "ID of this contact center resource.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&typeVal, "type", "", "Entity type of the other entity that has a reference to this specific entity.") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + audioFilesCmd.AddCommand(cmd) + } + + { // list + var orgid string + var filter string + var attributes string + var search string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "list", + Short: "List Audio File(s)", + Long: `Retrieve a list of Audio File(s) in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/v2/audio-file") + req.PathParam("orgid", orgid) + req.QueryParam("filter", filter) + req.QueryParam("attributes", attributes) + req.QueryParam("search", search) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&filter, "filter", "", "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain space, and if so kindly bound it with quotes to apply filter. ") + cmd.Flags().StringVar(&attributes, "attributes", "", "Specify the attributes to be returned.Default all attributes are returned along with specified columns. All Attributes are supported except URL") + cmd.Flags().StringVar(&search, "search", "", "Filter data based on the search keyword.Supported search columns(name) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\");value==\"Cisco\" ") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + audioFilesCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/auto_csat.go b/cmd/cc/auto_csat.go new file mode 100644 index 0000000..85b180e --- /dev/null +++ b/cmd/cc/auto_csat.go @@ -0,0 +1,355 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + "strconv" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa + +var autoCsatCmd = &cobra.Command{ + Use: "auto-csat", + Short: "AutoCsat commands", +} + +func init() { + cmd.CcCmd.AddCommand(autoCsatCmd) + + { // create-mapped-question + var orgid string + var autoCsatId string + var questionId string + var questionnaireId string + var organizationId string + var id string + var version int64 + var createdTime int64 + var lastUpdatedTime int64 + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-mapped-question", + Short: "Create a new Auto CSAT mapped Question", + Long: `Create a new Auto CSAT mapped Question in a given organization. Deprecated. Use POST /ai-feature/auto-csat/question instead.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/auto-csat/{autoCsatId}/question") + req.PathParam("orgid", orgid) + req.PathParam("autoCsatId", autoCsatId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("questionId", questionId) + req.BodyString("questionnaireId", questionnaireId) + req.BodyString("organizationId", organizationId) + req.BodyString("id", id) + req.BodyInt("version", version, cmd.Flags().Changed("version")) + req.BodyInt("createdTime", createdTime, cmd.Flags().Changed("created-time")) + req.BodyInt("lastUpdatedTime", lastUpdatedTime, cmd.Flags().Changed("last-updated-time")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&autoCsatId, "auto-csat-id", "", "Resource ID of the Auto CSAT resource") + cmd.MarkFlagRequired("auto-csat-id") + cmd.Flags().StringVar(&questionId, "question-id", "", "") + cmd.Flags().StringVar(&questionnaireId, "questionnaire-id", "", "") + cmd.Flags().StringVar(&organizationId, "organization-id", "", "") + cmd.Flags().StringVar(&id, "id", "", "") + cmd.Flags().Int64Var(&version, "version", 0, "") + cmd.Flags().Int64Var(&createdTime, "created-time", 0, "") + cmd.Flags().Int64Var(&lastUpdatedTime, "last-updated-time", 0, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + autoCsatCmd.AddCommand(cmd) + } + + { // bulk-save-mapped-question + var orgid string + var autoCsatId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "bulk-save-mapped-question", + Short: "Bulk save Auto CSAT mapped Question(s)", + Long: `Create, Update or delete Auto CSAT mapped Question(s) in bulk for Auto CSAT resource in a given organization. Deprecated. Use POST /ai-feature/auto-csat/question/bulk instead.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/auto-csat/{autoCsatId}/question/bulk") + req.PathParam("orgid", orgid) + req.PathParam("autoCsatId", autoCsatId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&autoCsatId, "auto-csat-id", "", "Resource ID of the Auto CSAT resource") + cmd.MarkFlagRequired("auto-csat-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + autoCsatCmd.AddCommand(cmd) + } + + { // get-mapped-question-id + var orgid string + var autoCsatId string + var id string + cmd := &cobra.Command{ + Use: "get-mapped-question-id", + Short: "Get specific Auto CSAT mapped Question by ID", + Long: `Retrieve an existing Auto CSAT mapped Question by ID in a given organization. Deprecated. Use GET /ai-feature/auto-csat/question/{id} instead.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/auto-csat/{autoCsatId}/question/{id}") + req.PathParam("orgid", orgid) + req.PathParam("autoCsatId", autoCsatId) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&autoCsatId, "auto-csat-id", "", "Resource ID of the Auto CSAT resource") + cmd.MarkFlagRequired("auto-csat-id") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Auto CSAT mapped Question.") + cmd.MarkFlagRequired("id") + autoCsatCmd.AddCommand(cmd) + } + + { // delete-mapped-question-id + var orgid string + var autoCsatId string + var id string + cmd := &cobra.Command{ + Use: "delete-mapped-question-id", + Short: "Delete specific Auto CSAT mapped Question by ID", + Long: `Delete an existing Auto CSAT mapped Question by ID in a given organization. Deprecated. Use DELETE /ai-feature/auto-csat/question/{id} instead.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/organization/{orgid}/auto-csat/{autoCsatId}/question/{id}") + req.PathParam("orgid", orgid) + req.PathParam("autoCsatId", autoCsatId) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&autoCsatId, "auto-csat-id", "", "Resource ID of the Auto CSAT resource") + cmd.MarkFlagRequired("auto-csat-id") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Auto CSAT mapped Question.") + cmd.MarkFlagRequired("id") + autoCsatCmd.AddCommand(cmd) + } + + { // get + var orgid string + var id string + cmd := &cobra.Command{ + Use: "get", + Aliases: []string{"get-id"}, + Short: "Get specific Auto CSAT resource by ID", + Long: `Retrieve an existing Auto CSAT resource by ID in a given organization. Deprecated. Use GET /ai-feature/auto-csat/{id} instead.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/auto-csat/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Auto CSAT resource.") + cmd.MarkFlagRequired("id") + autoCsatCmd.AddCommand(cmd) + } + + { // update + var orgid string + var id string + var agentInclusionType string + var enabled bool + var selectedGlobalVariableId string + var surveyDataSource string + var organizationId string + var version int64 + var createdTime int64 + var lastUpdatedTime int64 + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Aliases: []string{"update-id"}, + Short: "Update specific Auto CSAT resource by ID", + Long: `Update an existing Auto CSAT resource by ID in a given organization. Deprecated. Use PUT /ai-feature/auto-csat/{id} instead.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PUT", "/organization/{orgid}/auto-csat/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("agentInclusionType", agentInclusionType) + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + req.BodyString("selectedGlobalVariableId", selectedGlobalVariableId) + req.BodyString("surveyDataSource", surveyDataSource) + req.BodyString("organizationId", organizationId) + req.BodyString("id", id) + req.BodyInt("version", version, cmd.Flags().Changed("version")) + req.BodyInt("createdTime", createdTime, cmd.Flags().Changed("created-time")) + req.BodyInt("lastUpdatedTime", lastUpdatedTime, cmd.Flags().Changed("last-updated-time")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Auto CSAT resource.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&agentInclusionType, "agent-inclusion-type", "", "") + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().StringVar(&selectedGlobalVariableId, "selected-global-variable-id", "", "") + cmd.Flags().StringVar(&surveyDataSource, "survey-data-source", "", "") + cmd.Flags().StringVar(&organizationId, "organization-id", "", "") + cmd.Flags().Int64Var(&version, "version", 0, "") + cmd.Flags().Int64Var(&createdTime, "created-time", 0, "") + cmd.Flags().Int64Var(&lastUpdatedTime, "last-updated-time", 0, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + autoCsatCmd.AddCommand(cmd) + } + + { // list + var orgid string + var filter string + var attributes string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "list", + Short: "List Auto CSAT resource(s)", + Long: `Retrieve a list of Auto CSAT resource(s) in a given organization.Only one entry per organization can exist for Auto CSAT resource. Deprecated. Use GET /v2/ai-feature/auto-csat instead.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/v2/auto-csat") + req.PathParam("orgid", orgid) + req.QueryParam("filter", filter) + req.QueryParam("attributes", attributes) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&filter, "filter", "", "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. ") + cmd.Flags().StringVar(&attributes, "attributes", "", "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported.") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + autoCsatCmd.AddCommand(cmd) + } + + { // list-mapped-question + var orgid string + var autoCsatId string + var filter string + var attributes string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "list-mapped-question", + Short: "List Auto CSAT mapped Question(s)", + Long: `Retrieve a list of Auto CSAT mapped Question(s) in a given organization. Deprecated. Use GET /v2/ai-feature/auto-csat/question instead.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/v2/auto-csat/{autoCsatId}/question") + req.PathParam("orgid", orgid) + req.PathParam("autoCsatId", autoCsatId) + req.QueryParam("filter", filter) + req.QueryParam("attributes", attributes) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&autoCsatId, "auto-csat-id", "", "Resource ID of the Auto CSAT resource") + cmd.MarkFlagRequired("auto-csat-id") + cmd.Flags().StringVar(&filter, "filter", "", "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. ") + cmd.Flags().StringVar(&attributes, "attributes", "", "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported.(id, questionId, questionnaireId)") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + autoCsatCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/auxiliary_code.go b/cmd/cc/auxiliary_code.go new file mode 100644 index 0000000..8abda27 --- /dev/null +++ b/cmd/cc/auxiliary_code.go @@ -0,0 +1,435 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + "strconv" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa + +var auxiliaryCodeCmd = &cobra.Command{ + Use: "auxiliary-code", + Short: "AuxiliaryCode commands", +} + +func init() { + cmd.CcCmd.AddCommand(auxiliaryCodeCmd) + + { // list + var orgid string + var filter string + var attributes string + var search string + var page string + var pageSize string + var desktopProfileFilter string + var supervisedUserId string + cmd := &cobra.Command{ + Use: "list", + Short: "List Auxiliary Code(s)", + Long: `Retrieve a list of Auxiliary Code(s) in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/v2/auxiliary-code") + req.PathParam("orgid", orgid) + req.QueryParam("filter", filter) + req.QueryParam("attributes", attributes) + req.QueryParam("search", search) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + req.QueryParam("desktopProfileFilter", desktopProfileFilter) + req.QueryParam("supervisedUserId", supervisedUserId) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&filter, "filter", "", "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime, validBurnoutForWrapUpCode, validBurnoutForIdleCode The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain space, and if so kindly bound it with quotes to apply filter. ") + cmd.Flags().StringVar(&attributes, "attributes", "", "Specify the attributes to be returned.Default all attributes are returned along with specified columns. All Attributes are supported") + cmd.Flags().StringVar(&search, "search", "", "Filter data based on the search keyword.Supported search columns(name, description) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\",\"description\");value==\"Cisco\" ") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + cmd.Flags().StringVar(&desktopProfileFilter, "desktop-profile-filter", "", "If set to true, the API will return only the data that the user has access to according to its Desktop Profile. If set to false, the API will not check for Desktop Profile level access.") + cmd.Flags().StringVar(&supervisedUserId, "supervised-user-id", "", "User Id of the Agent whose Agent Profile associated Idle Codes are to be fetched.") + auxiliaryCodeCmd.AddCommand(cmd) + } + + { // create + var orgid string + var active bool + var defaultCode bool + var name string + var workTypeCode string + var workTypeId string + var organizationId string + var id string + var version int64 + var description string + var isSystemCode bool + var burnoutInclusion string + var systemDefault bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a new Auxiliary Code", + Long: `Create a new Auxiliary Code in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/auxiliary-code") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("active", active, cmd.Flags().Changed("active")) + req.BodyBool("defaultCode", defaultCode, cmd.Flags().Changed("default-code")) + req.BodyString("name", name) + req.BodyString("workTypeCode", workTypeCode) + req.BodyString("workTypeId", workTypeId) + req.BodyString("organizationId", organizationId) + req.BodyString("id", id) + req.BodyInt("version", version, cmd.Flags().Changed("version")) + req.BodyString("description", description) + req.BodyBool("isSystemCode", isSystemCode, cmd.Flags().Changed("is-system-code")) + req.BodyString("burnoutInclusion", burnoutInclusion) + req.BodyBool("systemDefault", systemDefault, cmd.Flags().Changed("system-default")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().BoolVar(&active, "active", false, "") + cmd.Flags().BoolVar(&defaultCode, "default-code", false, "") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&workTypeCode, "work-type-code", "", "") + cmd.Flags().StringVar(&workTypeId, "work-type-id", "", "") + cmd.Flags().StringVar(&organizationId, "organization-id", "", "") + cmd.Flags().StringVar(&id, "id", "", "") + cmd.Flags().Int64Var(&version, "version", 0, "") + cmd.Flags().StringVar(&description, "description", "", "") + cmd.Flags().BoolVar(&isSystemCode, "is-system-code", false, "") + cmd.Flags().StringVar(&burnoutInclusion, "burnout-inclusion", "", "") + cmd.Flags().BoolVar(&systemDefault, "system-default", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + auxiliaryCodeCmd.AddCommand(cmd) + } + + { // bulk-save + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "bulk-save", + Short: "Bulk save Auxiliary Code(s)", + Long: `Create, Update or delete Auxiliary Code(s) in bulk in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/auxiliary-code/bulk") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + auxiliaryCodeCmd.AddCommand(cmd) + } + + { // bulk-partial-update + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "bulk-partial-update", + Short: "Bulk partial update Auxiliary Code(s)", + Long: `Update some or all properties for multiple Auxiliary codes in bulk in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PATCH", "/organization/{orgid}/auxiliary-code/bulk") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + auxiliaryCodeCmd.AddCommand(cmd) + } + + { // bulk-export + var orgid string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "bulk-export", + Short: "Bulk export Auxiliary Code(s)", + Long: `Export all Auxiliary Code(s) in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/auxiliary-code/bulk-export") + req.PathParam("orgid", orgid) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + auxiliaryCodeCmd.AddCommand(cmd) + } + + { // purge-inactive + var orgid string + var nextStartId string + cmd := &cobra.Command{ + Use: "purge-inactive", + Short: "Purge inactive Auxiliary Code(s)", + Long: `Purge inactive Auxiliary Code(s) older than the configured interval for a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/auxiliary-code/purge-inactive-entities") + req.PathParam("orgid", orgid) + req.QueryParam("nextStartId", nextStartId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&nextStartId, "next-start-id", "", "This is the entity ID from which items for the next purge batch with be selected.") + auxiliaryCodeCmd.AddCommand(cmd) + } + + { // get + var orgid string + var id string + cmd := &cobra.Command{ + Use: "get", + Aliases: []string{"get-id"}, + Short: "Get specific Auxiliary Code by ID", + Long: `Retrieve an existing Auxiliary Code by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/auxiliary-code/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Auxiliary Code") + cmd.MarkFlagRequired("id") + auxiliaryCodeCmd.AddCommand(cmd) + } + + { // update + var orgid string + var id string + var active bool + var defaultCode bool + var name string + var workTypeCode string + var workTypeId string + var organizationId string + var version int64 + var description string + var isSystemCode bool + var burnoutInclusion string + var systemDefault bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Aliases: []string{"update-id"}, + Short: "Update specific Auxiliary Code by ID", + Long: `Update an existing Auxiliary Code by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PUT", "/organization/{orgid}/auxiliary-code/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("active", active, cmd.Flags().Changed("active")) + req.BodyBool("defaultCode", defaultCode, cmd.Flags().Changed("default-code")) + req.BodyString("name", name) + req.BodyString("workTypeCode", workTypeCode) + req.BodyString("workTypeId", workTypeId) + req.BodyString("organizationId", organizationId) + req.BodyString("id", id) + req.BodyInt("version", version, cmd.Flags().Changed("version")) + req.BodyString("description", description) + req.BodyBool("isSystemCode", isSystemCode, cmd.Flags().Changed("is-system-code")) + req.BodyString("burnoutInclusion", burnoutInclusion) + req.BodyBool("systemDefault", systemDefault, cmd.Flags().Changed("system-default")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Auxiliary Code.") + cmd.MarkFlagRequired("id") + cmd.Flags().BoolVar(&active, "active", false, "") + cmd.Flags().BoolVar(&defaultCode, "default-code", false, "") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&workTypeCode, "work-type-code", "", "") + cmd.Flags().StringVar(&workTypeId, "work-type-id", "", "") + cmd.Flags().StringVar(&organizationId, "organization-id", "", "") + cmd.Flags().Int64Var(&version, "version", 0, "") + cmd.Flags().StringVar(&description, "description", "", "") + cmd.Flags().BoolVar(&isSystemCode, "is-system-code", false, "") + cmd.Flags().StringVar(&burnoutInclusion, "burnout-inclusion", "", "") + cmd.Flags().BoolVar(&systemDefault, "system-default", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + auxiliaryCodeCmd.AddCommand(cmd) + } + + { // delete + var orgid string + var id string + cmd := &cobra.Command{ + Use: "delete", + Aliases: []string{"delete-id"}, + Short: "Delete specific Auxiliary Code by ID", + Long: `Delete an existing Auxiliary Code by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/organization/{orgid}/auxiliary-code/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Auxiliary Code.") + cmd.MarkFlagRequired("id") + auxiliaryCodeCmd.AddCommand(cmd) + } + + { // list-references + var orgid string + var id string + var typeVal string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "list-references", + Short: "List references for a specific Auxiliary Code", + Long: `Retrieve a list of all entities that have reference to an existing Auxiliary Code by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/auxiliary-code/{id}/incoming-references") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + req.QueryParam("type", typeVal) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "ID of this contact center resource.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&typeVal, "type", "", "Entity type of the other entity that has a reference to this specific entity.") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + auxiliaryCodeCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/business_hour.go b/cmd/cc/business_hour.go new file mode 100644 index 0000000..bded5e9 --- /dev/null +++ b/cmd/cc/business_hour.go @@ -0,0 +1,311 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + "strconv" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa + +var businessHourCmd = &cobra.Command{ + Use: "business-hour", + Short: "BusinessHour commands", +} + +func init() { + cmd.CcCmd.AddCommand(businessHourCmd) + + { // list + var orgid string + var filter string + var attributes string + var search string + var page string + var pageSize string + var sort string + var includeCount string + var singleObjectResponse string + cmd := &cobra.Command{ + Use: "list", + Short: "List Business Hours resources", + Long: `Retrieve a list of Business Hours resources in a given organization. + Note: Returning array fields in the List (Get All) API response is deprecated. To retrieve the complete resource with all fields, please use the Get-by-ID API instead.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/v2/business-hours") + req.PathParam("orgid", orgid) + req.QueryParam("filter", filter) + req.QueryParam("attributes", attributes) + req.QueryParam("search", search) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + req.QueryParam("sort", sort) + req.QueryParam("includeCount", includeCount) + req.QueryParam("singleObjectResponse", singleObjectResponse) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&filter, "filter", "", "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, workingHours, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. ") + cmd.Flags().StringVar(&attributes, "attributes", "", "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported. except (workingHours)") + cmd.Flags().StringVar(&search, "search", "", "Filter data based on the search keyword.Supported search columns(name) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\");value==\"Cisco\" ") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + cmd.Flags().StringVar(&sort, "sort", "", "Sorting criteria in the format: property(, asc | desc). Default sort order is ascending. Supported sortable fields (name, timezone, createdTime, lastUpdatedTime). The examples below show some sort queries - name,asc - timezone,desc ") + cmd.Flags().StringVar(&includeCount, "include-count", "", "Enable this flag to get the count of working hours.") + cmd.Flags().StringVar(&singleObjectResponse, "single-object-response", "", "Specify whether to include array fields in the response. This query parameter should be used only when the response contains a single record. It is not supported for responses with multiple objects and throws an exception.") + businessHourCmd.AddCommand(cmd) + } + + { // create + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a new Business Hours resource", + Long: `Create a new Business Hours resource in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/business-hours") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + businessHourCmd.AddCommand(cmd) + } + + { // bulk-save + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "bulk-save", + Short: "Bulk save Business Hours resources", + Long: `Create, Update or delete Business Hours resources in bulk in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/business-hours/bulk") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + businessHourCmd.AddCommand(cmd) + } + + { // bulk-export + var orgid string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "bulk-export", + Short: "Bulk export Business Hours resource(s)", + Long: `Export all Business Hours resource(s) in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/business-hours/bulk-export") + req.PathParam("orgid", orgid) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + businessHourCmd.AddCommand(cmd) + } + + { // get + var orgid string + var id string + cmd := &cobra.Command{ + Use: "get", + Aliases: []string{"get-id"}, + Short: "Get specific Business Hours resource by ID", + Long: `Retrieve an existing Business Hours resource by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/business-hours/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Business Hour.") + cmd.MarkFlagRequired("id") + businessHourCmd.AddCommand(cmd) + } + + { // update + var orgid string + var id string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Aliases: []string{"update-id"}, + Short: "Update specific Business Hours resource by ID", + Long: `Update an existing Business Hours resource by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PUT", "/organization/{orgid}/business-hours/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Business Hour.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + businessHourCmd.AddCommand(cmd) + } + + { // delete + var orgid string + var id string + cmd := &cobra.Command{ + Use: "delete", + Aliases: []string{"delete-id"}, + Short: "Delete specific Business Hours resource by ID", + Long: `Delete an existing Business Hours resource by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/organization/{orgid}/business-hours/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Business Hour.") + cmd.MarkFlagRequired("id") + businessHourCmd.AddCommand(cmd) + } + + { // list-references + var orgid string + var id string + var typeVal string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "list-references", + Short: "List references for a specific Business Hours resource", + Long: `Retrieve a list of all entities that have reference to an existing Business Hours resource by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/business-hours/{id}/incoming-references") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + req.QueryParam("type", typeVal) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "ID of this contact center resource.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&typeVal, "type", "", "Entity type of the other entity that has a reference to this specific entity.") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + businessHourCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/call_monitor.go b/cmd/cc/call_monitor.go new file mode 100644 index 0000000..5b2f9a9 --- /dev/null +++ b/cmd/cc/call_monitor.go @@ -0,0 +1,245 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strings.Join + +var callMonitorCmd = &cobra.Command{ + Use: "call-monitor", + Aliases: []string{"call-monitoring"}, + Short: "Live call monitoring sessions: start, barge in, coach, hold, and end", +} + +func init() { + cmd.CcCmd.AddCommand(callMonitorCmd) + + { // create + var id string + var monitorType string + var taskId string + var queueIds []string + var teams []string + var sites []string + var agents []string + var trackingId string + var invisibleMode bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Aliases: []string{"create-request"}, + Short: "Create Monitoring Request", + Long: `Creates a monitoring request for an ongoing call or the next successful inbound or outbound call. Requires the 'cloud-contact-center:pod_conv' scope and either the 'cjp.supervisor' role with a supervisor profile or, when Licensed Administrator access is enabled, the 'cjp.admin' or 'id_full_admin' role together with the 'cjp.premium_agent' role and an administrator profile. When Licensed Administrator access is enabled, contact-center access and supervisor capabilities must also be enabled. The applicable Call Monitoring profile permissions and resource access are required. When Continuous Scheduled Monitoring is enabled, ad hoc and continuous requests are rejected; use POST /v2/monitor/{taskId} for mid-call monitoring.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v1/monitor") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("id", id) + req.BodyString("monitorType", monitorType) + req.BodyString("taskId", taskId) + req.BodyStringSlice("queueIds", queueIds) + req.BodyStringSlice("teams", teams) + req.BodyStringSlice("sites", sites) + req.BodyStringSlice("agents", agents) + req.BodyString("trackingId", trackingId) + req.BodyBool("invisibleMode", invisibleMode, cmd.Flags().Changed("invisible-mode")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "") + cmd.Flags().StringVar(&monitorType, "monitor-type", "", "") + cmd.Flags().StringVar(&taskId, "task-id", "", "") + cmd.Flags().StringSliceVar(&queueIds, "queue-ids", nil, "") + cmd.Flags().StringSliceVar(&teams, "teams", nil, "") + cmd.Flags().StringSliceVar(&sites, "sites", nil, "") + cmd.Flags().StringSliceVar(&agents, "agents", nil, "") + cmd.Flags().StringVar(&trackingId, "tracking-id", "", "") + cmd.Flags().BoolVar(&invisibleMode, "invisible-mode", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callMonitorCmd.AddCommand(cmd) + } + + { // barge-in + var taskId string + cmd := &cobra.Command{ + Use: "barge-in", + Aliases: []string{"barge-in-request"}, + Short: "BargeIn Request", + Long: `Creates a barge-in request to join a call that is already being monitored. Requires the 'cloud-contact-center:pod_conv' scope and either the 'cjp.supervisor' role with a supervisor profile or, when Licensed Administrator access is enabled, the 'cjp.admin' or 'id_full_admin' role together with the 'cjp.premium_agent' role and an administrator profile. When Licensed Administrator access is enabled, contact-center access and supervisor capabilities must also be enabled. The user profile must grant the Call Monitoring Barge In permission.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v1/monitor/{taskId}/bargeIn") + req.PathParam("taskId", taskId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&taskId, "task-id", "", "The unique ID representing the task that needs to be barged by the supervisor.") + cmd.MarkFlagRequired("task-id") + callMonitorCmd.AddCommand(cmd) + } + + { // end + var taskId string + cmd := &cobra.Command{ + Use: "end", + Aliases: []string{"end-request"}, + Short: "End Monitoring Request", + Long: `Ends an ongoing monitoring session. Requires the 'cloud-contact-center:pod_conv' scope and either the 'cjp.supervisor' role with a supervisor profile or, when Licensed Administrator access is enabled, the 'cjp.admin' or 'id_full_admin' role together with the 'cjp.premium_agent' role and an administrator profile. When Licensed Administrator access is enabled, contact-center access and supervisor capabilities must also be enabled. The user profile must grant access to the Call Monitoring module.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v1/monitor/{taskId}/end") + req.PathParam("taskId", taskId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&taskId, "task-id", "", "The unique ID represents the task that needs to end.") + cmd.MarkFlagRequired("task-id") + callMonitorCmd.AddCommand(cmd) + } + + { // hold + var taskId string + cmd := &cobra.Command{ + Use: "hold", + Aliases: []string{"hold-request"}, + Short: "Hold Monitoring Request", + Long: `Places the monitoring session for a call on hold. Requires the 'cloud-contact-center:pod_conv' scope and either the 'cjp.supervisor' role with a supervisor profile or, when Licensed Administrator access is enabled, the 'cjp.admin' or 'id_full_admin' role together with the 'cjp.premium_agent' role and an administrator profile. When Licensed Administrator access is enabled, contact-center access and supervisor capabilities must also be enabled. The user profile must grant access to the Call Monitoring module.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v1/monitor/{taskId}/hold") + req.PathParam("taskId", taskId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&taskId, "task-id", "", "The unique ID representing the task that needs to be held.") + cmd.MarkFlagRequired("task-id") + callMonitorCmd.AddCommand(cmd) + } + + { // unhold + var taskId string + cmd := &cobra.Command{ + Use: "unhold", + Aliases: []string{"unhold-request"}, + Short: "Unhold Monitoring Request", + Long: `Resumes a monitoring session that is on hold. Requires the 'cloud-contact-center:pod_conv' scope and either the 'cjp.supervisor' role with a supervisor profile or, when Licensed Administrator access is enabled, the 'cjp.admin' or 'id_full_admin' role together with the 'cjp.premium_agent' role and an administrator profile. When Licensed Administrator access is enabled, contact-center access and supervisor capabilities must also be enabled. The user profile must grant access to the Call Monitoring module.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v1/monitor/{taskId}/unhold") + req.PathParam("taskId", taskId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&taskId, "task-id", "", "The unique ID representing the task that needs to be resumed and was on hold already.") + cmd.MarkFlagRequired("task-id") + callMonitorCmd.AddCommand(cmd) + } + + { // list-sessions + cmd := &cobra.Command{ + Use: "list-sessions", + Aliases: []string{"get-sessions"}, + Short: "Fetch Monitoring Sessions", + Long: `Fetches all active monitoring subscriptions for the requesting user. Requires the 'cloud-contact-center:pod_read' scope and either the 'cjp.supervisor' role with a supervisor profile or, when Licensed Administrator access is enabled, the 'cjp.admin' or 'id_full_admin' role together with the 'cjp.premium_agent' role and an administrator profile. When Licensed Administrator access is enabled, contact-center access and supervisor capabilities must also be enabled. The user profile must grant access to the Call Monitoring module. This operation is unavailable when Continuous Scheduled Monitoring is enabled; use realtime data for active monitoring sessions in that mode.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/v1/monitor/sessions") + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + callMonitorCmd.AddCommand(cmd) + } + + { // delete + var requestId string + cmd := &cobra.Command{ + Use: "delete", + Aliases: []string{"delete-request"}, + Short: "Delete Monitoring Request", + Long: `Deletes a monitoring request. Requires the 'cloud-contact-center:pod_conv' scope and either the 'cjp.supervisor' role with a supervisor profile or, when Licensed Administrator access is enabled, the 'cjp.admin' or 'id_full_admin' role together with the 'cjp.premium_agent' role and an administrator profile. When Licensed Administrator access is enabled, contact-center access and supervisor capabilities must also be enabled. The user profile must grant access to the Call Monitoring module. This operation is unavailable when Continuous Scheduled Monitoring is enabled.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/v1/monitor/{requestId}") + req.PathParam("requestId", requestId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&requestId, "request-id", "", "The id with which the monitoring request has been created.") + cmd.MarkFlagRequired("request-id") + callMonitorCmd.AddCommand(cmd) + } + + { // whisper-coach + var interactionId string + cmd := &cobra.Command{ + Use: "whisper-coach", + Aliases: []string{"whisper-coach-request"}, + Short: "Whisper Coach Request", + Long: `Creates a Whisper Coach request to coach an agent on a call that is already being monitored. Requires the 'cloud-contact-center:pod_conv' scope and either the 'cjp.supervisor' role with a supervisor profile or, when Licensed Administrator access is enabled, the 'cjp.admin' or 'id_full_admin' role together with the 'cjp.premium_agent' role and an administrator profile. When Licensed Administrator access is enabled, contact-center access and supervisor capabilities must also be enabled. The user profile must grant Call Monitoring edit access and the Whisper Coach permission, and Whisper Coach must be enabled for the organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v1/monitor/{interactionId}/coach") + req.PathParam("interactionId", interactionId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&interactionId, "interaction-id", "", "The unique ID representing the monitored interaction that the supervisor needs to coach.") + cmd.MarkFlagRequired("interaction-id") + callMonitorCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/call_monitoring_config.go b/cmd/cc/call_monitoring_config.go new file mode 100644 index 0000000..6cb8080 --- /dev/null +++ b/cmd/cc/call_monitoring_config.go @@ -0,0 +1,272 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + "strconv" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa +var _ = strings.Join + +var callMonitoringConfigCmd = &cobra.Command{ + Use: "call-monitoring-config", + Short: "Saved call monitoring configurations", +} + +func init() { + cmd.CcCmd.AddCommand(callMonitoringConfigCmd) + + { // create + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a new Call Monitoring", + Long: `Create a new Call Monitoring in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/call-monitoring") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callMonitoringConfigCmd.AddCommand(cmd) + } + + { // delete-references + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "delete-references", + Short: "delete References Call Monitoring", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/call-monitoring/delete-reference") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callMonitoringConfigCmd.AddCommand(cmd) + } + + { // get + var orgid string + var id string + var includeFilterDetails string + cmd := &cobra.Command{ + Use: "get", + Short: "Get specific Call Monitoring by ID", + Long: `Retrieve an existing Call Monitoring by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/call-monitoring/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + req.QueryParam("includeFilterDetails", includeFilterDetails) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Call Monitoring.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&includeFilterDetails, "include-filter-details", "", "If set to true, the API response will include entity details (names) for teams, agents, and contact service queues.") + callMonitoringConfigCmd.AddCommand(cmd) + } + + { // update + var orgid string + var id string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Short: "Update specific Call Monitoring by ID", + Long: `Update an existing Call Monitoring by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PUT", "/organization/{orgid}/call-monitoring/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Call Monitoring.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callMonitoringConfigCmd.AddCommand(cmd) + } + + { // delete + var orgid string + var id string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete specific Call Monitoring by ID", + Long: `Delete an existing Call Monitoring by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/organization/{orgid}/call-monitoring/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Call Monitoring.") + cmd.MarkFlagRequired("id") + callMonitoringConfigCmd.AddCommand(cmd) + } + + { // patch + var orgid string + var id string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "patch", + Short: "Partially update Call Monitoring by ID", + Long: `Partially update Call Monitoring by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PATCH", "/organization/{orgid}/call-monitoring/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Call Monitoring.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callMonitoringConfigCmd.AddCommand(cmd) + } + + { // list + var orgid string + var filter string + var attributes string + var search string + var page string + var pageSize string + var includeUserDetails string + var includeFiltersCount string + var includeTotalCallMonitoringCountInOrg string + cmd := &cobra.Command{ + Use: "list", + Short: "List Call Monitoring Configurations", + Long: `Retrieve a list of Call Monitoring Configurations in a given organization. Note: Returning array fields in the List (Get All) API response is deprecated. To retrieve the complete resource with all fields, please use the Get-by-ID API instead.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/v2/call-monitoring") + req.PathParam("orgid", orgid) + req.QueryParam("filter", filter) + req.QueryParam("attributes", attributes) + req.QueryParam("search", search) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + req.QueryParam("includeUserDetails", includeUserDetails) + req.QueryParam("includeFiltersCount", includeFiltersCount) + req.QueryParam("includeTotalCallMonitoringCountInOrg", includeTotalCallMonitoringCountInOrg) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&filter, "filter", "", "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, teams, agents, contactServiceQueues, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. ") + cmd.Flags().StringVar(&attributes, "attributes", "", "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported. except teams, agents, contactServiceQueues The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. ") + cmd.Flags().StringVar(&search, "search", "", "Filter data based on the search keyword.Supported search columns(name) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\");value==\"Cisco\" ") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + cmd.Flags().StringVar(&includeUserDetails, "include-user-details", "", "If set to true, the API response will include user details (firstName, lastName, email) for the userId field.") + cmd.Flags().StringVar(&includeFiltersCount, "include-filters-count", "", "If set to true, the API response will include the count of specific agents, teams, and contact service queues associated with the call monitoring schedule.") + cmd.Flags().StringVar(&includeTotalCallMonitoringCountInOrg, "include-total-call-monitoring-count-in-org", "", "If set to true, the API response will include the total number of call monitoring schedules for the organization in the metadata.") + callMonitoringConfigCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/callbacks.go b/cmd/cc/callbacks.go new file mode 100644 index 0000000..5e6523a --- /dev/null +++ b/cmd/cc/callbacks.go @@ -0,0 +1,255 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var callbacksCmd = &cobra.Command{ + Use: "callbacks", + Short: "Callbacks commands", +} + +func init() { + cmd.CcCmd.AddCommand(callbacksCmd) + + { // schedule + var orgid string + var customerName string + var callbackNumber string + var timezone string + var scheduleDate string + var startTime string + var endTime string + var queueId string + var callbackReason string + var sourceInteraction string + var assigneeAgent string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "schedule", + Short: "Schedule a Callback", + Long: `Creates a new callback request for a customer. Authorization requires the cjp:user scope. The callback default endpoint (EP) and default ANI must be configured as mandatory settings to successfully make API calls.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v1/callbacks/organization/{orgid}/scheduled-callback") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("customerName", customerName) + req.BodyString("callbackNumber", callbackNumber) + req.BodyString("timezone", timezone) + req.BodyString("scheduleDate", scheduleDate) + req.BodyString("startTime", startTime) + req.BodyString("endTime", endTime) + req.BodyString("queueId", queueId) + req.BodyString("callbackReason", callbackReason) + req.BodyString("sourceInteraction", sourceInteraction) + req.BodyString("assigneeAgent", assigneeAgent) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "The organization ID for which the callback is being scheduled. This should be a valid UUID.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&customerName, "customer-name", "", "") + cmd.Flags().StringVar(&callbackNumber, "callback-number", "", "") + cmd.Flags().StringVar(&timezone, "timezone", "", "") + cmd.Flags().StringVar(&scheduleDate, "schedule-date", "", "") + cmd.Flags().StringVar(&startTime, "start-time", "", "") + cmd.Flags().StringVar(&endTime, "end-time", "", "") + cmd.Flags().StringVar(&queueId, "queue-id", "", "") + cmd.Flags().StringVar(&callbackReason, "callback-reason", "", "") + cmd.Flags().StringVar(&sourceInteraction, "source-interaction", "", "") + cmd.Flags().StringVar(&assigneeAgent, "assignee-agent", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callbacksCmd.AddCommand(cmd) + } + + { // get-scheduled + var orgid string + var callbackNumber string + var assigneeAgent string + var page string + var pageSize string + var sortBy string + var sortOrder string + cmd := &cobra.Command{ + Use: "get-scheduled", + Short: "Get scheduled callbacks", + Long: `Allows the user to list scheduled callbacks for a given customer number or assignee agent, excluding those whose scheduled trigger time has already passed. Requires 'cjp:user' scope for authorization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/v1/callbacks/organization/{orgid}/scheduled-callback") + req.PathParam("orgid", orgid) + req.QueryParam("callbackNumber", callbackNumber) + req.QueryParam("assigneeAgent", assigneeAgent) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + req.QueryParam("sortBy", sortBy) + req.QueryParam("sortOrder", sortOrder) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "The organization ID for which the callback is being scheduled. This should be a valid UUID.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&callbackNumber, "callback-number", "", "The callback customer number to filter the scheduled callbacks. Only an exact match will yield the result. Allows an optional country code followed by digits (0-9) and the special characters: space, hyphen -, parentheses ( and ), and period ., ensuring the total length is between 7 and 15 characters.") + cmd.Flags().StringVar(&assigneeAgent, "assignee-agent", "", "The unique identifier of the agent assigned to handle the callback. Must be in UUID format. This parameter is optional, but at least one of assigneeAgent or callbackNumber must be provided.") + cmd.Flags().StringVar(&page, "page", "", "The page number to retrieve.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "The number of items per page.") + cmd.Flags().StringVar(&sortBy, "sort-by", "", "The field to sort the results by. If `sortBy` is set to `assignedTime`, the `assigneeAgent` parameter must also be provided.") + cmd.Flags().StringVar(&sortOrder, "sort-order", "", "The order to sort the results in.") + callbacksCmd.AddCommand(cmd) + } + + { // get-scheduled-id + var orgid string + var id string + cmd := &cobra.Command{ + Use: "get-scheduled-id", + Short: "Get scheduled callback by Id", + Long: `Retrieve an existing scheduled callback by Id, excluding those whose scheduled trigger time has already passed. Requires 'cjp:user' scope for authorization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/v1/callbacks/organization/{orgid}/scheduled-callback/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "The organization ID for which the callback is being scheduled. This should be a valid UUID.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "The id with which the Scheduled Callback has been created.") + cmd.MarkFlagRequired("id") + callbacksCmd.AddCommand(cmd) + } + + { // update-scheduled-id + var orgid string + var id string + var customerName string + var callbackNumber string + var timezone string + var scheduleDate string + var startTime string + var endTime string + var queueId string + var callbackReason string + var sourceInteraction string + var assigneeAgent string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-scheduled-id", + Short: "Update scheduled callback by Id", + Long: `Update an existing scheduled callback by Id,those whose scheduled trigger time has already passed cannot be updated. Requires 'cjp:user' scope for authorization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PUT", "/v1/callbacks/organization/{orgid}/scheduled-callback/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("id", id) + req.BodyString("customerName", customerName) + req.BodyString("callbackNumber", callbackNumber) + req.BodyString("timezone", timezone) + req.BodyString("scheduleDate", scheduleDate) + req.BodyString("startTime", startTime) + req.BodyString("endTime", endTime) + req.BodyString("queueId", queueId) + req.BodyString("callbackReason", callbackReason) + req.BodyString("sourceInteraction", sourceInteraction) + req.BodyString("assigneeAgent", assigneeAgent) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "The organization ID for which the callback is being scheduled. This should be a valid UUID.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "The id with which the Scheduled Callback has been created.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&customerName, "customer-name", "", "") + cmd.Flags().StringVar(&callbackNumber, "callback-number", "", "") + cmd.Flags().StringVar(&timezone, "timezone", "", "") + cmd.Flags().StringVar(&scheduleDate, "schedule-date", "", "") + cmd.Flags().StringVar(&startTime, "start-time", "", "") + cmd.Flags().StringVar(&endTime, "end-time", "", "") + cmd.Flags().StringVar(&queueId, "queue-id", "", "") + cmd.Flags().StringVar(&callbackReason, "callback-reason", "", "") + cmd.Flags().StringVar(&sourceInteraction, "source-interaction", "", "") + cmd.Flags().StringVar(&assigneeAgent, "assignee-agent", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + callbacksCmd.AddCommand(cmd) + } + + { // delete-scheduled-id + var orgid string + var id string + cmd := &cobra.Command{ + Use: "delete-scheduled-id", + Short: "Delete scheduled callback by Id", + Long: `Delete an existing scheduled callback by Id, those whose scheduled trigger time has already passed cannot be deleted. Requires 'cjp:user' scope for authorization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/v1/callbacks/organization/{orgid}/scheduled-callback/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "The organization ID for which the callback is being scheduled. This should be a valid UUID.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "The id with which the Scheduled Callback has been created.") + cmd.MarkFlagRequired("id") + callbacksCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/campaign_group.go b/cmd/cc/campaign_group.go new file mode 100644 index 0000000..07aa7e5 --- /dev/null +++ b/cmd/cc/campaign_group.go @@ -0,0 +1,65 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var campaignGroupCmd = &cobra.Command{ + Use: "campaign-group", + Short: "CampaignGroup commands", +} + +func init() { + cmd.CcCmd.AddCommand(campaignGroupCmd) + + { // list + var campaignGroupName string + var page string + var pageSize string + var campaignStatus string + cmd := &cobra.Command{ + Use: "list", + Short: "List Campaigns by Campaign Group", + Long: "Retrieves the list of campaigns that belong to the specified campaign group. Results are paginated and can optionally be filtered by campaign status.\n\n**Note:** The `campaignStatus` filter is case-insensitive. Allowed values are `Draft`, `Running`, `Pending`, `Paused`, `Completed`, `Ended`. Unknown values will result in a 400 response.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/v3/campaign-management/campaign-groups/{campaignGroupName}/campaigns") + req.PathParam("campaignGroupName", campaignGroupName) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + req.QueryParam("campaignStatus", campaignStatus) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&campaignGroupName, "campaign-group-name", "", "The name of the campaign group whose campaigns are to be retrieved. Case-insensitive matching. **Allowed characters:** - `A-Z`, `a-z`, `0-9`, `_` (underscore), space **Allowed Length** `1..64`") + cmd.MarkFlagRequired("campaign-group-name") + cmd.Flags().StringVar(&page, "page", "", "The page number of the result set to retrieve (1-based).") + cmd.Flags().StringVar(&pageSize, "page-size", "", "The number of campaigns to return per page. Must be between 1 and 100.") + cmd.Flags().StringVar(&campaignStatus, "campaign-status", "", "Optional filter for campaign status. Case-insensitive. Allowed values: `Draft`, `Running`, `Pending`, `Paused`, `Completed`, `Ended`.") + campaignGroupCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/campaign_manager.go b/cmd/cc/campaign_manager.go new file mode 100644 index 0000000..cd24733 --- /dev/null +++ b/cmd/cc/campaign_manager.go @@ -0,0 +1,146 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + "strconv" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa +var _ = strings.Join + +var campaignManagerCmd = &cobra.Command{ + Use: "campaign-manager", + Short: "CampaignManager commands", +} + +func init() { + cmd.CcCmd.AddCommand(campaignManagerCmd) + + { // start-request + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "start-request", + Short: "Start Campaign Request", + Long: `A start campaign API allows businesses to programmatically start outbound campaigns using their own software applications. This type of API typically allows businesses to set up the parameters for a campaign, such as the list of phone numbers to call, the message or script to deliver, and the time of day or day of the week to call. Requires 'cjp.config_write' scope and one of the following roles: 'cjp.admin','id_full_admin','atlas-portal.partner.salesadmin','atlas-portal.partner.provision_admin' for authorization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v1/dialer/campaign") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + campaignManagerCmd.AddCommand(cmd) + } + + { // update-request + var campaignId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-request", + Short: "Update Campaign Request", + Long: `By using an update campaign API, businesses can automate the process of modifying and managing outbound campaigns, and integrate campaign updates into their existing workflows or applications. This can help to improve efficiency and reduce errors, as well as allow for greater flexibility and control over outbound campaigns. Requires 'cjp.config_write' scope and one of the following roles: 'cjp.admin','id_full_admin','atlas-portal.partner.salesadmin','atlas-portal.partner.provision_admin' for authorization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PUT", "/v1/dialer/campaign/{campaignId}") + req.PathParam("campaignId", campaignId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&campaignId, "campaign-id", "", "The unique request id of the campaign that needs to be updated") + cmd.MarkFlagRequired("campaign-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + campaignManagerCmd.AddCommand(cmd) + } + + { // stop-request + var campaignId string + cmd := &cobra.Command{ + Use: "stop-request", + Short: "Stop Campaign Request", + Long: `The stop campaign API enables businesses to automate the process of managing outbound campaigns and integrate campaign deletion into their existing workflows or applications. Requires 'cjp.config_write' scope and one of the following roles: 'cjp.admin','id_full_admin','atlas-portal.partner.salesadmin','atlas-portal.partner.provision_admin' for authorization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/v1/dialer/campaign/{campaignId}") + req.PathParam("campaignId", campaignId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&campaignId, "campaign-id", "", "The unique request id of the campaign that needs to be stopped") + cmd.MarkFlagRequired("campaign-id") + campaignManagerCmd.AddCommand(cmd) + } + + { // get-valid-times + var orgid string + var campaignId string + var interactionId string + var agentId string + var trackingId string + cmd := &cobra.Command{ + Use: "get-valid-times", + Short: "Get Valid Campaign Times", + Long: `Gets valid campaign times for a campaign and agent. This request is accepted for asynchronous processing. Requires 'cjp:user','cjp.config_write' scope and one of the following roles: 'cjp.admin','id_full_admin','atlas-portal.partner.salesadmin','atlas-portal.partner.provision_admin' for authorization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/v1/organization/{orgid}/getValidCampaignTimes") + req.PathParam("orgid", orgid) + req.QueryParam("campaignId", campaignId) + req.QueryParam("interactionId", interactionId) + req.QueryParam("agentId", agentId) + req.QueryParam("trackingId", trackingId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "The organization ID for which valid campaign times are being requested.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&campaignId, "campaign-id", "", "The campaign ID for which valid campaign times are being requested.") + cmd.Flags().StringVar(&interactionId, "interaction-id", "", "The unique identifier of the interaction associated with this request.") + cmd.Flags().StringVar(&agentId, "agent-id", "", "The agent ID for whom valid campaign times are being requested.") + cmd.Flags().StringVar(&trackingId, "tracking-id", "", "Optional tracking identifier for request tracing.") + campaignManagerCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/captures.go b/cmd/cc/captures.go new file mode 100644 index 0000000..2dd70ba --- /dev/null +++ b/cmd/cc/captures.go @@ -0,0 +1,56 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var capturesCmd = &cobra.Command{ + Use: "captures", + Short: "Captures commands", +} + +func init() { + cmd.CcCmd.AddCommand(capturesCmd) + + { // list + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "list", + Short: "List Captures", + Long: "Retrieve a list of Captures given a set of task IDs.\n\n### Captures Availability\n\nNot all tasks will have captures by default and they will be available based on the organization's configurations and retention policy. Querying closed tasks is recommended, as open tasks may return incomplete data.\n\nTranscripts retrieved through this API are post-interaction artifacts.\n- For voice, transcripts are available when at least one transcript based configuration/feature is enabled such as Auto CSAT, Agent Well Being, Call Drop Summary, Topics Analytics.\n\n- For digital channels such as Chat, Email, Social, Work Item, and Custom Messaging, transcripts are generated from the conversation messages. Please refer [guide for digital transcripts](/docs/guide-for-digital-transcripts) for more details\n\n### URL Expiry\n\nThe maximum duration of validity of pre signed URL or default value when no value is passed for urlExpiration is 60 minutes.\n\n### Authentication & Authorization\n\nThis API requires a valid bearer token. The caller must satisfy the scope and role requirements for one of the following:\n\n#### Service App\n- **Required Scope:** `cjp:config_read`\n- The `orgId` must be provided in the request body and must match the token's org.\n- For service app setup, refer to [Contact Center Service Apps](/docs/contact-center-service-apps).\n\n#### Org Admin\n- **Required Scopes:** `Identity:SCIM` and `Identity:Organization`\n- **Required Role (one of):** `id_full_admin`, `id_readonly_admin`, `cjp.admin`, or `atlas-portal.partner.provision_admin`\n- The user must belong to the organization being queried. If `orgId` is provided in the request body, it must match the token's org. If `orgId` is omitted, it is inferred from the token.\n\n#### Partner Admin\n- **Required Scope:** `Identity:SCIM` for the managed org\n- **Required Role:** `atlas-portal.partner.salesadmin`\n- The org ID must be included in the managed org list. This is accomplished by adding the org to the `Managed customer orgs` list in control hub.\n\n#### Supervisor\n- **Required Role:** `cjp.supervisor`\n- The user must belong to the organization being queried. If `orgId` is provided in the request body, it must match the token's org. If `orgId` is omitted, it is inferred from the token.\n\n**Note:** Please refer to the contact center setup documentation for the configuration details.\n\n", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v1/captures/query") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + capturesCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/channel.go b/cmd/cc/channel.go new file mode 100644 index 0000000..96ff2fa --- /dev/null +++ b/cmd/cc/channel.go @@ -0,0 +1,316 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var channelCmd = &cobra.Command{ + Use: "channel", + Short: "Channel commands", +} + +func init() { + cmd.CcCmd.AddCommand(channelCmd) + + { // create + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a new Channel", + Long: `Create a new Channel in a given organization. Supports custom channels for work items.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/channel") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + channelCmd.AddCommand(cmd) + } + + { // bulk-save + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "bulk-save", + Short: "Bulk save Channels", + Long: `Create, Update or delete Channels in bulk in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/channel/bulk") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + channelCmd.AddCommand(cmd) + } + + { // get + var orgid string + var id string + var includeLogoUrlVersioned string + cmd := &cobra.Command{ + Use: "get", + Aliases: []string{"get-id"}, + Short: "Get specific Channel by ID", + Long: `Retrieve an existing Channel by ID in a given organization. Set includeLogoUrlVersioned to true to include logoUrlVersioned in the response.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/channel/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + req.QueryParam("includeLogoUrlVersioned", includeLogoUrlVersioned) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Channel") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&includeLogoUrlVersioned, "include-logo-url-versioned", "", "Include logoUrlVersioned in the response.") + channelCmd.AddCommand(cmd) + } + + { // update + var orgid string + var id string + cmd := &cobra.Command{ + Use: "update", + Aliases: []string{"update-id"}, + Short: "Update specific Channel by ID", + Long: `Update an existing Channel by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PUT", "/organization/{orgid}/channel/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Channel") + cmd.MarkFlagRequired("id") + channelCmd.AddCommand(cmd) + } + + { // delete + var orgid string + var id string + cmd := &cobra.Command{ + Use: "delete", + Aliases: []string{"delete-id"}, + Short: "Delete specific Channel by ID", + Long: `Delete an existing Channel by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/organization/{orgid}/channel/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Channel") + cmd.MarkFlagRequired("id") + channelCmd.AddCommand(cmd) + } + + { // patch + var orgid string + var id string + var description string + var logoType string + var logoIconName string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "patch", + Aliases: []string{"patch-id"}, + Short: "Partially update Channel by ID", + Long: `Partially update a channel by ID. Only the supplied fields are changed; absent fields retain their current values. Patchable fields: name, description, logoType (MOMENTUM only), logoIconName. logoUrl and logoUrlVersioned cannot be changed by using PATCH; use PUT to update the logo image. channelType cannot be changed after creation. in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PATCH", "/organization/{orgid}/channel/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("description", description) + req.BodyString("logoType", logoType) + req.BodyString("logoIconName", logoIconName) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Channel") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&description, "description", "", "") + cmd.Flags().StringVar(&logoType, "logo-type", "", "") + cmd.Flags().StringVar(&logoIconName, "logo-icon-name", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + channelCmd.AddCommand(cmd) + } + + { // list-references + var orgid string + var id string + var typeVal string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "list-references", + Short: "List references for a specific Channel", + Long: `Retrieve a list of all entities that have reference to an existing Channel by ID in a given organization. Includes Asset and Entry Point entities that reference the channel.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/channel/{id}/incoming-references") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + req.QueryParam("type", typeVal) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "ID of this contact center resource.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&typeVal, "type", "", "Entity type of the other entity that has a reference to this specific entity.") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + channelCmd.AddCommand(cmd) + } + + { // list + var orgid string + var filter string + var attributes string + var search string + var page string + var pageSize string + var sort string + var includeCount string + var singleObjectResponse string + var includeLogoUrlVersioned string + cmd := &cobra.Command{ + Use: "list", + Short: "List Channels", + Long: `Retrieve a list of Channels in a given organization. Supports pagination metadata. Set includeLogoUrlVersioned to true to include logoUrlVersioned in the response. Note: Returning array fields in the List (Get All) API response is deprecated. To retrieve the complete resource with all fields, please use the Get-by-ID API instead.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/v2/channel") + req.PathParam("orgid", orgid) + req.QueryParam("filter", filter) + req.QueryParam("attributes", attributes) + req.QueryParam("search", search) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + req.QueryParam("sort", sort) + req.QueryParam("includeCount", includeCount) + req.QueryParam("singleObjectResponse", singleObjectResponse) + req.QueryParam("includeLogoUrlVersioned", includeLogoUrlVersioned) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&filter, "filter", "", "Filter expression") + cmd.Flags().StringVar(&attributes, "attributes", "", "Supported attributes") + cmd.Flags().StringVar(&search, "search", "", "Filter data based on the search keyword.Supported search columns(name) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\");value==\"Cisco\" ") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + cmd.Flags().StringVar(&sort, "sort", "", "Sortable properties") + cmd.Flags().StringVar(&includeCount, "include-count", "", "If set to true, the API response includes the asset count.") + cmd.Flags().StringVar(&singleObjectResponse, "single-object-response", "", "Specify whether to include array fields in the response. This query parameter should be used only when the response contains a single record. It is not supported for responses with multiple objects and throws an exception.") + cmd.Flags().StringVar(&includeLogoUrlVersioned, "include-logo-url-versioned", "", "Include logoUrlVersioned in the response.") + channelCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/commands.go b/cmd/cc/commands.go deleted file mode 100644 index b6655d3..0000000 --- a/cmd/cc/commands.go +++ /dev/null @@ -1,16 +0,0 @@ -// Package cc publishes the Webex Contact Center API commands, built from the -// operation table, plus handwritten commands for search and file uploads. -package cc - -import ( - cmd "github.com/Cloverhound/webex-cli/cmd" - "github.com/Cloverhound/webex-cli/internal/apicmd" -) - -var groups = apicmd.Register(cmd.CcCmd, "cc") - -// Groups that handwritten commands join. -var ( - audioFilesCmd = groups["audio-files"] - agentPersonalGreetingFilesCmd = groups["agent-personal-greeting-files"] -) diff --git a/cmd/cc/contact_list_management.go b/cmd/cc/contact_list_management.go new file mode 100644 index 0000000..022f044 --- /dev/null +++ b/cmd/cc/contact_list_management.go @@ -0,0 +1,270 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + "strconv" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa +var _ = strings.Join + +var contactListManagementCmd = &cobra.Command{ + Use: "contact-list-management", + Short: "ContactListManagement commands", +} + +func init() { + cmd.CcCmd.AddCommand(contactListManagementCmd) + + { // create + var campaignId string + var supportedChannels []string + var activationTimeLagMinutes int64 + var activationDateTime string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create contact list", + Long: `Creates and activates a contact list for a campaign. The system can activate a contact list even if there are no contact records within it.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v3/campaign-management/campaigns/{campaignId}/contact-list") + req.PathParam("campaignId", campaignId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("supportedChannels", supportedChannels) + req.BodyInt("activationTimeLagMinutes", activationTimeLagMinutes, cmd.Flags().Changed("activation-time-lag-minutes")) + req.BodyString("activationDateTime", activationDateTime) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&campaignId, "campaign-id", "", "Campaign ID to which the contact list belongs.") + cmd.MarkFlagRequired("campaign-id") + cmd.Flags().StringSliceVar(&supportedChannels, "supported-channels", nil, "") + cmd.Flags().Int64Var(&activationTimeLagMinutes, "activation-time-lag-minutes", 0, "") + cmd.Flags().StringVar(&activationDateTime, "activation-date-time", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + contactListManagementCmd.AddCommand(cmd) + } + + { // create-within + var campaignId string + var contactListId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-within", + Short: "Create contacts within a contact list", + Long: `Creates contacts within a contact list (only if that contact list was created using API method). If the contact record is invalid, it will be added as INVALID and reflected in the 'Processed' and 'Invalid' counts. This is an Asynchronous operation. The values within the 'contactAttributes' param should conform to datatypes of the contact attributes as specified in the 'Field mapping' associated with the campaign.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v3/campaign-management/campaigns/{campaignId}/contact-list/{contactListId}/contacts") + req.PathParam("campaignId", campaignId) + req.PathParam("contactListId", contactListId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&campaignId, "campaign-id", "", "Campaign ID to which the contact list belongs.") + cmd.MarkFlagRequired("campaign-id") + cmd.Flags().StringVar(&contactListId, "contact-list-id", "", "Contact List ID (as a number string).") + cmd.MarkFlagRequired("contact-list-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + contactListManagementCmd.AddCommand(cmd) + } + + { // update-status-within + var campaignId string + var contactListId string + var contactId string + var contactStatus string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-status-within", + Short: "Update a contact's status within a contact list", + Long: `Updates a contact's status within a contact list. After update, system overwrites 'Latest Telephony Outcome' to blank and 'Latest Business Outcome' to 'Closed via API call' if status is CLOSED. This is an Asynchronous operation.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PATCH", "/v3/campaign-management/campaigns/{campaignId}/contact-list/{contactListId}/contacts/{contactId}") + req.PathParam("campaignId", campaignId) + req.PathParam("contactListId", contactListId) + req.PathParam("contactId", contactId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("contactStatus", contactStatus) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&campaignId, "campaign-id", "", "Campaign ID.") + cmd.MarkFlagRequired("campaign-id") + cmd.Flags().StringVar(&contactListId, "contact-list-id", "", "Contact List ID (as a number string).") + cmd.MarkFlagRequired("contact-list-id") + cmd.Flags().StringVar(&contactId, "contact-id", "", "Contact Unique ID (Contact Phone or Customer Unique ID or Account Unique ID)") + cmd.MarkFlagRequired("contact-id") + cmd.Flags().StringVar(&contactStatus, "contact-status", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + contactListManagementCmd.AddCommand(cmd) + } + + { // update-status + var campaignId string + var contactListId string + var contactListStatus string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-status", + Short: "Update contact list status", + Long: `Updates the status of a contact list (e.g., EXPIRED). Note: This value is not case-sensitive.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PATCH", "/v3/campaign-management/campaigns/{campaignId}/contact-list/{contactListId}/status") + req.PathParam("campaignId", campaignId) + req.PathParam("contactListId", contactListId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("contactListStatus", contactListStatus) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&campaignId, "campaign-id", "", "Campaign ID.") + cmd.MarkFlagRequired("campaign-id") + cmd.Flags().StringVar(&contactListId, "contact-list-id", "", "Contact List ID (as a number string).") + cmd.MarkFlagRequired("contact-list-id") + cmd.Flags().StringVar(&contactListStatus, "contact-list-status", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + contactListManagementCmd.AddCommand(cmd) + } + + { // get-within-campaign + var campaignId string + var status string + var source string + cmd := &cobra.Command{ + Use: "get-within-campaign", + Short: "Get Contact Lists within a Campaign", + Long: "Retrieves all contact lists within a campaign. Use the optional `status` and `source` query parameters to filter results.\n\nEach contact list in the response includes the source file name, the time contact counts were last updated, and a breakdown of contact counts by processing and dialer status (for example, processed, invalid, valid, eligible, fresh, open, closed, and ready for dialer).\n\nResponses may reflect the same data for up to 30 seconds when the same campaign and filters are requested repeatedly.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/v4/campaign-management/campaigns/{campaignId}/contact-lists") + req.PathParam("campaignId", campaignId) + req.QueryParam("status", status) + req.QueryParam("source", source) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&campaignId, "campaign-id", "", "Campaign ID.") + cmd.MarkFlagRequired("campaign-id") + cmd.Flags().StringVar(&status, "status", "", "Contact List Status filter (Active, Expired, UploadFailed, etc.)") + cmd.Flags().StringVar(&source, "source", "", "Contact List Source filter (API, SFTP, ManualFile)") + contactListManagementCmd.AddCommand(cmd) + } + + { // update-status-across-campaign-chain + var campaignId string + var contactId string + var contactListId string + var fields string + var contactStatus string + var searchAcrossTheCampaignChain string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-status-across-campaign-chain", + Short: "Update contact status across the campaign chain", + Long: "Synchronously closes the specified contacts and returns the outcome in the same response. Contacts are identified using the same unique identifiers configured in your campaign field mappings, such as Contact Phone (format as per the associated field mapping) or Customer Unique ID or Account Unique ID (For more info, please refer to the [global variables help documentation](https://docs-campaign-for-contact-centers.webexcampaign.com/docs/global-variables)).\n\n By default, the API searches the specified campaign and any of its downstream target campaigns in the chain (across all active contact-lists associated with these campaigns), and closes the contact wherever it is found in a closeable state. Set `searchAcrossTheCampaignChain` to `no` to close the contact only in the campaign specified in the request path.\n\n**Optional query parameters**\n\n- `contactListId` - Search only the specific contact-list within the campaign specified in the request path. If `searchAcrossTheCampaignChain` is set to `yes` then all active contact-lists in the other downstream target campaigns in the chain are also searched.\n- `fields` - Return specified contact field values in the response for the matching contact records (for example: FirstName, LastName, AmountDue).", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PATCH", "/v3/campaign-management/campaigns/{campaignId}/contacts/{contactId}") + req.PathParam("campaignId", campaignId) + req.PathParam("contactId", contactId) + req.QueryParam("contactListId", contactListId) + req.QueryParam("fields", fields) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("contactStatus", contactStatus) + req.BodyString("searchAcrossTheCampaignChain", searchAcrossTheCampaignChain) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&campaignId, "campaign-id", "", "Campaign ID (as a string). All downstream target campaigns in the chain are included in the search.") + cmd.MarkFlagRequired("campaign-id") + cmd.Flags().StringVar(&contactId, "contact-id", "", "Contact Unique ID (Contact Phone or Customer Unique ID or Account Unique ID)") + cmd.MarkFlagRequired("contact-id") + cmd.Flags().StringVar(&contactListId, "contact-list-id", "", "Optional. Search only the specific contact-list within the campaign specified in the request path. If `searchAcrossTheCampaignChain` is set to `yes`, then all active contact-lists in the other downstream target campaigns in the chain are also searched. When omitted, all active contact lists in that campaign are searched.") + cmd.Flags().StringVar(&fields, "fields", "", "Optional. Contact field names to include in the response (comma-separated names).") + cmd.Flags().StringVar(&contactStatus, "contact-status", "", "") + cmd.Flags().StringVar(&searchAcrossTheCampaignChain, "search-across-the-campaign-chain", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + contactListManagementCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/contact_number.go b/cmd/cc/contact_number.go new file mode 100644 index 0000000..752d3dd --- /dev/null +++ b/cmd/cc/contact_number.go @@ -0,0 +1,312 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + "strconv" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa + +var contactNumberCmd = &cobra.Command{ + Use: "contact-number", + Short: "ContactNumber commands", +} + +func init() { + cmd.CcCmd.AddCommand(contactNumberCmd) + + { // create + var orgid string + var number string + var organizationId string + var id string + var version int64 + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a new Contact Number", + Long: `Create a new Contact Number in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/contact-number") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("number", number) + req.BodyString("organizationId", organizationId) + req.BodyString("id", id) + req.BodyInt("version", version, cmd.Flags().Changed("version")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&number, "number", "", "") + cmd.Flags().StringVar(&organizationId, "organization-id", "", "") + cmd.Flags().StringVar(&id, "id", "", "") + cmd.Flags().Int64Var(&version, "version", 0, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + contactNumberCmd.AddCommand(cmd) + } + + { // list-all + var orgid string + cmd := &cobra.Command{ + Use: "list-all", + Short: "List all contact numbers(property - number)", + Long: `Retrieve a list of only contact numbers(property - number) from Contact Number(s) without pagination in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/contact-number/all-numbers") + req.PathParam("orgid", orgid) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + contactNumberCmd.AddCommand(cmd) + } + + { // bulk-save + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "bulk-save", + Short: "Bulk save Contact Number(s)", + Long: `Create, Update or delete Contact Number(s) in bulk in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/contact-number/bulk") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + contactNumberCmd.AddCommand(cmd) + } + + { // bulk-export + var orgid string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "bulk-export", + Short: "Bulk export Contact Number(s)", + Long: `Export all Contact Number(s) in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/contact-number/bulk-export") + req.PathParam("orgid", orgid) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + contactNumberCmd.AddCommand(cmd) + } + + { // get + var orgid string + var id string + cmd := &cobra.Command{ + Use: "get", + Aliases: []string{"get-id"}, + Short: "Get specific Contact Number by ID", + Long: `Retrieve an existing Contact Number by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/contact-number/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Contact Number.") + cmd.MarkFlagRequired("id") + contactNumberCmd.AddCommand(cmd) + } + + { // update + var orgid string + var id string + var number string + var organizationId string + var version int64 + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Aliases: []string{"update-id"}, + Short: "Update specific Contact Number by ID", + Long: `Update an existing Contact Number by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PUT", "/organization/{orgid}/contact-number/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("number", number) + req.BodyString("organizationId", organizationId) + req.BodyString("id", id) + req.BodyInt("version", version, cmd.Flags().Changed("version")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Contact Number.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&number, "number", "", "") + cmd.Flags().StringVar(&organizationId, "organization-id", "", "") + cmd.Flags().Int64Var(&version, "version", 0, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + contactNumberCmd.AddCommand(cmd) + } + + { // delete + var orgid string + var id string + cmd := &cobra.Command{ + Use: "delete", + Aliases: []string{"delete-id"}, + Short: "Delete specific Contact Number by ID", + Long: `Delete an existing Contact Number by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/organization/{orgid}/contact-number/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Contact Number.") + cmd.MarkFlagRequired("id") + contactNumberCmd.AddCommand(cmd) + } + + { // list + var orgid string + var filter string + var attributes string + var search string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "list", + Short: "List Contact Number(s)", + Long: `Retrieve a list of Contact Number(s) in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/v2/contact-number") + req.PathParam("orgid", orgid) + req.QueryParam("filter", filter) + req.QueryParam("attributes", attributes) + req.QueryParam("search", search) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&filter, "filter", "", "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain space, and if so kindly bound it with quotes to apply filter. ") + cmd.Flags().StringVar(&attributes, "attributes", "", "Specify the attributes to be returned.Default all attributes are returned along with specified columns. All Attributes are supported") + cmd.Flags().StringVar(&search, "search", "", "Filter data based on the search keyword.") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + contactNumberCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/contact_service_queue.go b/cmd/cc/contact_service_queue.go new file mode 100644 index 0000000..ed28652 --- /dev/null +++ b/cmd/cc/contact_service_queue.go @@ -0,0 +1,884 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + "strconv" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa +var _ = strings.Join + +var contactServiceQueueCmd = &cobra.Command{ + Use: "contact-service-queue", + Short: "ContactServiceQueue commands", +} + +func init() { + cmd.CcCmd.AddCommand(contactServiceQueueCmd) + + { // list + var orgid string + var filter string + var attributes string + var search string + var page string + var pageSize string + var desktopProfileFilter string + var provisioningView string + var singleObjectResponse string + cmd := &cobra.Command{ + Use: "list", + Short: "List Contact Service Queues", + Long: `Retrieve a list of Contact Service Queues in a given organization. + Note: Returning array fields in the List (Get All) API response is deprecated. To retrieve the complete resource with all fields, please use the Get-by-ID API instead. Deprecated. Use GET /v2/contact-service-queue instead.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/v3/contact-service-queue") + req.PathParam("orgid", orgid) + req.QueryParam("filter", filter) + req.QueryParam("attributes", attributes) + req.QueryParam("search", search) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + req.QueryParam("desktopProfileFilter", desktopProfileFilter) + req.QueryParam("provisioningView", provisioningView) + req.QueryParam("singleObjectResponse", singleObjectResponse) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&filter, "filter", "", "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, queueSkillRequirements, xspVersion, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. ") + cmd.Flags().StringVar(&attributes, "attributes", "", "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported. except (callDistributionGroups,queueSkillRequirements,links)") + cmd.Flags().StringVar(&search, "search", "", "Filter data based on the search keyword.Supported search columns(name, description) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\",\"description\");value==\"Cisco\" ") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + cmd.Flags().StringVar(&desktopProfileFilter, "desktop-profile-filter", "", "If set to true, the API will return only the data that the user has access to according to its Desktop Profile. If unspecified, the default value is false.") + cmd.Flags().StringVar(&provisioningView, "provisioning-view", "", "If set to true, the API will only return data that the user has access to, according to the User Profile. This query parameter is applicable only when desktopProfileFilter query parameter is false.") + cmd.Flags().StringVar(&singleObjectResponse, "single-object-response", "", "Specify whether to include array fields in the response. This query parameter should be used only when the response contains a single record. It is not supported for responses with multiple objects and throws an exception.") + contactServiceQueueCmd.AddCommand(cmd) + } + + { // create + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a new Contact Service Queue", + Long: `Create a new Contact Service Queue in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/v2/contact-service-queue") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + contactServiceQueueCmd.AddCommand(cmd) + } + + { // bulk-save + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "bulk-save", + Short: "Bulk save Contact Service Queues", + Long: `Create, Update or delete Contact Service Queues in bulk in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/contact-service-queue/v2/bulk") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + contactServiceQueueCmd.AddCommand(cmd) + } + + { // bulk-partial-update + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "bulk-partial-update", + Short: "Bulk partial update Contact Service Queues", + Long: `Update some or all properties for multiple Contact Service Queues in bulk in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PATCH", "/organization/{orgid}/contact-service-queue/bulk") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + contactServiceQueueCmd.AddCommand(cmd) + } + + { // bulk-export + var orgid string + var typeVal string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "bulk-export", + Short: "Bulk export Contact Service Queue(s)", + Long: `Export all Contact Service Queue(s) in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/contact-service-queue/bulk-export") + req.PathParam("orgid", orgid) + req.QueryParam("type", typeVal) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&typeVal, "type", "", "Indicates the queue type; can be INBOUND or OUTBOUND.") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + contactServiceQueueCmd.AddCommand(cmd) + } + + { // list-by-skill-profile + var orgid string + var id string + cmd := &cobra.Command{ + Use: "list-by-skill-profile", + Aliases: []string{"list-skill-csqs-skill-profile"}, + Short: "List skill-based Contact Service Queues by skill profile ID (public)", + Long: `Retrieve a list of skill-based Contact Service Queues associated with a given skill profile ID, accessible to authorized clients in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/contact-service-queue/by-skill-profile-id/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "ID of this contact center resource.") + cmd.MarkFlagRequired("id") + contactServiceQueueCmd.AddCommand(cmd) + } + + { // delete-references + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "delete-references", + Aliases: []string{"delete-csq-references"}, + Short: "Delete references from Contact Service Queues", + Long: `Removes the references to the specified entities (such as teams, sites, or agents) from Contact Service Queues for a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/contact-service-queue/delete-reference") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + contactServiceQueueCmd.AddCommand(cmd) + } + + { // list-manually-assignable + var orgid string + var agentId string + var teamId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "list-manually-assignable", + Aliases: []string{"list-manually-assignable-csqs"}, + Short: "List manually assignable Contact Service Queues", + Long: `Retrieve a list of Contact Service Queues that are eligible for manual contact assignment based on the provided criteria in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/contact-service-queue/fetch-manually-assignable-queues") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("agentId", agentId) + req.BodyString("teamId", teamId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&agentId, "agent-id", "", "") + cmd.Flags().StringVar(&teamId, "team-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + contactServiceQueueCmd.AddCommand(cmd) + } + + { // purge-inactive + var orgid string + var nextStartId string + cmd := &cobra.Command{ + Use: "purge-inactive", + Short: "Purge inactive Contact Service Queues", + Long: `Purge inactive Contact Service Queues older than the configured interval for a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/contact-service-queue/purge-inactive-entities") + req.PathParam("orgid", orgid) + req.QueryParam("nextStartId", nextStartId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&nextStartId, "next-start-id", "", "This is the entity ID from which items for the next purge batch will be selected.") + contactServiceQueueCmd.AddCommand(cmd) + } + + { // get + var orgid string + var id string + var agentsUpdatedInfo string + cmd := &cobra.Command{ + Use: "get", + Aliases: []string{"get-id"}, + Short: "Get specific Contact Service Queue by ID", + Long: `Retrieve an existing Contact Service Queue by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/v2/contact-service-queue/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + req.QueryParam("agentsUpdatedInfo", agentsUpdatedInfo) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Contact Service Queue.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&agentsUpdatedInfo, "agents-updated-info", "", "If `true`, returns the user details who has last updated the agents list in an agent based queue.") + contactServiceQueueCmd.AddCommand(cmd) + } + + { // update + var orgid string + var id string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Aliases: []string{"update-id"}, + Short: "Update specific Contact Service Queue by ID", + Long: `Update an existing Contact Service Queue by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PUT", "/organization/{orgid}/v2/contact-service-queue/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Contact Service Queue.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + contactServiceQueueCmd.AddCommand(cmd) + } + + { // delete + var orgid string + var id string + cmd := &cobra.Command{ + Use: "delete", + Aliases: []string{"delete-id"}, + Short: "Delete specific Contact Service Queue by ID", + Long: `Delete an existing Contact Service Queue by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/organization/{orgid}/contact-service-queue/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Contact Service Queue.") + cmd.MarkFlagRequired("id") + contactServiceQueueCmd.AddCommand(cmd) + } + + { // list-references + var orgid string + var id string + var typeVal string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "list-references", + Aliases: []string{"list-csq-references-id"}, + Short: "List references for a specific Contact Service Queue", + Long: `Retrieve a list of all entities that have reference to an existing Contact Service Queue by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/contact-service-queue/{id}/incoming-references") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + req.QueryParam("type", typeVal) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "ID of this contact center resource.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&typeVal, "type", "", "Entity type of the other entity that has a reference to this specific entity.") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + contactServiceQueueCmd.AddCommand(cmd) + } + + { // list-agent-based + var orgid string + var userid string + var search string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "list-agent-based", + Short: "List agent-based Contact Service Queues by user ID", + Long: `Retrieve a list of agent-based Contact Service Queues by user ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/v2/contact-service-queue/by-user-id/{userid}/agent-based-queues") + req.PathParam("orgid", orgid) + req.PathParam("userid", userid) + req.QueryParam("search", search) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&userid, "userid", "", "") + cmd.MarkFlagRequired("userid") + cmd.Flags().StringVar(&search, "search", "", "Filter data based on the search keyword.Supported search columns(firstName, lastName, email) The examples below show some search queries - \"Cisco\" - field==\"firstName\";value==\"Cisco\" - fields=in=(\"firstName\",\"lastName\");value==\"Cisco\" ") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + contactServiceQueueCmd.AddCommand(cmd) + } + + { // list-skill-based + var orgid string + var userid string + var search string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "list-skill-based", + Short: "List skill-based Contact Service Queues by user ID", + Long: `Retrieve a list of skill-based Contact Service Queues by user ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/v2/contact-service-queue/by-user-id/{userid}/skill-based-queues") + req.PathParam("orgid", orgid) + req.PathParam("userid", userid) + req.QueryParam("search", search) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&userid, "userid", "", "") + cmd.MarkFlagRequired("userid") + cmd.Flags().StringVar(&search, "search", "", "Filter data based on the search keyword.Supported search columns(firstName, lastName, email) The examples below show some search queries - \"Cisco\" - field==\"firstName\";value==\"Cisco\" - fields=in=(\"firstName\",\"lastName\");value==\"Cisco\" ") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + contactServiceQueueCmd.AddCommand(cmd) + } + + { // list-team-based + var orgid string + var userid string + var search string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "list-team-based", + Short: "List team-based Contact Service Queues by user ID", + Long: `Retrieve a list of team-based Contact Service Queues by user ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/v2/contact-service-queue/by-user-id/{userid}/team-based-queues") + req.PathParam("orgid", orgid) + req.PathParam("userid", userid) + req.QueryParam("search", search) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&userid, "userid", "", "") + cmd.MarkFlagRequired("userid") + cmd.Flags().StringVar(&search, "search", "", "Filter data based on the search keyword.Supported search columns(firstName, lastName, email) The examples below show some search queries - \"Cisco\" - field==\"firstName\";value==\"Cisco\" - fields=in=(\"firstName\",\"lastName\");value==\"Cisco\" ") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + contactServiceQueueCmd.AddCommand(cmd) + } + + { // create-remove-agents-users-agent + var orgid string + var id string + var add []string + var remove []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-remove-agents-users-agent", + Short: "Add or remove agents/users to/from an agent based queue", + Long: `This API can be used by a contact center supervisor to add or remove agents to or from an agent-based queue that they can access through their user profile access rights. Additionally, the request payload should contain the user ID(s) managed by the supervisor.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/v2/contact-service-queue/{id}/reassign-agents") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("add", add) + req.BodyStringSlice("remove", remove) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Contact Service Queue.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringSliceVar(&add, "add", nil, "") + cmd.Flags().StringSliceVar(&remove, "remove", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + contactServiceQueueCmd.AddCommand(cmd) + } + + { // list-mapping-summary-grouped-assistant-skill + var orgid string + var page string + var pageSize string + var assistantSkillIds []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "list-mapping-summary-grouped-assistant-skill", + Short: "List queue mapping summary grouped by Assistant Skill", + Long: `Retrieve a list of queue mapping summary for a specified list of Assistant Skills specified in a given organization. The summary currently includes mapped queue count, and the last assigned time of queue mapping.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/v2/contact-service-queue/fetch-by-grouped-assistant-skill") + req.PathParam("orgid", orgid) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("assistantSkillIds", assistantSkillIds) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + cmd.Flags().StringSliceVar(&assistantSkillIds, "assistant-skill-ids", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + contactServiceQueueCmd.AddCommand(cmd) + } + + { // list-internal-skill-csqs-profile + var orgid string + var id string + cmd := &cobra.Command{ + Use: "list-internal-skill-csqs-profile", + Short: "List Internal Skill CSQs by Profile", + Long: `Retrieve skill-based Contact Service Queues by skill profile ID for internal use in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/contact-service-queue/by-skill-profile-id/{id}/internal") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "ID of this contact center resource.") + cmd.MarkFlagRequired("id") + contactServiceQueueCmd.AddCommand(cmd) + } + + { // list-team-csqs-team-id + var orgid string + var id string + cmd := &cobra.Command{ + Use: "list-team-csqs-team-id", + Short: "List Team CSQs by Team ID", + Long: `Retrieve team-based Contact Service Queues by team ID for internal use in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/contact-service-queue/by-team-id/{id}/internal") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "ID of this contact center resource.") + cmd.MarkFlagRequired("id") + contactServiceQueueCmd.AddCommand(cmd) + } + + { // list-agent-csqs-ci-user-id + var orgid string + var ciUserId string + cmd := &cobra.Command{ + Use: "list-agent-csqs-ci-user-id", + Short: "List Agent CSQs by CI User ID", + Long: `Retrieve agent-based Contact Service Queues by CI user ID for internal use in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/contact-service-queue/by-user-ci-id/{ciUserId}/internal") + req.PathParam("orgid", orgid) + req.PathParam("ciUserId", ciUserId) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&ciUserId, "ci-user-id", "", "ciUserId") + cmd.MarkFlagRequired("ci-user-id") + contactServiceQueueCmd.AddCommand(cmd) + } + + { // list-by-dynamic-skills + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "list-by-dynamic-skills", + Aliases: []string{"list-csqs-skills-profile"}, + Short: "List skill-based Contact Service Queues by dynamic skills and skill profile", + Long: `Retrieve a list of skill-based Contact Service Queues that match the given dynamic skills and skill profile criteria in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/contact-service-queue/fetch-by-dynamic-skills-and-skillProfile") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + contactServiceQueueCmd.AddCommand(cmd) + } + + { // list-by-user-skill-profile + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "list-by-user-skill-profile", + Aliases: []string{"list-csqs-user-profile"}, + Short: "List skill-based Contact Service Queues by skill profile ID and user ID", + Long: `Retrieve a list of skill-based Contact Service Queues associated with the given skill profile ID and user ID combination in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/contact-service-queue/fetch-by-userId-skillProfileId") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + contactServiceQueueCmd.AddCommand(cmd) + } + + { // list-skill-csqs-ci-user-id + var orgid string + var id string + cmd := &cobra.Command{ + Use: "list-skill-csqs-ci-user-id", + Short: "List Skill CSQs by CI User ID", + Long: `Retrieve skill-based Contact Service Queues by CI user ID for internal use in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/contact-service-queue/skill-based-queues/by-ci-user-id/{id}/internal") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "ID of this contact center resource.") + cmd.MarkFlagRequired("id") + contactServiceQueueCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/custom_agent_greetings.go b/cmd/cc/custom_agent_greetings.go index 7b3b549..b37fa48 100644 --- a/cmd/cc/custom_agent_greetings.go +++ b/cmd/cc/custom_agent_greetings.go @@ -37,7 +37,7 @@ Examples: webex cc agent-personal-greeting-files download --orgid --id --output /tmp/greeting.wav --debug`, RunE: func(c *cobra.Command, args []string) error { // Step 1: GET metadata with includeUrl=true - req := client.NewRequest(config.CcBaseURL(), "GET", "/organization/{orgid}/v2/agent-personal-greeting/{id}") + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/v2/agent-personal-greeting/{id}") req.PathParam("orgid", orgid) req.PathParam("id", id) req.QueryParam("includeUrl", "true") @@ -100,7 +100,7 @@ Examples: webex cc agent-personal-greeting-files upload --agent-id --file greeting.wav --greeting-purpose-id webex cc agent-personal-greeting-files upload --agent-id --file greeting.wav --dry-run`, RunE: func(c *cobra.Command, args []string) error { - return uploadAgentGreeting(config.CcBaseURL(), orgid, filePath, name, agentID, greetingPurposeID) + return uploadAgentGreeting(config.CcBaseURL, orgid, filePath, name, agentID, greetingPurposeID) }, } diff --git a/cmd/cc/custom_audio_files.go b/cmd/cc/custom_audio_files.go index 933bb8e..de4d717 100644 --- a/cmd/cc/custom_audio_files.go +++ b/cmd/cc/custom_audio_files.go @@ -37,7 +37,7 @@ Examples: webex cc audio-files download --id --output /tmp/greeting.wav --debug`, RunE: func(c *cobra.Command, args []string) error { // Step 1: GET metadata with includeUrl=true - req := client.NewRequest(config.CcBaseURL(), "GET", "/organization/{orgid}/audio-file/{id}") + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/audio-file/{id}") req.PathParam("orgid", orgid) req.PathParam("id", id) req.QueryParam("includeUrl", "true") @@ -99,7 +99,7 @@ Examples: webex cc audio-files upload --file prompt.wav --dry-run webex cc audio-files upload --file prompt.wav --debug`, RunE: func(c *cobra.Command, args []string) error { - return uploadAudioFile(config.CcBaseURL(), orgid, filePath, name, description) + return uploadAudioFile(config.CcBaseURL, orgid, filePath, name, description) }, } diff --git a/cmd/cc/custom_search.go b/cmd/cc/custom_search.go index a92fb57..ab03398 100644 --- a/cmd/cc/custom_search.go +++ b/cmd/cc/custom_search.go @@ -86,7 +86,7 @@ func registerCommonFlags(c *cobra.Command, f *searchFlags) { // buildAndExecute parses flags, builds the GraphQL query, and executes it. func buildAndExecute(f *searchFlags, queryType search.QueryType) error { - req := client.NewRequest(config.CcBaseURL(), "POST", "/search") + req := client.NewRequest(config.CcBaseURL, "POST", "/search") req.QueryParam("orgId", f.orgID) req.Header("TrackingId", f.trackingID) @@ -205,7 +205,7 @@ Examples: webex cc search raw --body '{"query":"{ task(from:1700000000000 to:1700100000000) { tasks { id status } } }"}' webex cc search raw --body-file my_query.json`, RunE: func(c *cobra.Command, args []string) error { - req := client.NewRequest(config.CcBaseURL(), "POST", "/search") + req := client.NewRequest(config.CcBaseURL, "POST", "/search") req.QueryParam("orgId", orgID) req.Header("TrackingId", trackingID) if bodyFile != "" { diff --git a/cmd/cc/data_sources.go b/cmd/cc/data_sources.go new file mode 100644 index 0000000..ff75b0d --- /dev/null +++ b/cmd/cc/data_sources.go @@ -0,0 +1,231 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + "strconv" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa + +var dataSourcesCmd = &cobra.Command{ + Use: "data-sources", + Short: "DataSources commands", +} + +func init() { + cmd.CcCmd.AddCommand(dataSourcesCmd) + + { // register + var audience string + var nonce string + var schemaId string + var subject string + var tokenLifetimeMinutes int64 + var url string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "register", + Short: "Register a Data Source", + Long: "Register a data source with the Webex BYODS system. Authenticate using a Service App with the `spark-admin:datasource_write` scope.\nSchema IDs determine the types of data Webex sends to the DAP and the expected responses. Use the Data Source Schemas endpoints to inspect the available schemas.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/dataSources") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("audience", audience) + req.BodyString("nonce", nonce) + req.BodyString("schemaId", schemaId) + req.BodyString("subject", subject) + req.BodyInt("tokenLifetimeMinutes", tokenLifetimeMinutes, cmd.Flags().Changed("token-lifetime-minutes")) + req.BodyString("url", url) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&audience, "audience", "", "") + cmd.Flags().StringVar(&nonce, "nonce", "", "") + cmd.Flags().StringVar(&schemaId, "schema-id", "", "") + cmd.Flags().StringVar(&subject, "subject", "", "") + cmd.Flags().Int64Var(&tokenLifetimeMinutes, "token-lifetime-minutes", 0, "") + cmd.Flags().StringVar(&url, "url", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + dataSourcesCmd.AddCommand(cmd) + } + + { // get-all + cmd := &cobra.Command{ + Use: "get-all", + Short: "Retrieve All Data Sources", + Long: "Lists all data sources registered by the Service App. Requires the `spark-admin:datasource_read` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/dataSources") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + dataSourcesCmd.AddCommand(cmd) + } + + { // get-schemas + cmd := &cobra.Command{ + Use: "get-schemas", + Short: "Retrieve Data Source Schemas", + Long: `Lists the available data source schemas. A valid API access token is required, but no specific scope is needed.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/dataSources/schemas") + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + dataSourcesCmd.AddCommand(cmd) + } + + { // get-schema + var schemaId string + cmd := &cobra.Command{ + Use: "get-schema", + Short: "Retrieve Details of a Specific Data Source Schema", + Long: `Retrieves details for a specific data source schema by schema ID. A valid API access token is required, but no specific scope is needed.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/dataSources/schemas/{schemaId}") + req.PathParam("schemaId", schemaId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&schemaId, "schema-id", "", "The unique identifier for the schema.") + cmd.MarkFlagRequired("schema-id") + dataSourcesCmd.AddCommand(cmd) + } + + { // delete + var dataSourceId string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete a Data Source", + Long: "Deletes a data source by ID.\n\nSpecify the data source ID in the `dataSourceId` URI parameter.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/dataSources/{dataSourceId}") + req.PathParam("dataSourceId", dataSourceId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&dataSourceId, "data-source-id", "", "The unique identifier for the data source.") + cmd.MarkFlagRequired("data-source-id") + dataSourcesCmd.AddCommand(cmd) + } + + { // get + var dataSourceId string + cmd := &cobra.Command{ + Use: "get", + Short: "Retrieve Data Source Details", + Long: "Retrieves details for a data source by ID. Use a Service App token with the `spark-admin:datasource_read` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/dataSources/{dataSourceId}") + req.PathParam("dataSourceId", dataSourceId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&dataSourceId, "data-source-id", "", "The unique identifier for the data source.") + cmd.MarkFlagRequired("data-source-id") + dataSourcesCmd.AddCommand(cmd) + } + + { // update + var dataSourceId string + var audience string + var errorMessage string + var nonce string + var schemaId string + var status string + var subject string + var tokenLifetimeMinutes int64 + var url string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Short: "Update a Data Source", + Long: "Updates a data source. The fields you can update are `audience`, `subject`, `nonce`, `url`, and `tokenLifetimeMinutes`.\nYou can set `status` from `active` to `disabled` only if you provide an `errorMessage`, which may be shown to the customer administrator in Control Hub.\nUpdate tokens before they expire to prevent service interruption.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PUT", "/dataSources/{dataSourceId}") + req.PathParam("dataSourceId", dataSourceId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("audience", audience) + req.BodyString("errorMessage", errorMessage) + req.BodyString("nonce", nonce) + req.BodyString("schemaId", schemaId) + req.BodyString("status", status) + req.BodyString("subject", subject) + req.BodyInt("tokenLifetimeMinutes", tokenLifetimeMinutes, cmd.Flags().Changed("token-lifetime-minutes")) + req.BodyString("url", url) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&dataSourceId, "data-source-id", "", "The unique identifier for the data source.") + cmd.MarkFlagRequired("data-source-id") + cmd.Flags().StringVar(&audience, "audience", "", "") + cmd.Flags().StringVar(&errorMessage, "error-message", "", "") + cmd.Flags().StringVar(&nonce, "nonce", "", "") + cmd.Flags().StringVar(&schemaId, "schema-id", "", "") + cmd.Flags().StringVar(&status, "status", "", "") + cmd.Flags().StringVar(&subject, "subject", "", "") + cmd.Flags().Int64Var(&tokenLifetimeMinutes, "token-lifetime-minutes", 0, "") + cmd.Flags().StringVar(&url, "url", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + dataSourcesCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/desktop_layout.go b/cmd/cc/desktop_layout.go new file mode 100644 index 0000000..419677b --- /dev/null +++ b/cmd/cc/desktop_layout.go @@ -0,0 +1,448 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + "strconv" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa +var _ = strings.Join + +var desktopLayoutCmd = &cobra.Command{ + Use: "desktop-layout", + Short: "DesktopLayout commands", +} + +func init() { + cmd.CcCmd.AddCommand(desktopLayoutCmd) + + { // create + var orgid string + var defaultJsonModified bool + var editedBy string + var global bool + var jsonFileContent string + var jsonFileName string + var name string + var status bool + var validated bool + var organizationId string + var id string + var version int64 + var description string + var validatedTime int64 + var defaultJsonModifiedTime int64 + var modifiedTime int64 + var teamIds []string + var systemDefault bool + var createdTime int64 + var lastUpdatedTime int64 + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a new Desktop Layout", + Long: `Create a new Desktop Layout in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/desktop-layout") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("defaultJsonModified", defaultJsonModified, cmd.Flags().Changed("default-json-modified")) + req.BodyString("editedBy", editedBy) + req.BodyBool("global", global, cmd.Flags().Changed("global")) + req.BodyString("jsonFileContent", jsonFileContent) + req.BodyString("jsonFileName", jsonFileName) + req.BodyString("name", name) + req.BodyBool("status", status, cmd.Flags().Changed("status")) + req.BodyBool("validated", validated, cmd.Flags().Changed("validated")) + req.BodyString("organizationId", organizationId) + req.BodyString("id", id) + req.BodyInt("version", version, cmd.Flags().Changed("version")) + req.BodyString("description", description) + req.BodyInt("validatedTime", validatedTime, cmd.Flags().Changed("validated-time")) + req.BodyInt("defaultJsonModifiedTime", defaultJsonModifiedTime, cmd.Flags().Changed("default-json-modified-time")) + req.BodyInt("modifiedTime", modifiedTime, cmd.Flags().Changed("modified-time")) + req.BodyStringSlice("teamIds", teamIds) + req.BodyBool("systemDefault", systemDefault, cmd.Flags().Changed("system-default")) + req.BodyInt("createdTime", createdTime, cmd.Flags().Changed("created-time")) + req.BodyInt("lastUpdatedTime", lastUpdatedTime, cmd.Flags().Changed("last-updated-time")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().BoolVar(&defaultJsonModified, "default-json-modified", false, "") + cmd.Flags().StringVar(&editedBy, "edited-by", "", "") + cmd.Flags().BoolVar(&global, "global", false, "") + cmd.Flags().StringVar(&jsonFileContent, "json-file-content", "", "") + cmd.Flags().StringVar(&jsonFileName, "json-file-name", "", "") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().BoolVar(&status, "status", false, "") + cmd.Flags().BoolVar(&validated, "validated", false, "") + cmd.Flags().StringVar(&organizationId, "organization-id", "", "") + cmd.Flags().StringVar(&id, "id", "", "") + cmd.Flags().Int64Var(&version, "version", 0, "") + cmd.Flags().StringVar(&description, "description", "", "") + cmd.Flags().Int64Var(&validatedTime, "validated-time", 0, "") + cmd.Flags().Int64Var(&defaultJsonModifiedTime, "default-json-modified-time", 0, "") + cmd.Flags().Int64Var(&modifiedTime, "modified-time", 0, "") + cmd.Flags().StringSliceVar(&teamIds, "team-ids", nil, "") + cmd.Flags().BoolVar(&systemDefault, "system-default", false, "") + cmd.Flags().Int64Var(&createdTime, "created-time", 0, "") + cmd.Flags().Int64Var(&lastUpdatedTime, "last-updated-time", 0, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + desktopLayoutCmd.AddCommand(cmd) + } + + { // bulk-save + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "bulk-save", + Short: "Bulk save Desktop Layout(s)", + Long: `Create, Update or delete Desktop Layout(s) in bulk in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/desktop-layout/bulk") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + desktopLayoutCmd.AddCommand(cmd) + } + + { // bulk-export + var orgid string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "bulk-export", + Short: "Bulk export Desktop Layout(s)", + Long: `Export all Desktop Layout(s) in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/desktop-layout/bulk-export") + req.PathParam("orgid", orgid) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + desktopLayoutCmd.AddCommand(cmd) + } + + { // purge-inactive + var orgid string + var nextStartId string + cmd := &cobra.Command{ + Use: "purge-inactive", + Short: "Purge inactive Desktop Layout(s)", + Long: `Purge inactive Desktop Layout(s) older than the configured interval for a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/desktop-layout/purge-inactive-entities") + req.PathParam("orgid", orgid) + req.QueryParam("nextStartId", nextStartId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&nextStartId, "next-start-id", "", "This is the entity ID from which items for the next purge batch with be selected.") + desktopLayoutCmd.AddCommand(cmd) + } + + { // get + var orgid string + var id string + cmd := &cobra.Command{ + Use: "get", + Aliases: []string{"get-id"}, + Short: "Get specific Desktop Layout by ID", + Long: `Retrieve an existing Desktop Layout by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/desktop-layout/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Desktop Layout.") + cmd.MarkFlagRequired("id") + desktopLayoutCmd.AddCommand(cmd) + } + + { // update + var orgid string + var id string + var defaultJsonModified bool + var editedBy string + var global bool + var jsonFileContent string + var jsonFileName string + var name string + var status bool + var validated bool + var organizationId string + var version int64 + var description string + var validatedTime int64 + var defaultJsonModifiedTime int64 + var modifiedTime int64 + var teamIds []string + var systemDefault bool + var createdTime int64 + var lastUpdatedTime int64 + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Aliases: []string{"update-id"}, + Short: "Update specific Desktop Layout by ID", + Long: `Update an existing Desktop Layout by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PUT", "/organization/{orgid}/desktop-layout/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("defaultJsonModified", defaultJsonModified, cmd.Flags().Changed("default-json-modified")) + req.BodyString("editedBy", editedBy) + req.BodyBool("global", global, cmd.Flags().Changed("global")) + req.BodyString("jsonFileContent", jsonFileContent) + req.BodyString("jsonFileName", jsonFileName) + req.BodyString("name", name) + req.BodyBool("status", status, cmd.Flags().Changed("status")) + req.BodyBool("validated", validated, cmd.Flags().Changed("validated")) + req.BodyString("organizationId", organizationId) + req.BodyString("id", id) + req.BodyInt("version", version, cmd.Flags().Changed("version")) + req.BodyString("description", description) + req.BodyInt("validatedTime", validatedTime, cmd.Flags().Changed("validated-time")) + req.BodyInt("defaultJsonModifiedTime", defaultJsonModifiedTime, cmd.Flags().Changed("default-json-modified-time")) + req.BodyInt("modifiedTime", modifiedTime, cmd.Flags().Changed("modified-time")) + req.BodyStringSlice("teamIds", teamIds) + req.BodyBool("systemDefault", systemDefault, cmd.Flags().Changed("system-default")) + req.BodyInt("createdTime", createdTime, cmd.Flags().Changed("created-time")) + req.BodyInt("lastUpdatedTime", lastUpdatedTime, cmd.Flags().Changed("last-updated-time")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Desktop Layout.") + cmd.MarkFlagRequired("id") + cmd.Flags().BoolVar(&defaultJsonModified, "default-json-modified", false, "") + cmd.Flags().StringVar(&editedBy, "edited-by", "", "") + cmd.Flags().BoolVar(&global, "global", false, "") + cmd.Flags().StringVar(&jsonFileContent, "json-file-content", "", "") + cmd.Flags().StringVar(&jsonFileName, "json-file-name", "", "") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().BoolVar(&status, "status", false, "") + cmd.Flags().BoolVar(&validated, "validated", false, "") + cmd.Flags().StringVar(&organizationId, "organization-id", "", "") + cmd.Flags().Int64Var(&version, "version", 0, "") + cmd.Flags().StringVar(&description, "description", "", "") + cmd.Flags().Int64Var(&validatedTime, "validated-time", 0, "") + cmd.Flags().Int64Var(&defaultJsonModifiedTime, "default-json-modified-time", 0, "") + cmd.Flags().Int64Var(&modifiedTime, "modified-time", 0, "") + cmd.Flags().StringSliceVar(&teamIds, "team-ids", nil, "") + cmd.Flags().BoolVar(&systemDefault, "system-default", false, "") + cmd.Flags().Int64Var(&createdTime, "created-time", 0, "") + cmd.Flags().Int64Var(&lastUpdatedTime, "last-updated-time", 0, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + desktopLayoutCmd.AddCommand(cmd) + } + + { // delete + var orgid string + var id string + cmd := &cobra.Command{ + Use: "delete", + Aliases: []string{"delete-id"}, + Short: "Delete specific Desktop Layout by ID", + Long: `Delete an existing Desktop Layout by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/organization/{orgid}/desktop-layout/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Desktop Layout.") + cmd.MarkFlagRequired("id") + desktopLayoutCmd.AddCommand(cmd) + } + + { // list-references + var orgid string + var id string + var typeVal string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "list-references", + Short: "List references for a specific Desktop Layout", + Long: `Retrieve a list of all entities that have reference to an existing Desktop Layout by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/desktop-layout/{id}/incoming-references") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + req.QueryParam("type", typeVal) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "ID of this contact center resource.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&typeVal, "type", "", "Entity type of the other entity that has a reference to this specific entity.") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + desktopLayoutCmd.AddCommand(cmd) + } + + { // list + var orgid string + var filter string + var attributes string + var search string + var page string + var pageSize string + var singleObjectResponse string + var provisioningView string + cmd := &cobra.Command{ + Use: "list", + Short: "List Desktop Layout(s)", + Long: `Retrieve a list of Desktop Layout(s) in a given organization. Json file content field won't be avalible in get all even though it is showing in sample response structure. and it will be avialable only in get by id. + Note: Returning array fields in the List (Get All) API response is deprecated. To retrieve the complete resource with all fields, please use the Get-by-ID API instead.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/v2/desktop-layout") + req.PathParam("orgid", orgid) + req.QueryParam("filter", filter) + req.QueryParam("attributes", attributes) + req.QueryParam("search", search) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + req.QueryParam("singleObjectResponse", singleObjectResponse) + req.QueryParam("provisioningView", provisioningView) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&filter, "filter", "", "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, validatedTime, defaultJsonModifiedTime, modifiedTime, teamIds, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. ") + cmd.Flags().StringVar(&attributes, "attributes", "", "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported.") + cmd.Flags().StringVar(&search, "search", "", "Filter data based on the search keyword.Supported search columns(name) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\");value==\"Cisco\" ") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + cmd.Flags().StringVar(&singleObjectResponse, "single-object-response", "", "Specifiy whether to include array fields in the response, This query param should use only if the response contain single record, if we are using for multiple objects response query param not supported and throws an exception.") + cmd.Flags().StringVar(&provisioningView, "provisioning-view", "", "If set to true, the API will only return data that user has access to, according to User Profile.") + desktopLayoutCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/desktop_profile.go b/cmd/cc/desktop_profile.go new file mode 100644 index 0000000..e80175f --- /dev/null +++ b/cmd/cc/desktop_profile.go @@ -0,0 +1,638 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + "strconv" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa +var _ = strings.Join + +var desktopProfileCmd = &cobra.Command{ + Use: "desktop-profile", + Short: "DesktopProfile commands", +} + +func init() { + cmd.CcCmd.AddCommand(desktopProfileCmd) + + { // list + var orgid string + var filter string + var attributes string + var search string + var page string + var pageSize string + var singleObjectResponse string + var provisioningView string + cmd := &cobra.Command{ + Use: "list", + Short: "List Desktop Profiles", + Long: `Retrieve a list of Desktop Profiles in a given organization. + Note: Returning array fields in the List (Get All) API response is deprecated. To retrieve the complete resource with all fields, please use the Get-by-ID API instead.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/v2/agent-profile") + req.PathParam("orgid", orgid) + req.QueryParam("filter", filter) + req.QueryParam("attributes", attributes) + req.QueryParam("search", search) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + req.QueryParam("singleObjectResponse", singleObjectResponse) + req.QueryParam("provisioningView", provisioningView) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&filter, "filter", "", "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, autoWrapAfterSeconds, wrapUpCodes, idleCodes, queues, entryPoints, buddyTeams, dialPlans, agentDNValidationCriteria, agentDNValidationCriterions, loginVoiceOptions, viewableStatistics, thresholdRules, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. ") + cmd.Flags().StringVar(&attributes, "attributes", "", "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported. except ( wrapUpCodes,queues, idleCodes,entryPoints, buddyTeams, dialPlans, loginVoiceOptions, viewableStatistics, thresholdRules,agentDNValidationCriterions ) ") + cmd.Flags().StringVar(&search, "search", "", "Filter data based on the search keyword.Supported search columns(name, description) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\",\"description\");value==\"Cisco\" ") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + cmd.Flags().StringVar(&singleObjectResponse, "single-object-response", "", "Specify whether to include array fields in the response. This query parameter should be used only when the response contains a single record. It is not supported for responses with multiple objects and throws an exception.") + cmd.Flags().StringVar(&provisioningView, "provisioning-view", "", "If set to true, the API will only return data that the user has access to, according to the User Profile.") + desktopProfileCmd.AddCommand(cmd) + } + + { // create + var orgid string + var accessBuddyTeam string + var accessEntryPoint string + var accessIdleCode string + var accessQueue string + var accessWrapUpCode string + var active string + var agentDnvalidation string + var name string + var parentType string + var viewableStatistics string + var organizationId string + var id string + var version string + var description string + var siteId string + var screenPopup string + var lastAgentRouting string + var scheduleAndManageCallBack string + var autoWrapUp string + var autoAnswer string + var agentPersonalGreeting string + var autoWrapAfterSeconds string + var agentAvailableAfterOutdial string + var allowAutoWrapUpExtension string + var wrapUpCodes string + var idleCodes string + var queues string + var entryPoints string + var buddyTeams string + var consultToQueue string + var outdialEnabled string + var outdialEntryPointId string + var outdialAniid string + var addressBookId string + var dialPlanEnabled string + var dialPlans string + var agentDnvalidationCriteria string + var agentDnvalidationCriterions string + var loginVoiceOptions string + var thresholdRules string + var timeoutDesktopInactivityCustomEnabled string + var showUserDetailsMs string + var stateSynchronizationMs string + var showUserDetailsWebex string + var stateSynchronizationWebex string + var manageChannelAvailability string + var timeoutDesktopInactivityMins string + var systemDefault string + var createdTime string + var lastUpdatedTime string + var autoAcceptDigitalInteractions string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a new Desktop Profile", + Long: `Create a new Desktop Profile in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/agent-profile") + req.PathParam("orgid", orgid) + req.QueryParam("accessBuddyTeam", accessBuddyTeam) + req.QueryParam("accessEntryPoint", accessEntryPoint) + req.QueryParam("accessIdleCode", accessIdleCode) + req.QueryParam("accessQueue", accessQueue) + req.QueryParam("accessWrapUpCode", accessWrapUpCode) + req.QueryParam("active", active) + req.QueryParam("agentDNValidation", agentDnvalidation) + req.QueryParam("name", name) + req.QueryParam("parentType", parentType) + req.QueryParam("viewableStatistics", viewableStatistics) + req.QueryParam("organizationId", organizationId) + req.QueryParam("id", id) + req.QueryParam("version", version) + req.QueryParam("description", description) + req.QueryParam("siteId", siteId) + req.QueryParam("screenPopup", screenPopup) + req.QueryParam("lastAgentRouting", lastAgentRouting) + req.QueryParam("scheduleAndManageCallBack", scheduleAndManageCallBack) + req.QueryParam("autoWrapUp", autoWrapUp) + req.QueryParam("autoAnswer", autoAnswer) + req.QueryParam("agentPersonalGreeting", agentPersonalGreeting) + req.QueryParam("autoWrapAfterSeconds", autoWrapAfterSeconds) + req.QueryParam("agentAvailableAfterOutdial", agentAvailableAfterOutdial) + req.QueryParam("allowAutoWrapUpExtension", allowAutoWrapUpExtension) + req.QueryParam("wrapUpCodes", wrapUpCodes) + req.QueryParam("idleCodes", idleCodes) + req.QueryParam("queues", queues) + req.QueryParam("entryPoints", entryPoints) + req.QueryParam("buddyTeams", buddyTeams) + req.QueryParam("consultToQueue", consultToQueue) + req.QueryParam("outdialEnabled", outdialEnabled) + req.QueryParam("outdialEntryPointId", outdialEntryPointId) + req.QueryParam("outdialANIId", outdialAniid) + req.QueryParam("addressBookId", addressBookId) + req.QueryParam("dialPlanEnabled", dialPlanEnabled) + req.QueryParam("dialPlans", dialPlans) + req.QueryParam("agentDNValidationCriteria", agentDnvalidationCriteria) + req.QueryParam("agentDNValidationCriterions", agentDnvalidationCriterions) + req.QueryParam("loginVoiceOptions", loginVoiceOptions) + req.QueryParam("thresholdRules", thresholdRules) + req.QueryParam("timeoutDesktopInactivityCustomEnabled", timeoutDesktopInactivityCustomEnabled) + req.QueryParam("showUserDetailsMS", showUserDetailsMs) + req.QueryParam("stateSynchronizationMS", stateSynchronizationMs) + req.QueryParam("showUserDetailsWebex", showUserDetailsWebex) + req.QueryParam("stateSynchronizationWebex", stateSynchronizationWebex) + req.QueryParam("manageChannelAvailability", manageChannelAvailability) + req.QueryParam("timeoutDesktopInactivityMins", timeoutDesktopInactivityMins) + req.QueryParam("systemDefault", systemDefault) + req.QueryParam("createdTime", createdTime) + req.QueryParam("lastUpdatedTime", lastUpdatedTime) + req.QueryParam("autoAcceptDigitalInteractions", autoAcceptDigitalInteractions) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&accessBuddyTeam, "access-buddy-team", "", "Agent profile configuration data") + cmd.Flags().StringVar(&accessEntryPoint, "access-entry-point", "", "Agent profile configuration data") + cmd.Flags().StringVar(&accessIdleCode, "access-idle-code", "", "Agent profile configuration data") + cmd.Flags().StringVar(&accessQueue, "access-queue", "", "Agent profile configuration data") + cmd.Flags().StringVar(&accessWrapUpCode, "access-wrap-up-code", "", "Agent profile configuration data") + cmd.Flags().StringVar(&active, "active", "", "Agent profile configuration data") + cmd.Flags().StringVar(&agentDnvalidation, "agent-dnvalidation", "", "Agent profile configuration data") + cmd.Flags().StringVar(&name, "name", "", "Agent profile configuration data") + cmd.Flags().StringVar(&parentType, "parent-type", "", "Agent profile configuration data") + cmd.Flags().StringVar(&viewableStatistics, "viewable-statistics", "", "Agent profile configuration data") + cmd.Flags().StringVar(&organizationId, "organization-id", "", "Agent profile configuration data") + cmd.Flags().StringVar(&id, "id", "", "Agent profile configuration data") + cmd.Flags().StringVar(&version, "version", "", "Agent profile configuration data") + cmd.Flags().StringVar(&description, "description", "", "Agent profile configuration data") + cmd.Flags().StringVar(&siteId, "site-id", "", "Agent profile configuration data") + cmd.Flags().StringVar(&screenPopup, "screen-popup", "", "Agent profile configuration data") + cmd.Flags().StringVar(&lastAgentRouting, "last-agent-routing", "", "Agent profile configuration data") + cmd.Flags().StringVar(&scheduleAndManageCallBack, "schedule-and-manage-call-back", "", "Agent profile configuration data") + cmd.Flags().StringVar(&autoWrapUp, "auto-wrap-up", "", "Agent profile configuration data") + cmd.Flags().StringVar(&autoAnswer, "auto-answer", "", "Agent profile configuration data") + cmd.Flags().StringVar(&agentPersonalGreeting, "agent-personal-greeting", "", "Agent profile configuration data") + cmd.Flags().StringVar(&autoWrapAfterSeconds, "auto-wrap-after-seconds", "", "Agent profile configuration data") + cmd.Flags().StringVar(&agentAvailableAfterOutdial, "agent-available-after-outdial", "", "Agent profile configuration data") + cmd.Flags().StringVar(&allowAutoWrapUpExtension, "allow-auto-wrap-up-extension", "", "Agent profile configuration data") + cmd.Flags().StringVar(&wrapUpCodes, "wrap-up-codes", "", "Agent profile configuration data") + cmd.Flags().StringVar(&idleCodes, "idle-codes", "", "Agent profile configuration data") + cmd.Flags().StringVar(&queues, "queues", "", "Agent profile configuration data") + cmd.Flags().StringVar(&entryPoints, "entry-points", "", "Agent profile configuration data") + cmd.Flags().StringVar(&buddyTeams, "buddy-teams", "", "Agent profile configuration data") + cmd.Flags().StringVar(&consultToQueue, "consult-to-queue", "", "Agent profile configuration data") + cmd.Flags().StringVar(&outdialEnabled, "outdial-enabled", "", "Agent profile configuration data") + cmd.Flags().StringVar(&outdialEntryPointId, "outdial-entry-point-id", "", "Agent profile configuration data") + cmd.Flags().StringVar(&outdialAniid, "outdial-aniid", "", "Agent profile configuration data") + cmd.Flags().StringVar(&addressBookId, "address-book-id", "", "Agent profile configuration data") + cmd.Flags().StringVar(&dialPlanEnabled, "dial-plan-enabled", "", "Agent profile configuration data") + cmd.Flags().StringVar(&dialPlans, "dial-plans", "", "Agent profile configuration data") + cmd.Flags().StringVar(&agentDnvalidationCriteria, "agent-dnvalidation-criteria", "", "Agent profile configuration data") + cmd.Flags().StringVar(&agentDnvalidationCriterions, "agent-dnvalidation-criterions", "", "Agent profile configuration data") + cmd.Flags().StringVar(&loginVoiceOptions, "login-voice-options", "", "Agent profile configuration data") + cmd.Flags().StringVar(&thresholdRules, "threshold-rules", "", "Agent profile configuration data") + cmd.Flags().StringVar(&timeoutDesktopInactivityCustomEnabled, "timeout-desktop-inactivity-custom-enabled", "", "Agent profile configuration data") + cmd.Flags().StringVar(&showUserDetailsMs, "show-user-details-ms", "", "Agent profile configuration data") + cmd.Flags().StringVar(&stateSynchronizationMs, "state-synchronization-ms", "", "Agent profile configuration data") + cmd.Flags().StringVar(&showUserDetailsWebex, "show-user-details-webex", "", "Agent profile configuration data") + cmd.Flags().StringVar(&stateSynchronizationWebex, "state-synchronization-webex", "", "Agent profile configuration data") + cmd.Flags().StringVar(&manageChannelAvailability, "manage-channel-availability", "", "Agent profile configuration data") + cmd.Flags().StringVar(&timeoutDesktopInactivityMins, "timeout-desktop-inactivity-mins", "", "Agent profile configuration data") + cmd.Flags().StringVar(&systemDefault, "system-default", "", "Agent profile configuration data") + cmd.Flags().StringVar(&createdTime, "created-time", "", "Agent profile configuration data") + cmd.Flags().StringVar(&lastUpdatedTime, "last-updated-time", "", "Agent profile configuration data") + cmd.Flags().StringVar(&autoAcceptDigitalInteractions, "auto-accept-digital-interactions", "", "Agent profile configuration data") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + desktopProfileCmd.AddCommand(cmd) + } + + { // bulk-save + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "bulk-save", + Short: "Bulk save Desktop Profiles", + Long: `Create, Update or delete Desktop Profiles in bulk in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/agent-profile/bulk") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + desktopProfileCmd.AddCommand(cmd) + } + + { // bulk-export + var orgid string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "bulk-export", + Short: "Bulk export Desktop Profile(s)", + Long: `Export all Desktop Profile(s) in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/agent-profile/bulk-export") + req.PathParam("orgid", orgid) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + desktopProfileCmd.AddCommand(cmd) + } + + { // purge-inactive + var orgid string + var nextStartId string + cmd := &cobra.Command{ + Use: "purge-inactive", + Short: "Purge inactive Desktop Profiles", + Long: `Purge inactive Desktop Profiles older than the configured interval for a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/agent-profile/purge-inactive-entities") + req.PathParam("orgid", orgid) + req.QueryParam("nextStartId", nextStartId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&nextStartId, "next-start-id", "", "This is the entity ID from which items for the next purge batch will be selected.") + desktopProfileCmd.AddCommand(cmd) + } + + { // get + var orgid string + var id string + cmd := &cobra.Command{ + Use: "get", + Aliases: []string{"get-id"}, + Short: "Get specific Desktop Profile by ID", + Long: `Retrieve an existing Desktop Profile by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/agent-profile/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Desktop Profile.") + cmd.MarkFlagRequired("id") + desktopProfileCmd.AddCommand(cmd) + } + + { // update + var orgid string + var id string + var accessBuddyTeam string + var accessEntryPoint string + var accessIdleCode string + var accessQueue string + var accessWrapUpCode string + var active string + var agentDnvalidation string + var name string + var parentType string + var viewableStatistics string + var organizationId string + var version string + var description string + var siteId string + var screenPopup string + var lastAgentRouting string + var scheduleAndManageCallBack string + var autoWrapUp string + var autoAnswer string + var agentPersonalGreeting string + var autoWrapAfterSeconds string + var agentAvailableAfterOutdial string + var allowAutoWrapUpExtension string + var wrapUpCodes string + var idleCodes string + var queues string + var entryPoints string + var buddyTeams string + var consultToQueue string + var outdialEnabled string + var outdialEntryPointId string + var outdialAniid string + var addressBookId string + var dialPlanEnabled string + var dialPlans string + var agentDnvalidationCriteria string + var agentDnvalidationCriterions string + var loginVoiceOptions string + var thresholdRules string + var timeoutDesktopInactivityCustomEnabled string + var showUserDetailsMs string + var stateSynchronizationMs string + var showUserDetailsWebex string + var stateSynchronizationWebex string + var manageChannelAvailability string + var timeoutDesktopInactivityMins string + var systemDefault string + var createdTime string + var lastUpdatedTime string + var autoAcceptDigitalInteractions string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Aliases: []string{"update-id"}, + Short: "Update specific Desktop Profile by ID", + Long: `Update an existing Desktop Profile by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PUT", "/organization/{orgid}/agent-profile/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + req.QueryParam("accessBuddyTeam", accessBuddyTeam) + req.QueryParam("accessEntryPoint", accessEntryPoint) + req.QueryParam("accessIdleCode", accessIdleCode) + req.QueryParam("accessQueue", accessQueue) + req.QueryParam("accessWrapUpCode", accessWrapUpCode) + req.QueryParam("active", active) + req.QueryParam("agentDNValidation", agentDnvalidation) + req.QueryParam("name", name) + req.QueryParam("parentType", parentType) + req.QueryParam("viewableStatistics", viewableStatistics) + req.QueryParam("organizationId", organizationId) + req.QueryParam("id", id) + req.QueryParam("version", version) + req.QueryParam("description", description) + req.QueryParam("siteId", siteId) + req.QueryParam("screenPopup", screenPopup) + req.QueryParam("lastAgentRouting", lastAgentRouting) + req.QueryParam("scheduleAndManageCallBack", scheduleAndManageCallBack) + req.QueryParam("autoWrapUp", autoWrapUp) + req.QueryParam("autoAnswer", autoAnswer) + req.QueryParam("agentPersonalGreeting", agentPersonalGreeting) + req.QueryParam("autoWrapAfterSeconds", autoWrapAfterSeconds) + req.QueryParam("agentAvailableAfterOutdial", agentAvailableAfterOutdial) + req.QueryParam("allowAutoWrapUpExtension", allowAutoWrapUpExtension) + req.QueryParam("wrapUpCodes", wrapUpCodes) + req.QueryParam("idleCodes", idleCodes) + req.QueryParam("queues", queues) + req.QueryParam("entryPoints", entryPoints) + req.QueryParam("buddyTeams", buddyTeams) + req.QueryParam("consultToQueue", consultToQueue) + req.QueryParam("outdialEnabled", outdialEnabled) + req.QueryParam("outdialEntryPointId", outdialEntryPointId) + req.QueryParam("outdialANIId", outdialAniid) + req.QueryParam("addressBookId", addressBookId) + req.QueryParam("dialPlanEnabled", dialPlanEnabled) + req.QueryParam("dialPlans", dialPlans) + req.QueryParam("agentDNValidationCriteria", agentDnvalidationCriteria) + req.QueryParam("agentDNValidationCriterions", agentDnvalidationCriterions) + req.QueryParam("loginVoiceOptions", loginVoiceOptions) + req.QueryParam("thresholdRules", thresholdRules) + req.QueryParam("timeoutDesktopInactivityCustomEnabled", timeoutDesktopInactivityCustomEnabled) + req.QueryParam("showUserDetailsMS", showUserDetailsMs) + req.QueryParam("stateSynchronizationMS", stateSynchronizationMs) + req.QueryParam("showUserDetailsWebex", showUserDetailsWebex) + req.QueryParam("stateSynchronizationWebex", stateSynchronizationWebex) + req.QueryParam("manageChannelAvailability", manageChannelAvailability) + req.QueryParam("timeoutDesktopInactivityMins", timeoutDesktopInactivityMins) + req.QueryParam("systemDefault", systemDefault) + req.QueryParam("createdTime", createdTime) + req.QueryParam("lastUpdatedTime", lastUpdatedTime) + req.QueryParam("autoAcceptDigitalInteractions", autoAcceptDigitalInteractions) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Desktop Profile.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&accessBuddyTeam, "access-buddy-team", "", "Agent profile configuration data for update") + cmd.Flags().StringVar(&accessEntryPoint, "access-entry-point", "", "Agent profile configuration data for update") + cmd.Flags().StringVar(&accessIdleCode, "access-idle-code", "", "Agent profile configuration data for update") + cmd.Flags().StringVar(&accessQueue, "access-queue", "", "Agent profile configuration data for update") + cmd.Flags().StringVar(&accessWrapUpCode, "access-wrap-up-code", "", "Agent profile configuration data for update") + cmd.Flags().StringVar(&active, "active", "", "Agent profile configuration data for update") + cmd.Flags().StringVar(&agentDnvalidation, "agent-dnvalidation", "", "Agent profile configuration data for update") + cmd.Flags().StringVar(&name, "name", "", "Agent profile configuration data for update") + cmd.Flags().StringVar(&parentType, "parent-type", "", "Agent profile configuration data for update") + cmd.Flags().StringVar(&viewableStatistics, "viewable-statistics", "", "Agent profile configuration data for update") + cmd.Flags().StringVar(&organizationId, "organization-id", "", "Agent profile configuration data for update") + cmd.Flags().StringVar(&version, "version", "", "Agent profile configuration data for update") + cmd.Flags().StringVar(&description, "description", "", "Agent profile configuration data for update") + cmd.Flags().StringVar(&siteId, "site-id", "", "Agent profile configuration data for update") + cmd.Flags().StringVar(&screenPopup, "screen-popup", "", "Agent profile configuration data for update") + cmd.Flags().StringVar(&lastAgentRouting, "last-agent-routing", "", "Agent profile configuration data for update") + cmd.Flags().StringVar(&scheduleAndManageCallBack, "schedule-and-manage-call-back", "", "Agent profile configuration data for update") + cmd.Flags().StringVar(&autoWrapUp, "auto-wrap-up", "", "Agent profile configuration data for update") + cmd.Flags().StringVar(&autoAnswer, "auto-answer", "", "Agent profile configuration data for update") + cmd.Flags().StringVar(&agentPersonalGreeting, "agent-personal-greeting", "", "Agent profile configuration data for update") + cmd.Flags().StringVar(&autoWrapAfterSeconds, "auto-wrap-after-seconds", "", "Agent profile configuration data for update") + cmd.Flags().StringVar(&agentAvailableAfterOutdial, "agent-available-after-outdial", "", "Agent profile configuration data for update") + cmd.Flags().StringVar(&allowAutoWrapUpExtension, "allow-auto-wrap-up-extension", "", "Agent profile configuration data for update") + cmd.Flags().StringVar(&wrapUpCodes, "wrap-up-codes", "", "Agent profile configuration data for update") + cmd.Flags().StringVar(&idleCodes, "idle-codes", "", "Agent profile configuration data for update") + cmd.Flags().StringVar(&queues, "queues", "", "Agent profile configuration data for update") + cmd.Flags().StringVar(&entryPoints, "entry-points", "", "Agent profile configuration data for update") + cmd.Flags().StringVar(&buddyTeams, "buddy-teams", "", "Agent profile configuration data for update") + cmd.Flags().StringVar(&consultToQueue, "consult-to-queue", "", "Agent profile configuration data for update") + cmd.Flags().StringVar(&outdialEnabled, "outdial-enabled", "", "Agent profile configuration data for update") + cmd.Flags().StringVar(&outdialEntryPointId, "outdial-entry-point-id", "", "Agent profile configuration data for update") + cmd.Flags().StringVar(&outdialAniid, "outdial-aniid", "", "Agent profile configuration data for update") + cmd.Flags().StringVar(&addressBookId, "address-book-id", "", "Agent profile configuration data for update") + cmd.Flags().StringVar(&dialPlanEnabled, "dial-plan-enabled", "", "Agent profile configuration data for update") + cmd.Flags().StringVar(&dialPlans, "dial-plans", "", "Agent profile configuration data for update") + cmd.Flags().StringVar(&agentDnvalidationCriteria, "agent-dnvalidation-criteria", "", "Agent profile configuration data for update") + cmd.Flags().StringVar(&agentDnvalidationCriterions, "agent-dnvalidation-criterions", "", "Agent profile configuration data for update") + cmd.Flags().StringVar(&loginVoiceOptions, "login-voice-options", "", "Agent profile configuration data for update") + cmd.Flags().StringVar(&thresholdRules, "threshold-rules", "", "Agent profile configuration data for update") + cmd.Flags().StringVar(&timeoutDesktopInactivityCustomEnabled, "timeout-desktop-inactivity-custom-enabled", "", "Agent profile configuration data for update") + cmd.Flags().StringVar(&showUserDetailsMs, "show-user-details-ms", "", "Agent profile configuration data for update") + cmd.Flags().StringVar(&stateSynchronizationMs, "state-synchronization-ms", "", "Agent profile configuration data for update") + cmd.Flags().StringVar(&showUserDetailsWebex, "show-user-details-webex", "", "Agent profile configuration data for update") + cmd.Flags().StringVar(&stateSynchronizationWebex, "state-synchronization-webex", "", "Agent profile configuration data for update") + cmd.Flags().StringVar(&manageChannelAvailability, "manage-channel-availability", "", "Agent profile configuration data for update") + cmd.Flags().StringVar(&timeoutDesktopInactivityMins, "timeout-desktop-inactivity-mins", "", "Agent profile configuration data for update") + cmd.Flags().StringVar(&systemDefault, "system-default", "", "Agent profile configuration data for update") + cmd.Flags().StringVar(&createdTime, "created-time", "", "Agent profile configuration data for update") + cmd.Flags().StringVar(&lastUpdatedTime, "last-updated-time", "", "Agent profile configuration data for update") + cmd.Flags().StringVar(&autoAcceptDigitalInteractions, "auto-accept-digital-interactions", "", "Agent profile configuration data for update") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + desktopProfileCmd.AddCommand(cmd) + } + + { // delete + var orgid string + var id string + cmd := &cobra.Command{ + Use: "delete", + Aliases: []string{"delete-id"}, + Short: "Delete specific Desktop Profile by ID", + Long: `Delete an existing Desktop Profile by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/organization/{orgid}/agent-profile/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Desktop Profile.") + cmd.MarkFlagRequired("id") + desktopProfileCmd.AddCommand(cmd) + } + + { // list-references + var orgid string + var id string + var typeVal string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "list-references", + Short: "List references for a specific Desktop Profile", + Long: `Retrieve a list of all entities that have reference to an existing Desktop Profile by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/agent-profile/{id}/incoming-references") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + req.QueryParam("type", typeVal) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "ID of this contact center resource.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&typeVal, "type", "", "Entity type of the other entity that has a reference to this specific entity.") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + desktopProfileCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/dial_number.go b/cmd/cc/dial_number.go new file mode 100644 index 0000000..b8c4e76 --- /dev/null +++ b/cmd/cc/dial_number.go @@ -0,0 +1,446 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + "strconv" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa + +var dialNumberCmd = &cobra.Command{ + Use: "dial-number", + Short: "DialNumber commands", +} + +func init() { + cmd.CcCmd.AddCommand(dialNumberCmd) + + { // list-dialed-mapping + var orgid string + var filter string + var attributes string + var search string + var page string + var pageSize string + var includeEntryPointName string + cmd := &cobra.Command{ + Use: "list-dialed-mapping", + Short: "List Dialed Number Mapping(s)", + Long: `Retrieve a list of Dialed Number Mapping(s) in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/v3/dial-number") + req.PathParam("orgid", orgid) + req.QueryParam("filter", filter) + req.QueryParam("attributes", attributes) + req.QueryParam("search", search) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + req.QueryParam("includeEntryPointName", includeEntryPointName) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&filter, "filter", "", "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. ") + cmd.Flags().StringVar(&attributes, "attributes", "", "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported. except (links)") + cmd.Flags().StringVar(&search, "search", "", "Filter data based on the search keyword.Supported search columns(dialledNumber) The examples below show some search queries - \"Cisco\" - field==\"dialledNumber\";value==\"Cisco\" - fields=in=(\"dialledNumber\");value==\"Cisco\" ") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + cmd.Flags().StringVar(&includeEntryPointName, "include-entry-point-name", "", "If includeEntryPointName is set to true and entryPointName is in the attributes, the API will return entryPointName in the Get All response, and filtering, searching, and sorting on entryPointName will also be enabled.") + dialNumberCmd.AddCommand(cmd) + } + + { // create-dialed-mapping + var orgid string + var entryPointId string + var entryPointName string + var organizationId string + var id string + var version int64 + var dialledNumber string + var extension string + var routingPrefix string + var esn string + var routePointId string + var defaultAni bool + var location string + var regionId string + var createdTime int64 + var lastUpdatedTime int64 + var dialledNumberDigits string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-dialed-mapping", + Short: "Create a new Dialed Number Mapping", + Long: `Create a new Dialed Number Mapping in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/dial-number") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("entryPointId", entryPointId) + req.BodyString("entryPointName", entryPointName) + req.BodyString("organizationId", organizationId) + req.BodyString("id", id) + req.BodyInt("version", version, cmd.Flags().Changed("version")) + req.BodyString("dialledNumber", dialledNumber) + req.BodyString("extension", extension) + req.BodyString("routingPrefix", routingPrefix) + req.BodyString("esn", esn) + req.BodyString("routePointId", routePointId) + req.BodyBool("defaultAni", defaultAni, cmd.Flags().Changed("default-ani")) + req.BodyString("location", location) + req.BodyString("regionId", regionId) + req.BodyInt("createdTime", createdTime, cmd.Flags().Changed("created-time")) + req.BodyInt("lastUpdatedTime", lastUpdatedTime, cmd.Flags().Changed("last-updated-time")) + req.BodyString("dialledNumberDigits", dialledNumberDigits) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&entryPointId, "entry-point-id", "", "") + cmd.Flags().StringVar(&entryPointName, "entry-point-name", "", "") + cmd.Flags().StringVar(&organizationId, "organization-id", "", "") + cmd.Flags().StringVar(&id, "id", "", "") + cmd.Flags().Int64Var(&version, "version", 0, "") + cmd.Flags().StringVar(&dialledNumber, "dialled-number", "", "") + cmd.Flags().StringVar(&extension, "extension", "", "") + cmd.Flags().StringVar(&routingPrefix, "routing-prefix", "", "") + cmd.Flags().StringVar(&esn, "esn", "", "") + cmd.Flags().StringVar(&routePointId, "route-point-id", "", "") + cmd.Flags().BoolVar(&defaultAni, "default-ani", false, "") + cmd.Flags().StringVar(&location, "location", "", "") + cmd.Flags().StringVar(®ionId, "region-id", "", "") + cmd.Flags().Int64Var(&createdTime, "created-time", 0, "") + cmd.Flags().Int64Var(&lastUpdatedTime, "last-updated-time", 0, "") + cmd.Flags().StringVar(&dialledNumberDigits, "dialled-number-digits", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + dialNumberCmd.AddCommand(cmd) + } + + { // delete-all-dialed-mapping + var orgid string + cmd := &cobra.Command{ + Use: "delete-all-dialed-mapping", + Short: "Delete all Dialed Number Mapping(s)", + Long: `Delete all Dialed Number Mapping(s) in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/organization/{orgid}/dial-number") + req.PathParam("orgid", orgid) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + dialNumberCmd.AddCommand(cmd) + } + + { // bulk-save-dialed-mapping + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "bulk-save-dialed-mapping", + Short: "Bulk save Dialed Number Mapping(s)", + Long: `Create, Update or delete Dialed Number Mapping(s) in bulk in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/dial-number/bulk") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + dialNumberCmd.AddCommand(cmd) + } + + { // bulk-export-dialed-mapping + var orgid string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "bulk-export-dialed-mapping", + Short: "Bulk export Dialed Number Mapping(s)", + Long: `Export all Dialed Number Mapping(s) in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/dial-number/bulk-export") + req.PathParam("orgid", orgid) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + dialNumberCmd.AddCommand(cmd) + } + + { // list-dialed-dialed-mapping + var orgid string + cmd := &cobra.Command{ + Use: "list-dialed-dialed-mapping", + Short: "List only dialed numbers(property - dialledNumber) from Dialed Number Mapping(s)", + Long: `Retrieve a list of only dialed numbers(property - dialledNumber) from Dialed Number Mapping(s) without pagination in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/dial-number/numbers-only") + req.PathParam("orgid", orgid) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + dialNumberCmd.AddCommand(cmd) + } + + { // get-dialed-mapping-id + var orgid string + var id string + cmd := &cobra.Command{ + Use: "get-dialed-mapping-id", + Short: "Get specific Dialed Number Mapping by ID", + Long: `Retrieve an existing Dialed Number Mapping by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/dial-number/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Dialed Number Mapping.") + cmd.MarkFlagRequired("id") + dialNumberCmd.AddCommand(cmd) + } + + { // update-dialed-mapping-id + var orgid string + var id string + var entryPointId string + var entryPointName string + var organizationId string + var version int64 + var dialledNumber string + var extension string + var routingPrefix string + var esn string + var routePointId string + var defaultAni bool + var location string + var regionId string + var createdTime int64 + var lastUpdatedTime int64 + var dialledNumberDigits string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-dialed-mapping-id", + Short: "Update specific Dialed Number Mapping by ID", + Long: `Update an existing Dialed Number Mapping by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PUT", "/organization/{orgid}/dial-number/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("entryPointId", entryPointId) + req.BodyString("entryPointName", entryPointName) + req.BodyString("organizationId", organizationId) + req.BodyString("id", id) + req.BodyInt("version", version, cmd.Flags().Changed("version")) + req.BodyString("dialledNumber", dialledNumber) + req.BodyString("extension", extension) + req.BodyString("routingPrefix", routingPrefix) + req.BodyString("esn", esn) + req.BodyString("routePointId", routePointId) + req.BodyBool("defaultAni", defaultAni, cmd.Flags().Changed("default-ani")) + req.BodyString("location", location) + req.BodyString("regionId", regionId) + req.BodyInt("createdTime", createdTime, cmd.Flags().Changed("created-time")) + req.BodyInt("lastUpdatedTime", lastUpdatedTime, cmd.Flags().Changed("last-updated-time")) + req.BodyString("dialledNumberDigits", dialledNumberDigits) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Dialed Number Mapping.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&entryPointId, "entry-point-id", "", "") + cmd.Flags().StringVar(&entryPointName, "entry-point-name", "", "") + cmd.Flags().StringVar(&organizationId, "organization-id", "", "") + cmd.Flags().Int64Var(&version, "version", 0, "") + cmd.Flags().StringVar(&dialledNumber, "dialled-number", "", "") + cmd.Flags().StringVar(&extension, "extension", "", "") + cmd.Flags().StringVar(&routingPrefix, "routing-prefix", "", "") + cmd.Flags().StringVar(&esn, "esn", "", "") + cmd.Flags().StringVar(&routePointId, "route-point-id", "", "") + cmd.Flags().BoolVar(&defaultAni, "default-ani", false, "") + cmd.Flags().StringVar(&location, "location", "", "") + cmd.Flags().StringVar(®ionId, "region-id", "", "") + cmd.Flags().Int64Var(&createdTime, "created-time", 0, "") + cmd.Flags().Int64Var(&lastUpdatedTime, "last-updated-time", 0, "") + cmd.Flags().StringVar(&dialledNumberDigits, "dialled-number-digits", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + dialNumberCmd.AddCommand(cmd) + } + + { // delete-dialed-mapping-id + var orgid string + var id string + cmd := &cobra.Command{ + Use: "delete-dialed-mapping-id", + Short: "Delete specific Dialed Number Mapping by ID", + Long: `Delete an existing Dialed Number Mapping by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/organization/{orgid}/dial-number/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Dialed Number Mapping.") + cmd.MarkFlagRequired("id") + dialNumberCmd.AddCommand(cmd) + } + + { // list-references-dialed-mapping + var orgid string + var id string + var typeVal string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "list-references-dialed-mapping", + Short: "List references for a specific Dialed Number Mapping", + Long: `Retrieve a list of all entities that have reference to an existing Dialed Number Mapping by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/dial-number/{id}/incoming-references") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + req.QueryParam("type", typeVal) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "ID of this contact center resource.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&typeVal, "type", "", "Entity type of the other entity that has a reference to this specific entity.") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + dialNumberCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/dial_plan.go b/cmd/cc/dial_plan.go new file mode 100644 index 0000000..592d260 --- /dev/null +++ b/cmd/cc/dial_plan.go @@ -0,0 +1,387 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + "strconv" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa + +var dialPlanCmd = &cobra.Command{ + Use: "dial-plan", + Short: "DialPlan commands", +} + +func init() { + cmd.CcCmd.AddCommand(dialPlanCmd) + + { // list + var orgid string + var filter string + var attributes string + var search string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "list", + Short: "List Dial Plans", + Long: `Retrieve a list of Dial Plans in a given organization. + +**Deprecated:** Dial Plan configuration is deprecated. Dial Plan is no longer available as an Agent Profile setting, so agents can no longer use them for agent dial number validation.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/v2/dial-plan") + req.PathParam("orgid", orgid) + req.QueryParam("filter", filter) + req.QueryParam("attributes", attributes) + req.QueryParam("search", search) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&filter, "filter", "", "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. ") + cmd.Flags().StringVar(&attributes, "attributes", "", "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported.") + cmd.Flags().StringVar(&search, "search", "", "Filter data based on the search keyword.Supported search columns(name) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\");value==\"Cisco\" ") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + dialPlanCmd.AddCommand(cmd) + } + + { // create + var orgid string + var active bool + var name string + var regularExpression string + var organizationId string + var id string + var version int64 + var description string + var prefix string + var strippedChars string + var systemDefault bool + var createdTime int64 + var lastUpdatedTime int64 + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a new Dial Plan", + Long: `Create a new Dial Plan in a given organization. + +**Deprecated:** Dial Plan configuration is deprecated. Dial Plan is no longer available as an Agent Profile setting, so agents can no longer use them for agent dial number validation.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/dial-plan") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("active", active, cmd.Flags().Changed("active")) + req.BodyString("name", name) + req.BodyString("regularExpression", regularExpression) + req.BodyString("organizationId", organizationId) + req.BodyString("id", id) + req.BodyInt("version", version, cmd.Flags().Changed("version")) + req.BodyString("description", description) + req.BodyString("prefix", prefix) + req.BodyString("strippedChars", strippedChars) + req.BodyBool("systemDefault", systemDefault, cmd.Flags().Changed("system-default")) + req.BodyInt("createdTime", createdTime, cmd.Flags().Changed("created-time")) + req.BodyInt("lastUpdatedTime", lastUpdatedTime, cmd.Flags().Changed("last-updated-time")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().BoolVar(&active, "active", false, "") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(®ularExpression, "regular-expression", "", "") + cmd.Flags().StringVar(&organizationId, "organization-id", "", "") + cmd.Flags().StringVar(&id, "id", "", "") + cmd.Flags().Int64Var(&version, "version", 0, "") + cmd.Flags().StringVar(&description, "description", "", "") + cmd.Flags().StringVar(&prefix, "prefix", "", "") + cmd.Flags().StringVar(&strippedChars, "stripped-chars", "", "") + cmd.Flags().BoolVar(&systemDefault, "system-default", false, "") + cmd.Flags().Int64Var(&createdTime, "created-time", 0, "") + cmd.Flags().Int64Var(&lastUpdatedTime, "last-updated-time", 0, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + dialPlanCmd.AddCommand(cmd) + } + + { // bulk-save + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "bulk-save", + Short: "Bulk save Dial Plans", + Long: `Create, Update or delete Dial Plans in bulk in a given organization. + +**Deprecated:** Dial Plan configuration is deprecated. Dial Plan is no longer available as an Agent Profile setting, so agents can no longer use them for agent dial number validation.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/dial-plan/bulk") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + dialPlanCmd.AddCommand(cmd) + } + + { // bulk-export + var orgid string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "bulk-export", + Short: "Bulk export Dial Plan(s)", + Long: `Export all Dial Plan(s) in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/dial-plan/bulk-export") + req.PathParam("orgid", orgid) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + dialPlanCmd.AddCommand(cmd) + } + + { // get + var orgid string + var id string + cmd := &cobra.Command{ + Use: "get", + Aliases: []string{"get-id"}, + Short: "Get specific Dial Plan by ID", + Long: `Retrieve an existing Dial Plan by ID in a given organization. + +**Deprecated:** Dial Plan configuration is deprecated. Dial Plan is no longer available as an Agent Profile setting, so agents can no longer use them for agent dial number validation.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/dial-plan/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Dial Plan.") + cmd.MarkFlagRequired("id") + dialPlanCmd.AddCommand(cmd) + } + + { // update + var orgid string + var id string + var active bool + var name string + var regularExpression string + var organizationId string + var version int64 + var description string + var prefix string + var strippedChars string + var systemDefault bool + var createdTime int64 + var lastUpdatedTime int64 + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Aliases: []string{"update-id"}, + Short: "Update specific Dial Plan by ID", + Long: `Update an existing Dial Plan by ID in a given organization. + +**Deprecated:** Dial Plan configuration is deprecated. Dial Plan is no longer available as an Agent Profile setting, so agents can no longer use them for agent dial number validation.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PUT", "/organization/{orgid}/dial-plan/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("active", active, cmd.Flags().Changed("active")) + req.BodyString("name", name) + req.BodyString("regularExpression", regularExpression) + req.BodyString("organizationId", organizationId) + req.BodyString("id", id) + req.BodyInt("version", version, cmd.Flags().Changed("version")) + req.BodyString("description", description) + req.BodyString("prefix", prefix) + req.BodyString("strippedChars", strippedChars) + req.BodyBool("systemDefault", systemDefault, cmd.Flags().Changed("system-default")) + req.BodyInt("createdTime", createdTime, cmd.Flags().Changed("created-time")) + req.BodyInt("lastUpdatedTime", lastUpdatedTime, cmd.Flags().Changed("last-updated-time")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Dial Plan.") + cmd.MarkFlagRequired("id") + cmd.Flags().BoolVar(&active, "active", false, "") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(®ularExpression, "regular-expression", "", "") + cmd.Flags().StringVar(&organizationId, "organization-id", "", "") + cmd.Flags().Int64Var(&version, "version", 0, "") + cmd.Flags().StringVar(&description, "description", "", "") + cmd.Flags().StringVar(&prefix, "prefix", "", "") + cmd.Flags().StringVar(&strippedChars, "stripped-chars", "", "") + cmd.Flags().BoolVar(&systemDefault, "system-default", false, "") + cmd.Flags().Int64Var(&createdTime, "created-time", 0, "") + cmd.Flags().Int64Var(&lastUpdatedTime, "last-updated-time", 0, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + dialPlanCmd.AddCommand(cmd) + } + + { // delete + var orgid string + var id string + cmd := &cobra.Command{ + Use: "delete", + Aliases: []string{"delete-id"}, + Short: "Delete specific Dial Plan by ID", + Long: `Delete an existing Dial Plan by ID in a given organization. + +**Deprecated:** Dial Plan configuration is deprecated. Dial Plan is no longer available as an Agent Profile setting, so agents can no longer use them for agent dial number validation.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/organization/{orgid}/dial-plan/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Dial Plan.") + cmd.MarkFlagRequired("id") + dialPlanCmd.AddCommand(cmd) + } + + { // list-references + var orgid string + var id string + var typeVal string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "list-references", + Short: "List references for a specific Dial Plan", + Long: `Retrieve a list of all entities that have reference to an existing Dial Plan by ID in a given organization. + +**Deprecated:** Dial Plan configuration is deprecated. Dial Plan is no longer available as an Agent Profile setting, so agents can no longer use them for agent dial number validation.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/dial-plan/{id}/incoming-references") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + req.QueryParam("type", typeVal) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "ID of this contact center resource.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&typeVal, "type", "", "Entity type of the other entity that has a reference to this specific entity.") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + dialPlanCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/dnc_management.go b/cmd/cc/dnc_management.go new file mode 100644 index 0000000..064f3b8 --- /dev/null +++ b/cmd/cc/dnc_management.go @@ -0,0 +1,126 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var dncManagementCmd = &cobra.Command{ + Use: "dnc-management", + Short: "DncManagement commands", +} + +func init() { + cmd.CcCmd.AddCommand(dncManagementCmd) + + { // create-phone-number-list + var dncListName string + var phoneNumber string + var source string + var reason string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-phone-number-list", + Short: "Add Phone Number to DNC List", + Long: `Adds a phone number to the specified Do Not Contact (DNC) list. This operation helps ensure compliance with applicable rules & regulations by preventing outbound calls to specific numbers. + +**Note:** Phone numbers must be in E.164 format (e.g., +1234567890). Duplicate entries will be rejected with a 409 error.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v3/campaign-management/dncList/{dncListName}/phoneNumber") + req.PathParam("dncListName", dncListName) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("phoneNumber", phoneNumber) + req.BodyString("source", source) + req.BodyString("reason", reason) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&dncListName, "dnc-list-name", "", "This is the Name of the DNC list to which you want to add a phone number. List names are case-sensitive and must be URL-encoded if they contain special characters.") + cmd.MarkFlagRequired("dnc-list-name") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "") + cmd.Flags().StringVar(&source, "source", "", "") + cmd.Flags().StringVar(&reason, "reason", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + dncManagementCmd.AddCommand(cmd) + } + + { // get-phone-number-list + var dncListName string + var phoneNumber string + cmd := &cobra.Command{ + Use: "get-phone-number-list", + Short: "Get Phone Number from DNC List", + Long: `Retrieves details of a specific phone number from the specified Do Not Contact (DNC) list. This operation allows you to check if a number is present in the list and view associated metadata. + +**Note:** Phone numbers must be URL-encoded and in E.164 format (e.g., %2B1234567890 for +1234567890).`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/v3/campaign-management/dncList/{dncListName}/phoneNumber/{phoneNumber}") + req.PathParam("dncListName", dncListName) + req.PathParam("phoneNumber", phoneNumber) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&dncListName, "dnc-list-name", "", "The name of the DNC list to search in. List names are case-sensitive and must be URL-encoded if they contain special characters.") + cmd.MarkFlagRequired("dnc-list-name") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "The phone number to retrieve from the DNC list. Must be URL-encoded and in E.164 format (e.g., %2B1234567890 for +1234567890).") + cmd.MarkFlagRequired("phone-number") + dncManagementCmd.AddCommand(cmd) + } + + { // delete-phone-number-list + var dncListName string + var phoneNumber string + cmd := &cobra.Command{ + Use: "delete-phone-number-list", + Short: "Remove Phone Number from DNC List", + Long: `Removes a phone number from the specified Do Not Contact (DNC) list. This operation allows administrators to remove numbers that should no longer be blocked from receiving calls. + +**Note:** Phone numbers must be URL-encoded and in E.164 format (e.g., +1234567890 for +1234567890). If the number doesn't exist in the list, a 404 error will be returned.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/v3/campaign-management/dncList/{dncListName}/phoneNumber/{phoneNumber}") + req.PathParam("dncListName", dncListName) + req.PathParam("phoneNumber", phoneNumber) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&dncListName, "dnc-list-name", "", "The name of the DNC list to remove the phone number from. List names are case-sensitive and must be URL-encoded if they contain special characters.") + cmd.MarkFlagRequired("dnc-list-name") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "The phone number to remove from the DNC list. Must be URL-encoded and in E.164 format (e.g., %2B1234567890 for +1234567890).") + cmd.MarkFlagRequired("phone-number") + dncManagementCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/entry_point.go b/cmd/cc/entry_point.go new file mode 100644 index 0000000..bc67f30 --- /dev/null +++ b/cmd/cc/entry_point.go @@ -0,0 +1,344 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + "strconv" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa + +var entryPointCmd = &cobra.Command{ + Use: "entry-point", + Short: "EntryPoint commands", +} + +func init() { + cmd.CcCmd.AddCommand(entryPointCmd) + + { // list + var orgid string + var filter string + var attributes string + var search string + var page string + var pageSize string + var desktopProfileFilter string + var provisioningView string + var includeCount string + var singleObjectResponse string + cmd := &cobra.Command{ + Use: "list", + Short: "List Entry Point(s)", + Long: `Retrieve a list of Entry Point(s) in a given organization. + Note: Array fields are removed from List API. If all fields are required please fetch Id's and use get-by-id API.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/v2/entry-point") + req.PathParam("orgid", orgid) + req.QueryParam("filter", filter) + req.QueryParam("attributes", attributes) + req.QueryParam("search", search) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + req.QueryParam("desktopProfileFilter", desktopProfileFilter) + req.QueryParam("provisioningView", provisioningView) + req.QueryParam("includeCount", includeCount) + req.QueryParam("singleObjectResponse", singleObjectResponse) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&filter, "filter", "", "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, xspVersion, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain space, and if so kindly bound it with quotes to apply filter. ") + cmd.Flags().StringVar(&attributes, "attributes", "", "Specify the attributes to be returned.Default all attributes are returned along with specified columns. All Attributes are supported except (ccOneQueue, userIds, queueRankings, links) ") + cmd.Flags().StringVar(&search, "search", "", "Filter data based on the search keyword.Supported search columns(name, description) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\",\"description\");value==\"Cisco\" ") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + cmd.Flags().StringVar(&desktopProfileFilter, "desktop-profile-filter", "", "If set to true, the API will return only the data that the user has access to according to its Desktop Profile. If set to false, the API will not check for Desktop Profile level access.") + cmd.Flags().StringVar(&provisioningView, "provisioning-view", "", "If set to true, the API will only return data that user has access to, according to User Profile. If set to false and desktopProfileFilter query parameter is not specified, the API will add user associated data, based on desktop. ") + cmd.Flags().StringVar(&includeCount, "include-count", "", "Enable the flag to get the count of DN-EP Mapping") + cmd.Flags().StringVar(&singleObjectResponse, "single-object-response", "", "Specifiy whether to include array fields in the response, This query param should use only if the response contain single record, if we are using for multiple objects response query param not supported and throws an exception.") + entryPointCmd.AddCommand(cmd) + } + + { // create + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a new Entry Point", + Long: `Create a new Entry Point in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/entry-point") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + entryPointCmd.AddCommand(cmd) + } + + { // bulk-save + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "bulk-save", + Short: "Bulk save Entry Point(s)", + Long: `Create, Update or delete Entry Point(s) in bulk in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/entry-point/bulk") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + entryPointCmd.AddCommand(cmd) + } + + { // bulk-export + var orgid string + var typeVal string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "bulk-export", + Short: "Bulk export Entry Point(s)", + Long: `Export all Entry Point(s) in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/entry-point/bulk-export") + req.PathParam("orgid", orgid) + req.QueryParam("type", typeVal) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&typeVal, "type", "", "Indicates the type of Entrypoint; can be INBOUND or OUTBOUND.") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + entryPointCmd.AddCommand(cmd) + } + + { // purge-inactive + var orgid string + var nextStartId string + cmd := &cobra.Command{ + Use: "purge-inactive", + Short: "Purge inactive Entry Point(s)", + Long: `Purge inactive Entry Point(s) older than the configured interval for a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/entry-point/purge-inactive-entities") + req.PathParam("orgid", orgid) + req.QueryParam("nextStartId", nextStartId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&nextStartId, "next-start-id", "", "This is the entity ID from which items for the next purge batch with be selected.") + entryPointCmd.AddCommand(cmd) + } + + { // get + var orgid string + var id string + var includeNames string + cmd := &cobra.Command{ + Use: "get", + Aliases: []string{"get-id"}, + Short: "Get specific Entry Point by ID", + Long: `Retrieve an existing Entry Point by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/entry-point/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + req.QueryParam("includeNames", includeNames) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Entry Point.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&includeNames, "include-names", "", "Specifiy whether to include flow override settings reference variable names.") + entryPointCmd.AddCommand(cmd) + } + + { // update + var orgid string + var id string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Aliases: []string{"update-id"}, + Short: "Update specific Entry Point by ID", + Long: `Update an existing Entry Point by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PUT", "/organization/{orgid}/entry-point/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Entry Point.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + entryPointCmd.AddCommand(cmd) + } + + { // delete + var orgid string + var id string + cmd := &cobra.Command{ + Use: "delete", + Aliases: []string{"delete-id"}, + Short: "Delete specific Entry Point by ID", + Long: `Delete an existing Entry Point by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/organization/{orgid}/entry-point/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Entry Point.") + cmd.MarkFlagRequired("id") + entryPointCmd.AddCommand(cmd) + } + + { // list-references + var orgid string + var id string + var typeVal string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "list-references", + Short: "List references for a specific Entry Point", + Long: `Retrieve a list of all entities that have reference to an existing Entry Point by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/entry-point/{id}/incoming-references") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + req.QueryParam("type", typeVal) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "ID of this contact center resource.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&typeVal, "type", "", "Entity type of the other entity that has a reference to this specific entity.") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + entryPointCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/estimated_wait_time.go b/cmd/cc/estimated_wait_time.go new file mode 100644 index 0000000..ba81b1c --- /dev/null +++ b/cmd/cc/estimated_wait_time.go @@ -0,0 +1,64 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var estimatedWaitTimeCmd = &cobra.Command{ + Use: "estimated-wait-time", + Short: "EstimatedWaitTime commands", +} + +func init() { + cmd.CcCmd.AddCommand(estimatedWaitTimeCmd) + + { // get + var queueId string + var lookbackMinutes string + var maxCv string + var minValidSamples string + var orgid string + var trackingId string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Estimated Wait Time", + Long: `Retrieve Estimated Wait Time information for a specified look back interval for a specific orgId and queueId combination, with ability to customomize maxCV and minValidSamples (See description above). +`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/v1/ewt") + req.QueryParam("queueId", queueId) + req.QueryParam("lookbackMinutes", lookbackMinutes) + req.QueryParam("maxCV", maxCv) + req.QueryParam("minValidSamples", minValidSamples) + req.QueryParam("orgId", orgid) + req.Header("TrackingId", trackingId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&queueId, "queue-id", "", "Id of the queue for which the EWT is to be returned") + cmd.Flags().StringVar(&lookbackMinutes, "lookback-minutes", "", "Integer between 5 and 240 (4 hours) signifying how long back to look at the data points to determine EWT for this queue") + cmd.Flags().StringVar(&maxCv, "max-cv", "", "This an optional parameter. Maximum value of Coefficient of Variance in a subset of samples (wait times for tasks that got connected to agent in one minute interval) to determine whether the average of such values should be treated as a valid sample for EWT computation. If its not passed it takes the default value of 40 %") + cmd.Flags().StringVar(&minValidSamples, "min-valid-samples", "", "This an optional parameter. Minimum value of percentage of valid samples (with respect to total number of samples) in the specified lookbackMinutes minutes. If its not passed it takes the default value of 40 %") + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to use for this operation. If unspecified, inferred from token. Token must have permission to interact with this organization.") + cmd.Flags().StringVar(&trackingId, "tracking-id", "", "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. ") + estimatedWaitTimeCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/events.go b/cmd/cc/events.go new file mode 100644 index 0000000..3742624 --- /dev/null +++ b/cmd/cc/events.go @@ -0,0 +1,57 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var eventsCmd = &cobra.Command{ + Use: "events", + Short: "Events commands", +} + +func init() { + cmd.CcCmd.AddCommand(eventsCmd) + + { // list-specifications + var orgid string + cmd := &cobra.Command{ + Use: "list-specifications", + Short: "List Event Specifications", + Long: "List the event types available for use in `event_flows[]`. Each entry describes the event name, payload schema, and any contextual metadata bound when the event fires.\n\nScope: `cjp:config_read`", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/{orgid}/project/{projectId}/v2/event-specifications") + req.PathParam("orgid", orgid) + req.PathParam("projectId", "5e5c9ad6d61f870d6d778c1b") + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID.") + cmd.MarkFlagRequired("orgid") + eventsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/external_data_updates.go b/cmd/cc/external_data_updates.go new file mode 100644 index 0000000..88990e7 --- /dev/null +++ b/cmd/cc/external_data_updates.go @@ -0,0 +1,62 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var externalDataUpdatesCmd = &cobra.Command{ + Use: "external-data-updates", + Short: "ExternalDataUpdates commands", +} + +func init() { + cmd.CcCmd.AddCommand(externalDataUpdatesCmd) + + { // update-task-global-variables + var xOrganizationId string + var trackingId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-task-global-variables", + Short: "Update Task Global Variables", + Long: `Updates numeric global variable values associated with a completed Webex Contact Center task. The request must identify the organization and task along with its start and end timestamps. The task should have ended within two days prior to the time of making the request.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PUT", "/v1/data/updateExternal") + req.Header("X-ORGANIZATION-ID", xOrganizationId) + req.Header("TrackingId", trackingId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&xOrganizationId, "x-organization-id", "", "Organization identifier used for partner or delegated access.") + cmd.Flags().StringVar(&trackingId, "tracking-id", "", "Optional identifier used for request traceability, debugging, and error reporting.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + externalDataUpdatesCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/flow.go b/cmd/cc/flow.go new file mode 100644 index 0000000..e297c4d --- /dev/null +++ b/cmd/cc/flow.go @@ -0,0 +1,591 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + "strconv" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa +var _ = strings.Join + +var flowCmd = &cobra.Command{ + Use: "flow", + Aliases: []string{"flows"}, + Short: "Flow commands", +} + +func init() { + cmd.CcCmd.AddCommand(flowCmd) + + { // export-legacy + var orgid string + var flowId string + var version string + cmd := &cobra.Command{ + Use: "export-legacy", + Short: "Export a Flow or Subflow", + Long: "Returns the exported flow/subflow in response.\n\nScope: `cjp:config_read`. Roles: [`Organizational Full Admin`, `Supervisor`, `Contact Center Service Admin`, `User Admin`]", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/flow-store/{orgid}/project/{projectId}/flows/{flowId}:export") + req.PathParam("orgid", orgid) + req.PathParam("projectId", "5e5c9ad6d61f870d6d778c1b") + req.PathParam("flowId", flowId) + req.QueryParam("version", version) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&flowId, "flow-id", "", "") + cmd.MarkFlagRequired("flow-id") + cmd.Flags().StringVar(&version, "version", "", "Version ID. Possible values are 'draft', 'latest' or version ID like '64b92c004ccd9f3d1c680709'. Defaulted to 'latest'.") + flowCmd.AddCommand(cmd) + } + + { // import-legacy + var orgid string + var overwrite string + var flowType string + var contentLength string + cmd := &cobra.Command{ + Use: "import-legacy", + Short: "Import a Flow or Subflow", + Long: "Returns the imported flow/subflow in response.\n\nScope: `cjp:config_write`. Roles: [`Organizational Full Admin`, `Supervisor`, `Contact Center Service Admin`, `User Admin`]", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/flow-store/{orgid}/project/{projectId}/flows:import") + req.PathParam("orgid", orgid) + req.PathParam("projectId", "5e5c9ad6d61f870d6d778c1b") + req.QueryParam("overwrite", overwrite) + req.QueryParam("flowType", flowType) + req.Header("Content-Length", contentLength) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&overwrite, "overwrite", "", "Determines whether to overwrite the existing flow or not. Possible values: yes/no.") + cmd.Flags().StringVar(&flowType, "flow-type", "", "Either of 'FLOW' or 'SUBFLOW'.") + cmd.Flags().StringVar(&contentLength, "content-length", "", "Content length value in number of bytes.") + flowCmd.AddCommand(cmd) + } + + { // list + var orgid string + var flowType string + var ids string + var page string + var partialNameSearch string + var searchBy string + var size string + var includePagination string + var isValidation string + cmd := &cobra.Command{ + Use: "list", + Short: "List Flows or Subflows", + Long: "Returns a list of flows in response. Channel-based filtering can be applied with the `searchBy` query parameter (for example, `channelType|telephony`, `channelType|workItem`, `channelType|customMessaging`, `channelType|genericAction`). Channel visibility may be constrained by organization feature flags. If associatedChannels key is missing or empty, it will be treated as telephony flow.\n\nScope: `cjp:config_read`. Roles: [`Organizational Full Admin`, `Supervisor`, `Contact Center Service Admin`, `User Admin`]", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/{orgid}/project/{projectId}/flows") + req.PathParam("orgid", orgid) + req.PathParam("projectId", "5e5c9ad6d61f870d6d778c1b") + req.QueryParam("flowType", flowType) + req.QueryParam("ids", ids) + req.QueryParam("ids", ids) + req.QueryParam("page", page) + req.QueryParam("partialNameSearch", partialNameSearch) + req.QueryParam("searchBy", searchBy) + req.QueryParam("size", size) + req.QueryParam("includePagination", includePagination) + req.QueryParam("isValidation", isValidation) + if config.Paginate() { + req.PageSizeParam("size") + req.QueryParam("includePagination", "true") + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&flowType, "flow-type", "", "Either of 'FLOW' or 'SUBFLOW'.") + cmd.Flags().StringVar(&ids, "ids", "", "Filters results based on a comma-separated list of flow IDs. If provided, only flows with those IDs will be fetched in the response.") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of the displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&partialNameSearch, "partial-name-search", "", "Performs a partial string match on the name of the flow. If the flow name contains the given string it will be fetched in the response.") + cmd.Flags().StringVar(&searchBy, "search-by", "", "Filter expression in the format `|`. Supports searching by `channelType` (for example, `channelType|telephony`, `channelType|workItem`, `channelType|customMessaging`, `channelType|genericAction`).") + cmd.Flags().StringVar(&size, "size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + cmd.Flags().StringVar(&includePagination, "include-pagination", "", "If set to true then a different paginated response object containing the page metadata (currentPage, totalRecords, pageSize, totalPages) will be returned. The flow objects will be in an array named \"data\".") + cmd.Flags().StringVar(&isValidation, "is-validation", "", "If true, validates the existence of flows by ID regardless of the caller's RBAC access. Intended for internal Task Management use cases.") + flowCmd.AddCommand(cmd) + } + + { // publish + var orgid string + var flowId string + var skipValidation string + var flowType string + var trackingId string + var comment string + var tagIds []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "publish", + Short: "Publish a Flow or Subflow", + Long: "Returns the published flow in response.\n\nThe Publish API validates the basic structure of the flows. We recommend manually verifying the published flows before proceeding with live traffic.\n\nScope: `cjp:config_write`. Roles: [`Organizational Full Admin`, `Supervisor`, `Contact Center Service Admin`, `User Admin`]", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/{orgid}/project/{projectId}/flows/{flowId}:publish") + req.PathParam("orgid", orgid) + req.PathParam("projectId", "5e5c9ad6d61f870d6d778c1b") + req.PathParam("flowId", flowId) + req.QueryParam("skipValidation", skipValidation) + req.QueryParam("flowType", flowType) + req.Header("TrackingId", trackingId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("comment", comment) + req.BodyStringSlice("tagIds", tagIds) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&flowId, "flow-id", "", "") + cmd.MarkFlagRequired("flow-id") + cmd.Flags().StringVar(&skipValidation, "skip-validation", "", "If true, the flow's pre-publish validation is skipped. Use with care.") + cmd.Flags().StringVar(&flowType, "flow-type", "", "Either of 'FLOW' or 'SUBFLOW'.") + cmd.Flags().StringVar(&trackingId, "tracking-id", "", "ID for tracking.") + cmd.Flags().StringVar(&comment, "comment", "", "") + cmd.Flags().StringSliceVar(&tagIds, "tag-ids", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + flowCmd.AddCommand(cmd) + } + + { // lock + var orgid string + var flowId string + var flowType string + cmd := &cobra.Command{ + Use: "lock", + Short: "Lock a Flow or Subflow", + Long: "Lock a flow to prevent concurrent edits by other users. Locks expire after 15 minutes of inactivity.\n\nScope: `cjp:config_write`. Roles: [`Organizational Full Admin`, `Contact Center Service Admin`]", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/{orgid}/project/{projectId}/flows/{flowId}:lock") + req.PathParam("orgid", orgid) + req.PathParam("projectId", "5e5c9ad6d61f870d6d778c1b") + req.PathParam("flowId", flowId) + req.QueryParam("flowType", flowType) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&flowId, "flow-id", "", "") + cmd.MarkFlagRequired("flow-id") + cmd.Flags().StringVar(&flowType, "flow-type", "", "Either of 'FLOW' or 'SUBFLOW'.") + flowCmd.AddCommand(cmd) + } + + { // unlock + var orgid string + var flowId string + var flowType string + cmd := &cobra.Command{ + Use: "unlock", + Short: "Unlock a Flow or Subflow", + Long: "Release the lock on a flow to allow other users to edit it.\n\nScope: `cjp:config_write`. Roles: [`Organizational Full Admin`, `Contact Center Service Admin`]", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/{orgid}/project/{projectId}/flows/{flowId}:unlock") + req.PathParam("orgid", orgid) + req.PathParam("projectId", "5e5c9ad6d61f870d6d778c1b") + req.PathParam("flowId", flowId) + req.QueryParam("flowType", flowType) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&flowId, "flow-id", "", "") + cmd.MarkFlagRequired("flow-id") + cmd.Flags().StringVar(&flowType, "flow-type", "", "Either of 'FLOW' or 'SUBFLOW'.") + flowCmd.AddCommand(cmd) + } + + { // validate + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "validate", + Short: "Validate a Flow or Subflow", + Long: "Dry-run validate a flow/subflow definition without persisting it. Use this to check correctness before importing. Include `associatedChannels` to preserve the channel metadata that import and export payloads round-trip. Validation requests where `associatedChannels` is missing or empty are treated as telephony flows, and dry-run validation does not derive the effective channel from `associatedChannels`.\n\nNote: validation is more lenient than import. A flow that passes `:validate` can still be rejected by `:import` (for example, a missing start activity), so a successful validation does not guarantee a successful import.\n\nScope: `cjp:config_write`", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/{orgid}/project/{projectId}/v2/flows:validate") + req.PathParam("orgid", orgid) + req.PathParam("projectId", "5e5c9ad6d61f870d6d778c1b") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + flowCmd.AddCommand(cmd) + } + + { // import + var orgid string + var overwrite string + var flowType string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "import", + Short: "Import a Flow or Subflow", + Long: "Import a new flow/subflow from a flow definition. Creates the flow/subflow in draft state and returns the assigned flow metadata, including `flowId`. Include `associatedChannels` in the payload when the flow contains channel-specific activities (for example, `customMessaging`) so channel references can be resolved correctly during import. If `associatedChannels` is missing or empty, the import is treated as a telephony flow. For `FLOW` imports, blank or whitespace-only `associatedChannels[].channelType` values are rejected.\n\nScope: `cjp:config_write`", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/{orgid}/project/{projectId}/v2/flows:import") + req.PathParam("orgid", orgid) + req.PathParam("projectId", "5e5c9ad6d61f870d6d778c1b") + req.QueryParam("overwrite", overwrite) + req.QueryParam("flowType", flowType) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&overwrite, "overwrite", "", "If true, replaces an existing flow with the same name. Defaults to false.") + cmd.Flags().StringVar(&flowType, "flow-type", "", "Either of 'FLOW' or 'SUBFLOW'.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + flowCmd.AddCommand(cmd) + } + + { // get + var orgid string + var flowId string + var flowType string + cmd := &cobra.Command{ + Use: "get", + Short: "Get a Flow or Subflow", + Long: "Retrieve the current draft of a flow/subflow as a flow document. To fetch a specific published version, use the `:export` endpoint. The response includes channel metadata (for example, `associatedChannels`) used by channel-specific activities such as `customMessaging`. If `associatedChannels` is missing or empty, the flow is treated as telephony.\n\nScope: `cjp:config_read`", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/{orgid}/project/{projectId}/v2/flows/{flowId}") + req.PathParam("orgid", orgid) + req.PathParam("projectId", "5e5c9ad6d61f870d6d778c1b") + req.PathParam("flowId", flowId) + req.QueryParam("flowType", flowType) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&flowId, "flow-id", "", "Flow ID.") + cmd.MarkFlagRequired("flow-id") + cmd.Flags().StringVar(&flowType, "flow-type", "", "Either of 'FLOW' or 'SUBFLOW'.") + flowCmd.AddCommand(cmd) + } + + { // save-draft + var orgid string + var flowId string + var expectedVersion string + var flowType string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "save-draft", + Short: "Save a Flow or Subflow Draft", + Long: "Save a complete flow/subflow document as the current draft, replacing the existing draft. Submitted `associatedChannels` values are not persisted on save; the draft preserves the existing stored channel metadata. Omitting `associatedChannels` does not default an existing flow to telephony. Pass `expectedVersion` as a query parameter to enable optimistic locking; the request fails with `409 Conflict` if the server-side version does not match. Omit `expectedVersion` to skip the check.\n\nScope: `cjp:config_write`", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/{orgid}/project/{projectId}/v2/flows/{flowId}") + req.PathParam("orgid", orgid) + req.PathParam("projectId", "5e5c9ad6d61f870d6d778c1b") + req.PathParam("flowId", flowId) + req.QueryParam("expectedVersion", expectedVersion) + req.QueryParam("flowType", flowType) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&flowId, "flow-id", "", "Flow ID.") + cmd.MarkFlagRequired("flow-id") + cmd.Flags().StringVar(&expectedVersion, "expected-version", "", "Expected current draft version for optimistic locking. The request fails with 409 Conflict if the server-side version does not match. Omit to skip the check.") + cmd.Flags().StringVar(&flowType, "flow-type", "", "Either of 'FLOW' or 'SUBFLOW'.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + flowCmd.AddCommand(cmd) + } + + { // patch-draft + var orgid string + var flowId string + var expectedVersion string + var flowType string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "patch-draft", + Short: "Patch a Flow or Subflow Draft", + Long: "Apply partial updates to an existing flow/subflow draft without replacing the entire document. The patch body is a Patch Draft Contract \u2014 server-side merge, idempotent, and re-validated after the merge. The patch is rejected if the merged document fails validation, so the draft is never left in a broken state. The body may also include top-level overrides such as `name` and `description`. Submitted `associatedChannels` values are not persisted on patch; the draft preserves the existing stored channel metadata.\n\nPass `expectedVersion` as a query parameter to enable optimistic locking; the request fails with `409 Conflict` if the server-side version does not match. Omit `expectedVersion` to skip the check.\n\nScope: `cjp:config_write`", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PATCH", "/{orgid}/project/{projectId}/v2/flows/{flowId}") + req.PathParam("orgid", orgid) + req.PathParam("projectId", "5e5c9ad6d61f870d6d778c1b") + req.PathParam("flowId", flowId) + req.QueryParam("expectedVersion", expectedVersion) + req.QueryParam("flowType", flowType) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&flowId, "flow-id", "", "Flow ID.") + cmd.MarkFlagRequired("flow-id") + cmd.Flags().StringVar(&expectedVersion, "expected-version", "", "Expected current draft version for optimistic locking. The request fails with 409 Conflict if the server-side version does not match. Omit to skip the check.") + cmd.Flags().StringVar(&flowType, "flow-type", "", "Either of 'FLOW' or 'SUBFLOW'.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + flowCmd.AddCommand(cmd) + } + + { // validate-draft + var orgid string + var flowId string + var versionId string + var flowType string + cmd := &cobra.Command{ + Use: "validate-draft", + Short: "Validate an Existing Flow or Subflow Draft", + Long: "Validate the current draft of an existing flow/subflow (read-only operation). Validation reads the draft as stored. Drafts where `associatedChannels` is missing or empty are treated as telephony flows, and validation does not derive the effective channel from `associatedChannels`.\n\nScope: `cjp:config_read`", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/{orgid}/project/{projectId}/v2/flows/{flowId}:validate") + req.PathParam("orgid", orgid) + req.PathParam("projectId", "5e5c9ad6d61f870d6d778c1b") + req.PathParam("flowId", flowId) + req.QueryParam("versionId", versionId) + req.QueryParam("flowType", flowType) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&flowId, "flow-id", "", "") + cmd.MarkFlagRequired("flow-id") + cmd.Flags().StringVar(&versionId, "version-id", "", "Version to validate. Use 'draft' for the current draft, or a specific version ObjectId.") + cmd.Flags().StringVar(&flowType, "flow-type", "", "Either of 'FLOW' or 'SUBFLOW'.") + flowCmd.AddCommand(cmd) + } + + { // export + var orgid string + var flowId string + var version string + var flowType string + cmd := &cobra.Command{ + Use: "export", + Short: "Export a Flow or Subflow", + Long: "Export a flow/subflow as a flow document for backup, migration, or version control. The exported payload includes `associatedChannels` metadata to preserve channel-specific activity behavior (for example, `customMessaging`) during re-import. If `associatedChannels` is missing or empty, the flow is treated as telephony.\n\nScope: `cjp:config_read`", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/{orgid}/project/{projectId}/v2/flows/{flowId}:export") + req.PathParam("orgid", orgid) + req.PathParam("projectId", "5e5c9ad6d61f870d6d778c1b") + req.PathParam("flowId", flowId) + req.QueryParam("version", version) + req.QueryParam("flowType", flowType) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&flowId, "flow-id", "", "") + cmd.MarkFlagRequired("flow-id") + cmd.Flags().StringVar(&version, "version", "", "Version to export. Use 'latest' for the most recent published version, 'draft' for the working copy, or a specific version ObjectId.") + cmd.Flags().StringVar(&flowType, "flow-type", "", "Either of 'FLOW' or 'SUBFLOW'.") + flowCmd.AddCommand(cmd) + } + + { // search + var orgid string + var query string + var flowType string + var page string + var size string + var keyValueFilter string + cmd := &cobra.Command{ + Use: "search", + Short: "Search Flows", + Long: "Returns a list of flows in response. The search is case-sensitive.\n\nScope: `cjp:config_read`. Roles: [`Organizational Full Admin`, `Supervisor`, `Contact Center Service Admin`, `User Admin`]", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/{orgid}/project/{projectId}/flows:search") + req.PathParam("orgid", orgid) + req.PathParam("projectId", "5e5c9ad6d61f870d6d778c1b") + req.QueryParam("query", query) + req.QueryParam("flowType", flowType) + req.QueryParam("page", page) + req.QueryParam("size", size) + req.QueryParam("keyValueFilter", keyValueFilter) + if config.Paginate() { + req.PageSizeParam("size") + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&query, "query", "", "Searches for flows with the given query. The search is case-sensitive.") + cmd.Flags().StringVar(&flowType, "flow-type", "", "Either of 'FLOW' or 'SUBFLOW' or 'ALL'. Default value is 'ALL'.") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of the displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&size, "size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + cmd.Flags().StringVar(&keyValueFilter, "key-value-filter", "", "Filters results based on key-value pairs. Format: 'key1|value1,key2|value2'. This will add a filter on normalizedFlow collection directly instead of running query on atlas.") + flowCmd.AddCommand(cmd) + } + + { // delete + var orgid string + var flowId string + var force string + var skipRsEpcheck string + var flowType string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete a Flow or Subflow", + Long: "Permanently deletes a flow or subflow. Flows deleted via this API are removed permanently and cannot be recovered.\n\nScope: `cjp:config_write`. Roles: [`Organizational Full Admin`, `Contact Center Service Admin`]", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/{orgid}/project/{projectId}/flows/{flowId}") + req.PathParam("orgid", orgid) + req.PathParam("projectId", "5e5c9ad6d61f870d6d778c1b") + req.PathParam("flowId", flowId) + req.QueryParam("force", force) + req.QueryParam("skipRsEPCheck", skipRsEpcheck) + req.QueryParam("flowType", flowType) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&flowId, "flow-id", "", "ID of the flow/subflow to delete.") + cmd.MarkFlagRequired("flow-id") + cmd.Flags().StringVar(&force, "force", "", "If 'yes', the flow is deleted even if it is still referenced by other entities. Defaults to 'no'.") + cmd.Flags().StringVar(&skipRsEpcheck, "skip-rs-epcheck", "", "If true, skips the check for routing strategy and entry point associations before deleting the flow.") + cmd.Flags().StringVar(&flowType, "flow-type", "", "Either of 'FLOW' or 'SUBFLOW'.") + flowCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/functions.go b/cmd/cc/functions.go new file mode 100644 index 0000000..60d69a4 --- /dev/null +++ b/cmd/cc/functions.go @@ -0,0 +1,440 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + "strconv" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa +var _ = strings.Join + +var functionsCmd = &cobra.Command{ + Use: "functions", + Short: "Functions commands", +} + +func init() { + cmd.CcCmd.AddCommand(functionsCmd) + + { // list + var orgid string + var isPartialMatch string + var isCaseSensitive string + var name string + var language string + var status string + var sortBy string + var page string + var size string + var ids string + var fields string + var isValidation string + cmd := &cobra.Command{ + Use: "list", + Short: "List Custom Functions", + Long: "List or search custom functions in the organization. Without filters, returns all custom functions. Supports filtering by name, language, and status, plus sorting and pagination.\n\nScope: `cjp:config_read`", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/v1/{orgid}/functions") + req.PathParam("orgid", orgid) + req.QueryParam("isPartialMatch", isPartialMatch) + req.QueryParam("isCaseSensitive", isCaseSensitive) + req.QueryParam("name", name) + req.QueryParam("language", language) + req.QueryParam("status", status) + req.QueryParam("sortBy", sortBy) + req.QueryParam("page", page) + req.QueryParam("size", size) + req.QueryParam("ids", ids) + req.QueryParam("fields", fields) + req.QueryParam("isValidation", isValidation) + if config.Paginate() { + req.PageSizeParam("size") + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&isPartialMatch, "is-partial-match", "", "Whether to search with partial matches. If `false`, search/filter is based on exact match.") + cmd.Flags().StringVar(&isCaseSensitive, "is-case-sensitive", "", "Whether the search should be case-sensitive. Currently applicable only to the `name` field.") + cmd.Flags().StringVar(&name, "name", "", "Filter by function name.") + cmd.Flags().StringVar(&language, "language", "", "Filter by programming language.") + cmd.Flags().StringVar(&status, "status", "", "Filter by one or more function statuses (comma-separated, no spaces). Case-sensitive.") + cmd.Flags().StringVar(&sortBy, "sort-by", "", "Comma-separated fields with order. Supported fields (case-sensitive): `name`, `language`, `status`, `lastModifiedDate`. Prefix a field with `-` for descending order; no prefix means ascending.") + cmd.Flags().StringVar(&page, "page", "", "Zero-based page number for the paginated query.") + cmd.Flags().StringVar(&size, "size", "", "Number of results per page.") + cmd.Flags().StringVar(&ids, "ids", "", "Comma-separated list of function IDs to fetch.") + cmd.Flags().StringVar(&fields, "fields", "", "Comma-separated list of function fields to include in the response.") + cmd.Flags().StringVar(&isValidation, "is-validation", "", "Used by the Tenant Management team to validate the existence of functions with given IDs regardless of the user's RBAC access.") + functionsCmd.AddCommand(cmd) + } + + { // create + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a Custom Function", + Long: "Create a new custom function. The source code is provided as an escaped string and the runtime defaults to the highest supported runtime for the given language.\n\nScope: `cjp:config_write`", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v1/{orgid}/functions") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + functionsCmd.AddCommand(cmd) + } + + { // get + var orgid string + var id string + var versionOrTag string + var metaDataOnly string + cmd := &cobra.Command{ + Use: "get", + Short: "Get a Custom Function", + Long: "Retrieve a custom function by its ID. Use `versionOrTag` to fetch a specific published version, or omit it to get the draft.\n\nScope: `cjp:config_read`", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/v1/{orgid}/functions/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + req.QueryParam("versionOrTag", versionOrTag) + req.QueryParam("metaDataOnly", metaDataOnly) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Custom function ID. Hexadecimal ObjectId returned by the create or list APIs.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&versionOrTag, "version-or-tag", "", "Version number or publish tag of the source code to return (for example, `Dev`, `Live`, or `2`). If omitted, the draft version is returned.") + cmd.Flags().StringVar(&metaDataOnly, "meta-data-only", "", "If `true`, returns only metadata and excludes source code. If `false` or omitted, returns both metadata and source code.") + functionsCmd.AddCommand(cmd) + } + + { // update + var orgid string + var id string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Short: "Update a Custom Function", + Long: "Update an existing custom function by ID. Replaces the draft source code and metadata with the supplied body.\n\nScope: `cjp:config_write`", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PUT", "/v1/{orgid}/functions/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Custom function ID.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + functionsCmd.AddCommand(cmd) + } + + { // delete + var orgid string + var id string + var isForceDeletion string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete a Custom Function", + Long: "Delete a custom function by ID. Use `isForceDeletion=true` to delete even when the function is referenced by one or more flows.\n\nScope: `cjp:config_write`", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/v1/{orgid}/functions/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + req.QueryParam("isForceDeletion", isForceDeletion) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Custom function ID.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&isForceDeletion, "is-force-deletion", "", "If `true`, deletes the function regardless of its usage in flows.") + functionsCmd.AddCommand(cmd) + } + + { // import + var orgid string + var overwrite string + var associatedRcs string + cmd := &cobra.Command{ + Use: "import", + Short: "Import a Custom Function", + Long: "Import a custom function from a previously exported function-definition JSON file, uploaded as the multipart `file` part (not a zip or base64 envelope). Use `overwrite=true` to replace any existing function with the same name.\n\nScope: `cjp:config_write`", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v1/{orgid}/functions:import") + req.PathParam("orgid", orgid) + req.QueryParam("overwrite", overwrite) + req.QueryParam("associatedRcs", associatedRcs) + req.QueryParam("associatedRcs", associatedRcs) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&overwrite, "overwrite", "", "If `true`, overwrites a function with the same name if one already exists.") + cmd.Flags().StringVar(&associatedRcs, "associated-rcs", "", "Optional list of associated routing-context IDs.") + functionsCmd.AddCommand(cmd) + } + + { // unlock + var orgid string + var id string + cmd := &cobra.Command{ + Use: "unlock", + Short: "Unlock a Custom Function", + Long: "Release the edit lock on a custom function so that other users can edit it.\n\nScope: `cjp:config_write`", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v1/{orgid}/functions/{id}:unlock") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "") + cmd.MarkFlagRequired("id") + functionsCmd.AddCommand(cmd) + } + + { // lock + var orgid string + var id string + cmd := &cobra.Command{ + Use: "lock", + Short: "Lock a Custom Function", + Long: "Acquire an edit lock on a custom function to prevent concurrent writes by other users.\n\nScope: `cjp:config_write`", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v1/{orgid}/functions/{id}:lock") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "") + cmd.MarkFlagRequired("id") + functionsCmd.AddCommand(cmd) + } + + { // test + var orgid string + var id string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "test", + Short: "Test a Custom Function", + Long: "Execute a custom function with a test payload. Implicitly publishes the latest draft first, so the run uses the most recent source code.\n\nScope: `cjp:config_write`", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v1/{orgid}/functions/{id}:test") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + functionsCmd.AddCommand(cmd) + } + + { // publish + var orgid string + var id string + var tags []string + var comment string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "publish", + Short: "Publish a Custom Function", + Long: "Publish the latest draft of a custom function under one or more tags (`Dev`, `Test`, `Latest`, `Live`). Ensure the function has been created or updated before calling this API.\n\nScope: `cjp:config_write`", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v1/{orgid}/functions/{id}:publish") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("tags", tags) + req.BodyString("comment", comment) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "") + cmd.MarkFlagRequired("id") + cmd.Flags().StringSliceVar(&tags, "tags", nil, "") + cmd.Flags().StringVar(&comment, "comment", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + functionsCmd.AddCommand(cmd) + } + + { // export + var orgid string + var id string + var versionOrTag string + cmd := &cobra.Command{ + Use: "export", + Short: "Export a Custom Function", + Long: "Export a custom function for the given version or publish tag. Returns the plain function-definition JSON (name, language, runtime, description, source code, inputs, and outputs), suitable for re-importing via the import API.\n\nScope: `cjp:config_read`", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v1/{orgid}/functions/{id}:export") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + req.QueryParam("versionOrTag", versionOrTag) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&versionOrTag, "version-or-tag", "", "Version number or publish tag of the source code to export. If omitted, the latest published version is exported.") + functionsCmd.AddCommand(cmd) + } + + { // list-options + var orgid string + var language string + var runtime string + cmd := &cobra.Command{ + Use: "list-options", + Short: "List Function Options", + Long: "List the supported programming languages, runtimes, and corresponding wrapper code for custom functions. Filter by `language` or `runtime` to narrow the result.\n\nScope: `cjp:config_read`", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/v1/{orgid}/functions/options") + req.PathParam("orgid", orgid) + req.QueryParam("language", language) + req.QueryParam("runtime", runtime) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&language, "language", "", "Filter by programming language (for example, `js`, `py`).") + cmd.Flags().StringVar(&runtime, "runtime", "", "Filter by runtime (for example, `nodejs22.x`, `python3.13`).") + functionsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/generated_summaries.go b/cmd/cc/generated_summaries.go new file mode 100644 index 0000000..0434125 --- /dev/null +++ b/cmd/cc/generated_summaries.go @@ -0,0 +1,159 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + "strconv" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa + +var generatedSummariesCmd = &cobra.Command{ + Use: "generated-summaries", + Short: "GeneratedSummaries commands", +} + +func init() { + cmd.CcCmd.AddCommand(generatedSummariesCmd) + + { // get + var orgid string + var id string + cmd := &cobra.Command{ + Use: "get", + Aliases: []string{"get-id"}, + Short: "Get specific Generated Summaries resource by ID", + Long: `Retrieve an existing Generated Summaries resource by ID in a given organization. Deprecated. Use GET /ai-feature/generated-summaries/{id} instead.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/generated-summaries/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Generated Summaries resource.") + cmd.MarkFlagRequired("id") + generatedSummariesCmd.AddCommand(cmd) + } + + { // update + var orgid string + var id string + var organizationId string + var version int64 + var callDropSummariesEnabled bool + var virtualAgentTransferSummariesEnabled bool + var consultTransferSummariesEnabled bool + var agentInclusionType string + var createdTime int64 + var lastUpdatedTime int64 + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Aliases: []string{"update-id"}, + Short: "Update specific Generated Summaries resource by ID", + Long: `Update an existing Generated Summaries resource by ID in a given organization. Deprecated. Use PUT /ai-feature/generated-summaries/{id} instead.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PUT", "/organization/{orgid}/generated-summaries/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("organizationId", organizationId) + req.BodyString("id", id) + req.BodyInt("version", version, cmd.Flags().Changed("version")) + req.BodyBool("callDropSummariesEnabled", callDropSummariesEnabled, cmd.Flags().Changed("call-drop-summaries-enabled")) + req.BodyBool("virtualAgentTransferSummariesEnabled", virtualAgentTransferSummariesEnabled, cmd.Flags().Changed("virtual-agent-transfer-summaries-enabled")) + req.BodyBool("consultTransferSummariesEnabled", consultTransferSummariesEnabled, cmd.Flags().Changed("consult-transfer-summaries-enabled")) + req.BodyString("agentInclusionType", agentInclusionType) + req.BodyInt("createdTime", createdTime, cmd.Flags().Changed("created-time")) + req.BodyInt("lastUpdatedTime", lastUpdatedTime, cmd.Flags().Changed("last-updated-time")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Generated Summaries resource.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&organizationId, "organization-id", "", "") + cmd.Flags().Int64Var(&version, "version", 0, "") + cmd.Flags().BoolVar(&callDropSummariesEnabled, "call-drop-summaries-enabled", false, "") + cmd.Flags().BoolVar(&virtualAgentTransferSummariesEnabled, "virtual-agent-transfer-summaries-enabled", false, "") + cmd.Flags().BoolVar(&consultTransferSummariesEnabled, "consult-transfer-summaries-enabled", false, "") + cmd.Flags().StringVar(&agentInclusionType, "agent-inclusion-type", "", "") + cmd.Flags().Int64Var(&createdTime, "created-time", 0, "") + cmd.Flags().Int64Var(&lastUpdatedTime, "last-updated-time", 0, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + generatedSummariesCmd.AddCommand(cmd) + } + + { // list + var orgid string + var filter string + var attributes string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "list", + Short: "List Generated Summaries resource(s)", + Long: `Retrieve a list of Generated Summaries resource(s) in a given organization.Only one entry per organization can exist for Generated Summaries resource. Deprecated. Use GET /v2/ai-feature/generated-summaries instead.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/v2/generated-summaries") + req.PathParam("orgid", orgid) + req.QueryParam("filter", filter) + req.QueryParam("attributes", attributes) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&filter, "filter", "", "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. ") + cmd.Flags().StringVar(&attributes, "attributes", "", "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported.") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + generatedSummariesCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/global_variables.go b/cmd/cc/global_variables.go new file mode 100644 index 0000000..181d288 --- /dev/null +++ b/cmd/cc/global_variables.go @@ -0,0 +1,430 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + "strconv" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa + +var globalVariablesCmd = &cobra.Command{ + Use: "global-variables", + Short: "GlobalVariables commands", +} + +func init() { + cmd.CcCmd.AddCommand(globalVariablesCmd) + + { // create + var orgid string + var active bool + var agentEditable bool + var agentViewable bool + var defaultValue string + var name string + var reportable bool + var variableType string + var organizationId string + var id string + var version int64 + var description string + var sensitive bool + var desktopLabel string + var systemDefault bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a new Global Variable", + Long: `Create a new Global Variable in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/cad-variable") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("active", active, cmd.Flags().Changed("active")) + req.BodyBool("agentEditable", agentEditable, cmd.Flags().Changed("agent-editable")) + req.BodyBool("agentViewable", agentViewable, cmd.Flags().Changed("agent-viewable")) + req.BodyString("defaultValue", defaultValue) + req.BodyString("name", name) + req.BodyBool("reportable", reportable, cmd.Flags().Changed("reportable")) + req.BodyString("variableType", variableType) + req.BodyString("organizationId", organizationId) + req.BodyString("id", id) + req.BodyInt("version", version, cmd.Flags().Changed("version")) + req.BodyString("description", description) + req.BodyBool("sensitive", sensitive, cmd.Flags().Changed("sensitive")) + req.BodyString("desktopLabel", desktopLabel) + req.BodyBool("systemDefault", systemDefault, cmd.Flags().Changed("system-default")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().BoolVar(&active, "active", false, "") + cmd.Flags().BoolVar(&agentEditable, "agent-editable", false, "") + cmd.Flags().BoolVar(&agentViewable, "agent-viewable", false, "") + cmd.Flags().StringVar(&defaultValue, "default-value", "", "") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().BoolVar(&reportable, "reportable", false, "") + cmd.Flags().StringVar(&variableType, "variable-type", "", "") + cmd.Flags().StringVar(&organizationId, "organization-id", "", "") + cmd.Flags().StringVar(&id, "id", "", "") + cmd.Flags().Int64Var(&version, "version", 0, "") + cmd.Flags().StringVar(&description, "description", "", "") + cmd.Flags().BoolVar(&sensitive, "sensitive", false, "") + cmd.Flags().StringVar(&desktopLabel, "desktop-label", "", "") + cmd.Flags().BoolVar(&systemDefault, "system-default", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + globalVariablesCmd.AddCommand(cmd) + } + + { // bulk-save + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "bulk-save", + Short: "Bulk save Global Variable(s)", + Long: `Export all Global Variable(s) in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/cad-variable/bulk") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + globalVariablesCmd.AddCommand(cmd) + } + + { // bulk-export + var orgid string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "bulk-export", + Short: "Bulk export Global Variable(s)", + Long: `Export all Global Variable(s) in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/cad-variable/bulk-export") + req.PathParam("orgid", orgid) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + globalVariablesCmd.AddCommand(cmd) + } + + { // purge-inactive + var orgid string + var nextStartId string + cmd := &cobra.Command{ + Use: "purge-inactive", + Short: "Purge inactive Global Variable(s)", + Long: `Purge inactive Global Variable(s) older than the configured interval for a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/cad-variable/purge-inactive-entities") + req.PathParam("orgid", orgid) + req.QueryParam("nextStartId", nextStartId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&nextStartId, "next-start-id", "", "This is the entity ID from which items for the next purge batch with be selected.") + globalVariablesCmd.AddCommand(cmd) + } + + { // get-reportable-count + var orgid string + cmd := &cobra.Command{ + Use: "get-reportable-count", + Short: "Get reportable count for Global Variable(s)", + Long: `Get count for all the reportable Global Variable(s) in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/cad-variable/reportable-count") + req.PathParam("orgid", orgid) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + globalVariablesCmd.AddCommand(cmd) + } + + { // get + var orgid string + var id string + cmd := &cobra.Command{ + Use: "get", + Aliases: []string{"get-id"}, + Short: "Get specific Global Variable by ID", + Long: `Retrieve an existing Global Variable by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/cad-variable/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "ID of the Global Variable.") + cmd.MarkFlagRequired("id") + globalVariablesCmd.AddCommand(cmd) + } + + { // update + var orgid string + var id string + var active bool + var agentEditable bool + var agentViewable bool + var defaultValue string + var name string + var reportable bool + var variableType string + var organizationId string + var version int64 + var description string + var sensitive bool + var desktopLabel string + var systemDefault bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Aliases: []string{"update-id"}, + Short: "Update specific Global Variable by ID", + Long: `Update an existing Global Variable by ID in a given organization. Required fields in payload are agentEditable, variableType, agentViewable, reportable, active, defaultValue.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PUT", "/organization/{orgid}/cad-variable/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("active", active, cmd.Flags().Changed("active")) + req.BodyBool("agentEditable", agentEditable, cmd.Flags().Changed("agent-editable")) + req.BodyBool("agentViewable", agentViewable, cmd.Flags().Changed("agent-viewable")) + req.BodyString("defaultValue", defaultValue) + req.BodyString("name", name) + req.BodyBool("reportable", reportable, cmd.Flags().Changed("reportable")) + req.BodyString("variableType", variableType) + req.BodyString("organizationId", organizationId) + req.BodyString("id", id) + req.BodyInt("version", version, cmd.Flags().Changed("version")) + req.BodyString("description", description) + req.BodyBool("sensitive", sensitive, cmd.Flags().Changed("sensitive")) + req.BodyString("desktopLabel", desktopLabel) + req.BodyBool("systemDefault", systemDefault, cmd.Flags().Changed("system-default")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "ID of the Global Variable.") + cmd.MarkFlagRequired("id") + cmd.Flags().BoolVar(&active, "active", false, "") + cmd.Flags().BoolVar(&agentEditable, "agent-editable", false, "") + cmd.Flags().BoolVar(&agentViewable, "agent-viewable", false, "") + cmd.Flags().StringVar(&defaultValue, "default-value", "", "") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().BoolVar(&reportable, "reportable", false, "") + cmd.Flags().StringVar(&variableType, "variable-type", "", "") + cmd.Flags().StringVar(&organizationId, "organization-id", "", "") + cmd.Flags().Int64Var(&version, "version", 0, "") + cmd.Flags().StringVar(&description, "description", "", "") + cmd.Flags().BoolVar(&sensitive, "sensitive", false, "") + cmd.Flags().StringVar(&desktopLabel, "desktop-label", "", "") + cmd.Flags().BoolVar(&systemDefault, "system-default", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + globalVariablesCmd.AddCommand(cmd) + } + + { // delete + var orgid string + var id string + cmd := &cobra.Command{ + Use: "delete", + Aliases: []string{"delete-id"}, + Short: "Delete specific Global Variable by ID", + Long: `Delete an existing Global Variable by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/organization/{orgid}/cad-variable/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "ID of the Global Variable.") + cmd.MarkFlagRequired("id") + globalVariablesCmd.AddCommand(cmd) + } + + { // list-references + var orgid string + var id string + var typeVal string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "list-references", + Short: "List references for a specific Global Variable", + Long: `Retrieve a list of all entities that have reference to an existing Global Variable by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/cad-variable/{id}/incoming-references") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + req.QueryParam("type", typeVal) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "ID of this contact center resource.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&typeVal, "type", "", "Entity type of the other entity that has a reference to this specific entity.") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + globalVariablesCmd.AddCommand(cmd) + } + + { // list + var orgid string + var filter string + var attributes string + var search string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "list", + Short: "List Global Variable(s)", + Long: `Retrieve a list of Global Variable(s) in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/v2/cad-variable") + req.PathParam("orgid", orgid) + req.QueryParam("filter", filter) + req.QueryParam("attributes", attributes) + req.QueryParam("search", search) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&filter, "filter", "", "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain space, and if so kindly bound it with quotes to apply filter. ") + cmd.Flags().StringVar(&attributes, "attributes", "", "Specify the attributes to be returned.Default all attributes are returned along with specified columns. All Attributes are supported") + cmd.Flags().StringVar(&search, "search", "", "Filter data based on the search keyword.Supported search columns(name) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\");value==\"Cisco\" ") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + globalVariablesCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/holiday_list.go b/cmd/cc/holiday_list.go new file mode 100644 index 0000000..fc376ec --- /dev/null +++ b/cmd/cc/holiday_list.go @@ -0,0 +1,311 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + "strconv" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa + +var holidayListCmd = &cobra.Command{ + Use: "holiday-list", + Short: "HolidayList commands", +} + +func init() { + cmd.CcCmd.AddCommand(holidayListCmd) + + { // list + var orgid string + var filter string + var attributes string + var search string + var page string + var pageSize string + var sort string + var includeCount string + var singleObjectResponse string + cmd := &cobra.Command{ + Use: "list", + Short: "List Holiday Lists", + Long: `Retrieve a list of Holiday Lists in a given organization. + Note: Returning array fields in the List (Get All) API response is deprecated. To retrieve the complete resource with all fields, please use the Get-by-ID API instead.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/v2/holiday-list") + req.PathParam("orgid", orgid) + req.QueryParam("filter", filter) + req.QueryParam("attributes", attributes) + req.QueryParam("search", search) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + req.QueryParam("sort", sort) + req.QueryParam("includeCount", includeCount) + req.QueryParam("singleObjectResponse", singleObjectResponse) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&filter, "filter", "", "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, holidays, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. ") + cmd.Flags().StringVar(&attributes, "attributes", "", "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported. except holidays") + cmd.Flags().StringVar(&search, "search", "", "Filter data based on the search keyword.Supported search columns(name) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\");value==\"Cisco\" ") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + cmd.Flags().StringVar(&sort, "sort", "", "Sorting criteria in the format: property(, asc | desc). Default sort order is ascending. Supported sortable fields (name, createdTime, lastUpdatedTime). The examples below show some sort queries - name,asc - createdTime,desc ") + cmd.Flags().StringVar(&includeCount, "include-count", "", "Enable this flag to get the count of holidays.") + cmd.Flags().StringVar(&singleObjectResponse, "single-object-response", "", "Specify whether to include array fields in the response. This query parameter should be used only when the response contains a single record. It is not supported for responses with multiple objects and throws an exception.") + holidayListCmd.AddCommand(cmd) + } + + { // create + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a new Holiday List", + Long: `Create a new Holiday List in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/holiday-list") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + holidayListCmd.AddCommand(cmd) + } + + { // bulk-save + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "bulk-save", + Short: "Bulk save Holiday Lists", + Long: `Create, Update or delete Holiday Lists in bulk in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/holiday-list/bulk") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + holidayListCmd.AddCommand(cmd) + } + + { // bulk-export + var orgid string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "bulk-export", + Short: "Bulk export Holiday List(s)", + Long: `Export all Holiday List(s) in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/holiday-list/bulk-export") + req.PathParam("orgid", orgid) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + holidayListCmd.AddCommand(cmd) + } + + { // get + var orgid string + var id string + cmd := &cobra.Command{ + Use: "get", + Aliases: []string{"get-id"}, + Short: "Get specific Holiday List by ID", + Long: `Retrieve an existing Holiday List by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/holiday-list/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Holiday List.") + cmd.MarkFlagRequired("id") + holidayListCmd.AddCommand(cmd) + } + + { // update + var orgid string + var id string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Aliases: []string{"update-id"}, + Short: "Update specific Holiday List by ID", + Long: `Update an existing Holiday List by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PUT", "/organization/{orgid}/holiday-list/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Holiday List.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + holidayListCmd.AddCommand(cmd) + } + + { // delete + var orgid string + var id string + cmd := &cobra.Command{ + Use: "delete", + Aliases: []string{"delete-id"}, + Short: "Delete specific Holiday List by ID", + Long: `Delete an existing Holiday List by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/organization/{orgid}/holiday-list/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Holiday List.") + cmd.MarkFlagRequired("id") + holidayListCmd.AddCommand(cmd) + } + + { // list-references + var orgid string + var id string + var typeVal string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "list-references", + Short: "List references for a specific Holiday List", + Long: `Retrieve a list of all entities that have reference to an existing Holiday List by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/holiday-list/{id}/incoming-references") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + req.QueryParam("type", typeVal) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "ID of this contact center resource.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&typeVal, "type", "", "Entity type of the other entity that has a reference to this specific entity.") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + holidayListCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/journey.go b/cmd/cc/journey.go new file mode 100644 index 0000000..dc52eb6 --- /dev/null +++ b/cmd/cc/journey.go @@ -0,0 +1,1333 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + "strconv" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa +var _ = strings.Join + +var journeyCmd = &cobra.Command{ + Use: "journey", + Short: "Journey commands", +} + +func init() { + cmd.CcCmd.AddCommand(journeyCmd) + + { // get-workspace + var workspaceId string + cmd := &cobra.Command{ + Use: "get-workspace", + Short: "Get Workspace", + Long: `Get workspace details. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_read or cjds:admin_org_write scopes or cjp:config_read or cjp:config_write scopes`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/admin/v1/api/workspace/workspace-id/{workspaceId}") + req.PathParam("workspaceId", workspaceId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "(Required) Workspace ID") + cmd.MarkFlagRequired("workspace-id") + journeyCmd.AddCommand(cmd) + } + + { // update-workspace + var workspaceId string + var description string + var name string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-workspace", + Short: "Update Workspace", + Long: `Update workspace by Id. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_write or cjp:config_write scopes`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PUT", "/admin/v1/api/workspace/workspace-id/{workspaceId}") + req.PathParam("workspaceId", workspaceId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("description", description) + req.BodyString("name", name) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "(Required) Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&description, "description", "", "") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + journeyCmd.AddCommand(cmd) + } + + { // delete-workspace + var workspaceId string + cmd := &cobra.Command{ + Use: "delete-workspace", + Short: "Delete Workspace", + Long: `Delete Workspace By Id. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_write or cjp:config_write scopes`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/admin/v1/api/workspace/workspace-id/{workspaceId}") + req.PathParam("workspaceId", workspaceId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "(Required) Workspace ID") + cmd.MarkFlagRequired("workspace-id") + journeyCmd.AddCommand(cmd) + } + + { // get-template-searched-template-id + var workspaceId string + var templateId string + cmd := &cobra.Command{ + Use: "get-template-searched-template-id", + Short: "Get A specific Template searched by template id", + Long: `Get Template details by template Id in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_read or cjp:config_write scopes`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/admin/v1/api/profile-view-template/workspace-id/{workspaceId}/template-id/{templateId}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("templateId", templateId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "(Required) Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&templateId, "template-id", "", "(Required) Template ID") + cmd.MarkFlagRequired("template-id") + journeyCmd.AddCommand(cmd) + } + + { // update-profileviewtemplate + var workspaceId string + var templateId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-profileviewtemplate", + Short: "Update existing ProfileViewTemplate", + Long: `Update existing Profile View Template in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_write scope`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PUT", "/admin/v1/api/profile-view-template/workspace-id/{workspaceId}/template-id/{templateId}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("templateId", templateId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "(Required) Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&templateId, "template-id", "", "(Required) Template ID") + cmd.MarkFlagRequired("template-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + journeyCmd.AddCommand(cmd) + } + + { // delete-template-template-id + var workspaceId string + var templateId string + cmd := &cobra.Command{ + Use: "delete-template-template-id", + Short: "Delete Template by template Id", + Long: `Delete Template By template id in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_write scope`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/admin/v1/api/profile-view-template/workspace-id/{workspaceId}/template-id/{templateId}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("templateId", templateId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "(Required) Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&templateId, "template-id", "", "(Required) Template ID") + cmd.MarkFlagRequired("template-id") + journeyCmd.AddCommand(cmd) + } + + { // delete-person-id + var workspaceId string + var personId string + cmd := &cobra.Command{ + Use: "delete-person-id", + Short: "Delete specific Person by id", + Long: `Delete Person Details searched by Person id in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_write scope`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/admin/v1/api/person/workspace-id/{workspaceId}/person-id/{personId}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("personId", personId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "(Required) Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&personId, "person-id", "", "(Required) Person ID") + cmd.MarkFlagRequired("person-id") + journeyCmd.AddCommand(cmd) + } + + { // create-remove-replace-person + var workspaceId string + var personId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-remove-replace-person", + Short: "Add/Remove/Replace details of a Person.", + Long: `The Patch Api can be used to add/remove identities(email, phone, customerId) or replace firstName and lastName of an Individual. We support only add, replace and remove operations. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_write scope. + +For a more information on Patch Requests, see this [JSON PATCH guide](https://jsonpatch.com)`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PATCH", "/admin/v1/api/person/workspace-id/{workspaceId}/person-id/{personId}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("personId", personId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "(Required) Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&personId, "person-id", "", "(Required) Person ID") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + journeyCmd.AddCommand(cmd) + } + + { // create-one-more-identities-person + var workspaceId string + var personId string + var phone []string + var email []string + var temporaryId []string + var customerId []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-one-more-identities-person", + Short: "Add one/more Identities to a person", + Long: `This Patch Api can be used to add identities(email, phone, customerId) to a person. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_write scope.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PATCH", "/admin/v1/api/person/add-identities/workspace-id/{workspaceId}/person-id/{personId}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("personId", personId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("phone", phone) + req.BodyStringSlice("email", email) + req.BodyStringSlice("temporaryId", temporaryId) + req.BodyStringSlice("customerId", customerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "(Required) Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&personId, "person-id", "", "(Required) Person ID") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringSliceVar(&phone, "phone", nil, "") + cmd.Flags().StringSliceVar(&email, "email", nil, "") + cmd.Flags().StringSliceVar(&temporaryId, "temporary-id", nil, "") + cmd.Flags().StringSliceVar(&customerId, "customer-id", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + journeyCmd.AddCommand(cmd) + } + + { // get-wxcc-subscription + var workspaceId string + cmd := &cobra.Command{ + Use: "get-wxcc-subscription", + Short: "Get WXCC Subscription", + Long: `Get WXCC Subscription in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_read or cjds:admin_org_write scopes or cjp:config_read or cjp:config_write scopes`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/admin/v1/api/wxcc-subscription/workspace-id/{workspaceId}") + req.PathParam("workspaceId", workspaceId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "(Required) Workspace ID") + cmd.MarkFlagRequired("workspace-id") + journeyCmd.AddCommand(cmd) + } + + { // create-wxcc-subscription + var workspaceId string + cmd := &cobra.Command{ + Use: "create-wxcc-subscription", + Short: "Create WXCC Subscription", + Long: `Create WXCC Subscription in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_write or cjp:config_write scopes`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/admin/v1/api/wxcc-subscription/workspace-id/{workspaceId}") + req.PathParam("workspaceId", workspaceId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "(Required) Workspace ID") + cmd.MarkFlagRequired("workspace-id") + journeyCmd.AddCommand(cmd) + } + + { // delete-wxcc-subscription + var workspaceId string + cmd := &cobra.Command{ + Use: "delete-wxcc-subscription", + Short: "Delete WXCC Subscription", + Long: `Delete WXCC Subscription in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_write or cjp:config_write scopes`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/admin/v1/api/wxcc-subscription/workspace-id/{workspaceId}") + req.PathParam("workspaceId", workspaceId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "(Required) Workspace ID") + cmd.MarkFlagRequired("workspace-id") + journeyCmd.AddCommand(cmd) + } + + { // get-all-workspaces + var filter string + var sortBy string + var sort string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "get-all-workspaces", + Short: "Get All Workspaces", + Long: `Get All Workspaces. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_read or cjds:admin_org_write scopes or cjp:config_read or cjp:config_write scopes`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/admin/v1/api/workspace") + req.QueryParam("filter", filter) + req.QueryParam("sortBy", sortBy) + req.QueryParam("sort", sort) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&filter, "filter", "", "Optional filter which can be applied to the elements to be fetched. This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see [this reference](https://developer.here.com/docs/data-client-library/dev_guide/client/rsql.html). For a list of supported operators, see this [syntax guide](https://github.com/perplexhub/rsql-jpa-specification#rsql-syntax-reference).") + cmd.Flags().StringVar(&sortBy, "sort-by", "", "Sort By Field") + cmd.Flags().StringVar(&sort, "sort", "", "Sort direction") + cmd.Flags().StringVar(&page, "page", "", "Index of the page of results to be fetched. Results are returned in blocks of pageSize elements. This parameter specifies which page number to retrieve.The page numbering starts with 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Number of items to be displayed on a page.") + journeyCmd.AddCommand(cmd) + } + + { // create-workspace + var organizationId string + var description string + var name string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-workspace", + Short: "Create Workspace", + Long: `Create Workspace in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_write or cjp:config_write scopes`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/admin/v1/api/workspace") + req.QueryParam("organizationId", organizationId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("description", description) + req.BodyString("name", name) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&organizationId, "organization-id", "", "Organization ID") + cmd.Flags().StringVar(&description, "description", "", "") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + journeyCmd.AddCommand(cmd) + } + + { // get-all-template + var workspaceId string + var filter string + var sort string + var sortBy string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "get-all-template", + Short: "Get All Template Details.", + Long: `Get Template details by Organization Id and workspaceId in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_read or cjp:config_write scopes`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/admin/v1/api/profile-view-template/workspace-id/{workspaceId}") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("filter", filter) + req.QueryParam("sort", sort) + req.QueryParam("sortBy", sortBy) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "(Required) Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&filter, "filter", "", "Optional filter which can be applied to the elements to be fetched. This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see [this reference](https://developer.here.com/docs/data-client-library/dev_guide/client/rsql.html). For a list of supported operators, see this [syntax guide](https://github.com/perplexhub/rsql-jpa-specification#rsql-syntax-reference).") + cmd.Flags().StringVar(&sort, "sort", "", "Sort direction") + cmd.Flags().StringVar(&sortBy, "sort-by", "", "Sort By Field") + cmd.Flags().StringVar(&page, "page", "", "Index of the page of results to be fetched. Results are returned in blocks of pageSize elements. This parameter specifies which page number to retrieve.The page numbering starts with 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Number of items to be displayed on a page.") + journeyCmd.AddCommand(cmd) + } + + { // create-template + var workspaceId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-template", + Short: "Create Template", + Long: `Creates a Profile View Template in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_write scope`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/admin/v1/api/profile-view-template/workspace-id/{workspaceId}") + req.PathParam("workspaceId", workspaceId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "(Required) Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + journeyCmd.AddCommand(cmd) + } + + { // get-all-person + var workspaceId string + var personId string + var filter string + var sortBy string + var sort string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "get-all-person", + Short: "Get all or a specific Person Details", + Long: `Get Person Details in JDS. If personId is provided by query parameter, this returns the Person whose personId matches the parameter. +If not, this will return ALL the Persons within the organization and workspace. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_read or cjp:config_write scopes`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/admin/v1/api/person/workspace-id/{workspaceId}") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("personId", personId) + req.QueryParam("filter", filter) + req.QueryParam("sortBy", sortBy) + req.QueryParam("sort", sort) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "(Required) Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&personId, "person-id", "", "Person ID") + cmd.Flags().StringVar(&filter, "filter", "", "Optional filter which can be applied to the elements to be fetched. This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see [this reference](https://developer.here.com/docs/data-client-library/dev_guide/client/rsql.html). For a list of supported operators, see this [syntax guide](https://github.com/perplexhub/rsql-jpa-specification#rsql-syntax-reference).") + cmd.Flags().StringVar(&sortBy, "sort-by", "", "Sort By Field") + cmd.Flags().StringVar(&sort, "sort", "", "Sort direction") + cmd.Flags().StringVar(&page, "page", "", "Index of the page of results to be fetched. Results are returned in blocks of pageSize elements. This parameter specifies which page number to retrieve. The page numbering starts with 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Number of items to be displayed on a page") + journeyCmd.AddCommand(cmd) + } + + { // create-person + var workspaceId string + var firstName string + var lastName string + var phone []string + var email []string + var temporaryId []string + var customerId []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-person", + Short: "Create a Person", + Long: `Creates a Person in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_write scope`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/admin/v1/api/person/workspace-id/{workspaceId}") + req.PathParam("workspaceId", workspaceId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("firstName", firstName) + req.BodyString("lastName", lastName) + req.BodyStringSlice("phone", phone) + req.BodyStringSlice("email", email) + req.BodyStringSlice("temporaryId", temporaryId) + req.BodyStringSlice("customerId", customerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "(Required) Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&firstName, "first-name", "", "") + cmd.Flags().StringVar(&lastName, "last-name", "", "") + cmd.Flags().StringSliceVar(&phone, "phone", nil, "") + cmd.Flags().StringSliceVar(&email, "email", nil, "") + cmd.Flags().StringSliceVar(&temporaryId, "temporary-id", nil, "") + cmd.Flags().StringSliceVar(&customerId, "customer-id", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + journeyCmd.AddCommand(cmd) + } + + { // merges-identities-primary-identity + var workspaceId string + var primaryPersonId string + var personIdsToMerge []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "merges-identities-primary-identity", + Short: "Merges Identities to a Primary Identity.", + Long: `Merges one/more Identities to a **Primary** Individual in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_write scope`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/admin/v1/api/person/merge/workspace-id/{workspaceId}/primary-person-id/{primaryPersonId}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("primaryPersonId", primaryPersonId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("personIdsToMerge", personIdsToMerge) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "(Required) Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&primaryPersonId, "primary-person-id", "", "(Required) Primary Person ID") + cmd.MarkFlagRequired("primary-person-id") + cmd.Flags().StringSliceVar(&personIdsToMerge, "person-ids-to-merge", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + journeyCmd.AddCommand(cmd) + } + + { // creates-merges-aliases-individual-jds + var workspaceId string + var firstName string + var lastName string + var phone []string + var email []string + var temporaryId []string + var customerId []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "creates-merges-aliases-individual-jds", + Short: "Creates or merges aliases to an Individual in JDS.", + Long: `Merges one/more aliases in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_write scope`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/admin/v1/api/person/merge-identities/workspace-id/{workspaceId}") + req.PathParam("workspaceId", workspaceId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("firstName", firstName) + req.BodyString("lastName", lastName) + req.BodyStringSlice("phone", phone) + req.BodyStringSlice("email", email) + req.BodyStringSlice("temporaryId", temporaryId) + req.BodyStringSlice("customerId", customerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "(Required) Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&firstName, "first-name", "", "") + cmd.Flags().StringVar(&lastName, "last-name", "", "") + cmd.Flags().StringSliceVar(&phone, "phone", nil, "") + cmd.Flags().StringSliceVar(&email, "email", nil, "") + cmd.Flags().StringSliceVar(&temporaryId, "temporary-id", nil, "") + cmd.Flags().StringSliceVar(&customerId, "customer-id", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + journeyCmd.AddCommand(cmd) + } + + { // get-all-actions + var workspaceId string + var sortBy string + var sort string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "get-all-actions", + Short: "Get all Journey Actions", + Long: `Get all Journey Actions in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_read or cjp:config_write scopes`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/admin/v1/api/journey-actions/workspace-id/{workspaceId}") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("sortBy", sortBy) + req.QueryParam("sort", sort) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "(Required) Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&sortBy, "sort-by", "", "Sort By Field") + cmd.Flags().StringVar(&sort, "sort", "", "Sort direction") + cmd.Flags().StringVar(&page, "page", "", "Index of the page of results to be fetched. Results are returned in blocks of pageSize elements. This parameter specifies which page number to retrieve. The page numbering starts with 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Number of items to be displayed on a page.") + journeyCmd.AddCommand(cmd) + } + + { // get-template-searched-template-name + var workspaceId string + var templateName string + cmd := &cobra.Command{ + Use: "get-template-searched-template-name", + Short: "Get A specific Template searched by template name", + Long: `Get Template details by template Name in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_read or cjp:config_write scopes`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/admin/v1/api/profile-view-template/workspace-id/{workspaceId}/template-name/{templateName}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("templateName", templateName) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "(Required) Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&templateName, "template-name", "", "(Required) Template Name") + cmd.MarkFlagRequired("template-name") + journeyCmd.AddCommand(cmd) + } + + { // search-identity-aliases + var workspaceId string + var aliases string + var sortBy string + var sort string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "search-identity-aliases", + Short: "Search for an Identity via aliases", + Long: `Get one or more Person Details searched by aliases in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_read or cjp:config_write scopes. Multiple aliases should be separated by a comma.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/admin/v1/api/person/workspace-id/{workspaceId}/aliases/{aliases}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("aliases", aliases) + req.QueryParam("sortBy", sortBy) + req.QueryParam("sort", sort) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "(Required) Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&aliases, "aliases", "", "(Required) Aliases to search for. Multiple aliases should be separated by a comma. In case the alias(es) contain(s) non-uri-encodable characters, eg: '+', '>' etc, you can URL-encode the same and then pass it as parameter.") + cmd.MarkFlagRequired("aliases") + cmd.Flags().StringVar(&sortBy, "sort-by", "", "Sort By Field") + cmd.Flags().StringVar(&sort, "sort", "", "Sort direction") + cmd.Flags().StringVar(&page, "page", "", "Index of the page of results to be fetched. Results are returned in blocks of pageSize elements. This parameter specifies which page number to retrieve.The page numbering starts with 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Number of items to be displayed on a page.") + journeyCmd.AddCommand(cmd) + } + + { // get-all-actions-template + var workspaceId string + var templateId string + cmd := &cobra.Command{ + Use: "get-all-actions-template", + Short: "Get all Journey Actions for a template", + Long: `Get all Journey Actions for a template in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_read or cjp:config_write scopes`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/admin/v1/api/journey-actions/workspace-id/{workspaceId}/template-id/{templateId}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("templateId", templateId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "(Required) Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&templateId, "template-id", "", "(Required) Template ID") + cmd.MarkFlagRequired("template-id") + journeyCmd.AddCommand(cmd) + } + + { // create-action + var workspaceId string + var templateId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-action", + Short: "Create a new Journey Action.", + Long: `Create a new Journey Action in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_write scope`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/admin/v1/api/journey-actions/workspace-id/{workspaceId}/template-id/{templateId}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("templateId", templateId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "(Required) Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&templateId, "template-id", "", "(Required) Template ID") + cmd.MarkFlagRequired("template-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + journeyCmd.AddCommand(cmd) + } + + { // get-action-name + var workspaceId string + var templateId string + var actionName string + cmd := &cobra.Command{ + Use: "get-action-name", + Short: "Get specific Journey Action By Name", + Long: `Get specific Journey Action By Name in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_read or cjp:config_write scopes`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/admin/v1/api/journey-actions/workspace-id/{workspaceId}/template-id/{templateId}/action-name/{actionName}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("templateId", templateId) + req.PathParam("actionName", actionName) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "(Required) Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&templateId, "template-id", "", "(Required) Template ID") + cmd.MarkFlagRequired("template-id") + cmd.Flags().StringVar(&actionName, "action-name", "", "(Required) Action Name") + cmd.MarkFlagRequired("action-name") + journeyCmd.AddCommand(cmd) + } + + { // get-action-actionid + var workspaceId string + var templateId string + var actionId string + cmd := &cobra.Command{ + Use: "get-action-actionid", + Short: "Get specific Journey Action By ActionId", + Long: `Get specific Journey Action By ActionId in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_read or cjp:config_write scopes`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/admin/v1/api/journey-actions/workspace-id/{workspaceId}/template-id/{templateId}/action-id/{actionId}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("templateId", templateId) + req.PathParam("actionId", actionId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "(Required) Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&templateId, "template-id", "", "(Required) Template ID") + cmd.MarkFlagRequired("template-id") + cmd.Flags().StringVar(&actionId, "action-id", "", "(Required) Action ID") + cmd.MarkFlagRequired("action-id") + journeyCmd.AddCommand(cmd) + } + + { // update-action + var workspaceId string + var templateId string + var actionId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-action", + Short: "Update existing Journey Action.", + Long: `Update existing Journey Action in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_write scope`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PUT", "/admin/v1/api/journey-actions/workspace-id/{workspaceId}/template-id/{templateId}/action-id/{actionId}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("templateId", templateId) + req.PathParam("actionId", actionId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "(Required) Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&templateId, "template-id", "", "(Required) Template ID") + cmd.MarkFlagRequired("template-id") + cmd.Flags().StringVar(&actionId, "action-id", "", "(Required) Action ID") + cmd.MarkFlagRequired("action-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + journeyCmd.AddCommand(cmd) + } + + { // delete-action-configuration-actionid + var workspaceId string + var templateId string + var actionId string + cmd := &cobra.Command{ + Use: "delete-action-configuration-actionid", + Short: "Delete Journey Action configuration By ActionId.", + Long: `Delete Journey Action configuration By ActionId in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_write scope`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/admin/v1/api/journey-actions/workspace-id/{workspaceId}/template-id/{templateId}/action-id/{actionId}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("templateId", templateId) + req.PathParam("actionId", actionId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "(Required) Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&templateId, "template-id", "", "(Required) Template ID") + cmd.MarkFlagRequired("template-id") + cmd.Flags().StringVar(&actionId, "action-id", "", "(Required) Action ID") + cmd.MarkFlagRequired("action-id") + journeyCmd.AddCommand(cmd) + } + + { // get-historic-profile-view-template-name + var workspaceId string + var personId string + var templateName string + cmd := &cobra.Command{ + Use: "get-historic-profile-view-template-name", + Short: "Historic Progressive Profile View using Template Name.", + Long: `Get Historic Progressive Profile View in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_read or cjds:admin_org_write scopes or cjp:config_read or cjp:config_write scopes`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/admin/v1/api/progressive-profile-view/workspace-id/{workspaceId}/person-id/{personId}/template-name/{templateName}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("personId", personId) + req.PathParam("templateName", templateName) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "(Required) Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&personId, "person-id", "", "(Required) Person ID") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&templateName, "template-name", "", "(Required) Template Name") + cmd.MarkFlagRequired("template-name") + journeyCmd.AddCommand(cmd) + } + + { // delete-one-more-identities-person + var workspaceId string + var personId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "delete-one-more-identities-person", + Short: "Remove one/more Identities from a person", + Long: `This Patch Api can be used to remove identities(email, phone, customerId) from a person. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_write scope.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PATCH", "/v1/api/person/remove-identities/workspace-id/{workspaceId}/person-id/{personId}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("personId", personId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "(Required) Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&personId, "person-id", "", "(Required) Person ID") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + journeyCmd.AddCommand(cmd) + } + + { // get-historic-profile-view + var workspaceId string + var personId string + var templateId string + cmd := &cobra.Command{ + Use: "get-historic-profile-view", + Short: "Historic Progressive Profile View.", + Long: `Get Historic Progressive Profile View in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_read or cjds:admin_org_write scopes or cjp:config_read or cjp:config_write scopes`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/v1/api/progressive-profile-view/workspace-id/{workspaceId}/person-id/{personId}/template-id/{templateId}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("personId", personId) + req.PathParam("templateId", templateId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "(Required) Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&personId, "person-id", "", "(Required) Person ID") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&templateId, "template-id", "", "(Required) Template ID") + cmd.MarkFlagRequired("template-id") + journeyCmd.AddCommand(cmd) + } + + { // get-historic-profile-view-identity-template-name + var workspaceId string + var identity string + var templateName string + cmd := &cobra.Command{ + Use: "get-historic-profile-view-identity-template-name", + Short: "Historic Progressive Profile View By Identity and Template Name.", + Long: `Get Historic Progressive Profile View in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_read or cjds:admin_org_write scopes or cjp:config_read or cjp:config_write scopes`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/v1/api/progressive-profile-view/workspace-id/{workspaceId}/identity/{identity}/template-name/{templateName}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("identity", identity) + req.PathParam("templateName", templateName) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "(Required) Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&identity, "identity", "", "(Required) Identity") + cmd.MarkFlagRequired("identity") + cmd.Flags().StringVar(&templateName, "template-name", "", "(Required) Template Name") + cmd.MarkFlagRequired("template-name") + journeyCmd.AddCommand(cmd) + } + + { // get-historic-profile-view-identity-template-id + var workspaceId string + var identity string + var templateId string + cmd := &cobra.Command{ + Use: "get-historic-profile-view-identity-template-id", + Short: "Historic Progressive Profile View By Identity and Template Id", + Long: `Get Historic Progressive Profile View in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_read or cjds:admin_org_write scopes or cjp:config_read or cjp:config_write scopes`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/v1/api/progressive-profile-view/workspace-id/{workspaceId}/identity/{identity}/template-id/{templateId}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("identity", identity) + req.PathParam("templateId", templateId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "(Required) Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&identity, "identity", "", "(Required) identity") + cmd.MarkFlagRequired("identity") + cmd.Flags().StringVar(&templateId, "template-id", "", "(Required) Template ID") + cmd.MarkFlagRequired("template-id") + journeyCmd.AddCommand(cmd) + } + + { // stream-profile-views-template-name + var workspaceId string + var identity string + var templateName string + cmd := &cobra.Command{ + Use: "stream-profile-views-template-name", + Short: "Stream Progressive profile Views By Template Name", + Long: `Real-time streaming enables API consumers to listen for Progressive profile Views as it created/updated as part of the Journey; these may be transformed, value-added/enriched, and ready to be consumed or forwarded to another destination. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_read or cjds:admin_org_write scopes or cjp:config_read or cjp:config_write scopes`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/v1/api/progressive-profile-view/stream/workspace-id/{workspaceId}/identity/{identity}/template-name/{templateName}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("identity", identity) + req.PathParam("templateName", templateName) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "(Required) Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&identity, "identity", "", "(Required) Identity to search Progressive Profile View for. In case the identity contains non-uri-encodable characters, eg: '+', '>' etc, you can URL-encode the same and then pass it as parameter.") + cmd.MarkFlagRequired("identity") + cmd.Flags().StringVar(&templateName, "template-name", "", "(Required) Template Name") + cmd.MarkFlagRequired("template-name") + journeyCmd.AddCommand(cmd) + } + + { // stream-profile-views + var workspaceId string + var identity string + var templateId string + cmd := &cobra.Command{ + Use: "stream-profile-views", + Short: "Stream Progressive profile Views", + Long: `Real-time streaming enables API consumers to listen for Progressive profile Views as it created/updated as part of the Journey; these may be transformed, value-added/enriched, and ready to be consumed or forwarded to another destination. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_read or cjds:admin_org_write scopes or cjp:config_read or cjp:config_write scopes`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/v1/api/progressive-profile-view/stream/workspace-id/{workspaceId}/identity/{identity}/template-id/{templateId}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("identity", identity) + req.PathParam("templateId", templateId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "(Required) Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&identity, "identity", "", "(Required) Identity to search Progressive Profile View for. In case the identity contains non-uri-encodable characters, eg: '+', '>' etc, you can URL-encode the same and then pass it as parameter.") + cmd.MarkFlagRequired("identity") + cmd.Flags().StringVar(&templateId, "template-id", "", "(Required) Template ID") + cmd.MarkFlagRequired("template-id") + journeyCmd.AddCommand(cmd) + } + + { // get-historic-events + var workspaceId string + var identity string + var sortBy string + var sort string + var filter string + var data string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "get-historic-events", + Short: "Historic Journey Events", + Long: `Getting Historic Customer Journey Events from Pinot. These events are append-only, immutable data ledger that can be queried to retrieve snapshot of latest events that moment in time or historically to play-back events as they occurred to understand or analyze Journeys using ML/AI models. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_read or cjds:admin_org_write scopes or cjp:config_read or cjp:config_write scopes `, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/v1/api/events/workspace-id/{workspaceId}") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("identity", identity) + req.QueryParam("sortBy", sortBy) + req.QueryParam("sort", sort) + req.QueryParam("filter", filter) + req.QueryParam("data", data) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "(Required) Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&identity, "identity", "", "Identity to search events for. In case the identity contains non-uri-encodable characters, eg: '+', '>' etc, you can URL-encode the same and then pass it as parameter.") + cmd.Flags().StringVar(&sortBy, "sort-by", "", "sort By Field") + cmd.Flags().StringVar(&sort, "sort", "", "sort direction") + cmd.Flags().StringVar(&filter, "filter", "", "Optional filter which can be applied to the elements to be fetched. This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see [this reference](https://developer.here.com/docs/data-client-library/dev_guide/client/rsql.html). For a list of supported operators, see this [syntax guide](https://github.com/perplexhub/rsql-jpa-specification#rsql-syntax-reference).") + cmd.Flags().StringVar(&data, "data", "", "Optional filter on data filed which can be applied to the elements to be fetched. This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see [this reference](https://developer.here.com/docs/data-client-library/dev_guide/client/rsql.html). For a list of supported operators, see this [syntax guide](https://github.com/perplexhub/rsql-jpa-specification#rsql-syntax-reference).") + cmd.Flags().StringVar(&page, "page", "", "Index of the page of results to be fetched. Results are returned in blocks of pageSize elements. This parameter specifies which page number to retrieve.The page numbering starts with 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Number of items to be displayed on a page.") + journeyCmd.AddCommand(cmd) + } + + { // stream-events-identity + var workspaceId string + var identity string + var filter string + var data string + cmd := &cobra.Command{ + Use: "stream-events-identity", + Short: "Stream Events By Identity", + Long: `Real-time streaming enables API consumers to listen for events as it arrives as part of the Journey; these may be transformed, value-added/enriched, and ready to be consumed or forwarded to another destination. Optionally accepts filter and data parameters slice/dice further. It requires the appropriate cjds:admin_org_read or cjds:admin_org_write scopes or cjp:config_read or cjp:config_write scopes`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/v1/api/events/stream/workspace-id/{workspaceId}/identity/{identity}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("identity", identity) + req.QueryParam("filter", filter) + req.QueryParam("data", data) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "(Required) Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&identity, "identity", "", "(Required) Person Identity. In case the identity contains non-uri-encodable characters, eg: '+', '>' etc, you can URL-encode the same and then pass it as parameter.") + cmd.MarkFlagRequired("identity") + cmd.Flags().StringVar(&filter, "filter", "", "Optional filter which can be applied to the elements to be fetched. This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see [this reference](https://developer.here.com/docs/data-client-library/dev_guide/client/rsql.html). For a list of supported operators, see this [syntax guide](https://github.com/perplexhub/rsql-jpa-specification#rsql-syntax-reference).") + cmd.Flags().StringVar(&data, "data", "", "Optional filter on data filed which can be applied to the elements to be fetched. This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see [this reference](https://developer.here.com/docs/data-client-library/dev_guide/client/rsql.html). For a list of supported operators, see this [syntax guide](https://github.com/perplexhub/rsql-jpa-specification#rsql-syntax-reference).") + journeyCmd.AddCommand(cmd) + } + + { // event-posting + var workspaceId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "event-posting", + Short: "Journey Event Posting", + Long: `Journey Event Posting Api.API accepts events that describe what occurred, when, and by whom on every interaction across touch points and applications. Data Ingestion is based on Cloud Events specification for describing event data in a common way. API accepts data in the form of POST with support for Header based authorization. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_write or cjp:config_write scopes`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/publish/v1/api/event") + req.QueryParam("workspaceId", workspaceId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "(Required) Workspace ID") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + journeyCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/journey_customer_identification.go b/cmd/cc/journey_customer_identification.go new file mode 100644 index 0000000..43d7ec1 --- /dev/null +++ b/cmd/cc/journey_customer_identification.go @@ -0,0 +1,439 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strings.Join + +var journeyCustomerIdentificationCmd = &cobra.Command{ + Use: "journey-customer-identification", + Short: "JourneyCustomerIdentification commands", +} + +func init() { + cmd.CcCmd.AddCommand(journeyCustomerIdentificationCmd) + + { // delete-person-id + var workspaceId string + var personId string + cmd := &cobra.Command{ + Use: "delete-person-id", + Short: "Delete specific Person by id", + Long: `Delete Person Details searched by Person id in JDS. + +Role and Scope: Requires id full admin or any role with cjp:config_write scope`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/admin/v1/api/person/workspace-id/{workspaceId}/person-id/{personId}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("personId", personId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&personId, "person-id", "", "Person ID") + cmd.MarkFlagRequired("person-id") + journeyCustomerIdentificationCmd.AddCommand(cmd) + } + + { // create-remove-replace-person + var workspaceId string + var personId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-remove-replace-person", + Short: "Add/Remove/Replace details of a Person", + Long: `The Patch Api can be used to add/remove identities (email, phone, customerId, temporaryId, and socialId) or replace firstName and lastName of an Individual. We support only add, replace, and remove operations. + +For more information on Patch Requests, see this [JSON PATCH guide](https://jsonpatch.com). + +Role and Scope: Requires id full admin role with cjp:config_write or any role with cjp:user or cjp:config_write scope.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PATCH", "/admin/v1/api/person/workspace-id/{workspaceId}/person-id/{personId}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("personId", personId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&personId, "person-id", "", "Person ID") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + journeyCustomerIdentificationCmd.AddCommand(cmd) + } + + { // create-one-more-identities-person + var workspaceId string + var personId string + var phone []string + var email []string + var temporaryId []string + var customerId []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-one-more-identities-person", + Short: "Add one/more Identities to a person", + Long: `This Patch Api can be used to add identities(email, phone, customerId) to a person. + +Role and Scope: Requires id full admin or any role with cjp:config_write scope.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PATCH", "/admin/v1/api/person/add-identities/workspace-id/{workspaceId}/person-id/{personId}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("personId", personId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("phone", phone) + req.BodyStringSlice("email", email) + req.BodyStringSlice("temporaryId", temporaryId) + req.BodyStringSlice("customerId", customerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&personId, "person-id", "", "Person ID") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringSliceVar(&phone, "phone", nil, "") + cmd.Flags().StringSliceVar(&email, "email", nil, "") + cmd.Flags().StringSliceVar(&temporaryId, "temporary-id", nil, "") + cmd.Flags().StringSliceVar(&customerId, "customer-id", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + journeyCustomerIdentificationCmd.AddCommand(cmd) + } + + { // delete-one-more-identities-person + var workspaceId string + var personId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "delete-one-more-identities-person", + Short: "Remove one/more Identities from a person", + Long: `This Patch Api can be used to remove identities(email, phone, customerId) from a person. + +Role and Scope: Requires id full admin or any role with cjp:config_write scope.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PATCH", "/admin/v1/api/person/remove-identities/workspace-id/{workspaceId}/person-id/{personId}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("personId", personId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&personId, "person-id", "", "Person ID") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + journeyCustomerIdentificationCmd.AddCommand(cmd) + } + + { // get-all-person + var workspaceId string + var personId string + var filter string + var sortBy string + var sort string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "get-all-person", + Short: "Get all or a specific Person Details", + Long: `Get Person Details in JDS. If personId is provided by query parameter, this returns the Person whose personId matches the parameter. +If not, this will return ALL the Persons within the organization and workspace. + +Role and Scope: Requires id full admin role with cjp:config_write or cjp:config_read scope. Or it requires any role with cjp:user, cjp:config_write or cjp:config_read scope.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/admin/v1/api/person/workspace-id/{workspaceId}") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("personId", personId) + req.QueryParam("filter", filter) + req.QueryParam("sortBy", sortBy) + req.QueryParam("sort", sort) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&personId, "person-id", "", "Person ID") + cmd.Flags().StringVar(&filter, "filter", "", "Optional filter which can be applied to the elements to be fetched. This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see [this reference](https://developer.here.com/documentation/data-client-library/dev_guide/client/rsql.html). For a list of supported operators, see this [syntax guide](https://github.com/perplexhub/rsql-jpa-specification#rsql-syntax-reference).") + cmd.Flags().StringVar(&sortBy, "sort-by", "", "Sort By Field") + cmd.Flags().StringVar(&sort, "sort", "", "Sort direction") + cmd.Flags().StringVar(&page, "page", "", "Index of the page of results to be fetched. Results are returned in blocks of pageSize elements. This parameter specifies which page number to retrieve. The page numbering starts with 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Number of items to be displayed on a page") + journeyCustomerIdentificationCmd.AddCommand(cmd) + } + + { // create-person + var workspaceId string + var firstName string + var lastName string + var phone []string + var email []string + var temporaryId []string + var customerId []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-person", + Short: "Create a Person", + Long: `This API helps to create a Person in JDS. + +Role and Scope: Requires id full admin OR any role with cjp:config_write scope.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/admin/v1/api/person/workspace-id/{workspaceId}") + req.PathParam("workspaceId", workspaceId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("firstName", firstName) + req.BodyString("lastName", lastName) + req.BodyStringSlice("phone", phone) + req.BodyStringSlice("email", email) + req.BodyStringSlice("temporaryId", temporaryId) + req.BodyStringSlice("customerId", customerId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&firstName, "first-name", "", "") + cmd.Flags().StringVar(&lastName, "last-name", "", "") + cmd.Flags().StringSliceVar(&phone, "phone", nil, "") + cmd.Flags().StringSliceVar(&email, "email", nil, "") + cmd.Flags().StringSliceVar(&temporaryId, "temporary-id", nil, "") + cmd.Flags().StringSliceVar(&customerId, "customer-id", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + journeyCustomerIdentificationCmd.AddCommand(cmd) + } + + { // merges-identities-primary-identity + var workspaceId string + var primaryPersonId string + var personIdsToMerge []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "merges-identities-primary-identity", + Short: "Merges Identities to a Primary Identity", + Long: `Merges one/more Identities to a **Primary** Individual in JDS. + +Role and Scope: Requires id full admin role with cjp:config_write scope.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/admin/v1/api/person/merge/workspace-id/{workspaceId}/primary-person-id/{primaryPersonId}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("primaryPersonId", primaryPersonId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("personIdsToMerge", personIdsToMerge) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&primaryPersonId, "primary-person-id", "", "Primary Person ID") + cmd.MarkFlagRequired("primary-person-id") + cmd.Flags().StringSliceVar(&personIdsToMerge, "person-ids-to-merge", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + journeyCustomerIdentificationCmd.AddCommand(cmd) + } + + { // creates-merges-aliases-individual-jds + var workspaceId string + var override bool + var firstName string + var lastName string + var phone []string + var email []string + var temporaryId []string + var customerId []string + var socialId []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "creates-merges-aliases-individual-jds", + Short: "Creates or merges aliases to an Individual in JDS", + Long: `This API enables you to consolidate multiple customer identifiers into a single, unified profile effortlessly. By integrating it with your Flow Designer, you can automatically retrieve and merge customer identifiers from various systems, such as your CRM or other third-party tools. This integration ensures all relevant data is consolidated into one profile, enhancing personalization and streamlining customer interactions. + +**Adding a New Alias** - To associate an additional alias (e.g., a new phone number) with an existing customer profile, simply update the API with the new identifier while leaving the existing identifiers intact. The system will automatically merge the new alias into the current profile, maintaining a comprehensive view of the customer. + +**Removing an Alias** - If you need to delete an alias from a customer’s profile, set the override flag to true in your API request. Include only the identifiers you wish to retain in the payload. The system will remove any identifiers not included in the updated payload, keeping the profile streamlined and up-to-date. + +Role and Scope: Requires id full admin OR any role with cjp:config_write scope.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/admin/v1/api/person/merge-identities/workspace-id/{workspaceId}") + req.PathParam("workspaceId", workspaceId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("override", override, cmd.Flags().Changed("override")) + req.BodyString("firstName", firstName) + req.BodyString("lastName", lastName) + req.BodyStringSlice("phone", phone) + req.BodyStringSlice("email", email) + req.BodyStringSlice("temporaryId", temporaryId) + req.BodyStringSlice("customerId", customerId) + req.BodyStringSlice("socialId", socialId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().BoolVar(&override, "override", false, "") + cmd.Flags().StringVar(&firstName, "first-name", "", "") + cmd.Flags().StringVar(&lastName, "last-name", "", "") + cmd.Flags().StringSliceVar(&phone, "phone", nil, "") + cmd.Flags().StringSliceVar(&email, "email", nil, "") + cmd.Flags().StringSliceVar(&temporaryId, "temporary-id", nil, "") + cmd.Flags().StringSliceVar(&customerId, "customer-id", nil, "") + cmd.Flags().StringSliceVar(&socialId, "social-id", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + journeyCustomerIdentificationCmd.AddCommand(cmd) + } + + { // search-identity-aliases + var workspaceId string + var aliases string + var sortBy string + var sort string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "search-identity-aliases", + Short: "Search for an Identity via aliases", + Long: `Get one or more Person Details searched by aliases in JDS. Multiple aliases should be separated by a comma. + +Role and Scope: Requires id full admin role with cjp:config_write or cjp:config_read scope. Or it requires any role with cjp:user, cjp:config_write or cjp:config_read scope.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/admin/v1/api/person/workspace-id/{workspaceId}/aliases/{aliases}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("aliases", aliases) + req.QueryParam("sortBy", sortBy) + req.QueryParam("sort", sort) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&aliases, "aliases", "", "Aliases to search for. Multiple aliases should be separated by a comma. In case the alias(es) contain(s) non-uri-encodable characters, eg: '+', '>' etc, you can URL-encode the same and then pass it as parameter.") + cmd.MarkFlagRequired("aliases") + cmd.Flags().StringVar(&sortBy, "sort-by", "", "Sort By Field") + cmd.Flags().StringVar(&sort, "sort", "", "Sort direction") + cmd.Flags().StringVar(&page, "page", "", "Index of the page of results to be fetched. Results are returned in blocks of pageSize elements. This parameter specifies which page number to retrieve.The page numbering starts with 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Number of items to be displayed on a page.") + journeyCustomerIdentificationCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/journey_data_ingestion.go b/cmd/cc/journey_data_ingestion.go new file mode 100644 index 0000000..dededcb --- /dev/null +++ b/cmd/cc/journey_data_ingestion.go @@ -0,0 +1,61 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var journeyDataIngestionCmd = &cobra.Command{ + Use: "journey-data-ingestion", + Short: "JourneyDataIngestion commands", +} + +func init() { + cmd.CcCmd.AddCommand(journeyDataIngestionCmd) + + { // event-posting + var workspaceId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "event-posting", + Short: "Journey Event Posting", + Long: `Journey Event Posting API accepts events that describe what occurred, when, and by whom on every interaction across touch points and applications. Data Ingestion is based on Cloud Events specification for describing event data in a common way. API accepts data in the form of POST with support for Header based authorization. + +Role and Scope: Requires id full admin role with cjds:admin_org_write or any role with cjp:config_write scope.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/publish/v1/api/event") + req.QueryParam("workspaceId", workspaceId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Workspace ID") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + journeyDataIngestionCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/journey_profile_creation_insights.go b/cmd/cc/journey_profile_creation_insights.go new file mode 100644 index 0000000..764e2ac --- /dev/null +++ b/cmd/cc/journey_profile_creation_insights.go @@ -0,0 +1,490 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var journeyProfileCreationInsightsCmd = &cobra.Command{ + Use: "journey-profile-creation-insights", + Short: "JourneyProfileCreationInsights commands", +} + +func init() { + cmd.CcCmd.AddCommand(journeyProfileCreationInsightsCmd) + + { // get-template-searched-template-id + var workspaceId string + var templateId string + cmd := &cobra.Command{ + Use: "get-template-searched-template-id", + Short: "Get A specific Template searched by template id", + Long: `Get Template details by template Id in JDS. + +Role and Scope: Requires id full admin role with cjp:config_write or cjp:config_read scope. Or requires any role with cjp:user, cjp:config_write or cjp:config_write scope.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/admin/v1/api/profile-view-template/workspace-id/{workspaceId}/template-id/{templateId}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("templateId", templateId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&templateId, "template-id", "", "Template ID") + cmd.MarkFlagRequired("template-id") + journeyProfileCreationInsightsCmd.AddCommand(cmd) + } + + { // update-profileviewtemplate + var workspaceId string + var templateId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-profileviewtemplate", + Short: "Update existing ProfileViewTemplate", + Long: `Update existing Profile View Template in JDS. + +Role and Scope: Requires id full admin or any role with cjp:config_write scope.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PUT", "/admin/v1/api/profile-view-template/workspace-id/{workspaceId}/template-id/{templateId}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("templateId", templateId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&templateId, "template-id", "", "Template ID") + cmd.MarkFlagRequired("template-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + journeyProfileCreationInsightsCmd.AddCommand(cmd) + } + + { // delete-template-template-id + var workspaceId string + var templateId string + cmd := &cobra.Command{ + Use: "delete-template-template-id", + Short: "Delete Template by template Id", + Long: `Delete Template By template id in JDS. + +Role and Scope: Requires id full admin or any role with cjp:config_write scope.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/admin/v1/api/profile-view-template/workspace-id/{workspaceId}/template-id/{templateId}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("templateId", templateId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&templateId, "template-id", "", "Template ID") + cmd.MarkFlagRequired("template-id") + journeyProfileCreationInsightsCmd.AddCommand(cmd) + } + + { // get-all-template + var workspaceId string + var filter string + var sort string + var sortBy string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "get-all-template", + Short: "Get All Template Details", + Long: `Get Template details by Organization Id and workspaceId in JDS. + +Role and Scope: Requires id full admin role with cjp:config_write or cjp:config_read scope. Or requires any role with cjp:user, cjp:config_write or cjp:config_read scope.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/admin/v1/api/profile-view-template/workspace-id/{workspaceId}") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("filter", filter) + req.QueryParam("sort", sort) + req.QueryParam("sortBy", sortBy) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&filter, "filter", "", "Optional filter which can be applied to the elements to be fetched. This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see [this reference](https://developer.here.com/documentation/data-client-library/dev_guide/client/rsql.html). For a list of supported operators, see this [syntax guide](https://github.com/perplexhub/rsql-jpa-specification#rsql-syntax-reference).") + cmd.Flags().StringVar(&sort, "sort", "", "Sort direction") + cmd.Flags().StringVar(&sortBy, "sort-by", "", "Sort By Field") + cmd.Flags().StringVar(&page, "page", "", "Index of the page of results to be fetched. Results are returned in blocks of pageSize elements. This parameter specifies which page number to retrieve.The page numbering starts with 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Number of items to be displayed on a page.") + journeyProfileCreationInsightsCmd.AddCommand(cmd) + } + + { // create-template + var workspaceId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-template", + Short: "Create Template", + Long: "Creates a Profile View Template in JDS. \n\n **Role and Scope**: Requires id full admin or any role with cjp:config_write scope.\n\n **Template with single rule**: \n ```\n {\n \"name\": \"ClosedCaller\",\n \"attributes\": [\n {\n \"version\": \"0.1\",\n \"event\": \"Closed Queue\",\n \"metaDataType\": \"string\",\n \"metaData\": \"category\",\n \"limit\": 100,\n \"displayName\": \"ClosedCaller\",\n \"lookBackDurationType\": \"minutes\",\n \"lookBackPeriod\": 5,\n \"aggregationMode\": \"Count\",\n \"rules\": {\n \"logic\": \"SINGLE\",\n \"condition\": \"Closed Queue,category,string,Value EQ Closed\"\n },\n \"widgetAttributes\": {\n \"type\": \"table\"\n },\n \"verbose\": false\n }\n ]\n }\n ```\n\n\n **Example Event:** \n ```\n {\n \"id\": \"{{$guid}}\",\n \"specversion\": \"1.0\",\n \"type\": \"Closed Queue\",\n \"source\": \"Voice%20Contact\",\n \"identity\": \"jes@gmail.com\",\n \"identitytype\": \"email\",\n \"datacontenttype\": \"application/json\",\n \"data\": {\n \"Email\": \"jes@gmail.com\",\n \"CallsQueuedNow\": \"Use GetQueueInfoNode Values\",\n \"OldestCallTime\": \"Use GetQueueInfoNode Values\",\n \"LoggedOnAgents\": \"Use GetQueueInfoNode Values\",\n \"PIQ\": \"Use GetQueueInfoNode Values\",\n \"EWT\": \"Use GetQueueInfoNode Values\",\n \"category\": \"Closed\",\n \"origin\": \"Past Due - 1st Notification\",\n \"channelType\": \"QueueCall\",\n \"channelBreakout\": \"voice\"\n }\n }\n ```\n\n\n **Key components of the rule:** \n * template.event: This refers to the specific event type you want to match (e.g., \"Closed Queue\").\n * event.type: This refers to the actual event type present in the event data.\n * event.data: This is the dictionary/object containing all the metadata associated with the event.\n * template.rules.condition - category: This is the specific metadata field you want to compare within event.data.\n * template.rules.condition - string: This indicates that the category metadata is a string type.\n * template.rules.condition - Value EQ Closed: This defines the condition: the value of the category field (as a string) must be equal to \"Closed\".\n\n\n **Evaluation process:** \n 1. The rule checks if template.event matches the event.type in the incoming event.\n 2. If they match, the rule retrieves the value of the category field from event.data.\n 3. It then compares the value of category (treated as a string) to \"Closed\" using an equality operator (EQ).\n 4. If the values are equal, the condition evaluates to True and creates a progressive profile for the identity. Otherwise, it evaluates to False.\n \n The template has lookBackPeriod and lookBackDurationType which decide how long to look back for the calculation. In the above template, it fetches events triggered in the last 5 minutes and performs the aggregation mode on the data received from rules.\n \n * When the aggregation mode is Value, the profile result will have the value of the rule as the output.\n * When the aggregation mode is Count, the profile will have the count of events with category closed in the past 5 minutes.\n * When the aggregation mode is Distinct, the profile will have the value closed.\n * When aggregation mode is Sum, the data type should be Integer or double and it will be the sum of all matching values in the last 5 minutes.\n * When aggregation mode is Max, the data type should be Integer or double and it will be the max of all matching values in the last 5 minutes.\n * When aggregation mode is Min, the data type should be Integer or double and it will be the min of all matching values in the last 5 minutes.\n * When aggregation mode is Average, the data type should be Integer or double and it will be the average of all matching values in the last 5 minutes.\n\n\n **Example template with multiple rules :** \n ```\n1. {\n2. \"name\": \"sample-template-multi-condition\",\n3. \"attributes\": [\n4. {\n5. \"version\": \"0.1\",\n6. \"event\": \"Quote\",\n7. \"metaDataType\": \"string\",\n8. \"metaData\": \"email\",\n9. \"limit\": 1,\n10. \"displayName\": \"Email\",\n11. \"lookBackDurationType\": \"days\",\n12. \"lookBackPeriod\": 50,\n13. \"aggregationMode\": \"Value\",\n14. \"rules\": {\n15. \"args\": [\n16. \"Quote,isEV,string,Value EQ Yes\",\n17. \"Quote,isEV,string,Value EQ No\",\n18. {\n19. \"args\": [\n20. \"Quote,make,string,Value EQ Honda\",\n21. \"Quote,model,string,Value EQ CR-V\"\n22. ],\n23. \"logic\": \"AND\"\n24. }\n25. ],\n26. \"logic\": \"OR\"\n27. },\n28. \"widgetAttributes\": {\n29. \"type\": \"table\"\n30. },\n31. \"verbose\": false\n32. }\n33. ]\n34. }\n ```\n1. In the above template we have multiple rules.\n2. The arguments in line 20 and 21 are evaluated with logical AND condition.\n3. Then arguments in line 16 and 17 along with the result for 20 AND 21 are evaluated with logical OR (line 26).\n", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/admin/v1/api/profile-view-template/workspace-id/{workspaceId}") + req.PathParam("workspaceId", workspaceId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + journeyProfileCreationInsightsCmd.AddCommand(cmd) + } + + { // get-template-searched-template-name + var workspaceId string + var templateName string + cmd := &cobra.Command{ + Use: "get-template-searched-template-name", + Short: "Get A specific Template searched by template name", + Long: `Get Template details by template Name in JDS. + +Role and Scope: Requires id full admin role with cjp:config_write or cjp:config_read scope. Or requires any role with cjp:user, cjp:config_write or cjp:config_read scope.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/admin/v1/api/profile-view-template/workspace-id/{workspaceId}/template-name/{templateName}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("templateName", templateName) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&templateName, "template-name", "", "Template Name") + cmd.MarkFlagRequired("template-name") + journeyProfileCreationInsightsCmd.AddCommand(cmd) + } + + { // get-historic-view-template-name + var workspaceId string + var personId string + var templateName string + cmd := &cobra.Command{ + Use: "get-historic-view-template-name", + Short: "Historic Progressive Profile View by Template Name", + Long: `Get Historic Progressive Profile View in JDS. + +Role and Scope: Requires id full admin role with cjds:admin_org_write or cjds:admin_org_read scope. Or requires any role with cjp:user, cjp:config_write or cjp:config_read scope.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/v1/api/progressive-profile-view/workspace-id/{workspaceId}/person-id/{personId}/template-name/{templateName}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("personId", personId) + req.PathParam("templateName", templateName) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&personId, "person-id", "", "Person ID") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&templateName, "template-name", "", "Template Name") + cmd.MarkFlagRequired("template-name") + journeyProfileCreationInsightsCmd.AddCommand(cmd) + } + + { // get-historic-view + var workspaceId string + var personId string + var templateId string + cmd := &cobra.Command{ + Use: "get-historic-view", + Short: "Historic Progressive Profile View", + Long: `Get Historic Progressive Profile View in JDS. + +Role and Scope: Requires id full admin role with cjds:admin_org_write or cjds:admin_org_read scope. Or requires any role with cjp:user, cjp:config_write or cjp:config_read scope.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/v1/api/progressive-profile-view/workspace-id/{workspaceId}/person-id/{personId}/template-id/{templateId}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("personId", personId) + req.PathParam("templateId", templateId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&personId, "person-id", "", "Person ID") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&templateId, "template-id", "", "Template ID") + cmd.MarkFlagRequired("template-id") + journeyProfileCreationInsightsCmd.AddCommand(cmd) + } + + { // get-historic-view-template-name-2 + var workspaceId string + var identity string + var templateName string + cmd := &cobra.Command{ + Use: "get-historic-view-template-name-2", + Short: "Historic Progressive Profile View By Template Name", + Long: `Get Historic Progressive Profile View in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_read or cjds:admin_org_write scopes or cjp:config_read or cjp:config_write scopes`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/v1/api/progressive-profile-view/workspace-id/{workspaceId}/identity/{identity}/template-name/{templateName}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("identity", identity) + req.PathParam("templateName", templateName) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&identity, "identity", "", "Identity") + cmd.MarkFlagRequired("identity") + cmd.Flags().StringVar(&templateName, "template-name", "", "Template Name") + cmd.MarkFlagRequired("template-name") + journeyProfileCreationInsightsCmd.AddCommand(cmd) + } + + { // get-historic-view-template-id + var workspaceId string + var identity string + var templateId string + cmd := &cobra.Command{ + Use: "get-historic-view-template-id", + Short: "Historic Progressive Profile View By Template Id", + Long: `Get Historic Progressive Profile View in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_read or cjds:admin_org_write scopes or cjp:config_read or cjp:config_write scopes`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/v1/api/progressive-profile-view/workspace-id/{workspaceId}/identity/{identity}/template-id/{templateId}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("identity", identity) + req.PathParam("templateId", templateId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&identity, "identity", "", "identity") + cmd.MarkFlagRequired("identity") + cmd.Flags().StringVar(&templateId, "template-id", "", "Template ID") + cmd.MarkFlagRequired("template-id") + journeyProfileCreationInsightsCmd.AddCommand(cmd) + } + + { // stream-views-template-name + var workspaceId string + var identity string + var templateName string + cmd := &cobra.Command{ + Use: "stream-views-template-name", + Short: "Stream Progressive profile Views By Template Name", + Long: `Real-time streaming enables API consumers to listen for Progressive profile Views as it created/updated as part of the Journey; these may be transformed, value-added/enriched, and ready to be consumed or forwarded to another destination. + +Role and Scope: Requires id full admin role with cjds:admin_org_write or cjds:admin_org_read scope. Or requires any role with cjp:user, cjp:config_write or cjp:config_read scope.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/v1/api/progressive-profile-view/stream/workspace-id/{workspaceId}/identity/{identity}/template-name/{templateName}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("identity", identity) + req.PathParam("templateName", templateName) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&identity, "identity", "", "Identity to search Progressive Profile View for. In case the identity contains non-uri-encodable characters, eg: '+', '>' etc, you can URL-encode the same and then pass it as parameter.") + cmd.MarkFlagRequired("identity") + cmd.Flags().StringVar(&templateName, "template-name", "", "Template Name") + cmd.MarkFlagRequired("template-name") + journeyProfileCreationInsightsCmd.AddCommand(cmd) + } + + { // stream-views-template-id + var workspaceId string + var identity string + var templateId string + cmd := &cobra.Command{ + Use: "stream-views-template-id", + Short: "Stream Progressive profile Views By Template Id", + Long: `Real-time streaming enables API consumers to listen for Progressive profile Views as it created/updated as part of the Journey; these may be transformed, value-added/enriched, and ready to be consumed or forwarded to another destination. + +Role and Scope: Requires id full admin role with cjds:admin_org_write or cjds:admin_org_read scope. Or requires any role with cjp:user, cjp:config_write or cjp:config_read scope.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/v1/api/progressive-profile-view/stream/workspace-id/{workspaceId}/identity/{identity}/template-id/{templateId}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("identity", identity) + req.PathParam("templateId", templateId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&identity, "identity", "", "Identity to search Progressive Profile View for. In case the identity contains non-uri-encodable characters, eg: '+', '>' etc, you can URL-encode the same and then pass it as parameter.") + cmd.MarkFlagRequired("identity") + cmd.Flags().StringVar(&templateId, "template-id", "", "Template ID") + cmd.MarkFlagRequired("template-id") + journeyProfileCreationInsightsCmd.AddCommand(cmd) + } + + { // get-historic-events + var workspaceId string + var identity string + var sortBy string + var sort string + var filter string + var data string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "get-historic-events", + Short: "Historic Journey Events", + Long: `Getting Historic Customer Journey Events from Pinot. These events are append-only, immutable data ledger that can be queried to retrieve snapshot of latest events that moment in time or historically to play-back events as they occurred to understand or analyze Journeys using ML/AI models. + +Role and Scope: Requires id full admin role with cjds:admin_org_write or cjds:admin_org_read scope. Or requires any role with cjp:user, cjp:config_write or cjp:config_read scope.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/v1/api/events/workspace-id/{workspaceId}") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("identity", identity) + req.QueryParam("sortBy", sortBy) + req.QueryParam("sort", sort) + req.QueryParam("filter", filter) + req.QueryParam("data", data) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&identity, "identity", "", "Identity to search events for. In case the identity contains non-uri-encodable characters, eg: '+', '>' etc, you can URL-encode the same and then pass it as parameter.") + cmd.Flags().StringVar(&sortBy, "sort-by", "", "sort By Field") + cmd.Flags().StringVar(&sort, "sort", "", "sort direction") + cmd.Flags().StringVar(&filter, "filter", "", "Optional filter which can be applied to the elements to be fetched. This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see [this reference](https://developer.here.com/documentation/data-client-library/dev_guide/client/rsql.html). For a list of supported operators, see this [syntax guide](https://github.com/perplexhub/rsql-jpa-specification#rsql-syntax-reference).") + cmd.Flags().StringVar(&data, "data", "", "Optional filter on data filed which can be applied to the elements to be fetched. This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see [this reference](https://developer.here.com/documentation/data-client-library/dev_guide/client/rsql.html). For a list of supported operators, see this [syntax guide](https://github.com/perplexhub/rsql-jpa-specification#rsql-syntax-reference).") + cmd.Flags().StringVar(&page, "page", "", "Index of the page of results to be fetched. Results are returned in blocks of pageSize elements. This parameter specifies which page number to retrieve.The page numbering starts with 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Number of items to be displayed on a page.") + journeyProfileCreationInsightsCmd.AddCommand(cmd) + } + + { // stream-events-identity + var workspaceId string + var identity string + var filter string + var data string + cmd := &cobra.Command{ + Use: "stream-events-identity", + Short: "Stream Events By Identity", + Long: `Real-time streaming enables API consumers to listen for events as it arrives as part of the Journey; these may be transformed, value-added/enriched, and ready to be consumed or forwarded to another destination. Optionally accepts filter and data parameters slice/dice further. + +Role and Scope: Requires id full admin role with cjds:admin_org_write or cjds:admin_org_read scope. Or requires any role with cjp:user, cjp:config_write or cjp:config_read scope.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/v1/api/events/stream/workspace-id/{workspaceId}/identity/{identity}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("identity", identity) + req.QueryParam("filter", filter) + req.QueryParam("data", data) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&identity, "identity", "", "Person Identity. In case the identity contains non-uri-encodable characters, eg: '+', '>' etc, you can URL-encode the same and then pass it as parameter.") + cmd.MarkFlagRequired("identity") + cmd.Flags().StringVar(&filter, "filter", "", "Optional filter which can be applied to the elements to be fetched. This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see [this reference](https://developer.here.com/documentation/data-client-library/dev_guide/client/rsql.html). For a list of supported operators, see this [syntax guide](https://github.com/perplexhub/rsql-jpa-specification#rsql-syntax-reference).") + cmd.Flags().StringVar(&data, "data", "", "Optional filter on data filed which can be applied to the elements to be fetched. This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see [this reference](https://developer.here.com/documentation/data-client-library/dev_guide/client/rsql.html). For a list of supported operators, see this [syntax guide](https://github.com/perplexhub/rsql-jpa-specification#rsql-syntax-reference).") + journeyProfileCreationInsightsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/journey_subscription.go b/cmd/cc/journey_subscription.go new file mode 100644 index 0000000..1171038 --- /dev/null +++ b/cmd/cc/journey_subscription.go @@ -0,0 +1,91 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var journeySubscriptionCmd = &cobra.Command{ + Use: "journey-subscription", + Short: "JourneySubscription commands", +} + +func init() { + cmd.CcCmd.AddCommand(journeySubscriptionCmd) + + { // get-wxcc + var workspaceId string + cmd := &cobra.Command{ + Use: "get-wxcc", + Short: "Get WXCC Subscription", + Long: `Get WXCC Subscription in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_read or cjds:admin_org_write scopes or cjp:config_read or cjp:config_write scopes`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/admin/v1/api/wxcc-subscription/workspace-id/{workspaceId}") + req.PathParam("workspaceId", workspaceId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Workspace ID") + cmd.MarkFlagRequired("workspace-id") + journeySubscriptionCmd.AddCommand(cmd) + } + + { // create-wxcc + var workspaceId string + cmd := &cobra.Command{ + Use: "create-wxcc", + Short: "Create WXCC Subscription", + Long: `Create WXCC Subscription in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_write or cjp:config_write scopes`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/admin/v1/api/wxcc-subscription/workspace-id/{workspaceId}") + req.PathParam("workspaceId", workspaceId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Workspace ID") + cmd.MarkFlagRequired("workspace-id") + journeySubscriptionCmd.AddCommand(cmd) + } + + { // delete-wxcc + var workspaceId string + cmd := &cobra.Command{ + Use: "delete-wxcc", + Short: "Delete WXCC Subscription", + Long: `Delete WXCC Subscription in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_write or cjp:config_write scopes`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/admin/v1/api/wxcc-subscription/workspace-id/{workspaceId}") + req.PathParam("workspaceId", workspaceId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Workspace ID") + cmd.MarkFlagRequired("workspace-id") + journeySubscriptionCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/journey_trigger_actions.go b/cmd/cc/journey_trigger_actions.go new file mode 100644 index 0000000..3b64ce3 --- /dev/null +++ b/cmd/cc/journey_trigger_actions.go @@ -0,0 +1,270 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + "strconv" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa + +var journeyTriggerActionsCmd = &cobra.Command{ + Use: "journey-trigger-actions", + Short: "JourneyTriggerActions commands", +} + +func init() { + cmd.CcCmd.AddCommand(journeyTriggerActionsCmd) + + { // get-all + var workspaceId string + var sortBy string + var sort string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "get-all", + Short: "Get all Journey Actions", + Long: `Get all Journey Actions in JDS. + +Role and Scope: Requires id full admin or any role with cjp:config_write or cjp:config_read scope.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/admin/v1/api/journey-actions/workspace-id/{workspaceId}") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("sortBy", sortBy) + req.QueryParam("sort", sort) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&sortBy, "sort-by", "", "Sort By Field") + cmd.Flags().StringVar(&sort, "sort", "", "Sort direction") + cmd.Flags().StringVar(&page, "page", "", "Index of the page of results to be fetched. Results are returned in blocks of pageSize elements. This parameter specifies which page number to retrieve. The page numbering starts with 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Number of items to be displayed on a page.") + journeyTriggerActionsCmd.AddCommand(cmd) + } + + { // get-all-template + var workspaceId string + var templateId string + cmd := &cobra.Command{ + Use: "get-all-template", + Short: "Get all Journey Actions for a template", + Long: `Get all Journey Actions for a template in JDS. + +Role and Scope: It requires id full admin or any role with cjp:config_read or cjp:config_write scope.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/admin/v1/api/journey-actions/workspace-id/{workspaceId}/template-id/{templateId}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("templateId", templateId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&templateId, "template-id", "", "Template ID") + cmd.MarkFlagRequired("template-id") + journeyTriggerActionsCmd.AddCommand(cmd) + } + + { // create + var workspaceId string + var templateId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a new Journey Action", + Long: "Create a new Journey Action in JDS. \n\n **Role and Scope**: It requires id full admin or any role with cjp:config_write scope.\n\n **Sample Input for Creating new Journey action**: \n ```\n {\n \"name\": \"Closed Queue Action\",\n \"cooldownPeriodInMinutes\": 1,\n \"rules\": {\n \"logic\": \"SINGLE\",\n \"condition\": \"Closed Queue,category,string,Value GTE 2\"\n },\n \"actionTriggers\": [\n {\n \"type\": \"Webhook\",\n \"webhookURL\": \"https://hooks.us.webexconnect.io/events/6M347NJ6\",\n \"attributes\": {\n \"httpverb\": \"post\",\n \"requestbody\": \"{\\\"SMS\\\":\\\"12263762551\\\",\\\"callID\\\":\\\"\\\",\\\"MessageToSend\\\":\\\"Hello there!\\\"}\"\n }\n }\n ],\n \"isActive\": true\n }\n ```\nThe action trigger's evaluation process is predicated on the progressive profile that has been established. \nIn this specific action trigger, the rule assessment verifies whether the progressive profile value from the prior template evaluation was in excess of 2. \nIf this condition is met, the webhook is subsequently activated.\n\n\nPrior to rule evaluation for actions, several conditions must be satisfied. \nFirstly, the event associated with the template must align with the rule event, which, in this case, is 'Closed Queue'. \nSecondly, the metadata assigned to the template must correspond with the metadata set by the rules, which in this context, is 'category'. \nThirdly, the aggregation mode of the template must be equivalent to the rules' aggregation mode, which is 'value' in this instance. \nFinally, the operator of the template's aggregation mode must match those defined for 'value'. \nIn this scenario, it is 'GTE' (greater than or equal), which is an accepted value for 'value'.\n", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/admin/v1/api/journey-actions/workspace-id/{workspaceId}/template-id/{templateId}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("templateId", templateId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&templateId, "template-id", "", "Template ID") + cmd.MarkFlagRequired("template-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + journeyTriggerActionsCmd.AddCommand(cmd) + } + + { // get-name + var workspaceId string + var templateId string + var actionName string + cmd := &cobra.Command{ + Use: "get-name", + Short: "Get specific Journey Action By Name", + Long: `Get specific Journey Action By Name in JDS. + +Role and Scope:It requires id full admin or any role with cjp:config_read or cjp:config_write scope.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/admin/v1/api/journey-actions/workspace-id/{workspaceId}/template-id/{templateId}/action-name/{actionName}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("templateId", templateId) + req.PathParam("actionName", actionName) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&templateId, "template-id", "", "Template ID") + cmd.MarkFlagRequired("template-id") + cmd.Flags().StringVar(&actionName, "action-name", "", "Action Name") + cmd.MarkFlagRequired("action-name") + journeyTriggerActionsCmd.AddCommand(cmd) + } + + { // get-actionid + var workspaceId string + var templateId string + var actionId string + cmd := &cobra.Command{ + Use: "get-actionid", + Short: "Get specific Journey Action By ActionId", + Long: `Get specific Journey Action By ActionId in JDS. + +Role and Scope: It requires id full admin role with cjp:config_read or cjp:config_write scope.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/admin/v1/api/journey-actions/workspace-id/{workspaceId}/template-id/{templateId}/action-id/{actionId}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("templateId", templateId) + req.PathParam("actionId", actionId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&templateId, "template-id", "", "Template ID") + cmd.MarkFlagRequired("template-id") + cmd.Flags().StringVar(&actionId, "action-id", "", "Action ID") + cmd.MarkFlagRequired("action-id") + journeyTriggerActionsCmd.AddCommand(cmd) + } + + { // update + var workspaceId string + var templateId string + var actionId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Short: "Update existing Journey Action", + Long: `Update existing Journey Action in JDS. + +Role and Scope: It requires id full admin or any role with cjp:config_write scope.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PUT", "/admin/v1/api/journey-actions/workspace-id/{workspaceId}/template-id/{templateId}/action-id/{actionId}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("templateId", templateId) + req.PathParam("actionId", actionId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&templateId, "template-id", "", "Template ID") + cmd.MarkFlagRequired("template-id") + cmd.Flags().StringVar(&actionId, "action-id", "", "Action ID") + cmd.MarkFlagRequired("action-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + journeyTriggerActionsCmd.AddCommand(cmd) + } + + { // delete-configuration-actionid + var workspaceId string + var templateId string + var actionId string + cmd := &cobra.Command{ + Use: "delete-configuration-actionid", + Short: "Delete Journey Action configuration By ActionId", + Long: `Delete Journey Action configuration By ActionId in JDS. + +Role and Scope: It requires id full admin role with cjp:config_write scope.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/admin/v1/api/journey-actions/workspace-id/{workspaceId}/template-id/{templateId}/action-id/{actionId}") + req.PathParam("workspaceId", workspaceId) + req.PathParam("templateId", templateId) + req.PathParam("actionId", actionId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&templateId, "template-id", "", "Template ID") + cmd.MarkFlagRequired("template-id") + cmd.Flags().StringVar(&actionId, "action-id", "", "Action ID") + cmd.MarkFlagRequired("action-id") + journeyTriggerActionsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/journey_workspace_management.go b/cmd/cc/journey_workspace_management.go new file mode 100644 index 0000000..01e1237 --- /dev/null +++ b/cmd/cc/journey_workspace_management.go @@ -0,0 +1,183 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var journeyWorkspaceManagementCmd = &cobra.Command{ + Use: "journey-workspace-management", + Short: "JourneyWorkspaceManagement commands", +} + +func init() { + cmd.CcCmd.AddCommand(journeyWorkspaceManagementCmd) + + { // get + var workspaceId string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Workspace", + Long: `Get workspace details. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_read or cjds:admin_org_write scopes or cjp:config_read or cjp:config_write scopes`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/admin/v1/api/workspace/workspace-id/{workspaceId}") + req.PathParam("workspaceId", workspaceId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Workspace ID") + cmd.MarkFlagRequired("workspace-id") + journeyWorkspaceManagementCmd.AddCommand(cmd) + } + + { // update + var workspaceId string + var description string + var name string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Short: "Update Workspace", + Long: `Update workspace by Id. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_write or cjp:config_write scopes`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PUT", "/admin/v1/api/workspace/workspace-id/{workspaceId}") + req.PathParam("workspaceId", workspaceId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("description", description) + req.BodyString("name", name) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Workspace ID") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&description, "description", "", "") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + journeyWorkspaceManagementCmd.AddCommand(cmd) + } + + { // delete + var workspaceId string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete Workspace", + Long: `Delete Workspace By Id. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_write or cjp:config_write scopes`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/admin/v1/api/workspace/workspace-id/{workspaceId}") + req.PathParam("workspaceId", workspaceId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "Workspace ID") + cmd.MarkFlagRequired("workspace-id") + journeyWorkspaceManagementCmd.AddCommand(cmd) + } + + { // get-all + var filter string + var sortBy string + var sort string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "get-all", + Short: "Get All Workspaces", + Long: `Get All Workspaces. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_read or cjds:admin_org_write scopes or cjp:config_read or cjp:config_write scopes`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/admin/v1/api/workspace") + req.QueryParam("filter", filter) + req.QueryParam("sortBy", sortBy) + req.QueryParam("sort", sort) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&filter, "filter", "", "Optional filter which can be applied to the elements to be fetched. This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see [this reference](https://developer.here.com/documentation/data-client-library/dev_guide/client/rsql.html). For a list of supported operators, see this [syntax guide](https://github.com/perplexhub/rsql-jpa-specification#rsql-syntax-reference).") + cmd.Flags().StringVar(&sortBy, "sort-by", "", "Sort By Field") + cmd.Flags().StringVar(&sort, "sort", "", "Sort direction") + cmd.Flags().StringVar(&page, "page", "", "Index of the page of results to be fetched. Results are returned in blocks of pageSize elements. This parameter specifies which page number to retrieve.The page numbering starts with 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Number of items to be displayed on a page.") + journeyWorkspaceManagementCmd.AddCommand(cmd) + } + + { // create + var description string + var name string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create Workspace", + Long: `Create Workspace in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope.It requires the appropriate cjds:admin_org_write or cjp:config_write scopes`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/admin/v1/api/workspace") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("description", description) + req.BodyString("name", name) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&description, "description", "", "") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + journeyWorkspaceManagementCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/multimedia_profile.go b/cmd/cc/multimedia_profile.go new file mode 100644 index 0000000..f775735 --- /dev/null +++ b/cmd/cc/multimedia_profile.go @@ -0,0 +1,325 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + "strconv" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa + +var multimediaProfileCmd = &cobra.Command{ + Use: "multimedia-profile", + Short: "MultimediaProfile commands", +} + +func init() { + cmd.CcCmd.AddCommand(multimediaProfileCmd) + + { // list + var orgid string + var filter string + var attributes string + var search string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "list", + Short: "List Multimedia Profile(s)", + Long: `Retrieve a list of Multimedia Profile(s) in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/v2/multimedia-profile") + req.PathParam("orgid", orgid) + req.QueryParam("filter", filter) + req.QueryParam("attributes", attributes) + req.QueryParam("search", search) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&filter, "filter", "", "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain space, and if so kindly bound it with quotes to apply filter. ") + cmd.Flags().StringVar(&attributes, "attributes", "", "Specify the attributes to be returned.Default all attributes are returned along with specified columns. All Attributes are supported") + cmd.Flags().StringVar(&search, "search", "", "Filter data based on the search keyword.Supported search columns(name, description) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\",\"description\");value==\"Cisco\" ") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + multimediaProfileCmd.AddCommand(cmd) + } + + { // create + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a new Multimedia Profile", + Long: `Create a new Multimedia Profile in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/multimedia-profile") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + multimediaProfileCmd.AddCommand(cmd) + } + + { // bulk-save + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "bulk-save", + Short: "Bulk save Multimedia Profile(s)", + Long: `Create, Update or delete Multimedia Profile(s) in bulk in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/multimedia-profile/bulk") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + multimediaProfileCmd.AddCommand(cmd) + } + + { // bulk-export + var orgid string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "bulk-export", + Short: "Bulk export Multimedia Profile(s)", + Long: `Export all Multimedia Profile(s) in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/multimedia-profile/bulk-export") + req.PathParam("orgid", orgid) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + multimediaProfileCmd.AddCommand(cmd) + } + + { // purge-inactive + var orgid string + var nextStartId string + cmd := &cobra.Command{ + Use: "purge-inactive", + Short: "Purge inactive Multimedia Profile(s)", + Long: `Purge inactive Multimedia Profile(s) older than the configured interval for a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/multimedia-profile/purge-inactive-entities") + req.PathParam("orgid", orgid) + req.QueryParam("nextStartId", nextStartId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&nextStartId, "next-start-id", "", "This is the entity ID from which items for the next purge batch with be selected.") + multimediaProfileCmd.AddCommand(cmd) + } + + { // get + var orgid string + var id string + cmd := &cobra.Command{ + Use: "get", + Aliases: []string{"get-id"}, + Short: "Get specific Multimedia Profile by ID", + Long: `Retrieve an existing Multimedia Profile by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/multimedia-profile/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Multimedia Profile.") + cmd.MarkFlagRequired("id") + multimediaProfileCmd.AddCommand(cmd) + } + + { // update + var orgid string + var id string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Aliases: []string{"update-id"}, + Short: "Update specific Multimedia Profile by ID", + Long: `Update an existing Multimedia Profile by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PUT", "/organization/{orgid}/multimedia-profile/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Multimedia Profile.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + multimediaProfileCmd.AddCommand(cmd) + } + + { // delete + var orgid string + var id string + cmd := &cobra.Command{ + Use: "delete", + Aliases: []string{"delete-id"}, + Short: "Delete specific Multimedia Profile by ID", + Long: `Delete an existing Multimedia Profile by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/organization/{orgid}/multimedia-profile/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Multimedia Profile.") + cmd.MarkFlagRequired("id") + multimediaProfileCmd.AddCommand(cmd) + } + + { // list-references + var orgid string + var id string + var typeVal string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "list-references", + Short: "List references for a specific Multimedia Profile", + Long: `Retrieve a list of all entities that have reference to an existing Multimedia Profile by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/multimedia-profile/{id}/incoming-references") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + req.QueryParam("type", typeVal) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "ID of this contact center resource.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&typeVal, "type", "", "Entity type of the other entity that has a reference to this specific entity.") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + multimediaProfileCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/notification.go b/cmd/cc/notification.go new file mode 100644 index 0000000..021081c --- /dev/null +++ b/cmd/cc/notification.go @@ -0,0 +1,69 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var notificationCmd = &cobra.Command{ + Use: "notification", + Short: "Notification commands", +} + +func init() { + cmd.CcCmd.AddCommand(notificationCmd) + + { // subscribe + var isKeepAliveEnabled bool + var clientType string + var allowMultiLogin bool + var force bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "subscribe", + Short: "Subscribe Notification", + Long: "Access this endpoint when the user has to register for a WebSocket Session. Requires one of the following accepted registration scopes: `cjp:user` or `cloud-contact-center:pod_conv`. The `cjp-hybrid-conn:read` scope is also accepted when CCE authentication is enabled. Tokens with only admin or partner roles and no accepted registration scope are rejected.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v1/notification/subscribe") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("isKeepAliveEnabled", isKeepAliveEnabled, cmd.Flags().Changed("is-keep-alive-enabled")) + req.BodyString("clientType", clientType) + req.BodyBool("allowMultiLogin", allowMultiLogin, cmd.Flags().Changed("allow-multi-login")) + req.BodyBool("force", force, cmd.Flags().Changed("force")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().BoolVar(&isKeepAliveEnabled, "is-keep-alive-enabled", false, "") + cmd.Flags().StringVar(&clientType, "client-type", "", "") + cmd.Flags().BoolVar(&allowMultiLogin, "allow-multi-login", false, "") + cmd.Flags().BoolVar(&force, "force", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + notificationCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/organization_setting.go b/cmd/cc/organization_setting.go new file mode 100644 index 0000000..b714305 --- /dev/null +++ b/cmd/cc/organization_setting.go @@ -0,0 +1,170 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + "strconv" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa + +var organizationSettingCmd = &cobra.Command{ + Use: "organization-setting", + Short: "OrganizationSetting commands", +} + +func init() { + cmd.CcCmd.AddCommand(organizationSettingCmd) + + { // list + var orgid string + var filter string + var attributes string + var search string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "list", + Short: "List Organization Settings", + Long: `Retrieve a list of Organization Settings in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/v2/organization-setting") + req.PathParam("orgid", orgid) + req.QueryParam("filter", filter) + req.QueryParam("attributes", attributes) + req.QueryParam("search", search) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&filter, "filter", "", "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, inactivateEntitiesPurgedOn, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. ") + cmd.Flags().StringVar(&attributes, "attributes", "", "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported.") + cmd.Flags().StringVar(&search, "search", "", "Filter data based on the search keyword.Supported search columns(name) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\");value==\"Cisco\" ") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + organizationSettingCmd.AddCommand(cmd) + } + + { // get + var orgid string + var id string + cmd := &cobra.Command{ + Use: "get", + Short: "Get specific Organization Setting by ID", + Long: `Retrieve an existing Organization Setting by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/organization-setting/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "ID of this contact center resource.") + cmd.MarkFlagRequired("id") + organizationSettingCmd.AddCommand(cmd) + } + + { // update + var orgid string + var id string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Short: "Update specific Organization Setting by ID", + Long: `Update an existing Organization Setting by ID in a given organization. Requests authenticated with a user token can modify only fields designated as user-modifiable.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PUT", "/organization/{orgid}/organization-setting/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "ID of this contact center resource.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + organizationSettingCmd.AddCommand(cmd) + } + + { // patch + var orgid string + var id string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "patch", + Short: "Partially update Organization Setting by ID", + Long: `Partially update Organization Setting by ID in a given organization. Requests authenticated with a user token can modify only fields designated as user-modifiable.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PATCH", "/organization/{orgid}/organization-setting/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "ID of this contact center resource.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + organizationSettingCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/outdial_ani.go b/cmd/cc/outdial_ani.go new file mode 100644 index 0000000..6c33d03 --- /dev/null +++ b/cmd/cc/outdial_ani.go @@ -0,0 +1,616 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + "strconv" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa + +var outdialAniCmd = &cobra.Command{ + Use: "outdial-ani", + Short: "OutdialAni commands", +} + +func init() { + cmd.CcCmd.AddCommand(outdialAniCmd) + + { // list + var orgid string + var filter string + var attributes string + var search string + var page string + var pageSize string + var singleObjectResponse string + cmd := &cobra.Command{ + Use: "list", + Short: "List Outdial ANIs", + Long: `Retrieve a list of Outdial ANIs in a given organization. + Note: Returning array fields in the List (Get All) API response is deprecated. To retrieve the complete resource with all fields, please use the Get-by-ID API instead.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/v2/outdial-ani") + req.PathParam("orgid", orgid) + req.QueryParam("filter", filter) + req.QueryParam("attributes", attributes) + req.QueryParam("search", search) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + req.QueryParam("singleObjectResponse", singleObjectResponse) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&filter, "filter", "", "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, outdialANIEntries, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. ") + cmd.Flags().StringVar(&attributes, "attributes", "", "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported. except outdialANIEntries") + cmd.Flags().StringVar(&search, "search", "", "Filter data based on the search keyword.Supported search columns(name, description) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\",\"description\");value==\"Cisco\" ") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + cmd.Flags().StringVar(&singleObjectResponse, "single-object-response", "", "Specify whether to include array fields in the response. This query parameter should be used only when the response contains a single record. It is not supported for responses with multiple objects and throws an exception.") + outdialAniCmd.AddCommand(cmd) + } + + { // create + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a new Outdial ANI", + Long: `Create a new Outdial ANI in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/outdial-ani") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + outdialAniCmd.AddCommand(cmd) + } + + { // bulk-save + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "bulk-save", + Short: "Bulk save Outdial ANIs", + Long: `Create, Update or delete Outdial ANIs in bulk in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/outdial-ani/bulk") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + outdialAniCmd.AddCommand(cmd) + } + + { // bulk-export + var orgid string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "bulk-export", + Short: "Bulk export Outdial ANI(s)", + Long: `Export all Outdial ANI(s) in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/outdial-ani/bulk-export") + req.PathParam("orgid", orgid) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + outdialAniCmd.AddCommand(cmd) + } + + { // list-entries + var orgid string + var filter string + var attributes string + var search string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "list-entries", + Aliases: []string{"list-entry"}, + Short: "List Outdial ANI Entries", + Long: `Retrieve a list of Outdial ANI Entries in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/outdial-ani/entry") + req.PathParam("orgid", orgid) + req.QueryParam("filter", filter) + req.QueryParam("attributes", attributes) + req.QueryParam("search", search) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&filter, "filter", "", "Specify a filter based on which the results will be fetched. Supported filterable fields: id. The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. ") + cmd.Flags().StringVar(&attributes, "attributes", "", "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported.") + cmd.Flags().StringVar(&search, "search", "", "Filter data based on the search keyword.Supported search columns(name) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\");value==\"Cisco\" ") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + outdialAniCmd.AddCommand(cmd) + } + + { // get + var orgid string + var id string + cmd := &cobra.Command{ + Use: "get", + Aliases: []string{"get-id"}, + Short: "Get specific Outdial ANI by ID", + Long: `Retrieve an existing Outdial ANI by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/outdial-ani/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Outdial ANI.") + cmd.MarkFlagRequired("id") + outdialAniCmd.AddCommand(cmd) + } + + { // update + var orgid string + var id string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Aliases: []string{"update-id"}, + Short: "Update specific Outdial ANI by ID", + Long: `Update an existing Outdial ANI by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PUT", "/organization/{orgid}/outdial-ani/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Outdial ANI.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + outdialAniCmd.AddCommand(cmd) + } + + { // delete + var orgid string + var id string + cmd := &cobra.Command{ + Use: "delete", + Aliases: []string{"delete-id"}, + Short: "Delete specific Outdial ANI by ID", + Long: `Delete an existing Outdial ANI by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/organization/{orgid}/outdial-ani/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Outdial ANI.") + cmd.MarkFlagRequired("id") + outdialAniCmd.AddCommand(cmd) + } + + { // list-references + var orgid string + var id string + var typeVal string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "list-references", + Short: "List references for a specific Outdial ANI", + Long: `Retrieve a list of all entities that have reference to an existing Outdial ANI by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/outdial-ani/{id}/incoming-references") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + req.QueryParam("type", typeVal) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "ID of this contact center resource.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&typeVal, "type", "", "Entity type of the other entity that has a reference to this specific entity.") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + outdialAniCmd.AddCommand(cmd) + } + + { // create-entry + var orgid string + var outDialAniId string + var name string + var number string + var organizationId string + var id string + var version int64 + var defaultAnientry bool + var createdTime int64 + var lastUpdatedTime int64 + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-entry", + Short: "Create a new Outdial ANI Entry", + Long: `Create a new Outdial ANI Entry in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/outdial-ani/{outDialAniId}/entry") + req.PathParam("orgid", orgid) + req.PathParam("outDialAniId", outDialAniId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("name", name) + req.BodyString("number", number) + req.BodyString("organizationId", organizationId) + req.BodyString("id", id) + req.BodyInt("version", version, cmd.Flags().Changed("version")) + req.BodyBool("defaultANIEntry", defaultAnientry, cmd.Flags().Changed("default-anientry")) + req.BodyInt("createdTime", createdTime, cmd.Flags().Changed("created-time")) + req.BodyInt("lastUpdatedTime", lastUpdatedTime, cmd.Flags().Changed("last-updated-time")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&outDialAniId, "out-dial-ani-id", "", "Resource ID of the Outdial ANI") + cmd.MarkFlagRequired("out-dial-ani-id") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&number, "number", "", "") + cmd.Flags().StringVar(&organizationId, "organization-id", "", "") + cmd.Flags().StringVar(&id, "id", "", "") + cmd.Flags().Int64Var(&version, "version", 0, "") + cmd.Flags().BoolVar(&defaultAnientry, "default-anientry", false, "") + cmd.Flags().Int64Var(&createdTime, "created-time", 0, "") + cmd.Flags().Int64Var(&lastUpdatedTime, "last-updated-time", 0, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + outdialAniCmd.AddCommand(cmd) + } + + { // bulk-save-entries + var orgid string + var outDialAniId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "bulk-save-entries", + Aliases: []string{"bulk-save-entry"}, + Short: "Bulk save Outdial ANI Entries", + Long: `Create, Update or delete Outdial ANI Entries in bulk for an Address Book in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/outdial-ani/{outDialAniId}/entry/bulk") + req.PathParam("orgid", orgid) + req.PathParam("outDialAniId", outDialAniId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&outDialAniId, "out-dial-ani-id", "", "Resource ID of the Outdial ANI") + cmd.MarkFlagRequired("out-dial-ani-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + outdialAniCmd.AddCommand(cmd) + } + + { // get-entry-id + var orgid string + var outDialAniId string + var id string + cmd := &cobra.Command{ + Use: "get-entry-id", + Short: "Get specific Outdial ANI Entry by ID", + Long: `Retrieve an existing Outdial ANI Entry by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/outdial-ani/{outDialAniId}/entry/{id}") + req.PathParam("orgid", orgid) + req.PathParam("outDialAniId", outDialAniId) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&outDialAniId, "out-dial-ani-id", "", "Resource ID of the Outdial ANI") + cmd.MarkFlagRequired("out-dial-ani-id") + cmd.Flags().StringVar(&id, "id", "", "ID of this contact center resource.") + cmd.MarkFlagRequired("id") + outdialAniCmd.AddCommand(cmd) + } + + { // update-entry-id + var orgid string + var outDialAniId string + var id string + var name string + var number string + var organizationId string + var version int64 + var defaultAnientry bool + var createdTime int64 + var lastUpdatedTime int64 + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-entry-id", + Short: "Update specific Outdial ANI Entry by ID", + Long: `Update an existing Outdial ANI Entry by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PUT", "/organization/{orgid}/outdial-ani/{outDialAniId}/entry/{id}") + req.PathParam("orgid", orgid) + req.PathParam("outDialAniId", outDialAniId) + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("name", name) + req.BodyString("number", number) + req.BodyString("organizationId", organizationId) + req.BodyString("id", id) + req.BodyInt("version", version, cmd.Flags().Changed("version")) + req.BodyBool("defaultANIEntry", defaultAnientry, cmd.Flags().Changed("default-anientry")) + req.BodyInt("createdTime", createdTime, cmd.Flags().Changed("created-time")) + req.BodyInt("lastUpdatedTime", lastUpdatedTime, cmd.Flags().Changed("last-updated-time")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&outDialAniId, "out-dial-ani-id", "", "Resource ID of the Outdial ANI") + cmd.MarkFlagRequired("out-dial-ani-id") + cmd.Flags().StringVar(&id, "id", "", "ID of this contact center resource.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&number, "number", "", "") + cmd.Flags().StringVar(&organizationId, "organization-id", "", "") + cmd.Flags().Int64Var(&version, "version", 0, "") + cmd.Flags().BoolVar(&defaultAnientry, "default-anientry", false, "") + cmd.Flags().Int64Var(&createdTime, "created-time", 0, "") + cmd.Flags().Int64Var(&lastUpdatedTime, "last-updated-time", 0, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + outdialAniCmd.AddCommand(cmd) + } + + { // delete-entry-id + var orgid string + var outDialAniId string + var id string + cmd := &cobra.Command{ + Use: "delete-entry-id", + Short: "Delete specific Outdial ANI Entry by ID", + Long: `Delete an existing Outdial ANI Entry by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/organization/{orgid}/outdial-ani/{outDialAniId}/entry/{id}") + req.PathParam("orgid", orgid) + req.PathParam("outDialAniId", outDialAniId) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&outDialAniId, "out-dial-ani-id", "", "Resource ID of the Outdial ANI") + cmd.MarkFlagRequired("out-dial-ani-id") + cmd.Flags().StringVar(&id, "id", "", "ID of this contact center resource.") + cmd.MarkFlagRequired("id") + outdialAniCmd.AddCommand(cmd) + } + + { // list-entries-for-ani + var orgid string + var outDialAniId string + var filter string + var attributes string + var search string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "list-entries-for-ani", + Aliases: []string{"list-entry-2"}, + Short: "List Outdial ANI Entries", + Long: `Retrieve a list of Outdial ANI Entries in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/v2/outdial-ani/{outDialAniId}/entry") + req.PathParam("orgid", orgid) + req.PathParam("outDialAniId", outDialAniId) + req.QueryParam("filter", filter) + req.QueryParam("attributes", attributes) + req.QueryParam("search", search) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&outDialAniId, "out-dial-ani-id", "", "Resource ID of the Outdial ANI") + cmd.MarkFlagRequired("out-dial-ani-id") + cmd.Flags().StringVar(&filter, "filter", "", "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. ") + cmd.Flags().StringVar(&attributes, "attributes", "", "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported.") + cmd.Flags().StringVar(&search, "search", "", "Filter data based on the search keyword.Supported search columns(name) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\");value==\"Cisco\" ") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + outdialAniCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/overrides.go b/cmd/cc/overrides.go new file mode 100644 index 0000000..705ddf0 --- /dev/null +++ b/cmd/cc/overrides.go @@ -0,0 +1,311 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + "strconv" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa + +var overridesCmd = &cobra.Command{ + Use: "overrides", + Short: "Overrides commands", +} + +func init() { + cmd.CcCmd.AddCommand(overridesCmd) + + { // list + var orgid string + var filter string + var attributes string + var search string + var page string + var pageSize string + var sort string + var includeLatestOverride string + var singleObjectResponse string + cmd := &cobra.Command{ + Use: "list", + Short: "List Overrides resource(s)", + Long: `Retrieve a list of Overrides resource(s) in a given organization. + Note: Returning array fields in the List (Get All) API response is deprecated. To retrieve the complete resource with all fields, please use the Get-by-ID API instead.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/v2/overrides") + req.PathParam("orgid", orgid) + req.QueryParam("filter", filter) + req.QueryParam("attributes", attributes) + req.QueryParam("search", search) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + req.QueryParam("sort", sort) + req.QueryParam("includeLatestOverride", includeLatestOverride) + req.QueryParam("singleObjectResponse", singleObjectResponse) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&filter, "filter", "", "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, overrides, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. ") + cmd.Flags().StringVar(&attributes, "attributes", "", "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported. except (overrides)") + cmd.Flags().StringVar(&search, "search", "", "Filter data based on the search keyword.Supported search columns(name) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\");value==\"Cisco\" ") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + cmd.Flags().StringVar(&sort, "sort", "", "Sorting criteria in the format: property(, asc | desc). Default sort order is ascending. Supported sortable fields (name, timezone, createdTime, lastUpdatedTime). The examples below show some sort queries - name,asc - createdTime,desc ") + cmd.Flags().StringVar(&includeLatestOverride, "include-latest-override", "", "Enable the flag to get the latest Override") + cmd.Flags().StringVar(&singleObjectResponse, "single-object-response", "", "Specifiy whether to include array fields in the response, This query param should use only if the response contain single record, if we are using for multiple objects response query param not supported and throws an exception.") + overridesCmd.AddCommand(cmd) + } + + { // create + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a new Overrides resource", + Long: `Create a new Overrides resource in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/overrides") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + overridesCmd.AddCommand(cmd) + } + + { // bulk-save + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "bulk-save", + Short: "Bulk save Overrides resource(s)", + Long: `Create, Update or delete Overrides resource(s) in bulk in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/overrides/bulk") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + overridesCmd.AddCommand(cmd) + } + + { // bulk-export + var orgid string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "bulk-export", + Short: "Bulk export Overrides resource(s)", + Long: `Export all Overrides resource(s) in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/overrides/bulk-export") + req.PathParam("orgid", orgid) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + overridesCmd.AddCommand(cmd) + } + + { // get + var orgid string + var id string + cmd := &cobra.Command{ + Use: "get", + Aliases: []string{"get-id"}, + Short: "Get specific Overrides resource by ID", + Long: `Retrieve an existing Overrides resource by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/overrides/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Overrides resource.") + cmd.MarkFlagRequired("id") + overridesCmd.AddCommand(cmd) + } + + { // update + var orgid string + var id string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Aliases: []string{"update-id"}, + Short: "Update specific Overrides resource by ID", + Long: `Update an existing Overrides resource by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PUT", "/organization/{orgid}/overrides/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Overrides resource.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + overridesCmd.AddCommand(cmd) + } + + { // delete + var orgid string + var id string + cmd := &cobra.Command{ + Use: "delete", + Aliases: []string{"delete-id"}, + Short: "Delete specific Overrides resource by ID", + Long: `Delete an existing Overrides resource by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/organization/{orgid}/overrides/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Overrides resource.") + cmd.MarkFlagRequired("id") + overridesCmd.AddCommand(cmd) + } + + { // list-references + var orgid string + var id string + var typeVal string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "list-references", + Short: "List references for a specific Overrides resource", + Long: `Retrieve a list of all entities that have reference to an existing Overrides resource by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/overrides/{id}/incoming-references") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + req.QueryParam("type", typeVal) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "ID of this contact center resource.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&typeVal, "type", "", "Entity type of the other entity that has a reference to this specific entity.") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + overridesCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/queues.go b/cmd/cc/queues.go new file mode 100644 index 0000000..b9c9ead --- /dev/null +++ b/cmd/cc/queues.go @@ -0,0 +1,84 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/Cloverhound/webex-cli/internal/timeutil" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = timeutil.ParseLastISO + +var queuesCmd = &cobra.Command{ + Use: "queues", + Short: "Queues commands", +} + +func init() { + cmd.CcCmd.AddCommand(queuesCmd) + + { // get-statistics + var from string + var to string + var interval string + var queueIds string + var orgid string + var trackingId string + var last string + cmd := &cobra.Command{ + Use: "get-statistics", + Short: "Get Queue Statistics", + Long: `Retrieve Queue statistics for a given interval of time. +An important thing to note is that each stat produced is for a specified time window (last 15, 30, or 60 minutes etc) and is not cumulative. +Contacts that span across intervals will also have stats broken down across intervals. For example: A contact that starts at 12:05 and ends at 12:25 will have stats for Interval A (12:00-12:15) and Interval B (12:15-12:30) assuming the interval window is for 15 minutes. +Stats that only require the start time of the contact like 'totalOfferedTasks' and 'totalAcceptedTasks' will be counted only once and it will be present in the interval where the contact started i.e. Interval A. +Whereas, stats that require the end time as well for calculations like 'averageHandledTime', will be present in the interval where the contact ended i.e. interval B. + +For this API, response compression using gzip can be enabled by including 'Accept-Encoding' header in the request with its value as 'gzip'. +The response will be compressed only if its size exceeds 1 MB. +If the header is not present in the request or if gzip is not listed as one of the encodings in the header's value (comma separated encodings), then API response will not be compressed and this can impact the latency as observed from clients. +`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/v1/queues/statistics") + if last != "" { + var err error + from, to, err = timeutil.ParseLastEpochMs(last) + if err != nil { + return err + } + } + req.QueryParam("from", from) + req.QueryParam("to", to) + req.QueryParam("interval", interval) + req.QueryParam("queueIds", queueIds) + req.QueryParam("queueIds", queueIds) + req.QueryParam("orgId", orgid) + req.Header("TrackingId", trackingId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&from, "from", "", "Start time for the query (in epoch milliseconds). Any epoch time can be passed in the input, from date will be rounded down to nearest 15 minute window. For example, epoch time of 12:05 will be rounded down to 12:00.") + cmd.Flags().StringVar(&to, "to", "", "End time for the query (in epoch milliseconds). Any epoch time can be passed in the input, from date will be rounded down to nearest 15 minute window. For example, epoch time of 12:55 will be rounded down to 12:45. The difference between to and from time must be less than 24 hours (86400000 milliseconds).") + cmd.Flags().StringVar(&interval, "interval", "", "Time interval (in minutes) to chunk statistics by i.e. break up the entire from-to timeframe by this interval amount so that statistics can be viewed incrementally. Supported values are 15, 30, or 60.") + cmd.Flags().StringVar(&queueIds, "queue-ids", "", "Comma-separated list of queue IDs. A maximum of 100 values is permitted. If values are not provided, all queues for an organization are returned.") + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to use for this operation. If unspecified, inferred from token. Token must have permission to interact with this organization.") + cmd.Flags().StringVar(&trackingId, "tracking-id", "", "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. ") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + queuesCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/realtime.go b/cmd/cc/realtime.go new file mode 100644 index 0000000..11e13aa --- /dev/null +++ b/cmd/cc/realtime.go @@ -0,0 +1,69 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var realtimeCmd = &cobra.Command{ + Use: "realtime", + Short: "Realtime commands", +} + +func init() { + cmd.CcCmd.AddCommand(realtimeCmd) + + { // subscribe-notification + var isKeepAliveEnabled bool + var clientType string + var allowMultiLogin bool + var force bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "subscribe-notification", + Short: "Subscribe Realtime Notification", + Long: "Access this endpoint when the user has to register for a WebSocket Session to receive realtime events. Requires one of the following accepted registration scopes: `cjp:user` or `cloud-contact-center:pod_conv`. The `cjp-hybrid-conn:read` scope is also accepted when CCE authentication is enabled. Tokens with only admin or partner roles and no accepted registration scope are rejected.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v1/realtime/subscribe") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("isKeepAliveEnabled", isKeepAliveEnabled, cmd.Flags().Changed("is-keep-alive-enabled")) + req.BodyString("clientType", clientType) + req.BodyBool("allowMultiLogin", allowMultiLogin, cmd.Flags().Changed("allow-multi-login")) + req.BodyBool("force", force, cmd.Flags().Changed("force")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().BoolVar(&isKeepAliveEnabled, "is-keep-alive-enabled", false, "") + cmd.Flags().StringVar(&clientType, "client-type", "", "") + cmd.Flags().BoolVar(&allowMultiLogin, "allow-multi-login", false, "") + cmd.Flags().BoolVar(&force, "force", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + realtimeCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/resource_collection.go b/cmd/cc/resource_collection.go new file mode 100644 index 0000000..6668f2c --- /dev/null +++ b/cmd/cc/resource_collection.go @@ -0,0 +1,299 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + "strconv" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa + +var resourceCollectionCmd = &cobra.Command{ + Use: "resource-collection", + Short: "ResourceCollection commands", +} + +func init() { + cmd.CcCmd.AddCommand(resourceCollectionCmd) + + { // create + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a new Resource Collection", + Long: `Create a new resource collection in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/resource-collection") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + resourceCollectionCmd.AddCommand(cmd) + } + + { // bulk-partial-update + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "bulk-partial-update", + Short: "Bulk partial update Resource Collections", + Long: `Update some or all properties for resource collections in bulk for a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PATCH", "/organization/{orgid}/resource-collection/bulk") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + resourceCollectionCmd.AddCommand(cmd) + } + + { // update-default + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-default", + Short: "Update resource with default resource collection", + Long: `Update resource with default resource collection. Ensure resource should not associated to any resource collection and resource should not be updated and not older than 15 min. Only single Resource Collection is allowed to update.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/resource-collection/update-resource") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + resourceCollectionCmd.AddCommand(cmd) + } + + { // get + var orgid string + var id string + cmd := &cobra.Command{ + Use: "get", + Aliases: []string{"get-id"}, + Short: "Get specific Resource Collection by ID", + Long: `Retrieve an existing Resource Collection by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/resource-collection/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Resource Collection.") + cmd.MarkFlagRequired("id") + resourceCollectionCmd.AddCommand(cmd) + } + + { // update + var orgid string + var id string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Aliases: []string{"update-id"}, + Short: "Update specific Resource Collection by ID", + Long: `Update an existing resource collection by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PUT", "/organization/{orgid}/resource-collection/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Resource Collection.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + resourceCollectionCmd.AddCommand(cmd) + } + + { // delete + var orgid string + var id string + cmd := &cobra.Command{ + Use: "delete", + Aliases: []string{"delete-id"}, + Short: "Delete specific Resource Collection by ID", + Long: `Delete an existing resource collection by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/organization/{orgid}/resource-collection/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Resource Collection.") + cmd.MarkFlagRequired("id") + resourceCollectionCmd.AddCommand(cmd) + } + + { // list-references + var orgid string + var id string + var typeVal string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "list-references", + Short: "List references for a specific Resource Collection", + Long: `Retrieve a list of all entities that have reference to an existing resource collection by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/resource-collection/{id}/incoming-references") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + req.QueryParam("type", typeVal) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "ID of this contact center resource.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&typeVal, "type", "", "Entity type of the other entity that has a reference to this specific entity.") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + resourceCollectionCmd.AddCommand(cmd) + } + + { // list + var orgid string + var filter string + var attributes string + var search string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "list", + Short: "List Resource Collections", + Long: `Retrieve a list of resource collections in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/v2/resource-collection") + req.PathParam("orgid", orgid) + req.QueryParam("filter", filter) + req.QueryParam("attributes", attributes) + req.QueryParam("search", search) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&filter, "filter", "", "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. ") + cmd.Flags().StringVar(&attributes, "attributes", "", "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported.") + cmd.Flags().StringVar(&search, "search", "", "Filter data based on the search keyword.Supported search columns(name) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\");value==\"Cisco\" ") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + resourceCollectionCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/search_metadata.go b/cmd/cc/search_metadata.go new file mode 100644 index 0000000..44ac3e5 --- /dev/null +++ b/cmd/cc/search_metadata.go @@ -0,0 +1,51 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var searchMetadataCmd = &cobra.Command{ + Use: "search-metadata", + Short: "SearchMetadata commands", +} + +func init() { + cmd.CcCmd.AddCommand(searchMetadataCmd) + + { // get + var xOrganizationId string + var trackingId string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Search Metadata", + Long: "Returns schema metadata for the Webex Contact Center Search GraphQL API, describing supported queries, fields, nested structures, data types, filters, sorting options, grouping capabilities, and aggregation operations.\n\n**Authentication & Authorization:**\n- **Required Scopes:** `cjp:config` or `cjp:config_read`\n\nAn asterisk (*) in the rendered response schema indicates a required property.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/search/v2/meta") + req.Header("X-ORGANIZATION-ID", xOrganizationId) + req.Header("TrackingId", trackingId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&xOrganizationId, "x-organization-id", "", "Organization ID to use for this operation. If unspecified, inferred from token. Token must have permission to interact with this organization.") + cmd.Flags().StringVar(&trackingId, "tracking-id", "", "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. ") + searchMetadataCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/site.go b/cmd/cc/site.go new file mode 100644 index 0000000..a9f7a2a --- /dev/null +++ b/cmd/cc/site.go @@ -0,0 +1,373 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + "strconv" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa + +var siteCmd = &cobra.Command{ + Use: "site", + Short: "Site commands", +} + +func init() { + cmd.CcCmd.AddCommand(siteCmd) + + { // list + var orgid string + var filter string + var attributes string + var search string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "list", + Short: "List Site(s)", + Long: `Retrieve a list of Site(s) in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/v2/site") + req.PathParam("orgid", orgid) + req.QueryParam("filter", filter) + req.QueryParam("attributes", attributes) + req.QueryParam("search", search) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&filter, "filter", "", "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain space, and if so kindly bound it with quotes to apply filter. ") + cmd.Flags().StringVar(&attributes, "attributes", "", "Specify the attributes to be returned.Default all attributes are returned along with specified columns. All Attributes are supported") + cmd.Flags().StringVar(&search, "search", "", "Filter data based on the search keyword.Supported search columns(name) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\");value==\"Cisco\" ") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + siteCmd.AddCommand(cmd) + } + + { // create + var orgid string + var active bool + var multimediaProfileId string + var name string + var organizationId string + var id string + var version int64 + var description string + var systemDefault bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a new Site", + Long: `Create a new Site in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/site") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("active", active, cmd.Flags().Changed("active")) + req.BodyString("multimediaProfileId", multimediaProfileId) + req.BodyString("name", name) + req.BodyString("organizationId", organizationId) + req.BodyString("id", id) + req.BodyInt("version", version, cmd.Flags().Changed("version")) + req.BodyString("description", description) + req.BodyBool("systemDefault", systemDefault, cmd.Flags().Changed("system-default")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().BoolVar(&active, "active", false, "") + cmd.Flags().StringVar(&multimediaProfileId, "multimedia-profile-id", "", "") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&organizationId, "organization-id", "", "") + cmd.Flags().StringVar(&id, "id", "", "") + cmd.Flags().Int64Var(&version, "version", 0, "") + cmd.Flags().StringVar(&description, "description", "", "") + cmd.Flags().BoolVar(&systemDefault, "system-default", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + siteCmd.AddCommand(cmd) + } + + { // bulk-save + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "bulk-save", + Short: "Bulk save Site(s)", + Long: `Create, Update or delete Site(s) in bulk in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/site/bulk") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + siteCmd.AddCommand(cmd) + } + + { // bulk-export + var orgid string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "bulk-export", + Short: "Bulk export Site(s)", + Long: `Export all Site(s) in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/site/bulk-export") + req.PathParam("orgid", orgid) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + siteCmd.AddCommand(cmd) + } + + { // purge-inactive + var orgid string + var nextStartId string + cmd := &cobra.Command{ + Use: "purge-inactive", + Short: "Purge inactive Site(s)", + Long: `Purge inactive Site(s) older than the configured interval for a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/site/purge-inactive-entities") + req.PathParam("orgid", orgid) + req.QueryParam("nextStartId", nextStartId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&nextStartId, "next-start-id", "", "This is the entity ID from which items for the next purge batch with be selected.") + siteCmd.AddCommand(cmd) + } + + { // get + var orgid string + var id string + cmd := &cobra.Command{ + Use: "get", + Aliases: []string{"get-id"}, + Short: "Get specific Site by ID", + Long: `Retrieve an existing Site by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/site/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Site.") + cmd.MarkFlagRequired("id") + siteCmd.AddCommand(cmd) + } + + { // update + var orgid string + var id string + var active bool + var multimediaProfileId string + var name string + var organizationId string + var version int64 + var description string + var systemDefault bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Aliases: []string{"update-id"}, + Short: "Update specific Site by ID", + Long: `Update an existing Site by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PUT", "/organization/{orgid}/site/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("active", active, cmd.Flags().Changed("active")) + req.BodyString("multimediaProfileId", multimediaProfileId) + req.BodyString("name", name) + req.BodyString("organizationId", organizationId) + req.BodyString("id", id) + req.BodyInt("version", version, cmd.Flags().Changed("version")) + req.BodyString("description", description) + req.BodyBool("systemDefault", systemDefault, cmd.Flags().Changed("system-default")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Site.") + cmd.MarkFlagRequired("id") + cmd.Flags().BoolVar(&active, "active", false, "") + cmd.Flags().StringVar(&multimediaProfileId, "multimedia-profile-id", "", "") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&organizationId, "organization-id", "", "") + cmd.Flags().Int64Var(&version, "version", 0, "") + cmd.Flags().StringVar(&description, "description", "", "") + cmd.Flags().BoolVar(&systemDefault, "system-default", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + siteCmd.AddCommand(cmd) + } + + { // delete + var orgid string + var id string + cmd := &cobra.Command{ + Use: "delete", + Aliases: []string{"delete-id"}, + Short: "Delete specific Site by ID", + Long: `Delete an existing Site by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/organization/{orgid}/site/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Site.") + cmd.MarkFlagRequired("id") + siteCmd.AddCommand(cmd) + } + + { // list-references + var orgid string + var id string + var typeVal string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "list-references", + Short: "List references for a specific Site", + Long: `Retrieve a list of all entities that have reference to an existing Site by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/site/{id}/incoming-references") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + req.QueryParam("type", typeVal) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "ID of this contact center resource.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&typeVal, "type", "", "Entity type of the other entity that has a reference to this specific entity.") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + siteCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/skill.go b/cmd/cc/skill.go new file mode 100644 index 0000000..1e67706 --- /dev/null +++ b/cmd/cc/skill.go @@ -0,0 +1,356 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + "strconv" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa + +var skillCmd = &cobra.Command{ + Use: "skill", + Short: "Skill commands", +} + +func init() { + cmd.CcCmd.AddCommand(skillCmd) + + { // list + var orgid string + var filter string + var attributes string + var search string + var page string + var pageSize string + var singleObjectResponse string + var include string + cmd := &cobra.Command{ + Use: "list", + Short: "List Skills", + Long: `Retrieve a list of Skills in a given organization. + Note: Returning array fields in the List (Get All) API response is deprecated. To retrieve the complete resource with all fields, please use the Get-by-ID API instead.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/v2/skill") + req.PathParam("orgid", orgid) + req.QueryParam("filter", filter) + req.QueryParam("attributes", attributes) + req.QueryParam("search", search) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + req.QueryParam("singleObjectResponse", singleObjectResponse) + req.QueryParam("include", include) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&filter, "filter", "", "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, enumSkillValues, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. ") + cmd.Flags().StringVar(&attributes, "attributes", "", "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported. except (enumSkillValues)") + cmd.Flags().StringVar(&search, "search", "", "Filter data based on the search keyword.Supported search columns(name) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\");value==\"Cisco\" ") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + cmd.Flags().StringVar(&singleObjectResponse, "single-object-response", "", "Specify whether to include array fields in the response. This query parameter should be used only when the response contains a single record. It is not supported for responses with multiple objects and throws an exception.") + cmd.Flags().StringVar(&include, "include", "", "Fetch array fields on demand only. Supported array fields are enumSkillValues.") + skillCmd.AddCommand(cmd) + } + + { // create + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a new Skill", + Long: `Create a new Skill in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/skill") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + skillCmd.AddCommand(cmd) + } + + { // bulk-save + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "bulk-save", + Short: "Bulk save Skills", + Long: `Create, Update or delete Skills in bulk in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/skill/bulk") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + skillCmd.AddCommand(cmd) + } + + { // bulk-export + var orgid string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "bulk-export", + Short: "Bulk export Skill(s)", + Long: `Export all Skill(s) in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/skill/bulk-export") + req.PathParam("orgid", orgid) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + skillCmd.AddCommand(cmd) + } + + { // purge-inactive + var orgid string + var nextStartId string + cmd := &cobra.Command{ + Use: "purge-inactive", + Short: "Purge inactive Skills", + Long: `Purge inactive Skills older than the configured interval for a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/skill/purge-inactive-entities") + req.PathParam("orgid", orgid) + req.QueryParam("nextStartId", nextStartId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&nextStartId, "next-start-id", "", "This is the entity ID from which items for the next purge batch will be selected.") + skillCmd.AddCommand(cmd) + } + + { // get + var orgid string + var id string + cmd := &cobra.Command{ + Use: "get", + Aliases: []string{"get-id"}, + Short: "Get specific Skill by ID", + Long: `Retrieve an existing Skill by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/skill/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Skill.") + cmd.MarkFlagRequired("id") + skillCmd.AddCommand(cmd) + } + + { // update + var orgid string + var id string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Aliases: []string{"update-id"}, + Short: "Update specific Skill by ID", + Long: `Update an existing Skill by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PUT", "/organization/{orgid}/skill/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Skill.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + skillCmd.AddCommand(cmd) + } + + { // delete + var orgid string + var id string + cmd := &cobra.Command{ + Use: "delete", + Aliases: []string{"delete-id"}, + Short: "Delete specific Skill by ID", + Long: `Delete an existing Skill by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/organization/{orgid}/skill/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Skill.") + cmd.MarkFlagRequired("id") + skillCmd.AddCommand(cmd) + } + + { // list-references + var orgid string + var id string + var typeVal string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "list-references", + Short: "List references for a specific Skill", + Long: `Retrieve a list of all entities that have reference to an existing Skill by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/skill/{id}/incoming-references") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + req.QueryParam("type", typeVal) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "ID of this contact center resource.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&typeVal, "type", "", "Entity type of the other entity that has a reference to this specific entity.") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + skillCmd.AddCommand(cmd) + } + + { // populate-json-attributes-field-skill-id-org + var orgid string + var id string + cmd := &cobra.Command{ + Use: "populate-json-attributes-field-skill-id-org", + Short: "Populate json-attributes field for a given skill-id of an organization", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/skill/populate-json-attr/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "") + cmd.MarkFlagRequired("id") + skillCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/skill_profile.go b/cmd/cc/skill_profile.go new file mode 100644 index 0000000..8e82035 --- /dev/null +++ b/cmd/cc/skill_profile.go @@ -0,0 +1,360 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + "strconv" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa + +var skillProfileCmd = &cobra.Command{ + Use: "skill-profile", + Short: "SkillProfile commands", +} + +func init() { + cmd.CcCmd.AddCommand(skillProfileCmd) + + { // list + var orgid string + var filter string + var attributes string + var search string + var page string + var pageSize string + var singleObjectResponse string + cmd := &cobra.Command{ + Use: "list", + Short: "List Skill Profile(s)", + Long: `Retrieve a list of Skill Profile(s) in a given organization. + Note: Returning array fields in the List (Get All) API response is deprecated. To retrieve the complete resource with all fields, please use the Get-by-ID API instead.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/v2/skill-profile") + req.PathParam("orgid", orgid) + req.QueryParam("filter", filter) + req.QueryParam("attributes", attributes) + req.QueryParam("search", search) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + req.QueryParam("singleObjectResponse", singleObjectResponse) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&filter, "filter", "", "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, activeSkills, activeEnumSkills, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. ") + cmd.Flags().StringVar(&attributes, "attributes", "", "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported. except (activeSkills,activeEnumSkills)") + cmd.Flags().StringVar(&search, "search", "", "Filter data based on the search keyword.Supported search columns(name, description) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\",\"description\");value==\"Cisco\" ") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + cmd.Flags().StringVar(&singleObjectResponse, "single-object-response", "", "Specifiy whether to include array fields in the response, This query param should use only if the response contain single record, if we are using for multiple objects response query param not supported and throws an exception.") + skillProfileCmd.AddCommand(cmd) + } + + { // create + var orgid string + var activeSkills string + var name string + var organizationId string + var id string + var version string + var description string + var activeEnumSkills string + var createdTime string + var lastUpdatedTime string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a new Skill Profile", + Long: `Create a new Skill Profile in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/skill-profile") + req.PathParam("orgid", orgid) + req.QueryParam("activeSkills", activeSkills) + req.QueryParam("name", name) + req.QueryParam("organizationId", organizationId) + req.QueryParam("id", id) + req.QueryParam("version", version) + req.QueryParam("description", description) + req.QueryParam("activeEnumSkills", activeEnumSkills) + req.QueryParam("createdTime", createdTime) + req.QueryParam("lastUpdatedTime", lastUpdatedTime) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&activeSkills, "active-skills", "", "Skill profile configuration data") + cmd.Flags().StringVar(&name, "name", "", "Skill profile configuration data") + cmd.Flags().StringVar(&organizationId, "organization-id", "", "Skill profile configuration data") + cmd.Flags().StringVar(&id, "id", "", "Skill profile configuration data") + cmd.Flags().StringVar(&version, "version", "", "Skill profile configuration data") + cmd.Flags().StringVar(&description, "description", "", "Skill profile configuration data") + cmd.Flags().StringVar(&activeEnumSkills, "active-enum-skills", "", "Skill profile configuration data") + cmd.Flags().StringVar(&createdTime, "created-time", "", "Skill profile configuration data") + cmd.Flags().StringVar(&lastUpdatedTime, "last-updated-time", "", "Skill profile configuration data") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + skillProfileCmd.AddCommand(cmd) + } + + { // bulk-save + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "bulk-save", + Short: "Bulk save Skill Profile(s)", + Long: `Create, Update or delete Skill Profile(s) in bulk in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/skill-profile/bulk") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + skillProfileCmd.AddCommand(cmd) + } + + { // bulk-export + var orgid string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "bulk-export", + Short: "Bulk export Skill Profile(s)", + Long: `Export all Skill Profile(s) in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/skill-profile/bulk-export") + req.PathParam("orgid", orgid) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + skillProfileCmd.AddCommand(cmd) + } + + { // get + var orgid string + var id string + var includeSkillDetails string + cmd := &cobra.Command{ + Use: "get", + Aliases: []string{"get-id"}, + Short: "Get specific Skill Profile by ID", + Long: `Retrieve an existing Skill Profile by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/skill-profile/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + req.QueryParam("includeSkillDetails", includeSkillDetails) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Skill Profile.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&includeSkillDetails, "include-skill-details", "", "If set to true returns skill details") + skillProfileCmd.AddCommand(cmd) + } + + { // update + var orgid string + var id string + var activeSkills string + var name string + var organizationId string + var version string + var description string + var activeEnumSkills string + var createdTime string + var lastUpdatedTime string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Aliases: []string{"update-id"}, + Short: "Update specific Skill Profile by ID", + Long: `Update an existing Skill Profile by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PUT", "/organization/{orgid}/skill-profile/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + req.QueryParam("activeSkills", activeSkills) + req.QueryParam("name", name) + req.QueryParam("organizationId", organizationId) + req.QueryParam("id", id) + req.QueryParam("version", version) + req.QueryParam("description", description) + req.QueryParam("activeEnumSkills", activeEnumSkills) + req.QueryParam("createdTime", createdTime) + req.QueryParam("lastUpdatedTime", lastUpdatedTime) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Skill Profile.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&activeSkills, "active-skills", "", "Skill profile configuration data for update") + cmd.Flags().StringVar(&name, "name", "", "Skill profile configuration data for update") + cmd.Flags().StringVar(&organizationId, "organization-id", "", "Skill profile configuration data for update") + cmd.Flags().StringVar(&version, "version", "", "Skill profile configuration data for update") + cmd.Flags().StringVar(&description, "description", "", "Skill profile configuration data for update") + cmd.Flags().StringVar(&activeEnumSkills, "active-enum-skills", "", "Skill profile configuration data for update") + cmd.Flags().StringVar(&createdTime, "created-time", "", "Skill profile configuration data for update") + cmd.Flags().StringVar(&lastUpdatedTime, "last-updated-time", "", "Skill profile configuration data for update") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + skillProfileCmd.AddCommand(cmd) + } + + { // delete + var orgid string + var id string + cmd := &cobra.Command{ + Use: "delete", + Aliases: []string{"delete-id"}, + Short: "Delete specific Skill Profile by ID", + Long: `Delete an existing Skill Profile by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/organization/{orgid}/skill-profile/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Skill Profile.") + cmd.MarkFlagRequired("id") + skillProfileCmd.AddCommand(cmd) + } + + { // list-references + var orgid string + var id string + var typeVal string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "list-references", + Short: "List references for a specific Skill Profile", + Long: `Retrieve a list of all entities that have reference to an existing Skill Profile by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/skill-profile/{id}/incoming-references") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + req.QueryParam("type", typeVal) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "ID of this contact center resource.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&typeVal, "type", "", "Entity type of the other entity that has a reference to this specific entity.") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + skillProfileCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/subscriptions.go b/cmd/cc/subscriptions.go new file mode 100644 index 0000000..05e1c05 --- /dev/null +++ b/cmd/cc/subscriptions.go @@ -0,0 +1,472 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strings.Join + +var subscriptionsCmd = &cobra.Command{ + Use: "subscriptions", + Short: "Subscriptions commands", +} + +func init() { + cmd.CcCmd.AddCommand(subscriptionsCmd) + + { // list-v1 + var orgid string + var trackingId string + cmd := &cobra.Command{ + Use: "list-v1", + Short: "List Subscriptions", + Long: "Retrieve all subscriptions for a given organization. Requires `cjp:config_read` scope.\n\n\n Note: In the response JSON, the 'data' field only contains V1 based subscriptions, while the field 'meta.subscriptionCount' provides the total count encompassing all the created subscriptions in the organization.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/v1/subscriptions") + req.QueryParam("orgId", orgid) + req.Header("TrackingId", trackingId) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. If unspecified, the Organization ID is inferred from the token. The token must have permissions to interact with the organization.") + cmd.Flags().StringVar(&trackingId, "tracking-id", "", "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. If not provided, we will generate one for you.") + subscriptionsCmd.AddCommand(cmd) + } + + { // list-v2 + var orgid string + var trackingId string + cmd := &cobra.Command{ + Use: "list-v2", + Short: "List Subscriptions", + Long: "Retrieve all subscriptions for a given organization. Requires `cjp:config_read` scope.\n\n\n Note: In the response JSON, the 'data' field only contains V2 based subscriptions, while the field 'meta.subscriptionCount' provides the total count encompassing all the created subscriptions in the organization.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/v2/subscriptions") + req.QueryParam("orgId", orgid) + req.Header("TrackingId", trackingId) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. If unspecified, the Organization ID is inferred from the token. The token must have permissions to interact with the organization.") + cmd.Flags().StringVar(&trackingId, "tracking-id", "", "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. If not provided, we will generate one for you.") + subscriptionsCmd.AddCommand(cmd) + } + + { // register-v1 + var trackingId string + var destinationUrl string + var eventTypes []string + var name string + var description string + var secret string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "register-v1", + Short: "Register Subscription", + Long: "Create a subscription which would allow consumers to listen to events. If creating a subscription causes the org-level limit to be exceeded, the subscription registration will be denied. Requires `cjp:config_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v1/subscriptions") + req.Header("TrackingId", trackingId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("destinationUrl", destinationUrl) + req.BodyStringSlice("eventTypes", eventTypes) + req.BodyString("name", name) + req.BodyString("description", description) + req.BodyString("secret", secret) + req.BodyString("orgId", orgId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&trackingId, "tracking-id", "", "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. If not provided, we will generate one for you.") + cmd.Flags().StringVar(&destinationUrl, "destination-url", "", "") + cmd.Flags().StringSliceVar(&eventTypes, "event-types", nil, "") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&description, "description", "", "") + cmd.Flags().StringVar(&secret, "secret", "", "") + cmd.Flags().StringVar(&orgId, "org-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + subscriptionsCmd.AddCommand(cmd) + } + + { // register-v2 + var trackingId string + var destinationUrl string + var eventTypes []string + var name string + var resourceVersion string + var description string + var secret string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "register-v2", + Short: "Register Subscription", + Long: "Create a subscription which would allow consumers to listen to events. If creating a subscription causes the org-level limit to be exceeded, the subscription registration will be denied. Requires `cjp:config_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v2/subscriptions") + req.Header("TrackingId", trackingId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("destinationUrl", destinationUrl) + req.BodyStringSlice("eventTypes", eventTypes) + req.BodyString("name", name) + req.BodyString("resourceVersion", resourceVersion) + req.BodyString("description", description) + req.BodyString("secret", secret) + req.BodyString("orgId", orgId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&trackingId, "tracking-id", "", "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. If not provided, we will generate one for you.") + cmd.Flags().StringVar(&destinationUrl, "destination-url", "", "") + cmd.Flags().StringSliceVar(&eventTypes, "event-types", nil, "") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&resourceVersion, "resource-version", "", "") + cmd.Flags().StringVar(&description, "description", "", "") + cmd.Flags().StringVar(&secret, "secret", "", "") + cmd.Flags().StringVar(&orgId, "org-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + subscriptionsCmd.AddCommand(cmd) + } + + { // get-v1 + var id string + var orgid string + var trackingId string + cmd := &cobra.Command{ + Use: "get-v1", + Short: "Get Subscription", + Long: "Retrieve a subscription for a given subscription ID. Requires `cjp:config_read` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/v1/subscriptions/{id}") + req.PathParam("id", id) + req.QueryParam("orgId", orgid) + req.Header("TrackingId", trackingId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. If unspecified, the Organization ID is inferred from the token. The token must have permissions to interact with the organization.") + cmd.Flags().StringVar(&trackingId, "tracking-id", "", "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. If not provided, we will generate one for you.") + subscriptionsCmd.AddCommand(cmd) + } + + { // get-v2 + var id string + var orgid string + var trackingId string + cmd := &cobra.Command{ + Use: "get-v2", + Short: "Get Subscription", + Long: "Retrieve a subscription for a given subscription ID. Requires `cjp:config_read` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/v2/subscriptions/{id}") + req.PathParam("id", id) + req.QueryParam("orgId", orgid) + req.Header("TrackingId", trackingId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. If unspecified, the Organization ID is inferred from the token. The token must have permissions to interact with the organization.") + cmd.Flags().StringVar(&trackingId, "tracking-id", "", "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. If not provided, we will generate one for you.") + subscriptionsCmd.AddCommand(cmd) + } + + { // delete-v1 + var id string + var orgid string + var trackingId string + cmd := &cobra.Command{ + Use: "delete-v1", + Short: "Delete Subscription", + Long: "Deletes a subscription for a given subscription ID. Requires `cjp:config_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/v1/subscriptions/{id}") + req.PathParam("id", id) + req.QueryParam("orgId", orgid) + req.Header("TrackingId", trackingId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. If unspecified, the Organization ID is inferred from the token. The token must have permissions to interact with the organization.") + cmd.Flags().StringVar(&trackingId, "tracking-id", "", "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. If not provided, we will generate one for you.") + subscriptionsCmd.AddCommand(cmd) + } + + { // delete-v2 + var id string + var orgid string + var trackingId string + cmd := &cobra.Command{ + Use: "delete-v2", + Short: "Delete Subscription", + Long: "Deletes a subscription for a given subscription ID. Requires `cjp:config_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/v2/subscriptions/{id}") + req.PathParam("id", id) + req.QueryParam("orgId", orgid) + req.Header("TrackingId", trackingId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. If unspecified, the Organization ID is inferred from the token. The token must have permissions to interact with the organization.") + cmd.Flags().StringVar(&trackingId, "tracking-id", "", "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. If not provided, we will generate one for you.") + subscriptionsCmd.AddCommand(cmd) + } + + { // update-v1 + var id string + var trackingId string + var description string + var eventTypes []string + var destinationUrl string + var status string + var secret string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-v1", + Short: "Update Subscription", + Long: "Updates some of the properties in a subscription, for a given subscription ID. Requires `cjp:config_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PATCH", "/v1/subscriptions/{id}") + req.PathParam("id", id) + req.Header("TrackingId", trackingId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("description", description) + req.BodyStringSlice("eventTypes", eventTypes) + req.BodyString("destinationUrl", destinationUrl) + req.BodyString("status", status) + req.BodyString("secret", secret) + req.BodyString("orgId", orgId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&trackingId, "tracking-id", "", "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. If not provided, we will generate one for you.") + cmd.Flags().StringVar(&description, "description", "", "") + cmd.Flags().StringSliceVar(&eventTypes, "event-types", nil, "") + cmd.Flags().StringVar(&destinationUrl, "destination-url", "", "") + cmd.Flags().StringVar(&status, "status", "", "") + cmd.Flags().StringVar(&secret, "secret", "", "") + cmd.Flags().StringVar(&orgId, "org-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + subscriptionsCmd.AddCommand(cmd) + } + + { // update-v2 + var id string + var trackingId string + var resourceVersion string + var description string + var eventTypes []string + var destinationUrl string + var status string + var secret string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-v2", + Short: "Update Subscription", + Long: "Updates some of the properties in a subscription, for a given subscription ID. Requires `cjp:config_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PATCH", "/v2/subscriptions/{id}") + req.PathParam("id", id) + req.Header("TrackingId", trackingId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("resourceVersion", resourceVersion) + req.BodyString("description", description) + req.BodyStringSlice("eventTypes", eventTypes) + req.BodyString("destinationUrl", destinationUrl) + req.BodyString("status", status) + req.BodyString("secret", secret) + req.BodyString("orgId", orgId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&trackingId, "tracking-id", "", "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. If not provided, we will generate one for you.") + cmd.Flags().StringVar(&resourceVersion, "resource-version", "", "") + cmd.Flags().StringVar(&description, "description", "", "") + cmd.Flags().StringSliceVar(&eventTypes, "event-types", nil, "") + cmd.Flags().StringVar(&destinationUrl, "destination-url", "", "") + cmd.Flags().StringVar(&status, "status", "", "") + cmd.Flags().StringVar(&secret, "secret", "", "") + cmd.Flags().StringVar(&orgId, "org-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + subscriptionsCmd.AddCommand(cmd) + } + + { // list-event-types-v1 + var orgid string + var trackingId string + cmd := &cobra.Command{ + Use: "list-event-types-v1", + Short: "List Event Types", + Long: "Retrieve all available event types for an organization. Requires `cjp:config_read` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/v1/event-types") + req.QueryParam("orgId", orgid) + req.Header("TrackingId", trackingId) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. If unspecified, the Organization ID is inferred from the token. The token must have permissions to interact with the organization.") + cmd.Flags().StringVar(&trackingId, "tracking-id", "", "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. If not provided, we will generate one for you.") + subscriptionsCmd.AddCommand(cmd) + } + + { // list-event-types-v2 + var orgid string + var trackingId string + cmd := &cobra.Command{ + Use: "list-event-types-v2", + Short: "List Event Types", + Long: "Retrieve all available event types for an organization along with information about the currently supported resource versions. Requires `cjp:config_read` scope. ", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/v2/event-types") + req.QueryParam("orgId", orgid) + req.Header("TrackingId", trackingId) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. If unspecified, the Organization ID is inferred from the token. The token must have permissions to interact with the organization.") + cmd.Flags().StringVar(&trackingId, "tracking-id", "", "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. If not provided, we will generate one for you.") + subscriptionsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/tasks.go b/cmd/cc/tasks.go new file mode 100644 index 0000000..7be8a0e --- /dev/null +++ b/cmd/cc/tasks.go @@ -0,0 +1,828 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/Cloverhound/webex-cli/internal/timeutil" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = timeutil.ParseLastISO + +var tasksCmd = &cobra.Command{ + Use: "tasks", + Short: "Tasks commands", +} + +func init() { + cmd.CcCmd.AddCommand(tasksCmd) + + { // create + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create Task", + Long: "This feature is currently in Beta. Contact your Cisco team if you want access to this feature.\n\nCreates a new contact center task using the v2 task contract. The request body must include a `channelType` discriminator to select the task variant \u2014 `workItem` for structured form tasks, `customMessaging` for conversational messaging tasks, or `telephony` for voice tasks.\n\nOn success, returns a `201` response containing the task ID, which can be used to track the task lifecycle.\n\nRequires `cjp:task_write` OAuth scope. For partner-initiated inbound tasks (`workItem`, `customMessaging`), the `cjp:task_write` scope must be present in the partner application's access token. When an authenticated agent initiates an outdial (`telephony`) task, ensure the `cjp:task_write` scope is included in the agent's access token.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v2/tasks") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + tasksCmd.AddCommand(cmd) + } + + { // get + var channelTypes string + var from string + var to string + var pageSize string + var orgid string + var trackingId string + var last string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Tasks", + Long: `Retrieve open and closed tasks. Sorted by createdTime ascending. Uses offset-based pagination. +For this API, response compression using gzip can be enabled by including 'Accept-Encoding' header in the request with its value as 'gzip'. +The response will be compressed only if its size exceeds 1 MB. +If the header is not present in the request or if gzip is not listed as one of the encodings in the header's value (comma separated encodings), then API response will not be compressed and this can impact the latency as observed from clients.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/v1/tasks") + if last != "" { + var err error + from, to, err = timeutil.ParseLastEpochMs(last) + if err != nil { + return err + } + } + req.QueryParam("channelTypes", channelTypes) + req.QueryParam("channelTypes", channelTypes) + req.QueryParam("from", from) + req.QueryParam("to", to) + req.QueryParam("pageSize", pageSize) + req.QueryParam("orgId", orgid) + req.Header("TrackingId", trackingId) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&channelTypes, "channel-types", "", "Task channel type(s) permitted in response. Separate values with commas. Use lowercase. By default, there is no channelType filtering.") + cmd.Flags().StringVar(&from, "from", "", "Filters tasks created after the given epoch timestamp (in milliseconds).") + cmd.Flags().StringVar(&to, "to", "", "Filters tasks created before the given epoch timestamp (in milliseconds); queries up to the present if timestamp is not specified.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Maximum page size in the response. Maximum allowed value is 1000. Defaults to 100 items per page.") + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to use for this operation. If unspecified, inferred from token. Token must have permission to interact with this organization.") + cmd.Flags().StringVar(&trackingId, "tracking-id", "", "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. ") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + tasksCmd.AddCommand(cmd) + } + + { // update + var taskId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Short: "Update Task", + Long: `This API is to update a task. Represents both inbound tasks (originating from customer-facing channels) and outbound tasks (originating from contact center to customer-facing channel). Requires one of the following scopes 'cjp:user' or 'cloud-contact-center:pod_conv' for authorization.. For a list of possible response messages, see the Call Control API Guide.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PATCH", "/v1/tasks/{taskId}") + req.PathParam("taskId", taskId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&taskId, "task-id", "", "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task.") + cmd.MarkFlagRequired("task-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + tasksCmd.AddCommand(cmd) + } + + { // accept + var taskId string + cmd := &cobra.Command{ + Use: "accept", + Short: "Accept Task", + Long: `Access this endpoint when the user has to accept either an inbound or an outbound requests. The request can be social, a chat or an email. Requires one of the following scopes 'cjp:user' or 'cloud-contact-center:pod_conv' for authorization. For a list of possible response messages, see the [Call Control API Guide](/docs/contact-control-apis).`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v1/tasks/{taskId}/accept") + req.PathParam("taskId", taskId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&taskId, "task-id", "", "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task.") + cmd.MarkFlagRequired("task-id") + tasksCmd.AddCommand(cmd) + } + + { // end + var taskId string + cmd := &cobra.Command{ + Use: "end", + Short: "End Task", + Long: `Access this endpoint when the user has to end either an inbound or an outbound requests. Requires one of the following scopes 'cjp:user' or 'cloud-contact-center:pod_conv' for authorization. For a list of possible response messages, see the [Call Control API Guide](/docs/contact-control-apis).`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v1/tasks/{taskId}/end") + req.PathParam("taskId", taskId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&taskId, "task-id", "", "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task.") + cmd.MarkFlagRequired("task-id") + tasksCmd.AddCommand(cmd) + } + + { // wrap-up + var taskId string + var wrapUpReason string + var auxCodeId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "wrap-up", + Short: "Wrap Up Task", + Long: `Access this endpoint when the user has to wrap up a call. Requires one of the following scopes 'cjp:user' or 'cloud-contact-center:pod_conv' for authorization. For a list of possible response messages, see the [Call Control API Guide](/docs/contact-control-apis).`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v1/tasks/{taskId}/wrapup") + req.PathParam("taskId", taskId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("wrapUpReason", wrapUpReason) + req.BodyString("auxCodeId", auxCodeId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&taskId, "task-id", "", "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task.") + cmd.MarkFlagRequired("task-id") + cmd.Flags().StringVar(&wrapUpReason, "wrap-up-reason", "", "") + cmd.Flags().StringVar(&auxCodeId, "aux-code-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + tasksCmd.AddCommand(cmd) + } + + { // hold + var taskId string + var mediaResourceId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "hold", + Short: "Hold Task", + Long: `Access this endpoint when the user has to hold a call. When an user is in consulting state, the task will be put on hold. It is not applicable for chats and emails. Requires one of the following scopes 'cjp:user','cloud-contact-center:pod_conv' for authorization. For a list of possible response messages, see the [Call Control API Guide](/docs/contact-control-apis).`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v1/tasks/{taskId}/hold") + req.PathParam("taskId", taskId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("mediaResourceId", mediaResourceId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&taskId, "task-id", "", "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task.") + cmd.MarkFlagRequired("task-id") + cmd.Flags().StringVar(&mediaResourceId, "media-resource-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + tasksCmd.AddCommand(cmd) + } + + { // unhold + var taskId string + var mediaResourceId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "unhold", + Aliases: []string{"resume"}, + Short: "Unhold Task", + Long: `Access this endpoint when the user has to resume a call from hold. When an user is done consulting, the previously held interaction with the customer should be resumed. It is not applicable for chats and emails. Requires one of the following scopes 'cjp:user','cloud-contact-center:pod_conv' for authorization. For a list of possible response messages, see the [Call Control API Guide](/docs/contact-control-apis).`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v1/tasks/{taskId}/unhold") + req.PathParam("taskId", taskId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("mediaResourceId", mediaResourceId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&taskId, "task-id", "", "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task.") + cmd.MarkFlagRequired("task-id") + cmd.Flags().StringVar(&mediaResourceId, "media-resource-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + tasksCmd.AddCommand(cmd) + } + + { // reject + var taskId string + var mediaResourceId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "reject", + Short: "Reject Task", + Long: `Access this endpoint when the user has to reject a task. Once a task is rejected, the status of the user goes to idle from available. Requires one of the following scopes 'cjp:user' or 'cloud-contact-center:pod_conv' for authorization. For a list of possible response messages, see the [Call Control API Guide](/docs/contact-control-apis).`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v1/tasks/{taskId}/reject") + req.PathParam("taskId", taskId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("mediaResourceId", mediaResourceId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&taskId, "task-id", "", "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task.") + cmd.MarkFlagRequired("task-id") + cmd.Flags().StringVar(&mediaResourceId, "media-resource-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + tasksCmd.AddCommand(cmd) + } + + { // pause-recording + var taskId string + cmd := &cobra.Command{ + Use: "pause-recording", + Short: "Pause Recording Task", + Long: `When configured by the administrator, telephony tasks are often being recorded for various reasons. When an user is handling sensitive customer information, he/she might want to pause the recording and later on resume recording. For a list of possible response messages, see the [Call Control API Guide](/docs/contact-control-apis). Requires OAuth scope cjp:user. The authenticated user must have a UserProfile of type Agent to access this API.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v1/tasks/{taskId}/record/pause") + req.PathParam("taskId", taskId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&taskId, "task-id", "", "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task.") + cmd.MarkFlagRequired("task-id") + tasksCmd.AddCommand(cmd) + } + + { // resume-recording + var taskId string + var autoResumed bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "resume-recording", + Short: "Resume Recording Task", + Long: `When configured by the administrator, telephony tasks are often being recorded for various reasons. When an user is handling sensitive customer information, he/she might resume the recording after the pause. For a list of possible response messages, see the [Call Control API Guide](/docs/contact-control-apis). Requires OAuth scope cjp:user. The authenticated user must have a UserProfile of type Agent to access this API.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v1/tasks/{taskId}/record/resume") + req.PathParam("taskId", taskId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("autoResumed", autoResumed, cmd.Flags().Changed("auto-resumed")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&taskId, "task-id", "", "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task.") + cmd.MarkFlagRequired("task-id") + cmd.Flags().BoolVar(&autoResumed, "auto-resumed", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + tasksCmd.AddCommand(cmd) + } + + { // transfer + var taskId string + var to string + var destinationType string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "transfer", + Short: "Transfer Task", + Long: `Access this endpoint when the user has to transfer a call to another user. Requires one of the following scopes 'cjp:user' or 'cloud-contact-center:pod_conv' scope for authorization. For a list of possible response messages, see the [Call Control API Guide](/docs/contact-control-apis).`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v1/tasks/{taskId}/transfer") + req.PathParam("taskId", taskId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("to", to) + req.BodyString("destinationType", destinationType) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&taskId, "task-id", "", "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task.") + cmd.MarkFlagRequired("task-id") + cmd.Flags().StringVar(&to, "to", "", "") + cmd.Flags().StringVar(&destinationType, "destination-type", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + tasksCmd.AddCommand(cmd) + } + + { // consult-task + var taskId string + var to string + var destinationType string + var holdParticipants bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "consult-task", + Short: "Consult Task", + Long: `Access this endpoint when the user has to consult a call to another user. Requires one of the following scopes 'cjp:user' or 'cloud-contact-center:pod_conv' for authorization. For a list of possible response messages, see the [Call Control API Guide](/docs/contact-control-apis).`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v1/tasks/{taskId}/consult") + req.PathParam("taskId", taskId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("to", to) + req.BodyString("destinationType", destinationType) + req.BodyBool("holdParticipants", holdParticipants, cmd.Flags().Changed("hold-participants")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&taskId, "task-id", "", "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task.") + cmd.MarkFlagRequired("task-id") + cmd.Flags().StringVar(&to, "to", "", "") + cmd.Flags().StringVar(&destinationType, "destination-type", "", "") + cmd.Flags().BoolVar(&holdParticipants, "hold-participants", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + tasksCmd.AddCommand(cmd) + } + + { // consult-conference + var taskId string + var to string + var agentId string + var destinationType string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "consult-conference", + Short: "Consult Conference Task", + Long: `Access this endpoint when the user has to initiate a conference with the consulting user. Requires one of the following scopes 'cjp:user' or 'cloud-contact-center:pod_conv' for authorization. For a list of possible response messages, see the [Call Control API Guide](/docs/contact-control-apis).`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v1/tasks/{taskId}/consult/conference") + req.PathParam("taskId", taskId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("to", to) + req.BodyString("agentId", agentId) + req.BodyString("destinationType", destinationType) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&taskId, "task-id", "", "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task.") + cmd.MarkFlagRequired("task-id") + cmd.Flags().StringVar(&to, "to", "", "") + cmd.Flags().StringVar(&agentId, "agent-id", "", "") + cmd.Flags().StringVar(&destinationType, "destination-type", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + tasksCmd.AddCommand(cmd) + } + + { // consult-transfer + var taskId string + var to string + var destinationType string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "consult-transfer", + Short: "Consult Transfer Task", + Long: `Access this endpoint when the user has to transfer a call to the consulting user. Requires one of the following scopes 'cjp:user' or 'cloud-contact-center:pod_conv' for authorization. For a list of possible response messages, see the [Call Control API Guide](/docs/contact-control-apis).`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v1/tasks/{taskId}/consult/transfer") + req.PathParam("taskId", taskId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("to", to) + req.BodyString("destinationType", destinationType) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&taskId, "task-id", "", "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task.") + cmd.MarkFlagRequired("task-id") + cmd.Flags().StringVar(&to, "to", "", "") + cmd.Flags().StringVar(&destinationType, "destination-type", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + tasksCmd.AddCommand(cmd) + } + + { // consult-accept + var taskId string + cmd := &cobra.Command{ + Use: "consult-accept", + Short: "Consult Accept Task", + Long: `Access this endpoint when the user has to accept a call to the consulting user. Requires one of the following scopes 'cjp:user' or 'cloud-contact-center:pod_conv' for authorization. For a list of possible response messages, see the [Call Control API Guide](/docs/contact-control-apis).`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v1/tasks/{taskId}/consult/accept") + req.PathParam("taskId", taskId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&taskId, "task-id", "", "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task.") + cmd.MarkFlagRequired("task-id") + tasksCmd.AddCommand(cmd) + } + + { // assign + var taskId string + cmd := &cobra.Command{ + Use: "assign", + Short: "Assign Task", + Long: "Access this endpoint when users such as administrators, supervisors, or agents with an agent license need to assign tasks to themselves. Authorization requires the `cjp:user` scope. For a list of potential response messages, refer to the [Call Control API Guide](/docs/contact-control-apis).", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v1/tasks/{taskId}/assign") + req.PathParam("taskId", taskId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&taskId, "task-id", "", "The unique ID represents the task that the user want to assign.") + cmd.MarkFlagRequired("task-id") + tasksCmd.AddCommand(cmd) + } + + { // consult-end + var taskId string + var queueId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "consult-end", + Short: "Consult End Task", + Long: `Access this endpoint when the user has to end a call with the consulting user. Requires one of the following scopes 'cjp:user' or 'cloud-contact-center:pod_conv' for authorization. For a list of possible response messages, see the [Call Control API Guide](/docs/contact-control-apis).`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v1/tasks/{taskId}/consult/end") + req.PathParam("taskId", taskId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("queueId", queueId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&taskId, "task-id", "", "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task.") + cmd.MarkFlagRequired("task-id") + cmd.Flags().StringVar(&queueId, "queue-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + tasksCmd.AddCommand(cmd) + } + + { // exit-conference + var taskId string + cmd := &cobra.Command{ + Use: "exit-conference", + Short: "Exit Conference Task", + Long: `Access this endpoint when the user wants to exit from a conference call. Requires one of the following scopes 'cjp:user' or 'cloud-contact-center:pod_conv' for authorization. For a list of possible response messages, see the [Call Control API Guide](/docs/contact-control-apis).`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v1/tasks/{taskId}/conference/exit") + req.PathParam("taskId", taskId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&taskId, "task-id", "", "The taskId represents the task that the user is currently working on. It will be generated automatically during the creation of a new task.") + cmd.MarkFlagRequired("task-id") + tasksCmd.AddCommand(cmd) + } + + { // accept-preview + var campaignId string + var taskId string + cmd := &cobra.Command{ + Use: "accept-preview", + Short: "Accept Preview Task", + Long: `API to accept the preview campaign task offered to the agent.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v1/dialer/campaign/{campaignId}/preview-task/{taskId}/accept") + req.PathParam("campaignId", campaignId) + req.PathParam("taskId", taskId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&campaignId, "campaign-id", "", "The unique ID represents the campaign that the user is currently working on.") + cmd.MarkFlagRequired("campaign-id") + cmd.Flags().StringVar(&taskId, "task-id", "", "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task.") + cmd.MarkFlagRequired("task-id") + tasksCmd.AddCommand(cmd) + } + + { // skip-preview + var campaignId string + var taskId string + cmd := &cobra.Command{ + Use: "skip-preview", + Short: "Skip Preview Task", + Long: `API to skip the preview campaign task offered to the agent.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v1/dialer/campaign/{campaignId}/preview-task/{taskId}/skip") + req.PathParam("campaignId", campaignId) + req.PathParam("taskId", taskId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&campaignId, "campaign-id", "", "The unique ID represents the campaign that the user is currently working on.") + cmd.MarkFlagRequired("campaign-id") + cmd.Flags().StringVar(&taskId, "task-id", "", "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task.") + cmd.MarkFlagRequired("task-id") + tasksCmd.AddCommand(cmd) + } + + { // delete-preview + var campaignId string + var taskId string + cmd := &cobra.Command{ + Use: "delete-preview", + Short: "Remove Preview Task", + Long: `API to remove the preview campaign task offered to the agent`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v1/dialer/campaign/{campaignId}/preview-task/{taskId}/remove") + req.PathParam("campaignId", campaignId) + req.PathParam("taskId", taskId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&campaignId, "campaign-id", "", "The unique ID represents the campaign that the user is currently working on.") + cmd.MarkFlagRequired("campaign-id") + cmd.Flags().StringVar(&taskId, "task-id", "", "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task.") + cmd.MarkFlagRequired("task-id") + tasksCmd.AddCommand(cmd) + } + + { // append-message + var taskId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "append-message", + Aliases: []string{"update-2"}, + Short: "Append Task Message", + Long: "This feature is currently in Beta. Contact your Cisco team if you want access to this feature.\n\nAppends an inbound message to an existing `workItem` or `customMessaging` task. Use this API after the initial task has been created through Create Task. Requires `cjp:task_write` OAuth scope. For partner-initiated inbound message appends, the `cjp:task_write` scope must be present in the partner application's access token.\n\nOn success, returns a `202` response containing the append event identifier as `data.id`. Partners can use this identifier to correlate subsequent webhook delivery for the appended message.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v2/tasks/{taskId}/messages") + req.PathParam("taskId", taskId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&taskId, "task-id", "", "UUID of the existing task to which the message will be appended.") + cmd.MarkFlagRequired("task-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + tasksCmd.AddCommand(cmd) + } + + { // drop-participant-conference + var taskId string + var participantId string + cmd := &cobra.Command{ + Use: "drop-participant-conference", + Short: "Drop Participant From Conference", + Long: "Access this endpoint when the user needs to drop a specific participant from an active conference associated with a task. This operation removes only the targeted participant while keeping the remaining parties in the conference. Requires `cjp:user` scope for authorization. For a list of possible response messages, see the [Call Control API Guide](/docs/contact-control-apis)", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v1/tasks/{taskId}/conference/participants/{participantId}/drop") + req.PathParam("taskId", taskId) + req.PathParam("participantId", participantId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&taskId, "task-id", "", "The taskId represents the task that the user is currently working on. It will be generated automatically during the creation of a new task.") + cmd.MarkFlagRequired("task-id") + cmd.Flags().StringVar(&participantId, "participant-id", "", "The ID of the participant ( Agent / DN / Entry Point DN / Customer) to be dropped from the conference, maximum length 36 characters.") + cmd.MarkFlagRequired("participant-id") + tasksCmd.AddCommand(cmd) + } + + { // pause-digital + var taskId string + cmd := &cobra.Command{ + Use: "pause-digital", + Short: "Pause Task", + Long: "Access this endpoint when users such as administrators, supervisors, or agents with an agent license need to pause a task that cannot be handled immediately. This API is supported only for non-real-time digital channels, such as email, social, etc. Authorization requires the `cjp:user` scope. For a list of potential response messages, refer to the [Call Control API Guide](/docs/contact-control-apis).", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v1/tasks/{taskId}/pause") + req.PathParam("taskId", taskId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&taskId, "task-id", "", "The unique ID represents the interaction or task that the user wants to pause.") + cmd.MarkFlagRequired("task-id") + tasksCmd.AddCommand(cmd) + } + + { // resume-digital + var taskId string + cmd := &cobra.Command{ + Use: "resume-digital", + Short: "Resume Task", + Long: "Access this endpoint when users such as administrators, supervisors, or agents with an agent license need to resume a previously paused task. This API is supported only for non-real-time digital channels, such as email, social, etc. Authorization requires the `cjp:user` scope. For a list of potential response messages, refer to the [Call Control API Guide](/docs/contact-control-apis).", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v1/tasks/{taskId}/resume") + req.PathParam("taskId", taskId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&taskId, "task-id", "", "The unique ID represents the interaction or task that the user wants to resume.") + cmd.MarkFlagRequired("task-id") + tasksCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/team.go b/cmd/cc/team.go new file mode 100644 index 0000000..0b11481 --- /dev/null +++ b/cmd/cc/team.go @@ -0,0 +1,454 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + "strconv" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa +var _ = strings.Join + +var teamCmd = &cobra.Command{ + Use: "team", + Short: "Team commands", +} + +func init() { + cmd.CcCmd.AddCommand(teamCmd) + + { // list + var orgid string + var filter string + var attributes string + var search string + var page string + var pageSize string + var supervisorView string + var provisioningView string + var singleObjectResponse string + cmd := &cobra.Command{ + Use: "list", + Short: "List Teams", + Long: `Retrieve a list of Teams in a given organization. Note: Returning array fields in the List (Get All) API response is deprecated. To retrieve the complete resource with all fields, please use the Get-by-ID API instead.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/v2/team") + req.PathParam("orgid", orgid) + req.QueryParam("filter", filter) + req.QueryParam("attributes", attributes) + req.QueryParam("search", search) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + req.QueryParam("supervisorView", supervisorView) + req.QueryParam("provisioningView", provisioningView) + req.QueryParam("singleObjectResponse", singleObjectResponse) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&filter, "filter", "", "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, userIds, queueRankings, createdTime, lastUpdatedTime Use the userId field to filter teams associated with the provided user. The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. ") + cmd.Flags().StringVar(&attributes, "attributes", "", "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported. except (userIds, queueRankings)") + cmd.Flags().StringVar(&search, "search", "", "Filter data based on the search keyword.Supported search columns(name, description) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\",\"description\");value==\"Cisco\" ") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + cmd.Flags().StringVar(&supervisorView, "supervisor-view", "", "If set to true, the API will only return data that the user has access to, according to the User Profile.") + cmd.Flags().StringVar(&provisioningView, "provisioning-view", "", "If set to true, the API will only return data that the user has access to, according to the User Profile.") + cmd.Flags().StringVar(&singleObjectResponse, "single-object-response", "", "Specify whether to include array fields in the response. This query parameter should be used only when the response contains a single record. It is not supported for responses with multiple objects and throws an exception.") + teamCmd.AddCommand(cmd) + } + + { // create + var orgid string + var active string + var name string + var rankQueuesForTeam string + var siteId string + var teamStatus string + var teamType string + var organizationId string + var id string + var version string + var dialedNumber string + var capacity string + var desktopLayoutId string + var skillProfileId string + var multiMediaProfileId string + var userIds string + var description string + var systemDefault string + var queueRankings string + var createdTime string + var lastUpdatedTime string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a new Team", + Long: `Create a new Team in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/team") + req.PathParam("orgid", orgid) + req.QueryParam("active", active) + req.QueryParam("name", name) + req.QueryParam("rankQueuesForTeam", rankQueuesForTeam) + req.QueryParam("siteId", siteId) + req.QueryParam("teamStatus", teamStatus) + req.QueryParam("teamType", teamType) + req.QueryParam("organizationId", organizationId) + req.QueryParam("id", id) + req.QueryParam("version", version) + req.QueryParam("dialedNumber", dialedNumber) + req.QueryParam("capacity", capacity) + req.QueryParam("desktopLayoutId", desktopLayoutId) + req.QueryParam("skillProfileId", skillProfileId) + req.QueryParam("multiMediaProfileId", multiMediaProfileId) + req.QueryParam("userIds", userIds) + req.QueryParam("description", description) + req.QueryParam("systemDefault", systemDefault) + req.QueryParam("queueRankings", queueRankings) + req.QueryParam("createdTime", createdTime) + req.QueryParam("lastUpdatedTime", lastUpdatedTime) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&active, "active", "", "") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&rankQueuesForTeam, "rank-queues-for-team", "", "") + cmd.Flags().StringVar(&siteId, "site-id", "", "") + cmd.Flags().StringVar(&teamStatus, "team-status", "", "") + cmd.Flags().StringVar(&teamType, "team-type", "", "") + cmd.Flags().StringVar(&organizationId, "organization-id", "", "") + cmd.Flags().StringVar(&id, "id", "", "") + cmd.Flags().StringVar(&version, "version", "", "") + cmd.Flags().StringVar(&dialedNumber, "dialed-number", "", "") + cmd.Flags().StringVar(&capacity, "capacity", "", "") + cmd.Flags().StringVar(&desktopLayoutId, "desktop-layout-id", "", "") + cmd.Flags().StringVar(&skillProfileId, "skill-profile-id", "", "") + cmd.Flags().StringVar(&multiMediaProfileId, "multi-media-profile-id", "", "") + cmd.Flags().StringVar(&userIds, "user-ids", "", "") + cmd.Flags().StringVar(&description, "description", "", "") + cmd.Flags().StringVar(&systemDefault, "system-default", "", "") + cmd.Flags().StringVar(&queueRankings, "queue-rankings", "", "") + cmd.Flags().StringVar(&createdTime, "created-time", "", "") + cmd.Flags().StringVar(&lastUpdatedTime, "last-updated-time", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + teamCmd.AddCommand(cmd) + } + + { // bulk-save + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "bulk-save", + Short: "Bulk save Teams", + Long: `Create, Update or delete Teams in bulk in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/team/bulk") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + teamCmd.AddCommand(cmd) + } + + { // bulk-export + var orgid string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "bulk-export", + Short: "Bulk export Team(s)", + Long: `Export all Team(s) in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/team/bulk-export") + req.PathParam("orgid", orgid) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + teamCmd.AddCommand(cmd) + } + + { // purge-inactive + var orgid string + var nextStartId string + cmd := &cobra.Command{ + Use: "purge-inactive", + Short: "Purge inactive Teams", + Long: `Purge inactive Teams older than the configured interval for a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/team/purge-inactive-entities") + req.PathParam("orgid", orgid) + req.QueryParam("nextStartId", nextStartId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&nextStartId, "next-start-id", "", "This is the entity ID from which items for the next purge batch will be selected.") + teamCmd.AddCommand(cmd) + } + + { // get + var orgid string + var id string + cmd := &cobra.Command{ + Use: "get", + Aliases: []string{"get-id"}, + Short: "Get specific Team by ID", + Long: `Retrieve an existing Team by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/team/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Team") + cmd.MarkFlagRequired("id") + teamCmd.AddCommand(cmd) + } + + { // update + var orgid string + var id string + var active string + var name string + var rankQueuesForTeam string + var siteId string + var teamStatus string + var teamType string + var organizationId string + var version string + var dialedNumber string + var capacity string + var desktopLayoutId string + var skillProfileId string + var multiMediaProfileId string + var userIds string + var description string + var systemDefault string + var queueRankings string + var createdTime string + var lastUpdatedTime string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Aliases: []string{"update-id"}, + Short: "Update specific Team by ID", + Long: `Update an existing Team by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PUT", "/organization/{orgid}/team/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + req.QueryParam("active", active) + req.QueryParam("name", name) + req.QueryParam("rankQueuesForTeam", rankQueuesForTeam) + req.QueryParam("siteId", siteId) + req.QueryParam("teamStatus", teamStatus) + req.QueryParam("teamType", teamType) + req.QueryParam("organizationId", organizationId) + req.QueryParam("id", id) + req.QueryParam("version", version) + req.QueryParam("dialedNumber", dialedNumber) + req.QueryParam("capacity", capacity) + req.QueryParam("desktopLayoutId", desktopLayoutId) + req.QueryParam("skillProfileId", skillProfileId) + req.QueryParam("multiMediaProfileId", multiMediaProfileId) + req.QueryParam("userIds", userIds) + req.QueryParam("description", description) + req.QueryParam("systemDefault", systemDefault) + req.QueryParam("queueRankings", queueRankings) + req.QueryParam("createdTime", createdTime) + req.QueryParam("lastUpdatedTime", lastUpdatedTime) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Team.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&active, "active", "", "") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&rankQueuesForTeam, "rank-queues-for-team", "", "") + cmd.Flags().StringVar(&siteId, "site-id", "", "") + cmd.Flags().StringVar(&teamStatus, "team-status", "", "") + cmd.Flags().StringVar(&teamType, "team-type", "", "") + cmd.Flags().StringVar(&organizationId, "organization-id", "", "") + cmd.Flags().StringVar(&version, "version", "", "") + cmd.Flags().StringVar(&dialedNumber, "dialed-number", "", "") + cmd.Flags().StringVar(&capacity, "capacity", "", "") + cmd.Flags().StringVar(&desktopLayoutId, "desktop-layout-id", "", "") + cmd.Flags().StringVar(&skillProfileId, "skill-profile-id", "", "") + cmd.Flags().StringVar(&multiMediaProfileId, "multi-media-profile-id", "", "") + cmd.Flags().StringVar(&userIds, "user-ids", "", "") + cmd.Flags().StringVar(&description, "description", "", "") + cmd.Flags().StringVar(&systemDefault, "system-default", "", "") + cmd.Flags().StringVar(&queueRankings, "queue-rankings", "", "") + cmd.Flags().StringVar(&createdTime, "created-time", "", "") + cmd.Flags().StringVar(&lastUpdatedTime, "last-updated-time", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + teamCmd.AddCommand(cmd) + } + + { // delete + var orgid string + var id string + cmd := &cobra.Command{ + Use: "delete", + Aliases: []string{"delete-id"}, + Short: "Delete specific Team by ID", + Long: `Delete an existing Team by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/organization/{orgid}/team/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the Team.") + cmd.MarkFlagRequired("id") + teamCmd.AddCommand(cmd) + } + + { // list-references + var orgid string + var id string + var typeVal string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "list-references", + Short: "List references for a specific Team", + Long: `Retrieve a list of all entities that have reference to an existing Team by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/team/{id}/incoming-references") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + req.QueryParam("type", typeVal) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "ID of this contact center resource.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&typeVal, "type", "", "Entity type of the other entity that has a reference to this specific entity.") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + teamCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/templates.go b/cmd/cc/templates.go new file mode 100644 index 0000000..e6d3138 --- /dev/null +++ b/cmd/cc/templates.go @@ -0,0 +1,76 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var templatesCmd = &cobra.Command{ + Use: "templates", + Short: "Templates commands", +} + +func init() { + cmd.CcCmd.AddCommand(templatesCmd) + + { // list-flow + var typeVal string + cmd := &cobra.Command{ + Use: "list-flow", + Short: "List Flow Templates", + Long: "List available flow templates that can be used to create new flows.\n\nScope: `cjp:config_read`", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/templates") + req.QueryParam("type", typeVal) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&typeVal, "type", "", "Filter by flow or subflow.") + templatesCmd.AddCommand(cmd) + } + + { // get-flow + var id string + cmd := &cobra.Command{ + Use: "get-flow", + Short: "Get a Flow Template", + Long: "Retrieve a specific flow template by its ID. Use this to inspect a template's flow structure before creating a flow from it.\n\nScope: `cjp:config_read`", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/templates/{id}") + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "Template ID.") + cmd.MarkFlagRequired("id") + templatesCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/tenant_configuration.go b/cmd/cc/tenant_configuration.go new file mode 100644 index 0000000..ff330cb --- /dev/null +++ b/cmd/cc/tenant_configuration.go @@ -0,0 +1,286 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + "strconv" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa + +var tenantConfigurationCmd = &cobra.Command{ + Use: "tenant-configuration", + Short: "TenantConfiguration commands", +} + +func init() { + cmd.CcCmd.AddCommand(tenantConfigurationCmd) + + { // list + var orgid string + var filter string + var attributes string + var search string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "list", + Short: "List Tenant Configuration", + Long: `Retrieve a list of Tenant Configuration in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/v2/tenant-configuration") + req.PathParam("orgid", orgid) + req.QueryParam("filter", filter) + req.QueryParam("attributes", attributes) + req.QueryParam("search", search) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&filter, "filter", "", "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. ") + cmd.Flags().StringVar(&attributes, "attributes", "", "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported.") + cmd.Flags().StringVar(&search, "search", "", "Filter data based on the search keyword.Supported search columns(name) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\");value==\"Cisco\" ") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + tenantConfigurationCmd.AddCommand(cmd) + } + + { // get + var orgid string + var id string + cmd := &cobra.Command{ + Use: "get", + Short: "Get specific Tenant Configuration by ID", + Long: `Retrieve an existing Tenant Configuration by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/tenant-configuration/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "ID of this contact center resource.") + cmd.MarkFlagRequired("id") + tenantConfigurationCmd.AddCommand(cmd) + } + + { // update + var orgid string + var id string + var timeoutRonaChatSeconds int64 + var timeoutRonaEmailSeconds int64 + var timeoutRonaSocialSeconds int64 + var timeoutRonaTelephonySeconds int64 + var organizationId string + var version int64 + var outdialEnabled bool + var centralLogLevel string + var autoWrapUpInterval int64 + var localDiskLogLevel string + var dnOtherDescription string + var dnDefaultDescription string + var notRespondingToAvailableTimeout int64 + var heartBeatInterval int64 + var callVariablesSuppressed string + var endCallEnabled bool + var incidentReportingEnabled bool + var watsonAnalyticsPassword string + var systemRecoveryMsg string + var watsonAnalyticsBaseUrl string + var dnTargetStripChars string + var watsonAnalyticsUserName string + var dnOtherRegex string + var configurationVersion float64 + var callVariablesBaseUrl string + var lostConnectionRecoveryTimeout int64 + var diagnosticsPostUrl string + var dnDefaultRegex string + var apsUrl string + var endConsultEnabled bool + var rejectDuplicateDn bool + var dnTargetRegex string + var forceDefaultDn bool + var dnDefaultPrefix string + var privacyShieldVisible bool + var consoleLogLevel string + var dnTargetPrefix string + var autoBaseUrl bool + var dnOtherPrefix string + var dnDefaultStripChars string + var missedHeartBeatsAllowed int64 + var dnOtherStripChars string + var apsEnabled bool + var timeoutDesktopInactivityEnabled bool + var timeoutDesktopInactivityMins int64 + var timeoutRonaWorkItemSeconds int64 + var timeoutRonaCustomMessagingSeconds int64 + var systemDefault bool + var createdTime int64 + var lastUpdatedTime int64 + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Short: "Update specific Tenant Configuration by ID", + Long: `Update an existing Tenant Configuration by ID in a given organization. Requests authenticated with a user token can modify only fields designated as user-modifiable.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PUT", "/organization/{orgid}/tenant-configuration/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyInt("timeoutRonaChatSeconds", timeoutRonaChatSeconds, cmd.Flags().Changed("timeout-rona-chat-seconds")) + req.BodyInt("timeoutRonaEmailSeconds", timeoutRonaEmailSeconds, cmd.Flags().Changed("timeout-rona-email-seconds")) + req.BodyInt("timeoutRonaSocialSeconds", timeoutRonaSocialSeconds, cmd.Flags().Changed("timeout-rona-social-seconds")) + req.BodyInt("timeoutRonaTelephonySeconds", timeoutRonaTelephonySeconds, cmd.Flags().Changed("timeout-rona-telephony-seconds")) + req.BodyString("organizationId", organizationId) + req.BodyString("id", id) + req.BodyInt("version", version, cmd.Flags().Changed("version")) + req.BodyBool("outdialEnabled", outdialEnabled, cmd.Flags().Changed("outdial-enabled")) + req.BodyString("centralLogLevel", centralLogLevel) + req.BodyInt("autoWrapUpInterval", autoWrapUpInterval, cmd.Flags().Changed("auto-wrap-up-interval")) + req.BodyString("localDiskLogLevel", localDiskLogLevel) + req.BodyString("dnOtherDescription", dnOtherDescription) + req.BodyString("dnDefaultDescription", dnDefaultDescription) + req.BodyInt("notRespondingToAvailableTimeout", notRespondingToAvailableTimeout, cmd.Flags().Changed("not-responding-to-available-timeout")) + req.BodyInt("heartBeatInterval", heartBeatInterval, cmd.Flags().Changed("heart-beat-interval")) + req.BodyString("callVariablesSuppressed", callVariablesSuppressed) + req.BodyBool("endCallEnabled", endCallEnabled, cmd.Flags().Changed("end-call-enabled")) + req.BodyBool("incidentReportingEnabled", incidentReportingEnabled, cmd.Flags().Changed("incident-reporting-enabled")) + req.BodyString("watsonAnalyticsPassword", watsonAnalyticsPassword) + req.BodyString("systemRecoveryMsg", systemRecoveryMsg) + req.BodyString("watsonAnalyticsBaseUrl", watsonAnalyticsBaseUrl) + req.BodyString("dnTargetStripChars", dnTargetStripChars) + req.BodyString("watsonAnalyticsUserName", watsonAnalyticsUserName) + req.BodyString("dnOtherRegex", dnOtherRegex) + req.BodyFloat("configurationVersion", configurationVersion, cmd.Flags().Changed("configuration-version")) + req.BodyString("callVariablesBaseUrl", callVariablesBaseUrl) + req.BodyInt("lostConnectionRecoveryTimeout", lostConnectionRecoveryTimeout, cmd.Flags().Changed("lost-connection-recovery-timeout")) + req.BodyString("diagnosticsPostUrl", diagnosticsPostUrl) + req.BodyString("dnDefaultRegex", dnDefaultRegex) + req.BodyString("apsUrl", apsUrl) + req.BodyBool("endConsultEnabled", endConsultEnabled, cmd.Flags().Changed("end-consult-enabled")) + req.BodyBool("rejectDuplicateDn", rejectDuplicateDn, cmd.Flags().Changed("reject-duplicate-dn")) + req.BodyString("dnTargetRegex", dnTargetRegex) + req.BodyBool("forceDefaultDn", forceDefaultDn, cmd.Flags().Changed("force-default-dn")) + req.BodyString("dnDefaultPrefix", dnDefaultPrefix) + req.BodyBool("privacyShieldVisible", privacyShieldVisible, cmd.Flags().Changed("privacy-shield-visible")) + req.BodyString("consoleLogLevel", consoleLogLevel) + req.BodyString("dnTargetPrefix", dnTargetPrefix) + req.BodyBool("autoBaseUrl", autoBaseUrl, cmd.Flags().Changed("auto-base-url")) + req.BodyString("dnOtherPrefix", dnOtherPrefix) + req.BodyString("dnDefaultStripChars", dnDefaultStripChars) + req.BodyInt("missedHeartBeatsAllowed", missedHeartBeatsAllowed, cmd.Flags().Changed("missed-heart-beats-allowed")) + req.BodyString("dnOtherStripChars", dnOtherStripChars) + req.BodyBool("apsEnabled", apsEnabled, cmd.Flags().Changed("aps-enabled")) + req.BodyBool("timeoutDesktopInactivityEnabled", timeoutDesktopInactivityEnabled, cmd.Flags().Changed("timeout-desktop-inactivity-enabled")) + req.BodyInt("timeoutDesktopInactivityMins", timeoutDesktopInactivityMins, cmd.Flags().Changed("timeout-desktop-inactivity-mins")) + req.BodyInt("timeoutRonaWorkItemSeconds", timeoutRonaWorkItemSeconds, cmd.Flags().Changed("timeout-rona-work-item-seconds")) + req.BodyInt("timeoutRonaCustomMessagingSeconds", timeoutRonaCustomMessagingSeconds, cmd.Flags().Changed("timeout-rona-custom-messaging-seconds")) + req.BodyBool("systemDefault", systemDefault, cmd.Flags().Changed("system-default")) + req.BodyInt("createdTime", createdTime, cmd.Flags().Changed("created-time")) + req.BodyInt("lastUpdatedTime", lastUpdatedTime, cmd.Flags().Changed("last-updated-time")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "ID of this contact center resource.") + cmd.MarkFlagRequired("id") + cmd.Flags().Int64Var(&timeoutRonaChatSeconds, "timeout-rona-chat-seconds", 0, "") + cmd.Flags().Int64Var(&timeoutRonaEmailSeconds, "timeout-rona-email-seconds", 0, "") + cmd.Flags().Int64Var(&timeoutRonaSocialSeconds, "timeout-rona-social-seconds", 0, "") + cmd.Flags().Int64Var(&timeoutRonaTelephonySeconds, "timeout-rona-telephony-seconds", 0, "") + cmd.Flags().StringVar(&organizationId, "organization-id", "", "") + cmd.Flags().Int64Var(&version, "version", 0, "") + cmd.Flags().BoolVar(&outdialEnabled, "outdial-enabled", false, "") + cmd.Flags().StringVar(¢ralLogLevel, "central-log-level", "", "") + cmd.Flags().Int64Var(&autoWrapUpInterval, "auto-wrap-up-interval", 0, "") + cmd.Flags().StringVar(&localDiskLogLevel, "local-disk-log-level", "", "") + cmd.Flags().StringVar(&dnOtherDescription, "dn-other-description", "", "") + cmd.Flags().StringVar(&dnDefaultDescription, "dn-default-description", "", "") + cmd.Flags().Int64Var(¬RespondingToAvailableTimeout, "not-responding-to-available-timeout", 0, "") + cmd.Flags().Int64Var(&heartBeatInterval, "heart-beat-interval", 0, "") + cmd.Flags().StringVar(&callVariablesSuppressed, "call-variables-suppressed", "", "") + cmd.Flags().BoolVar(&endCallEnabled, "end-call-enabled", false, "") + cmd.Flags().BoolVar(&incidentReportingEnabled, "incident-reporting-enabled", false, "") + cmd.Flags().StringVar(&watsonAnalyticsPassword, "watson-analytics-password", "", "") + cmd.Flags().StringVar(&systemRecoveryMsg, "system-recovery-msg", "", "") + cmd.Flags().StringVar(&watsonAnalyticsBaseUrl, "watson-analytics-base-url", "", "") + cmd.Flags().StringVar(&dnTargetStripChars, "dn-target-strip-chars", "", "") + cmd.Flags().StringVar(&watsonAnalyticsUserName, "watson-analytics-user-name", "", "") + cmd.Flags().StringVar(&dnOtherRegex, "dn-other-regex", "", "") + cmd.Flags().Float64Var(&configurationVersion, "configuration-version", 0, "") + cmd.Flags().StringVar(&callVariablesBaseUrl, "call-variables-base-url", "", "") + cmd.Flags().Int64Var(&lostConnectionRecoveryTimeout, "lost-connection-recovery-timeout", 0, "") + cmd.Flags().StringVar(&diagnosticsPostUrl, "diagnostics-post-url", "", "") + cmd.Flags().StringVar(&dnDefaultRegex, "dn-default-regex", "", "") + cmd.Flags().StringVar(&apsUrl, "aps-url", "", "") + cmd.Flags().BoolVar(&endConsultEnabled, "end-consult-enabled", false, "") + cmd.Flags().BoolVar(&rejectDuplicateDn, "reject-duplicate-dn", false, "") + cmd.Flags().StringVar(&dnTargetRegex, "dn-target-regex", "", "") + cmd.Flags().BoolVar(&forceDefaultDn, "force-default-dn", false, "") + cmd.Flags().StringVar(&dnDefaultPrefix, "dn-default-prefix", "", "") + cmd.Flags().BoolVar(&privacyShieldVisible, "privacy-shield-visible", false, "") + cmd.Flags().StringVar(&consoleLogLevel, "console-log-level", "", "") + cmd.Flags().StringVar(&dnTargetPrefix, "dn-target-prefix", "", "") + cmd.Flags().BoolVar(&autoBaseUrl, "auto-base-url", false, "") + cmd.Flags().StringVar(&dnOtherPrefix, "dn-other-prefix", "", "") + cmd.Flags().StringVar(&dnDefaultStripChars, "dn-default-strip-chars", "", "") + cmd.Flags().Int64Var(&missedHeartBeatsAllowed, "missed-heart-beats-allowed", 0, "") + cmd.Flags().StringVar(&dnOtherStripChars, "dn-other-strip-chars", "", "") + cmd.Flags().BoolVar(&apsEnabled, "aps-enabled", false, "") + cmd.Flags().BoolVar(&timeoutDesktopInactivityEnabled, "timeout-desktop-inactivity-enabled", false, "") + cmd.Flags().Int64Var(&timeoutDesktopInactivityMins, "timeout-desktop-inactivity-mins", 0, "") + cmd.Flags().Int64Var(&timeoutRonaWorkItemSeconds, "timeout-rona-work-item-seconds", 0, "") + cmd.Flags().Int64Var(&timeoutRonaCustomMessagingSeconds, "timeout-rona-custom-messaging-seconds", 0, "") + cmd.Flags().BoolVar(&systemDefault, "system-default", false, "") + cmd.Flags().Int64Var(&createdTime, "created-time", 0, "") + cmd.Flags().Int64Var(&lastUpdatedTime, "last-updated-time", 0, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + tenantConfigurationCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/usage_reports.go b/cmd/cc/usage_reports.go new file mode 100644 index 0000000..b86f7a7 --- /dev/null +++ b/cmd/cc/usage_reports.go @@ -0,0 +1,187 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var usageReportsCmd = &cobra.Command{ + Use: "usage-reports", + Short: "UsageReports commands", +} + +func init() { + cmd.CcCmd.AddCommand(usageReportsCmd) + + { // list-resource-types + cmd := &cobra.Command{ + Use: "list-resource-types", + Short: "Get available resource types", + Long: `Returns the list of available resource types that can be used for report generation, along with available data dates.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/v1/usage-reports/resource-types") + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + usageReportsCmd.AddCommand(cmd) + } + + { // create + var resourceType string + var startDate string + var endDate string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create usage report", + Long: "Creates a new usage report for the specified organization, resource type,\nand date range. The report is generated asynchronously in the background.\n\nA single **usage report (reportId)** is always created for each request.\nDepending on the requested date range, the report may contain **one or more\nreport files**, each representing a sub-range of the overall time period.\n\nWhen the requested date range spans **more than 30 days**, the overall range\nis **automatically split by natural calendar months**, and **multiple report\nfiles** are generated under the same report.\n\n**Examples:**\n\n- Requested range: `2025-12-23` ~ `2026-03-20`\n - Generated result:\n - Report ID: single report\n - Report files:\n - `2025-12-23` ~ `2025-12-31`\n - `2026-01-01` ~ `2026-01-31`\n - `2026-02-01` ~ `2026-02-28`\n - `2026-03-01` ~ `2026-03-20`\n\n- Requested range: `2025-12-23` ~ `2026-01-21`\n - Generated result:\n - Report ID: single report\n - Report files:\n - `2025-12-23` ~ `2026-01-21`\n\n**Important Notes:**\n- Only one usage report can be processed at a time for the same organization.\n If there is an ongoing report, new report creation requests will be rejected.\n", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/v1/usage-reports") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("resourceType", resourceType) + req.BodyString("startDate", startDate) + req.BodyString("endDate", endDate) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&resourceType, "resource-type", "", "") + cmd.Flags().StringVar(&startDate, "start-date", "", "") + cmd.Flags().StringVar(&endDate, "end-date", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + usageReportsCmd.AddCommand(cmd) + } + + { // list + var resourceType string + var createdAfter string + var createdBefore string + cmd := &cobra.Command{ + Use: "list", + Short: "List usage reports", + Long: "Retrieves a list of usage reports for the organization. Supports optional filtering by resource type and creation date range.\n\nEach report has a `reportId` and may contain one or more generated files in `reportFiles[]`. For long date ranges, the service can split results by calendar month to avoid creating a single very large download. For example, a 12-month report can return up to 12 report files, and a 36-month report can return up to 36 report files.\n\nUse `reportId` to retrieve the overall report status, list the generated files, or delete the report. Use each file's `fileId` or `downloadUrl` to download that specific file. The download API does not accept `reportId`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/v1/usage-reports") + req.QueryParam("resourceType", resourceType) + req.QueryParam("createdAfter", createdAfter) + req.QueryParam("createdBefore", createdBefore) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&resourceType, "resource-type", "", "Filter by resource type") + cmd.Flags().StringVar(&createdAfter, "created-after", "", "Filter reports created after this timestamp (ISO 8601 format)") + cmd.Flags().StringVar(&createdBefore, "created-before", "", "Filter reports created before this timestamp (ISO 8601 format)") + usageReportsCmd.AddCommand(cmd) + } + + { // get + var reportId string + cmd := &cobra.Command{ + Use: "get", + Short: "Get usage report details", + Long: `Retrieves detailed information for a specific usage report.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/v1/usage-reports/{reportId}") + req.PathParam("reportId", reportId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&reportId, "report-id", "", "Usage report ID") + cmd.MarkFlagRequired("report-id") + usageReportsCmd.AddCommand(cmd) + } + + { // delete + var reportId string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete usage report", + Long: `Deletes the specified usage report and its associated file. This operation cannot be undone.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/v1/usage-reports/{reportId}") + req.Header("Accept", "*/*") + req.PathParam("reportId", reportId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&reportId, "report-id", "", "Usage report ID") + cmd.MarkFlagRequired("report-id") + usageReportsCmd.AddCommand(cmd) + } + + { // download-file + var fileId string + cmd := &cobra.Command{ + Use: "download-file", + Short: "Download usage report file", + Long: "Downloads one completed report file as a binary stream.\n\nUse the `fileId` returned in the report's `reportFiles` array. A `reportId` identifies the overall report and cannot be used with this endpoint. Usage Reports can cover up to 36 months of raw data, so large date ranges may be split into one file per calendar month. This keeps individual compressed files more manageable and avoids requiring customers to download a single very large file. If a report contains multiple files, call this endpoint once for each `fileId`.\n\nPassing a `reportId` to this endpoint returns `404` because the path parameter expects a file-level identifier.\n\nThe Developer Portal may not handle binary downloads reliably. Use Postman, curl, or a programmatic API client to download the file.\n\n**Note:** Both file and download URLs expire 7 days after report completion.\n", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/v1/usage-reports/{fileId}/download") + req.PathParam("fileId", fileId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&fileId, "file-id", "", "ID of the specific report file to download. Use fileId, not reportId.") + cmd.MarkFlagRequired("file-id") + usageReportsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/user_profiles.go b/cmd/cc/user_profiles.go new file mode 100644 index 0000000..5ef1bbd --- /dev/null +++ b/cmd/cc/user_profiles.go @@ -0,0 +1,359 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + "strconv" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa +var _ = strings.Join + +var userProfilesCmd = &cobra.Command{ + Use: "user-profiles", + Short: "UserProfiles commands", +} + +func init() { + cmd.CcCmd.AddCommand(userProfilesCmd) + + { // list + var orgid string + var filter string + var attributes string + var search string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "list", + Short: "List user profiles", + Long: `Retrieve a list of user profiles in a given organization. + Note: Returning array fields in the List (Get All) API response is deprecated. To retrieve the complete resource with all fields, please use the Get-by-ID API instead.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/v3/user-profile") + req.PathParam("orgid", orgid) + req.QueryParam("filter", filter) + req.QueryParam("attributes", attributes) + req.QueryParam("search", search) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&filter, "filter", "", "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, userProfileAppModules, entryPoints, sites, queues, teams, editableFolderIds, viewableFolderIds, nonViewableFolderIds, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. ") + cmd.Flags().StringVar(&attributes, "attributes", "", "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported. except (entryPoints,sites, queues, teams, userProfileAppModules,editableFolderIds, viewableFolderIds, nonViewableFolderIds)") + cmd.Flags().StringVar(&search, "search", "", "Filter data based on the search keyword.Supported search columns(name, profileType, description) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\",\"description\");value==\"Cisco\" ") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + userProfilesCmd.AddCommand(cmd) + } + + { // bulk-save + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "bulk-save", + Short: "Bulk save User Profiles", + Long: `Create, Update or delete user profiles in bulk in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/v3/user-profile/bulk") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userProfilesCmd.AddCommand(cmd) + } + + { // bulk-export + var orgid string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "bulk-export", + Short: "Bulk export User Profiles", + Long: `Export all user profiles in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/v3/user-profile/bulk-export") + req.PathParam("orgid", orgid) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + userProfilesCmd.AddCommand(cmd) + } + + { // purge-inactive + var orgid string + var nextStartId string + cmd := &cobra.Command{ + Use: "purge-inactive", + Short: "Purge inactive User Profile(s)", + Long: `Purge inactive User Profile(s) older than the configured interval for a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/user-profile/purge-inactive-entities") + req.PathParam("orgid", orgid) + req.QueryParam("nextStartId", nextStartId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&nextStartId, "next-start-id", "", "This is the entity ID from which items for the next purge batch with be selected.") + userProfilesCmd.AddCommand(cmd) + } + + { // get + var orgid string + var id string + var includeNames string + cmd := &cobra.Command{ + Use: "get", + Aliases: []string{"get-id"}, + Short: "Get specific User Profile by ID", + Long: `Retrieve an existing user profile by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/v3/user-profile/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + req.QueryParam("includeNames", includeNames) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the User Profile.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&includeNames, "include-names", "", "Flag to include resource names in the response.") + userProfilesCmd.AddCommand(cmd) + } + + { // update + var orgid string + var id string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Aliases: []string{"update-id"}, + Short: "Update specific User Profile by ID", + Long: `Update an existing user profile by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PUT", "/organization/{orgid}/v3/user-profile/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the User Profile.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userProfilesCmd.AddCommand(cmd) + } + + { // delete + var orgid string + var id string + cmd := &cobra.Command{ + Use: "delete", + Aliases: []string{"delete-id"}, + Short: "Delete specific User Profile by ID", + Long: `Delete an existing user profile by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/organization/{orgid}/v3/user-profile/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the User Profile.") + cmd.MarkFlagRequired("id") + userProfilesCmd.AddCommand(cmd) + } + + { // list-references + var orgid string + var id string + var typeVal string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "list-references", + Short: "List references for a specific User Profile", + Long: `Retrieve a list of all entities that have reference to an existing user profile by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/user-profile/{id}/incoming-references") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + req.QueryParam("type", typeVal) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "ID of this contact center resource.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&typeVal, "type", "", "Entity type of the other entity that has a reference to this specific entity.") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + userProfilesCmd.AddCommand(cmd) + } + + { // create + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a new User Profile", + Long: `Create a new user profile in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/v3/user-profile") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + userProfilesCmd.AddCommand(cmd) + } + + { // get-acl-id + var orgid string + var id string + var names string + cmd := &cobra.Command{ + Use: "get-acl-id", + Short: "Get specific User Profile ACL by ID", + Long: `Retrieve an existing User Profile ACL by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/v3/user-profile/{id}/acl") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + req.QueryParam("names", names) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the User Profile.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&names, "names", "", " Default all resources are returned in the ACL. If you want to filter the ACL by specific resources, provide a comma-separated list of resource names to filter the ACL. Ex: /url?names=site,team ") + userProfilesCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/users.go b/cmd/cc/users.go new file mode 100644 index 0000000..0a5586e --- /dev/null +++ b/cmd/cc/users.go @@ -0,0 +1,658 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + "strconv" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa +var _ = strings.Join + +var usersCmd = &cobra.Command{ + Use: "users", + Short: "Users commands", +} + +func init() { + cmd.CcCmd.AddCommand(usersCmd) + + { // list + var orgid string + var filter string + var attributes string + var search string + var page string + var pageSize string + var supervisorManagedAgentsOnly string + var singleObjectResponse string + var buddyTeamAgentsOnly string + var userInQueue string + var queueId string + var includeAimappingCount string + var includeDynamicSkillsLimitReached string + cmd := &cobra.Command{ + Use: "list", + Short: "List Users", + Long: `Retrieve a list of Users in a given organization. Note: Returning array fields in the List (Get All) API response is deprecated. To retrieve the complete resource with all fields, please use the Get-by-ID API instead.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/v2/user") + req.PathParam("orgid", orgid) + req.QueryParam("filter", filter) + req.QueryParam("attributes", attributes) + req.QueryParam("search", search) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + req.QueryParam("supervisorManagedAgentsOnly", supervisorManagedAgentsOnly) + req.QueryParam("singleObjectResponse", singleObjectResponse) + req.QueryParam("buddyTeamAgentsOnly", buddyTeamAgentsOnly) + req.QueryParam("userInQueue", userInQueue) + req.QueryParam("queueId", queueId) + req.QueryParam("includeAIMappingCount", includeAimappingCount) + req.QueryParam("includeDynamicSkillsLimitReached", includeDynamicSkillsLimitReached) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&filter, "filter", "", "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, xspVersion, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. ") + cmd.Flags().StringVar(&attributes, "attributes", "", "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported.") + cmd.Flags().StringVar(&search, "search", "", "Filter data based on the search keyword.Supported search columns(firstName, lastName, email) The examples below show some search queries - \"Cisco\" - field==\"firstName\";value==\"Cisco\" - fields=in=(\"firstName\",\"lastName\");value==\"Cisco\" ") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + cmd.Flags().StringVar(&supervisorManagedAgentsOnly, "supervisor-managed-agents-only", "", "If set to true, the API will return contact center enabled users based on the invoking supervisor user's user profile access rights to sites and teams.") + cmd.Flags().StringVar(&singleObjectResponse, "single-object-response", "", "Specify whether to include array fields in the response. This query parameter should be used only when the response contains a single record. It is not supported for responses with multiple objects and throws an exception.") + cmd.Flags().StringVar(&buddyTeamAgentsOnly, "buddy-team-agents-only", "", "If set to true, returns only users who are part of buddy teams without PBAC check.") + cmd.Flags().StringVar(&userInQueue, "user-in-queue", "", "Can be either assigned or unassigned. If passed, returns the users who are assigned or not assigned to an agent based queue managed by the supervisor.") + cmd.Flags().StringVar(&queueId, "queue-id", "", "Contact Service Queue ID for which the list of assigned or unassigned agents must be fetched.") + cmd.Flags().StringVar(&includeAimappingCount, "include-aimapping-count", "", "If set to true, the API response will include the count of each AI feature mapped to the entity.") + cmd.Flags().StringVar(&includeDynamicSkillsLimitReached, "include-dynamic-skills-limit-reached", "", "If true, includes whether each user has reached the dynamic skills assignment limit.") + usersCmd.AddCommand(cmd) + } + + { // bulk-partial-update + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "bulk-partial-update", + Short: "Bulk partial update Users", + Long: `Update some or all properties for multiple users in bulk for a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PATCH", "/organization/{orgid}/user/bulk") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + usersCmd.AddCommand(cmd) + } + + { // bulk-export + var orgid string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "bulk-export", + Short: "Bulk export User(s)", + Long: `Export all User(s) in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/user/bulk-export") + req.PathParam("orgid", orgid) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + usersCmd.AddCommand(cmd) + } + + { // get-ci-id + var orgid string + var id string + var includeUserProfile string + var includeNames string + var includeSkillDetails string + cmd := &cobra.Command{ + Use: "get-ci-id", + Short: "Get specific User by CI User ID", + Long: `Retrieve an existing User using the CI ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/v2/user/by-ci-user-id/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + req.QueryParam("includeUserProfile", includeUserProfile) + req.QueryParam("includeNames", includeNames) + req.QueryParam("includeSkillDetails", includeSkillDetails) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "CI ID of the User.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&includeUserProfile, "include-user-profile", "", "Specifiy whether to include user profile data") + cmd.Flags().StringVar(&includeNames, "include-names", "", "Specifiy whether to include resource collection names") + cmd.Flags().StringVar(&includeSkillDetails, "include-skill-details", "", "If set to true, the response includes skill information for each dynamic skill assignment.") + usersCmd.AddCommand(cmd) + } + + { // get-agents-matching-skill-requirements + var orgid string + var search string + var page string + var pageSize string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "get-agents-matching-skill-requirements", + Short: "Get the agents matching skill requirements criteria", + Long: `This API can be used to fetch the agents who match the provided skill requirements criteria. Maximum of 50 skill requirements criteria can be passed in the request.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/user/fetch-by-skill-requirements") + req.PathParam("orgid", orgid) + req.QueryParam("search", search) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&search, "search", "", "Filter data based on the search keyword.Supported search columns(firstName, lastName, email) The examples below show some search queries - \"Cisco\" - field==\"firstName\";value==\"Cisco\" - fields=in=(\"firstName\",\"lastName\");value==\"Cisco\" ") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + usersCmd.AddCommand(cmd) + } + + { // list-by-ids + var orgid string + var page string + var pageSize string + var userIds []string + var search string + var queueId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "list-by-ids", + Aliases: []string{"get-ids"}, + Short: "List Users with details", + Long: `Retrieve an existing User's first name, last name and email by list of IDs in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/user/fetch-user-details-by-ids") + req.PathParam("orgid", orgid) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("userIds", userIds) + req.BodyString("search", search) + req.BodyString("queueId", queueId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + cmd.Flags().StringSliceVar(&userIds, "user-ids", nil, "") + cmd.Flags().StringVar(&search, "search", "", "") + cmd.Flags().StringVar(&queueId, "queue-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + usersCmd.AddCommand(cmd) + } + + { // list-along-profile + var orgid string + cmd := &cobra.Command{ + Use: "list-along-profile", + Short: "List Users along with profile", + Long: `Retrieve a list of Users along with their User Profiles in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/user/with-user-profile") + req.PathParam("orgid", orgid) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + usersCmd.AddCommand(cmd) + } + + { // get-along-profile-id + var orgid string + var id string + cmd := &cobra.Command{ + Use: "get-along-profile-id", + Short: "Get specific User along with profile by ID", + Long: `Retrieve an existing User along with the corresponding User Profile by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/user/with-user-profile/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the User.") + cmd.MarkFlagRequired("id") + usersCmd.AddCommand(cmd) + } + + { // get + var orgid string + var id string + var includeCount string + var includeUserProfileType string + var includeSkillProfileAudit string + var includeReskillAuditInfo string + var includeSkillDetails string + var checkIfUserHasDynamicSkill string + var dynamicSkillId string + cmd := &cobra.Command{ + Use: "get", + Aliases: []string{"get-id"}, + Short: "Get specific User by ID", + Long: `Retrieve an existing Users by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/user/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + req.QueryParam("includeCount", includeCount) + req.QueryParam("includeUserProfileType", includeUserProfileType) + req.QueryParam("includeSkillProfileAudit", includeSkillProfileAudit) + req.QueryParam("includeReskillAuditInfo", includeReskillAuditInfo) + req.QueryParam("includeSkillDetails", includeSkillDetails) + req.QueryParam("checkIfUserHasDynamicSkill", checkIfUserHasDynamicSkill) + req.QueryParam("dynamicSkillId", dynamicSkillId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the User.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&includeCount, "include-count", "", "If set to true, the API response will include the count of each type of Contact Service Queue to which the user is assigned.") + cmd.Flags().StringVar(&includeUserProfileType, "include-user-profile-type", "", "If set to true, the API response includes the User Profile.") + cmd.Flags().StringVar(&includeSkillProfileAudit, "include-skill-profile-audit", "", "If set to true gives skill profile modification info.") + cmd.Flags().StringVar(&includeReskillAuditInfo, "include-reskill-audit-info", "", "If set to true gives skill profile and dynamic skill modification info.") + cmd.Flags().StringVar(&includeSkillDetails, "include-skill-details", "", "If set to true, the response includes skill information for each dynamic skill assignment.") + cmd.Flags().StringVar(&checkIfUserHasDynamicSkill, "check-if-user-has-dynamic-skill", "", "If set to true, checks if user has the specified dynamic skill") + cmd.Flags().StringVar(&dynamicSkillId, "dynamic-skill-id", "", "Dynamic skill ID to check if user has it assigned (required when checkIfUserHasDynamicSkill is true)") + usersCmd.AddCommand(cmd) + } + + { // update + var orgid string + var id string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Aliases: []string{"update-id"}, + Short: "Update specific User by ID", + Long: `Update an existing User by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PUT", "/organization/{orgid}/user/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the User.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + usersCmd.AddCommand(cmd) + } + + { // patch + var orgid string + var id string + var valueType string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "patch", + Aliases: []string{"patch-id"}, + Short: "Partially update User by ID", + Long: `Partially update User by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PATCH", "/organization/{orgid}/user/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("valueType", valueType) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the User.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&valueType, "value-type", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + usersCmd.AddCommand(cmd) + } + + { // list-references + var orgid string + var id string + var typeVal string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "list-references", + Short: "List references for a specific User", + Long: `Retrieve a list of all entities that have reference to an existing User by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/user/{id}/incoming-references") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + req.QueryParam("type", typeVal) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "ID of this contact center resource.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&typeVal, "type", "", "Entity type of the other entity that has a reference to this specific entity.") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + usersCmd.AddCommand(cmd) + } + + { // bulk-partial-update-dynamic-skills + var orgid string + var skillId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "bulk-partial-update-dynamic-skills", + Aliases: []string{"bulk-update-dynamic-skills"}, + Short: "Bulk partial update Users with dynamic skills", + Long: `Assign or unassign a dynamic skill to/from multiple users in bulk for a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PATCH", "/organization/{orgid}/user/bulk/update-dynamic-skill/{skillId}") + req.PathParam("orgid", orgid) + req.PathParam("skillId", skillId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&skillId, "skill-id", "", "Dynamic skill ID used for bulk update") + cmd.MarkFlagRequired("skill-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + usersCmd.AddCommand(cmd) + } + + { // get-dynamic-skill-id + var orgid string + var skillId string + var search string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "get-dynamic-skill-id", + Short: "Get users by dynamic skill ID", + Long: `Fetches all users assigned to a specific dynamic skill with search and pagination support. Returns user details with the specific dynamic skill value.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/user/by-dynamic-skill-id/{skillId}") + req.PathParam("orgid", orgid) + req.PathParam("skillId", skillId) + req.QueryParam("search", search) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&skillId, "skill-id", "", "The dynamic skill ID to fetch users for") + cmd.MarkFlagRequired("skill-id") + cmd.Flags().StringVar(&search, "search", "", "Filter data based on the search keyword.Supported search columns(firstName, lastName, email, value) The examples below show some search queries - \"Cisco\" ") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + usersCmd.AddCommand(cmd) + } + + { // reskill-agents + var orgid string + var id string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "reskill-agents", + Short: "Reskill Agents", + Long: `Reskill agents by assigning or unassigning skills.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PATCH", "/organization/{orgid}/user/{id}/reskill") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the User.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + usersCmd.AddCommand(cmd) + } + + { // list-by-call-monitoring-config + var orgid string + var id string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "list-by-call-monitoring-config", + Aliases: []string{"list-call-monitoring-id"}, + Short: "List users by call monitoring id", + Long: `Fetch paginated users associated to the selected call monitoring team filters while enforcing team ACL.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/user/by-call-monitoring-id/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "Resource ID of the call monitoring.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + usersCmd.AddCommand(cmd) + } + +} diff --git a/cmd/cc/work_types.go b/cmd/cc/work_types.go new file mode 100644 index 0000000..6e7f3d9 --- /dev/null +++ b/cmd/cc/work_types.go @@ -0,0 +1,373 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package cc + +import ( + "fmt" + "strconv" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa + +var workTypesCmd = &cobra.Command{ + Use: "work-types", + Short: "WorkTypes commands", +} + +func init() { + cmd.CcCmd.AddCommand(workTypesCmd) + + { // create + var orgid string + var active bool + var name string + var workTypeCode string + var organizationId string + var id string + var version int64 + var description string + var systemDefault bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a new Work Type", + Long: `Create a new Work Type in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/work-type") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("active", active, cmd.Flags().Changed("active")) + req.BodyString("name", name) + req.BodyString("workTypeCode", workTypeCode) + req.BodyString("organizationId", organizationId) + req.BodyString("id", id) + req.BodyInt("version", version, cmd.Flags().Changed("version")) + req.BodyString("description", description) + req.BodyBool("systemDefault", systemDefault, cmd.Flags().Changed("system-default")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().BoolVar(&active, "active", false, "") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&workTypeCode, "work-type-code", "", "") + cmd.Flags().StringVar(&organizationId, "organization-id", "", "") + cmd.Flags().StringVar(&id, "id", "", "") + cmd.Flags().Int64Var(&version, "version", 0, "") + cmd.Flags().StringVar(&description, "description", "", "") + cmd.Flags().BoolVar(&systemDefault, "system-default", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workTypesCmd.AddCommand(cmd) + } + + { // bulk-save + var orgid string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "bulk-save", + Short: "Bulk save Work Type(s)", + Long: `Create, Update or delete Work Type(s) in bulk in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/work-type/bulk") + req.PathParam("orgid", orgid) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workTypesCmd.AddCommand(cmd) + } + + { // bulk-export + var orgid string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "bulk-export", + Short: "Bulk export Work Type(s)", + Long: `Export all Work Type(s) in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/work-type/bulk-export") + req.PathParam("orgid", orgid) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + workTypesCmd.AddCommand(cmd) + } + + { // purge-inactive + var orgid string + var nextStartId string + cmd := &cobra.Command{ + Use: "purge-inactive", + Short: "Purge inactive Work Type(s)", + Long: `Purge inactive Work Type(s) older than the configured interval for a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "POST", "/organization/{orgid}/work-type/purge-inactive-entities") + req.PathParam("orgid", orgid) + req.QueryParam("nextStartId", nextStartId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&nextStartId, "next-start-id", "", "This is the entity ID from which items for the next purge batch with be selected.") + workTypesCmd.AddCommand(cmd) + } + + { // get + var orgid string + var id string + cmd := &cobra.Command{ + Use: "get", + Aliases: []string{"get-id"}, + Short: "Get specific Work Type by ID", + Long: `Retrieve an existing Work Type by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/work-type/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "ID of the work_type.") + cmd.MarkFlagRequired("id") + workTypesCmd.AddCommand(cmd) + } + + { // update + var orgid string + var id string + var active bool + var name string + var workTypeCode string + var organizationId string + var version int64 + var description string + var systemDefault bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Aliases: []string{"update-id"}, + Short: "Update specific Work Type by ID", + Long: `Update an existing Work Type by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "PUT", "/organization/{orgid}/work-type/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("active", active, cmd.Flags().Changed("active")) + req.BodyString("name", name) + req.BodyString("workTypeCode", workTypeCode) + req.BodyString("organizationId", organizationId) + req.BodyString("id", id) + req.BodyInt("version", version, cmd.Flags().Changed("version")) + req.BodyString("description", description) + req.BodyBool("systemDefault", systemDefault, cmd.Flags().Changed("system-default")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "ID of the work_type.") + cmd.MarkFlagRequired("id") + cmd.Flags().BoolVar(&active, "active", false, "") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&workTypeCode, "work-type-code", "", "") + cmd.Flags().StringVar(&organizationId, "organization-id", "", "") + cmd.Flags().Int64Var(&version, "version", 0, "") + cmd.Flags().StringVar(&description, "description", "", "") + cmd.Flags().BoolVar(&systemDefault, "system-default", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workTypesCmd.AddCommand(cmd) + } + + { // delete + var orgid string + var id string + cmd := &cobra.Command{ + Use: "delete", + Aliases: []string{"delete-id"}, + Short: "Delete specific Work Type by ID", + Long: `Delete an existing Work Type by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "DELETE", "/organization/{orgid}/work-type/{id}") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "ID of the work_type.") + cmd.MarkFlagRequired("id") + workTypesCmd.AddCommand(cmd) + } + + { // list-references + var orgid string + var id string + var typeVal string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "list-references", + Short: "List references for a specific Work Type", + Long: `Retrieve a list of all entities that have reference to an existing Work Type by ID in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/work-type/{id}/incoming-references") + req.PathParam("orgid", orgid) + req.PathParam("id", id) + req.QueryParam("type", typeVal) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&id, "id", "", "ID of this contact center resource.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&typeVal, "type", "", "Entity type of the other entity that has a reference to this specific entity.") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + workTypesCmd.AddCommand(cmd) + } + + { // list + var orgid string + var filter string + var attributes string + var search string + var page string + var pageSize string + cmd := &cobra.Command{ + Use: "list", + Short: "List Work Type(s)", + Long: `Retrieve a list of Work Type(s) in a given organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CcBaseURL, "GET", "/organization/{orgid}/v2/work-type") + req.PathParam("orgid", orgid) + req.QueryParam("filter", filter) + req.QueryParam("attributes", attributes) + req.QueryParam("search", search) + req.QueryParam("page", page) + req.QueryParam("pageSize", pageSize) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(false) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgid, "orgid", "", "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.") + cmd.MarkFlagRequired("orgid") + cmd.Flags().StringVar(&filter, "filter", "", "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain space, and if so kindly bound it with quotes to apply filter. ") + cmd.Flags().StringVar(&attributes, "attributes", "", "Specify the attributes to be returned.Default all attributes are returned along with specified columns. All Attributes are supported") + cmd.Flags().StringVar(&search, "search", "", "Filter data based on the search keyword.Supported search columns(name) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\");value==\"Cisco\" ") + cmd.Flags().StringVar(&page, "page", "", "Defines the number of displayed page. The page number starts from 0.") + cmd.Flags().StringVar(&pageSize, "page-size", "", "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size.") + workTypesCmd.AddCommand(cmd) + } + +} diff --git a/cmd/config_cmd.go b/cmd/config_cmd.go index b8cd740..ea42d7e 100644 --- a/cmd/config_cmd.go +++ b/cmd/config_cmd.go @@ -10,7 +10,7 @@ import ( "github.com/spf13/cobra" ) -const configKeys = "client-id, client-secret, scopes, read-only-scopes, region, cc-region" +const configKeys = "client-id, client-secret, scopes, read-only-scopes, region" var configCmd = &cobra.Command{ Use: "config", @@ -58,11 +58,6 @@ var configSetCmd = &cobra.Command{ return err } cfg.Region = config.Region() - case "cc-region": - if err := setCCRegion(value); err != nil { - return err - } - cfg.CCRegion = config.CCRegion() default: return fmt.Errorf("unknown config key: %s (valid: %s)", key, configKeys) } @@ -134,12 +129,6 @@ var configGetCmd = &cobra.Command{ } else { fmt.Println("us (default)") } - case "cc-region": - if cfg.CCRegion != "" { - fmt.Printf("%s (custom)\n", cfg.CCRegion) - } else { - fmt.Println("us1 (default)") - } default: return fmt.Errorf("unknown config key: %s (valid: %s)", key, configKeys) } diff --git a/cmd/device/commands.go b/cmd/device/commands.go deleted file mode 100644 index acb416f..0000000 --- a/cmd/device/commands.go +++ /dev/null @@ -1,9 +0,0 @@ -// Package device publishes the Webex Device API commands. -package device - -import ( - cmd "github.com/Cloverhound/webex-cli/cmd" - "github.com/Cloverhound/webex-cli/internal/apicmd" -) - -var _ = apicmd.Register(cmd.DeviceCmd, "device") diff --git a/cmd/device/device_call.go b/cmd/device/device_call.go new file mode 100644 index 0000000..b72494e --- /dev/null +++ b/cmd/device/device_call.go @@ -0,0 +1,2159 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package device + +import ( + "fmt" + "strconv" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa +var _ = strings.Join + +var deviceCallCmd = &cobra.Command{ + Use: "device-call", + Short: "DeviceCall commands", +} + +func init() { + cmd.DeviceCmd.AddCommand(deviceCallCmd) + + { // get-members + var deviceId string + var orgId string + cmd := &cobra.Command{ + Use: "get-members", + Short: "Get Device Members", + Long: "Get the list of all the members of the device including primary and secondary users.\n\nA device member can be either a person or a workspace. An admin can access the list of member details, modify member details and\nsearch for available members on a device.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/devices/{deviceId}/members") + req.PathParam("deviceId", deviceId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&deviceId, "device-id", "", "Unique identifier for the device.") + cmd.MarkFlagRequired("device-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieves the list of all members of the device in this organization.") + deviceCallCmd.AddCommand(cmd) + } + + { // update-members + var deviceId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-members", + Short: "Update Members on the device", + Long: "Modify member details on the device.\n\nA device member can be either a person, virtual line or a workspace. An admin can access the list of member details, modify member details and\nsearch for available members on a device.\n\nModifying members on the device requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/devices/{deviceId}/members") + req.PathParam("deviceId", deviceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&deviceId, "device-id", "", "Unique identifier for the device.") + cmd.MarkFlagRequired("device-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Modify members on the device in this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // search-members + var deviceId string + var orgId string + var start string + var max string + var memberName string + var phoneNumber string + var locationId string + var extension string + var usageType string + var order string + cmd := &cobra.Command{ + Use: "search-members", + Short: "Search Members", + Long: "Search members that can be assigned to the device.\n\nA device member can be either a person or a workspace. A admin can access the list of member details, modify member details and\nsearch for available members on a device.\n\nThis requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/devices/{deviceId}/availableMembers") + req.PathParam("deviceId", deviceId) + req.QueryParam("orgId", orgId) + req.QueryParam("start", start) + req.QueryParam("max", max) + req.QueryParam("memberName", memberName) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("locationId", locationId) + req.QueryParam("extension", extension) + req.QueryParam("usageType", usageType) + req.QueryParam("order", order) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&deviceId, "device-id", "", "Unique identifier for the device.") + cmd.MarkFlagRequired("device-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieves the list of available members on the device in this organization.") + cmd.Flags().StringVar(&start, "start", "", "Specifies the offset from the first result that you want to fetch.") + cmd.Flags().StringVar(&max, "max", "", "Specifies the maximum number of records that you want to fetch.") + cmd.Flags().StringVar(&memberName, "member-name", "", "Search (Contains) numbers based on member name.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Search (Contains) based on number.") + cmd.Flags().StringVar(&locationId, "location-id", "", "Unique identifier for the location.") + cmd.Flags().StringVar(&extension, "extension", "", "Search (Contains) based on extension.") + cmd.Flags().StringVar(&usageType, "usage-type", "", "Search for members eligible to become the owner of the device, or share line on the device.") + cmd.Flags().StringVar(&order, "order", "", "Sort the list of available members on the device in ascending order by name, use either last name `lname` or first name `fname`. Default: last name in ascending order.") + deviceCallCmd.AddCommand(cmd) + } + + { // apply-changes + var deviceId string + var orgId string + cmd := &cobra.Command{ + Use: "apply-changes", + Short: "Apply Changes for a specific device", + Long: "Issues request to the device to download and apply changes to the configuration.\n\nApplying changes for a specific device requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/devices/{deviceId}/actions/applyChanges/invoke") + req.PathParam("deviceId", deviceId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&deviceId, "device-id", "", "Unique identifier for the device.") + cmd.MarkFlagRequired("device-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Apply changes for a device in this organization.") + deviceCallCmd.AddCommand(cmd) + } + + { // get-settings + var deviceId string + var orgId string + var deviceModel string + cmd := &cobra.Command{ + Use: "get-settings", + Short: "Get Device Settings", + Long: "Get override settings for a device.\n\nDevice settings lists all the applicable settings for MPP, ATA and Wifi devices at the device level. An admin can also modify the settings. DECT devices do not support settings at the device level.\n\nThis requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/devices/{deviceId}/settings") + req.PathParam("deviceId", deviceId) + req.QueryParam("orgId", orgId) + req.QueryParam("deviceModel", deviceModel) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&deviceId, "device-id", "", "Unique identifier for the device.") + cmd.MarkFlagRequired("device-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Settings on the device in this organization.") + cmd.Flags().StringVar(&deviceModel, "device-model", "", "The model type of the device. The corresponding device model display name sometimes called the product name, can also be used to specify the model.") + deviceCallCmd.AddCommand(cmd) + } + + { // update-settings + var deviceId string + var orgId string + var deviceModel string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-settings", + Short: "Update device settings", + Long: "Modify override settings for a device.\n\nDevice settings list all the applicable settings for an MPP and an ATA devices at the device level. Admins can also modify the settings. NOTE: DECT devices do not support settings at the device level.\n\nUpdating settings on the device requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/devices/{deviceId}/settings") + req.PathParam("deviceId", deviceId) + req.QueryParam("orgId", orgId) + req.QueryParam("deviceModel", deviceModel) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&deviceId, "device-id", "", "Unique identifier for the device.") + cmd.MarkFlagRequired("device-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization in which the device resides..") + cmd.Flags().StringVar(&deviceModel, "device-model", "", "The model type of the device. The corresponding device model display name sometimes called the product name, can also be used to specify the model.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // get-location-settings + var locationId string + var orgId string + cmd := &cobra.Command{ + Use: "get-location-settings", + Short: "Get Location Device Settings", + Long: "Get device override settings for a location.\n\nThis requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/locations/{locationId}/devices/settings") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Unique identifier for the location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization in which the device resides.") + deviceCallCmd.AddCommand(cmd) + } + + { // get-webex-calling + var deviceId string + var orgId string + cmd := &cobra.Command{ + Use: "get-webex-calling", + Short: "Get Webex Calling Device Details", + Long: "
Not supported for Webex for Government (FedRAMP)
\n\nRetrieves Webex Calling device details that include information needed for third-party device management.\n\nWebex calling devices are associated with a specific user Workspace or Virtual Line. Webex Calling devices share the location with the entity that owns them.\n\nPerson or workspace to which the device is assigned. Its fields point to a primary line/port of the device.\n\nRequires a full, location, user, or read-only admin auth token with the scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/devices/{deviceId}") + req.PathParam("deviceId", deviceId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&deviceId, "device-id", "", "Unique identifier for the device.") + cmd.MarkFlagRequired("device-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the device resides.") + deviceCallCmd.AddCommand(cmd) + } + + { // update-third-party + var deviceId string + var orgId string + var sipPassword string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-third-party", + Short: "Update Third Party Device", + Long: "
Not supported for Webex for Government (FedRAMP)
\n\nModify a device's `sipPassword`.\n\nUpdating `sipPassword` on the device requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/devices/{deviceId}") + req.PathParam("deviceId", deviceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("sipPassword", sipPassword) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&deviceId, "device-id", "", "Unique identifier for the device.") + cmd.MarkFlagRequired("device-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "ID of the organization in which the device resides.") + cmd.Flags().StringVar(&sipPassword, "sip-password", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // get-person + var personId string + var orgId string + cmd := &cobra.Command{ + Use: "get-person", + Short: "Get Person Devices", + Long: "Get all devices for a person.\n\nThis requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/{personId}/devices") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Person for whom to retrieve devices.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization to which the person belongs.") + deviceCallCmd.AddCommand(cmd) + } + + { // update-hoteling-settings-person-primary + var personId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-hoteling-settings-person-primary", + Short: "Modify Hoteling Settings for a Person's Primary Devices", + Long: "Modify hoteling login configuration on a person's Webex Calling Devices which are in effect when the device is the user's primary device and device type is PRIMARY. To view the current hoteling login settings, see the `hoteling` field in [Get Person Devices](/docs/api/v1/device-call-settings/get-person-devices).\n\nModifying devices for a person requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/{personId}/devices/settings/hoteling") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "ID of the person associated with the device.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization to which the person belongs.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // get-workspace + var workspaceId string + var orgId string + cmd := &cobra.Command{ + Use: "get-workspace", + Short: "Get Workspace Devices", + Long: "Get all devices for a workspace.\n\nThis requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/workspaces/{workspaceId}/devices") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "ID of the workspace for which to retrieve devices.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization to which the workspace belongs.") + deviceCallCmd.AddCommand(cmd) + } + + { // update-workspace + var workspaceId string + var orgId string + var enabled bool + var limitGuestUse bool + var guestHoursLimit int64 + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-workspace", + Short: "Modify Workspace Devices", + Long: "Modify devices for a workspace.\n\nModifying devices for a workspace requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/workspaces/{workspaceId}/devices") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("enabled", enabled, cmd.Flags().Changed("enabled")) + req.BodyBool("limitGuestUse", limitGuestUse, cmd.Flags().Changed("limit-guest-use")) + req.BodyInt("guestHoursLimit", guestHoursLimit, cmd.Flags().Changed("guest-hours-limit")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "ID of the workspace for which to modify devices.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization to which the workspace belongs.") + cmd.Flags().BoolVar(&enabled, "enabled", false, "") + cmd.Flags().BoolVar(&limitGuestUse, "limit-guest-use", false, "") + cmd.Flags().Int64Var(&guestHoursLimit, "guest-hours-limit", 0, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // list-supported + var orgId string + var allowConfigureLayoutEnabled string + var typeVal string + cmd := &cobra.Command{ + Use: "list-supported", + Short: "Read the List of Supported Devices", + Long: "Gets the list of supported devices for an organization.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/supportedDevices") + req.QueryParam("orgId", orgId) + req.QueryParam("allowConfigureLayoutEnabled", allowConfigureLayoutEnabled) + req.QueryParam("type", typeVal) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List supported devices for an organization.") + cmd.Flags().StringVar(&allowConfigureLayoutEnabled, "allow-configure-layout-enabled", "", "List supported devices that allow the user to configure the layout.") + cmd.Flags().StringVar(&typeVal, "type", "", "List supported devices of a specific type. To excluded device types from a request or query, add `type=not:DEVICE_TYPE`. For example, `type=not:MPP`.") + deviceCallCmd.AddCommand(cmd) + } + + { // get-override-settings + var orgId string + cmd := &cobra.Command{ + Use: "get-override-settings", + Short: "Read the device override settings for a organization", + Long: "Get device override settings for an organization.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/devices/settings") + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List supported devices for an organization.") + deviceCallCmd.AddCommand(cmd) + } + + { // create-line-key-template + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-line-key-template", + Short: "Create a Line Key Template", + Long: "Create a Line Key Template in this organization.\n\nLine Keys, also known as Programmable Line Keys (PLK), are the keys found on either side of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows customers to create a `Line Key Template` for a device model.\n\nCreating a Line Key Template requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/devices/lineKeyTemplates") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization to which the line key template belongs.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // list-line-key-templates + var orgId string + cmd := &cobra.Command{ + Use: "list-line-key-templates", + Short: "Read the list of Line Key Templates", + Long: "List all Line Key Templates available for this organization.\n\nLine Keys also known as Programmable Line Keys (PLK) are the keys found on either sides of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to retrieve the list of Line Key Templates that are available for the organization.\n\nRetrieving this list requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/devices/lineKeyTemplates") + req.QueryParam("orgId", orgId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List line key templates for this organization.") + deviceCallCmd.AddCommand(cmd) + } + + { // get-line-key-template + var templateId string + var orgId string + cmd := &cobra.Command{ + Use: "get-line-key-template", + Short: "Get details of a Line Key Template", + Long: "Get detailed information about a Line Key Template by template ID in an organization.\n\nLine Keys, also known as Programmable Line Keys (PLK), are the keys found on either side of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to retrieve a line key template by its ID in an organization.\n\nRetrieving a line key template requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/devices/lineKeyTemplates/{templateId}") + req.PathParam("templateId", templateId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&templateId, "template-id", "", "Get line key template for this template ID.") + cmd.MarkFlagRequired("template-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve a line key template for this organization.") + deviceCallCmd.AddCommand(cmd) + } + + { // update-line-key-template + var templateId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-line-key-template", + Short: "Modify a Line Key Template", + Long: "Modify a Line Key Template by its template ID in an organization.\n\nLine Keys, also known as Programmable Line Keys (PLK), are the keys found on either side of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to modify an existing Line Key Template by its ID in an organization.\n\nModifying an existing Line Key Template requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/devices/lineKeyTemplates/{templateId}") + req.PathParam("templateId", templateId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&templateId, "template-id", "", "Modify line key template with this template ID.") + cmd.MarkFlagRequired("template-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Modify a line key template for this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // delete-line-key-template + var templateId string + var orgId string + cmd := &cobra.Command{ + Use: "delete-line-key-template", + Short: "Delete a Line Key Template", + Long: "Delete a Line Key Template by its template ID in an organization.\n\nLine Keys also known as Programmable Line Keys (PLK) are the keys found on either sides of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to delete an existing Line Key Templates by its ID in an organization.\n\nDeleting an existing line key template requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/devices/lineKeyTemplates/{templateId}") + req.PathParam("templateId", templateId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&templateId, "template-id", "", "Delete line key template with this template ID.") + cmd.MarkFlagRequired("template-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Delete a line key template for this organization.") + deviceCallCmd.AddCommand(cmd) + } + + { // preview-apply-line-key-template + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "preview-apply-line-key-template", + Short: "Preview Apply Line Key Template", + Long: "Preview the number of devices that will be affected by the application of a Line Key Template or when resetting devices to their factory Line Key settings.\n\nLine Keys, also known as Programmable Line Keys (PLK), are the keys found on either side of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to preview the number of devices that will be affected if a customer were to apply a Line Key Template or apply factory default Line Key settings to devices.\n\nRetrieving the number of devices affected requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/devices/actions/previewApplyLineKeyTemplate/invoke") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Preview Line Key Template for this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // apply-line-key-template + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "apply-line-key-template", + Short: "Apply a Line Key Template", + Long: "Apply a Line Key Template or reset devices to their factory Line Key settings.\n\nLine Keys, also known as Programmable Line Keys (PLK), are the keys found on either side of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to apply a line key template or apply factory default Line Key settings to devices in a set of locations or across all locations in the organization.\n\nApplying a Line Key Template or resetting devices to their default Line Key configuration requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/jobs/devices/applyLineKeyTemplate") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Apply Line Key Template for this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // list-apply-line-key-template-jobs + var orgId string + cmd := &cobra.Command{ + Use: "list-apply-line-key-template-jobs", + Short: "Get List of Apply Line Key Template jobs", + Long: "Get the list of all apply line key templates jobs in an organization.\n\nLine Keys also known as Programmable Line Keys (PLK) are the keys found on either sides of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to retrieve all the apply line key templates jobs in an organization.\n\nRetrieving the list of apply line key templates jobs in an organization requires a full, user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/jobs/devices/applyLineKeyTemplate") + req.QueryParam("orgId", orgId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve list of line key templates jobs in this organization.") + deviceCallCmd.AddCommand(cmd) + } + + { // get-job-status-apply-line-key-template-job + var jobId string + var orgId string + cmd := &cobra.Command{ + Use: "get-job-status-apply-line-key-template-job", + Short: "Get the job status of an Apply Line Key Template job", + Long: "Get the status of an apply line key template job by its job ID.\n\nLine Keys also known as Programmable Line Keys (PLK) are the keys found on either sides of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to check the status of an apply line key templates job by job ID in an organization.\n\nChecking the the status of an apply line key templates job in an organization requires a full, user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/jobs/devices/applyLineKeyTemplate/{jobId}") + req.PathParam("jobId", jobId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&jobId, "job-id", "", "Retrieve job status for this `jobId`.") + cmd.MarkFlagRequired("job-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Check a line key template job status in this organization.") + deviceCallCmd.AddCommand(cmd) + } + + { // get-job-errors-apply-line-key-template-job + var jobId string + var orgId string + cmd := &cobra.Command{ + Use: "get-job-errors-apply-line-key-template-job", + Short: "Get job errors for an Apply Line Key Template job", + Long: "GET job errors for an apply Line Key Template job in an organization.\n\nLine Keys also known as Programmable Line Keys (PLK) are the keys found on either sides of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to retrieve all the errors of an apply line key templates job by job ID in an organization.\n\nRetrieving all the errors of an apply line key templates job in an organization requires a full, user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/jobs/devices/applyLineKeyTemplate/{jobId}/errors") + req.PathParam("jobId", jobId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&jobId, "job-id", "", "Retrieve job errors for this `jobId`.") + cmd.MarkFlagRequired("job-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve list of errors for an apply line key template job in this organization.") + deviceCallCmd.AddCommand(cmd) + } + + { // get-dect-type-list-deprecated + var orgId string + cmd := &cobra.Command{ + Use: "get-dect-type-list-deprecated", + Short: "Read the DECT device type list - Deprecated", + Long: "
Not supported for Webex for Government (FedRAMP).
\n\n
The REST path for this API has changed to [GET /telephony/config/devices/dectNetworks/supportedDevices{?orgId}]. The use of this old REST path is deprecated and will be decommissioned on October 10, 2024. Please start using it for all future projects.
\n\nGet DECT device type list with base stations and line ports supported count. This is a static list.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/devices/dects/supportedDevices") + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "") + deviceCallCmd.AddCommand(cmd) + } + + { // get-dect-type-list + var orgId string + cmd := &cobra.Command{ + Use: "get-dect-type-list", + Short: "Read the DECT device type list", + Long: "
Not supported for Webex for Government (FedRAMP).
\n\nGet DECT device type list with base stations and line ports supported count. This is a static list.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/devices/dectNetworks/supportedDevices") + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "") + deviceCallCmd.AddCommand(cmd) + } + + { // validate-list-mac-address + var orgId string + var macs []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "validate-list-mac-address", + Short: "Validate a list of MAC address", + Long: "Validate a list of MAC addresses.\n\nValidating this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/devices/actions/validateMacs/invoke") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("macs", macs) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Validate the mac address(es) for this organization.") + cmd.Flags().StringSliceVar(&macs, "macs", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // update-settings-across-org-location-job + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-settings-across-org-location-job", + Short: "Change Device Settings Across Organization Or Location Job", + Long: "Change device settings across organization or locations jobs.\n\nPerforms bulk and asynchronous processing for all types of device settings initiated by organization and system admins in a stateful persistent manner. This job will modify the requested device settings across all the devices. Whenever a location ID is specified in the request, it will modify the requested device settings only for the devices that are part of the provided location within an organization.\n\nReturns a unique job ID which can then be utilized further to retrieve status and errors for the same.\n\nOnly one job per customer can be running at any given time within the same organization. An attempt to run multiple jobs at the same time will result in a 409 error response.\n\nRunning a job requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/jobs/devices/callDeviceSettings") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Apply change device settings for all the devices under this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // list-change-settings-jobs + var orgId string + var start string + var max string + cmd := &cobra.Command{ + Use: "list-change-settings-jobs", + Short: "List Change Device Settings Jobs", + Long: "List change device settings jobs.\n\nLists all the jobs for jobType `calldevicesettings` for the given organization in order of most recent one to oldest one irrespective of its status.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/jobs/devices/callDeviceSettings") + req.QueryParam("orgId", orgId) + req.QueryParam("start", start) + req.QueryParam("max", max) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve list of 'calldevicesettings' jobs for this organization.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of jobs. Default is 0.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of jobs returned to this maximum count. Default is 2000.") + deviceCallCmd.AddCommand(cmd) + } + + { // get-change-settings-job-status + var jobId string + cmd := &cobra.Command{ + Use: "get-change-settings-job-status", + Short: "Get Change Device Settings Job Status", + Long: "Get change device settings job status.\n\nProvides details of the job with `jobId` of `jobType` `calldevicesettings`.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/jobs/devices/callDeviceSettings/{jobId}") + req.PathParam("jobId", jobId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&jobId, "job-id", "", "Retrieve job details for this `jobId`.") + cmd.MarkFlagRequired("job-id") + deviceCallCmd.AddCommand(cmd) + } + + { // list-change-settings-job-errors + var jobId string + var orgId string + var start string + var max string + cmd := &cobra.Command{ + Use: "list-change-settings-job-errors", + Short: "List Change Device Settings Job Errors", + Long: "List change device settings job errors.\n\nLists all error details of the job with `jobId` of `jobType` `calldevicesettings`.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/jobs/devices/callDeviceSettings/{jobId}/errors") + req.PathParam("jobId", jobId) + req.QueryParam("orgId", orgId) + req.QueryParam("start", start) + req.QueryParam("max", max) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&jobId, "job-id", "", "Retrieve job details for this `jobId`.") + cmd.MarkFlagRequired("job-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve list of jobs for this organization.") + cmd.Flags().StringVar(&start, "start", "", "Specifies the offset from the first result that you want to fetch. Default is 0.") + cmd.Flags().StringVar(&max, "max", "", "Specifies the maximum number of records that you want to fetch. Default is 2000") + deviceCallCmd.AddCommand(cmd) + } + + { // get-layout-id + var deviceId string + var orgId string + cmd := &cobra.Command{ + Use: "get-layout-id", + Short: "Get Device Layout by Device ID", + Long: "Get layout information of a device by device ID in an organization.\n\nDevice layout customizes a user\u2019s programmable line keys (PLK) on the phone and any attached Key Expansion Modules (KEM) with the existing configured line members and the user\u2019s monitoring list.\n\n**Note:** When `layoutMode` is DEFAULT, the response includes only `layoutMode` and `userReorderEnabled`. The `lineKeys` field is omitted as the device uses system-assigned default line-key assignments. When `layoutMode` is CUSTOM, the response includes the `lineKeys` array with the custom line-key configuration.\n\nThis API requires a full or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/devices/{deviceId}/layout") + req.PathParam("deviceId", deviceId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&deviceId, "device-id", "", "Get device layout for this device ID.") + cmd.MarkFlagRequired("device-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve a device layout for the device in this organization.") + deviceCallCmd.AddCommand(cmd) + } + + { // update-layout-id + var deviceId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-layout-id", + Short: "Modify Device Layout by Device ID", + Long: "Modify the layout of a device by device ID in an organization.\n\nDevice layout customizes a user\u2019s programmable line keys (PLK) on the phone and any attached Key Expansion Modules (KEM) with the existing configured line members and the user\u2019s monitoring list.\n\n**Note:** When setting `layoutMode` to DEFAULT, do not include the `lineKeys` field in the request body. The device will use system-assigned default line-key assignments. When setting `layoutMode` to CUSTOM, you must include the `lineKeys` array to specify the custom line-key configuration.\n\nThis API requires a full or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/devices/{deviceId}/layout") + req.PathParam("deviceId", deviceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&deviceId, "device-id", "", "Modify device layout for this device ID.") + cmd.MarkFlagRequired("device-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Modify a device layout for the device in this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // rebuild-phones-configuration + var orgId string + var locationId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "rebuild-phones-configuration", + Short: "Rebuild Phones Configuration", + Long: "
Not supported for Webex for Government (FedRAMP)
.\n\nRebuild all phone configurations for the specified location.\n\nRebuild phones jobs are used when there is a change in the network configuration of phones in a location, i.e. a change in the network configuration of devices in a location from public to private and vice-versa.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/jobs/devices/rebuildPhones") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("locationId", locationId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Rebuild phones for this organization.") + cmd.Flags().StringVar(&locationId, "location-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // list-rebuild-phones-jobs + var orgId string + cmd := &cobra.Command{ + Use: "list-rebuild-phones-jobs", + Short: "List Rebuild Phones Jobs", + Long: "
Not supported for Webex for Government (FedRAMP)
.\n\nGet the list of all Rebuild Phones jobs in an organization.\n\nRebuild phones jobs are used when there is a change in the network configuration of phones in a location, i.e. a change in the network configuration of devices in a location from public to private and vice-versa.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/jobs/devices/rebuildPhones") + req.QueryParam("orgId", orgId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List of rebuild phones jobs in this organization.") + deviceCallCmd.AddCommand(cmd) + } + + { // get-job-status-rebuild-phones-job + var jobId string + var orgId string + cmd := &cobra.Command{ + Use: "get-job-status-rebuild-phones-job", + Short: "Get the Job Status of a Rebuild Phones Job", + Long: "
Not supported for Webex for Government (FedRAMP)
.\n\nGet the details of a rebuild phones job by its job ID.\n\nRebuild phones jobs are used when there is a change in the network configuration of phones in a location, i.e. a change in the network configuration of devices in a location from public to private and vice-versa.\n\nThis API requires requires a full administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/jobs/devices/rebuildPhones/{jobId}") + req.PathParam("jobId", jobId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&jobId, "job-id", "", "Retrieve job status for this `jobId`.") + cmd.MarkFlagRequired("job-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Check a rebuild phones job status in this organization.") + deviceCallCmd.AddCommand(cmd) + } + + { // get-job-errors-rebuild-phones-job + var jobId string + var orgId string + cmd := &cobra.Command{ + Use: "get-job-errors-rebuild-phones-job", + Short: "Get Job Errors for a Rebuild Phones Job", + Long: "
Not supported for Webex for Government (FedRAMP)
.\n\nGet errors for a rebuild phones job in an organization.\n\nRebuild phones jobs are used when there is a change in the network configuration of phones in a location, i.e. a change in the network configuration of devices in a location from public to private and vice-versa.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/jobs/devices/rebuildPhones/{jobId}/errors") + req.PathParam("jobId", jobId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&jobId, "job-id", "", "Retrieve job errors for this `jobId`.") + cmd.MarkFlagRequired("job-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve list of errors for a rebuild phones job in this organization.") + deviceCallCmd.AddCommand(cmd) + } + + { // get-settings-person + var personId string + var orgId string + cmd := &cobra.Command{ + Use: "get-settings-person", + Short: "Get Device Settings for a Person", + Long: "Device settings list the compression settings for a person.\n\nDevice settings customize a device's behavior and performance. The compression field optimizes call quality for inbound and outbound calls.\n\nThis API requires a full, location, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/{personId}/devices/settings") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "ID of the person for whom to retrieve device settings.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieves the device settings for a person in this organization.") + deviceCallCmd.AddCommand(cmd) + } + + { // update-settings-person + var personId string + var orgId string + var compression string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-settings-person", + Short: "Update Device Settings for a Person", + Long: "Update device settings modifies the compression settings for a person.\n\nDevice settings customize a device's behavior and performance. The compression field optimizes call quality for inbound and outbound calls.\n\nThis API requires a full, location, or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/people/{personId}/devices/settings") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("compression", compression) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "ID of the person for whom to update device settings.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Modify device settings for a person in this organization.") + cmd.Flags().StringVar(&compression, "compression", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // get-settings-workspace + var workspaceId string + var orgId string + cmd := &cobra.Command{ + Use: "get-settings-workspace", + Short: "Get Device Settings for a Workspace", + Long: "Device settings list the compression settings for a workspace.\n\nDevice settings customize a device's behavior and performance. The compression field optimizes call quality for inbound and outbound calls.\n\nThis API requires a full, location, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/workspaces/{workspaceId}/devices/settings") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "ID of the workspace for which to retrieve device settings.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieves the device settings for a workspace in this organization.") + deviceCallCmd.AddCommand(cmd) + } + + { // update-settings-workspace + var workspaceId string + var orgId string + var compression string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-settings-workspace", + Short: "Update Device Settings for a Workspace", + Long: "Update device settings modifies the compression settings for a workspace.\n\nDevice settings customize a device's behavior and performance. The compression field optimizes call quality for inbound and outbound calls.\n\nThis API requires a full, location, or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/workspaces/{workspaceId}/devices/settings") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("compression", compression) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "ID of the workspace for which to update device settings.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Modify the device settings for a workspace in this organization.") + cmd.Flags().StringVar(&compression, "compression", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // list-background-images + var orgId string + cmd := &cobra.Command{ + Use: "list-background-images", + Short: "Read the List of Background Images", + Long: "Gets the list of device background images for an organization.\n\nWebex Calling supports the upload of up to 100 background image files for each org. These image files can then be referenced by MPP phones in that org for use as their background image.\n\nRetrieving this list requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/devices/backgroundImages") + req.QueryParam("orgId", orgId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieves the list of images in this organization.") + deviceCallCmd.AddCommand(cmd) + } + + { // delete-background-images + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "delete-background-images", + Short: "Delete Device Background Images", + Long: "Delete the list of designated device background images for an organization. Maximum is 10 images per request.\n\nDeleting a device background image requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/telephony/config/devices/backgroundImages") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Deletes the list of images in this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // upload-background-image + var deviceId string + var orgId string + cmd := &cobra.Command{ + Use: "upload-background-image", + Short: "Upload a Device Background Image", + Long: "Configure a device's background image by uploading an image with file format, `.jpeg` or `.png`, encoded image file. Maximum image file size allowed to upload is 625 KB.\n\nThe request must be a multipart/form-data request rather than JSON, using the image/jpeg or image/png content-type.\n\nWebex Calling supports the upload of up to 100 background image files for each org. These image files can then be referenced by MPP phones in that org for use as their background image.\n\nUploading a device background image requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**WARNING:** This API is not callable using the developer portal web interface due to the lack of support for multipart POST. This API can be utilized using other tools that support multipart POST, such as Postman.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/devices/{deviceId}/actions/backgroundImageUpload/invoke") + req.PathParam("deviceId", deviceId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&deviceId, "device-id", "", "Unique identifier for the device.") + cmd.MarkFlagRequired("device-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Uploads the image in this organization.") + deviceCallCmd.AddCommand(cmd) + } + + { // get-user-count + var personId string + var orgId string + cmd := &cobra.Command{ + Use: "get-user-count", + Short: "Get User Devices Count", + Long: "Get the total device and application count for a person.\n\nThe device count can be used to determine if more devices can be added for users with a device count limit. For example, users with standard calling licenses can only have one physical device.\n\nThis requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/people/{personId}/devices/count") + req.PathParam("personId", personId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Person for whom to retrieve the device count.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization to which the person belongs.") + deviceCallCmd.AddCommand(cmd) + } + + { // get-count-members + var deviceId string + var orgId string + var memberName string + var phoneNumber string + var locationId string + var extension string + var usageType string + cmd := &cobra.Command{ + Use: "get-count-members", + Short: "Get Count of Members", + Long: "Get the count of members that can be assigned to the device.\n\nA device member can be either a person or a workspace.\n\nThis requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/devices/{deviceId}/availableMembers/count") + req.PathParam("deviceId", deviceId) + req.QueryParam("orgId", orgId) + req.QueryParam("memberName", memberName) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("locationId", locationId) + req.QueryParam("extension", extension) + req.QueryParam("usageType", usageType) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&deviceId, "device-id", "", "Unique identifier for the device.") + cmd.MarkFlagRequired("device-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieves the count of available members on the device in this organization.") + cmd.Flags().StringVar(&memberName, "member-name", "", "Search (Contains) numbers based on member name.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Search (Contains) based on number.") + cmd.Flags().StringVar(&locationId, "location-id", "", "Unique identifier for the location.") + cmd.Flags().StringVar(&extension, "extension", "", "Search (Contains) based on extension.") + cmd.Flags().StringVar(&usageType, "usage-type", "", "Search for members eligible to become the owner of the device, or share line on the device. * `DEVICE_OWNER` - Search for members eligible to become the owner of the device. * `SHARED_LINE` - Search for members eligible to share line on the device.") + deviceCallCmd.AddCommand(cmd) + } + + { // get-count-available-members + var orgId string + var memberName string + var phoneNumber string + var locationId string + var extension string + var usageType string + var excludeVirtualLine string + var deviceLocationId string + cmd := &cobra.Command{ + Use: "get-count-available-members", + Short: "Get Count of Available Members", + Long: "Get the count of members that can be assigned to devices.\n\nA device member can be either a person or a workspace.\n\nThis requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/devices/availableMembers/count") + req.QueryParam("orgId", orgId) + req.QueryParam("memberName", memberName) + req.QueryParam("phoneNumber", phoneNumber) + req.QueryParam("locationId", locationId) + req.QueryParam("extension", extension) + req.QueryParam("usageType", usageType) + req.QueryParam("excludeVirtualLine", excludeVirtualLine) + req.QueryParam("deviceLocationId", deviceLocationId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieves the count of available members in this organization.") + cmd.Flags().StringVar(&memberName, "member-name", "", "Search (Contains) numbers based on member name.") + cmd.Flags().StringVar(&phoneNumber, "phone-number", "", "Search (Contains) based on number.") + cmd.Flags().StringVar(&locationId, "location-id", "", "Unique identifier for the location.") + cmd.Flags().StringVar(&extension, "extension", "", "Search (Contains) based on extension.") + cmd.Flags().StringVar(&usageType, "usage-type", "", "Search for members eligible to become the owner of the device, or share line on the device. * `DEVICE_OWNER` - Search for members eligible to become the owner of the device. * `SHARED_LINE` - Search for members eligible to share line on the device.") + cmd.Flags().StringVar(&excludeVirtualLine, "exclude-virtual-line", "", "If true, filters out virtual lines from the available members list.") + cmd.Flags().StringVar(&deviceLocationId, "device-location-id", "", "Unique identifier for the device's location. When specified, filters available members to those in the same location as the device.") + deviceCallCmd.AddCommand(cmd) + } + + { // list-supported-2 + var orgId string + var allowConfigureLayoutEnabled string + var typeVal string + cmd := &cobra.Command{ + Use: "list-supported-2", + Short: "Read the List of Supported Devices", + Long: "Gets the list of supported devices for an organization.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/supportedDevices") + req.QueryParam("orgId", orgId) + req.QueryParam("allowConfigureLayoutEnabled", allowConfigureLayoutEnabled) + req.QueryParam("type", typeVal) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List supported devices for an organization.") + cmd.Flags().StringVar(&allowConfigureLayoutEnabled, "allow-configure-layout-enabled", "", "List supported devices that allow the user to configure the layout.") + cmd.Flags().StringVar(&typeVal, "type", "", "List supported devices of a specific type. To excluded device types from a request or query, add `type=not:DEVICE_TYPE`. For example, `type=not:MPP`.") + deviceCallCmd.AddCommand(cmd) + } + + { // get-validation-schema + var orgId string + var familyOrModelDisplayName string + cmd := &cobra.Command{ + Use: "get-validation-schema", + Short: "Get Validation Schema", + Long: "This API returns the validation schema for `tags` of all or specific `familyOrModelDisplayName`.\n\nThe schema is used to validate the `tag` for devices in the `Webex Calling` platform. The schema includes information about the required fields, data types, and validation rules for each setting.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/devices/dynamicSettings/validationSchema") + req.QueryParam("orgId", orgId) + req.QueryParam("familyOrModelDisplayName", familyOrModelDisplayName) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Validation schema for devices in this organization.") + cmd.Flags().StringVar(&familyOrModelDisplayName, "family-or-model-display-name", "", "Device family or model display name to filter the schema.") + deviceCallCmd.AddCommand(cmd) + } + + { // get-settings-groups + var orgId string + var familyOrModelDisplayName string + var includeSettingsType string + cmd := &cobra.Command{ + Use: "get-settings-groups", + Short: "Get Settings Groups", + Long: "This API returns the `settingsGroups` that define the structure and association of tags for dynamic device settings.\n\n The `settingsGroups` are used to organize the tags into logical groups, making it easier to manage and configure dynamic device settings.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/devices/dynamicSettings/settingsGroups") + req.QueryParam("orgId", orgId) + req.QueryParam("familyOrModelDisplayName", familyOrModelDisplayName) + req.QueryParam("includeSettingsType", includeSettingsType) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Settings groups for devices in this organization.") + cmd.Flags().StringVar(&familyOrModelDisplayName, "family-or-model-display-name", "", "Device family or model display name to filter the `settingsGroups`.") + cmd.Flags().StringVar(&includeSettingsType, "include-settings-type", "", "To show groups or tabs or both. Query param is case insensitive. Default is `ALL`.") + deviceCallCmd.AddCommand(cmd) + } + + { // get-customer-dynamic-settings + var orgId string + var familyOrModelDisplayName string + var tags []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "get-customer-dynamic-settings", + Short: "Get Customer Device Dynamic Settings", + Long: "Retrieve dynamic settings for specific device tags at customer level, allowing filters by `familyOrModelDisplayName` and `tag` identifier.\n\nThis API lets you request the values of multiple `Device Settings` at once by specifying a list of `familyOrModelDisplayName` and tag combinations.\n\nThis requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/lists/devices/dynamicSettings/actions/getSettings/invoke") + req.QueryParam("orgId", orgId) + req.QueryParam("familyOrModelDisplayName", familyOrModelDisplayName) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("tags", tags) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List of device dynamic settings in this organization.") + cmd.Flags().StringVar(&familyOrModelDisplayName, "family-or-model-display-name", "", "(Required) The family or model name for the device. If no tag is specified, all tags related to `familyOrModelDisplayName` are returned.") + cmd.Flags().StringSliceVar(&tags, "tags", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // get-location-dynamic-settings + var locationId string + var orgId string + var familyOrModelDisplayName string + var tags []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "get-location-dynamic-settings", + Short: "Get Location Device Dynamic Settings", + Long: "Retrieve dynamic settings for specific device tags at the specified location level, allowing filters by `familyOrModelDisplayName` and `tag` identifier.\n\nThis API lets you request the values of multiple `Device Settings` at once by specifying a list of `familyOrModelDisplayName` and tag combinations for a specific location.\n\nThis requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/lists/locations/{locationId}/devices/dynamicSettings/actions/getSettings/invoke") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + req.QueryParam("familyOrModelDisplayName", familyOrModelDisplayName) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("tags", tags) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "(Required) Unique identifier for the `location`.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Unique identifier for the `organization` to which this location belongs.") + cmd.Flags().StringVar(&familyOrModelDisplayName, "family-or-model-display-name", "", "(Required) The family or model name for the device. If no tag is specified, all tags related to `familyOrModelDisplayName` are returned.") + cmd.Flags().StringSliceVar(&tags, "tags", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // get-dynamic-settings + var deviceId string + var orgId string + var tags []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "get-dynamic-settings", + Short: "Get Device Dynamic Settings", + Long: "Retrieve settings for a specified device.\n\nThis API retrieves device settings based on the specified `tags`; if the `tags` field is empty or missing, all settings for the device are returned.\n\nThis requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/lists/devices/{deviceId}/dynamicSettings/actions/getSettings/invoke") + req.PathParam("deviceId", deviceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("tags", tags) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&deviceId, "device-id", "", "(Required) Device for which to retrieve settings.") + cmd.MarkFlagRequired("device-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization to which the `device` belongs.") + cmd.Flags().StringSliceVar(&tags, "tags", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // update-specified-settings + var deviceId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-specified-settings", + Short: "Update specified settings for the device.", + Long: "Modify dynamic settings for a specified device.\n\nThis API updates device settings based on the specified `tags`. If the `tags` field is empty, the request has no effect.\n\nThis requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/devices/{deviceId}/dynamicSettings") + req.PathParam("deviceId", deviceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&deviceId, "device-id", "", "(Required) Device for which to update settings.") + cmd.MarkFlagRequired("device-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization to which the device belongs.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // updates-dynamic-settings-across-org-location + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "updates-dynamic-settings-across-org-location", + Short: "Updates dynamic Device Settings Across Organization Or Location", + Long: "Creates a job to update device settings at location or organization level.\n\nThe job runs asynchronously and persistently, applying the requested settings in bulk to all relevant devices, which may belong to multiple families as specified in the request. If a `locationId` is provided, only devices in that location are affected.\n\nA unique job ID is returned to track status and errors.\n\nOnly one job can run per customer per organization at a time. Additionally, this job cannot run in parallel with other device jobs such as [Call device settings](/docs/api/v1/device-call-settings/change-device-settings-across-organization-or-location-job) and [Rebuild Phones](/docs/api/v1/device-call-settings/rebuild-phones-configuration).\n\nRunning a job requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/jobs/devices/dynamicDeviceSettings") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Apply update dynamic device settings for all the devices under this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // list-dynamic-settings-jobs + var orgId string + var start string + var max string + cmd := &cobra.Command{ + Use: "list-dynamic-settings-jobs", + Short: "List dynamic device Settings Jobs", + Long: "List dynamic device settings jobs.\n\nLists all the jobs for job type `dynamicdevicesettings` for the given organization in order of most recent one to oldest one irrespective of its status.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/jobs/devices/dynamicDeviceSettings") + req.QueryParam("orgId", orgId) + req.QueryParam("start", start) + req.QueryParam("max", max) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve list of dynamic device settings jobs for this organization.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of jobs. Default is 0.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of jobs returned to this maximum count. Default is 2000.") + deviceCallCmd.AddCommand(cmd) + } + + { // get-dynamic-settings-job-status + var jobId string + cmd := &cobra.Command{ + Use: "get-dynamic-settings-job-status", + Short: "Get Device Dynamic Settings Job Status", + Long: "Get dynamic device settings job status.\n\nProvides details of the job with `jobId` of `jobType` `dynamicdevicesettings`.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/jobs/devices/dynamicDeviceSettings/{jobId}") + req.PathParam("jobId", jobId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&jobId, "job-id", "", "(Required) Retrieve job details for this `jobId`.") + cmd.MarkFlagRequired("job-id") + deviceCallCmd.AddCommand(cmd) + } + + { // list-dynamic-settings-job-errors + var jobId string + var orgId string + var start string + var max string + cmd := &cobra.Command{ + Use: "list-dynamic-settings-job-errors", + Short: "List Dynamic Device Settings Job Errors", + Long: "List Update dynamic device settings job errors.\n\nLists all error details of the job with `jobId` of `jobType` `dynamicdevicesettings`.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/jobs/devices/dynamicDeviceSettings/{jobId}/errors") + req.PathParam("jobId", jobId) + req.QueryParam("orgId", orgId) + req.QueryParam("start", start) + req.QueryParam("max", max) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&jobId, "job-id", "", "(Required) Retrieve job details for this `jobId`.") + cmd.MarkFlagRequired("job-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve the status of job for this organization.") + cmd.Flags().StringVar(&start, "start", "", "Specifies the offset from the first result that you want to fetch. Default is 0.") + cmd.Flags().StringVar(&max, "max", "", "Specifies the maximum number of records that you want to fetch. Default is 2000") + deviceCallCmd.AddCommand(cmd) + } + + { // list-supported-3 + var orgId string + var allowConfigureLayoutEnabled string + var typeVal string + cmd := &cobra.Command{ + Use: "list-supported-3", + Short: "Read the List of Supported Devices", + Long: "Gets the list of supported devices for an organization.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/supportedDevices") + req.QueryParam("orgId", orgId) + req.QueryParam("allowConfigureLayoutEnabled", allowConfigureLayoutEnabled) + req.QueryParam("type", typeVal) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List supported devices for an organization.") + cmd.Flags().StringVar(&allowConfigureLayoutEnabled, "allow-configure-layout-enabled", "", "List supported devices that allow the user to configure the layout.") + cmd.Flags().StringVar(&typeVal, "type", "", "List supported devices of a specific type. To excluded device types from a request or query, add `type=not:DEVICE_TYPE`. For example, `type=not:MPP`.") + deviceCallCmd.AddCommand(cmd) + } + + { // get-settings-groups-2 + var orgId string + var familyOrModelDisplayName string + var includeSettingsType string + cmd := &cobra.Command{ + Use: "get-settings-groups-2", + Short: "Get Settings Groups", + Long: "This API returns the `settingsGroups` that define the structure and association of tags for device dynamic settings.\n\n The `settingsGroups` are used to organize the tags into logical groups, making it easier to manage and configure device dynamic settings.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/devices/dynamicSettings/settingsGroups") + req.QueryParam("orgId", orgId) + req.QueryParam("familyOrModelDisplayName", familyOrModelDisplayName) + req.QueryParam("includeSettingsType", includeSettingsType) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Settings groups for devices in this organization.") + cmd.Flags().StringVar(&familyOrModelDisplayName, "family-or-model-display-name", "", "Device family or model display name to filter the `settingsGroups`.") + cmd.Flags().StringVar(&includeSettingsType, "include-settings-type", "", "To show groups or tabs or both. Query param is case insensitive. Default is `ALL`.") + deviceCallCmd.AddCommand(cmd) + } + + { // get-customer-dynamic-settings-2 + var orgId string + var familyOrModelDisplayName string + var tags []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "get-customer-dynamic-settings-2", + Short: "Get Customer Device Dynamic Settings", + Long: "Retrieve dynamic settings for specific device tags at customer level, allowing filters by `familyOrModelDisplayName` and `tag` identifier.\n\nThis API lets you request the values of multiple `Device Settings` at once by specifying a list of `familyOrModelDisplayName` and tag combinations.\n\nThis requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/lists/devices/dynamicSettings/actions/getSettings/invoke") + req.QueryParam("orgId", orgId) + req.QueryParam("familyOrModelDisplayName", familyOrModelDisplayName) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("tags", tags) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List of device dynamic settings in this organization.") + cmd.Flags().StringVar(&familyOrModelDisplayName, "family-or-model-display-name", "", "The family or model name for the device. If no tag is specified, all tags related to `familyOrModelDisplayName` are returned.") + cmd.Flags().StringSliceVar(&tags, "tags", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // get-location-dynamic-settings-2 + var locationId string + var orgId string + var familyOrModelDisplayName string + var tags []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "get-location-dynamic-settings-2", + Short: "Get Location Device Dynamic Settings", + Long: "Retrieve dynamic settings for specific device tags at the specified location level, allowing filters by `familyOrModelDisplayName` and `tag` identifier.\n\nThis API lets you request the values of multiple `Device Settings` at once by specifying a list of `familyOrModelDisplayName` and tag combinations for a specific location.\n\nThis requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/lists/locations/{locationId}/devices/dynamicSettings/actions/getSettings/invoke") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + req.QueryParam("familyOrModelDisplayName", familyOrModelDisplayName) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("tags", tags) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Unique identifier for the `location`.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Unique identifier for the `organization` to which this location belongs.") + cmd.Flags().StringVar(&familyOrModelDisplayName, "family-or-model-display-name", "", "The family or model name for the device. If no tag is specified, all tags related to `familyOrModelDisplayName` are returned.") + cmd.Flags().StringSliceVar(&tags, "tags", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // get-dynamic-settings-2 + var deviceId string + var orgId string + var tags []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "get-dynamic-settings-2", + Short: "Get Device Dynamic Settings", + Long: "Retrieve settings for a specified device.\n\nThis API retrieves device settings based on the specified `tags`; if the `tags` field is empty or missing, all settings for the device are returned.\n\nThis requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/lists/devices/{deviceId}/dynamicSettings/actions/getSettings/invoke") + req.PathParam("deviceId", deviceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("tags", tags) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&deviceId, "device-id", "", "Device for which to retrieve settings.") + cmd.MarkFlagRequired("device-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization to which the `device` belongs.") + cmd.Flags().StringSliceVar(&tags, "tags", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // update-dynamic-settings + var deviceId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-dynamic-settings", + Short: "Update Device Dynamic Settings", + Long: "Modify dynamic settings for a specified device.\n\nThis API updates device settings based on the specified `tags`. If the `tags` field is empty, the request has no effect.\n\nThis requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/telephony/config/devices/{deviceId}/dynamicSettings") + req.PathParam("deviceId", deviceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&deviceId, "device-id", "", "Device for which to update settings.") + cmd.MarkFlagRequired("device-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Organization to which the device belongs.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // update-dynamic-settings-across-org-location + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-dynamic-settings-across-org-location", + Short: "Update Device Dynamic Settings Across Organization or Location", + Long: "Creates a job to update device settings at location or organization level.\n\nThe job runs asynchronously and persistently, applying the requested settings in bulk to all relevant devices, which may belong to multiple families as specified in the request. If a `locationId` is provided, only devices in that location are affected.\n\nA unique job ID is returned to track status and errors.\n\nOnly one job can run per customer per organization at a time. Additionally, this job cannot run in parallel with other device jobs such as [Call device settings](/docs/api/v1/device-call-settings/change-device-settings-across-organization-or-location-job) and [Rebuild Phones](/docs/api/v1/device-call-settings/rebuild-phones-configuration).\n\nRunning a job requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/telephony/config/jobs/devices/dynamicDeviceSettings") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Apply update device dynamic settings for all the devices under this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceCallCmd.AddCommand(cmd) + } + + { // list-dynamic-settings-jobs-2 + var orgId string + var start string + var max string + cmd := &cobra.Command{ + Use: "list-dynamic-settings-jobs-2", + Short: "List Device Dynamic Settings Jobs", + Long: "List device dynamic settings jobs.\n\nLists all the jobs for job type `dynamicdevicesettings` for the given organization in order of most recent one to oldest one irrespective of its status.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/jobs/devices/dynamicDeviceSettings") + req.QueryParam("orgId", orgId) + req.QueryParam("start", start) + req.QueryParam("max", max) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve list of device dynamic settings jobs for this organization.") + cmd.Flags().StringVar(&start, "start", "", "Start at the zero-based offset in the list of jobs. Default is 0.") + cmd.Flags().StringVar(&max, "max", "", "Limit the number of jobs returned to this maximum count. Default is 2000.") + deviceCallCmd.AddCommand(cmd) + } + + { // get-dynamic-settings-job-status-2 + var jobId string + cmd := &cobra.Command{ + Use: "get-dynamic-settings-job-status-2", + Short: "Get Device Dynamic Settings Job Status", + Long: "Get device dynamic settings job status.\n\nProvides details of the job with `jobId` of `jobType` `dynamicdevicesettings`.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/jobs/devices/dynamicDeviceSettings/{jobId}") + req.PathParam("jobId", jobId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&jobId, "job-id", "", "Retrieve job details for this `jobId`.") + cmd.MarkFlagRequired("job-id") + deviceCallCmd.AddCommand(cmd) + } + + { // list-dynamic-settings-job-errors-2 + var jobId string + var orgId string + var start string + var max string + cmd := &cobra.Command{ + Use: "list-dynamic-settings-job-errors-2", + Short: "List Device Dynamic Settings Job Errors", + Long: "List Update device dynamic settings job errors.\n\nLists all error details of the job with `jobId` of `jobType` `dynamicdevicesettings`.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/telephony/config/jobs/devices/dynamicDeviceSettings/{jobId}/errors") + req.PathParam("jobId", jobId) + req.QueryParam("orgId", orgId) + req.QueryParam("start", start) + req.QueryParam("max", max) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&jobId, "job-id", "", "Retrieve job details for this `jobId`.") + cmd.MarkFlagRequired("job-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Retrieve the status of job for this organization.") + cmd.Flags().StringVar(&start, "start", "", "Specifies the offset from the first result that you want to fetch. Default is 0.") + cmd.Flags().StringVar(&max, "max", "", "Specifies the maximum number of records that you want to fetch. Default is 2000") + deviceCallCmd.AddCommand(cmd) + } + +} diff --git a/cmd/device/device_configurations.go b/cmd/device/device_configurations.go new file mode 100644 index 0000000..28d9aa9 --- /dev/null +++ b/cmd/device/device_configurations.go @@ -0,0 +1,97 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package device + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var deviceConfigurationsCmd = &cobra.Command{ + Use: "device-configurations", + Short: "DeviceConfigurations commands", +} + +func init() { + cmd.DeviceCmd.AddCommand(deviceConfigurationsCmd) + + { // list + var deviceId string + var key string + cmd := &cobra.Command{ + Use: "list", + Short: "List Device Configurations for device", + Long: `Lists all device configurations associated with the given device ID. Administrators can list configurations for all devices within an organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/deviceConfigurations") + req.QueryParam("deviceId", deviceId) + req.QueryParam("key", key) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&deviceId, "device-id", "", "List device configurations by device ID.") + cmd.Flags().StringVar(&key, "key", "", "This can optionally be used to filter configurations. Keys are composed of segments. It's possible to use absolute paths, wildcards or ranges. - **Absolute** gives only one configuration as a result. `Conference.MaxReceiveCallRate` for example gives the Conference `MaxReceiveCallRate` configuration. + **Wildcards** (\\*) can specify multiple configurations with shared segments. `Audio.Ultrasound.*` for example will filter on all Audio Ultrasound configurations. - **Range** ([_number_]) can be used to filter numbered segments. `FacilityService.Service[1].Name` for instance only shows the first `FacilityService` Service Name configuration, `FacilityService.Service[*].Name` shows all, `FacilityService.Service[1..3].Name` shows the first three and `FacilityService.Service[2..n].Name` shows all starting at 2. Note that [RFC 3986 3.2.2](https://www.ietf.org/rfc/rfc3986.html#section-3.2.2) does not allow square brackets in urls outside the host, so to specify range in a configuration key you will need to encode them to %5B for [ and %5D for ].") + deviceConfigurationsCmd.AddCommand(cmd) + } + + { // update + var deviceId string + var op string + var path string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Short: "Update Device Configurations", + Long: `Edit configurations for the device specified by device ID.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PATCH", "/deviceConfigurations") + req.QueryParam("deviceId", deviceId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("op", op) + req.BodyString("path", path) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&deviceId, "device-id", "", "Update device configurations by device ID.") + cmd.Flags().StringVar(&op, "op", "", "") + cmd.Flags().StringVar(&path, "path", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + deviceConfigurationsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/device/devices.go b/cmd/device/devices.go new file mode 100644 index 0000000..a30e8d4 --- /dev/null +++ b/cmd/device/devices.go @@ -0,0 +1,298 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package device + +import ( + "fmt" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strings.Join + +var devicesCmd = &cobra.Command{ + Use: "devices", + Short: "Devices commands", +} + +func init() { + cmd.DeviceCmd.AddCommand(devicesCmd) + + { // list + var max string + var start string + var displayName string + var personId string + var workspaceId string + var orgId string + var connectionStatus string + var product string + var typeVal string + var serial string + var tag string + var software string + var upgradeChannel string + var errorCode string + var capability string + var permission string + var locationId string + var workspaceLocationId string + var mac string + var devicePlatform string + var plannedMaintenance string + cmd := &cobra.Command{ + Use: "list", + Short: "List Devices", + Long: "Lists all active Webex devices associated with the authenticated user, such as devices activated in personal mode. This requires the `spark:devices_read` scope. Administrators can list all devices within their organization. This requires an administrator auth token with the `spark-admin:devices_read` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/devices") + req.QueryParam("max", max) + req.QueryParam("start", start) + req.QueryParam("displayName", displayName) + req.QueryParam("personId", personId) + req.QueryParam("workspaceId", workspaceId) + req.QueryParam("orgId", orgId) + req.QueryParam("connectionStatus", connectionStatus) + req.QueryParam("product", product) + req.QueryParam("type", typeVal) + req.QueryParam("serial", serial) + req.QueryParam("tag", tag) + req.QueryParam("software", software) + req.QueryParam("upgradeChannel", upgradeChannel) + req.QueryParam("errorCode", errorCode) + req.QueryParam("capability", capability) + req.QueryParam("permission", permission) + req.QueryParam("locationId", locationId) + req.QueryParam("workspaceLocationId", workspaceLocationId) + req.QueryParam("mac", mac) + req.QueryParam("devicePlatform", devicePlatform) + req.QueryParam("plannedMaintenance", plannedMaintenance) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&max, "max", "", "Limit the maximum number of devices in the response.") + cmd.Flags().StringVar(&start, "start", "", " Offset. Default is 0. ") + cmd.Flags().StringVar(&displayName, "display-name", "", " List devices with this display name. ") + cmd.Flags().StringVar(&personId, "person-id", "", " List devices by person ID. ") + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", " List devices by workspace ID. ") + cmd.Flags().StringVar(&orgId, "org-id", "", " List devices in this organization. Only admin users of another organization (such as partners) may use this parameter. ") + cmd.Flags().StringVar(&connectionStatus, "connection-status", "", " List devices with this connection status. ") + cmd.Flags().StringVar(&product, "product", "", " List devices with this product name. ") + cmd.Flags().StringVar(&typeVal, "type", "", " List devices with this type. ") + cmd.Flags().StringVar(&serial, "serial", "", " List devices with this serial number. ") + cmd.Flags().StringVar(&tag, "tag", "", " List devices which have a tag. Searching for multiple tags (logical AND) can be done by comma separating the `tag` values or adding several `tag` parameters. ") + cmd.Flags().StringVar(&software, "software", "", " List devices with this software version. ") + cmd.Flags().StringVar(&upgradeChannel, "upgrade-channel", "", " List devices with this upgrade channel. ") + cmd.Flags().StringVar(&errorCode, "error-code", "", " List devices with this error code. ") + cmd.Flags().StringVar(&capability, "capability", "", " List devices with this capability. ") + cmd.Flags().StringVar(&permission, "permission", "", " List devices with this permission. ") + cmd.Flags().StringVar(&locationId, "location-id", "", " List devices by location ID. ") + cmd.Flags().StringVar(&workspaceLocationId, "workspace-location-id", "", " List devices by workspace location ID. Deprecated, prefer `locationId`. ") + cmd.Flags().StringVar(&mac, "mac", "", " List devices with this MAC address. ") + cmd.Flags().StringVar(&devicePlatform, "device-platform", "", " List devices with this device platform. ") + cmd.Flags().StringVar(&plannedMaintenance, "planned-maintenance", "", " List devices with this planned maintenance. ") + devicesCmd.AddCommand(cmd) + } + + { // create-mac-address + var orgId string + var mac string + var model string + var workspaceId string + var personId string + var password string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-mac-address", + Short: "Create a Device by MAC Address", + Long: "Create a phone by its MAC address in a specific workspace or for a person.\n\nSpecify the `mac`, `model` and either `workspaceId` or `personId`.\n\n* You can get the `model` from the [supported devices](/docs/api/v1/device-call-settings/read-the-list-of-supported-devices) API.\n\n* Either `workspaceId` or `personId` should be provided. If both are supplied, the request will be invalid.\n\n* The `password` field is only required for third party devices. You can obtain the required third party phone configuration from [here](/docs/api/v1/beta-device-call-settings-with-third-party-device-support/get-third-party-device).\n\n
Adding a device to a person with a Webex Calling Standard license will disable Webex Calling across their Webex mobile, tablet, desktop, and browser applications.

When adding devices to a Webex Calling Professional licensed person or workspace, wait for each API call to finish before starting the next. This prevents race conditions that can cause errors when assigning primary versus secondary device status.
", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/devices") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("mac", mac) + req.BodyString("model", model) + req.BodyString("workspaceId", workspaceId) + req.BodyString("personId", personId) + req.BodyString("password", password) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "The organization associated with the device. If left empty, the organization associated with the caller will be used.") + cmd.Flags().StringVar(&mac, "mac", "", "") + cmd.Flags().StringVar(&model, "model", "", "") + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "") + cmd.Flags().StringVar(&personId, "person-id", "", "") + cmd.Flags().StringVar(&password, "password", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + devicesCmd.AddCommand(cmd) + } + + { // get + var deviceId string + var orgId string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Device Details", + Long: "Shows details for a device, by ID. This requires an auth token with the `spark:devices_read` scope to see your own device, or `spark-admin:devices_read` to see any other device in your organization.\n\nSpecify the device ID in the `deviceId` parameter in the URI.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/devices/{deviceId}") + req.PathParam("deviceId", deviceId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&deviceId, "device-id", "", " A unique identifier for the device. ") + cmd.MarkFlagRequired("device-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "The organization associated with the device. If left empty, the organization associated with the caller will be used.") + devicesCmd.AddCommand(cmd) + } + + { // delete + var deviceId string + var orgId string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete a Device", + Long: "Deletes a device, by ID. Deleting your own device requires an auth token with the `spark:devices_write` scope. Deleting any other device in the organization will require an administrator auth token with the `spark-admin:devices_write` scope.\n\nSpecify the device ID in the `deviceId` parameter in the URI.\n\n
Deleting a device from a person with a Webex Calling Standard license will enable Webex Calling across their Webex mobile, tablet, desktop, and browser applications.
", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/devices/{deviceId}") + req.PathParam("deviceId", deviceId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&deviceId, "device-id", "", "A unique identifier for the device.") + cmd.MarkFlagRequired("device-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "The organization associated with the device. If left empty, the organization associated with the caller will be used.") + devicesCmd.AddCommand(cmd) + } + + { // update-tags + var deviceId string + var orgId string + var op string + var path string + var value []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-tags", + Short: "Modify Device Tags", + Long: "Create, delete or update tags on a device. For your own device, this requires an auth token with the `spark:devices_write` scope. An auth token with the `spark-admin:devices_write` scope is required to operate on other devices within the organization.\n\nSpecify the device ID in the `deviceId` parameter in the URI.\n\nInclude only the tag array in the request body, no other device attributes can be changed. This action will overwrite any previous tags. A common approach is to first [GET the devices's details](/docs/api/v1/devices/get-device-details), make changes to the `tags` array, and then PATCH the new complete array with this endpoint.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PATCH", "/devices/{deviceId}") + req.PathParam("deviceId", deviceId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("op", op) + req.BodyString("path", path) + req.BodyStringSlice("value", value) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&deviceId, "device-id", "", "Unique identifier for the device.") + cmd.MarkFlagRequired("device-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "The organization associated with the device. If left empty, the organization associated with the caller will be used.") + cmd.Flags().StringVar(&op, "op", "", "") + cmd.Flags().StringVar(&path, "path", "", "") + cmd.Flags().StringSliceVar(&value, "value", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + devicesCmd.AddCommand(cmd) + } + + { // create-activation-code + var orgId string + var workspaceId string + var personId string + var model string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-activation-code", + Short: "Create a Device Activation Code", + Long: "Generate an activation code for a device in a specific workspace by `workspaceId` or for a person by `personId`. This requires an auth token with the `spark-admin:devices_write` scope, and either `identity:placeonetimepassword_create` (allows creating activation codes for workspaces only) or `identity:one_time_password` (allows creating activation codes for workspaces or persons).\n\n* Adding a device to a workspace with calling type `none` or `thirdPartySipCalling` will reset the workspace calling type to `freeCalling`.\n\n* Either `workspaceId` or `personId` should be provided. If both are supplied, the request will be invalid.\n\n* If no `model` is supplied, the `code` returned will only be accepted on RoomOS devices.\n\n* If your device is a phone, you must provide the `model` as a field. You can get the `model` from the [supported devices](/docs/api/v1/device-call-settings/read-the-list-of-supported-devices) API.\n\n
Adding a device to a person with a Webex Calling Standard license will disable Webex Calling across their Webex mobile, tablet, desktop, and browser applications.

When adding devices to a Webex Calling Professional licensed person or workspace, wait for each API call to finish before starting the next. This prevents race conditions that can cause errors when assigning primary versus secondary device status.
", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/devices/activationCode") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("workspaceId", workspaceId) + req.BodyString("personId", personId) + req.BodyString("model", model) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "The organization associated with the activation code generated. If left empty, the organization associated with the caller will be used.") + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "") + cmd.Flags().StringVar(&personId, "person-id", "", "") + cmd.Flags().StringVar(&model, "model", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + devicesCmd.AddCommand(cmd) + } + +} diff --git a/cmd/device/hot_desk.go b/cmd/device/hot_desk.go new file mode 100644 index 0000000..719be22 --- /dev/null +++ b/cmd/device/hot_desk.go @@ -0,0 +1,83 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package device + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var hotDeskCmd = &cobra.Command{ + Use: "hot-desk", + Short: "HotDesk commands", +} + +func init() { + cmd.DeviceCmd.AddCommand(hotDeskCmd) + + { // list-sessions + var orgId string + var personId string + var workspaceId string + cmd := &cobra.Command{ + Use: "list-sessions", + Short: "List Sessions", + Long: "List hot desk sessions.\n\nUse query parameters to filter the response.\nThe `orgId` parameter is for use by partner administrators acting on a managed organization.\nThe `personId` and `workspaceId` parameters are optional and are used to filter the response to only include sessions for a specific person or workspace.\nWhen used together they are used as an AND filter.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/hotdesk/sessions") + req.QueryParam("orgId", orgId) + req.QueryParam("personId", personId) + req.QueryParam("workspaceId", workspaceId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List sessions in this organization. Only admin users of another organization (such as partners) may use this parameter.") + cmd.Flags().StringVar(&personId, "person-id", "", "List sessions for this person.") + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "List sessions for this workspace.") + hotDeskCmd.AddCommand(cmd) + } + + { // delete-session + var sessionId string + cmd := &cobra.Command{ + Use: "delete-session", + Short: "Delete Session", + Long: `Delete a hot desk session.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/hotdesk/sessions/{sessionId}") + req.PathParam("sessionId", sessionId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&sessionId, "session-id", "", "The unique identifier for the hot desk session.") + cmd.MarkFlagRequired("session-id") + hotDeskCmd.AddCommand(cmd) + } + +} diff --git a/cmd/device/locations.go b/cmd/device/locations.go new file mode 100644 index 0000000..8ea4868 --- /dev/null +++ b/cmd/device/locations.go @@ -0,0 +1,342 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package device + +import ( + "fmt" + "strconv" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa + +var locationsCmd = &cobra.Command{ + Use: "locations", + Short: "Locations commands", +} + +func init() { + cmd.DeviceCmd.AddCommand(locationsCmd) + + { // list + var name string + var id string + var orgId string + var max string + cmd := &cobra.Command{ + Use: "list", + Short: "List Locations", + Long: "List locations for an organization.\n\n* Use query parameters to filter the result set by location name, ID, or organization.\n\n* Long result sets will be split into [pages](/docs/basics#pagination).\n\n* Searching and viewing locations in your organization requires an administrator or location administrator auth token with any of the following scopes: `spark-admin:locations_read`, `spark-admin:people_read` or `spark-admin:device_read`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/locations") + req.QueryParam("name", name) + req.QueryParam("id", id) + req.QueryParam("orgId", orgId) + req.QueryParam("max", max) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&name, "name", "", "List locations whose name contains this string (case-insensitive).") + cmd.Flags().StringVar(&id, "id", "", "List locations by ID.") + cmd.Flags().StringVar(&orgId, "org-id", "", "List locations in this organization. Only admin users of another organization (such as partners) may use this parameter.") + cmd.Flags().StringVar(&max, "max", "", "Limit the maximum number of location in the response.") + locationsCmd.AddCommand(cmd) + } + + { // create + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a Location", + Long: "Create a new Location for a given organization. Only an admin in the organization can create a new Location.\n\n* Creating a location in your organization requires a full administrator auth token with a scope of `spark-admin:locations_write`.\n\n* Partners may specify `orgId` query parameter to create location in managed organization.\n\n* The following body parameters are required to create a new location: \n * `name`\n * `timeZone`\n * `preferredLanguage`\n * `address`\n * `announcementLanguage`.\n\n* `latitude`, `longitude` and `notes` are optional parameters to create a new location.\n\n* **Important:** While the `name` field supports up to 256 characters, locations that will be enabled for Webex Calling must have names with a maximum of 80 characters. If you plan to enable calling for this location, ensure the name does not exceed 80 characters to maintain compatibility with Control Hub and calling features.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/locations") + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Create a location common attribute for this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + locationsCmd.AddCommand(cmd) + } + + { // get + var locationId string + var orgId string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Location Details", + Long: "Shows details for a location, by ID.\n\n* Specify the location ID in the `locationId` parameter in the URI.\n\n* Use query parameter `orgId` to filter the result set by organization(optional).\n\n* Searching and viewing location in your organization requires an administrator or location administrator auth token with any of the following scopes:\n\n * `spark-admin:locations_read`\n * `spark-admin:people_read`\n * `spark-admin:device_read`", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/locations/{locationId}") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "A unique identifier for the location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Get location common attributes for this organization.") + locationsCmd.AddCommand(cmd) + } + + { // update + var locationId string + var orgId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Short: "Update a Location", + Long: "Update details for a location, by ID.\n\n* Updating a location in your organization requires a full administrator or location administrator auth token with a scope of `spark-admin:locations_write`.\n\n* Specify the location ID in the `locationId` parameter in the URI.\n\n* Partners may specify `orgId` query parameter to update location in managed organization.\n\n* **Important:** While the `name` field supports up to 256 characters, locations that are enabled for Webex Calling must have names with a maximum of 80 characters. If the location is enabled for calling, ensure the name does not exceed 80 characters to maintain compatibility with Control Hub and calling features.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/locations/{locationId}") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "Update location common attributes for this location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Update location common attributes for this organization.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + locationsCmd.AddCommand(cmd) + } + + { // delete + var locationId string + var orgId string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete Location", + Long: "Delete a location, by ID.\n\n* Specify the location ID in the `locationId` parameter in the URI.\n\n* Deleting a location in your organization requires a full administrator auth token with a scope of `spark-admin:locations_write`.\n\n* NOTE: Disabling Webex Calling for a Webex Calling enabled location is required prior to deleting a location.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/locations/{locationId}") + req.PathParam("locationId", locationId) + req.QueryParam("orgId", orgId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "A unique identifier for the location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&orgId, "org-id", "", "Specify the organization for the location to be deleted.") + locationsCmd.AddCommand(cmd) + } + + { // list-floors + var locationId string + cmd := &cobra.Command{ + Use: "list-floors", + Short: "List Location Floors", + Long: "List location floors.\nRequires an administrator auth token with the `spark-admin:locations_read` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/locations/{locationId}/floors") + req.PathParam("locationId", locationId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "A unique identifier for the location.") + cmd.MarkFlagRequired("location-id") + locationsCmd.AddCommand(cmd) + } + + { // create-floor + var locationId string + var floorNumber int64 + var displayName string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-floor", + Short: "Create a Location Floor", + Long: "Create a new floor in the given location. The `displayName` parameter is optional, and omitting it will result in the creation of a floor without that value set.\nRequires an administrator auth token with the `spark-admin:locations_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/locations/{locationId}/floors") + req.PathParam("locationId", locationId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyInt("floorNumber", floorNumber, cmd.Flags().Changed("floor-number")) + req.BodyString("displayName", displayName) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "A unique identifier for the location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().Int64Var(&floorNumber, "floor-number", 0, "") + cmd.Flags().StringVar(&displayName, "display-name", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + locationsCmd.AddCommand(cmd) + } + + { // get-floor + var locationId string + var floorId string + cmd := &cobra.Command{ + Use: "get-floor", + Short: "Get Location Floor Details", + Long: "Shows details for a floor, by ID. Specify the floor ID in the `floorId` parameter in the URI.\nRequires an administrator auth token with the `spark-admin:locations_read` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/locations/{locationId}/floors/{floorId}") + req.PathParam("locationId", locationId) + req.PathParam("floorId", floorId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "A unique identifier for the location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&floorId, "floor-id", "", "A unique identifier for the floor.") + cmd.MarkFlagRequired("floor-id") + locationsCmd.AddCommand(cmd) + } + + { // update-floor + var locationId string + var floorId string + var floorNumber int64 + var displayName string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-floor", + Short: "Update a Location Floor", + Long: "Updates details for a floor, by ID. Specify the floor ID in the `floorId` parameter in the URI. Include all details for the floor returned by a previous call to [Get Location Floor Details](/docs/api/v1/locations/get-location-floor-details). Omitting the optional `displayName` field will result in that field no longer being defined for the floor.\nRequires an administrator auth token with the `spark-admin:locations_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/locations/{locationId}/floors/{floorId}") + req.PathParam("locationId", locationId) + req.PathParam("floorId", floorId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyInt("floorNumber", floorNumber, cmd.Flags().Changed("floor-number")) + req.BodyString("displayName", displayName) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "A unique identifier for the location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&floorId, "floor-id", "", "A unique identifier for the floor.") + cmd.MarkFlagRequired("floor-id") + cmd.Flags().Int64Var(&floorNumber, "floor-number", 0, "") + cmd.Flags().StringVar(&displayName, "display-name", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + locationsCmd.AddCommand(cmd) + } + + { // delete-floor + var locationId string + var floorId string + cmd := &cobra.Command{ + Use: "delete-floor", + Short: "Delete a Location Floor", + Long: "Deletes a floor, by ID.\nRequires an administrator auth token with the `spark-admin:locations_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/locations/{locationId}/floors/{floorId}") + req.PathParam("locationId", locationId) + req.PathParam("floorId", floorId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "A unique identifier for the location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&floorId, "floor-id", "", "A unique identifier for the floor.") + cmd.MarkFlagRequired("floor-id") + locationsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/device/workspace_locations.go b/cmd/device/workspace_locations.go new file mode 100644 index 0000000..2575e3b --- /dev/null +++ b/cmd/device/workspace_locations.go @@ -0,0 +1,380 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package device + +import ( + "fmt" + "strconv" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa + +var workspaceLocationsCmd = &cobra.Command{ + Use: "workspace-locations", + Short: "WorkspaceLocations commands", +} + +func init() { + cmd.DeviceCmd.AddCommand(workspaceLocationsCmd) + + { // list + var orgId string + var displayName string + var address string + var countryCode string + var cityName string + cmd := &cobra.Command{ + Use: "list", + Short: "List Workspace Locations", + Long: "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nList workspace locations. Use query parameters to filter the response. The `orgId` parameter can only be used by admin users of another\norganization (such as partners). The `displayName`, `address`, `countryCode` and `cityName` parameters are all optional.\nRequires an administrator auth token with the `spark-admin:workspace_locations_read` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/workspaceLocations") + req.QueryParam("orgId", orgId) + req.QueryParam("displayName", displayName) + req.QueryParam("address", address) + req.QueryParam("countryCode", countryCode) + req.QueryParam("cityName", cityName) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List workspace locations in this organization. Only admin users of another organization (such as partners) may use this parameter.") + cmd.Flags().StringVar(&displayName, "display-name", "", "Location display name.") + cmd.Flags().StringVar(&address, "address", "", "Location address.") + cmd.Flags().StringVar(&countryCode, "country-code", "", "Location country code (ISO 3166-1).") + cmd.Flags().StringVar(&cityName, "city-name", "", "Location city name.") + workspaceLocationsCmd.AddCommand(cmd) + } + + { // create + var displayName string + var address string + var countryCode string + var latitude int64 + var longitude int64 + var cityName string + var notes string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a Workspace Location", + Long: "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nCreate a location. The `cityName` and `notes` parameters are optional, and omitting them will result in the creation of a location without values for those attributes.\nRequires an administrator auth token with the `spark-admin:workspace_locations_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/workspaceLocations") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("displayName", displayName) + req.BodyString("address", address) + req.BodyString("countryCode", countryCode) + req.BodyInt("latitude", latitude, cmd.Flags().Changed("latitude")) + req.BodyInt("longitude", longitude, cmd.Flags().Changed("longitude")) + req.BodyString("cityName", cityName) + req.BodyString("notes", notes) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&displayName, "display-name", "", "") + cmd.Flags().StringVar(&address, "address", "", "") + cmd.Flags().StringVar(&countryCode, "country-code", "", "") + cmd.Flags().Int64Var(&latitude, "latitude", 0, "") + cmd.Flags().Int64Var(&longitude, "longitude", 0, "") + cmd.Flags().StringVar(&cityName, "city-name", "", "") + cmd.Flags().StringVar(¬es, "notes", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspaceLocationsCmd.AddCommand(cmd) + } + + { // get + var locationId string + cmd := &cobra.Command{ + Use: "get", + Short: "Get a Workspace Location Details", + Long: "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nShows details for a location, by ID. Specify the location ID in the `locationId` parameter in the URI.\nRequires an administrator auth token with the `spark-admin:workspace_locations_read` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/workspaceLocations/{locationId}") + req.PathParam("locationId", locationId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "A unique identifier for the location.") + cmd.MarkFlagRequired("location-id") + workspaceLocationsCmd.AddCommand(cmd) + } + + { // update + var locationId string + var displayName string + var address string + var countryCode string + var latitude int64 + var longitude int64 + var id string + var cityName string + var notes string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Short: "Update a Workspace Location", + Long: "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nUpdates details for a location, by ID. Specify the location ID in the `locationId` parameter in the URI. The request should include all details for the location returned in a previous call to [Get Workspace Location Details](/docs/api/v1/workspace-locations/get-a-workspace-location-details). Omitting the optional `cityName` or `notes` fields will result in those fields no longer being defined for the location.\nRequires an administrator auth token with the `spark-admin:workspace_locations_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/workspaceLocations/{locationId}") + req.PathParam("locationId", locationId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("displayName", displayName) + req.BodyString("address", address) + req.BodyString("countryCode", countryCode) + req.BodyInt("latitude", latitude, cmd.Flags().Changed("latitude")) + req.BodyInt("longitude", longitude, cmd.Flags().Changed("longitude")) + req.BodyString("id", id) + req.BodyString("cityName", cityName) + req.BodyString("notes", notes) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "A unique identifier for the location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&displayName, "display-name", "", "") + cmd.Flags().StringVar(&address, "address", "", "") + cmd.Flags().StringVar(&countryCode, "country-code", "", "") + cmd.Flags().Int64Var(&latitude, "latitude", 0, "") + cmd.Flags().Int64Var(&longitude, "longitude", 0, "") + cmd.Flags().StringVar(&id, "id", "", "") + cmd.Flags().StringVar(&cityName, "city-name", "", "") + cmd.Flags().StringVar(¬es, "notes", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspaceLocationsCmd.AddCommand(cmd) + } + + { // delete + var locationId string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete a Workspace Location", + Long: "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nDeletes a location, by ID. The workspaces associated to that location will no longer have a location, but a new location can be reassigned to them.\nRequires an administrator auth token with the `spark-admin:workspace_locations_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/workspaceLocations/{locationId}") + req.PathParam("locationId", locationId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "A unique identifier for the location.") + cmd.MarkFlagRequired("location-id") + workspaceLocationsCmd.AddCommand(cmd) + } + + { // list-floors + var locationId string + cmd := &cobra.Command{ + Use: "list-floors", + Short: "List Workspace Location Floors", + Long: "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nList workspace location floors.\nRequires an administrator auth token with the `spark-admin:workspace_locations_read` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/workspaceLocations/{locationId}/floors") + req.PathParam("locationId", locationId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "A unique identifier for the location.") + cmd.MarkFlagRequired("location-id") + workspaceLocationsCmd.AddCommand(cmd) + } + + { // create-floor + var locationId string + var floorNumber int64 + var displayName string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-floor", + Short: "Create a Workspace Location Floor", + Long: "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nCreate a new floor in the given location. The `displayName` parameter is optional, and omitting it will result in the creation of a floor without that value set.\nRequires an administrator auth token with the `spark-admin:workspace_locations_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/workspaceLocations/{locationId}/floors") + req.PathParam("locationId", locationId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyInt("floorNumber", floorNumber, cmd.Flags().Changed("floor-number")) + req.BodyString("displayName", displayName) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "A unique identifier for the location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().Int64Var(&floorNumber, "floor-number", 0, "") + cmd.Flags().StringVar(&displayName, "display-name", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspaceLocationsCmd.AddCommand(cmd) + } + + { // get-floor + var locationId string + var floorId string + cmd := &cobra.Command{ + Use: "get-floor", + Short: "Get a Workspace Location Floor Details", + Long: "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nShows details for a floor, by ID. Specify the floor ID in the `floorId` parameter in the URI.\nRequires an administrator auth token with the `spark-admin:workspace_locations_read` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/workspaceLocations/{locationId}/floors/{floorId}") + req.PathParam("locationId", locationId) + req.PathParam("floorId", floorId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "A unique identifier for the location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&floorId, "floor-id", "", "A unique identifier for the floor.") + cmd.MarkFlagRequired("floor-id") + workspaceLocationsCmd.AddCommand(cmd) + } + + { // update-floor + var locationId string + var floorId string + var floorNumber int64 + var displayName string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-floor", + Short: "Update a Workspace Location Floor", + Long: "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nUpdates details for a floor, by ID. Specify the floor ID in the `floorId` parameter in the URI. Include all details for the floor returned by a previous call to [Get Workspace Location Floor Details](/docs/api/v1/workspace-locations/get-a-workspace-location-details). Omitting the optional `displayName` field will result in that field no longer being defined for the floor.\nRequires an administrator auth token with the `spark-admin:workspace_locations_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/workspaceLocations/{locationId}/floors/{floorId}") + req.PathParam("locationId", locationId) + req.PathParam("floorId", floorId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyInt("floorNumber", floorNumber, cmd.Flags().Changed("floor-number")) + req.BodyString("displayName", displayName) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "A unique identifier for the location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&floorId, "floor-id", "", "A unique identifier for the floor.") + cmd.MarkFlagRequired("floor-id") + cmd.Flags().Int64Var(&floorNumber, "floor-number", 0, "") + cmd.Flags().StringVar(&displayName, "display-name", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspaceLocationsCmd.AddCommand(cmd) + } + + { // delete-floor + var locationId string + var floorId string + cmd := &cobra.Command{ + Use: "delete-floor", + Short: "Delete a Workspace Location Floor", + Long: "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nDeletes a floor, by ID.\nRequires an administrator auth token with the `spark-admin:workspace_locations_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/workspaceLocations/{locationId}/floors/{floorId}") + req.PathParam("locationId", locationId) + req.PathParam("floorId", floorId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&locationId, "location-id", "", "A unique identifier for the location.") + cmd.MarkFlagRequired("location-id") + cmd.Flags().StringVar(&floorId, "floor-id", "", "A unique identifier for the floor.") + cmd.MarkFlagRequired("floor-id") + workspaceLocationsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/device/workspace_metrics.go b/cmd/device/workspace_metrics.go new file mode 100644 index 0000000..4c35381 --- /dev/null +++ b/cmd/device/workspace_metrics.go @@ -0,0 +1,118 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package device + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/Cloverhound/webex-cli/internal/timeutil" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = timeutil.ParseLastISO + +var workspaceMetricsCmd = &cobra.Command{ + Use: "workspace-metrics", + Short: "WorkspaceMetrics commands", +} + +func init() { + cmd.DeviceCmd.AddCommand(workspaceMetricsCmd) + + { // workspace-metrics + var workspaceId string + var metricName string + var aggregation string + var from string + var to string + var unit string + var sortBy string + var last string + cmd := &cobra.Command{ + Use: "workspace-metrics", + Short: "Workspace Metrics", + Long: "Get metric data for the specified workspace and metric name, optionally aggregated over a specified time period.\n\n* The `workspaceId` and `metricName` parameters indicate which workspace to fetch metrics for and what kind of metrics to get.\n\n* When executing an aggregated query, the result bucket start times will be truncated to the start of an hour or a day, depending on\nthe aggregation interval. However, the buckets will not contain data from outside the requested time range. For example, when\npassing `from=2020-10-21T10:34:56.000Z` and `aggregation=hourly`, the first output bucket would start at `2020-10-21T10:00:00.000Z`,\nbut the bucket would only aggregate data timestamped after `10:34:56`.\n\n* For aggregation modes `none` and `hourly`, the maximum time span is 48 hours. For aggregation mode `daily`, the maximum\ntime span is 30 days.\n\n* If the aggregation mode query parameter is set to `none`, the returned data in the response will be an array of items with the `deviceId`, `timestamp` and the raw `value`.\n\n* If the aggregation mode is `hourly` or `daily`, the returned data in the response will be an array of items with the `start` and `end` of the aggregation time bucket, and the `mean`, `max` and `min` values of the requested value. Note that zeroes and negative values are ignored. For example, this means that the `peopleCount` mean value should be interpreted as the average number of people in the room _when it is in use_.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/workspaceMetrics") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("workspaceId", workspaceId) + req.QueryParam("metricName", metricName) + req.QueryParam("aggregation", aggregation) + req.QueryParam("from", from) + req.QueryParam("to", to) + req.QueryParam("unit", unit) + req.QueryParam("sortBy", sortBy) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "ID of the workspace to get metrics for.") + cmd.Flags().StringVar(&metricName, "metric-name", "", "The type of data to extract.") + cmd.Flags().StringVar(&aggregation, "aggregation", "", "Time unit over which to aggregate measurements.") + cmd.Flags().StringVar(&from, "from", "", "List only data points after a specific date and time (ISO 8601 timestamp)") + cmd.Flags().StringVar(&to, "to", "", "List data points before a specific date and time (ISO 8601 timestamp)") + cmd.Flags().StringVar(&unit, "unit", "", "Output data unit (only a valid parameter if `metricName` is `temperature`).") + cmd.Flags().StringVar(&sortBy, "sort-by", "", "Sort results.") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + workspaceMetricsCmd.AddCommand(cmd) + } + + { // duration + var workspaceId string + var aggregation string + var measurement string + var from string + var to string + var last string + cmd := &cobra.Command{ + Use: "duration", + Short: "Workspace Duration Metrics", + Long: "Get metrics for how much time a workspace has been in the state given by the `measurement` parameter.\n\nFor example, if the measurement is `timeBooked` then the duration for which the workspace has been booked is returned. The `workspaceId` parameter indicates which workspace to fetch metrics for. If no `measurement` is given, the default value is `timeUsed`.\n\n* When executing a query, the result bucket start times will default to the start of an hour or a day, depending on\nthe aggregation interval. However, the buckets will not contain data from outside the requested time range. For example, when\npassing `from=2020-10-21T10:34:56.000Z` and `aggregation=hourly`, the first output bucket would start at `2020-10-21T10:00:00.000Z`,\nbut the bucket would only aggregate data timestamped after `10:34:56`.\n\n* For aggregation mode `hourly`, the maximum time span is 48 hours. For aggregation mode `daily`, the maximum\ntime span is 30 days.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/workspaceDurationMetrics") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("workspaceId", workspaceId) + req.QueryParam("aggregation", aggregation) + req.QueryParam("measurement", measurement) + req.QueryParam("from", from) + req.QueryParam("to", to) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "ID of the workspace to get metrics for.") + cmd.Flags().StringVar(&aggregation, "aggregation", "", "Unit of time over which to aggregate measurements.") + cmd.Flags().StringVar(&measurement, "measurement", "", "The measurement to return duration for.") + cmd.Flags().StringVar(&from, "from", "", "Include data points after a specific date and time (ISO 8601 timestamp).") + cmd.Flags().StringVar(&to, "to", "", "Include data points before a specific date and time (ISO 8601 timestamp).") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + workspaceMetricsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/device/workspace_personalization.go b/cmd/device/workspace_personalization.go new file mode 100644 index 0000000..d1396c7 --- /dev/null +++ b/cmd/device/workspace_personalization.go @@ -0,0 +1,85 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package device + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var workspacePersonalizationCmd = &cobra.Command{ + Use: "workspace-personalization", + Short: "WorkspacePersonalization commands", +} + +func init() { + cmd.DeviceCmd.AddCommand(workspacePersonalizationCmd) + + { // personalize + var workspaceId string + var email string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "personalize", + Short: "Personalize a Workspace", + Long: "Initializes the personalization for a given workspace for the user email provided.\n\nThe personalization process is asynchronous and thus a background task is created when this endpoint is invoked.\nAfter successful invocation of this endpoint a personalization task status URL will be returned in the `Location` header, which will point to the [Get Personalization Task](/docs/api/v1/workspace-personalization/get-personalization-task) endpoint for this workspace.\nThe task should be completed in approximately 30 seconds.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/workspaces/{workspaceId}/personalize") + req.PathParam("workspaceId", workspaceId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("email", email) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "A unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&email, "email", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspacePersonalizationCmd.AddCommand(cmd) + } + + { // get-task + var workspaceId string + cmd := &cobra.Command{ + Use: "get-task", + Short: "Get Personalization Task", + Long: "Returns the status of a personalization task for a given workspace.\n\nWhilst in progress the endpoint will return `Accepted` and provide a `Retry-After` header indicating the number of seconds a client should wait before retrying.\n\nUpon completion of the task, the endpoint will return `OK` with a body detailing if the personalization was successful and an error description if appropriate.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/workspaces/{workspaceId}/personalizationTask") + req.PathParam("workspaceId", workspaceId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "A unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + workspacePersonalizationCmd.AddCommand(cmd) + } + +} diff --git a/cmd/device/workspaces.go b/cmd/device/workspaces.go new file mode 100644 index 0000000..a0a668d --- /dev/null +++ b/cmd/device/workspaces.go @@ -0,0 +1,264 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package device + +import ( + "fmt" + "strconv" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa + +var workspacesCmd = &cobra.Command{ + Use: "workspaces", + Short: "Workspaces commands", +} + +func init() { + cmd.DeviceCmd.AddCommand(workspacesCmd) + + { // list + var orgId string + var locationId string + var workspaceLocationId string + var floorId string + var displayName string + var capacity string + var typeVal string + var start string + var max string + var calling string + var supportedDevices string + var calendar string + var deviceHostedMeetingsEnabled string + var devicePlatform string + var healthLevel string + var includeDevices string + var includeCapabilities string + var plannedMaintenance string + var customAttribute string + cmd := &cobra.Command{ + Use: "list", + Short: "List Workspaces", + Long: "List workspaces.\n\nUse query parameters to filter the response. The `orgId` parameter can only be used by admin users of another organization (such as partners). The `locationId`, `workspaceLocationId`, `indoorNavigation`, `floorId`, `capacity` and `type` fields will only be present for workspaces that have a value set for them. The special values `notSet` (for filtering on category) and `-1` (for filtering on capacity) can be used to filter for workspaces without a type and/or capacity.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/workspaces") + req.QueryParam("orgId", orgId) + req.QueryParam("locationId", locationId) + req.QueryParam("workspaceLocationId", workspaceLocationId) + req.QueryParam("floorId", floorId) + req.QueryParam("displayName", displayName) + req.QueryParam("capacity", capacity) + req.QueryParam("type", typeVal) + req.QueryParam("start", start) + req.QueryParam("max", max) + req.QueryParam("calling", calling) + req.QueryParam("supportedDevices", supportedDevices) + req.QueryParam("calendar", calendar) + req.QueryParam("deviceHostedMeetingsEnabled", deviceHostedMeetingsEnabled) + req.QueryParam("devicePlatform", devicePlatform) + req.QueryParam("healthLevel", healthLevel) + req.QueryParam("includeDevices", includeDevices) + req.QueryParam("includeCapabilities", includeCapabilities) + req.QueryParam("plannedMaintenance", plannedMaintenance) + req.QueryParam("customAttribute", customAttribute) + if config.Paginate() { + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "List workspaces in this organization. Only admin users of another organization (such as partners) may use this parameter.") + cmd.Flags().StringVar(&locationId, "location-id", "", "Location associated with the workspace. Values must originate from the /locations API and not the legacy /workspaceLocations API.") + cmd.Flags().StringVar(&workspaceLocationId, "workspace-location-id", "", "Location associated with the workspace. Both values from the /locations API and the legacy /workspaceLocations API are supported. This field is deprecated and integrations should prefer `locationId` going forward.") + cmd.Flags().StringVar(&floorId, "floor-id", "", "Floor associated with the workspace.") + cmd.Flags().StringVar(&displayName, "display-name", "", "List workspaces by display name.") + cmd.Flags().StringVar(&capacity, "capacity", "", "List workspaces with the given capacity. Must be -1 or higher. A value of -1 lists workspaces with no capacity set.") + cmd.Flags().StringVar(&typeVal, "type", "", "List workspaces by type.") + cmd.Flags().StringVar(&start, "start", "", "Offset. Default is 0.") + cmd.Flags().StringVar(&max, "max", "", "Limit the maximum number of workspaces in the response.") + cmd.Flags().StringVar(&calling, "calling", "", "List workspaces by calling type.") + cmd.Flags().StringVar(&supportedDevices, "supported-devices", "", "List workspaces by supported devices.") + cmd.Flags().StringVar(&calendar, "calendar", "", "List workspaces by calendar type.") + cmd.Flags().StringVar(&deviceHostedMeetingsEnabled, "device-hosted-meetings-enabled", "", "List workspaces enabled for device hosted meetings.") + cmd.Flags().StringVar(&devicePlatform, "device-platform", "", "List workspaces by device platform.") + cmd.Flags().StringVar(&healthLevel, "health-level", "", "List workspaces by health level.") + cmd.Flags().StringVar(&includeDevices, "include-devices", "", "Flag identifying whether to include the devices associated with the workspace in the response.") + cmd.Flags().StringVar(&includeCapabilities, "include-capabilities", "", "Flag identifying whether to include the workspace capabilities in the response.") + cmd.Flags().StringVar(&plannedMaintenance, "planned-maintenance", "", "List workspaces with given maintenance mode.") + cmd.Flags().StringVar(&customAttribute, "custom-attribute", "", "List workspaces with given custom attribute key.") + workspacesCmd.AddCommand(cmd) + } + + { // create + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a Workspace", + Long: "Create a workspace.\n\nThe `locationId`, `workspaceLocationId`, `floorId`, `indoorNavigation`, `capacity`, `type`, `notes` and `hotdeskingStatus` parameters are optional, and omitting them will result in the creation of a workspace without these values set, or set to their default. A `locationId` must be provided when the `floorId` is set. Calendar and calling can also be set for a new workspace. Omitting them will default to free calling and no calendaring. The `orgId` parameter can only be used by admin users of another organization (such as partners).\n\n* Information for Webex Calling fields may be found here: [locations](/docs/api/v1/locations/list-locations), [available numbers](/docs/api/v1/numbers/get-phone-numbers-for-an-organization-with-given-criterias) and [licenses](/docs/api/v1/licenses).\n\n* The `locationId` and `supportedDevices` fields cannot be changed once configured.\n\n* When creating a `webexCalling` workspace that is not hot desk only, a `locationId` and either a `phoneNumber` or `extension` or both is required. Furthermore, it is possible to set the `licenses` field with a list of Webex Calling license IDs, if desired. If multiple license IDs are provided, the oldest suitable one will be applied. If no licenses are supplied, the oldest suitable one from the active subscriptions will be automaticaly applied.\n\n* When creating a hot desk only workspace, `phoneNumber` and `extension` fields are not applicable. Furthermore, `deviceHostedMeetingsEnabled`, and `calendar` services are not applicable. If any of these fields are provided the API will return an error. The `calling` type is `webexCalling`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/workspaces") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspacesCmd.AddCommand(cmd) + } + + { // get + var workspaceId string + var includeDevices string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Workspace Details", + Long: "Shows details for a workspace, by ID.\n\nThe `locationId`, `workspaceLocationId`, `floorId`, `indoorNavigation`, `capacity`, `type` and `notes` fields will only be present if they have been set for the workspace. Specify the workspace ID in the `workspaceId` parameter in the URI.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/workspaces/{workspaceId}") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("includeDevices", includeDevices) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "(Required) A unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&includeDevices, "include-devices", "", "Flag identifying whether to include the devices associated with the workspace in the response.") + workspacesCmd.AddCommand(cmd) + } + + { // update + var workspaceId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Short: "Update a Workspace", + Long: "Updates details for a workspace by ID.\n\nSpecify the workspace ID in the `workspaceId` parameter in the URI. Include all details for the workspace that are present in a [GET request for the workspace details](/docs/api/v1/workspaces/get-workspace-details). Not including the optional `capacity`, `type` or `notes` fields will result in the fields no longer being defined for the workspace. A `locationId` must be provided when the `floorId` is set. The `locationId`, `workspaceLocationId`, `floorId`, `supportedDevices`, `calendar` and `calling` fields do not change when omitted from the update request.\n\n* Information for Webex Calling fields may be found here: [locations](/docs/api/v1/locations/list-locations) and [available numbers](/docs/api/v1/numbers/get-phone-numbers-for-an-organization-with-given-criterias).\n\n* Updating the `calling` parameter is only supported if the existing `calling` type is `freeCalling`, `none`, `thirdPartySipCalling` or `webexCalling`.\n\n* Updating the `calling` parameter to `none`, `thirdPartySipCalling` or `webexCalling` is not supported if the workspace contains any devices.\n\n* The `locationId` and `supportedDevices` fields cannot be changed once configured.\n\n* When updating `webexCalling` information on a workspace that is not hot desk only, a `locationId` and either a `phoneNumber` or `extension` or both is required. Furthermore, the `licenses` field can be set with a list of Webex Calling license IDs, if desired. If multiple license IDs are provided, the oldest suitable one will be applied. If a previously applied license ID is omitted, it will be replaced with one from the list provided. If the `licenses` field is omitted, the current calling license will be retained.\n\n* When specifying a hot desk only license on a hot desk only workspace, `deviceHostedMeetingsEnabled`, and `calendar` services are not supported and will be automatically disabled. In addition to this, the `phoneNumber` and `extension` will be removed from the workspace. Attempting to enable any of these services, or provide a `phoneNumber` or `extension` will result in an error. The `calling` type for these requests is `webexCalling`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/workspaces/{workspaceId}") + req.PathParam("workspaceId", workspaceId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "A unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + workspacesCmd.AddCommand(cmd) + } + + { // delete + var workspaceId string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete a Workspace", + Long: "Deletes a workspace by ID.\n\nAlso deletes all devices associated with the workspace. Any deleted devices will need to be reactivated. Specify the workspace ID in the `workspaceId` parameter in the URI.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/workspaces/{workspaceId}") + req.PathParam("workspaceId", workspaceId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "A unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + workspacesCmd.AddCommand(cmd) + } + + { // get-capabilities + var workspaceId string + cmd := &cobra.Command{ + Use: "get-capabilities", + Short: "Get Workspace Capabilities", + Long: "Shows the capabilities for a workspace by ID.\n\nReturns a set of capabilities, including whether or not the capability is supported by any device in the workspace, and if the capability is configured (enabled). For example for a specific capability like `occupancyDetection`, the API will return if the capability is supported and/or configured such that occupancy detection data will flow from the workspace (device) to the cloud. Specify the workspace ID in the `workspaceId` parameter in the URI.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/workspaces/{workspaceId}/capabilities") + req.PathParam("workspaceId", workspaceId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "A unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + workspacesCmd.AddCommand(cmd) + } + + { // get-2 + var workspaceId string + var includeDevices string + var includeCapabilities string + cmd := &cobra.Command{ + Use: "get-2", + Short: "Get Workspace Details", + Long: "Shows details for a workspace, by ID.\n\nThe `locationId`, `workspaceLocationId`, `floorId`, `indoorNavigation`, `capacity`, `type` and `notes` fields will only be present if they have been set for the workspace. Specify the workspace ID in the `workspaceId` parameter in the URI.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/workspaces/{workspaceId}") + req.PathParam("workspaceId", workspaceId) + req.QueryParam("includeDevices", includeDevices) + req.QueryParam("includeCapabilities", includeCapabilities) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&workspaceId, "workspace-id", "", "A unique identifier for the workspace.") + cmd.MarkFlagRequired("workspace-id") + cmd.Flags().StringVar(&includeDevices, "include-devices", "", "Flag identifying whether to include the devices associated with the workspace in the response.") + cmd.Flags().StringVar(&includeCapabilities, "include-capabilities", "", "Flag identifying whether to include the workspace capabilities in the response.") + workspacesCmd.AddCommand(cmd) + } + +} diff --git a/cmd/device/xapi.go b/cmd/device/xapi.go new file mode 100644 index 0000000..a5843eb --- /dev/null +++ b/cmd/device/xapi.go @@ -0,0 +1,113 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package device + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var xapiCmd = &cobra.Command{ + Use: "xapi", + Short: "Xapi commands", +} + +func init() { + cmd.DeviceCmd.AddCommand(xapiCmd) + + { // query-status + var deviceId string + var name string + cmd := &cobra.Command{ + Use: "query-status", + Short: "Query Status", + Long: "Query the current status of the Webex RoomOS Device. You specify the target device in the `deviceId` parameter in the URI. The target device is queried for statuses according to the expression in the `name` parameter.\n\nSee the [xAPI section of the Device Developers Guide](/docs/api/guides/device-developers-guide#xapi) or the [xAPI Command Reference](https://roomos.cisco.com/xapi) for a description of status expressions.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/xapi/status") + req.QueryParam("deviceId", deviceId) + req.QueryParam("name", name) + req.QueryParam("name", name) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&deviceId, "device-id", "", "The unique identifier for the Webex RoomOS Device.") + cmd.Flags().StringVar(&name, "name", "", "A list of status expressions used to query the Webex RoomOS Device. See the [xAPI section of the Device Developers Guide](/docs/api/guides/device-developers-guide#xapi) for a description of status expressions. A request can contain at most 10 different status expressions.") + xapiCmd.AddCommand(cmd) + } + + { // execute-command + var commandName string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "execute-command", + Short: "Execute Command", + Long: "Executes a command on the Webex RoomOS Device. Specify the command to execute in the `commandName` URI parameter.\n\nSee the [xAPI section of the Device Developers Guide](/docs/devices#xapi) for a description of command expressions.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/xapi/command/{commandName}") + req.PathParam("commandName", commandName) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&commandName, "command-name", "", "Command to execute on the Webex RoomOS Device.") + cmd.MarkFlagRequired("command-name") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + xapiCmd.AddCommand(cmd) + } + + { // query-schema + var deviceId string + var status string + var command string + cmd := &cobra.Command{ + Use: "query-schema", + Short: "Query Schema", + Long: "Query the schema for statuses and commands of Webex RoomOS Devices. You specify the target devices in the `deviceId` parameter in the URI. Querying command schemas requires the `spark:xapi_commands` scope and querying status schemas requires the `spark:xapi_statuses` scope.\n\nIf no `status` or `command` expressions are specified, the full schema is returned, including both status and command schemas. If you specify any expression, the response is limited to only the types you queried for. For example, if you provide a `status` expression but no `command` expression, only status schemas will be included in the result.\n\nSee the [xAPI section of the Device Developers Guide](/docs/api/guides/device-developers-guide#xapi) or the [xAPI Command Reference](https://roomos.cisco.com/xapi) for a description of status and command expressions.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/xapi/schema") + req.QueryParam("deviceId", deviceId) + req.QueryParam("deviceId", deviceId) + req.QueryParam("status", status) + req.QueryParam("status", status) + req.QueryParam("command", command) + req.QueryParam("command", command) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&deviceId, "device-id", "", "A list of device IDs to query schemas from. A request can contain at most 5 device IDs.") + cmd.Flags().StringVar(&status, "status", "", "A list of status key expressions to query schemas for. Supports patterns. Requires the `spark:xapi_statuses` scope.") + cmd.Flags().StringVar(&command, "command", "", "A list of command key expressions to query schemas for. Supports patterns. Requires the `spark:xapi_commands` scope.") + xapiCmd.AddCommand(cmd) + } + +} diff --git a/cmd/mcp/dispatcher.go b/cmd/mcp/dispatcher.go index 78b3435..dfbfb19 100644 --- a/cmd/mcp/dispatcher.go +++ b/cmd/mcp/dispatcher.go @@ -5,7 +5,6 @@ import ( "context" "encoding/json" "fmt" - "net/http" "os" "os/exec" "strings" @@ -14,7 +13,6 @@ import ( "github.com/Cloverhound/webex-cli/cmd" "github.com/Cloverhound/webex-cli/internal/readonly" - "github.com/Cloverhound/webex-cli/pkg/webexops" mcplib "github.com/mark3labs/mcp-go/mcp" "github.com/mark3labs/mcp-go/server" ) @@ -57,7 +55,7 @@ func registerTools(s *server.MCPServer, lg *usageLogger, readOnly bool) { mcplib.Description(`Optional flags as a JSON object string (e.g. {"max": "10", "paginate": "true"}). Keys are flag names without '--'.`), ), ), - makeDispatchHandler(lg, modeRead), + makeDispatchHandler(lg, true), ) if !readOnly { @@ -68,8 +66,6 @@ func registerTools(s *server.MCPServer, lg *usageLogger, readOnly bool) { "Maps to POST, PUT, PATCH, or DELETE API calls — requires explicit approval. "+ "Provide the command without the 'webex' prefix "+ "(e.g. 'messaging messages create'). "+ - "A Contact Center update replaces the whole object: fields you leave out are cleared. "+ - "Get the object first and send the full body. "+ "Use webex_read for list/get/download/export operations.", ), mcplib.WithString("command", @@ -80,7 +76,7 @@ func registerTools(s *server.MCPServer, lg *usageLogger, readOnly bool) { mcplib.Description(`Optional flags as a JSON object string (e.g. {"room-id": "xxx", "text": "Hello"}). Keys are flag names without '--'.`), ), ), - makeDispatchHandler(lg, modeWrite), + makeDispatchHandler(lg, false), ) } @@ -115,18 +111,12 @@ func registerTools(s *server.MCPServer, lg *usageLogger, readOnly bool) { ) } -type dispatchMode int - -const ( - modeRead dispatchMode = iota - modeWrite -) - -var toolNames = map[dispatchMode]string{modeRead: "webex_read", modeWrite: "webex_write"} - -// makeDispatchHandler returns the handler for webex_read or webex_write. -func makeDispatchHandler(lg *usageLogger, mode dispatchMode) func(context.Context, mcplib.CallToolRequest) (*mcplib.CallToolResult, error) { - toolName := toolNames[mode] +// makeDispatchHandler returns a handler for either webex_read (readOnly=true) or webex_write (readOnly=false). +func makeDispatchHandler(lg *usageLogger, readOnly bool) func(context.Context, mcplib.CallToolRequest) (*mcplib.CallToolResult, error) { + toolName := "webex_write" + if readOnly { + toolName = "webex_read" + } return func(ctx context.Context, req mcplib.CallToolRequest) (*mcplib.CallToolResult, error) { command := strings.TrimSpace(req.GetString("command", "")) @@ -142,12 +132,8 @@ func makeDispatchHandler(lg *usageLogger, mode dispatchMode) func(context.Contex )), nil } - // Injection guard: reject tokens containing shell-special characters, and "--", - // after which the flags the server adds would be read as arguments. + // Injection guard: reject tokens containing shell-special characters. for _, arg := range args { - if arg == "--" { - return mcplib.NewToolResultText("Error: command contains disallowed characters."), nil - } for _, ch := range dangerousChars { if strings.Contains(arg, ch) { return mcplib.NewToolResultText( @@ -157,18 +143,14 @@ func makeDispatchHandler(lg *usageLogger, mode dispatchMode) func(context.Contex } } - if action := actionToken(args); mode == modeRead && action != "" && !readonly.IsReadAction(action) { - return mcplib.NewToolResultText(fmt.Sprintf( - "Error: '%s' is a write operation (POST/PUT/PATCH/DELETE). Use the webex_write tool instead.", action, - )), nil - } - // A command's verb can read like a read while its request writes, as - // 'calling call-controls get' POSTs to retrieve a parked call, so a generated - // command is judged by its method. - if op, ok := operationOf(args); mode == modeRead && ok && op.Method != http.MethodGet && !readonly.IsQueryPOST(op.Path) { - return mcplib.NewToolResultText(fmt.Sprintf( - "Error: '%s' sends a %s request. Use the webex_write tool instead.", commandPath(args), op.Method, - )), nil + // Read-only enforcement for webex_read. + if readOnly { + action := actionToken(args) + if action != "" && !readonly.IsReadAction(action) { + return mcplib.NewToolResultText(fmt.Sprintf( + "Error: '%s' is a write operation (POST/PUT/PATCH/DELETE). Use the webex_write tool instead.", action, + )), nil + } } // Force JSON output. @@ -193,58 +175,49 @@ func makeDispatchHandler(lg *usageLogger, mode dispatchMode) func(context.Contex } } - return runCLI(ctx, lg, toolName, command, flagsStr, args), nil - } -} - -// executable is the CLI binary the tools run. Tests replace it: under go test -// os.Executable is the test binary, which would run the tests again. -var executable = os.Executable - -// runCLI runs the CLI binary with args, logs the call and returns its output. -func runCLI(ctx context.Context, lg *usageLogger, toolName, command, flagsStr string, args []string) *mcplib.CallToolResult { - exe, err := executable() - if err != nil { - return mcplib.NewToolResultText("Error: cannot resolve binary path: " + err.Error()) - } + exe, err := os.Executable() + if err != nil { + return mcplib.NewToolResultText("Error: cannot resolve binary path: " + err.Error()), nil + } - runCtx, cancel := context.WithTimeout(ctx, 60*time.Second) - defer cancel() + runCtx, cancel := context.WithTimeout(ctx, 60*time.Second) + defer cancel() - var stdout, stderr bytes.Buffer - //nolint:gosec // args are validated by the callers; exec.Command does not invoke a shell - c := exec.CommandContext(runCtx, exe, args...) - c.Stdout = &stdout - c.Stderr = &stderr + var stdout, stderr bytes.Buffer + //nolint:gosec // args are validated above; exec.Command does not invoke a shell + c := exec.CommandContext(runCtx, exe, args...) + c.Stdout = &stdout + c.Stderr = &stderr - start := time.Now() - runErr := c.Run() - elapsed := time.Since(start).Milliseconds() + start := time.Now() + runErr := c.Run() + elapsed := time.Since(start).Milliseconds() - status := "ok" - if runErr != nil { - status = "error" - } + status := "ok" + if runErr != nil { + status = "error" + } - _ = lg.Write(usageEntry{ - Time: time.Now().UTC().Format(time.RFC3339), - Tool: toolName, - Command: command, - Flags: flagsStr, - Status: status, - Ms: elapsed, - }) - - if runErr != nil { - errText := strings.TrimSpace(stderr.String()) - if errText == "" { - errText = runErr.Error() + _ = lg.Write(usageEntry{ + Time: time.Now().UTC().Format(time.RFC3339), + Tool: toolName, + Command: command, + Flags: flagsStr, + Status: status, + Ms: elapsed, + }) + + if runErr != nil { + errText := strings.TrimSpace(stderr.String()) + if errText == "" { + errText = runErr.Error() + } + return mcplib.NewToolResultText(fmt.Sprintf( + "Error running 'webex %s': %s", command, errText, + )), nil } - return mcplib.NewToolResultText(fmt.Sprintf( - "Error running 'webex %s': %s", command, errText, - )) + return successResult(stdout.String(), stderr.String()), nil } - return successResult(stdout.String(), stderr.String()) } // successResult returns a command's output, and its stderr as a second text @@ -285,15 +258,6 @@ func blockedCommand(args []string) string { return "" } -// operationOf finds the API operation a generated command sends. -func operationOf(args []string) (*webexops.Operation, bool) { - words := strings.Fields(commandPath(args)) - if len(words) != 3 { - return nil, false - } - return webexops.Find(words[0], words[1], words[2]) -} - // actionToken returns the action verb from the command args: "list" for // "calling people list" and "status" for "auth status". func actionToken(args []string) string { @@ -307,21 +271,17 @@ func actionToken(args []string) string { func handleHelp(_ context.Context, req mcplib.CallToolRequest) (*mcplib.CallToolResult, error) { command := strings.TrimSpace(req.GetString("command", "")) - // Only command words: a trailing value flag would swallow --help, and the - // command would run. - args := strings.Fields(command) - for _, arg := range args { - if strings.HasPrefix(arg, "-") { - return mcplib.NewToolResultText("Error: give the command without flags, such as 'cc team update'."), nil - } - } - args = append(args, "--help") - - exe, err := executable() + exe, err := os.Executable() if err != nil { return mcplib.NewToolResultText("Error: cannot resolve binary path: " + err.Error()), nil } + var args []string + if command != "" { + args = append(args, strings.Fields(command)...) + } + args = append(args, "--help") + ctx, cancel := context.WithTimeout(context.Background(), 15*time.Second) defer cancel() diff --git a/cmd/mcp/dispatcher_test.go b/cmd/mcp/dispatcher_test.go index bccc91c..84d58a1 100644 --- a/cmd/mcp/dispatcher_test.go +++ b/cmd/mcp/dispatcher_test.go @@ -1,14 +1,9 @@ package mcp import ( - "context" - "errors" "strings" "testing" - _ "github.com/Cloverhound/webex-cli/cmd/calling" - _ "github.com/Cloverhound/webex-cli/cmd/cc" - mcplib "github.com/mark3labs/mcp-go/mcp" "github.com/mark3labs/mcp-go/server" ) @@ -58,55 +53,3 @@ func TestReadOnlyServerOmitsWriteTool(t *testing.T) { } } } - -// stubExecutable makes any attempt to run the CLI fail visibly, so a test sees -// whether a tool call was refused before it ran anything. -func stubExecutable(t *testing.T) { - t.Helper() - saved := executable - executable = func() (string, error) { return "", errors.New("test: the command was not refused") } - t.Cleanup(func() { executable = saved }) -} - -func TestReadRefusesWritesAndDoubleDash(t *testing.T) { - stubExecutable(t) - // call-controls get POSTs to retrieve a parked call, though its verb reads. - for _, command := range []string{"cc team delete --id=team1", "calling people list --", "calling call-controls get"} { - var req mcplib.CallToolRequest - req.Params.Arguments = map[string]any{"command": command} - res, err := makeDispatchHandler(nil, modeRead)(context.Background(), req) - if err != nil { - t.Fatal(err) - } - if got := res.Content[0].(mcplib.TextContent).Text; !strings.HasPrefix(got, "Error:") || strings.Contains(got, "was not refused") { - t.Errorf("%q was run: %s", command, got) - } - } -} - -// A GET, and a POST that only queries, are reads. -func TestReadAllowsGETsAndQueryPOSTs(t *testing.T) { - stubExecutable(t) - for _, command := range []string{"cc team list", "cc search query"} { - var req mcplib.CallToolRequest - req.Params.Arguments = map[string]any{"command": command} - res, err := makeDispatchHandler(nil, modeRead)(context.Background(), req) - if err != nil { - t.Fatal(err) - } - if got := res.Content[0].(mcplib.TextContent).Text; !strings.Contains(got, "was not refused") { - t.Errorf("%q was refused: %s", command, got) - } - } -} - -// A trailing value flag would swallow --help and run the command. -func TestHelpRefusesFlags(t *testing.T) { - stubExecutable(t) - var req mcplib.CallToolRequest - req.Params.Arguments = map[string]any{"command": "cc team delete --id x --output"} - res, _ := handleHelp(context.Background(), req) - if got := res.Content[0].(mcplib.TextContent).Text; !strings.HasPrefix(got, "Error: give the command without flags") { - t.Errorf("help = %q", got) - } -} diff --git a/cmd/meetings/chats.go b/cmd/meetings/chats.go new file mode 100644 index 0000000..3de1410 --- /dev/null +++ b/cmd/meetings/chats.go @@ -0,0 +1,82 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package meetings + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var chatsCmd = &cobra.Command{ + Use: "chats", + Short: "Chats commands", +} + +func init() { + cmd.MeetingsCmd.AddCommand(chatsCmd) + + { // list-meeting + var meetingId string + var max string + var offset string + cmd := &cobra.Command{ + Use: "list-meeting", + Short: "List Meeting Chats", + Long: "Lists the meeting chats of a finished [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) specified by `meetingId`. You can set a maximum number of chats to return.\n\nUse this operation to list the chats of a finished [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) when they are ready. Please note that only **meeting instances** in state `ended` are supported for `meetingId`. **Meeting series**, **scheduled meetings** and `in-progress` **meeting instances** are not supported.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/meetings/postMeetingChats") + req.QueryParam("meetingId", meetingId) + req.QueryParam("max", max) + req.QueryParam("offset", offset) + if config.Paginate() { + req.OffsetPaging("offset", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "A unique identifier for the [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) to which the chats belong. The meeting ID of a scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meeting is not supported.") + cmd.Flags().StringVar(&max, "max", "", "Limit the maximum number of meeting chats in the response, up to 100.") + cmd.Flags().StringVar(&offset, "offset", "", "Offset from the first result that you want to fetch.") + chatsCmd.AddCommand(cmd) + } + + { // delete-meeting + var meetingId string + cmd := &cobra.Command{ + Use: "delete-meeting", + Short: "Delete Meeting Chats", + Long: "Deletes the meeting chats of a finished [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) specified by `meetingId`.\n\nUse this operation to delete the chats of a finished [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) when they are ready. Please note that only **meeting instances** in state `ended` are supported for `meetingId`. **Meeting series**, **scheduled meetings** and `in-progress` **meeting instances** are not supported.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/meetings/postMeetingChats") + req.QueryParam("meetingId", meetingId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "A unique identifier for the [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) to which the chats belong. Meeting IDs of a scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meeting are not supported.") + chatsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/meetings/closed_captions.go b/cmd/meetings/closed_captions.go new file mode 100644 index 0000000..d39b0e6 --- /dev/null +++ b/cmd/meetings/closed_captions.go @@ -0,0 +1,118 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package meetings + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var closedCaptionsCmd = &cobra.Command{ + Use: "closed-captions", + Short: "ClosedCaptions commands", +} + +func init() { + cmd.MeetingsCmd.AddCommand(closedCaptionsCmd) + + { // list-meeting + var meetingId string + cmd := &cobra.Command{ + Use: "list-meeting", + Short: "List Meeting Closed Captions", + Long: "Lists closed captions of a finished [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) specified by `meetingId`.\n\n* Closed captions are ready 15 minutes after the meeting is finished.\n\n* Only **meeting instances** in state `ended` are supported for `meetingId`. **Meeting series**, **scheduled meetings** and `in-progress` **meeting instances** are not supported.\n\n* Currently, a meeting may have only one closed caption associated with its `meetingId`. The response is a closed captions array, which may contain multiple values to allow for future expansion, but currently only one closed caption is included in the response.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/meetingClosedCaptions") + req.QueryParam("meetingId", meetingId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "Unique identifier for the [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) which the closed captions belong to. This parameter only applies to ended meeting instances. It does not apply to meeting series, scheduled meetings or scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meetings.") + closedCaptionsCmd.AddCommand(cmd) + } + + { // list-meeting-snippets + var closedCaptionId string + var meetingId string + cmd := &cobra.Command{ + Use: "list-meeting-snippets", + Short: "List Meeting Closed Caption Snippets", + Long: "Lists snippets of a meeting closed caption specified by `closedCaptionId`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/meetingClosedCaptions/{closedCaptionId}/snippets") + req.PathParam("closedCaptionId", closedCaptionId) + req.QueryParam("meetingId", meetingId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&closedCaptionId, "closed-caption-id", "", "Unique identifier for the meeting closed caption which the snippets belong to.") + cmd.MarkFlagRequired("closed-caption-id") + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "Unique identifier for the [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) which the closed caption snippets belong to. This parameter only applies to ended meeting instances. It does not apply to meeting series, scheduled meetings or scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meetings.") + closedCaptionsCmd.AddCommand(cmd) + } + + { // download-meeting-snippets + var closedCaptionId string + var format string + var meetingId string + var timezone string + cmd := &cobra.Command{ + Use: "download-meeting-snippets", + Short: "Download Meeting Closed Caption Snippets", + Long: "Download meeting closed caption snippets from the meeting closed caption specified by `closedCaptionId` formatted either as a Video Text Track (.vtt) file or plain text (.txt) file.\n\n#### Request Header\n\n* `timezone`: *[Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) for time stamps in response body, defined in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default value is `UTC` if not specified.*", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/meetingClosedCaptions/{closedCaptionId}/download") + req.PathParam("closedCaptionId", closedCaptionId) + req.QueryParam("format", format) + req.QueryParam("meetingId", meetingId) + req.Header("timezone", timezone) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&closedCaptionId, "closed-caption-id", "", "Unique identifier for the meeting closed caption.") + cmd.MarkFlagRequired("closed-caption-id") + cmd.Flags().StringVar(&format, "format", "", "Format for the downloaded meeting closed caption snippets.") + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "Unique identifier for the [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) which the closed caption snippets belong to. This parameter only applies to meeting instances in the `ended` state. It does not apply to meeting series, scheduled meetings or scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meetings.") + cmd.Flags().StringVar(&timezone, "timezone", "", "e.g. UTC") + closedCaptionsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/meetings/commands.go b/cmd/meetings/commands.go deleted file mode 100644 index d5d943f..0000000 --- a/cmd/meetings/commands.go +++ /dev/null @@ -1,13 +0,0 @@ -// Package meetings publishes the Webex Meetings API commands, built from the -// operation table, plus a handwritten recording download. -package meetings - -import ( - cmd "github.com/Cloverhound/webex-cli/cmd" - "github.com/Cloverhound/webex-cli/internal/apicmd" -) - -var groups = apicmd.Register(cmd.MeetingsCmd, "meetings") - -// recordingsCmd is the group a handwritten command joins. -var recordingsCmd = groups["recordings"] diff --git a/cmd/meetings/custom_recordings.go b/cmd/meetings/custom_recordings.go index 4cd7eeb..606a407 100644 --- a/cmd/meetings/custom_recordings.go +++ b/cmd/meetings/custom_recordings.go @@ -41,7 +41,7 @@ Examples: webex meetings recordings download --recording-id --output meeting.mp4 --host-email admin@example.com`, RunE: func(c *cobra.Command, args []string) error { // Step 1: GET recording metadata - req := client.NewRequest(config.CallingBaseURL(), "GET", "/recordings/{recordingId}") + req := client.NewRequest(config.CallingBaseURL, "GET", "/recordings/{recordingId}") req.PathParam("recordingId", recordingID) req.QueryParam("hostEmail", hostEmail) diff --git a/cmd/meetings/invitees.go b/cmd/meetings/invitees.go new file mode 100644 index 0000000..efee4e1 --- /dev/null +++ b/cmd/meetings/invitees.go @@ -0,0 +1,245 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package meetings + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var inviteesCmd = &cobra.Command{ + Use: "invitees", + Short: "Invitees commands", +} + +func init() { + cmd.MeetingsCmd.AddCommand(inviteesCmd) + + { // list-meeting + var meetingId string + var max string + var hostEmail string + var panelist string + cmd := &cobra.Command{ + Use: "list-meeting", + Short: "List Meeting Invitees", + Long: "Lists meeting invitees for a meeting with a specified `meetingId`. You can set a maximum number of invitees to return.\n\nThis operation can be used for meeting series, scheduled meetings, and ended or ongoing meeting instance objects. If the specified `meetingId` is for a meeting series, the invitees for the series will be listed; if the `meetingId` is for a scheduled meeting, the invitees for the particular scheduled meeting will be listed; if the `meetingId` is for an ended or ongoing meeting instance, the invitees for the particular meeting instance will be listed. See the [Webex Meetings](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) guide for more information about the types of meetings.\n\nThe list returned is sorted in ascending order by email address.\n\nLong result sets are split into [pages](/docs/basics#pagination).", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/meetingInvitees") + req.QueryParam("meetingId", meetingId) + req.QueryParam("max", max) + req.QueryParam("hostEmail", hostEmail) + req.QueryParam("panelist", panelist) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "Unique identifier for the meeting for which invitees are being requested. The meeting can be a meeting series, a scheduled meeting, or a meeting instance which has ended or is ongoing. The meeting ID of a scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meeting is not supported for this API.") + cmd.Flags().StringVar(&max, "max", "", "Limit the maximum number of meeting invitees in the response, up to 100.") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin on-behalf-of scopes. If set, the admin may specify the email of a user in a site they manage and the API will return meeting invitees that are hosted by that user.") + cmd.Flags().StringVar(&panelist, "panelist", "", "Filter invitees or attendees for webinars only. If `true`, returns invitees. If `false`, returns attendees. If `null`, returns both invitees and attendees.") + inviteesCmd.AddCommand(cmd) + } + + { // create-meeting + var meetingId string + var email string + var displayName string + var coHost bool + var hostEmail string + var sendEmail bool + var panelist bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-meeting", + Short: "Create a Meeting Invitee", + Long: "* Invite a person to attend a meeting.\n\n* Identify the invitee in the request body, by email address.\n\n* The `sendEmail` parameter is `true` by default and the meeting emails will be sent to the invitee's `email`. Please set `sendEmail` to `false` to prevent the invitee from receiving emails.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/meetingInvitees") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("meetingId", meetingId) + req.BodyString("email", email) + req.BodyString("displayName", displayName) + req.BodyBool("coHost", coHost, cmd.Flags().Changed("co-host")) + req.BodyString("hostEmail", hostEmail) + req.BodyBool("sendEmail", sendEmail, cmd.Flags().Changed("send-email")) + req.BodyBool("panelist", panelist, cmd.Flags().Changed("panelist")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "") + cmd.Flags().StringVar(&email, "email", "", "") + cmd.Flags().StringVar(&displayName, "display-name", "", "") + cmd.Flags().BoolVar(&coHost, "co-host", false, "") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "") + cmd.Flags().BoolVar(&sendEmail, "send-email", false, "") + cmd.Flags().BoolVar(&panelist, "panelist", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + inviteesCmd.AddCommand(cmd) + } + + { // create-meeting-2 + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-meeting-2", + Short: "Create Meeting Invitees", + Long: "* Invite people to attend a meeting in bulk.\n\n* Identify each invitee by the email address of each item in the `items` of the request body.\n\n* Each invitee should have a unique `email`.\n\n* This API limits the maximum size of `items` in the request body to 100.\n\n* The `sendEmail` parameter for each invitee is `true` by default and the meeting emails will be sent to the invitee's `email`. Please set `sendEmail` to `false` to prevent an invitee from receiving emails.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/meetingInvitees/bulkInsert") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + inviteesCmd.AddCommand(cmd) + } + + { // get-meeting + var meetingInviteeId string + var hostEmail string + cmd := &cobra.Command{ + Use: "get-meeting", + Short: "Get a Meeting Invitee", + Long: "Retrieve details for a meeting invitee identified by a `meetingInviteeId` in the URI.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/meetingInvitees/{meetingInviteeId}") + req.PathParam("meetingInviteeId", meetingInviteeId) + req.QueryParam("hostEmail", hostEmail) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingInviteeId, "meeting-invitee-id", "", "Unique identifier for the invitee whose details are being requested.") + cmd.MarkFlagRequired("meeting-invitee-id") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin on-behalf-of scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for a meeting invitee that is hosted by that user.") + inviteesCmd.AddCommand(cmd) + } + + { // update-meeting + var meetingInviteeId string + var email string + var displayName string + var coHost bool + var hostEmail string + var sendEmail bool + var panelist bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-meeting", + Short: "Update a Meeting Invitee", + Long: "Update details for a meeting invitee identified by a `meetingInviteeId` in the URI.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/meetingInvitees/{meetingInviteeId}") + req.PathParam("meetingInviteeId", meetingInviteeId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("email", email) + req.BodyString("displayName", displayName) + req.BodyBool("coHost", coHost, cmd.Flags().Changed("co-host")) + req.BodyString("hostEmail", hostEmail) + req.BodyBool("sendEmail", sendEmail, cmd.Flags().Changed("send-email")) + req.BodyBool("panelist", panelist, cmd.Flags().Changed("panelist")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingInviteeId, "meeting-invitee-id", "", "Unique identifier for the invitee to be updated. This parameter only applies to an invitee to a meeting series or a scheduled meeting. It doesn't apply to an invitee to an ended or ongoing meeting instance.") + cmd.MarkFlagRequired("meeting-invitee-id") + cmd.Flags().StringVar(&email, "email", "", "") + cmd.Flags().StringVar(&displayName, "display-name", "", "") + cmd.Flags().BoolVar(&coHost, "co-host", false, "") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "") + cmd.Flags().BoolVar(&sendEmail, "send-email", false, "") + cmd.Flags().BoolVar(&panelist, "panelist", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + inviteesCmd.AddCommand(cmd) + } + + { // delete-meeting + var meetingInviteeId string + var hostEmail string + var sendEmail string + cmd := &cobra.Command{ + Use: "delete-meeting", + Short: "Delete a Meeting Invitee", + Long: "Removes a meeting invitee identified by a `meetingInviteeId` specified in the URI. The deleted meeting invitee cannot be recovered.\n\nIf the meeting invitee is associated with a meeting series, the invitee will be removed from the entire meeting series. If the invitee is associated with a scheduled meeting, the invitee will be removed from only that scheduled meeting.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/meetingInvitees/{meetingInviteeId}") + req.PathParam("meetingInviteeId", meetingInviteeId) + req.QueryParam("hostEmail", hostEmail) + req.QueryParam("sendEmail", sendEmail) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingInviteeId, "meeting-invitee-id", "", "Unique identifier for the invitee to be removed. This parameter only applies to an invitee to a meeting series or a scheduled meeting. It doesn't apply to an invitee to an ended or ongoing meeting instance.") + cmd.MarkFlagRequired("meeting-invitee-id") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin on-behalf-of scopes. If set, the admin may specify the email of a user in a site they manage and the API will delete a meeting invitee that is hosted by that user.") + cmd.Flags().StringVar(&sendEmail, "send-email", "", "If `true`, send an email to the invitee.") + inviteesCmd.AddCommand(cmd) + } + +} diff --git a/cmd/meetings/meeting_polls.go b/cmd/meetings/meeting_polls.go new file mode 100644 index 0000000..db2b501 --- /dev/null +++ b/cmd/meetings/meeting_polls.go @@ -0,0 +1,126 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package meetings + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var meetingPollsCmd = &cobra.Command{ + Use: "meeting-polls", + Short: "MeetingPolls commands", +} + +func init() { + cmd.MeetingsCmd.AddCommand(meetingPollsCmd) + + { // list + var meetingId string + cmd := &cobra.Command{ + Use: "list", + Short: "List Meeting Polls", + Long: "Lists all the polls and the poll questions in a meeting when ready.\n\n* Only [meeting instances](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) in state `ended` or `inProgress` are supported for `meetingId`.\n\n* No pagination for this API because we don't expect a large number of questions for each meeting.\n\n
Polls are available within 15 minutes following the meeting.
", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/meetings/polls") + req.QueryParam("meetingId", meetingId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "A unique identifier for the [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) to which the polls belong.") + meetingPollsCmd.AddCommand(cmd) + } + + { // get-pollresults + var meetingId string + var max string + cmd := &cobra.Command{ + Use: "get-pollresults", + Short: "Get Meeting PollResults", + Long: "List the meeting polls, the poll's questions, and answers from the meeting when ready.\n\n* Only [meeting instances](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) in state `ended` or `inProgress` are supported for `meetingId`.\n\n* Long result sets will be split into [pages](/docs/basics#pagination).\n\n* This API is paginated by the sum of respondents from all questions in a meeting, these pagination links are returned in the response header.\n\n
Polls results are available within 15 minutes following the meeting.
", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/meetings/pollResults") + req.QueryParam("meetingId", meetingId) + req.QueryParam("max", max) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "A unique identifier for the [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) to which the polls belong.") + cmd.Flags().StringVar(&max, "max", "", "Limit the maximum number of respondents in a meeting in the response, up to 100.") + meetingPollsCmd.AddCommand(cmd) + } + + { // list-respondents-question + var pollId string + var questionId string + var meetingId string + var max string + cmd := &cobra.Command{ + Use: "list-respondents-question", + Short: "List Respondents of a Question", + Long: "Lists the respondents to a specific questions in a poll.\n\n* Only [meeting instances](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) in state `ended` or `inProgress` are supported for `meetingId`.\n\n* Long result sets are split into [pages](/docs/basics#pagination).\n\n
The list of poll respondents are available within 15 minutes following the meeting.
", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/meetings/polls/{pollId}/questions/{questionId}/respondents") + req.PathParam("pollId", pollId) + req.PathParam("questionId", questionId) + req.QueryParam("meetingId", meetingId) + req.QueryParam("max", max) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&pollId, "poll-id", "", "A unique identifier for the poll to which the respondents belong.") + cmd.MarkFlagRequired("poll-id") + cmd.Flags().StringVar(&questionId, "question-id", "", "A unique identifier for the question to which the respondents belong.") + cmd.MarkFlagRequired("question-id") + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "A unique identifier for the [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) to which the respondents belong.") + cmd.Flags().StringVar(&max, "max", "", "Limit the maximum number of respondents in a specified question in the response, up to 100.") + meetingPollsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/meetings/meeting_qa.go b/cmd/meetings/meeting_qa.go new file mode 100644 index 0000000..eb35418 --- /dev/null +++ b/cmd/meetings/meeting_qa.go @@ -0,0 +1,94 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package meetings + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var meetingQaCmd = &cobra.Command{ + Use: "meeting-qa", + Short: "MeetingQa commands", +} + +func init() { + cmd.MeetingsCmd.AddCommand(meetingQaCmd) + + { // list-q + var meetingId string + var max string + cmd := &cobra.Command{ + Use: "list-q", + Short: "List Meeting Q and A", + Long: "Lists questions and answers from a meeting, when ready.\n\nNotes:\n\n* Only [meeting instances](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) in state `ended` or `inProgress` are supported for `meetingId`.\n\n* Long result sets will be split into [pages](/docs/basics#pagination).\n\n* This API is paginated by the sum of answers in a meeting, These pagination links are returned in the response header.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/meetings/q_and_a") + req.QueryParam("meetingId", meetingId) + req.QueryParam("max", max) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "A unique identifier for the [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) which the Q&A belongs to.") + cmd.Flags().StringVar(&max, "max", "", "Limits the maximum number of answers in the response, up to 100.") + meetingQaCmd.AddCommand(cmd) + } + + { // list-answers-question + var questionId string + var meetingId string + var max string + cmd := &cobra.Command{ + Use: "list-answers-question", + Short: "List Answers of a Question", + Long: "Lists the answers to a specific question asked in a meeting.\n\n* Only [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) in state `ended` or `inProgress` are supported for `meetingId`.\n\n* Long result sets will be split into [pages](/docs/basics#pagination).", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/meetings/q_and_a/{questionId}/answers") + req.PathParam("questionId", questionId) + req.QueryParam("meetingId", meetingId) + req.QueryParam("max", max) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&questionId, "question-id", "", "The ID of a question.") + cmd.MarkFlagRequired("question-id") + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "A unique identifier for the [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) which the Q&A belongs to.") + cmd.Flags().StringVar(&max, "max", "", "Limit the maximum number of Q&A's answers in the response, up to 100.") + meetingQaCmd.AddCommand(cmd) + } + +} diff --git a/cmd/meetings/meeting_qualities.go b/cmd/meetings/meeting_qualities.go new file mode 100644 index 0000000..517398f --- /dev/null +++ b/cmd/meetings/meeting_qualities.go @@ -0,0 +1,62 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package meetings + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var meetingQualitiesCmd = &cobra.Command{ + Use: "meeting-qualities", + Short: "MeetingQualities commands", +} + +func init() { + cmd.MeetingsCmd.AddCommand(meetingQualitiesCmd) + + { // get + var meetingId string + var max string + var offset string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Meeting Qualities", + Long: "Get quality data for a meeting, by `meetingId`. Only organization administrators can retrieve meeting quality data.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/meeting/qualities") + req.QueryParam("meetingId", meetingId) + req.QueryParam("max", max) + req.QueryParam("offset", offset) + if config.Paginate() { + req.OffsetPaging("offset", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "Unique identifier for the specific meeting instance. **Note:** The `meetingId` can be obtained via the Meeting List API when meetingType=meeting. The `id` attribute in the Meeting List Response is what is needed, for example, `e5dba9613a9d455aa49f6ffdafb6e7db_I_191395283063545470`.") + cmd.Flags().StringVar(&max, "max", "", "Limit the maximum number of media sessions in the response.") + cmd.Flags().StringVar(&offset, "offset", "", "Offset from the first result that you want to fetch.") + meetingQualitiesCmd.AddCommand(cmd) + } + +} diff --git a/cmd/meetings/meeting_summary.go b/cmd/meetings/meeting_summary.go new file mode 100644 index 0000000..0945fd4 --- /dev/null +++ b/cmd/meetings/meeting_summary.go @@ -0,0 +1,140 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package meetings + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/Cloverhound/webex-cli/internal/timeutil" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = timeutil.ParseLastISO + +var meetingSummaryCmd = &cobra.Command{ + Use: "meeting-summary", + Short: "MeetingSummary commands", +} + +func init() { + cmd.MeetingsCmd.AddCommand(meetingSummaryCmd) + + { // list-usage-reports + var siteUrl string + var serviceType string + var from string + var to string + var max string + var timezone string + var last string + cmd := &cobra.Command{ + Use: "list-usage-reports", + Short: "List Meeting Usage Reports", + Long: "List meeting usage reports of all the users on the specified site by an admin. You can specify a date range and the maximum number of meeting usage reports to return.\n\nThe list returned is sorted in descending order by the date and time the meetings were started.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n* `siteUrl` is required, and the meeting usage reports of the specified site are listed. All available Webex sites can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default timezone is `UTC` if not defined.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/meetingReports/usage") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("siteUrl", siteUrl) + req.QueryParam("serviceType", serviceType) + req.QueryParam("from", from) + req.QueryParam("to", to) + req.QueryParam("max", max) + req.Header("timezone", timezone) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&siteUrl, "site-url", "", "URL of the Webex site which the API lists meeting usage reports from. All available Webex sites can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.") + cmd.Flags().StringVar(&serviceType, "service-type", "", "Meeting usage report's service-type. If `serviceType` is specified, the API filters meeting usage reports by service-type. If `serviceType` is not specified, the API returns meeting usage reports by `MeetingCenter` by default. Valid values: + `MeetingCenter` + `EventCenter` + `SupportCenter` + `TrainingCenter`") + cmd.Flags().StringVar(&from, "from", "", "Starting date and time for meeting usage reports to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`. The interval between `to` and `from` cannot exceed 30 days and `from` cannot be earlier than 90 days ago.") + cmd.Flags().StringVar(&to, "to", "", "Ending date and time for meeting usage reports to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`. The interval between `to` and `from` cannot exceed 30 days.") + cmd.Flags().StringVar(&max, "max", "", "Maximum number of meetings to include in the meetings usage report in a single page. `max` must be greater than 0 and equal to or less than `1000`.") + cmd.Flags().StringVar(&timezone, "timezone", "", "e.g. Asia/Shanghai") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + meetingSummaryCmd.AddCommand(cmd) + } + + { // list-attendee-reports + var siteUrl string + var from string + var to string + var max string + var meetingId string + var meetingNumber string + var meetingTitle string + var timezone string + var last string + cmd := &cobra.Command{ + Use: "list-attendee-reports", + Short: "List Meeting Attendee Reports", + Long: "Lists of meeting attendee reports by a date range, the maximum number of meeting attendee reports, a meeting ID, a meeting number or a meeting title.\n\nIf the requesting user is an admin, the API returns meeting attendee reports of the meetings hosted by all the users on the specified site filtered by meeting ID, meeting number or meeting title.\n\nIf it's a normal meeting host, the API returns meeting attendee reports of the meetings hosted by the user himself on the specified site filtered by meeting ID, meeting number or meeting title.\n\nThe list returned is grouped by meeting instances. Both the groups and items of each group are sorted in descending order of `joinedTime`. For example, if `meetingId` is specified and it's a meeting series ID, the returned list is grouped by meeting instances of that series. The groups are sorted in descending order of `joinedTime`, and within each group the items are also sorted in descending order of `joinedTime`. Please refer to [Meetings Overview](/docs/meetings) for details of meeting series, scheduled meeting and meeting instance.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n* `siteUrl` is required, and the meeting attendee reports of the specified site are listed. All available Webex sites can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\n* `meetingId`, `meetingNumber` and `meetingTitle` are optional parameters to query the meeting attendee reports, but at least one of them should be specified. If more than one parameter in the sequence of `meetingId`, `meetingNumber`, and `meetingTitle` are specified, the first one in the sequence is used. Currently, only ended meeting instance IDs and meeting series IDs are supported for `meetingId`. IDs of scheduled meetings or personal room meetings are not supported.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default timezone is `UTC` if not defined.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/meetingReports/attendees") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("siteUrl", siteUrl) + req.QueryParam("from", from) + req.QueryParam("to", to) + req.QueryParam("max", max) + req.QueryParam("meetingId", meetingId) + req.QueryParam("meetingNumber", meetingNumber) + req.QueryParam("meetingTitle", meetingTitle) + req.Header("timezone", timezone) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&siteUrl, "site-url", "", "URL of the Webex site which the API lists meeting attendee reports from. All available Webex sites can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.") + cmd.Flags().StringVar(&from, "from", "", "Starting date and time for the meeting attendee reports to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`. The interval between `to` and `from` cannot exceed 30 days and `from` cannot be earlier than 90 days ago.") + cmd.Flags().StringVar(&to, "to", "", "Ending date and time for the meeting attendee reports to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`. The interval between `to` and `from` cannot exceed 30 days.") + cmd.Flags().StringVar(&max, "max", "", "Maximum number of meeting attendees to include in the meeting attendee report in a single page. `max` must be greater than 0 and equal to or less than `1000`.") + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "Meeting ID for the meeting attendee reports to return. If specified, return meeting attendee reports of the specified meeting; otherwise, return meeting attendee reports of all meetings. Currently, only ended meeting instance IDs are supported. IDs of meeting series, scheduled meetings or personal room meetings are not supported.") + cmd.Flags().StringVar(&meetingNumber, "meeting-number", "", "Meeting number for the meeting attendee reports to return. If specified, return meeting attendee reports of the specified meeting; otherwise, return meeting attendee reports of all meetings.") + cmd.Flags().StringVar(&meetingTitle, "meeting-title", "", "Meeting title for the meeting attendee reports to return. If specified, return meeting attendee reports of the specified meeting; otherwise, return meeting attendee reports of all meetings.") + cmd.Flags().StringVar(&timezone, "timezone", "", "e.g. Asia/Shanghai") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + meetingSummaryCmd.AddCommand(cmd) + } + +} diff --git a/cmd/meetings/meetings.go b/cmd/meetings/meetings.go new file mode 100644 index 0000000..2ea3bb0 --- /dev/null +++ b/cmd/meetings/meetings.go @@ -0,0 +1,1862 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package meetings + +import ( + "fmt" + "strconv" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/Cloverhound/webex-cli/internal/timeutil" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa +var _ = strings.Join +var _ = timeutil.ParseLastISO + +var meetingsCmd = &cobra.Command{ + Use: "meetings", + Short: "Meetings commands", +} + +func init() { + cmd.MeetingsCmd.AddCommand(meetingsCmd) + + { // get-admin + var meetingId string + var current string + var timezone string + cmd := &cobra.Command{ + Use: "get-admin", + Short: "Get a Meeting By an Admin", + Long: "Retrieves details for a meeting with a specified meeting ID by an admin. The following sensitive attributes are hidden from the response: `agenda`, `hostKey`, `password`, `phoneAndVideoSystemPassword`, `panelistPassword`, `phoneAndVideoSystemPanelistPassword`, `webLink`, `sipAddress`, `dialInIpAddress`, `registration` and `telephony.accessCode`.\n\n* If the `meetingId` value specified is for a meeting series and `current` is `true`, the operation returns details for the current scheduled meeting of the series, i.e. the scheduled meeting ready to join or start or the upcoming scheduled meeting of the meeting series.\n\n* If the `meetingId` value specified is for a meeting series and `current` is `false` or `current` is not specified, the operation returns details for the entire meeting series.\n\n* If the `meetingId` value specified is for a scheduled meeting from a meeting series, the operation returns details for that scheduled meeting.\n\n* If the `meetingId` value specified is for a meeting instance which is happening or has happened, the operation returns details for that meeting instance.\n\n* `trackingCodes` is not supported for ended meeting instances.\n\n* To learn more about which attributes are available for different meeting states, please refer to [Available Meeting Attributes for Different Meeting States](/docs/meetings#available-meeting-attributes-for-different-meeting-states).\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) for time stamps in response body, defined in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default value is `UTC` if not specified.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/admin/meetings/{meetingId}") + req.PathParam("meetingId", meetingId) + req.QueryParam("current", current) + req.Header("timezone", timezone) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "Unique identifier for the meeting being requested.") + cmd.MarkFlagRequired("meeting-id") + cmd.Flags().StringVar(¤t, "current", "", "Whether or not to retrieve only the current scheduled meeting of the meeting series, i.e. the meeting ready to join or start or the upcoming meeting of the meeting series. If it's `true`, return details for the current scheduled meeting of the series, i.e. the scheduled meeting ready to join or start or the upcoming scheduled meeting of the meeting series. If it's `false` or not specified, return details for the entire meeting series. This parameter only applies to meeting series. The default value is `false`.") + cmd.Flags().StringVar(&timezone, "timezone", "", "e.g. UTC") + meetingsCmd.AddCommand(cmd) + } + + { // list-admin + var meetingNumber string + var webLink string + var current string + var timezone string + cmd := &cobra.Command{ + Use: "list-admin", + Short: "List Meetings By an Admin", + Long: "Retrieves details for meetings by an admin with a specified meeting number or web link. Please note that there are various products in the [Webex Suite](https://www.webex.com/collaboration-suite.html) such as `Meetings` and `Events`. Currently, only meetings of the `Meetings` product are supported by this API, meetings of others in the suite are not supported. Ad-hoc meetings created by [Create a Meeting](/docs/api/v1/meetings/create-a-meeting) with `adhoc` of `true` and a `roomId` will not be listed, but the ended and ongoing ad-hoc meeting instances will be listed. The following sensitive attributes are hidden from the response: `agenda`, `hostKey`, `password`, `phoneAndVideoSystemPassword`, `panelistPassword`, `phoneAndVideoSystemPanelistPassword`, `webLink`, `sipAddress`, `dialInIpAddress`, `registration` and `telephony.accessCode`.\n\n* If `meetingNumber` is specified, the operation returns an array of meeting objects specified by the `meetingNumber`. Each object in the array can be a scheduled meeting or a meeting series depending on whether the `current` parameter is `true` or `false`, and each object contains the simultaneous interpretation object. Please note that `meetingNumber` and `webLink` are mutually exclusive and they cannot be specified simultaneously.\n\n* If `webLink` is specified, the operation returns an array of meeting objects specified by the `webLink`. Each object in the array can be a scheduled meeting or a meeting series depending on whether the `current` parameter is `true` or `false`, and each object contains the simultaneous interpretation object. Please note that `meetingNumber` and `webLink` are mutually exclusive and they cannot be specified simultaneously.\n\n* The `current` parameter only applies to meeting series. If it's `false`, the `start` and `end` attributes of each returned meeting series object are for the first scheduled meeting of that series. If it's `true` or not specified, the `start` and `end` attributes are for the scheduled meeting which is ready to start or join or the upcoming scheduled meeting of that series.\n\n* To learn more about which attributes are available for different meeting states, please refer to [Available Meeting Attributes for Different Meeting States](/docs/meetings#available-meeting-attributes-for-different-meeting-states).\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) for time stamps in response body, defined in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default value is `UTC` if not specified.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/admin/meetings") + req.QueryParam("meetingNumber", meetingNumber) + req.QueryParam("webLink", webLink) + req.QueryParam("current", current) + req.Header("timezone", timezone) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingNumber, "meeting-number", "", "Meeting number for the meeting objects being requested. `meetingNumber` and `webLink` are mutually exclusive. If it's an exceptional meeting from a meeting series, the exceptional meeting instead of the primary meeting series is returned.") + cmd.Flags().StringVar(&webLink, "web-link", "", "URL encoded link to information page for the meeting objects being requested. `meetingNumber` and `webLink` are mutually exclusive.") + cmd.Flags().StringVar(¤t, "current", "", "Flag identifying to retrieve the current scheduled meeting of the meeting series or the entire meeting series. This parameter only applies to scenarios where `meetingNumber` is specified and the meeting is not an exceptional meeting from a meeting series. If it's `true`, return the scheduled meeting of the meeting series which is ready to join or start or the upcoming scheduled meeting of the meeting series; if it's `false`, return the entire meeting series. The default value is `true`.") + cmd.Flags().StringVar(&timezone, "timezone", "", "e.g. UTC") + meetingsCmd.AddCommand(cmd) + } + + { // create + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a Meeting", + Long: "Creates a new meeting. Regular users can schedule up to 100 meetings in 24 hours and admin users up to 3000 overall or 800 for a single user. Please note that the failed requests are also counted toward the limits.\n\n* The `spark:all` scope is required when `roomId` is specified.\n\n* If the parameter `adhoc` is `true` and `roomId` is specified, an ad-hoc meeting is created for the target room. An ad-hoc meeting is a non-recurring instant meeting for the target room which is supposed to be started immediately after being created for a quick collaboration. There's only one ad-hoc meeting for a room at the same time. So, if there's already an ongoing ad-hoc meeting for the room, the API returns this ongoing meeting instead of creating a new one. If it's a [direct](/docs/api/v1/rooms/get-room-details) room, both members of the room can create an ad-hoc meeting for the room. If it's a [group](/docs/api/v1/rooms/get-room-details) room, only room members that are in the same [organization](/docs/api/v1/organizations/get-organization-details) as the room can create an ad-hoc meeting for the room. Please note that an ad-hoc meeting is for the purpose of an instant collaboration with people in a room, user should not persist the `id` and `meetingNumber` of the ad-hoc meeting when it's been created since this meeting may become an inactive ad-hoc meeting for the room if it's not been started after being created for a while or it has been started and ended. Each time a user needs an ad-hoc meeting for a room, they should create one instead of reusing the previous persisted one. Moreover, for the same reason, no email will be sent when an ad-hoc meeting is created. Ad-hoc meetings cannot be updated by [Update a Meeting](/docs/api/v1/meetings/update-a-meeting) or deleted by [Delete a Meeting](/docs/api/v1/meetings/delete-a-meeting). Ad-hoc meetings cannot be listed by [List Meetings](/docs/api/v1/meetings/list-meetings) and the scheduled meetings of an ad-hoc meeting cannot be listed by [List Meetings of a Meeting Series](/docs/api/v1/meetings/list-meetings-of-a-meeting-series), but the ended and ongoing instances of ad-hoc meetings can be listed by [List Meetings](/docs/api/v1/meetings/list-meetings) and [List Meetings of a Meeting Series](/docs/api/v1/meetings/list-meetings-of-a-meeting-series).\n\n* If the parameter `adhoc` is `true`, `roomId` is required and the others are optional or ignored.\n\n* The default value of `title` for an ad-hoc meeting is the user's name if not specified. The following parameters for an ad-hoc meeting have default values and the user's input values will be ignored: `scheduledType` is always `meeting`; `start` and `end` are 5 minutes after the current time and 20 minutes after the current time respectively; `timezone` is `UTC`; `allowAnyUserToBeCoHost`, `allowAuthenticatedDevices`, `enabledJoinBeforeHost`, `enableConnectAudioBeforeHost` are always `true`; `allowFirstUserToBeCoHost`, `enableAutomaticLock`, `publicMeeting`, `sendEmail` are always `false`; `invitees` is the room members except \"me\"; `joinBeforeHostMinutes` is 5; `automaticLockMinutes` is null; `unlockedMeetingJoinSecurity` is `allowJoinWithLobby`. An ad-hoc meeting can be started immediately even if the `start` is 5 minutes after the current time.\n\n* The following parameters are not supported and will be ignored for an ad-hoc meeting: `templateId`, `recurrence`, `excludePassword`, `reminderTime`, `registration`, `integrationTags`, `enabledWebcastView`, and `panelistPassword`.\n\n* If the value of the parameter `recurrence` is null, a non-recurring meeting is created.\n\n* If the parameter `recurrence` has a value, a recurring meeting is created based on the rule defined by the value of `recurrence`. For a non-recurring meeting which has no `recurrence` value set, its `meetingType` is also `meetingSeries` which is a meeting series with only one occurrence in Webex meeting modeling. If you specify a `recurrence` like `FREQ=DAILY;INTERVAL=1` which never ends, the furthest date of the series is unlimited. You can also specify a `recurrence` with a very distant ending date in the future, e.g. `FREQ=DAILY;INTERVAL=1;UNTIL=21241001T000000Z`, but the actual furthest date accepted for the recurring meeting is five years from now. Specifically, if it has an ending date, there can be up to 5 occurrences for a yearly meeting, 60 occurrences for a monthly meeting, 261 occurrences for a weekly meeting, or 1826 occurrences for a daily meeting.\n\n* If the parameter `templateId` has a value, the meeting is created based on the meeting template specified by `templateId`. The list of meeting templates that is available for the authenticated user can be retrieved from [List Meeting Templates](/docs/api/v1/meetings/list-meeting-templates).\n\n* If the parameter `siteUrl` has a value, the meeting is created on the specified site. Otherwise, the meeting is created on the user's preferred site. All available Webex sites and preferred site of the user can be retrieved by `Get Site List` API.\n\n* If the parameter `scheduledType` equals \"personalRoomMeeting\", the meeting is created in the user's [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings).\n\n* If the parameter `roomId` has a value, the meeting is created for the Webex space specified by `roomId`. If `roomId` is specified but the user calling the API is not a member of the Webex space specified by `roomId`, the API will fail even if the user has the admin-level scopes or he is calling the API on behalf of another user which is specified by `hostEmail` and is a member of the Webex space.\n\n* If the parameter `enabledAudioWatermark` is `true`, `scheduledType` equals or defaults to `meeting`, and `audioConnectionOptions.audioConnectionType` equals `VoIP`, the audio for this meeting will have a watermark. In this case, a unique identifier is embedded into the audio that plays out of each Webex app and device. An administrator can use this watermark when analyzing an unauthorized recording to identify which Webex app or device was the source of the recording.\n\n* If the parameter `enabledVisualWatermark` is `true`, the video for this meeting will have a watermark. In this case, Webex superimposes a watermark image pattern on top of the meeting video and shared content to deter participants from leaking meeting information. Each participant viewing the meeting sees a watermark image pattern with their email address. If the participant is not signed in, the watermark image pattern includes their display name and email address.\n\n* The default value of `visualWatermarkOpacity` is 10 if not specified. The value must be between 5 and 80, inclusive. A smaller value means less distraction for meeting participants, while a larger value shows a clearer watermark. It's supported when `enabledVisualWatermark` is `true`.\n\n* When `enabledLiveStream` is `true`, `liveStream` must be specified. With these setting, the RTMP streaming specified by `liveStream.rtmpUrl` can be started and viewed during the meeting without any ad-hoc settings.\n\n* The `registration` can be specified when creating a meeting, but it can't be updated by [Update a Meeting](/docs/api/v1/meetings/update-a-meeting) or [Patch a Meeting](/docs/api/v1/meetings/patch-a-meeting). Create a registration form for a meeting that doesn't have one or update the registration form for a meeting that already has one by using [Update Meeting Registration Form](/docs/api/v1/meetings/update-meeting-registration-form). Delete the registration form for a meeting by using [Delete Meeting Registration Form](/docs/api/v1/meetings/delete-meeting-registration-form).\n\n* You can't create a meeting that starts 10 years or more in the future.\n\n* If all meeting invitees of a meeting should not receive emails, the host can create a meeting with invitees, and the parameter `sendEmail` is set to `false`. If only some meeting invitees should not receive emails and others can, the host should not invite these invitees along with creating a meeting request. Instead, the host should add the invitees by [Create a Meeting Invitee](/docs/api/v1/meeting-invitees/create-a-meeting-invitee) or [Create Meeting Invitees](/docs/api/v1/meeting-invitees/create-meeting-invitees) with the parameter `sendEmail` is set to `false` after the meeting has been created.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/meetings") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + meetingsCmd.AddCommand(cmd) + } + + { // list + var meetingNumber string + var webLink string + var roomId string + var meetingSeriesId string + var max string + var from string + var to string + var meetingType string + var state string + var scheduledType string + var isModified string + var hasChat string + var hasRecording string + var hasTranscription string + var hasSummary string + var hasClosedCaption string + var hasPolls string + var hasQa string + var hasSlido string + var current string + var hostEmail string + var siteUrl string + var integrationTag string + var password string + var timezone string + var last string + cmd := &cobra.Command{ + Use: "list", + Short: "List Meetings", + Long: "
The previous `List Meetings of a Meeting Series` API is merged into the [List Meetings](/docs/api/v1/meetings/list-meetings) API.
\n\nRetrieves details for meetings with a specified meeting number, web link, meeting type, etc. Please note that there are various products in the [Webex Suite](https://www.webex.com/collaboration-suite.html) such as `Meetings` and `Events`. Currently, only meetings of the `Meetings` product are supported by this API, meetings of others in the suite are not supported. Ad-hoc meetings created by [Create a Meeting](/docs/api/v1/meetings/create-a-meeting) with `adhoc` of `true` and a `roomId` will not be listed, but the ended and ongoing ad-hoc meeting instances will be listed.\n\nLists scheduled meeting and meeting instances of a meeting series identified by `meetingSeriesId`. Scheduled meetings of an ad-hoc meeting created by [Create a Meeting](/docs/api/v1/meetings/create-a-meeting) with `adhoc` of `true` and a `roomId` are not listed, but the ended and ongoing meeting instances of it are. Each _scheduled meeting_ or _meeting_ instance of a _meeting series_ has its own `start`, `end`, etc. Thus, for example, when a daily meeting has been scheduled from `2019-04-01` to `2019-04-10`, there are 10 scheduled meeting instances in this series, one instance for each day, and each one has its own attributes. When a scheduled meeting has been started and ended or is happening, there are even more ended or in-progress meeting instances.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n* The default value of `meetingSeries` will be used if `meetingType` is not specified. When listing meetings with `meetingType=meetingSeries` implicitly or explicitly, the API returns all the recurring meeting series where the user is the meeting host or an invitee to the meeting. Please note that a meeting with no `recurrence` attribute is considered a meeting series with only one occurrence and it can also be listed with `meetingType=meetingSeries`. A recurring meeting series may have multiple occurrences which are scattered over weeks, months, or years. So, any meeting series that overlaps with the time range specified by `from` and `to` will be listed. For example, a monthly meeting series with `start=2024-01-01T10:00:00Z`, `end=2024-01-01T11:00:00Z` and `recurrence=FREQ=MONTHLY;INTERVAL=1;BYMONTHDAY=1;UNTIL=20250210T000000Z` can be listed with `meetingType=meetingSeries&from=2024-10-01&to=2024-11-01` even if the `start` and `end` are not in the specified time range.\n\n* If `meetingType` is specified and equals `meeting`, it lists ongoing and ended instances of the meeting series. The default value of `from` and `to` is: `from` equals the current date and time minus 7 days, and `to` equals the current date and time.\n\n* If `meetingSeriesId` is specified, `meetingNumber`, `webLink`, `roomId`, `current`, `integrationTag`, `scheduledType`, `siteUrl` will be ignored.\n\n* If `meetingNumber` is specified, the operation returns an array of meeting objects specified by the `meetingNumber`. Each object in the array can be a scheduled meeting or a meeting series depending on whether the `current` parameter is `true` or `false`, and each object contains the simultaneous interpretation object. When `meetingNumber` is specified, parameters of `from`, `to`, `meetingType`, `state`, `isModified` and `siteUrl` will be ignored. Please note that `meetingNumber`, `webLink` and `roomId` are mutually exclusive and they cannot be specified simultaneously.\n\n* If `webLink` is specified, the operation returns an array of meeting objects specified by the `webLink`. Each object in the array can be a scheduled meeting or a meeting series depending on whether the `current` parameter is `true` or `false`, and each object contains the simultaneous interpretation object. When `webLink` is specified, parameters of `from`, `to`, `meetingType`, `state`, `isModified` and `siteUrl` will be ignored. Please note that `meetingNumber`, `webLink` and `roomId` are mutually exclusive and they cannot be specified simultaneously.\n\n* If `roomId` is specified, the operation returns an array of meeting objects of the Webex space specified by the `roomId`. When `roomId` is specified, parameters of `current`, `meetingType`, `state` and `isModified` will be ignored. The meeting objects are queried on the user's preferred site if no `siteUrl` is specified; otherwise, queried on the specified site. `meetingNumber`, `webLink` and `roomId` are mutually exclusive and they cannot be specified simultaneously.\n\n* If `state` parameter is specified, the returned array only has items in the specified state. If `state` is not specified, return items of all states.\n\n* If `meetingType` equals \"meetingSeries\", the `scheduledType` parameter can be \"meeting\", \"webinar\" or null. If `scheduledType` is specified, the returned array only has items of the specified scheduled type; otherwise, it has items of \"meeting\" and \"webinar\".\n\n* If `meetingType` equals \"scheduledMeeting\", the `scheduledType` parameter can be \"meeting\", \"webinar\", \"personalRoomMeeting\" or null. If `scheduledType` is specified, the returned array only has items of the specified scheduled type; otherwise, it has items of all scheduled types.\n\n* If `meetingType` equals \"meeting\", the `scheduledType` parameter can be \"meeting\", \"webinar\" or null. If `scheduledType` is specified, the returned array only has items of the specified scheduled type; otherwise, it has items of \"meeting\" and \"webinar\". Please note that ended or in-progress meeting instances of [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) also fall into the category of \"meeting\" `scheduledType`.\n\n* If `meetingType` equals \"meeting\", a maximum of 10000 meeting instances can be listed even if pagination is enabled.\n\n* If `isModified` parameter is specified, the returned array only has items which have been modified to exceptional meetings. This parameter only applies to scheduled meeting.\n\n* If any of the `hasChat`, `hasRecording`, `hasTranscription`, `hasSummary`, `hasClosedCaption`, `hasPolls `, `hasQA` and `hasSlido` parameters is specified, the `meetingType` must be \"meeting\" and `state` must be \"ended\". These parameters are null by default.\n\n* The `current` parameter only applies to meeting series. If it's `false`, the `start` and `end` attributes of each returned meeting series object are for the first scheduled meeting of that series. If it's `true` or not specified, the `start` and `end` attributes are for the scheduled meeting which is ready to start or join or the upcoming scheduled meeting of that series.\n\n* If `from` and `to` are specified, the operation returns an array of meeting objects in that specified time range.\n\n* If the parameter `siteUrl` has a value, the operation lists meetings on the specified site; otherwise, lists meetings on the user's all sites. All available Webex sites of the user can be retrieved by `Get Site List` API.\n\n* `trackingCodes` is not supported for ended meeting instances.\n\n* A full admin or a content admin can list all the ended and ongoing meeting instances of the organization he manages with the `meeting:admin_schedule_read` scope and `meetingType=meeting` parameter.\n\n* To learn more about which attributes are available for different meeting states, please refer to [Available Meeting Attributes for Different Meeting States](/docs/meetings#available-meeting-attributes-for-different-meeting-states).\n\n#### Request Header\n\n* `password`: Meeting password. Required when the meeting is protected by a password and the current user is not privileged to view it if they are not a host, cohost or invitee of the meeting.\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) for time stamps in response body, defined in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default value is `UTC` if not specified.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/meetings") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("meetingNumber", meetingNumber) + req.QueryParam("webLink", webLink) + req.QueryParam("roomId", roomId) + req.QueryParam("meetingSeriesId", meetingSeriesId) + req.QueryParam("max", max) + req.QueryParam("from", from) + req.QueryParam("to", to) + req.QueryParam("meetingType", meetingType) + req.QueryParam("state", state) + req.QueryParam("scheduledType", scheduledType) + req.QueryParam("isModified", isModified) + req.QueryParam("hasChat", hasChat) + req.QueryParam("hasRecording", hasRecording) + req.QueryParam("hasTranscription", hasTranscription) + req.QueryParam("hasSummary", hasSummary) + req.QueryParam("hasClosedCaption", hasClosedCaption) + req.QueryParam("hasPolls", hasPolls) + req.QueryParam("hasQA", hasQa) + req.QueryParam("hasSlido", hasSlido) + req.QueryParam("current", current) + req.QueryParam("hostEmail", hostEmail) + req.QueryParam("siteUrl", siteUrl) + req.QueryParam("integrationTag", integrationTag) + req.Header("password", password) + req.Header("timezone", timezone) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingNumber, "meeting-number", "", "Meeting number for the meeting objects being requested. `meetingNumber`, `webLink` and `roomId` are mutually exclusive. If it's an exceptional meeting from a meeting series, the exceptional meeting instead of the primary meeting series is returned.") + cmd.Flags().StringVar(&webLink, "web-link", "", "URL encoded link to information page for the meeting objects being requested. `meetingNumber`, `webLink` and `roomId` are mutually exclusive.") + cmd.Flags().StringVar(&roomId, "room-id", "", "Associated Webex space ID for the meeting objects being requested. `meetingNumber`, `webLink` and `roomId` are mutually exclusive.") + cmd.Flags().StringVar(&meetingSeriesId, "meeting-series-id", "", "Unique identifier for the meeting series. The meeting ID of a scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meeting is not supported. If `meetingSeriesId` is specified, it lists all occurrences and instances of the meeting series by default; with `meetingType` of `scheduledMeeting`, it lists occurrences; with `meetingType` of `meeting`, it lists ongoing and ended instances.") + cmd.Flags().StringVar(&max, "max", "", "Limit the maximum number of meetings in the response, up to 100. This parameter is ignored if `meetingNumber`, `webLink` or `roomId` is specified. The default value is 10.") + cmd.Flags().StringVar(&from, "from", "", "Start date and time (inclusive) for the range for which meetings are to be returned in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`. This parameter will be ignored if `meetingNumber`, `webLink` or `roomId` is specified. When `meetingType` is `meetingSeries`(either explicitly set or by default), if `to` is specified, the default value for `from` is `to` minus 7 days. If `to` is also not specified, the default value for `from` is the current date and time. When `meetingType` is `scheduledMeeting`, `from` is the same as above. When `meetingType` is `meeting`, if `to` is specified, the default value for `from` is `to` minus 7 days. If `to` is also not specified, the default value for `from` is 7 days before the current date and time.") + cmd.Flags().StringVar(&to, "to", "", "End date and time (exclusive) for the range for which meetings are to be returned in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`. This parameter will be ignored if `meetingNumber`, `webLink` or `roomId` is specified. When `meetingType` is `meetingSeries`(either explicitly set or by default), if `from` is specified, the default value for `to` is `from` plus 7 days. If `from` is also not specified, the default value for `to` is 7 days after the current date and time. When `meetingType` is `scheduledMeeting`, `to` is the same as above. When `meetingType` is `meeting`, if `from` is specified, the default value for `to` is `from` plus 7 days. If `from` is also not specified, the default value for `to` is the current date and time.") + cmd.Flags().StringVar(&meetingType, "meeting-type", "", "Meeting type for the meeting objects being requested. This parameter will be ignored if `meetingNumber`, `webLink` or `roomId` is specified.") + cmd.Flags().StringVar(&state, "state", "", "Meeting state for the meeting objects being requested. If not specified, return meetings of all states. This parameter will be ignored if `meetingNumber`, `webLink` or `roomId` is specified. Details of an `ended` meeting will only be available 15 minutes after the meeting has ended. `inProgress` meetings are not fully supported. The API will try to return details of an `inProgress` meeting 15 minutes after the meeting starts. However, it may take longer depending on the traffic. See the [Webex Meetings](/docs/meetings#meeting-states) guide for more information about the states of meetings.") + cmd.Flags().StringVar(&scheduledType, "scheduled-type", "", "Scheduled type for the meeting objects being requested.") + cmd.Flags().StringVar(&isModified, "is-modified", "", "Flag identifying whether a meeting has been modified. Only applies to scheduled meetings. If `true`, only return modified scheduled meetings; if `false`, only return unmodified scheduled meetings; if not specified, all scheduled meetings will be returned.") + cmd.Flags().StringVar(&hasChat, "has-chat", "", "Flag identifying whether a meeting has a chat log. Only applies to ended meeting instances. If `true`, only return meeting instances which have chats; if `false`, only return meeting instances which have no chats; if not specified, all meeting instances will be returned.") + cmd.Flags().StringVar(&hasRecording, "has-recording", "", "Flag identifying meetings which have been recorded. Only applies to ended meeting instances. If true, only return meeting instances which have been recorded; if false, only return meeting instances which have not been recorded; if not specified, all meeting instances will be returned.") + cmd.Flags().StringVar(&hasTranscription, "has-transcription", "", "Flag identifying meetings with transcripts. Only applies to ended meeting instances. If `true`, only return meeting instances which have transcripts; if `false`, only return meeting instances which have no transcripts; if not specified, all meeting instances will be returned.") + cmd.Flags().StringVar(&hasSummary, "has-summary", "", "Flag identifying meetings with summaries. Only applies to ended meeting instances. If `true`, only return meeting instances which have summaries; if `false`, only return meeting instances which have no summaries; if not specified, all meeting instances will be returned.") + cmd.Flags().StringVar(&hasClosedCaption, "has-closed-caption", "", "Flag identifying meetings with closed captions. Only applies to ended meeting instances. If `true`, only return meeting instances which have closed captions; if `false`, only return meeting instances which have no closed captions; if not specified, all meeting instances will be returned.") + cmd.Flags().StringVar(&hasPolls, "has-polls", "", "Flag identifying meetings with polls. Only applies to ended meeting instances. If `true`, only return meeting instances which have polls; if `false`, only return meeting instances which have no polls; if not specified, all meeting instances will be returned.") + cmd.Flags().StringVar(&hasQa, "has-qa", "", "Flag identifying meetings with Q&A. Only applies to ended meeting instances. If `true`, only return meeting instances which have Q&A; if `false`, only return meeting instances which have no Q&A; if not specified, all meeting instances will be returned.") + cmd.Flags().StringVar(&hasSlido, "has-slido", "", "Flag identifying meetings with Slido interactions. Only applies to ended meeting instances. If `true`, only return meeting instances which have Slido interactions like Q&A or polling; if `false`, only return meeting instances which have no Slido interactions; if not specified, all meeting instances will be returned.") + cmd.Flags().StringVar(¤t, "current", "", "Flag identifying to retrieve the current scheduled meeting of the meeting series or the entire meeting series. This parameter only applies to scenarios where the meeting is not an exceptional meeting from a meeting series. If it's `true`, return the scheduled meeting of the meeting series which is ready to join or start or the upcoming scheduled meeting of the meeting series; if it's `false`, return the entire meeting series.") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API returns meetings as if the user calling the API were the user of `hostEmail` themself, and the meetings returned by the API include the meetings where the user of `hostEmail` is the meeting host and those where they are an invitee.") + cmd.Flags().StringVar(&siteUrl, "site-url", "", "URL of the Webex site which the API lists meetings from. If not specified, the API lists meetings from user's all sites. All available Webex sites of the user can be retrieved by `Get Site List` API.") + cmd.Flags().StringVar(&integrationTag, "integration-tag", "", "External key created by an integration application. This parameter is used by the integration application to query meetings by a key in its own domain such as a Zendesk ticket ID, a Jira ID, a Salesforce Opportunity ID, etc. An integrationTag created by one client cannot be accessed or used as a filtering parameter by another client. For example, if a meeting has an `integrationTag` of \"Sales\" which is created by the client behind the developer portal, then this integrationTag can't be accessed on the meeting or its recordings by another client. Neither can it be used to filter meetings or recordings by a client other than the one that created the integrationTag of \"Sales\".") + cmd.Flags().StringVar(&password, "password", "", "e.g. BgJep@4323") + cmd.Flags().StringVar(&timezone, "timezone", "", "e.g. UTC") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + meetingsCmd.AddCommand(cmd) + } + + { // get + var meetingId string + var current string + var hostEmail string + var password string + var timezone string + cmd := &cobra.Command{ + Use: "get", + Short: "Get a Meeting", + Long: "Retrieves details for a meeting with a specified meeting ID.\n\n* If the `meetingId` value specified is for a meeting series and `current` is `true`, the operation returns details for the current scheduled meeting of the series, i.e. the scheduled meeting ready to join or start or the upcoming scheduled meeting of the meeting series.\n\n* If the `meetingId` value specified is for a meeting series and `current` is `false` or `current` is not specified, the operation returns details for the entire meeting series.\n\n* If the `meetingId` value specified is for a scheduled meeting from a meeting series, the operation returns details for that scheduled meeting.\n\n* If the `meetingId` value specified is for a meeting instance which is happening or has happened, the operation returns details for that meeting instance.\n\n* `trackingCodes` is not supported for ended meeting instances.\n\n* To learn more about which attributes are available for different meeting states, please refer to [Available Meeting Attributes for Different Meeting States](/docs/meetings#available-meeting-attributes-for-different-meeting-states).\n\n#### Request Header\n\n* `password`: Meeting password. Required when the meeting is protected by a password and the current user is not privileged to view it if they are not a host, cohost or invitee of the meeting.\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) for time stamps in response body, defined in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default value is `UTC` if not specified.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/meetings/{meetingId}") + req.PathParam("meetingId", meetingId) + req.QueryParam("current", current) + req.QueryParam("hostEmail", hostEmail) + req.Header("password", password) + req.Header("timezone", timezone) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "Unique identifier for the meeting being requested.") + cmd.MarkFlagRequired("meeting-id") + cmd.Flags().StringVar(¤t, "current", "", "Whether or not to retrieve only the current scheduled meeting of the meeting series, i.e. the meeting ready to join or start or the upcoming meeting of the meeting series. If it's `true`, return details for the current scheduled meeting of the series, i.e. the scheduled meeting ready to join or start or the upcoming scheduled meeting of the meeting series. If it's `false` or not specified, return details for the entire meeting series. This parameter only applies to meeting series.") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for a meeting that is hosted by that user.") + cmd.Flags().StringVar(&password, "password", "", "e.g. BgJep@4323") + cmd.Flags().StringVar(&timezone, "timezone", "", "e.g. UTC") + meetingsCmd.AddCommand(cmd) + } + + { // patch + var meetingId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "patch", + Short: "Patch a Meeting", + Long: "
\nIf only guests are waiting in the lobby and the host or cohost has not started the meeting, the meeting state remains `inProgress` for 5 minutes after the last guest leaves. The meeting cannot be patched during this time. If the meeting is started by the host or cohost and then ended normally, it can be patched immediately after it ends.\n
\n\nUpdates details for a meeting with a specified meeting ID. This operation applies to meeting series and scheduled meetings. It doesn't apply to ended or in-progress meeting instances. Ad-hoc meetings created by [Create a Meeting](/docs/api/v1/meetings/create-a-meeting) with `adhoc` of `true` and a `roomId` cannot be updated.\n\n* If the `meetingId` value specified is for a scheduled meeting, the operation updates that scheduled meeting without impact on other scheduled meeting of the parent meeting series.\n\n* If the `meetingId` value specified is for a meeting series, the operation updates the entire meeting series. **Note**: If the value of `start`, `end`, or `recurrence` for the meeting series is changed, any exceptional scheduled meeting in this series is cancelled when the meeting series is updated.\n\n* The `agenda`, `recurrence`, and `trackingCodes` attributes can be specified as `null` so that these attributes become null and hidden from the response after the patch. Note that it's the keyword `null` not the string \"null\".\n\n* If the parameter `recurrence` has a value, a recurring meeting is created based on the rule defined by the value of `recurrence`. For a non-recurring meeting which has no `recurrence` value set, its `meetingType` is also `meetingSeries` which is a meeting series with only one occurrence in Webex meeting modeling. If you specify a `recurrence` like `FREQ=DAILY;INTERVAL=1` which never ends, the furthest date of the series is unlimited. You can also specify a `recurrence` with a very distant ending date in the future, e.g. `FREQ=DAILY;INTERVAL=1;UNTIL=21241001T000000Z`, but the actual furthest date accepted for the recurring meeting is five years from now. Specifically, if it has an ending date, there can be up to 5 occurrences for a yearly meeting, 60 occurrences for a monthly meeting, 261 occurrences for a weekly meeting, or 1826 occurrences for a daily meeting.\n\n* You can't update a meeting that starts 10 years or more in the future.\n\n* Updating a meeting in the API that was created via a calendar connector is not allowed. The meeting may be updated in Webex, but the calendar event may not be updated, resulting in duplicate entries. This action is therefore blocked. In case you must overwrite this behavior, please contact devsupport@webex.com.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PATCH", "/meetings/{meetingId}") + req.PathParam("meetingId", meetingId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "Unique identifier for the meeting to be updated. This parameter applies to meeting series and scheduled meetings. It doesn't apply to ended or in-progress meeting instances. Please note that currently meeting ID of a scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meeting is not supported for this API.") + cmd.MarkFlagRequired("meeting-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + meetingsCmd.AddCommand(cmd) + } + + { // update + var meetingId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Short: "Update a Meeting", + Long: "
\nThe PUT method is still supported and behaves the same as before, will be deprecated in the future. Use the PATCH method instead.\n
\n\n
\nIf only guests are waiting in the lobby and the host or cohost has not started the meeting, the meeting state remains `inProgress` for 5 minutes after the last guest leaves. The meeting cannot be updated during this time. If the meeting is started by the host or cohost and then ended normally, it can be updated immediately after it ends.\n
\n\nUpdates details for a meeting with a specified meeting ID. This operation applies to meeting series and scheduled meetings. It doesn't apply to ended or in-progress meeting instances. Ad-hoc meetings created by [Create a Meeting](/docs/api/v1/meetings/create-a-meeting) with `adhoc` of `true` and a `roomId` cannot be updated.\n\n* If the `meetingId` value specified is for a scheduled meeting, the operation updates that scheduled meeting without impact on other scheduled meeting of the parent meeting series.\n\n* If the `meetingId` value specified is for a meeting series, the operation updates the entire meeting series. **Note**: If the value of `start`, `end`, or `recurrence` for the meeting series is changed, any exceptional scheduled meeting in this series is cancelled when the meeting series is updated.\n\n* If the parameter `recurrence` has a value, a recurring meeting is created based on the rule defined by the value of `recurrence`. For a non-recurring meeting which has no `recurrence` value set, its `meetingType` is also `meetingSeries` which is a meeting series with only one occurrence in Webex meeting modeling. If you specify a `recurrence` like `FREQ=DAILY;INTERVAL=1` which never ends, the furthest date of the series is unlimited. You can also specify a `recurrence` with a very distant ending date in the future, e.g. `FREQ=DAILY;INTERVAL=1;UNTIL=21241001T000000Z`, but the actual furthest date accepted for the recurring meeting is five years from now. Specifically, if it has an ending date, there can be up to 5 occurrences for a yearly meeting, 60 occurrences for a monthly meeting, 261 occurrences for a weekly meeting, or 1826 occurrences for a daily meeting.\n\n* You can't update a meeting that starts 10 years or more in the future.\n\n* Updating a meeting created using the API via a calendar connector is not supported. While the meeting may be updated in Webex, the calendar event may not be updated resulting in duplicate entries. If you need to override this behavior, contact devsupport@webex.com.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/meetings/{meetingId}") + req.PathParam("meetingId", meetingId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "Unique identifier for the meeting to be updated. This parameter applies to meeting series and scheduled meetings. It doesn't apply to ended or in-progress meeting instances. Please note that currently meeting ID of a scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meeting is not supported for this API.") + cmd.MarkFlagRequired("meeting-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + meetingsCmd.AddCommand(cmd) + } + + { // delete + var meetingId string + var hostEmail string + var sendEmail string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete a Meeting", + Long: "
\nIf only guests are waiting in the lobby and the host or cohost has not started the meeting, the meeting state remains `inProgress` for 5 minutes after the last guest leaves. The meeting cannot be deleted during this time. If the meeting is started by the host or cohost and then ended normally, it can be deleted immediately after it ends.\n
\n\nDeletes a meeting with a specified meeting ID. The deleted meeting cannot be recovered. This operation applies to meeting series and scheduled meetings. It doesn't apply to ended or in-progress meeting instances. Ad-hoc meetings created by [Create a Meeting](/docs/api/v1/meetings/create-a-meeting) with `adhoc` of `true` and a `roomId` cannot be deleted.\n\n* If the `meetingId` value specified is for a scheduled meeting, the operation deletes that scheduled meeting without impact on other scheduled meeting of the parent meeting series.\n\n* If the `meetingId` value specified is for a meeting series, the operation deletes the entire meeting series.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/meetings/{meetingId}") + req.PathParam("meetingId", meetingId) + req.QueryParam("hostEmail", hostEmail) + req.QueryParam("sendEmail", sendEmail) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "Unique identifier for the meeting to be deleted. This parameter applies to meeting series and scheduled meetings. It doesn't apply to ended or in-progress meeting instances.") + cmd.MarkFlagRequired("meeting-id") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will delete a meeting that is hosted by that user.") + cmd.Flags().StringVar(&sendEmail, "send-email", "", "Whether or not to send emails to host and invitees. It is an optional field and default value is true.") + meetingsCmd.AddCommand(cmd) + } + + { // join + var meetingId string + var meetingNumber string + var webLink string + var joinDirectly bool + var email string + var displayName string + var password string + var expirationMinutes int64 + var registrationId string + var hostEmail string + var createJoinLinkAsWebLink bool + var createStartLinkAsWebLink bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "join", + Short: "Join a Meeting", + Long: "Retrieves links for a meeting with a specified `meetingId`, `meetingNumber`, or `webLink` that allow users to start or join the meeting directly without logging in and entering a password.\n\n* Please note that `meetingId`, `meetingNumber` and `webLink` are mutually exclusive and they cannot be specified simultaneously.\n\n* If `joinDirectly` is true or not specified, the response will have HTTP response code 302 and the request will be redirected to `joinLink`; otherwise, the response will have HTTP response code 200 and `joinLink` will be returned in response body.\n\n* Only the meeting host or cohost can generate the `startLink`.\n\n* An admin user or a [Service App](/docs/service-apps) can generate the `startLink` and `joinLink` on behalf of another meeting host using the `hostEmail` parameter. When a [Service App](/docs/service-apps) generates the `startLink` and `joinLink`, the `hostEmail` parameter is required. The `hostEmail` parameter only applies to meetings, not webinars.\n\n* For Service Apps, `hostEmail` must be provided in the request.\n\n* Generating a join link or a start link before the time specified by `joinBeforeHostMinutes` for a webinar is not supported.\n\n* The `joinLink` and `startLink` generated by the API only work in a web browser, not in mobile apps. When the `joinLink` or `startLink` is used in a mobile app, the user can't join or start the meeting directly by the dial-in or dial-out phone numbers displayed in the app.\n\n* When `createJoinLinkAsWebLink` or `createStartLinkAsWebLink` is set to true, a user cannot join or start the meeting using the `joinLink` or `startLink` returned in the response, and must complete the login flow. Those options are typically useful if mandatory user login is configured in Control Hub.\n\n* Appending the parameter `&launchApp=true` to the weblink will launch directly into the browser experience without showing the user the download selection for the native client.\n\n* [Embedded Apps](/docs/embedded-apps) are not supported in a meeting which is started from the `startLink` generated by this API.\n\n
When the `email` or `displayName` is omitted from the API request, the backend inserts the data from the user making the request. That may lead to situations where an attendee is shown in the roster with the hostname which should be avoided. In the future, we will make those two fields required.
", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/meetings/join") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("meetingId", meetingId) + req.BodyString("meetingNumber", meetingNumber) + req.BodyString("webLink", webLink) + req.BodyBool("joinDirectly", joinDirectly, cmd.Flags().Changed("join-directly")) + req.BodyString("email", email) + req.BodyString("displayName", displayName) + req.BodyString("password", password) + req.BodyInt("expirationMinutes", expirationMinutes, cmd.Flags().Changed("expiration-minutes")) + req.BodyString("registrationId", registrationId) + req.BodyString("hostEmail", hostEmail) + req.BodyBool("createJoinLinkAsWebLink", createJoinLinkAsWebLink, cmd.Flags().Changed("create-join-link-as-web-link")) + req.BodyBool("createStartLinkAsWebLink", createStartLinkAsWebLink, cmd.Flags().Changed("create-start-link-as-web-link")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "") + cmd.Flags().StringVar(&meetingNumber, "meeting-number", "", "") + cmd.Flags().StringVar(&webLink, "web-link", "", "") + cmd.Flags().BoolVar(&joinDirectly, "join-directly", false, "") + cmd.Flags().StringVar(&email, "email", "", "") + cmd.Flags().StringVar(&displayName, "display-name", "", "") + cmd.Flags().StringVar(&password, "password", "", "") + cmd.Flags().Int64Var(&expirationMinutes, "expiration-minutes", 0, "") + cmd.Flags().StringVar(®istrationId, "registration-id", "", "") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "") + cmd.Flags().BoolVar(&createJoinLinkAsWebLink, "create-join-link-as-web-link", false, "") + cmd.Flags().BoolVar(&createStartLinkAsWebLink, "create-start-link-as-web-link", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + meetingsCmd.AddCommand(cmd) + } + + { // list-templates + var templateType string + var locale string + var isDefault string + var isStandard string + var hostEmail string + var siteUrl string + cmd := &cobra.Command{ + Use: "list-templates", + Short: "List Meeting Templates", + Long: "Retrieves the list of meeting templates that is available for the authenticated user.\n\nThere are separate lists of meeting templates for different `templateType`, `locale` and `siteUrl`.\n\n* If `templateType` is specified, the operation returns an array of meeting template objects specified by the `templateType`; otherwise, returns an array of meeting template objects of all template types.\n\n* If `locale` is specified, the operation returns an array of meeting template objects specified by the `locale`; otherwise, returns an array of meeting template objects of the default `en_US` locale. Refer to [Meeting Template Locales](/docs/meetings#meeting-template-locales) for all the locales supported by Webex.\n\n* If the parameter `siteUrl` has a value, the operation lists meeting templates on the specified site; otherwise, lists meeting templates on the user's preferred site. All available Webex sites and preferred site of the user can be retrieved by `Get Site List` API.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/meetings/templates") + req.QueryParam("templateType", templateType) + req.QueryParam("locale", locale) + req.QueryParam("isDefault", isDefault) + req.QueryParam("isStandard", isStandard) + req.QueryParam("hostEmail", hostEmail) + req.QueryParam("siteUrl", siteUrl) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&templateType, "template-type", "", "Meeting template type for the meeting template objects being requested. If not specified, return meeting templates of all types.") + cmd.Flags().StringVar(&locale, "locale", "", "Locale for the meeting template objects being requested. If not specified, return meeting templates of the default `en_US` locale. Refer to [Meeting Template Locales](/docs/meetings#meeting-template-locales) for all the locales supported by Webex.") + cmd.Flags().StringVar(&isDefault, "is-default", "", "The value is `true` or `false`. If it's `true`, return the default meeting templates; if it's `false`, return the non-default meeting templates. If it's not specified, return both default and non-default meeting templates.") + cmd.Flags().StringVar(&isStandard, "is-standard", "", "The value is `true` or `false`. If it's `true`, return the standard meeting templates; if it's `false`, return the non-standard meeting templates. If it's not specified, return both standard and non-standard meeting templates.") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will return meeting templates that are available for that user.") + cmd.Flags().StringVar(&siteUrl, "site-url", "", "URL of the Webex site which the API lists meeting templates from. If not specified, the API lists meeting templates from user's preferred site. All available Webex sites and preferred site of the user can be retrieved by `Get Site List` API.") + meetingsCmd.AddCommand(cmd) + } + + { // get-template + var templateId string + var hostEmail string + var timezone string + cmd := &cobra.Command{ + Use: "get-template", + Short: "Get a Meeting Template", + Long: "Retrieves details for a meeting template with a specified meeting template ID.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) for time stamps in response body, defined in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default value is `UTC` if not specified.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/meetings/templates/{templateId}") + req.PathParam("templateId", templateId) + req.QueryParam("hostEmail", hostEmail) + req.Header("timezone", timezone) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&templateId, "template-id", "", "Unique identifier for the meeting template being requested.") + cmd.MarkFlagRequired("template-id") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will return the meeting template that is available for that user.") + cmd.Flags().StringVar(&timezone, "timezone", "", "e.g. UTC") + meetingsCmd.AddCommand(cmd) + } + + { // get-control-status + var meetingId string + cmd := &cobra.Command{ + Use: "get-control-status", + Short: "Get Meeting Control Status", + Long: `Get the meeting control of a live meeting, which is consisted of meeting control status on "locked" and "recording" to reflect whether the meeting is currently locked and there is recording in progress.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/meetings/controls") + req.QueryParam("meetingId", meetingId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "Unique identifier for the meeting. Does not support meeting IDs for a scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meeting.") + meetingsCmd.AddCommand(cmd) + } + + { // update-control-status + var meetingId string + var recordingStarted bool + var recordingPaused bool + var locked bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-control-status", + Short: "Update Meeting Control Status", + Long: `To start, pause, resume, or stop a meeting recording; To lock or unlock an on-going meeting.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/meetings/controls") + req.QueryParam("meetingId", meetingId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("recordingStarted", recordingStarted, cmd.Flags().Changed("recording-started")) + req.BodyBool("recordingPaused", recordingPaused, cmd.Flags().Changed("recording-paused")) + req.BodyBool("locked", locked, cmd.Flags().Changed("locked")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "Unique identifier for the meeting. Does not support meeting IDs for a scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meeting.") + cmd.Flags().BoolVar(&recordingStarted, "recording-started", false, "") + cmd.Flags().BoolVar(&recordingPaused, "recording-paused", false, "") + cmd.Flags().BoolVar(&locked, "locked", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + meetingsCmd.AddCommand(cmd) + } + + { // list-session-types + var hostEmail string + var siteUrl string + cmd := &cobra.Command{ + Use: "list-session-types", + Short: "List Meeting Session Types", + Long: `List all the meeting session types enabled for a given user.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/meetings/sessionTypes") + req.QueryParam("hostEmail", hostEmail) + req.QueryParam("siteUrl", siteUrl) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email address for the user. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will list all the meeting session types enabled for the user.") + cmd.Flags().StringVar(&siteUrl, "site-url", "", "Webex site URL to query. If `siteUrl` is not specified, the users' preferred site will be used. If the authorization token has the admin-level scopes, the admin can set the Webex site URL on behalf of the user specified in the `hostEmail` parameter.") + meetingsCmd.AddCommand(cmd) + } + + { // get-session-type + var sessionTypeId string + var hostEmail string + var siteUrl string + cmd := &cobra.Command{ + Use: "get-session-type", + Short: "Get a Meeting Session Type", + Long: `Retrieves details for a meeting session type with a specified session type ID.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/meetings/sessionTypes/{sessionTypeId}") + req.PathParam("sessionTypeId", sessionTypeId) + req.QueryParam("hostEmail", hostEmail) + req.QueryParam("siteUrl", siteUrl) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&sessionTypeId, "session-type-id", "", "A unique identifier for the sessionType.") + cmd.MarkFlagRequired("session-type-id") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email address for the user. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will get a meeting session type with the specified session type ID enabled for the user.") + cmd.Flags().StringVar(&siteUrl, "site-url", "", "Webex site URL to query. If `siteUrl` is not specified, the users' preferred site will be used. If the authorization token has the admin-level scopes, the admin can set the Webex site URL on behalf of the user specified in the `hostEmail` parameter.") + meetingsCmd.AddCommand(cmd) + } + + { // get-registration-form + var meetingId string + var current string + var hostEmail string + cmd := &cobra.Command{ + Use: "get-registration-form", + Short: "Get registration form for a meeting", + Long: `Get a meeting's registration form to understand which fields are required.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/meetings/{meetingId}/registration") + req.PathParam("meetingId", meetingId) + req.QueryParam("current", current) + req.QueryParam("hostEmail", hostEmail) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "Unique identifier for the meeting. Only the ID of the meeting series is supported for meetingId. IDs of scheduled meetings, meeting instances, or scheduled personal room meetings are not supported. See the [Meetings Overview](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) for more information about meeting types.") + cmd.MarkFlagRequired("meeting-id") + cmd.Flags().StringVar(¤t, "current", "", "Whether or not to retrieve only the current scheduled meeting of the meeting series, i.e. the meeting ready to join or start or the upcoming meeting of the meeting series. If it's `true`, return details for the current scheduled meeting of the series, i.e. the scheduled meeting ready to join or start or the upcoming scheduled meeting of the meeting series. If it's `false` or not specified, return details for the entire meeting series. This parameter only applies to meeting series.") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for a meeting that is hosted by that user.") + meetingsCmd.AddCommand(cmd) + } + + { // update-registration-form + var meetingId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-registration-form", + Short: "Update Meeting Registration Form", + Long: `Enable or update a registration form for a meeting.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/meetings/{meetingId}/registration") + req.PathParam("meetingId", meetingId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "Unique identifier for the meeting. Only the ID of the meeting series is supported for meetingId. IDs of scheduled meetings, meeting instances, or scheduled personal room meetings are not supported. See the [Meetings Overview](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) for more information about meeting types.") + cmd.MarkFlagRequired("meeting-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + meetingsCmd.AddCommand(cmd) + } + + { // delete-registration-form + var meetingId string + var hostEmail string + cmd := &cobra.Command{ + Use: "delete-registration-form", + Short: "Delete Meeting Registration Form", + Long: `Disable the registration form for a meeting.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/meetings/{meetingId}/registration") + req.PathParam("meetingId", meetingId) + req.Header("hostEmail", hostEmail) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "Unique identifier for the meeting. Only the ID of the meeting series is supported for meetingId. IDs of scheduled meetings, meeting instances, or scheduled personal room meetings are not supported. See the [Meetings Overview](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) for more information about meeting types.") + cmd.MarkFlagRequired("meeting-id") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "e.g. `brenda.song@example.com` (string, optional) - Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin on-behalf-of scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for an interpreter of the meeting that is hosted by that user.") + meetingsCmd.AddCommand(cmd) + } + + { // register-registrant + var meetingId string + var current string + var hostEmail string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "register-registrant", + Short: "Register a Meeting Registrant", + Long: `Register a new registrant for a meeting. When a meeting or webinar is created, this API can only be used if Registration is checked on the page or the registration attribute is specified through the [Create a Meeting](/docs/api/v1/meetings/create-a-meeting) API.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/meetings/{meetingId}/registrants") + req.PathParam("meetingId", meetingId) + req.QueryParam("current", current) + req.QueryParam("hostEmail", hostEmail) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "Unique identifier for the meeting. Only the ID of the meeting series is supported for meetingId. IDs of scheduled meetings, meeting instances, or scheduled personal room meetings are not supported. See the [Meetings Overview](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) for more information about meeting types.") + cmd.MarkFlagRequired("meeting-id") + cmd.Flags().StringVar(¤t, "current", "", "Whether or not to retrieve only the current scheduled meeting of the meeting series, i.e. the meeting ready to join or start or the upcoming meeting of the meeting series. If it's `true`, return details for the current scheduled meeting of the series, i.e. the scheduled meeting ready to join or start or the upcoming scheduled meeting of the meeting series. If it's `false` or not specified, return details for the entire meeting series. This parameter only applies to meeting series.") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for a meeting that is hosted by that user.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + meetingsCmd.AddCommand(cmd) + } + + { // list-registrants + var meetingId string + var max string + var hostEmail string + var current string + var email string + var registrationTimeFrom string + var registrationTimeTo string + cmd := &cobra.Command{ + Use: "list-registrants", + Short: "List Meeting Registrants", + Long: `Meeting's host and cohost can retrieve the list of registrants for a meeting with a specified meeting Id.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/meetings/{meetingId}/registrants") + req.PathParam("meetingId", meetingId) + req.QueryParam("max", max) + req.QueryParam("hostEmail", hostEmail) + req.QueryParam("current", current) + req.QueryParam("email", email) + req.QueryParam("registrationTimeFrom", registrationTimeFrom) + req.QueryParam("registrationTimeTo", registrationTimeTo) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "Unique identifier for the meeting. Only the ID of the meeting series is supported for meetingId. IDs of scheduled meetings, meeting instances, or scheduled personal room meetings are not supported. See the [Meetings Overview](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) for more information about meeting types.") + cmd.MarkFlagRequired("meeting-id") + cmd.Flags().StringVar(&max, "max", "", "Limit the maximum number of registrants in the response, up to 100. The default is 10.") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for a meeting that is hosted by that user.") + cmd.Flags().StringVar(¤t, "current", "", "Whether or not to retrieve only the current scheduled meeting of the meeting series, i.e. the meeting ready to join or start or the upcoming meeting of the meeting series. If it's `true`, return details for the current scheduled meeting of the series, i.e. the scheduled meeting ready to join or start or the upcoming scheduled meeting of the meeting series. If it's `false` or not specified, return details for the entire meeting series. This parameter only applies to meeting series.") + cmd.Flags().StringVar(&email, "email", "", "Registrant's email to filter registrants.") + cmd.Flags().StringVar(®istrationTimeFrom, "registration-time-from", "", "The time registrants register a meeting starts from the specified date and time (inclusive) in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. If `registrationTimeFrom` is not specified, it equals `registrationTimeTo` minus 7 days.") + cmd.Flags().StringVar(®istrationTimeTo, "registration-time-to", "", "The time registrants register a meeting before the specified date and time (exclusive) in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. If `registrationTimeTo` is not specified, it equals `registrationTimeFrom` plus 7 days. The interval between `registrationTimeFrom` and `registrationTimeTo` must be within 90 days.") + meetingsCmd.AddCommand(cmd) + } + + { // batch-register-registrants + var meetingId string + var current string + var hostEmail string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "batch-register-registrants", + Short: "Batch register Meeting Registrants", + Long: `Bulk register new registrants for a meeting. When a meeting or webinar is created, this API can only be used if Registration is checked on the page or the registration attribute is specified through the [Create a Meeting](/docs/api/v1/meetings/create-a-meeting) API.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/meetings/{meetingId}/registrants/bulkInsert") + req.PathParam("meetingId", meetingId) + req.QueryParam("current", current) + req.QueryParam("hostEmail", hostEmail) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "Unique identifier for the meeting. Only the ID of the meeting series is supported for meetingId. IDs of scheduled meetings, meeting instances, or scheduled personal room meetings are not supported. See the [Meetings Overview](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) for more information about meeting types.") + cmd.MarkFlagRequired("meeting-id") + cmd.Flags().StringVar(¤t, "current", "", "Whether or not to retrieve only the current scheduled meeting of the meeting series, i.e. the meeting ready to join or start or the upcoming meeting of the meeting series. If it's `true`, return details for the current scheduled meeting of the series, i.e. the scheduled meeting ready to join or start or the upcoming scheduled meeting of the meeting series. If it's `false` or not specified, return details for the entire meeting series. This parameter only applies to meeting series.") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for a meeting that is hosted by that user.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + meetingsCmd.AddCommand(cmd) + } + + { // get-detailed-information-registrant + var meetingId string + var registrantId string + var current string + var hostEmail string + cmd := &cobra.Command{ + Use: "get-detailed-information-registrant", + Short: "Get Detailed Information for a Meeting Registrant", + Long: `Retrieves details for a meeting registrant with a specified registrant Id.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/meetings/{meetingId}/registrants/{registrantId}") + req.PathParam("meetingId", meetingId) + req.PathParam("registrantId", registrantId) + req.QueryParam("current", current) + req.QueryParam("hostEmail", hostEmail) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "Unique identifier for the meeting. Only the ID of the meeting series is supported for meetingId. IDs of scheduled meetings, meeting instances, or scheduled personal room meetings are not supported. See the [Meetings Overview](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) for more information about meeting types.") + cmd.MarkFlagRequired("meeting-id") + cmd.Flags().StringVar(®istrantId, "registrant-id", "", "Unique identifier for the registrant") + cmd.MarkFlagRequired("registrant-id") + cmd.Flags().StringVar(¤t, "current", "", "Whether or not to retrieve only the current scheduled meeting of the meeting series, i.e. the meeting ready to join or start or the upcoming meeting of the meeting series. If it's `true`, return details for the current scheduled meeting of the series, i.e. the scheduled meeting ready to join or start or the upcoming scheduled meeting of the meeting series. If it's `false` or not specified, return details for the entire meeting series. This parameter only applies to meeting series.") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for a meeting that is hosted by that user.") + meetingsCmd.AddCommand(cmd) + } + + { // delete-registrant + var meetingId string + var registrantId string + var current string + var hostEmail string + cmd := &cobra.Command{ + Use: "delete-registrant", + Short: "Delete a Meeting Registrant", + Long: `Meeting's host or cohost can delete a registrant with a specified registrant ID.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/meetings/{meetingId}/registrants/{registrantId}") + req.PathParam("meetingId", meetingId) + req.PathParam("registrantId", registrantId) + req.QueryParam("current", current) + req.QueryParam("hostEmail", hostEmail) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "Unique identifier for the meeting. Only the ID of the meeting series is supported for meetingId. IDs of scheduled meetings, meeting instances, or scheduled personal room meetings are not supported. See the [Meetings Overview](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) for more information about meeting types.") + cmd.MarkFlagRequired("meeting-id") + cmd.Flags().StringVar(®istrantId, "registrant-id", "", "Unique identifier for the registrant.") + cmd.MarkFlagRequired("registrant-id") + cmd.Flags().StringVar(¤t, "current", "", "Whether or not to retrieve only the current scheduled meeting of the meeting series, i.e. the meeting ready to join or start or the upcoming meeting of the meeting series. If it's `true`, return details for the current scheduled meeting of the series, i.e. the scheduled meeting ready to join or start or the upcoming scheduled meeting of the meeting series. If it's `false` or not specified, return details for the entire meeting series. This parameter only applies to meeting series.") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for a meeting that is hosted by that user.") + meetingsCmd.AddCommand(cmd) + } + + { // query-registrants + var meetingId string + var max string + var current string + var hostEmail string + var emails []string + var status string + var orderType string + var orderBy string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "query-registrants", + Short: "Query Meeting Registrants", + Long: `Meeting's host and cohost can query the list of registrants for a meeting with a specified meeting ID and registrants email.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/meetings/{meetingId}/registrants/query") + req.PathParam("meetingId", meetingId) + req.QueryParam("max", max) + req.QueryParam("current", current) + req.QueryParam("hostEmail", hostEmail) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("emails", emails) + req.BodyString("status", status) + req.BodyString("orderType", orderType) + req.BodyString("orderBy", orderBy) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "Unique identifier for the meeting. Only the ID of the meeting series is supported for meetingId. IDs of scheduled meetings, meeting instances, or scheduled personal room meetings are not supported. See the [Meetings Overview](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) for more information about meeting types.") + cmd.MarkFlagRequired("meeting-id") + cmd.Flags().StringVar(&max, "max", "", "Limit the maximum number of registrants in the response, up to 100. The default is 10.") + cmd.Flags().StringVar(¤t, "current", "", "Whether or not to retrieve only the current scheduled meeting of the meeting series, i.e. the meeting ready to join or start or the upcoming meeting of the meeting series. If it's `true`, return details for the current scheduled meeting of the series, i.e. the scheduled meeting ready to join or start or the upcoming scheduled meeting of the meeting series. If it's `false` or not specified, return details for the entire meeting series. This parameter only applies to meeting series.") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for a meeting that is hosted by that user.") + cmd.Flags().StringSliceVar(&emails, "emails", nil, "") + cmd.Flags().StringVar(&status, "status", "", "") + cmd.Flags().StringVar(&orderType, "order-type", "", "") + cmd.Flags().StringVar(&orderBy, "order-by", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + meetingsCmd.AddCommand(cmd) + } + + { // batch-update-registrants-status + var meetingId string + var statusOpType string + var current string + var hostEmail string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "batch-update-registrants-status", + Short: "Batch Update Meeting Registrants status", + Long: "Meeting's host or cohost can update the set of registrants for a meeting. `cancel` means the registrant(s) will be moved back to the registration list. `bulkDelete` means the registrant(s) will be deleted.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/meetings/{meetingId}/registrants/{statusOpType}") + req.PathParam("meetingId", meetingId) + req.PathParam("statusOpType", statusOpType) + req.QueryParam("current", current) + req.QueryParam("hostEmail", hostEmail) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "Unique identifier for the meeting. Only the ID of the meeting series is supported for meetingId. IDs of scheduled meetings, meeting instances, or scheduled personal room meetings are not supported. See the [Meetings Overview](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) for more information about meeting types.") + cmd.MarkFlagRequired("meeting-id") + cmd.Flags().StringVar(&statusOpType, "status-op-type", "", "Update registrant's status.") + cmd.MarkFlagRequired("status-op-type") + cmd.Flags().StringVar(¤t, "current", "", "Whether or not to retrieve only the current scheduled meeting of the meeting series, i.e. the meeting ready to join or start or the upcoming meeting of the meeting series. If it's `true`, return details for the current scheduled meeting of the series, i.e. the scheduled meeting ready to join or start or the upcoming scheduled meeting of the meeting series. If it's `false` or not specified, return details for the entire meeting series. This parameter only applies to meeting series. + Default: `false` ") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for a meeting that is hosted by that user.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + meetingsCmd.AddCommand(cmd) + } + + { // update-simultaneous-interpretation + var meetingId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-simultaneous-interpretation", + Short: "Update Meeting Simultaneous interpretation", + Long: `Updates simultaneous interpretation options of a meeting with a specified meeting ID. This operation applies to meeting series and scheduled meetings. It doesn't apply to ended or in-progress meeting instances.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/meetings/{meetingId}/simultaneousInterpretation") + req.PathParam("meetingId", meetingId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "Unique identifier for the meeting. Does not support meeting IDs for a scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meeting.") + cmd.MarkFlagRequired("meeting-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + meetingsCmd.AddCommand(cmd) + } + + { // create-interpreter + var meetingId string + var languageCode1 string + var languageCode2 string + var email string + var displayName string + var hostEmail string + var sendEmail bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-interpreter", + Short: "Create a Meeting Interpreter", + Long: `Assign an interpreter to a bi-directional simultaneous interpretation language channel for a meeting.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/meetings/{meetingId}/interpreters") + req.PathParam("meetingId", meetingId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("languageCode1", languageCode1) + req.BodyString("languageCode2", languageCode2) + req.BodyString("email", email) + req.BodyString("displayName", displayName) + req.BodyString("hostEmail", hostEmail) + req.BodyBool("sendEmail", sendEmail, cmd.Flags().Changed("send-email")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "Unique identifier for the meeting to which the interpreter is to be assigned.") + cmd.MarkFlagRequired("meeting-id") + cmd.Flags().StringVar(&languageCode1, "language-code1", "", "") + cmd.Flags().StringVar(&languageCode2, "language-code2", "", "") + cmd.Flags().StringVar(&email, "email", "", "") + cmd.Flags().StringVar(&displayName, "display-name", "", "") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "") + cmd.Flags().BoolVar(&sendEmail, "send-email", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + meetingsCmd.AddCommand(cmd) + } + + { // list-interpreters + var meetingId string + var hostEmail string + cmd := &cobra.Command{ + Use: "list-interpreters", + Short: "List Meeting Interpreters", + Long: "Lists meeting interpreters for a meeting with a specified `meetingId`.\n\nThis operation can be used for meeting series, scheduled meeting and ended or ongoing meeting instance objects. If the specified `meetingId` is for a meeting series, the interpreters for the series will be listed; if the `meetingId` is for a scheduled meeting, the interpreters for the particular scheduled meeting will be listed; if the `meetingId` is for an ended or ongoing meeting instance, the interpreters for the particular meeting instance will be listed. See the [Webex Meetings](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) guide for more information about the types of meetings.\n\nThe list returned is sorted in descending order by when interpreters were created.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/meetings/{meetingId}/interpreters") + req.PathParam("meetingId", meetingId) + req.QueryParam("hostEmail", hostEmail) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "Unique identifier for the meeting for which interpreters are being requested. The meeting can be meeting series, scheduled meeting or meeting instance which has ended or is ongoing. Please note that currently meeting ID of a scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meeting is not supported for this API.") + cmd.MarkFlagRequired("meeting-id") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin on-behalf-of scopes. If set, the admin may specify the email of a user in a site they manage and the API will return interpreters of the meeting that is hosted by that user.") + meetingsCmd.AddCommand(cmd) + } + + { // get-interpreter + var meetingId string + var interpreterId string + var hostEmail string + cmd := &cobra.Command{ + Use: "get-interpreter", + Short: "Get a Meeting Interpreter", + Long: "Retrieves details for a meeting interpreter identified by `meetingId` and `interpreterId` in the URI.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/meetings/{meetingId}/interpreters/{interpreterId}") + req.PathParam("meetingId", meetingId) + req.PathParam("interpreterId", interpreterId) + req.QueryParam("hostEmail", hostEmail) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "Unique identifier for the meeting to which the interpreter has been assigned.") + cmd.MarkFlagRequired("meeting-id") + cmd.Flags().StringVar(&interpreterId, "interpreter-id", "", "Unique identifier for the interpreter whose details are being requested.") + cmd.MarkFlagRequired("interpreter-id") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin on-behalf-of scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for an interpreter of the meeting that is hosted by that user.") + meetingsCmd.AddCommand(cmd) + } + + { // update-interpreter + var meetingId string + var interpreterId string + var languageCode1 string + var languageCode2 string + var email string + var displayName string + var hostEmail string + var sendEmail bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-interpreter", + Short: "Update a Meeting Interpreter", + Long: "Updates details for a meeting interpreter identified by `meetingId` and `interpreterId` in the URI.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/meetings/{meetingId}/interpreters/{interpreterId}") + req.PathParam("meetingId", meetingId) + req.PathParam("interpreterId", interpreterId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("languageCode1", languageCode1) + req.BodyString("languageCode2", languageCode2) + req.BodyString("email", email) + req.BodyString("displayName", displayName) + req.BodyString("hostEmail", hostEmail) + req.BodyBool("sendEmail", sendEmail, cmd.Flags().Changed("send-email")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "Unique identifier for the meeting whose interpreters were belong to.") + cmd.MarkFlagRequired("meeting-id") + cmd.Flags().StringVar(&interpreterId, "interpreter-id", "", "Unique identifier for the interpreter whose details are being requested.") + cmd.MarkFlagRequired("interpreter-id") + cmd.Flags().StringVar(&languageCode1, "language-code1", "", "") + cmd.Flags().StringVar(&languageCode2, "language-code2", "", "") + cmd.Flags().StringVar(&email, "email", "", "") + cmd.Flags().StringVar(&displayName, "display-name", "", "") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "") + cmd.Flags().BoolVar(&sendEmail, "send-email", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + meetingsCmd.AddCommand(cmd) + } + + { // delete-interpreter + var meetingId string + var interpreterId string + var hostEmail string + var sendEmail string + cmd := &cobra.Command{ + Use: "delete-interpreter", + Short: "Delete a Meeting Interpreter", + Long: "Removes a meeting interpreter identified by `meetingId` and `interpreterId` in the URI. The deleted meeting interpreter cannot be recovered.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/meetings/{meetingId}/interpreters/{interpreterId}") + req.PathParam("meetingId", meetingId) + req.PathParam("interpreterId", interpreterId) + req.QueryParam("hostEmail", hostEmail) + req.QueryParam("sendEmail", sendEmail) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "Unique identifier for the meeting whose interpreters were belong to.") + cmd.MarkFlagRequired("meeting-id") + cmd.Flags().StringVar(&interpreterId, "interpreter-id", "", "Unique identifier for the interpreter to be removed.") + cmd.MarkFlagRequired("interpreter-id") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin on-behalf-of scopes. If set, the admin may specify the email of a user in a site they manage and the API will delete an interpreter of the meeting that is hosted by that user.") + cmd.Flags().StringVar(&sendEmail, "send-email", "", "If `true`, send email to the interpreter.") + meetingsCmd.AddCommand(cmd) + } + + { // list-breakout-sessions + var meetingId string + var hostEmail string + cmd := &cobra.Command{ + Use: "list-breakout-sessions", + Short: "List Meeting Breakout Sessions", + Long: "Lists meeting breakout sessions for a meeting with a specified `meetingId`.\n\nThis operation can be used for meeting series, scheduled meeting and ended or ongoing meeting instance objects. See the [Webex Meetings](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) guide for more information about the types of meetings.\n\n* If the meeting of `meetingId` is in progress, the operation returns the breakout sessions which are currently held in the meeting.\n\n* If the meeting of `meetingId` is ended meeting instance, the operation returns the breakout sessions which happended during the meeting instance.\n\n* Otherwise, if it's a meeting series or scheduled meeting and it's not in progress, the operation returns the breakout sessions which are created when the meeting is scheduled.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/meetings/{meetingId}/breakoutSessions") + req.PathParam("meetingId", meetingId) + req.Header("hostEmail", hostEmail) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "Unique identifier for the meeting. This parameter applies to meeting series, scheduled meeting and ended or ongoing meeting instance objects. Please note that currently meeting ID of a scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meeting is not supported for this API.") + cmd.MarkFlagRequired("meeting-id") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "e.g. `john.andersen@example.com` (string, optional) - Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for a meeting that is hosted by that user.") + meetingsCmd.AddCommand(cmd) + } + + { // update-breakout-sessions + var meetingId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-breakout-sessions", + Short: "Update Meeting Breakout Sessions", + Long: `Updates breakout sessions of a meeting with a specified meeting ID in the pre-meeting state. This operation applies to meeting series and scheduled meetings.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/meetings/{meetingId}/breakoutSessions") + req.PathParam("meetingId", meetingId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "Unique identifier for the meeting. Does not support meeting IDs for a scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meeting.") + cmd.MarkFlagRequired("meeting-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + meetingsCmd.AddCommand(cmd) + } + + { // delete-breakout-sessions + var meetingId string + var sendEmail string + var hostEmail string + cmd := &cobra.Command{ + Use: "delete-breakout-sessions", + Short: "Delete Meeting Breakout Sessions", + Long: "Deletes breakout sessions with a specified meeting ID. The deleted breakout sessions cannot be recovered. The value of `enabledBreakoutSessions` attribute is set to `false` automatically.\nThis operation applies to meeting series and scheduled meetings. It doesn't apply to ended or in-progress meeting instances.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/meetings/{meetingId}/breakoutSessions") + req.PathParam("meetingId", meetingId) + req.QueryParam("sendEmail", sendEmail) + req.Header("hostEmail", hostEmail) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "Unique identifier for the meeting. This parameter applies to meeting series and scheduled meetings. It doesn't apply to ended or in-progress meeting instances.") + cmd.MarkFlagRequired("meeting-id") + cmd.Flags().StringVar(&sendEmail, "send-email", "", "Whether or not to send emails to host and invitees. It is an optional field and default value is true.") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "e.g. `john.andersen@example.com` (string, optional) - Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will delete breakout sessions that are created by that user.") + meetingsCmd.AddCommand(cmd) + } + + { // get-survey + var meetingId string + var hostEmail string + cmd := &cobra.Command{ + Use: "get-survey", + Short: "Get a Meeting Survey", + Long: "Retrieves details for a meeting survey identified by `meetingId`.\n\n#### Request Header\n\n* `hostEmail`: Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin on-behalf-of scopes. If set, the admin may specify the email of a user in a site they manage and the API will return survey details of that user.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/meetings/{meetingId}/survey") + req.PathParam("meetingId", meetingId) + req.Header("hostEmail", hostEmail) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "Unique identifier for the meeting. Please note that only the meeting ID of a scheduled webinar is supported for this API.") + cmd.MarkFlagRequired("meeting-id") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "e.g. john.andersen@example.com") + meetingsCmd.AddCommand(cmd) + } + + { // list-survey-results + var meetingId string + var meetingStartTimeFrom string + var meetingStartTimeTo string + var max string + var timezone string + var hostEmail string + cmd := &cobra.Command{ + Use: "list-survey-results", + Short: "List Meeting Survey Results", + Long: "Retrieves results for a meeting survey identified by `meetingId`.\n\n#### Request Header\n\n* `timezone`: Time zone for time stamps in response body, defined in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default value is `UTC` if not specified.\n\n* `hostEmail`: Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin on-behalf-of scopes. If set, the admin may specify the email of a user in a site they manage and the API will return the survey results of that user.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/meetings/{meetingId}/surveyResults") + req.PathParam("meetingId", meetingId) + req.QueryParam("meetingStartTimeFrom", meetingStartTimeFrom) + req.QueryParam("meetingStartTimeTo", meetingStartTimeTo) + req.QueryParam("max", max) + req.Header("timezone", timezone) + req.Header("hostEmail", hostEmail) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "Unique identifier for the meeting. Please note that only the meeting ID of a scheduled webinar is supported for this API.") + cmd.MarkFlagRequired("meeting-id") + cmd.Flags().StringVar(&meetingStartTimeFrom, "meeting-start-time-from", "", "Start date and time (inclusive) in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format for the meeting objects being requested. `meetingStartTimeFrom` cannot be after `meetingStartTimeTo`. This parameter will be ignored if `meetingId` is the unique identifier for the specific meeting instance. When `meetingId` is not the unique identifier for the specific meeting instance, the `meetingStartTimeFrom`, if not specified, equals `meetingStartTimeTo` minus `1` month; if `meetingStartTimeTo` is also not specified, the default value for `meetingStartTimeFrom` is `1` month before the current date and time. ") + cmd.Flags().StringVar(&meetingStartTimeTo, "meeting-start-time-to", "", "End date and time (exclusive) in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format for the meeting objects being requested. `meetingStartTimeTo` cannot be prior to `meetingStartTimeFrom`. This parameter will be ignored if `meetingId` is the unique identifier for the specific meeting instance. When `meetingId` is not the unique identifier for the specific meeting instance, if `meetingStartTimeFrom` is also not specified, the default value for `meetingStartTimeTo` is the current date and time;For example,if `meetingStartTimeFrom` is a month ago, the default value for `meetingStartTimeTo` is `1` month after `meetingStartTimeFrom`.Otherwise it is the current date and time. ") + cmd.Flags().StringVar(&max, "max", "", "Limit the maximum number of meetings in the response, up to 100. The default is 10.") + cmd.Flags().StringVar(&timezone, "timezone", "", "e.g. UTC") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "e.g. john.andersen@example.com") + meetingsCmd.AddCommand(cmd) + } + + { // get-survey-links + var meetingId string + var timezone string + var hostEmail string + var meetingStartTimeFrom string + var meetingStartTimeTo string + var emails []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "get-survey-links", + Short: "Get Meeting Survey Links", + Long: "Get survey links of a meeting for different users.\n\n#### Request Header\n\n* `timezone`: Time zone for the `meetingStartTimeFrom` and `meetingStartTimeTo` parameters and defined in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default value is `UTC` if not specified.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/meetings/{meetingId}/surveyLinks") + req.PathParam("meetingId", meetingId) + req.Header("timezone", timezone) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("hostEmail", hostEmail) + req.BodyString("meetingStartTimeFrom", meetingStartTimeFrom) + req.BodyString("meetingStartTimeTo", meetingStartTimeTo) + req.BodyStringSlice("emails", emails) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "Unique identifier for the meeting. Only applies to webinars. Meetings and personal room meetings are not supported.") + cmd.MarkFlagRequired("meeting-id") + cmd.Flags().StringVar(&timezone, "timezone", "", "e.g. UTC") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "") + cmd.Flags().StringVar(&meetingStartTimeFrom, "meeting-start-time-from", "", "") + cmd.Flags().StringVar(&meetingStartTimeTo, "meeting-start-time-to", "", "") + cmd.Flags().StringSliceVar(&emails, "emails", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + meetingsCmd.AddCommand(cmd) + } + + { // create-invitation-sources + var meetingId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-invitation-sources", + Short: "Create Invitation Sources", + Long: `Creates one or more invitation sources for a meeting.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/meetings/{meetingId}/invitationSources") + req.PathParam("meetingId", meetingId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "Unique identifier for the meeting. Only the meeting ID of a scheduled webinar is supported for this API.") + cmd.MarkFlagRequired("meeting-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + meetingsCmd.AddCommand(cmd) + } + + { // list-invitation-sources + var meetingId string + var hostEmail string + var personId string + cmd := &cobra.Command{ + Use: "list-invitation-sources", + Short: "List Invitation Sources", + Long: "Lists invitation sources for a meeting.\n\n#### Request Header\n\n* `hostEmail`: Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin on-behalf-of scopes. If set, the admin may specify the email of a user in a site they manage and the API will return recording details of that user.\n\n* `personId`: Unique identifier for the meeting host. This attribute should only be set if the user or application calling the API has the admin-level scopes. When used, the admin may specify the email of a user in a site they manage to be the meeting host.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/meetings/{meetingId}/invitationSources") + req.PathParam("meetingId", meetingId) + req.Header("hostEmail", hostEmail) + req.Header("personId", personId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "Unique identifier for the meeting. Only the meeting ID of a scheduled webinar is supported for this API.") + cmd.MarkFlagRequired("meeting-id") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "e.g. john.andersen@example.com") + cmd.Flags().StringVar(&personId, "person-id", "", "e.g. Y2lzY29zcGFyazovL3VzL1BFT1BMRS8yNWJiZjgzMS01YmU5LTRjMjUtYjRiMC05YjU5MmM4YTA4NmI") + meetingsCmd.AddCommand(cmd) + } + + { // list-tracking-codes + var siteUrl string + var service string + var hostEmail string + cmd := &cobra.Command{ + Use: "list-tracking-codes", + Short: "List Meeting Tracking Codes", + Long: "Lists tracking codes on a site by a meeting host. The result indicates which tracking codes and what options can be used to create or update a meeting on the specified site.\n\n* The `options` here differ from those in the [site-level tracking codes](/docs/api/v1/tracking-codes/get-a-tracking-code) and the [user-level tracking codes](/docs/api/v1/tracking-codes/get-user-tracking-codes). It is the result of a selective combination of the two.\n\n* For a tracking code, if there is no user-level tracking code, the API returns the site-level options, and the `defaultValue` of the site-level default option is `true`. If there is a user-level tracking code, it is merged into the `options`. Meanwhile, the `defaultValue` of this user-level option is `true` and the site-level default option becomes non default.\n\n* If `siteUrl` is specified, tracking codes of the specified site will be listed; otherwise, tracking codes of the user's preferred site will be listed. All available Webex sites and the preferred sites of a user can be retrieved by [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/meetings/trackingCodes") + req.QueryParam("siteUrl", siteUrl) + req.QueryParam("service", service) + req.QueryParam("hostEmail", hostEmail) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&siteUrl, "site-url", "", "URL of the Webex site which the API retrieves the tracking code from. If not specified, the API retrieves the tracking code from the user's preferred site. All available Webex sites and preferred sites of a user can be retrieved by [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.") + cmd.Flags().StringVar(&service, "service", "", "Service for schedule or sign-up pages.") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email address for the meeting host. This parameter is only used if a user or application calling the API has the admin-level scopes. The admin may specify the email of a user on a site they manage and the API will return meeting participants of the meetings that are hosted by that user.") + meetingsCmd.AddCommand(cmd) + } + + { // reassign-host + var siteUrl string + var hostEmail string + var meetingIds []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "reassign-host", + Short: "Reassign Meetings to a New Host", + Long: "Reassigns a list of meetings to a new host by an admin user.\n\nAll the meetings of `meetingIds` should belong to the same site, which is the `siteUrl` in the request header, if specified, or the admin user's preferred site, if not specified. All available Webex sites and the preferred sites of a user can be retrieved by [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\nIf the user of `hostEmail` is not qualified to be a host of the target site, the API returns an error with the HTTP status code `403`. If all the meetings referenced by `meetingIds` have been reassigned the new host successfully, the API returns an empty response with the HTTP status code `204`. Otherwise, if all the meetings of `meetingIds` fail or some of them fail, the API returns a \"Multi-Status\" response with status code of `207`, and individual errors for each meeting in the response body.\n\nIf a meeting already has several ended meeting instances before it's assigned to a new host, the existing ended instances are accessible to the original host and not accessible to the new host, but the new meeting instances which happen after the reassignment are only accessible to the new host.\n\nAfter the reassignment, the original host will receive an email of meeting cancellation. However, the meeting in the original host's calendar will not necessarily be removed because user's calendar, e.g. Outlook calendar, is not managed by the meeting system directly.\n\n**Note**: Only IDs of meeting series are supported for the `meetingIds`. IDs of scheduled meetings, meeting instances, or scheduled personal room meetings are not supported. To learn more about different types of meetings, please refer to [Meeting Series, Scheduled Meetings, and Meeting Instances](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances).\n\nThere are several limitations when reassigning meetings:\n\n* Users cannot assign an in-progress meeting.\n\n* Users cannot assign a meeting to a user who is not a Webex user, or an attendee who does not have host privilege.\n\n* Users cannot assign a meeting with calling/callback to a host user who does not have calling/callback privileges\n\n* Users cannot assign a meeting with session type A to a host user who does not have session type A privileges.\n\n* Users cannot assign an MC or Webinar to a new host who does not have an MC license or a Webinar license.\n\n* Users cannot assign a TC/EC1.0/SC meeting, or a meeting that is created by on-behalf to a new host.\n\n* Users can reassign hosts for meetings from third-party integrations, such as Outlook or Google. Note that this is not recommended because it may result in inconsistent data between both parties.\n\n#### Request Header\n\n* `siteUrl`: Optional request header parameter. All the meetings of `meetingIds` should belong to the site referenced by siteUrl if specified. Otherwise, the meetings should belong to the admin user's preferred sites. All available Webex sites and the preferred sites of a user can be retrieved by [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/meetings/reassignHost") + req.Header("siteUrl", siteUrl) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("hostEmail", hostEmail) + req.BodyStringSlice("meetingIds", meetingIds) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&siteUrl, "site-url", "", "e.g. example.webex.com") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "") + cmd.Flags().StringSliceVar(&meetingIds, "meeting-ids", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + meetingsCmd.AddCommand(cmd) + } + + { // end + var meetingId string + var reason string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "end", + Short: "End a Meeting", + Long: "Ends a meeting with a specified meeting ID. This operation applies to meeting series, scheduled meetings, and in-progress meetings. Only the meeting host, cohost, or compliance officer can end a meeting with this API.\n\n* If the `meetingId` value specified is for a scheduled meeting, the operation ends that meeting without impacting other scheduled meetings of the parent meeting series.\n\n* If the `meetingId` value specified is for a meeting series, the operation ends the current meeting occurrence.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/meetings/{meetingId}/end") + req.PathParam("meetingId", meetingId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("reason", reason) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "Unique identifier for the meeting to be ended.") + cmd.MarkFlagRequired("meeting-id") + cmd.Flags().StringVar(&reason, "reason", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + meetingsCmd.AddCommand(cmd) + } + + { // batch-approve-registrants + var meetingId string + var current string + var hostEmail string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "batch-approve-registrants", + Short: "Batch Approve Meeting Registrants", + Long: `Batch approve a set of registrants for a meeting by the meeting host or cohost.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/meetings/{meetingId}/registrants/approve") + req.PathParam("meetingId", meetingId) + req.QueryParam("current", current) + req.QueryParam("hostEmail", hostEmail) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "Unique identifier for the meeting. Only the ID of the meeting series is supported for meetingId. IDs of scheduled meetings, meeting instances, or scheduled personal room meetings are not supported. See the [Meetings Overview](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) for more information about meeting types.") + cmd.MarkFlagRequired("meeting-id") + cmd.Flags().StringVar(¤t, "current", "", "Whether or not to retrieve only the current scheduled meeting of the meeting series, i.e. the meeting ready to join or start or the upcoming meeting of the meeting series. If it's `true`, return details for the current scheduled meeting of the series, i.e. the scheduled meeting ready to join or start or the upcoming scheduled meeting of the meeting series. If it's `false` or not specified, return details for the entire meeting series. This parameter only applies to meeting series. + Default: `false` ") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for a meeting that is hosted by that user.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + meetingsCmd.AddCommand(cmd) + } + + { // batch-reject-registrants + var meetingId string + var current string + var hostEmail string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "batch-reject-registrants", + Short: "Batch Reject Meeting Registrants", + Long: `Batch reject a set of registrants for a meeting by the meeting host or cohost.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/meetings/{meetingId}/registrants/reject") + req.PathParam("meetingId", meetingId) + req.QueryParam("current", current) + req.QueryParam("hostEmail", hostEmail) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "Unique identifier for the meeting. Only the ID of the meeting series is supported for meetingId. IDs of scheduled meetings, meeting instances, or scheduled personal room meetings are not supported. See the [Meetings Overview](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) for more information about meeting types.") + cmd.MarkFlagRequired("meeting-id") + cmd.Flags().StringVar(¤t, "current", "", "Whether or not to retrieve only the current scheduled meeting of the meeting series, i.e. the meeting ready to join or start or the upcoming meeting of the meeting series. If it's `true`, return details for the current scheduled meeting of the series, i.e. the scheduled meeting ready to join or start or the upcoming scheduled meeting of the meeting series. If it's `false` or not specified, return details for the entire meeting series. This parameter only applies to meeting series. + Default: `false` ") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for a meeting that is hosted by that user.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + meetingsCmd.AddCommand(cmd) + } + + { // batch-cancel-registrants + var meetingId string + var current string + var hostEmail string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "batch-cancel-registrants", + Short: "Batch Cancel Meeting Registrants", + Long: `Batch cancel a set of registrants for a meeting by the meeting host or cohost.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/meetings/{meetingId}/registrants/cancel") + req.PathParam("meetingId", meetingId) + req.QueryParam("current", current) + req.QueryParam("hostEmail", hostEmail) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "Unique identifier for the meeting. Only the ID of the meeting series is supported for meetingId. IDs of scheduled meetings, meeting instances, or scheduled personal room meetings are not supported. See the [Meetings Overview](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) for more information about meeting types.") + cmd.MarkFlagRequired("meeting-id") + cmd.Flags().StringVar(¤t, "current", "", "Whether or not to retrieve only the current scheduled meeting of the meeting series, i.e. the meeting ready to join or start or the upcoming meeting of the meeting series. If it's `true`, return details for the current scheduled meeting of the series, i.e. the scheduled meeting ready to join or start or the upcoming scheduled meeting of the meeting series. If it's `false` or not specified, return details for the entire meeting series. This parameter only applies to meeting series. + Default: `false` ") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for a meeting that is hosted by that user.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + meetingsCmd.AddCommand(cmd) + } + + { // batch-delete-registrants + var meetingId string + var current string + var hostEmail string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "batch-delete-registrants", + Short: "Batch Delete Meeting Registrants", + Long: `Batch delete a set of registrants for a meeting by the meeting host or cohost.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/meetings/{meetingId}/registrants/bulkDelete") + req.PathParam("meetingId", meetingId) + req.QueryParam("current", current) + req.QueryParam("hostEmail", hostEmail) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "Unique identifier for the meeting. Only the ID of the meeting series is supported for meetingId. IDs of scheduled meetings, meeting instances, or scheduled personal room meetings are not supported. See the [Meetings Overview](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) for more information about meeting types.") + cmd.MarkFlagRequired("meeting-id") + cmd.Flags().StringVar(¤t, "current", "", "Whether or not to retrieve only the current scheduled meeting of the meeting series, i.e. the meeting ready to join or start or the upcoming meeting of the meeting series. If it's `true`, return details for the current scheduled meeting of the series, i.e. the scheduled meeting ready to join or start or the upcoming scheduled meeting of the meeting series. If it's `false` or not specified, return details for the entire meeting series. This parameter only applies to meeting series. + Default: `false` ") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for a meeting that is hosted by that user.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + meetingsCmd.AddCommand(cmd) + } + + { // list-group + var personId string + var meetingNumber string + var webLink string + var current string + var timezone string + var hostEmail string + cmd := &cobra.Command{ + Use: "list-group", + Short: "List Group Meetings", + Long: "List group meetings with a specified meeting number or web link by a service app which has group meeting access. You can specify the `personId` parameter or `hostEmail` header of whom the meetings will be retrieved. Please note that there are various products in the [Webex Suite](https://www.webex.com/collaboration-suite.html) such as `Meetings` and `Events`. Currently, only meetings of the `Meetings` product are supported by this API, meetings of others in the suite are not supported. Ad-hoc meetings created by [Create a Meeting](/docs/api/v1/meetings/create-a-meeting) with `adhoc` of `true` and a `roomId` will not be listed.\n\n* One of the `personId` parameter and `hostEmail` header must be specified so that only meetings hosted by the person of `personId` or `hostEmail` will be listed.\n\n* `meetingNumber` and `webLink` are mutually exclusive and they cannot be specified simultaneously, but one of them must be specified. The operation returns an array of meeting objects specified by the `meetingNumber` or `webLink`.\n\n* Each object in the array can be a scheduled meeting or a meeting series depending on whether the `current` parameter is `true` or `false`. If it's `false`, the `start` and `end` attributes are for the first scheduled meeting of that series. If it's `true` or not specified, the `start` and `end` attributes are for the scheduled meeting which is ready to start or join or the upcoming scheduled meeting of that series.\n\n* To learn more about which attributes are available for different meeting states, please refer to [Available Meeting Attributes for Different Meeting States](/docs/meetings#available-meeting-attributes-for-different-meeting-states).\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) for time stamps in response body, defined in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default value is `UTC` if not specified.\n\n* `hostEmail`: Email of the user whose meetings will be retrieved. The `hostEmail` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/group/meetings") + req.QueryParam("personId", personId) + req.QueryParam("meetingNumber", meetingNumber) + req.QueryParam("webLink", webLink) + req.QueryParam("current", current) + req.Header("timezone", timezone) + req.Header("hostEmail", hostEmail) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Person ID of the user whose meetings will be retrieved. The person ID can be retrieved from the [People APIs](/docs/api/v1/people), e.g. [Lit People](/docs/api/v1/people/list-people). Note that a person ID retrieved from the People APIs is a Base64-encoded string, e.g. `Y2lzY29zcGFyazovL3VzL1BFT1BMRS9kNDdiMmU3ZC01ZTBmLTRmNjktYWVmNC1lNGZmOTBhZWE3Yzk`. The person ID in the raw UUID format which is the last part of the Base64-decoded string, e.g. `d47b2e7d-5e0f-4f69-aef4-e4ff90aea7c9`, is also supported. The `personId` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified.") + cmd.Flags().StringVar(&meetingNumber, "meeting-number", "", "Meeting number for the meeting objects being requested. `meetingNumber` and `webLink` are mutually exclusive. If it's an exceptional meeting from a meeting series, the exceptional meeting instead of the primary meeting series is returned.") + cmd.Flags().StringVar(&webLink, "web-link", "", "URL encoded link to information page for the meeting objects being requested. `meetingNumber` and `webLink` are mutually exclusive.") + cmd.Flags().StringVar(¤t, "current", "", "Flag identifying to retrieve the current scheduled meeting of the meeting series or the entire meeting series. This parameter only applies to scenarios where the meeting is not an exceptional meeting from a meeting series. If it's `true`, return the scheduled meeting of the meeting series which is ready to join or start or the upcoming scheduled meeting of the meeting series; if it's `false`, return the entire meeting series. The default value is `true`.") + cmd.Flags().StringVar(&timezone, "timezone", "", "[Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) for time stamps in response body, defined in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default value is `UTC` if not specified.") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email of the user whose meetings will be retrieved. The `hostEmail` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified.") + meetingsCmd.AddCommand(cmd) + } + + { // patch-group + var meetingId string + var personId string + var hostEmail string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "patch-group", + Short: "Patch a Group Meeting", + Long: "Patches details for a group meeting with a specified meeting ID by a service app which has group meeting access. This operation applies to meeting series and scheduled meetings. It doesn't apply to ended or in-progress meeting instances. Ad-hoc meetings created by [Create a Meeting](/docs/api/v1/meetings/create-a-meeting) with `adhoc` of `true` and a `roomId` cannot be updated.\n\n* One of the `personId` parameter and `hostEmail` header must be specified so that only meetings hosted by the person of `personId` or `hostEmail` will be patch.\n\n* If the `meetingId` value specified is for a scheduled meeting, the operation updates that scheduled meeting without impact on other scheduled meeting of the parent meeting series.\n\n* If the `meetingId` value specified is for a meeting series, the operation updates the entire meeting series. **Note**: If the value of `start`, `end`, or `recurrence` for the meeting series is changed, any exceptional scheduled meeting in this series is cancelled when the meeting series is updated.\n\n* The `agenda`, `recurrence`, and `trackingCodes` attributes can be specified as `null` so that these attributes become null and hidden from the response after the patch. Note that it's the keyword `null` not the string \"null\".\n\n* If the parameter `recurrence` has a value, a recurring meeting is created based on the rule defined by the value of `recurrence`. For a non-recurring meeting which has no `recurrence` value set, its `meetingType` is also `meetingSeries` which is a meeting series with only one occurrence in Webex meeting modeling. If you specify a `recurrence` like `FREQ=DAILY;INTERVAL=1` which never ends, the furthest date of the series is unlimited. You can also specify a `recurrence` with a very distant ending date in the future, e.g. `FREQ=DAILY;INTERVAL=1;UNTIL=21241001T000000Z`, but the actual furthest date accepted for the recurring meeting is five years from now. Specifically, if it has an ending date, there can be up to 5 occurrences for a yearly meeting, 60 occurrences for a monthly meeting, 261 occurrences for a weekly meeting, or 1826 occurrences for a daily meeting.\n\n* You can't update a meeting that starts 10 years or more in the future.\n\n* Updating a meeting in the API that was created via a calendar connector is not allowed. The meeting may be updated in Webex, but the calendar event may not be updated, resulting in duplicate entries. This action is therefore blocked. In case you must overwrite this behavior, please contact devsupport@webex.com.\n\n#### Request Header\n\n* `hostEmail`: Email of the user whose meeting will be patched. The `hostEmail` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PATCH", "/group/meetings/{meetingId}") + req.PathParam("meetingId", meetingId) + req.QueryParam("personId", personId) + req.Header("hostEmail", hostEmail) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "Unique identifier for the meeting to be updated. This parameter applies to meeting series and scheduled meetings. It doesn't apply to ended or in-progress meeting instances. Please note that currently meeting ID of a scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meeting is not supported for this API.") + cmd.MarkFlagRequired("meeting-id") + cmd.Flags().StringVar(&personId, "person-id", "", "Person ID of the user whose meeting will be patched. The person ID can be retrieved from the [People APIs](/docs/api/v1/people), e.g. [Lit People](/docs/api/v1/people/list-people). Note that a person ID retrieved from the People APIs is a Base64-encoded string, e.g. `Y2lzY29zcGFyazovL3VzL1BFT1BMRS9kNDdiMmU3ZC01ZTBmLTRmNjktYWVmNC1lNGZmOTBhZWE3Yzk`. The person ID in the raw UUID format which is the last part of the Base64-decoded string, e.g. `d47b2e7d-5e0f-4f69-aef4-e4ff90aea7c9`, is also supported. The `personId` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified.") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email of the user whose meetings will be patched. The `hostEmail` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + meetingsCmd.AddCommand(cmd) + } + + { // update-group-control-status + var personId string + var hostEmail string + var meetingId string + var action string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-group-control-status", + Short: "Update Group Meeting Control Status", + Long: "Update meeting recording control status by a service app which has group meeting access. The service app can use this API to start, stop, pause, or resume meeting recording by providing an `action` value. The `personId` parameter or `hostEmail` header of the person to whom the meeting belongs must be specified. The service app which invokes the API manages one or more groups, and it also manages one or more sites. The user specified by `hostEmail` or `personId` must be in a group that is managed by the service app. The meeting specified by `meetingId` must be on a site that is managed by the service app. Please note that once the meeting recording has been controlled by a person in the meeting, the recording control of this meeting can no longer be controlled by the service app via the API.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/group/meetings/controls") + req.QueryParam("personId", personId) + req.Header("hostEmail", hostEmail) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("meetingId", meetingId) + req.BodyString("action", action) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Person ID of the user whose meeting control will be updated. The person ID can be retrieved from the [People APIs](/docs/api/v1/people), e.g. [Lit People](/docs/api/v1/people/list-people). Note that a person ID retrieved from the People APIs is a Base64-encoded string, e.g. `Y2lzY29zcGFyazovL3VzL1BFT1BMRS9kNDdiMmU3ZC01ZTBmLTRmNjktYWVmNC1lNGZmOTBhZWE3Yzk`. The person ID in the raw UUID format which is the last part of the Base64-decoded string, e.g. `d47b2e7d-5e0f-4f69-aef4-e4ff90aea7c9`, is also supported. The `personId` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified.") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email of the user whose meeting control will be updated. The `hostEmail` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified.") + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "") + cmd.Flags().StringVar(&action, "action", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + meetingsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/meetings/messages.go b/cmd/meetings/messages.go new file mode 100644 index 0000000..678aed5 --- /dev/null +++ b/cmd/meetings/messages.go @@ -0,0 +1,49 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package meetings + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var messagesCmd = &cobra.Command{ + Use: "messages", + Short: "Messages commands", +} + +func init() { + cmd.MeetingsCmd.AddCommand(messagesCmd) + + { // delete-meeting + var meetingMessageId string + cmd := &cobra.Command{ + Use: "delete-meeting", + Short: "Delete a Meeting Message", + Long: "Deletes a Meeting Message from the In Meeting Chat, using its ID.\n\nThis ID can be retrieved by a Compliance Officer using the [events API](/docs/api/v1/events/list-events) filtering on the `meetingMessages` resource type.\n\nNOTE: When viewing the response from the events API, there are 2 `id` fields. The ID to be used here can be found under the `data` field in the response.\n\nSpecify the `meetingMessage` ID in the `meetingMessageId` parameter in the URI.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/meeting/messages/{meetingMessageId}") + req.PathParam("meetingMessageId", meetingMessageId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingMessageId, "meeting-message-id", "", "The unique identifier for the message.") + cmd.MarkFlagRequired("meeting-message-id") + messagesCmd.AddCommand(cmd) + } + +} diff --git a/cmd/meetings/participants.go b/cmd/meetings/participants.go new file mode 100644 index 0000000..07c9003 --- /dev/null +++ b/cmd/meetings/participants.go @@ -0,0 +1,308 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package meetings + +import ( + "fmt" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strings.Join + +var participantsCmd = &cobra.Command{ + Use: "participants", + Short: "Participants commands", +} + +func init() { + cmd.MeetingsCmd.AddCommand(participantsCmd) + + { // list-meeting + var max string + var meetingId string + var breakoutSessionId string + var meetingStartTimeFrom string + var meetingStartTimeTo string + var hostEmail string + var joinTimeFrom string + var joinTimeTo string + var timezone string + cmd := &cobra.Command{ + Use: "list-meeting", + Short: "List Meeting Participants", + Long: "List all participants in an in-progress meeting or an ended meeting. The `meetingId` parameter is required, which is the unique identifier for the meeting.\n\nThe authenticated user calling this API must either have an Administrator role with the `meeting:admin_participants_read` scope, or be the meeting host.\n\n* If the `meetingId` value specified is for a meeting series, the operation returns participants' details for the last instance in the meeting series. If the `meetingStartTimeFrom` value and the `meetingStartTimeTo` value are specified, the operation returns participants' details for the last instance in the meeting series in the time range.\n\n* If the `meetingId` value specified is for a scheduled meeting from a meeting series, the operation returns participants' details for that scheduled meeting. If the `meetingStartTimeFrom` value and the `meetingStartTimeTo` value are specified, the operation returns participants' details for the last instance in the scheduled meeting in the time range.\n\n* If the `meetingId` value specified is for a meeting instance which is in progress or ended, the operation returns participants' details for that meeting instance.\n\n* If the meeting is in progress, the operation returns all the real-time participants. If the meeting is ended, the operation returns all the participants that have joined the meeting.\n\n* If the `breakoutSessionId` parameter is specified, the operation returns participants who joined the specified breakout session. It only applies to end meeting instances.\n\n* The `breakoutSessionsAttended` attribute is only returned for a participant of an ended meeting instance if the participant joined breakout sessions in the meeitng.\n\n* The `meetingStartTimeFrom` and `meetingStartTimeTo` only apply when `meetingId` is a series ID or an occurrence ID.\n\n* If the webinar is in progress when the attendee has ever been unmuted to speak in the webinar, this attendee becomes a panelist. The operation returns include the people who have been designated as panelists when the webinar is created and have joined the webinar, and the attendees who have joined the webinar and are unmuted to speak in the webinar temporarily. If the webinar is ended, the operation returns all the participants, including all panelists and all attendees who are not panelists.\n\n#### Request Header\n\n* `timezone`: Time zone for time stamps in the response body, defined in conformance with the [IANA time zone database](https://www.iana.org/time-zones).", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/meetingParticipants") + req.QueryParam("max", max) + req.QueryParam("meetingId", meetingId) + req.QueryParam("breakoutSessionId", breakoutSessionId) + req.QueryParam("meetingStartTimeFrom", meetingStartTimeFrom) + req.QueryParam("meetingStartTimeTo", meetingStartTimeTo) + req.QueryParam("hostEmail", hostEmail) + req.QueryParam("joinTimeFrom", joinTimeFrom) + req.QueryParam("joinTimeTo", joinTimeTo) + req.Header("timezone", timezone) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&max, "max", "", "Limit the maximum number of participants in the response, up to 100.") + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "The unique identifier for the meeting. Please note that currently meeting ID of a scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meeting is not supported for this API.") + cmd.Flags().StringVar(&breakoutSessionId, "breakout-session-id", "", "The unique identifier for a breakout session which happened during an ended meeting instance. If the `breakoutSessionId` is specified, the operation returns participants who joined the breakout session. Only applies to ended meeting instances.") + cmd.Flags().StringVar(&meetingStartTimeFrom, "meeting-start-time-from", "", "Meetings start from the specified date and time(exclusive) in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. If `meetingStartTimeFrom` is not specified, it equals `meetingStartTimeTo` minus 1 month; if `meetingStartTimeTo` is also not specified, the default value for `meetingStartTimeFrom` is 1 month before current date and time.") + cmd.Flags().StringVar(&meetingStartTimeTo, "meeting-start-time-to", "", "Meetings start before the specified date and time(exclusive) in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. If `meetingStartTimeTo` is not specified, it equals the result of a comparison, `meetingStartTimeFrom` plus one month and the current time, and the result is the earlier of the two; if `meetingStartTimeFrom` is also not specified, the default value for `meetingStartTimeTo` is current date and time minus 1 month.") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes, the admin may specify the email of a user in a site they manage and the API will return meeting participants of the meetings that are hosted by that user.") + cmd.Flags().StringVar(&joinTimeFrom, "join-time-from", "", "The time participants join a meeting starts from the specified date and time (inclusive) in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. If `joinTimeFrom` is not specified, it equals `joinTimeTo` minus 7 days.") + cmd.Flags().StringVar(&joinTimeTo, "join-time-to", "", "The time participants join a meeting before the specified date and time (exclusive) in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. If `joinTimeTo` is not specified, it equals `joinTimeFrom` plus 7 days. The interval between `joinTimeFrom` and `joinTimeTo` must be within 90 days.") + cmd.Flags().StringVar(&timezone, "timezone", "", "e.g. UTC") + participantsCmd.AddCommand(cmd) + } + + { // query-meeting-email + var meetingId string + var meetingStartTimeFrom string + var meetingStartTimeTo string + var hostEmail string + var timezone string + var emails []string + var joinTimeFrom string + var joinTimeTo string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "query-meeting-email", + Short: "Query Meeting Participants with Email", + Long: "Query participants in a live meeting, or after the meeting, using participant's email. The `meetingId` parameter is the unique identifier for the meeting and is required.\n\nThe authenticated user calling this API must either have an Administrator role with the `meeting:admin_participants_read` scope, or be the meeting host.\n\n* If the `meetingId` value specified is for a meeting series, the operation returns participants' details for the last instance in the meeting series. If the `meetingStartTimeFrom` value and the `meetingStartTimeTo` value are specified, the operation returns participants' details for the last instance in the meeting series in the time range.\n\n* If the `meetingId` value specified is for a scheduled meeting from a meeting series, the operation returns participants' details for that scheduled meeting. If the `meetingStartTimeFrom` value and the `meetingStartTimeTo` value are specified, the operation returns participants' details for the last instance in the scheduled meeting in the time range.\n\n* If the `meetingId` value specified is for a meeting instance which is in progress or ended, the operation returns participants' details for that meeting instance.\n\n* The `meetingStartTimeFrom` and `meetingStartTimeTo` only apply when `meetingId` is a series ID or an occurrence ID.\n\n#### Request Header\n\n* `timezone`: Time zone for time stamps in the response body, defined in conformance with the [IANA time zone database](https://www.iana.org/time-zones).", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/meetingParticipants/query") + req.QueryParam("meetingId", meetingId) + req.QueryParam("meetingStartTimeFrom", meetingStartTimeFrom) + req.QueryParam("meetingStartTimeTo", meetingStartTimeTo) + req.QueryParam("hostEmail", hostEmail) + req.Header("timezone", timezone) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("emails", emails) + req.BodyString("joinTimeFrom", joinTimeFrom) + req.BodyString("joinTimeTo", joinTimeTo) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "The unique identifier for the meeting.") + cmd.Flags().StringVar(&meetingStartTimeFrom, "meeting-start-time-from", "", "Meetings start from the specified date and time(exclusive) in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. If `meetingStartTimeFrom` is not specified, it equals `meetingStartTimeTo` minus 1 month; if `meetingStartTimeTo` is also not specified, the default value for `meetingStartTimeFrom` is 1 month before current date and time.") + cmd.Flags().StringVar(&meetingStartTimeTo, "meeting-start-time-to", "", "Meetings start before the specified date and time(exclusive) in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. If `meetingStartTimeTo` is not specified, it equals the result of a comparison, `meetingStartTimeFrom` plus one month and the current time, and the result is the earlier of the two; if `meetingStartTimeFrom` is also not specified, the default value for `meetingStartTimeTo` is current date and time minus 1 month.") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes, the admin may specify the email of a user in a site they manage and the API will return meeting participants of the meetings that are hosted by that user.") + cmd.Flags().StringVar(&timezone, "timezone", "", "e.g. UTC") + cmd.Flags().StringSliceVar(&emails, "emails", nil, "") + cmd.Flags().StringVar(&joinTimeFrom, "join-time-from", "", "") + cmd.Flags().StringVar(&joinTimeTo, "join-time-to", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + participantsCmd.AddCommand(cmd) + } + + { // get-meeting + var participantId string + var hostEmail string + cmd := &cobra.Command{ + Use: "get-meeting", + Short: "Get Meeting Participant Details", + Long: "Get a meeting participant details of a live or post meeting. The `participantId` is required to identify the meeting and the participant.\n\nThe authenticated user calling this API must either have an Administrator role with the `meeting:admin_participants_read` scope, or be the meeting host.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/meetingParticipants/{participantId}") + req.PathParam("participantId", participantId) + req.QueryParam("hostEmail", hostEmail) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&participantId, "participant-id", "", "The unique identifier for the meeting and the participant.") + cmd.MarkFlagRequired("participant-id") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes, the admin may specify the email of a user in a site they manage and the API will return meeting participants of the meetings that are hosted by that user.") + participantsCmd.AddCommand(cmd) + } + + { // update + var participantId string + var muted bool + var admit bool + var expel bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Short: "Update a Participant", + Long: "Mute, un-mute, expel, or admit a participant in a live meeting. The `participantId` is required to identify the meeting and the participant.\n\nNotes:\n\n* The owner of the OAuth token calling this API needs to be the meeting host or co-host.\n\n* The `expel` attribute always takes precedence over `admit` and `muted`. The request can have all `expel`, `admit` and `muted` or any of them.\n\n
There is an inconsistent behavior in Webex Meetings App when all active meeting participants join using Webex Meetings App and the host attempts to change meeting participant status using this API. Requests to mute, un-mute, admit, or expel a meeting participant return a successful response and update the state in the API, but the changes will not be applied to the Webex Meetings App participants. The inconsistent behavior in Webex Meetings App will be corrected in a future release.\n**Workaround**: [Enable closed captions](https://help.webex.com/en-us/article/WBX47352/How-Do-I-Enable-Closed-Captions?) or enable the [Webex Assistant](https://help.webex.com/en-us/article/n91uf2x/Turn-on-or-turn-off-Webex-Assistant-during-a-meeting-or-webinar).
", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/meetingParticipants/{participantId}") + req.PathParam("participantId", participantId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("muted", muted, cmd.Flags().Changed("muted")) + req.BodyBool("admit", admit, cmd.Flags().Changed("admit")) + req.BodyBool("expel", expel, cmd.Flags().Changed("expel")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&participantId, "participant-id", "", "The unique identifier for the meeting and the participant.") + cmd.MarkFlagRequired("participant-id") + cmd.Flags().BoolVar(&muted, "muted", false, "") + cmd.Flags().BoolVar(&admit, "admit", false, "") + cmd.Flags().BoolVar(&expel, "expel", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + participantsCmd.AddCommand(cmd) + } + + { // admit + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "admit", + Short: "Admit Participants", + Long: "Admit multiple participants to a meeting in progress.\n\nThis API limits the maximum size of `items` in the request body to 100.\n\nEach `participantId` of `items` in the request body should have the same prefix of `meetingId`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/meetingParticipants/admit") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + participantsCmd.AddCommand(cmd) + } + + { // call-out-sip + var address string + var displayName string + var meetingId string + var meetingNumber string + var addressType string + var invitationCorrelationId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "call-out-sip", + Short: "Call Out a SIP Participant", + Long: "Initiate a call to a SIP participant to join a meeting.\n\nIf a user invoking the API is not a [Service App](/docs/service-apps), the user must join the meeting before invoking the API. If a user is a [Service App](/docs/service-apps), the service app can invoke the API without joining the meeting. In both cases, the normal user or the service app that invokes the API must be the meeting host or cohost. If the meeting is created by the service app on behalf of the real host, the service app cannot use the admin on behalf function to invoke this API. Instead the host or cohost must execute the action.\n\nThe authenticated user calling this API must have the `meeting:participants_write` scope.\n\nThe ringing on the invited SIP device stops in 30 seconds if there is no response.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/meetingParticipants/callout") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("address", address) + req.BodyString("displayName", displayName) + req.BodyString("meetingId", meetingId) + req.BodyString("meetingNumber", meetingNumber) + req.BodyString("addressType", addressType) + req.BodyString("invitationCorrelationId", invitationCorrelationId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&address, "address", "", "") + cmd.Flags().StringVar(&displayName, "display-name", "", "") + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "") + cmd.Flags().StringVar(&meetingNumber, "meeting-number", "", "") + cmd.Flags().StringVar(&addressType, "address-type", "", "") + cmd.Flags().StringVar(&invitationCorrelationId, "invitation-correlation-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + participantsCmd.AddCommand(cmd) + } + + { // cancel-calling-out-sip + var participantId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "cancel-calling-out-sip", + Short: "Cancel Calling Out a SIP Participant", + Long: "Cancel the call to a SIP participant before the ringing on the invited SIP device stops. The ringing on the invited SIP device stops in 30 seconds if there is no response.\n\nIf a user invoking the API is not a [Service App](/docs/service-apps), the user must join the meeting before invoking the API. If a user is a [Service App](/docs/service-apps), the service app can invoke the API without joining the meeting. In both cases, the normal user or the service app that invokes the API must be the meeting host or cohost. If the meeting is created by the service app on behalf of the real host, the service app cannot use the admin on behalf function to invoke this API. Instead the host or cohost must execute the action.\n\nThe authenticated user calling this API must have the `meeting:participants_write` scope.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/meetingParticipants/cancelCallout") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("participantId", participantId) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&participantId, "participant-id", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + participantsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/meetings/people.go b/cmd/meetings/people.go new file mode 100644 index 0000000..0d343cd --- /dev/null +++ b/cmd/meetings/people.go @@ -0,0 +1,222 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package meetings + +import ( + "fmt" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strings.Join + +var peopleCmd = &cobra.Command{ + Use: "people", + Short: "People commands", +} + +func init() { + cmd.MeetingsCmd.AddCommand(peopleCmd) + + { // list + var email string + var displayName string + var id string + var orgId string + var roles string + var callingData string + var locationId string + var max string + var excludeStatus string + cmd := &cobra.Command{ + Use: "list", + Short: "List People", + Long: "List people in your organization. For most users, either the `email` or `displayName` parameter is required. Admin users can omit these fields and list all users in their organization.\n\nResponse properties associated with a user's presence status, such as `status` or `lastActivity`, will only be returned for people within your organization or an organization you manage. Presence information will not be returned if the authenticated user has [disabled status sharing](https://help.webex.com/nkzs6wl/). Calling /people frequently to poll `status` information for a large set of users will quickly lead to `429` errors and throttling of such requests and is therefore discouraged.\n\nAdmin users can include `Webex Calling` (BroadCloud) user details in the response by specifying `callingData` parameter as `true`. Admin users can list all users in a location. Admin users will receive an enriched payload with additional administrative fields like `licenses`,`roles`, `locations` etc. These fields are shown when accessing a user via GET /people/{id}, not when doing a GET /people?id=\n\nLookup by `email` is only supported for people within the same org or where a partner admin relationship is in place.\n\nLookup by `roles` is only supported for Admin users for the people within the same org.\n\nLong result sets will be split into [pages](/docs/basics#pagination).", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/people") + req.QueryParam("email", email) + req.QueryParam("displayName", displayName) + req.QueryParam("id", id) + req.QueryParam("orgId", orgId) + req.QueryParam("roles", roles) + req.QueryParam("callingData", callingData) + req.QueryParam("locationId", locationId) + req.QueryParam("max", max) + req.QueryParam("excludeStatus", excludeStatus) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&email, "email", "", "List people with this email address. For non-admin requests, either this or `displayName` are required. With the exception of partner admins and a managed org relationship, people lookup by email is only available for users in the same org.") + cmd.Flags().StringVar(&displayName, "display-name", "", "List people whose name starts with this string. For non-admin requests, either this or email are required.") + cmd.Flags().StringVar(&id, "id", "", "List people by ID. Accepts up to 85 person IDs separated by commas. If this parameter is provided then presence information (such as the `lastActivity` or `status` properties) will not be included in the response.") + cmd.Flags().StringVar(&orgId, "org-id", "", "List people in this organization. Only admin users of another organization (such as partners) may use this parameter.") + cmd.Flags().StringVar(&roles, "roles", "", "List of roleIds separated by commas.") + cmd.Flags().StringVar(&callingData, "calling-data", "", "Include Webex Calling user details in the response.") + cmd.Flags().StringVar(&locationId, "location-id", "", "List people present in this location.") + cmd.Flags().StringVar(&max, "max", "", "Limit the maximum number of people in the response. If `callingData`=true, then `max` will not be more than 100. If `locationId` is specified then `max` will not be more than 50.") + cmd.Flags().StringVar(&excludeStatus, "exclude-status", "", "Omit people status/availability to enhance query performance.") + peopleCmd.AddCommand(cmd) + } + + { // create-person + var callingData string + var minResponse string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-person", + Short: "Create a Person", + Long: "Create a new user account for a given organization. Only an admin can create a new user account.\n\nAt least one of the following body parameters is required to create a new user: `displayName`, `firstName`, `lastName`.\n\nCurrently, users may have only one email address associated with their account. The `emails` parameter is an array, which accepts multiple values to allow for future expansion, but currently only one email address will be used for the new user.\n\nAdmin users can include `Webex calling` (BroadCloud) user details in the response by specifying `callingData` parameter as true. It may happen that the POST request with calling data returns a 400 status, but the person was created still. One way to get into this state is if an invalid phone number is assigned to a user. The people API aggregates calls to several other microservices, and one may have failed. A best practice is to check if the user exists before retrying. This can be done with the user's email address and a GET /people.\n\nWhen doing attendee management, append `#attendee` to the `siteUrl` parameter (e.g. `mysite.webex.com#attendee`) to make the new user an attendee for a site.\n\n**NOTES**:\n\n* For creating a `Webex Calling` user, you must provide `phoneNumbers` or `extension`, `locationId`, and `licenses` string in the same request.\n\n* `SipAddresses` are asigned via an asynchronous process. This means that the POST response may not show the SIPAddresses immediately. Instead you can verify them with a separate GET to /people, after they were newly configured.\n\n* When assigning multiple licenses in a single request, the system will assign all valid and available licenses. If any requested licenses cannot be assigned, the operation will continue with the remaining licenses. As a result, it is possible that not all requested licenses are assigned to the user.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/people") + req.QueryParam("callingData", callingData) + req.QueryParam("minResponse", minResponse) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callingData, "calling-data", "", "Include Webex Calling user details in the response.") + cmd.Flags().StringVar(&minResponse, "min-response", "", "Set to `true` to improve performance by omitting person details and returning only the ID in the response when successful. If unsuccessful the response will have optional error details.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + peopleCmd.AddCommand(cmd) + } + + { // get-person + var personId string + var callingData string + cmd := &cobra.Command{ + Use: "get-person", + Short: "Get Person Details", + Long: "Shows details for a person, by ID.\n\nResponse properties associated with a user's presence status, such as `status` or `lastActivity`, will only be displayed for people within your organization or an organization you manage. Presence information will not be shown if the authenticated user has [disabled status sharing](https://help.webex.com/nkzs6wl/).\n\nAdmin users can include `Webex Calling` (BroadCloud) user details in the response by specifying `callingData` parameter as `true`.\n\nSpecify the person ID in the `personId` parameter in the URI.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/people/{personId}") + req.PathParam("personId", personId) + req.QueryParam("callingData", callingData) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&callingData, "calling-data", "", "Include Webex Calling user details in the response.") + peopleCmd.AddCommand(cmd) + } + + { // update-person + var personId string + var callingData string + var showAllTypes string + var minResponse string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-person", + Short: "Update a Person", + Long: "Update details for a person, by ID.\n\nSpecify the person ID in the `personId` parameter in the URI. Only an admin can update a person details.\n\nInclude all details for the person. This action expects all user details to be present in the request. A common approach is to first [GET the person's details](/docs/api/v1/people/get-person-details), make changes, then PUT both the changed and unchanged values.\n\nAdmin users can include `Webex Calling` (BroadCloud) user details in the response by specifying `callingData` parameter as true.\n\nWhen doing attendee management, to update a user from host role to an attendee for a site append `#attendee` to the respective `siteUrl` and remove the meeting host license for this site from the license array.\nTo update a person from an attendee role to a host for a site, add the meeting license for this site in the meeting array, and remove that site from the `siteurl` parameter.\n\nTo remove the attendee privilege for a user on a meeting site, remove the `sitename#attendee` from the `siteUrl`s array. The `showAllTypes` parameter must be set to `true`.\n\n**NOTE**:\n\n* When assigning a Webex Calling license, either a telephone number or extension must already be assigned to the person or provided in the request payload.\n\n* When `callingData` is set to `true`, a Webex Calling license must be included in the `licenses` array.\n\n* The `locationId` can only be set when assigning a calling license to a user. It cannot be changed if a user is already an existing calling user.\n\n* The `extension` field should be used to update the Webex Calling extension for a person. The extension value should not include the location routing prefix. The `work_extension` type in the `phoneNumbers` object as seen in the response payload of [List People](/docs/api/v1/people/list-people) or [Get Person Details](/docs/api/v1/people/get-person-details), cannot be used to set the Webex Calling extension for a person.\n\n* When updating a user with multiple email addresses using a PUT request, ensure that the primary email address is listed first in the array. Note that the order of email addresses returned by a GET request is not guaranteed..\n\n* The People API is a combination of several microservices, each responsible for specific attributes of a person. As a result, a PUT request that returns an error response code may still have altered some values of the person's data. Therefore, it is recommended to perform a GET request after encountering an error to verify the current state of the resource. \n\n* Some licenses are implicitly assigned by the system and cannot be admin controlled. They are necessary for the baseline function of the Webex system. If you get an error about implicitly assigned licensed that cannot be removed, please ensure you have the corresponding license in your PUT request.\n\n* When assigning multiple licenses in a single request, the system will assign all valid and available licenses. If any requested licenses cannot be assigned, the operation will continue with the remaining licenses. As a result, it is possible that not all requested licenses are assigned to the user.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/people/{personId}") + req.PathParam("personId", personId) + req.QueryParam("callingData", callingData) + req.QueryParam("showAllTypes", showAllTypes) + req.QueryParam("minResponse", minResponse) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&callingData, "calling-data", "", "Include Webex Calling user details in the response.") + cmd.Flags().StringVar(&showAllTypes, "show-all-types", "", "Include additional user data like `#attendee` role.") + cmd.Flags().StringVar(&minResponse, "min-response", "", "Set to `true` to improve performance by omitting person details in the response. If unsuccessful the response will have optional error details.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + peopleCmd.AddCommand(cmd) + } + + { // delete-person + var personId string + cmd := &cobra.Command{ + Use: "delete-person", + Short: "Delete a Person", + Long: "Remove a person from the system.\n\n**Required Administrator Roles:**\n\nThe following administrators have permission to use this API:\n\n**Customer Organization:**\n- Full administrator\n- User administrator\n\n**Partner/External Access:**\n- External full administrator\n\n**Note:** External read-only administrators, provisioning administrators, and device administrators cannot delete users.\n\nSpecify the person ID in the `personId` parameter in the URI.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/people/{personId}") + req.PathParam("personId", personId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + peopleCmd.AddCommand(cmd) + } + + { // get-my-own + var callingData string + cmd := &cobra.Command{ + Use: "get-my-own", + Short: "Get My Own Details", + Long: "Get profile details for the authenticated user. This is the same as GET `/people/{personId}` using the Person ID associated with your Auth token.\n\nAdmin users can include `Webex Calling` (BroadCloud) user details in the response by specifying `callingData` parameter as true.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/people/me") + req.QueryParam("callingData", callingData) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callingData, "calling-data", "", "Include Webex Calling user details in the response.") + peopleCmd.AddCommand(cmd) + } + +} diff --git a/cmd/meetings/preferences.go b/cmd/meetings/preferences.go new file mode 100644 index 0000000..f6fc3c7 --- /dev/null +++ b/cmd/meetings/preferences.go @@ -0,0 +1,464 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package meetings + +import ( + "fmt" + "strconv" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa +var _ = strings.Join + +var preferencesCmd = &cobra.Command{ + Use: "preferences", + Short: "Preferences commands", +} + +func init() { + cmd.MeetingsCmd.AddCommand(preferencesCmd) + + { // get-meeting + var userEmail string + var siteUrl string + cmd := &cobra.Command{ + Use: "get-meeting", + Short: "Get Meeting Preference Details", + Long: `Retrieves meeting preferences for the authenticated user.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/meetingPreferences") + req.QueryParam("userEmail", userEmail) + req.QueryParam("siteUrl", siteUrl) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&userEmail, "user-email", "", "Email address for the user. This parameter is only used if the user or application calling the API has the required [admin-level scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will return details of the meeting preferences for that user.") + cmd.Flags().StringVar(&siteUrl, "site-url", "", "URL of the Webex site to query. For individual use, if `siteUrl` is not specified, the query will use the default site of the user. For admin use, if `siteUrl` is not specified, the query will use the default site for the admin's authorization token used to make the call. In the case where the user belongs to a site different than the admin’s default site, the admin can set the site to query using the `siteUrl` parameter. All available Webex sites and default site of a user can be retrieved from [/meetingPreferences/sites](/docs/api/v1/meeting-preferences/get-site-list).") + preferencesCmd.AddCommand(cmd) + } + + { // get-personal-meeting-room-options + var userEmail string + var siteUrl string + cmd := &cobra.Command{ + Use: "get-personal-meeting-room-options", + Short: "Get Personal Meeting Room Options", + Long: `Retrieves the Personal Meeting Room options for the authenticated user.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/meetingPreferences/personalMeetingRoom") + req.QueryParam("userEmail", userEmail) + req.QueryParam("siteUrl", siteUrl) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&userEmail, "user-email", "", "Email address for the user. This parameter is only used if the user or application calling the API has the [admin-level scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will return details of the Personal Meeting Room options for that user.") + cmd.Flags().StringVar(&siteUrl, "site-url", "", "URL of the Webex site to query. For individual use, if `siteUrl` is not specified, the query will use the default site of the user. For admin use, if `siteUrl` is not specified, the query will use the default site for the admin's authorization token used to make the call. In the case where the user belongs to a site different than the admin’s default site, the admin can set the site to query using the `siteUrl` parameter. All available Webex sites and default site of a user can be retrieved from [/meetingPreferences/sites](/docs/api/v1/meeting-preferences/get-site-list).") + preferencesCmd.AddCommand(cmd) + } + + { // update-personal-meeting-room-options + var userEmail string + var siteUrl string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-personal-meeting-room-options", + Short: "Update Personal Meeting Room Options", + Long: `Updates Personal Meeting Room options for the authenticated user.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/meetingPreferences/personalMeetingRoom") + req.QueryParam("userEmail", userEmail) + req.QueryParam("siteUrl", siteUrl) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&userEmail, "user-email", "", "Email address for the user. This parameter is only used if the user or application calling the API has the [admin-level scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will update Personal Meeting Room options for that user.") + cmd.Flags().StringVar(&siteUrl, "site-url", "", "URL of the Webex site to query. For individual use, if `siteUrl` is not specified, the query will use the default site of the user. For admin use, if `siteUrl` is not specified, the query will use the default site for the admin's authorization token used to make the call. In the case where the user belongs to a site different than the admin’s default site, the admin can set the site to query using the `siteUrl` parameter. All available Webex sites and default site of a user can be retrieved from [/meetingPreferences/sites](/docs/api/v1/meeting-preferences/get-site-list).") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + preferencesCmd.AddCommand(cmd) + } + + { // get-audio-options + var userEmail string + var siteUrl string + cmd := &cobra.Command{ + Use: "get-audio-options", + Short: "Get Audio Options", + Long: `Retrieves audio options for the authenticated user.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/meetingPreferences/audio") + req.QueryParam("userEmail", userEmail) + req.QueryParam("siteUrl", siteUrl) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&userEmail, "user-email", "", "Email address for the user. This parameter is only used if the user or application calling the API has the [admin-level scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will return details of the audio options for that user.") + cmd.Flags().StringVar(&siteUrl, "site-url", "", "URL of the Webex site to query. For individual use, if `siteUrl` is not specified, the query will use the default site of the user. For admin use, if `siteUrl` is not specified, the query will use the default site for the admin's authorization token used to make the call. In the case where the user belongs to a site different than the admin’s default site, the admin can set the site to query using the `siteUrl` parameter. All available Webex sites and default site of a user can be retrieved from [/meetingPreferences/sites](/docs/api/v1/meeting-preferences/get-site-list).") + preferencesCmd.AddCommand(cmd) + } + + { // update-audio-options + var userEmail string + var siteUrl string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-audio-options", + Short: "Update Audio Options", + Long: `Updates audio options for the authenticated user.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/meetingPreferences/audio") + req.QueryParam("userEmail", userEmail) + req.QueryParam("siteUrl", siteUrl) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&userEmail, "user-email", "", "Email address for the user. This parameter is only used if the user or application calling the API has the [admin-level scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will update audio options for that user.") + cmd.Flags().StringVar(&siteUrl, "site-url", "", "URL of the Webex site to query. For individual use, if `siteUrl` is not specified, the query will use the default site of the user. For admin use, if `siteUrl` is not specified, the query will use the default site for the admin's authorization token used to make the call. In the case where the user belongs to a site different than the admin’s default site, the admin can set the site to query using the `siteUrl` parameter. All available Webex sites and default site of a user can be retrieved from [/meetingPreferences/sites](/docs/api/v1/meeting-preferences/get-site-list).") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + preferencesCmd.AddCommand(cmd) + } + + { // get-video-options + var userEmail string + var siteUrl string + cmd := &cobra.Command{ + Use: "get-video-options", + Short: "Get Video Options", + Long: `Retrieves video options for the authenticated user.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/meetingPreferences/video") + req.QueryParam("userEmail", userEmail) + req.QueryParam("siteUrl", siteUrl) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&userEmail, "user-email", "", "Email address for the user. This parameter is only used if the user or application calling the API has the [admin-level scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will return details of the video options for that user.") + cmd.Flags().StringVar(&siteUrl, "site-url", "", "URL of the Webex site to query. For individual use, if `siteUrl` is not specified, the query will use the default site of the user. For admin use, if `siteUrl` is not specified, the query will use the default site for the admin's authorization token used to make the call. In the case where the user belongs to a site different than the admin’s default site, the admin can set the site to query using the `siteUrl` parameter. All available Webex sites and default site of a user can be retrieved using [Get Site List](/docs/api/v1/meeting-preferences/get-site-list).") + preferencesCmd.AddCommand(cmd) + } + + { // update-video-options + var userEmail string + var siteUrl string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-video-options", + Short: "Update Video Options", + Long: `Updates video options for the authenticated user.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/meetingPreferences/video") + req.QueryParam("userEmail", userEmail) + req.QueryParam("siteUrl", siteUrl) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&userEmail, "user-email", "", "Email address for the user. This parameter is only used if the user or application calling the API has the [admin-level scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will update video options for that user.") + cmd.Flags().StringVar(&siteUrl, "site-url", "", "URL of the Webex site to query. For individual use, if `siteUrl` is not specified, the query will use the default site of the user. For admin use, if `siteUrl` is not specified, the query will use the default site for the admin's authorization token used to make the call. In the case where the user belongs to a site different than the admin’s default site, the admin can set the site to query using the `siteUrl` parameter. All available Webex sites and default site of a user can be retrieved from [/meetingPreferences/sites](/docs/api/v1/meeting-preferences/get-site-list).") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + preferencesCmd.AddCommand(cmd) + } + + { // get-scheduling-options + var userEmail string + var siteUrl string + cmd := &cobra.Command{ + Use: "get-scheduling-options", + Short: "Get Scheduling Options", + Long: `Retrieves scheduling options for the authenticated user.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/meetingPreferences/schedulingOptions") + req.QueryParam("userEmail", userEmail) + req.QueryParam("siteUrl", siteUrl) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&userEmail, "user-email", "", "Email address for the user. This parameter is only used if the user or application calling the API has the [admin-level scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will return details of the scheduling options for that user.") + cmd.Flags().StringVar(&siteUrl, "site-url", "", "URL of the Webex site to query. For individual use, if `siteUrl` is not specified, the query will use the default site of the user. For admin use, if `siteUrl` is not specified, the query will use the default site for the admin's authorization token used to make the call. In the case where the user belongs to a site different than the admin’s default site, the admin can set the site to query using the `siteUrl` parameter. All available Webex sites and default site of a user can be retrieved from [/meetingPreferences/sites](/docs/api/v1/meeting-preferences/get-site-list).") + preferencesCmd.AddCommand(cmd) + } + + { // update-scheduling-options + var userEmail string + var siteUrl string + var enabledJoinBeforeHost bool + var joinBeforeHostMinutes int64 + var enabledAutoShareRecording bool + var enabledWebexAssistantByDefault bool + var delegateEmails []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-scheduling-options", + Short: "Update Scheduling Options", + Long: "Updates scheduling options for the authenticated user.\n\n* If `delegateEmails` is null or not specified, the user's delegate emails are not changed. If `delegateEmails` is specified and not empty, the user's delegate emails are updated with the specified emails. If `delegateEmails` is specified as an empty array, the user's existing delegate emails are removed.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/meetingPreferences/schedulingOptions") + req.QueryParam("userEmail", userEmail) + req.QueryParam("siteUrl", siteUrl) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("enabledJoinBeforeHost", enabledJoinBeforeHost, cmd.Flags().Changed("enabled-join-before-host")) + req.BodyInt("joinBeforeHostMinutes", joinBeforeHostMinutes, cmd.Flags().Changed("join-before-host-minutes")) + req.BodyBool("enabledAutoShareRecording", enabledAutoShareRecording, cmd.Flags().Changed("enabled-auto-share-recording")) + req.BodyBool("enabledWebexAssistantByDefault", enabledWebexAssistantByDefault, cmd.Flags().Changed("enabled-webex-assistant-by-default")) + req.BodyStringSlice("delegateEmails", delegateEmails) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&userEmail, "user-email", "", "Email address for the user. This parameter is only used if the user or application calling the API has the [admin-level scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will update scheduling options for that user.") + cmd.Flags().StringVar(&siteUrl, "site-url", "", "URL of the Webex site to query. For individual use, if `siteUrl` is not specified, the query will use the default site of the user. For admin use, if `siteUrl` is not specified, the query will use the default site for the admin's authorization token used to make the call. In the case where the user belongs to a site different than the admin’s default site, the admin can set the site to query using the `siteUrl` parameter. All available Webex sites and default site of a user can be retrieved from [/meetingPreferences/sites](/docs/api/v1/meeting-preferences/get-site-list).") + cmd.Flags().BoolVar(&enabledJoinBeforeHost, "enabled-join-before-host", false, "") + cmd.Flags().Int64Var(&joinBeforeHostMinutes, "join-before-host-minutes", 0, "") + cmd.Flags().BoolVar(&enabledAutoShareRecording, "enabled-auto-share-recording", false, "") + cmd.Flags().BoolVar(&enabledWebexAssistantByDefault, "enabled-webex-assistant-by-default", false, "") + cmd.Flags().StringSliceVar(&delegateEmails, "delegate-emails", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + preferencesCmd.AddCommand(cmd) + } + + { // insert-delegate-emails + var userEmail string + var siteUrl string + var emails []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "insert-delegate-emails", + Short: "Insert Delegate Emails", + Long: `Insert delegate emails for the authenticated user.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/meetingPreferences/schedulingOptions/delegateEmails/insert") + req.QueryParam("userEmail", userEmail) + req.QueryParam("siteUrl", siteUrl) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("emails", emails) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&userEmail, "user-email", "", "Email address for the user. This parameter is only used if the user or application calling the API has the [admin-level scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will update scheduling options for that user.") + cmd.Flags().StringVar(&siteUrl, "site-url", "", "URL of the Webex site to query. For individual use, if `siteUrl` is not specified, the query will use the default site of the user. For admin use, if `siteUrl` is not specified, the query will use the default site for the admin's authorization token used to make the call. In the case where the user belongs to a site different than the admin’s default site, the admin can set the site to query using the `siteUrl` parameter. All available Webex sites and default site of a user can be retrieved from [/meetingPreferences/sites](/docs/api/v1/meeting-preferences/get-site-list).") + cmd.Flags().StringSliceVar(&emails, "emails", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + preferencesCmd.AddCommand(cmd) + } + + { // delete-delegate-emails + var userEmail string + var siteUrl string + var emails []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "delete-delegate-emails", + Short: "Delete Delegate Emails", + Long: `Delete delegate emails for the authenticated user.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/meetingPreferences/schedulingOptions/delegateEmails/delete") + req.QueryParam("userEmail", userEmail) + req.QueryParam("siteUrl", siteUrl) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("emails", emails) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&userEmail, "user-email", "", "Email address for the user. This parameter is only used if the user or application calling the API has the [admin-level scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will update scheduling options for that user.") + cmd.Flags().StringVar(&siteUrl, "site-url", "", "URL of the Webex site to query. For individual use, if `siteUrl` is not specified, the query will use the default site of the user. For admin use, if `siteUrl` is not specified, the query will use the default site for the admin's authorization token used to make the call. In the case where the user belongs to a site different than the admin’s default site, the admin can set the site to query using the `siteUrl` parameter. All available Webex sites and default site of a user can be retrieved from [/meetingPreferences/sites](/docs/api/v1/meeting-preferences/get-site-list).") + cmd.Flags().StringSliceVar(&emails, "emails", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + preferencesCmd.AddCommand(cmd) + } + + { // get-site-list + var userEmail string + var siteUrl string + cmd := &cobra.Command{ + Use: "get-site-list", + Short: "Get Site List", + Long: "Retrieves the list of Webex sites that the authenticated user is set up to use.\nWhen the admin tries to get the site list via `userEmail`, if `siteUrl` is not specified, the API searches the user ID from the admin's default site. If `siteUrl` is specified, the API searches the user ID from the specified site.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/meetingPreferences/sites") + req.QueryParam("userEmail", userEmail) + req.QueryParam("siteUrl", siteUrl) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&userEmail, "user-email", "", "Email address for the user. This parameter is only used if the user or application calling the API has the [admin-level scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user and the API will return the list of Webex sites for that user.") + cmd.Flags().StringVar(&siteUrl, "site-url", "", "URL of the Webex site to query. If `siteUrl` is not specified, the query will use the default site for the admin's authorization token used to make the call.") + preferencesCmd.AddCommand(cmd) + } + + { // update-default-site + var defaultSite string + var userEmail string + var siteUrl string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-default-site", + Short: "Update Default Site", + Long: `Updates the default site for the authenticated user.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/meetingPreferences/sites") + req.QueryParam("defaultSite", defaultSite) + req.QueryParam("userEmail", userEmail) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("siteUrl", siteUrl) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&defaultSite, "default-site", "", "Whether or not to change user's default site. ***Note***: `defaultSite` should be set to true for the user's single default site") + cmd.Flags().StringVar(&userEmail, "user-email", "", "Email address for the user. This parameter is only used if the user or application calling the API has the [admin-level scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will update default site for that user.") + cmd.Flags().StringVar(&siteUrl, "site-url", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + preferencesCmd.AddCommand(cmd) + } + + { // batch-refresh-personal-meeting-room-id + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "batch-refresh-personal-meeting-room-id", + Short: "Batch Refresh Personal Meeting Room ID", + Long: "Refreshes personal room IDs automatically according to the current personal room ID rule of the target site or by the values specified by the admin user.\n\nThe new personal room IDs are generated by the site's settings automatically if `systemGenerated` is true; otherwise, replace the existing personal room IDs with the specified values if `systemGenerated` is false or not specified.\n\nIt may take up to 30 minutes to see the updated personal room ID on the Webex meeting page after refreshing the personal room ID due to cache.\n\nEither all items in `personalMeetingRoomIds` have `personalMeetingRoomId`, or they all have `systemGenerated` which equals true. `personalMeetingRoomId` and `systemGenerated: true` cannot be specified at the same time.\n\nThe items in `personalMeetingRoomIds` either all have `personId` or all have `email` in a single request. Partial `personId` and partial `email` is not allowed in the same request.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/admin/meetingPreferences/personalMeetingRoom/refreshId") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + preferencesCmd.AddCommand(cmd) + } + +} diff --git a/cmd/meetings/recording_report.go b/cmd/meetings/recording_report.go new file mode 100644 index 0000000..64465aa --- /dev/null +++ b/cmd/meetings/recording_report.go @@ -0,0 +1,192 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package meetings + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/Cloverhound/webex-cli/internal/timeutil" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = timeutil.ParseLastISO + +var recordingReportCmd = &cobra.Command{ + Use: "recording-report", + Short: "RecordingReport commands", +} + +func init() { + cmd.MeetingsCmd.AddCommand(recordingReportCmd) + + { // list-audit-summaries + var max string + var from string + var to string + var hostEmail string + var siteUrl string + var timezone string + var last string + cmd := &cobra.Command{ + Use: "list-audit-summaries", + Short: "List of Recording Audit Report Summaries", + Long: "Lists of recording audit report summaries. You can specify a date range and the maximum number of recording audit report summaries to return.\n\nOnly recording audit report summaries of meetings hosted by or shared with the authenticated user will be listed.\n\nThe list returned is sorted in descending order by the date and time that the recordings were created.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n* If `siteUrl` is specified, the recording audit report summaries of the specified site will be listed; otherwise, recording audit report summaries of the user's preferred site will be listed. All available Webex sites and the preferred site of the user can be retrieved by the `Get Site List` API.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/recordingReport/accessSummary") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("max", max) + req.QueryParam("from", from) + req.QueryParam("to", to) + req.QueryParam("hostEmail", hostEmail) + req.QueryParam("siteUrl", siteUrl) + req.Header("timezone", timezone) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&max, "max", "", "Maximum number of recording audit report summaries to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`.") + cmd.Flags().StringVar(&from, "from", "", "Starting date and time (inclusive) for recording audit report summaries to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`. Please note that the interval between `to` and `from` cannot exceed 90 days and the interval between the current time and `from` cannot exceed 365 days.") + cmd.Flags().StringVar(&to, "to", "", "Ending date and time (exclusive) for recording audit report summaries to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`. Please note that the interval between `to` and `from` cannot exceed 90 days and the interval between the current time and `from` cannot exceed 365 days.") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin on-behalf-of scopes. If set, the admin may specify the email of a user in a site they manage and the API will return recording audit report summaries of that user. If a special value of `all` is set for `hostEmail`, the admin can list recording audit report summaries of all users on the target site, not of a single user.") + cmd.Flags().StringVar(&siteUrl, "site-url", "", "URL of the Webex site which the API lists recording audit report summaries from. If not specified, the API lists summary audit report for recordings from the user's preferred site. All available Webex sites and the preferred site of the user can be retrieved by `Get Site List` API.") + cmd.Flags().StringVar(&timezone, "timezone", "", "e.g. UTC") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + recordingReportCmd.AddCommand(cmd) + } + + { // get-audit + var recordingId string + var hostEmail string + var max string + var timezone string + cmd := &cobra.Command{ + Use: "get-audit", + Short: "Get Recording Audit Report Details", + Long: "Retrieves details for a recording audit report with a specified recording ID.\n\nOnly recording audit report details of meetings hosted by or shared with the authenticated user may be retrieved.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/recordingReport/accessDetail") + req.QueryParam("recordingId", recordingId) + req.QueryParam("hostEmail", hostEmail) + req.QueryParam("max", max) + req.Header("timezone", timezone) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&recordingId, "recording-id", "", "A unique identifier for the recording.") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin on-behalf-of scopes. If set, the admin may specify the email of a user in a site they manage and the API will return recording details of that user.") + cmd.Flags().StringVar(&max, "max", "", "Maximum number of recording audit report details to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`.") + cmd.Flags().StringVar(&timezone, "timezone", "", "e.g. UTC") + recordingReportCmd.AddCommand(cmd) + } + + { // list-meeting-archive-summaries + var max string + var from string + var to string + var siteUrl string + var timezone string + var last string + cmd := &cobra.Command{ + Use: "list-meeting-archive-summaries", + Short: "List Meeting Archive Summaries", + Long: "Lists of meeting archive summaries. You can specify a date range and the maximum number of meeting archive summaries to return.\n\nMeeting archive summaries are only available to full administrators, not even the meeting host.\n\nThe list returned is sorted in descending order by the date and time that the archives were created.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n* If `siteUrl` is specified, the meeting archive summaries of the specified site will be listed; otherwise, meeting archive summaries of the user's preferred site will be listed. All available Webex sites and the preferred site of the user can be retrieved by the `Get Site List` API.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/recordingReport/meetingArchiveSummaries") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("max", max) + req.QueryParam("from", from) + req.QueryParam("to", to) + req.QueryParam("siteUrl", siteUrl) + req.Header("timezone", timezone) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&max, "max", "", "Maximum number of meeting archive summaries to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`.") + cmd.Flags().StringVar(&from, "from", "", "Starting date and time (inclusive) for meeting archive summaries to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`. Please note that the interval between `to` and `from` cannot exceed 30 days.") + cmd.Flags().StringVar(&to, "to", "", "Ending date and time (exclusive) for meeting archive summaries to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`. Please note that the interval between `to` and `from` cannot exceed 30 days.") + cmd.Flags().StringVar(&siteUrl, "site-url", "", "URL of the Webex site which the API lists meeting archive summaries from. If not specified, the API lists meeting archive summaries for recordings from the user's preferred site. All available Webex sites and the preferred site of the user can be retrieved by `Get Site List` API.") + cmd.Flags().StringVar(&timezone, "timezone", "", "e.g. UTC") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + recordingReportCmd.AddCommand(cmd) + } + + { // get-meeting-archive + var archiveId string + var timezone string + cmd := &cobra.Command{ + Use: "get-meeting-archive", + Short: "Get Meeting Archive Details", + Long: "Retrieves details for a meeting archive report with a specified archive ID, which contains recording metadata.\n\nMeeting archive details are only available to full administrators, not even the meeting host.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/recordingReport/meetingArchives/{archiveId}") + req.PathParam("archiveId", archiveId) + req.Header("timezone", timezone) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&archiveId, "archive-id", "", "A unique identifier for the meeting archive summary.") + cmd.MarkFlagRequired("archive-id") + cmd.Flags().StringVar(&timezone, "timezone", "", "e.g. UTC") + recordingReportCmd.AddCommand(cmd) + } + +} diff --git a/cmd/meetings/recordings.go b/cmd/meetings/recordings.go new file mode 100644 index 0000000..6377d8f --- /dev/null +++ b/cmd/meetings/recordings.go @@ -0,0 +1,695 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package meetings + +import ( + "fmt" + "strconv" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/Cloverhound/webex-cli/internal/timeutil" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strconv.Itoa +var _ = strings.Join +var _ = timeutil.ParseLastISO + +var recordingsCmd = &cobra.Command{ + Use: "recordings", + Short: "Recordings commands", +} + +func init() { + cmd.MeetingsCmd.AddCommand(recordingsCmd) + + { // list + var max string + var from string + var to string + var meetingId string + var hostEmail string + var siteUrl string + var integrationTag string + var topic string + var format string + var serviceType string + var status string + var timezone string + var last string + cmd := &cobra.Command{ + Use: "list", + Short: "List Recordings", + Long: "
This API is still supported and behaves the same as before, but will be deprecated in the future. Due to limited support for special characters when filtering recordings by `topic`, it is recommended to use the new [Query Recordings](/docs/api/v1/recordings/query-recordings) API instead.
\n\nLists recordings. You can specify a date range, a parent meeting ID, and the maximum number of recordings to return.\n\nOnly recordings of meetings hosted by or shared with the authenticated user will be listed.\n\nThe list returned is sorted in descending order by the date and time that the recordings were created.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n* If `meetingId` is specified, only recordings associated with the specified meeting will be listed. **NOTE**: when `meetingId` is specified, parameter of `siteUrl` will be ignored.\n\n* If `siteUrl` is specified, recordings of the specified site will be listed; otherwise, the API lists recordings of all the user's sites. All available Webex sites and preferred site of the user can be retrieved by [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\n#### Request Header\n\n* `timezone`: *[Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.*", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/recordings") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("max", max) + req.QueryParam("from", from) + req.QueryParam("to", to) + req.QueryParam("meetingId", meetingId) + req.QueryParam("hostEmail", hostEmail) + req.QueryParam("siteUrl", siteUrl) + req.QueryParam("integrationTag", integrationTag) + req.QueryParam("topic", topic) + req.QueryParam("format", format) + req.QueryParam("serviceType", serviceType) + req.QueryParam("status", status) + req.Header("timezone", timezone) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&max, "max", "", "Maximum number of recordings to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`.") + cmd.Flags().StringVar(&from, "from", "", "Starting date and time (inclusive) for recordings to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`.") + cmd.Flags().StringVar(&to, "to", "", "Ending date and time (exclusive) for List recordings to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`.") + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "Unique identifier for the parent meeting series, scheduled meeting, or meeting instance for which recordings are being requested. If a meeting series ID is specified, the operation returns an array of recordings for the specified meeting series. If a scheduled meeting ID is specified, the operation returns an array of recordings for the specified scheduled meeting. If a meeting instance ID is specified, the operation returns an array of recordings for the specified meeting instance. If no ID is specified, the operation returns an array of recordings for all meetings of the current user. When `meetingId` is specified, the `siteUrl` parameter is ignored.") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email address for the meeting host. This parameter is only used if the user or application calling the API has the required [admin-level meeting scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will return recordings of that user.") + cmd.Flags().StringVar(&siteUrl, "site-url", "", "URL of the Webex site from which the API lists recordings. If not specified, the API lists recordings from all of a user's sites. All available Webex sites and the preferred site of the user can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.") + cmd.Flags().StringVar(&integrationTag, "integration-tag", "", "External key of the parent meeting created by an integration application. This parameter is used by the integration application to query recordings by a key in its own domain, such as a Zendesk ticket ID, a Jira ID, a Salesforce Opportunity ID, etc. An integrationTag created by one client cannot be accessed or used as a filtering parameter by another client. For example, if a meeting has an `integrationTag` of \"Sales\" which is created by the client behind the developer portal, then this integrationTag can't be accessed on the meeting or its recordings by another client. Neither can it be used to filter meetings or recordings by a client other than the one that created the integrationTag of \"Sales\".") + cmd.Flags().StringVar(&topic, "topic", "", "Recording's topic. If specified, the API filters recordings by topic in a case-insensitive manner.") + cmd.Flags().StringVar(&format, "format", "", "Recording's file format. If specified, the API filters recordings by format.") + cmd.Flags().StringVar(&serviceType, "service-type", "", "The service type for recordings. If this item is specified, the API filters recordings by service-type.") + cmd.Flags().StringVar(&status, "status", "", "Recording's status. If not specified or `available`, retrieves recordings that are available. Otherwise, if specified as `deleted`, retrieves recordings that have been moved into the recycle bin. The `purged` status only applies if the user calling the API is a Compliance Officer and `meetingId` is specified.") + cmd.Flags().StringVar(&timezone, "timezone", "", "e.g. UTC") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + recordingsCmd.AddCommand(cmd) + } + + { // list-admin-compliance-officer + var max string + var from string + var to string + var meetingId string + var siteUrl string + var integrationTag string + var topic string + var format string + var serviceType string + var status string + var timezone string + var last string + cmd := &cobra.Command{ + Use: "list-admin-compliance-officer", + Short: "List Recordings For an Admin or Compliance Officer", + Long: "
This API is still supported and behaves the same as before, but will be deprecated in the future. Due to limited support for special characters when filtering recordings by `topic`, it is recommended to use the new [Query Recordings For an Admin or Compliance Officer](/docs/api/v1/recordings/query-recordings-for-an-admin-or-compliance-officer) API instead.
\n\nList recordings for an admin or compliance officer. You can specify a date range, a parent meeting ID, and the maximum number of recordings to return.\n\nThe list returned is sorted in descending order by the date and time that the recordings were created.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n* If `meetingId` is specified, only recordings associated with the specified meeting will be listed. Please note that when `meetingId` is specified, parameters of `siteUrl`, `from`, and `to` will be ignored.\n\n* If `siteUrl` is specified, all the recordings on the specified site are listed; otherwise, all the recordings on the admin user's or compliance officer's preferred site are listed. All the available Webex sites and the admin user's or compliance officer's preferred site can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\n#### Request Header\n\n* `timezone`: *[Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.*", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/admin/recordings") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("max", max) + req.QueryParam("from", from) + req.QueryParam("to", to) + req.QueryParam("meetingId", meetingId) + req.QueryParam("siteUrl", siteUrl) + req.QueryParam("integrationTag", integrationTag) + req.QueryParam("topic", topic) + req.QueryParam("format", format) + req.QueryParam("serviceType", serviceType) + req.QueryParam("status", status) + req.Header("timezone", timezone) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&max, "max", "", "Maximum number of recordings to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`.") + cmd.Flags().StringVar(&from, "from", "", "Starting date and time (inclusive) for recordings to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`. The interval between `from` and `to` must be within 30 days. If `to` is specified, the default value for `from` is `to` minus 7 days. If `to` is also not specified, the default value for `from` is current date and time minus 7 days.") + cmd.Flags().StringVar(&to, "to", "", "Ending date and time (exclusive) for List recordings to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`. The interval between `from` and `to` must be within 30 days. If `from` is specified, the default value for `to` is `from` plus 7 days. If `from` is also not specified, the default value for `to` is the current date and time.") + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "Unique identifier for the parent meeting series, scheduled meeting, or meeting instance for which recordings are being requested. If a meeting series ID is specified, the operation returns an array of recordings for the specified meeting series. If a scheduled meeting ID is specified, the operation returns an array of recordings for the specified scheduled meeting. If a meeting instance ID is specified, the operation returns an array of recordings for the specified meeting instance. If not specified, the operation returns an array of recordings for all the current user's meetings. When `meetingId` is specified, the `siteUrl` parameter is ignored.") + cmd.Flags().StringVar(&siteUrl, "site-url", "", "URL of the Webex site which the API lists recordings from. If not specified, the API lists recordings from user's preferred site. All available Webex sites and preferred site of the user can be retrieved by [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.") + cmd.Flags().StringVar(&integrationTag, "integration-tag", "", "External key of the parent meeting created by an integration application. This parameter is used by the integration application to query recordings by a key in its own domain such as a Zendesk ticket ID, a Jira ID, a Salesforce Opportunity ID, etc. An integrationTag created by one client cannot be accessed or used as a filtering parameter by another client. For example, if a meeting has an `integrationTag` of \"Sales\" which is created by the client behind the developer portal, then this integrationTag can't be accessed on the meeting or its recordings by another client. Neither can it be used to filter meetings or recordings by a client other than the one that created the integrationTag of \"Sales\".") + cmd.Flags().StringVar(&topic, "topic", "", "Recording topic. If specified, the API filters recordings by topic in a case-insensitive manner.") + cmd.Flags().StringVar(&format, "format", "", "Recording's file format. If specified, the API filters recordings by format.") + cmd.Flags().StringVar(&serviceType, "service-type", "", "The service type for recordings. If specified, the API filters recordings by service type.") + cmd.Flags().StringVar(&status, "status", "", "Recording's status. If not specified or `available`, retrieves recordings that are available. If specified as `deleted`, retrieves recordings that have been moved to the recycle bin. Otherwise, if specified as `purged`, retrieves recordings that have been purged from the recycle bin.") + cmd.Flags().StringVar(&timezone, "timezone", "", "e.g. UTC") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + recordingsCmd.AddCommand(cmd) + } + + { // delete-admin + var recordingId string + cmd := &cobra.Command{ + Use: "delete-admin", + Short: "Delete a Recording By an Admin", + Long: "Removes a recording with a specified recording ID by an admin. The deleted recording cannot be recovered. It will be inaccessible to regular users (host, attendees and shared) or an admin, but it will be still available to the Compliance Officer.\n\nAny recording on a site which is managed by the admin can be deleted by him.\n\nThe `temporaryDirectDownloadLinks` of a recording which are retrieved by the [Get Recording Details](/docs/api/v1/recordings/get-recording-details) API are still available to Compliance Officers even if the recording has been deleted.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/admin/recordings/{recordingId}") + req.PathParam("recordingId", recordingId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&recordingId, "recording-id", "", "A unique identifier for the recording.") + cmd.MarkFlagRequired("recording-id") + recordingsCmd.AddCommand(cmd) + } + + { // get + var recordingId string + var hostEmail string + var timezone string + var siteUrl string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Recording Details", + Long: "Retrieves details for a recording with a specified recording ID.\n\nOnly recordings of meetings hosted by or shared with the authenticated user may be retrieved.\n\n#### Request Header\n\n* `timezone`: *[Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.*\n\n* `siteUrl`: Optional request header parameter. If specified, retrieve the recording details from that site; otherwise, retrieve it from the site which is implied based on the recording ID.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/recordings/{recordingId}") + req.PathParam("recordingId", recordingId) + req.QueryParam("hostEmail", hostEmail) + req.Header("timezone", timezone) + req.Header("siteUrl", siteUrl) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&recordingId, "recording-id", "", "A unique identifier for the recording.") + cmd.MarkFlagRequired("recording-id") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email address for the meeting host. Only used if the user or application calling the API has required [admin-level meeting scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage, and the API will return recording details of that user.") + cmd.Flags().StringVar(&timezone, "timezone", "", "e.g. UTC") + cmd.Flags().StringVar(&siteUrl, "site-url", "", "e.g. example.webex.com") + recordingsCmd.AddCommand(cmd) + } + + { // delete + var recordingId string + var hostEmail string + var reason string + var comment string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete a Recording", + Long: "Removes a recording with a specified recording ID. The deleted recording cannot be recovered. If a Compliance Officer deletes another user's recording, the recording will be inaccessible to regular users (host, attendees and shared), but will be still available to the Compliance Officer.\n\nOnly recordings of meetings hosted by the authenticated user can be deleted.\n\nThe `temporaryDirectDownloadLinks` of a recording which are retrieved by the [Get Recording Details](/docs/api/v1/recordings/get-recording-details) API are still available to Compliance Officers even if the recording has been deleted.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/recordings/{recordingId}") + req.PathParam("recordingId", recordingId) + req.QueryParam("hostEmail", hostEmail) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("reason", reason) + req.BodyString("comment", comment) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&recordingId, "recording-id", "", "A unique identifier for the recording.") + cmd.MarkFlagRequired("recording-id") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email address for the meeting host. Only used if the user or application calling the API has the required [admin-level meeting scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will delete a recording of that user.") + cmd.Flags().StringVar(&reason, "reason", "", "") + cmd.Flags().StringVar(&comment, "comment", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + recordingsCmd.AddCommand(cmd) + } + + { // move-recycle-bin + var hostEmail string + var recordingIds []string + var siteUrl string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "move-recycle-bin", + Short: "Move Recordings into the Recycle Bin", + Long: "Move recordings into the recycle bin with recording IDs. Recordings in the recycle bin can be recovered by [Restore Recordings from Recycle Bin](/docs/api/v1/recordings/restore-recordings-from-recycle-bin) API. If you'd like to empty recordings from the recycle bin, you can use [Purge Recordings from Recycle Bin](/docs/api/v1/recordings/purge-recordings-from-recycle-bin) API to purge all or some of them.\n\nOnly recordings of meetings hosted by the authenticated user can be moved into the recycle bin.\n\n* `recordingIds` should not be empty and its maximum size is `100`.\n\n* All the IDs of `recordingIds` should belong to the site of `siteUrl` or the user's preferred site if `siteUrl` is not specified.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/recordings/softDelete") + req.QueryParam("hostEmail", hostEmail) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("recordingIds", recordingIds) + req.BodyString("siteUrl", siteUrl) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email address for the meeting host. Only used if the user or application calling the API has the required [admin-level meeting scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will move recordings into recycle bin of that user") + cmd.Flags().StringSliceVar(&recordingIds, "recording-ids", nil, "") + cmd.Flags().StringVar(&siteUrl, "site-url", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + recordingsCmd.AddCommand(cmd) + } + + { // restore-recycle-bin + var hostEmail string + var restoreAll bool + var recordingIds []string + var siteUrl string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "restore-recycle-bin", + Short: "Restore Recordings from Recycle Bin", + Long: "Restore all or some recordings from the recycle bin. Only recordings of meetings hosted by the authenticated user can be restored from recycle bin.\n\n* If `restoreAll` is `true`, `recordingIds` should be empty.\n\n* If `restoreAll` is `false`, `recordingIds` should not be empty and its maximum size is `100`.\n\n* All the IDs of `recordingIds` should belong to the site of `siteUrl` or the user's preferred site if `siteUrl` is not specified.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/recordings/restore") + req.QueryParam("hostEmail", hostEmail) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("restoreAll", restoreAll, cmd.Flags().Changed("restore-all")) + req.BodyStringSlice("recordingIds", recordingIds) + req.BodyString("siteUrl", siteUrl) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email address for the meeting host. This parameter is only used if the user or application calling the API has the required [admin-level meeting scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will restore recordings of that user.") + cmd.Flags().BoolVar(&restoreAll, "restore-all", false, "") + cmd.Flags().StringSliceVar(&recordingIds, "recording-ids", nil, "") + cmd.Flags().StringVar(&siteUrl, "site-url", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + recordingsCmd.AddCommand(cmd) + } + + { // purge-recycle-bin + var hostEmail string + var purgeAll bool + var recordingIds []string + var siteUrl string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "purge-recycle-bin", + Short: "Purge Recordings from Recycle Bin", + Long: "Purge recordings from recycle bin with recording IDs or purge all the recordings that are in the recycle bin.\n\nOnly recordings of meetings hosted by the authenticated user can be purged from recycle bin.\n\n* If `purgeAll` is `true`, `recordingIds` should be empty.\n\n* If `purgeAll` is `false`, `recordingIds` should not be empty and its maximum size is `100`.\n\n* All the IDs of `recordingIds` should belong to the site of `siteUrl` or the user's preferred site if `siteUrl` is not specified.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/recordings/purge") + req.QueryParam("hostEmail", hostEmail) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("purgeAll", purgeAll, cmd.Flags().Changed("purge-all")) + req.BodyStringSlice("recordingIds", recordingIds) + req.BodyString("siteUrl", siteUrl) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email address for the meeting host. Only used if the user or application calling the API has the required [admin-level meeting scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will purge recordings from recycle bin of that user.") + cmd.Flags().BoolVar(&purgeAll, "purge-all", false, "") + cmd.Flags().StringSliceVar(&recordingIds, "recording-ids", nil, "") + cmd.Flags().StringVar(&siteUrl, "site-url", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + recordingsCmd.AddCommand(cmd) + } + + { // share + var recordingId string + var hostEmail string + var addEmails []string + var removeEmails []string + var sendEmail bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "share", + Short: "Share a Recording", + Long: `Share or unshare a recording with other users by recording ID and email addresses.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/recordings/{recordingId}/accessList") + req.PathParam("recordingId", recordingId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("hostEmail", hostEmail) + req.BodyStringSlice("addEmails", addEmails) + req.BodyStringSlice("removeEmails", removeEmails) + req.BodyBool("sendEmail", sendEmail, cmd.Flags().Changed("send-email")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&recordingId, "recording-id", "", "A unique identifier for the recording.") + cmd.MarkFlagRequired("recording-id") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "") + cmd.Flags().StringSliceVar(&addEmails, "add-emails", nil, "") + cmd.Flags().StringSliceVar(&removeEmails, "remove-emails", nil, "") + cmd.Flags().BoolVar(&sendEmail, "send-email", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + recordingsCmd.AddCommand(cmd) + } + + { // list-group + var personId string + var max string + var from string + var to string + var siteUrl string + var integrationTag string + var format string + var serviceType string + var timezone string + var hostEmail string + var last string + cmd := &cobra.Command{ + Use: "list-group", + Short: "List Group Recordings", + Long: "List group recordings for a service app which has group recording access. You can specify a date range, the maximum number of recordings to return, and `personId` or `hostEmail` of whom the recordings will be retrieved.\n\n* The list returned is sorted in descending order by the date and time that the recordings were created.\n\n* Only recordings which are in the `available` status and not shared by others can be listed. Those in the `deleted` or `purged` status or shared by others can't be listed.\n\n* Long result sets are split into [pages](/docs/basics#pagination).\n\n* If `siteUrl` is specified, the API lists group recordings on the specified site; otherwise, the API lists group recordings on all the sites managed by the service app. All the sites managed by a service app can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\n* One of the `personId` parameter and `hostEmail` header must be specified so that only recordings of meetings hosted by the person of `personId` or `hostEmail` will be returned.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.\n\n* `hostEmail`: Email of the user whose recordings will be retrieved. The `hostEmail` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/group/recordings") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("personId", personId) + req.QueryParam("max", max) + req.QueryParam("from", from) + req.QueryParam("to", to) + req.QueryParam("siteUrl", siteUrl) + req.QueryParam("integrationTag", integrationTag) + req.QueryParam("format", format) + req.QueryParam("serviceType", serviceType) + req.Header("timezone", timezone) + req.Header("hostEmail", hostEmail) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "Person ID of the user whose recordings will be retrieved. The person ID can be retrieved from the [People APIs](/docs/api/v1/people), e.g. [Lit People](/docs/api/v1/people/list-people). Note that a person ID retrieved from the People APIs is a Base64-encoded string, e.g. `Y2lzY29zcGFyazovL3VzL1BFT1BMRS9kNDdiMmU3ZC01ZTBmLTRmNjktYWVmNC1lNGZmOTBhZWE3Yzk`. The person ID in the raw UUID format which is the last part of the Base64-decoded string, e.g. `d47b2e7d-5e0f-4f69-aef4-e4ff90aea7c9`, is also supported. The `personId` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified.") + cmd.Flags().StringVar(&max, "max", "", "Maximum number of recordings to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`.") + cmd.Flags().StringVar(&from, "from", "", "Starting date and time (inclusive) for recordings to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`. The interval between `from` and `to` must be within 30 days.") + cmd.Flags().StringVar(&to, "to", "", "Ending date and time (exclusive) for List recordings to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`. The interval between `from` and `to` must be within 30 days.") + cmd.Flags().StringVar(&siteUrl, "site-url", "", "URL of the Webex site which the API lists recordings from. If not specified, the API lists recordings from user's preferred site. All available Webex sites and preferred site of the user can be retrieved by [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.") + cmd.Flags().StringVar(&integrationTag, "integration-tag", "", "External key of the parent meeting created by an integration application. This parameter is used by the integration application to query recordings by a key in its own domain such as a Zendesk ticket ID, a Jira ID, a Salesforce Opportunity ID, etc. An integrationTag created by one client cannot be accessed or used as a filtering parameter by another client. For example, if a meeting has an `integrationTag` of \"Sales\" which is created by the client behind the developer portal, then this integrationTag can't be accessed on the meeting or its recordings by another client. Neither can it be used to filter meetings or recordings by a client other than the one that created the integrationTag of \"Sales\".") + cmd.Flags().StringVar(&format, "format", "", "Recording's file format. If specified, the API filters recordings by format.") + cmd.Flags().StringVar(&serviceType, "service-type", "", "The service type for recordings. If specified, the API filters recordings by service type.") + cmd.Flags().StringVar(&timezone, "timezone", "", "e.g. UTC") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email of the user whose recordings will be retrieved. The `hostEmail` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified.") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + recordingsCmd.AddCommand(cmd) + } + + { // get-group + var recordingId string + var personId string + var timezone string + var hostEmail string + cmd := &cobra.Command{ + Use: "get-group", + Short: "Get Group Recording Details", + Long: "Retrieves details for a group recording for a service app which has group recording access.\n\n* Only recordings which are in the `available` status and not shared by others can be listed. Those in the `deleted` or `purged` status or shared by others can't be listed.\n\n* One of the `personId` parameter and `hostEmail` header must be specified so that only recordings of meetings hosted by the person of `personId` or `hostEmail` will be returned.\n\n#### Request Header\n\n* `timezone`: *[Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.*\n\n* `hostEmail`: Email of the user whose recordings will be retrieved. The `hostEmail` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/group/recordings/{recordingId}") + req.PathParam("recordingId", recordingId) + req.QueryParam("personId", personId) + req.Header("timezone", timezone) + req.Header("hostEmail", hostEmail) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&recordingId, "recording-id", "", "A unique identifier for the recording.") + cmd.MarkFlagRequired("recording-id") + cmd.Flags().StringVar(&personId, "person-id", "", "Person ID of the user whose recordings will be retrieved. The person ID can be retrieved from the [People APIs](/docs/api/v1/people), e.g. [Lit People](/docs/api/v1/people/list-people). Note that a person ID retrieved from the People APIs is a Base64-encoded string, e.g. `Y2lzY29zcGFyazovL3VzL1BFT1BMRS9kNDdiMmU3ZC01ZTBmLTRmNjktYWVmNC1lNGZmOTBhZWE3Yzk`. The person ID in the raw UUID format which is the last part of the Base64-decoded string, e.g. `d47b2e7d-5e0f-4f69-aef4-e4ff90aea7c9`, is also supported. The `personId` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified.") + cmd.Flags().StringVar(&timezone, "timezone", "", "e.g. UTC") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email of the user whose recordings will be retrieved. The `hostEmail` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified.") + recordingsCmd.AddCommand(cmd) + } + + { // share-link + var hostEmail string + var webShareLink string + var addEmails []string + var removeEmails []string + var sendEmail bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "share-link", + Short: "Share a Recording Link", + Long: `Share or unshare a recording with other users by recording link and email addresses.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/recordings/accessList") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("hostEmail", hostEmail) + req.BodyString("webShareLink", webShareLink) + req.BodyStringSlice("addEmails", addEmails) + req.BodyStringSlice("removeEmails", removeEmails) + req.BodyBool("sendEmail", sendEmail, cmd.Flags().Changed("send-email")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&hostEmail, "host-email", "", "") + cmd.Flags().StringVar(&webShareLink, "web-share-link", "", "") + cmd.Flags().StringSliceVar(&addEmails, "add-emails", nil, "") + cmd.Flags().StringSliceVar(&removeEmails, "remove-emails", nil, "") + cmd.Flags().BoolVar(&sendEmail, "send-email", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + recordingsCmd.AddCommand(cmd) + } + + { // query + var timezone string + var max int64 + var from string + var to string + var meetingId string + var siteUrl string + var integrationTag string + var hostEmail string + var topic string + var format string + var serviceType string + var status string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "query", + Short: "Query Recordings", + Long: "Queries recordings with filters in the request body. You can specify a date range, a parent meeting ID, the maximum number of recordings to return, and additional filters such as siteUrl, integrationTag, hostEmail, topic, format, serviceType, and status.\n\nOnly recordings of meetings hosted by or shared with the authenticated user will be listed.\n\nThe list returned is sorted in descending order by the date and time that the recordings were created.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n* If `meetingId` is specified, only recordings associated with the specified meeting will be listed. **NOTE**: when `meetingId` is specified, parameter of `siteUrl` will be ignored.\n\n* If `siteUrl` is specified, recordings of the specified site will be listed; otherwise, the API lists recordings of all the user's sites. All available Webex sites and preferred site of the user can be retrieved by [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\n#### Request Header\n\n* `timezone`: *[Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.*", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/recordings/query") + req.Header("timezone", timezone) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyInt("max", max, cmd.Flags().Changed("max")) + req.BodyString("from", from) + req.BodyString("to", to) + req.BodyString("meetingId", meetingId) + req.BodyString("siteUrl", siteUrl) + req.BodyString("integrationTag", integrationTag) + req.BodyString("hostEmail", hostEmail) + req.BodyString("topic", topic) + req.BodyString("format", format) + req.BodyString("serviceType", serviceType) + req.BodyString("status", status) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&timezone, "timezone", "", "e.g. UTC") + cmd.Flags().Int64Var(&max, "max", 0, "") + cmd.Flags().StringVar(&from, "from", "", "") + cmd.Flags().StringVar(&to, "to", "", "") + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "") + cmd.Flags().StringVar(&siteUrl, "site-url", "", "") + cmd.Flags().StringVar(&integrationTag, "integration-tag", "", "") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "") + cmd.Flags().StringVar(&topic, "topic", "", "") + cmd.Flags().StringVar(&format, "format", "", "") + cmd.Flags().StringVar(&serviceType, "service-type", "", "") + cmd.Flags().StringVar(&status, "status", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + recordingsCmd.AddCommand(cmd) + } + + { // query-admin-compliance-officer + var timezone string + var max int64 + var from string + var to string + var meetingId string + var siteUrl string + var integrationTag string + var topic string + var format string + var serviceType string + var status string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "query-admin-compliance-officer", + Short: "Query Recordings For an Admin or Compliance Officer", + Long: "Queries recordings for an admin or compliance officer with filters in the request body. You can specify a date range, a parent meeting ID, the maximum number of recordings to return, and additional filters such as siteUrl, integrationTag, topic, format, serviceType, and status.\n\nThe list returned is sorted in descending order by the date and time that the recordings were created.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n* If `meetingId` is specified, only recordings associated with the specified meeting will be listed. Please note that when `meetingId` is specified, parameters of `siteUrl`, `from`, and `to` will be ignored.\n\n* If `siteUrl` is specified, all the recordings on the specified site are listed; otherwise, all the recordings on the admin user's or compliance officer's preferred site are listed. All the available Webex sites and the admin user's or compliance officer's preferred site can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\n#### Request Header\n\n* `timezone`: *[Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.*", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/admin/recordings/query") + req.Header("timezone", timezone) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyInt("max", max, cmd.Flags().Changed("max")) + req.BodyString("from", from) + req.BodyString("to", to) + req.BodyString("meetingId", meetingId) + req.BodyString("siteUrl", siteUrl) + req.BodyString("integrationTag", integrationTag) + req.BodyString("topic", topic) + req.BodyString("format", format) + req.BodyString("serviceType", serviceType) + req.BodyString("status", status) + req.BodyString("timezone", timezone) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&timezone, "timezone", "", "e.g. UTC") + cmd.Flags().Int64Var(&max, "max", 0, "") + cmd.Flags().StringVar(&from, "from", "", "") + cmd.Flags().StringVar(&to, "to", "", "") + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "") + cmd.Flags().StringVar(&siteUrl, "site-url", "", "") + cmd.Flags().StringVar(&integrationTag, "integration-tag", "", "") + cmd.Flags().StringVar(&topic, "topic", "", "") + cmd.Flags().StringVar(&format, "format", "", "") + cmd.Flags().StringVar(&serviceType, "service-type", "", "") + cmd.Flags().StringVar(&status, "status", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + recordingsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/meetings/session_types.go b/cmd/meetings/session_types.go new file mode 100644 index 0000000..0d49a0d --- /dev/null +++ b/cmd/meetings/session_types.go @@ -0,0 +1,133 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package meetings + +import ( + "fmt" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strings.Join + +var sessionTypesCmd = &cobra.Command{ + Use: "session-types", + Short: "SessionTypes commands", +} + +func init() { + cmd.MeetingsCmd.AddCommand(sessionTypesCmd) + + { // list-site + var siteUrl string + cmd := &cobra.Command{ + Use: "list-site", + Short: "List Site Session Types", + Long: `List session types for a specific site.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/admin/meeting/config/sessionTypes") + req.QueryParam("siteUrl", siteUrl) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&siteUrl, "site-url", "", "URL of the Webex site to query. If siteUrl is not specified, the query will use the default site for the admin's authorization token used to make the call.") + sessionTypesCmd.AddCommand(cmd) + } + + { // list-user + var siteUrl string + var personId string + var email string + cmd := &cobra.Command{ + Use: "list-user", + Short: "List User Session Type", + Long: `List session types for a specific user.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/admin/meeting/userconfig/sessionTypes") + req.QueryParam("siteUrl", siteUrl) + req.QueryParam("personId", personId) + req.Header("email", email) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&siteUrl, "site-url", "", "URL of the Webex site to query.") + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the user.") + cmd.Flags().StringVar(&email, "email", "", "e.g. `john.andersen@example.com` (string, optional) - The email of the user.") + sessionTypesCmd.AddCommand(cmd) + } + + { // update-user + var siteUrl string + var sessionTypeIds []string + var personId string + var email string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-user", + Short: "Update User Session Types", + Long: "Assign session types to specific users.\n\n* At least one of the following body parameters is required to update a specific user session type: `personId`, `email`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/admin/meeting/userconfig/sessionTypes") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("siteUrl", siteUrl) + req.BodyStringSlice("sessionTypeIds", sessionTypeIds) + req.BodyString("personId", personId) + req.BodyString("email", email) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&siteUrl, "site-url", "", "") + cmd.Flags().StringSliceVar(&sessionTypeIds, "session-type-ids", nil, "") + cmd.Flags().StringVar(&personId, "person-id", "", "") + cmd.Flags().StringVar(&email, "email", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + sessionTypesCmd.AddCommand(cmd) + } + +} diff --git a/cmd/meetings/site.go b/cmd/meetings/site.go new file mode 100644 index 0000000..fdeb04d --- /dev/null +++ b/cmd/meetings/site.go @@ -0,0 +1,76 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package meetings + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var siteCmd = &cobra.Command{ + Use: "site", + Short: "Site commands", +} + +func init() { + cmd.MeetingsCmd.AddCommand(siteCmd) + + { // get-meeting-common-settings-configuration + var siteUrl string + cmd := &cobra.Command{ + Use: "get-meeting-common-settings-configuration", + Short: "Get Meeting Common Settings Configuration", + Long: "Site administrators can use this API to get a list of functions, options, and privileges that are configured for their Webex service sites.\n\n* If `siteUrl` is specified, common settings of the meeting's configuration of the specified site will be queried; otherwise, the API will query from the site administrator's preferred site. All available Webex sites and preferred site of the user can be retrieved by [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/admin/meeting/config/commonSettings") + req.QueryParam("siteUrl", siteUrl) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&siteUrl, "site-url", "", "URL of the Webex site which the API queries common settings of the meeting's configuration from. If not specified, the API will query from the site administrator's preferred site. All available Webex sites and the preferred site of the user can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.") + siteCmd.AddCommand(cmd) + } + + { // update-meeting-common-settings-configuration + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-meeting-common-settings-configuration", + Short: "Update Meeting Common Settings Configuration", + Long: `Site administrators can use this API to update the option of features, options and privileges that are configured for their WebEx service sites.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PATCH", "/admin/meeting/config/commonSettings") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + siteCmd.AddCommand(cmd) + } + +} diff --git a/cmd/meetings/slido.go b/cmd/meetings/slido.go new file mode 100644 index 0000000..65a6cb3 --- /dev/null +++ b/cmd/meetings/slido.go @@ -0,0 +1,76 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package meetings + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var slidoCmd = &cobra.Command{ + Use: "slido", + Short: "Slido commands", +} + +func init() { + cmd.MeetingsCmd.AddCommand(slidoCmd) + + { // list-compliance-events + var sessionOrgId string + var sessionId string + var start string + cmd := &cobra.Command{ + Use: "list-compliance-events", + Short: "List Compliance Events", + Long: `Lists events representing actions that occurred during a Slido Secure Premium session (creating a poll, modifying a poll, activating a poll, posting an answer, etc.) + +Events capture who performed the action and on what resource. + +The events are paginated by the server into pages of max 256 items per page without any order. + +The events are available within 15 minutes after they happened. + +Every resource has properties: +* type - event type + +* ... event specific ids + +* ... event specific properties +`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/slido/compliance/events") + req.QueryParam("sessionOrgId", sessionOrgId) + req.QueryParam("sessionId", sessionId) + req.QueryParam("start", start) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&sessionOrgId, "session-org-id", "", "Webex organization UUID.") + cmd.Flags().StringVar(&sessionId, "session-id", "", "Webex meeting instance ID (`{meetingSeriesId}_I_{conferenceId}`).") + cmd.Flags().StringVar(&start, "start", "", "Pagination token. Returned in the response body as the `next` property.") + slidoCmd.AddCommand(cmd) + } + +} diff --git a/cmd/meetings/slidosecurepremium.go b/cmd/meetings/slidosecurepremium.go new file mode 100644 index 0000000..4663358 --- /dev/null +++ b/cmd/meetings/slidosecurepremium.go @@ -0,0 +1,76 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package meetings + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var slidosecurepremiumCmd = &cobra.Command{ + Use: "slidosecurepremium", + Short: "Slidosecurepremium commands", +} + +func init() { + cmd.MeetingsCmd.AddCommand(slidosecurepremiumCmd) + + { // list-compliance-events + var sessionOrgId string + var sessionId string + var start string + cmd := &cobra.Command{ + Use: "list-compliance-events", + Short: "List Compliance Events", + Long: `Lists events representing actions that occurred during a Slido Secure Premium session (creating a poll, modifying a poll, activating a poll, posting an answer, etc.) + +Events capture who performed the action and on what resource. + +The events are paginated by the server into pages of max 256 items per page without any order. + +The events are available within 15 minutes after they happened. + +Every resource has properties: +* type - event type + +* ... event specific ids + +* ... event specific properties +`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/slido/compliance/events") + req.QueryParam("sessionOrgId", sessionOrgId) + req.QueryParam("sessionId", sessionId) + req.QueryParam("start", start) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&sessionOrgId, "session-org-id", "", "Webex organization UUID.") + cmd.Flags().StringVar(&sessionId, "session-id", "", "Webex meeting instance ID (`{meetingSeriesId}_I_{conferenceId}`).") + cmd.Flags().StringVar(&start, "start", "", "Pagination token. Returned in the response body as the `next` property.") + slidosecurepremiumCmd.AddCommand(cmd) + } + +} diff --git a/cmd/meetings/summaries.go b/cmd/meetings/summaries.go new file mode 100644 index 0000000..b7109d4 --- /dev/null +++ b/cmd/meetings/summaries.go @@ -0,0 +1,89 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package meetings + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var summariesCmd = &cobra.Command{ + Use: "summaries", + Short: "Summaries commands", +} + +func init() { + cmd.MeetingsCmd.AddCommand(summariesCmd) + + { // get-meeting-id + var meetingId string + cmd := &cobra.Command{ + Use: "get-meeting-id", + Short: "Get Summary by Meeting ID", + Long: "Get the summary of an ended [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) by the meeting ID.\n\nPlease note that only **meeting instances** in state `ended` are supported, and currently the meeting ID of a meeting series, a scheduled meeting, an in-progress meeting instance, or a scheduled personal room meeting is not supported for this API. This API can only fetch summaries that you have access to, and if a meeting summary is deleted, you won't be able to see it either. And, this is an API for normal user. If you are a compliance officer, please use the Get Summary For Compliance Officer API", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/meetingSummaries") + req.QueryParam("meetingId", meetingId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "Unique identifier for the [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) to which the summary belongs. Please note that currently the meeting ID of a meeting series, a scheduled meeting, an in-progress meeting instance, or a scheduled personal room meeting is not supported for this API. If `meetingId` is not specified, the query will be rejected.") + summariesCmd.AddCommand(cmd) + } + + { // get-compliance-officer + var meetingId string + cmd := &cobra.Command{ + Use: "get-compliance-officer", + Short: "Get Summary For Compliance Officer", + Long: `Lists available or deleted summaries of an ended [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) by meeting ID. This API can only be accessed by compliance officers. With this API, a compliance officer can list summaries of any ended meeting instances in his organization including available and deleted summaries`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/admin/meetingSummaries") + req.QueryParam("meetingId", meetingId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "Unique identifier for the [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) to which the summary belongs. Please note that currently the meeting ID of a meeting series, a scheduled meeting, an in-progress meeting instance, or a scheduled personal room meeting is not supported for this API. If `meetingId` is not specified, the query will be rejected.") + summariesCmd.AddCommand(cmd) + } + + { // delete + var summaryId string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete a Summary", + Long: `Removes a summary with a specified summary ID. The deleted summary cannot be recovered. A deleted summary can not be accessed by regular users, i.e. host or attendees, but can be access by compliance officers`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/meetingSummaries/{summaryId}") + req.PathParam("summaryId", summaryId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&summaryId, "summary-id", "", "Unique identifier for the meeting summary.") + cmd.MarkFlagRequired("summary-id") + summariesCmd.AddCommand(cmd) + } + +} diff --git a/cmd/meetings/tracking_codes.go b/cmd/meetings/tracking_codes.go new file mode 100644 index 0000000..aafa1a4 --- /dev/null +++ b/cmd/meetings/tracking_codes.go @@ -0,0 +1,218 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package meetings + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var trackingCodesCmd = &cobra.Command{ + Use: "tracking-codes", + Short: "TrackingCodes commands", +} + +func init() { + cmd.MeetingsCmd.AddCommand(trackingCodesCmd) + + { // list + var siteUrl string + cmd := &cobra.Command{ + Use: "list", + Short: "List Tracking Codes", + Long: "Lists tracking codes on a site by an admin user.\n\n* If `siteUrl` is specified, tracking codes of the specified site will be listed; otherwise, tracking codes of the user's preferred site will be listed. All available Webex sites and the preferred sites of a user can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\n* Admins can switch any Control Hub managed site from using classic tracking codes to mapped tracking codes in Control Hub. This is a one-time irreversible operation. Once the tracking codes are mapped to custom or user profile attributes, the response returns the mapped tracking codes.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/admin/meeting/config/trackingCodes") + req.QueryParam("siteUrl", siteUrl) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&siteUrl, "site-url", "", "URL of the Webex site which the API retrieves the tracking code from. If not specified, the API retrieves the tracking code from the user's preferred site. All available Webex sites and preferred sites of a user can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.") + trackingCodesCmd.AddCommand(cmd) + } + + { // create + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a Tracking Code", + Long: "Create a new tracking code by an admin user.\n\n* The `siteUrl` is required. The operation creates a tracking code for the specified site. All or a user's available Webex sites can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\n* The `inputMode` of `hostProfileSelect` is only available for a host profile and sign-up pages and does not apply to the meeting scheduler page or the meeting start page. The value for `scheduleStartCodes` must be `null` or the value for all services must be `notUsed` when the `inputMode` is `hostProfileSelect`.\n\n* The `hostProfileCode` of `required` is only allowed for a Site Admin managed site, and not for a Control Hub managed site.\n\n* When the `hostProfileCode` is `adminSet`, only `adminSet`, `notUsed`, and `notApplicable` are available for the types of `scheduleStartCodes`. When the `hostProfileCode` is not `adminSet`, only `optional`, `required`, `notUsed`, and `notApplicable` are available for `scheduleStartCodes`.\n\n* If the type of the `All` service has a value other than `notApplicable`, and another service, e.g. `EventCenter`, is missing from the `scheduleStartCodes`, then the type of this missing `EventCenter` service shares the same type as the `All` service. If the type of `All` service has a value other than `notApplicable`, and another service, e.g. `EventCenter`, has a type, then the type specified should be the same as the `All` service.\n\n* If the `All` service is missing from the `scheduleStartCodes`, any of the other four services, e.g. `EventCenter`, have a default type of `notUsed` if it is also missing from the `scheduleStartCodes`.\n\n* Admins can switch any Control Hub managed site from using classic tracking codes to mapped tracking codes in Control Hub, this is a one-time irreversible operation. Once the tracking codes are mapped to custom or user profile attributes, they cannot create tracking codes when the mapping process is in progress or the mapping process is completed.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/admin/meeting/config/trackingCodes") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + trackingCodesCmd.AddCommand(cmd) + } + + { // get + var trackingCodeId string + var siteUrl string + cmd := &cobra.Command{ + Use: "get", + Short: "Get a Tracking Code", + Long: "Retrieves details for a tracking code by an admin user.\n\n* If `siteUrl` is specified, the tracking code is retrieved from the specified site; otherwise, the tracking code is retrieved from the user's preferred site. All available Webex sites and the preferred sites of a user can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\n* Admins can switch any Control Hub managed site from using classic tracking codes to mapped tracking codes in Control Hub, this is a one-time irreversible operation. Once the tracking codes are mapped to custom or user profile attributes, the response returns details for a mapped tracking code.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/admin/meeting/config/trackingCodes/{trackingCodeId}") + req.PathParam("trackingCodeId", trackingCodeId) + req.QueryParam("siteUrl", siteUrl) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&trackingCodeId, "tracking-code-id", "", "Unique identifier for the tracking code whose details are being requested.") + cmd.MarkFlagRequired("tracking-code-id") + cmd.Flags().StringVar(&siteUrl, "site-url", "", "URL of the Webex site which the API retrieves the tracking code from. If not specified, the API retrieves the tracking code from the user's preferred site. All available Webex sites and the preferred sites of a user can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.") + trackingCodesCmd.AddCommand(cmd) + } + + { // update + var trackingCodeId string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Short: "Update a Tracking Code", + Long: "Updates details for a tracking code by an admin user.\n\n* The `siteUrl` is required. The operation updates a tracking code for the specified site. All of a user's available Webex sites can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\n* The `inputMode` of `hostProfileSelect` is only available for the host profile and sign-up pages and it doesn't apply to the meeting scheduler page or meeting start page. Therefore, `scheduleStartCodes` must be `null` or type of all services must be `notUsed` when the `inputMode` is `hostProfileSelect`.\n\n* Currently, the `hostProfileCode` of `required` is only allowed for a Site Admin managed site, and not allowed for a Control Hub managed site.\n\n* When the `hostProfileCode` is `adminSet`, only `adminSet`, `notUsed` and `notApplicable` are available for the types of `scheduleStartCodes`. When the `hostProfileCode` is not `adminSet`, only `optional`, `required`, `notUsed` and `notApplicable` are available for types of `scheduleStartCodes`.\n\n* If the type of the `All` service has a value other than `notApplicable`, and another service, e.g. `EventCenter`, is missing from the `scheduleStartCodes`, then the type of this missing `EventCenter` service shares the same type as the `All` service silently. If the type of `All` service has a value other than `notApplicable`, and another service, e.g. `EventCenter`, has a type, then the type specified should be the same as the `All` service.\n\n* If the `All` service is missing from the `scheduleStartCodes`, any of the other four services, e.g. `EventCenter`, has a default type of `notUsed` if that service is also missing from the `scheduleStartCodes`.\n\n* Admins can switch any Control Hub managed site from using classic tracking codes to mapped tracking codes in Control Hub, this is a one-time irreversible operation. Once the tracking codes are mapped to custom or user profile attributes, they cannot update tracking codes when the mapping process is in progress or the mapping process is completed.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/admin/meeting/config/trackingCodes/{trackingCodeId}") + req.PathParam("trackingCodeId", trackingCodeId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&trackingCodeId, "tracking-code-id", "", "") + cmd.MarkFlagRequired("tracking-code-id") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + trackingCodesCmd.AddCommand(cmd) + } + + { // delete + var trackingCodeId string + var siteUrl string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete a Tracking Code", + Long: "Deletes a tracking code by an admin user.\n\n* The `siteUrl` is required. The operation deletes a tracking code for the specified site. All of a user's available Webex sites can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\n* Admins can switch any Control Hub managed site from using classic tracking codes to mapped tracking codes in Control Hub, this is a one-time irreversible operation. Once the tracking codes are mapped to custom or user profile attributes, they cannot delete tracking codes when the mapping process is in progress or the mapping process is completed.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/admin/meeting/config/trackingCodes/{trackingCodeId}") + req.PathParam("trackingCodeId", trackingCodeId) + req.QueryParam("siteUrl", siteUrl) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&trackingCodeId, "tracking-code-id", "", "Unique identifier for the tracking code to be deleted.") + cmd.MarkFlagRequired("tracking-code-id") + cmd.Flags().StringVar(&siteUrl, "site-url", "", "URL of the Webex site from which the API deletes the tracking code. All available Webex sites and preferred sites of a user can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.") + trackingCodesCmd.AddCommand(cmd) + } + + { // get-user + var siteUrl string + var personId string + var email string + cmd := &cobra.Command{ + Use: "get-user", + Short: "Get User Tracking Codes", + Long: "Lists user's tracking codes by an admin user.\n\n* At least one parameter, either `personId`, or `email` is required. `personId` must come before `email` if both are specified. Please note that `email` is specified in the request header.\n\n* If `siteUrl` is specified, the tracking codes of the specified site will be listed; otherwise, the tracking codes of a user's preferred site are listed. All available Webex sites and preferred sites of a user can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API. Please note that the user here is the admin user who invokes the API, not the user specified by `personId` or email.\n\n* Admins can switch any Control Hub managed site from using classic tracking codes to mapped tracking codes in Control Hub, this is a one-time irreversible operation. Once the tracking codes are mapped to custom or user profile attributes, the response returns the user's mapped tracking codes.\n\n#### Request Header\n\n* `email`: Email address for the user whose tracking codes are being retrieved. The admin users can specify the email of a user on a site they manage and the API returns details for the user's tracking codes. At least one parameter of `personId` or `email` is required.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/admin/meeting/userconfig/trackingCodes") + req.QueryParam("siteUrl", siteUrl) + req.QueryParam("personId", personId) + req.Header("email", email) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&siteUrl, "site-url", "", "URL of the Webex site from which the API retrieves the tracking code. If not specified, the API retrieves the tracking code from the user's preferred site. All available Webex sites and preferred sites of a user can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.") + cmd.Flags().StringVar(&personId, "person-id", "", "Unique identifier for the user whose tracking codes are being retrieved. The admin user can specify the `personId` of a user on a site they manage and the API returns details for the user's tracking codes. At least one parameter of `personId` or `email` is required.") + cmd.Flags().StringVar(&email, "email", "", "e.g. john.andersen@example.com") + trackingCodesCmd.AddCommand(cmd) + } + + { // update-user + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-user", + Short: "Update User Tracking Codes", + Long: "Updates tracking codes for a specified user by an admin user.\n\n* The `siteUrl` is required. The operation updates a user's tracking code on the specified site. All a user's available Webex sites can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API. Please note that the user here is the admin user who invokes the API, not the user specified by `personId` or `email`.\n\n* A name that is not found in the site-level tracking codes cannot be set for a user's tracking codes. All available site-level tracking codes for a site can be retrieved by the [List Tracking Codes](/docs/api/v1/tracking-codes/list-tracking-codes) API.\n\n* If the `inputMode` of a user's tracking code is `select` or `hostProfileSelect`, its value must be one of the site-level options of that tracking code. All available site-level tracking codes for a site can be retrieved by the [List Tracking Codes](/docs/api/v1/tracking-codes/list-tracking-codes) API.\n\n* Admins can switch any Control Hub managed site from using classic tracking codes to mapped tracking codes in Control Hub, this is a one-time irreversible operation. Once the tracking codes are mapped to custom or user profile attributes, they cannot update user's tracking codes when the mapping process is in progress or the mapping process is completed.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/admin/meeting/userconfig/trackingCodes") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + trackingCodesCmd.AddCommand(cmd) + } + +} diff --git a/cmd/meetings/transcripts.go b/cmd/meetings/transcripts.go new file mode 100644 index 0000000..ac0360a --- /dev/null +++ b/cmd/meetings/transcripts.go @@ -0,0 +1,294 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package meetings + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/Cloverhound/webex-cli/internal/timeutil" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = timeutil.ParseLastISO + +var transcriptsCmd = &cobra.Command{ + Use: "transcripts", + Short: "Transcripts commands", +} + +func init() { + cmd.MeetingsCmd.AddCommand(transcriptsCmd) + + { // list-meeting + var max string + var from string + var to string + var meetingId string + var hostEmail string + var siteUrl string + var last string + cmd := &cobra.Command{ + Use: "list-meeting", + Short: "List Meeting Transcripts", + Long: "Lists available transcripts of an ended [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances).\n\nUse this operation to list transcripts of an ended [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) when they are ready. Please note that only **meeting instances** in state `ended` are supported for `meetingId`. **Meeting series**, **scheduled meetings** and `in-progress` **meeting instances** are not supported.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/meetingTranscripts") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("max", max) + req.QueryParam("from", from) + req.QueryParam("to", to) + req.QueryParam("meetingId", meetingId) + req.QueryParam("hostEmail", hostEmail) + req.QueryParam("siteUrl", siteUrl) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&max, "max", "", "Maximum number of transcripts to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`.") + cmd.Flags().StringVar(&from, "from", "", "Starting date and time (inclusive) for transcripts to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`.") + cmd.Flags().StringVar(&to, "to", "", "Ending date and time (exclusive) for List transcripts to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`.") + cmd.Flags().StringVar(&meetingId, "meeting-id", "", "Unique identifier for the [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) to which the transcript belongs. Please note that currently the meeting ID of a scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meeting is not supported for this API. If `meetingId` is not specified, the operation returns an array of transcripts for all meetings of the current user.") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email address for the meeting host. This parameter is only used if the user or application calling the API has the `admin-level` scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for a meeting that is hosted by that user. If `meetingId` is not specified, it can not support `hostEmail`.") + cmd.Flags().StringVar(&siteUrl, "site-url", "", "URL of the Webex site from which the API lists transcripts. If not specified, the API lists transcripts from user's preferred site. All available Webex sites and the preferred site of the user can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + transcriptsCmd.AddCommand(cmd) + } + + { // list-meeting-compliance-officer + var from string + var to string + var max string + var siteUrl string + var last string + cmd := &cobra.Command{ + Use: "list-meeting-compliance-officer", + Short: "List Meeting Transcripts For Compliance Officer", + Long: "Lists available or deleted transcripts of an ended [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) for a specific site.\n\nThe returned list is sorted in descending order by the date and time that the transcript was created.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/admin/meetingTranscripts") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("from", from) + req.QueryParam("to", to) + req.QueryParam("max", max) + req.QueryParam("siteUrl", siteUrl) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&from, "from", "", "Starting date and time (inclusive) for transcripts to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`.") + cmd.Flags().StringVar(&to, "to", "", "Ending date and time (exclusive) for List transcripts to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`.") + cmd.Flags().StringVar(&max, "max", "", "Maximum number of transcripts to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`.") + cmd.Flags().StringVar(&siteUrl, "site-url", "", "URL of the Webex site from which the API lists transcripts.") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + transcriptsCmd.AddCommand(cmd) + } + + { // download-meeting + var transcriptId string + var format string + var hostEmail string + cmd := &cobra.Command{ + Use: "download-meeting", + Short: "Download a Meeting Transcript", + Long: "Download a meeting transcript from the meeting transcript specified by `transcriptId`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/meetingTranscripts/{transcriptId}/download") + req.PathParam("transcriptId", transcriptId) + req.QueryParam("format", format) + req.QueryParam("hostEmail", hostEmail) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&transcriptId, "transcript-id", "", "Unique identifier for the meeting transcript.") + cmd.MarkFlagRequired("transcript-id") + cmd.Flags().StringVar(&format, "format", "", "Format for the downloaded meeting transcript.") + cmd.Flags().StringVar(&hostEmail, "host-email", "", "Email address for the meeting host. This parameter is only used if the user or application calling the API has the `admin-level` scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for a meeting that is hosted by that user.") + transcriptsCmd.AddCommand(cmd) + } + + { // list-snippets-meeting + var transcriptId string + var max string + cmd := &cobra.Command{ + Use: "list-snippets-meeting", + Short: "List Snippets of a Meeting Transcript", + Long: "Lists snippets of a meeting transcript specified by `transcriptId`.\n\nUse this operation to list snippets of a meeting transcript when they are ready.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/meetingTranscripts/{transcriptId}/snippets") + req.PathParam("transcriptId", transcriptId) + req.QueryParam("max", max) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&transcriptId, "transcript-id", "", "Unique identifier for the meeting transcript to which the snippets belong.") + cmd.MarkFlagRequired("transcript-id") + cmd.Flags().StringVar(&max, "max", "", "Maximum snippet items to be returned for this query, to support pagination.") + transcriptsCmd.AddCommand(cmd) + } + + { // get-snippet + var transcriptId string + var snippetId string + cmd := &cobra.Command{ + Use: "get-snippet", + Short: "Get a Transcript Snippet", + Long: "Retrieves details for a transcript snippet specified by `snippetId` from the meeting transcript specified by `transcriptId`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/meetingTranscripts/{transcriptId}/snippets/{snippetId}") + req.PathParam("transcriptId", transcriptId) + req.PathParam("snippetId", snippetId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&transcriptId, "transcript-id", "", "Unique identifier for the meeting transcript to which the requested snippet belongs.") + cmd.MarkFlagRequired("transcript-id") + cmd.Flags().StringVar(&snippetId, "snippet-id", "", "Unique identifier for the snippet being requested.") + cmd.MarkFlagRequired("snippet-id") + transcriptsCmd.AddCommand(cmd) + } + + { // update-snippet + var transcriptId string + var snippetId string + var text string + var reason string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-snippet", + Short: "Update a Transcript Snippet", + Long: "Updates details for a transcript snippet specified by `snippetId` from the meeting transcript specified by `transcriptId`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/meetingTranscripts/{transcriptId}/snippets/{snippetId}") + req.PathParam("transcriptId", transcriptId) + req.PathParam("snippetId", snippetId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("text", text) + req.BodyString("reason", reason) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&transcriptId, "transcript-id", "", "Unique identifier for the meeting transcript to which the snippet to be updated belongs.") + cmd.MarkFlagRequired("transcript-id") + cmd.Flags().StringVar(&snippetId, "snippet-id", "", "Unique identifier for the snippet being updated.") + cmd.MarkFlagRequired("snippet-id") + cmd.Flags().StringVar(&text, "text", "", "") + cmd.Flags().StringVar(&reason, "reason", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + transcriptsCmd.AddCommand(cmd) + } + + { // delete + var transcriptId string + var reason string + var comment string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete a Transcript", + Long: `Removes a transcript with a specified transcript ID. The deleted transcript cannot be recovered. If a Compliance Officer deletes another user's transcript, the transcript will be inaccessible to regular users (host, attendees), but will be still available to the Compliance Officer.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/meetingTranscripts/{transcriptId}") + req.PathParam("transcriptId", transcriptId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("reason", reason) + req.BodyString("comment", comment) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&transcriptId, "transcript-id", "", "Unique identifier for the meeting transcript.") + cmd.MarkFlagRequired("transcript-id") + cmd.Flags().StringVar(&reason, "reason", "", "") + cmd.Flags().StringVar(&comment, "comment", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + transcriptsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/meetings/video_mesh.go b/cmd/meetings/video_mesh.go new file mode 100644 index 0000000..1cf4f77 --- /dev/null +++ b/cmd/meetings/video_mesh.go @@ -0,0 +1,1198 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package meetings + +import ( + "fmt" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/Cloverhound/webex-cli/internal/timeutil" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strings.Join +var _ = timeutil.ParseLastISO + +var videoMeshCmd = &cobra.Command{ + Use: "video-mesh", + Short: "VideoMesh commands", +} + +func init() { + cmd.MeetingsCmd.AddCommand(videoMeshCmd) + + { // list-clusters-availability + var from string + var to string + var orgId string + var last string + cmd := &cobra.Command{ + Use: "list-clusters-availability", + Short: "List Clusters Availability", + Long: `Returns the availability details for all Video Mesh clusters in an organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/videoMesh/clusters/availability") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("from", from) + req.QueryParam("to", to) + req.QueryParam("orgId", orgId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&from, "from", "", "The starting date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`.") + cmd.Flags().StringVar(&to, "to", "", "The ending date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format.") + cmd.Flags().StringVar(&orgId, "org-id", "", "The unique ID for the organization.") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + videoMeshCmd.AddCommand(cmd) + } + + { // get-cluster-availability + var clusterId string + var from string + var to string + var last string + cmd := &cobra.Command{ + Use: "get-cluster-availability", + Short: "Get Cluster Availability", + Long: `Returns the availability details of a single Video Mesh cluster in an organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/videoMesh/clusters/availability/{clusterId}") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.PathParam("clusterId", clusterId) + req.QueryParam("from", from) + req.QueryParam("to", to) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&clusterId, "cluster-id", "", "The unique Video Mesh clusterID") + cmd.MarkFlagRequired("cluster-id") + cmd.Flags().StringVar(&from, "from", "", "The starting date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`.") + cmd.Flags().StringVar(&to, "to", "", "The ending date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format.") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + videoMeshCmd.AddCommand(cmd) + } + + { // list-node-availability + var from string + var to string + var clusterId string + var last string + cmd := &cobra.Command{ + Use: "list-node-availability", + Short: "List Node Availability", + Long: `Returns the availability details of all nodes in a Video Mesh cluster.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/videoMesh/nodes/availability") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("from", from) + req.QueryParam("to", to) + req.QueryParam("clusterId", clusterId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&from, "from", "", "The starting date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`.") + cmd.Flags().StringVar(&to, "to", "", "The ending date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format.") + cmd.Flags().StringVar(&clusterId, "cluster-id", "", "The unique Video Mesh cluster ID.") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + videoMeshCmd.AddCommand(cmd) + } + + { // get-node-availability + var nodeId string + var from string + var to string + var last string + cmd := &cobra.Command{ + Use: "get-node-availability", + Short: "Get Node Availability", + Long: `Returns the availability details of a single node in a Video Mesh cluster.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/videoMesh/nodes/availability/{nodeId}") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.PathParam("nodeId", nodeId) + req.QueryParam("from", from) + req.QueryParam("to", to) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&nodeId, "node-id", "", "The unique Video Mesh node ID.") + cmd.MarkFlagRequired("node-id") + cmd.Flags().StringVar(&from, "from", "", "The starting date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`.") + cmd.Flags().StringVar(&to, "to", "", "The ending date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format.") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + videoMeshCmd.AddCommand(cmd) + } + + { // list-media-health-monitoring-tool-test-results-v2 + var orgId string + var triggerType string + var from string + var to string + var last string + cmd := &cobra.Command{ + Use: "list-media-health-monitoring-tool-test-results-v2", + Short: "List Media Health Monitoring Tool Test results V2", + Long: `Returns the test results of the Media Health Monitoring Tool tests for an organization. + +
+ +Changes in V2: + +
+ +On-demand test results can be obtained along with the periodic tests that are executed on Video Mesh nodes.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/videoMesh/testResults/mediaHealthMonitorTest") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("orgId", orgId) + req.QueryParam("triggerType", triggerType) + req.QueryParam("from", from) + req.QueryParam("to", to) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Unique ID of the organization.") + cmd.Flags().StringVar(&triggerType, "trigger-type", "", "Trigger type.") + cmd.Flags().StringVar(&from, "from", "", "The start date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. The `from` parameter cannot have date and time values that exceed `to`.") + cmd.Flags().StringVar(&to, "to", "", "The end date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format.") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + videoMeshCmd.AddCommand(cmd) + } + + { // get-media-health-monitoring-tool-test-results-clusters-v2 + var clusterId string + var triggerType string + var from string + var to string + var last string + cmd := &cobra.Command{ + Use: "get-media-health-monitoring-tool-test-results-clusters-v2", + Short: "Get Media Health Monitoring Tool Test results for clusters V2", + Long: `Returns the test results of the Media Health Monitoring Tool tests for a single Video Mesh cluster. + +
+ +Changes in V2: + +
+ +On-demand test results can be obtained along with the periodic tests that are executed on Video Mesh nodes.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/videoMesh/testResults/mediaHealthMonitorTest/clusters") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("clusterId", clusterId) + req.QueryParam("triggerType", triggerType) + req.QueryParam("from", from) + req.QueryParam("to", to) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&clusterId, "cluster-id", "", "Unique ID of the Video Mesh cluster.") + cmd.Flags().StringVar(&triggerType, "trigger-type", "", "Trigger type.") + cmd.Flags().StringVar(&from, "from", "", "The start date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. The `from` parameter cannot have date and time values that exceed `to`.") + cmd.Flags().StringVar(&to, "to", "", "The end date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format.") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + videoMeshCmd.AddCommand(cmd) + } + + { // get-media-health-monitoring-tool-test-results-node-v2 + var nodeId string + var triggerType string + var from string + var to string + var last string + cmd := &cobra.Command{ + Use: "get-media-health-monitoring-tool-test-results-node-v2", + Short: "Get Media Health Monitoring Tool Test results for node V2", + Long: `Returns the test results of the Media Health Monitoring Tool tests for a single Video Mesh node. + +
+ +Changes in V2: + +
+ +On-demand test results can be obtained along with the periodic tests that are executed on Video Mesh nodes.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/videoMesh/testResults/mediaHealthMonitorTest/nodes") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("nodeId", nodeId) + req.QueryParam("triggerType", triggerType) + req.QueryParam("from", from) + req.QueryParam("to", to) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&nodeId, "node-id", "", "Unique ID of the Video Mesh node.") + cmd.Flags().StringVar(&triggerType, "trigger-type", "", "Trigger type.") + cmd.Flags().StringVar(&from, "from", "", "The start date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. The `from` parameter cannot have date and time values that exceed `to`.") + cmd.Flags().StringVar(&to, "to", "", "The end date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format.") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + videoMeshCmd.AddCommand(cmd) + } + + { // list-overflow-cloud + var from string + var to string + var orgId string + var last string + cmd := &cobra.Command{ + Use: "list-overflow-cloud", + Short: "List Overflow to Cloud details", + Long: `Returns details of overflows to the cloud in an organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/videoMesh/cloudOverflow") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("from", from) + req.QueryParam("to", to) + req.QueryParam("orgId", orgId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&from, "from", "", "The starting date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`.") + cmd.Flags().StringVar(&to, "to", "", "The ending date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format.") + cmd.Flags().StringVar(&orgId, "org-id", "", "The unique Video Mesh organization ID.") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + videoMeshCmd.AddCommand(cmd) + } + + { // list-cluster-redirect + var from string + var to string + var orgId string + var last string + cmd := &cobra.Command{ + Use: "list-cluster-redirect", + Short: "List Cluster Redirect details", + Long: `Returns the redirect details of all Video Mesh clusters in an organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/videoMesh/callRedirects") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("from", from) + req.QueryParam("to", to) + req.QueryParam("orgId", orgId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&from, "from", "", "The starting date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`.") + cmd.Flags().StringVar(&to, "to", "", "The ending date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format.") + cmd.Flags().StringVar(&orgId, "org-id", "", "The unique Video Mesh organization ID.") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + videoMeshCmd.AddCommand(cmd) + } + + { // get-cluster-redirect + var from string + var to string + var clusterId string + var last string + cmd := &cobra.Command{ + Use: "get-cluster-redirect", + Short: "Get Cluster Redirect details", + Long: `Returns details of cluster redirects for a single Video Mesh cluster.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/videoMesh/clusters/callRedirects") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("from", from) + req.QueryParam("to", to) + req.QueryParam("clusterId", clusterId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&from, "from", "", "The starting date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`.") + cmd.Flags().StringVar(&to, "to", "", "The ending date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format.") + cmd.Flags().StringVar(&clusterId, "cluster-id", "", "The unique Video Mesh Cluster ID.") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + videoMeshCmd.AddCommand(cmd) + } + + { // list-clusters-utilization + var from string + var to string + var orgId string + var last string + cmd := &cobra.Command{ + Use: "list-clusters-utilization", + Short: "List Clusters Utilization", + Long: `Returns the utilization details of all Video Mesh clusters in an organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/videoMesh/utilization") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("from", from) + req.QueryParam("to", to) + req.QueryParam("orgId", orgId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&from, "from", "", "The starting date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`.") + cmd.Flags().StringVar(&to, "to", "", "The ending date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format.") + cmd.Flags().StringVar(&orgId, "org-id", "", "The unique ID for the organization.") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + videoMeshCmd.AddCommand(cmd) + } + + { // get-cluster-utilization + var from string + var to string + var clusterId string + var last string + cmd := &cobra.Command{ + Use: "get-cluster-utilization", + Short: "Get Cluster Utilization details", + Long: `Returns the utilization details for a single Video Mesh cluster.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/videoMesh/clusters/utilization") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("from", from) + req.QueryParam("to", to) + req.QueryParam("clusterId", clusterId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&from, "from", "", "The starting date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`.") + cmd.Flags().StringVar(&to, "to", "", "The ending date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format.") + cmd.Flags().StringVar(&clusterId, "cluster-id", "", "The unique Video Mesh Cluster ID.") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + videoMeshCmd.AddCommand(cmd) + } + + { // list-reachability-test-results-v2 + var orgId string + var triggerType string + var from string + var to string + var last string + cmd := &cobra.Command{ + Use: "list-reachability-test-results-v2", + Short: "List Reachability Test results V2", + Long: `Returns the test results of the Reachability tests for an organization. + +
+ +Changes in V2: + +
+ +1. On-demand test results can be obtained along with the periodic tests that are executed on Video Mesh nodes. + +
+ +2. You can now view the destination IP address of the destination cluster in the JSON response.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/videoMesh/testResults/reachabilityTest") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("orgId", orgId) + req.QueryParam("triggerType", triggerType) + req.QueryParam("from", from) + req.QueryParam("to", to) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Unique ID of the organization.") + cmd.Flags().StringVar(&triggerType, "trigger-type", "", "Trigger type.") + cmd.Flags().StringVar(&from, "from", "", "The start date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. The `from` parameter cannot have date and time values that exceed `to`.") + cmd.Flags().StringVar(&to, "to", "", "The end date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format.") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + videoMeshCmd.AddCommand(cmd) + } + + { // get-reachability-test-results-cluster-v2 + var clusterId string + var triggerType string + var from string + var to string + var last string + cmd := &cobra.Command{ + Use: "get-reachability-test-results-cluster-v2", + Short: "Get Reachability Test results for cluster V2", + Long: `Returns the test results of the Reachability tests for a single Video Mesh cluster. + +
+ +Changes in V2: + +
+ +1. On-demand test results can be obtained along with the periodic tests that are executed on Video Mesh nodes. + +
+ +2. You can now view the destination IP address of the destination cluster in the JSON response.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/videoMesh/testResults/reachabilityTest/clusters") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("clusterId", clusterId) + req.QueryParam("triggerType", triggerType) + req.QueryParam("from", from) + req.QueryParam("to", to) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&clusterId, "cluster-id", "", "Unique ID of the Video Mesh cluster.") + cmd.Flags().StringVar(&triggerType, "trigger-type", "", "Trigger type.") + cmd.Flags().StringVar(&from, "from", "", "The start date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. The `from` parameter cannot have date and time values that exceed `to`.") + cmd.Flags().StringVar(&to, "to", "", "The end date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format.") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + videoMeshCmd.AddCommand(cmd) + } + + { // get-reachability-test-results-node-v2 + var nodeId string + var triggerType string + var from string + var to string + var last string + cmd := &cobra.Command{ + Use: "get-reachability-test-results-node-v2", + Short: "Get Reachability Test results for node V2", + Long: `Returns the test results of the Reachability tests for a single Video Mesh node. + +
+ +Changes in V2: + +
+ +1. On-demand test results can be obtained along with the periodic tests that are executed on Video Mesh nodes. + +
+ +2. You can now view the destination IP address of the destination cluster in the JSON response.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/videoMesh/testResults/reachabilityTest/nodes") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("nodeId", nodeId) + req.QueryParam("triggerType", triggerType) + req.QueryParam("from", from) + req.QueryParam("to", to) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&nodeId, "node-id", "", "Unique ID of the Video Mesh node.") + cmd.Flags().StringVar(&triggerType, "trigger-type", "", "Trigger type.") + cmd.Flags().StringVar(&from, "from", "", "The start date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. The `from` parameter cannot have date and time values that exceed `to`.") + cmd.Flags().StringVar(&to, "to", "", "The end date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format.") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + videoMeshCmd.AddCommand(cmd) + } + + { // list-cluster + var orgId string + cmd := &cobra.Command{ + Use: "list-cluster", + Short: "List Cluster Details", + Long: `Returns the cluster details of all Video Mesh clusters in an organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/videoMesh/clusters") + req.QueryParam("orgId", orgId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "The unique ID for the organization.") + videoMeshCmd.AddCommand(cmd) + } + + { // get-cluster + var clusterId string + cmd := &cobra.Command{ + Use: "get-cluster", + Short: "Get Cluster Details", + Long: `Returns the cluster details for a single Video Mesh cluster.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/videoMesh/clusters/{clusterId}") + req.PathParam("clusterId", clusterId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&clusterId, "cluster-id", "", "The unique Video Mesh Cluster ID.") + cmd.MarkFlagRequired("cluster-id") + videoMeshCmd.AddCommand(cmd) + } + + { // trigger-on-demand-test-cluster + var clusterId string + var typeVal string + var nodes []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "trigger-on-demand-test-cluster", + Short: "Trigger on-demand test for cluster", + Long: `Triggers an on-demand test for a cluster. +The test is run on a maximum of 10 nodes present in the cluster, chosen at random, or based on input from the user.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/videoMesh/triggerTest/clusters/{clusterId}") + req.PathParam("clusterId", clusterId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("type", typeVal) + req.BodyStringSlice("nodes", nodes) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&clusterId, "cluster-id", "", "Unique ID of the Video Mesh cluster.") + cmd.MarkFlagRequired("cluster-id") + cmd.Flags().StringVar(&typeVal, "type", "", "") + cmd.Flags().StringSliceVar(&nodes, "nodes", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + videoMeshCmd.AddCommand(cmd) + } + + { // trigger-on-demand-test-node + var nodeId string + var typeVal string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "trigger-on-demand-test-node", + Short: "Trigger on-demand test for node", + Long: `Triggers an on-demand test for a node.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/videoMesh/triggerTest/nodes/{nodeId}") + req.PathParam("nodeId", nodeId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("type", typeVal) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&nodeId, "node-id", "", "Unique ID of the Video Mesh node.") + cmd.MarkFlagRequired("node-id") + cmd.Flags().StringVar(&typeVal, "type", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + videoMeshCmd.AddCommand(cmd) + } + + { // get-triggered-test-status + var commandId string + cmd := &cobra.Command{ + Use: "get-triggered-test-status", + Short: "Get Triggered test status", + Long: `Returns the status of the test triggered using the Trigger on-demand test API.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/videoMesh/testStatus") + req.QueryParam("commandId", commandId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&commandId, "command-id", "", "The unique command ID generated from Trigger on-demand test API.") + videoMeshCmd.AddCommand(cmd) + } + + { // get-triggered-test-results + var commandId string + cmd := &cobra.Command{ + Use: "get-triggered-test-results", + Short: "Get Triggered test results", + Long: `Returns the results of the test triggered using the command ID.
+NOTE: The response format depends on the type of test triggered and it is the same as that of [NetworkTest API](/docs/api/v1/video-mesh/list-network-test-results), [MediaHealthMonitorTest API](/docs/api/v1/video-mesh/list-media-health-monitoring-tool-test-results-v2), and [ReachabilityTest API](/docs/api/v1/video-mesh/list-reachability-test-results-v2) respectively.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/videoMesh/testResults") + req.QueryParam("commandId", commandId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&commandId, "command-id", "", "The unique command ID generated from Trigger on-demand test API.") + videoMeshCmd.AddCommand(cmd) + } + + { // list-network-test-results + var orgId string + var triggerType string + var from string + var to string + var last string + cmd := &cobra.Command{ + Use: "list-network-test-results", + Short: "List Network Test results", + Long: `Returns the test results of the Network tests triggered for an organization. The tests listed below are run as a part of the Network Test execution on the node. + +Bandwidth Test - Tests the bandwidth parameters of the Video Mesh node's network. The test is run between the Video Mesh node and cloud services.
+DNS Resolution Test - Tests the resolution of IP addresses related to cloud services, against the DNS servers configured on the Video Mesh node's network.
+HTTPS Connectivity Test - Tests whether the Video Mesh node is able to connect to cloud services via HTTPS protocol.
+Websocket Connectivity Test - Tests whether the Video Mesh node is able to connect to Webex cloud services via Websocket.
`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/videoMesh/testResults/networkTest") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("orgId", orgId) + req.QueryParam("triggerType", triggerType) + req.QueryParam("from", from) + req.QueryParam("to", to) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Unique ID of the organization.") + cmd.Flags().StringVar(&triggerType, "trigger-type", "", "Trigger type.") + cmd.Flags().StringVar(&from, "from", "", "The start date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. The `from` parameter cannot have date and time values that exceed `to`.") + cmd.Flags().StringVar(&to, "to", "", "The end date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format.") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + videoMeshCmd.AddCommand(cmd) + } + + { // get-network-test-results-cluster + var clusterId string + var triggerType string + var from string + var to string + var last string + cmd := &cobra.Command{ + Use: "get-network-test-results-cluster", + Short: "Get Network Test results for cluster", + Long: `Returns the test results of the Network tests triggered for a single Video Mesh cluster. The tests listed below are run as a part of the Network Test execution on the node. + +Bandwidth Test - Tests the bandwidth parameters of the Video Mesh node's network. The test is run between the Video Mesh node and cloud services.
+DNS Resolution Test - Tests the resolution of IP addresses related to cloud services, against the DNS servers configured on the Video Mesh node's network.
+HTTPS Connectivity Test - Tests whether the Video Mesh node is able to connect to cloud services via HTTPS protocol.
+Websocket Connectivity Test - Tests whether the Video Mesh node is able to connect to Webex cloud services via Websocket.
`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/videoMesh/testResults/networkTest/clusters") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("clusterId", clusterId) + req.QueryParam("triggerType", triggerType) + req.QueryParam("from", from) + req.QueryParam("to", to) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&clusterId, "cluster-id", "", "Unique ID of the Video Mesh cluster.") + cmd.Flags().StringVar(&triggerType, "trigger-type", "", "Trigger type.") + cmd.Flags().StringVar(&from, "from", "", "The start date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. The `from` parameter cannot have date and time values that exceed `to`.") + cmd.Flags().StringVar(&to, "to", "", "The end date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format.") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + videoMeshCmd.AddCommand(cmd) + } + + { // get-network-test-results-node + var nodeId string + var triggerType string + var from string + var to string + var last string + cmd := &cobra.Command{ + Use: "get-network-test-results-node", + Short: "Get Network Test results for node", + Long: `Returns the test results of the Network tests triggered for a single Video Mesh node. The tests listed below are run as a part of the Network Test execution on the node. + +Bandwidth Test - Tests the bandwidth parameters of the Video Mesh node's network. The test is run between the Video Mesh node and cloud services.
+DNS Resolution Test - Tests the resolution of IP addresses related to cloud services, against the DNS servers configured on the Video Mesh node's network.
+HTTPS Connectivity Test - Tests whether the Video Mesh node is able to connect to cloud services via HTTPS protocol.
+Websocket Connectivity Test - Tests whether the Video Mesh node is able to connect to Webex cloud services via Websocket.
`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/videoMesh/testResults/networkTest/nodes") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("nodeId", nodeId) + req.QueryParam("triggerType", triggerType) + req.QueryParam("from", from) + req.QueryParam("to", to) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&nodeId, "node-id", "", "Unique ID of the Video Mesh node.") + cmd.Flags().StringVar(&triggerType, "trigger-type", "", "Trigger type.") + cmd.Flags().StringVar(&from, "from", "", "The start date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. The `from` parameter cannot have date and time values that exceed `to`.") + cmd.Flags().StringVar(&to, "to", "", "The end date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format.") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + videoMeshCmd.AddCommand(cmd) + } + + { // list-cluster-client-type-distribution + var orgId string + var from string + var to string + var deviceType string + var last string + cmd := &cobra.Command{ + Use: "list-cluster-client-type-distribution", + Short: "List Cluster Client Type Distribution details", + Long: `Returns the client type distribution details for all Video Mesh clusters in an organization.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/videoMesh/clientTypeDistribution") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("orgId", orgId) + req.QueryParam("from", from) + req.QueryParam("to", to) + req.QueryParam("deviceType", deviceType) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&orgId, "org-id", "", "Unique ID of the organization.") + cmd.Flags().StringVar(&from, "from", "", "The start date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. The `from` parameter cannot have date and time values that exceed `to`.") + cmd.Flags().StringVar(&to, "to", "", "The end date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format.") + cmd.Flags().StringVar(&deviceType, "device-type", "", "Device type(s). - Possible values: `webexDevices` `webexAppVdi` `webexForMobile` `sipEndpoint` `webexForDesktop`") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + videoMeshCmd.AddCommand(cmd) + } + + { // get-cluster-client-type-distribution + var clusterId string + var from string + var to string + var deviceType string + var last string + cmd := &cobra.Command{ + Use: "get-cluster-client-type-distribution", + Short: "Get Cluster Client Type Distribution details", + Long: `Returns the client type distribution details for a single Video Mesh cluster.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/videoMesh/clientTypeDistribution/clusters") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("clusterId", clusterId) + req.QueryParam("from", from) + req.QueryParam("to", to) + req.QueryParam("deviceType", deviceType) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&clusterId, "cluster-id", "", "Unique ID of the Video Mesh cluster.") + cmd.Flags().StringVar(&from, "from", "", "The start date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. The `from` parameter cannot have date and time values that exceed `to`.") + cmd.Flags().StringVar(&to, "to", "", "The end date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format.") + cmd.Flags().StringVar(&deviceType, "device-type", "", "Device type(s). - Possible values: `webexDevices` `webexAppVdi` `webexForMobile` `sipEndpoint` `webexForDesktop`") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + videoMeshCmd.AddCommand(cmd) + } + + { // list-event-threshold-configuration + var eventName string + var clusterId string + var orgId string + var eventScope string + cmd := &cobra.Command{ + Use: "list-event-threshold-configuration", + Short: "List Event Threshold Configuration", + Long: "Returns the event threshold configurations for `orgId` or `clusterId`, with optional filters `eventName` and `eventScope`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/videoMesh/eventThresholds") + req.QueryParam("eventName", eventName) + req.QueryParam("clusterId", clusterId) + req.QueryParam("orgId", orgId) + req.QueryParam("eventScope", eventScope) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&eventName, "event-name", "", "Event name to fetch threshold details.") + cmd.Flags().StringVar(&clusterId, "cluster-id", "", "Unique ID of the Video Mesh Cluster.") + cmd.Flags().StringVar(&orgId, "org-id", "", "Unique ID of the Organization.") + cmd.Flags().StringVar(&eventScope, "event-scope", "", "Scope name to filter events.") + videoMeshCmd.AddCommand(cmd) + } + + { // update-event-threshold-configuration + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-event-threshold-configuration", + Short: "Update Event Threshold Configuration", + Long: `Updates an existing event threshold configuration for given Event Threshold IDs.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PATCH", "/videoMesh/eventThresholds") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + videoMeshCmd.AddCommand(cmd) + } + + { // get-event-threshold-configuration + var eventThresholdId string + cmd := &cobra.Command{ + Use: "get-event-threshold-configuration", + Short: "Get Event Threshold Configuration", + Long: "Returns the event threshold configurations for `eventThresholdId`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/videoMesh/eventThresholds/{eventThresholdId}") + req.PathParam("eventThresholdId", eventThresholdId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&eventThresholdId, "event-threshold-id", "", "Unique ID of the event threshold configuration.") + cmd.MarkFlagRequired("event-threshold-id") + videoMeshCmd.AddCommand(cmd) + } + + { // reset-event-threshold-configuration + var eventThresholdIds []string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "reset-event-threshold-configuration", + Short: "Reset Event Threshold Configuration", + Long: `Resets the existing event threshold configuration for given Event Threshold IDs to default value. To stop receiving webhook events, use the [Webhooks API](docs/api/v1/webhooks) to delete the webhook in question.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/videoMesh/eventThresholds/reset") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyStringSlice("eventThresholdIds", eventThresholdIds) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringSliceVar(&eventThresholdIds, "event-threshold-ids", nil, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + videoMeshCmd.AddCommand(cmd) + } + +} diff --git a/cmd/meetings/webhooks.go b/cmd/meetings/webhooks.go new file mode 100644 index 0000000..5ad90e0 --- /dev/null +++ b/cmd/meetings/webhooks.go @@ -0,0 +1,201 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package meetings + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var webhooksCmd = &cobra.Command{ + Use: "webhooks", + Short: "Webhooks commands", +} + +func init() { + cmd.MeetingsCmd.AddCommand(webhooksCmd) + + { // list + var max string + var ownedBy string + cmd := &cobra.Command{ + Use: "list", + Short: "List Webhooks", + Long: `List all of your webhooks.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/webhooks") + req.QueryParam("max", max) + req.QueryParam("ownedBy", ownedBy) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&max, "max", "", "Limit the maximum number of webhooks in the response.") + cmd.Flags().StringVar(&ownedBy, "owned-by", "", "Limit the result list to org wide webhooks. Only allowed value is `org`.") + webhooksCmd.AddCommand(cmd) + } + + { // create + var name string + var targetUrl string + var resource string + var event string + var filter string + var secret string + var ownedBy string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a Webhook", + Long: `Creates a webhook. + +To learn more about how to create and use webhooks, see The [Webhooks Guide](/docs/api/guides/webhooks).`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/webhooks") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("name", name) + req.BodyString("targetUrl", targetUrl) + req.BodyString("resource", resource) + req.BodyString("event", event) + req.BodyString("filter", filter) + req.BodyString("secret", secret) + req.BodyString("ownedBy", ownedBy) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&targetUrl, "target-url", "", "") + cmd.Flags().StringVar(&resource, "resource", "", "") + cmd.Flags().StringVar(&event, "event", "", "") + cmd.Flags().StringVar(&filter, "filter", "", "") + cmd.Flags().StringVar(&secret, "secret", "", "") + cmd.Flags().StringVar(&ownedBy, "owned-by", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + webhooksCmd.AddCommand(cmd) + } + + { // get + var webhookId string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Webhook Details", + Long: "Shows details for a webhook, by ID.\n\nSpecify the webhook ID in the `webhookId` parameter in the URI.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/webhooks/{webhookId}") + req.PathParam("webhookId", webhookId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&webhookId, "webhook-id", "", "The unique identifier for the webhook.") + cmd.MarkFlagRequired("webhook-id") + webhooksCmd.AddCommand(cmd) + } + + { // update + var webhookId string + var name string + var targetUrl string + var secret string + var ownedBy string + var status string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Short: "Update a Webhook", + Long: "Updates a webhook, by ID. You cannot use this call to deactivate a webhook, only to activate a webhook that was auto deactivated.\nThe fields that can be updated are `name`, `targetURL`, `secret` and `status`. All other fields, if supplied, are ignored.\n\nSpecify the webhook ID in the `webhookId` parameter in the URI.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/webhooks/{webhookId}") + req.PathParam("webhookId", webhookId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("name", name) + req.BodyString("targetUrl", targetUrl) + req.BodyString("secret", secret) + req.BodyString("ownedBy", ownedBy) + req.BodyString("status", status) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&webhookId, "webhook-id", "", "The unique identifier for the webhook.") + cmd.MarkFlagRequired("webhook-id") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&targetUrl, "target-url", "", "") + cmd.Flags().StringVar(&secret, "secret", "", "") + cmd.Flags().StringVar(&ownedBy, "owned-by", "", "") + cmd.Flags().StringVar(&status, "status", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + webhooksCmd.AddCommand(cmd) + } + + { // delete + var webhookId string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete a Webhook", + Long: "Deletes a webhook, by ID.\n\nSpecify the webhook ID in the `webhookId` parameter in the URI.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/webhooks/{webhookId}") + req.PathParam("webhookId", webhookId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&webhookId, "webhook-id", "", "The unique identifier for the webhook.") + cmd.MarkFlagRequired("webhook-id") + webhooksCmd.AddCommand(cmd) + } + +} diff --git a/cmd/messaging/attachment_actions.go b/cmd/messaging/attachment_actions.go new file mode 100644 index 0000000..90b868c --- /dev/null +++ b/cmd/messaging/attachment_actions.go @@ -0,0 +1,77 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package messaging + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var attachmentActionsCmd = &cobra.Command{ + Use: "attachment-actions", + Short: "AttachmentActions commands", +} + +func init() { + cmd.MessagingCmd.AddCommand(attachmentActionsCmd) + + { // create + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create an Attachment Action", + Long: `Create a new attachment action.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/attachment/actions") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + attachmentActionsCmd.AddCommand(cmd) + } + + { // get + var id string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Attachment Action Details", + Long: "Shows details for a attachment action, by ID.\n\nSpecify the attachment action ID in the `id` URI parameter.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/attachment/actions/{id}") + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "A unique identifier for the attachment action.") + cmd.MarkFlagRequired("id") + attachmentActionsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/messaging/commands.go b/cmd/messaging/commands.go deleted file mode 100644 index 646b5af..0000000 --- a/cmd/messaging/commands.go +++ /dev/null @@ -1,13 +0,0 @@ -// Package messaging publishes the Webex Messaging API commands, built from the -// operation table, plus a handwritten message create that uploads files. -package messaging - -import ( - cmd "github.com/Cloverhound/webex-cli/cmd" - "github.com/Cloverhound/webex-cli/internal/apicmd" -) - -var groups = apicmd.Register(cmd.MessagingCmd, "messaging") - -// messagesCmd is the group a handwritten command joins. -var messagesCmd = groups["messages"] diff --git a/cmd/messaging/custom_messages.go b/cmd/messaging/custom_messages.go index 7348cca..c160c58 100644 --- a/cmd/messaging/custom_messages.go +++ b/cmd/messaging/custom_messages.go @@ -34,7 +34,7 @@ Examples: webex messaging messages create --body '{"toPersonEmail":"user@example.com","files":["./guide.md"]}' webex messaging messages create --body-file message.json --dry-run`, RunE: func(c *cobra.Command, args []string) error { - return createMessage(config.CallingBaseURL(), bodyRaw, bodyFile) + return createMessage(config.CallingBaseURL, bodyRaw, bodyFile) }, } cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") diff --git a/cmd/messaging/ecm_folder_linking.go b/cmd/messaging/ecm_folder_linking.go new file mode 100644 index 0000000..d86809c --- /dev/null +++ b/cmd/messaging/ecm_folder_linking.go @@ -0,0 +1,196 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package messaging + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var ecmFolderLinkingCmd = &cobra.Command{ + Use: "ecm-folder-linking", + Short: "EcmFolderLinking commands", +} + +func init() { + cmd.MessagingCmd.AddCommand(ecmFolderLinkingCmd) + + { // list + var roomId string + cmd := &cobra.Command{ + Use: "list", + Short: "List ECM folder", + Long: "Lists the ECM folder of a room specified by the `roomId` query parameter.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/room/linkedFolders") + req.QueryParam("roomId", roomId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&roomId, "room-id", "", "ID of the room for which to list the ECM folder.") + ecmFolderLinkingCmd.AddCommand(cmd) + } + + { // create-configuration + var roomId string + var contentUrl string + var displayName string + var driveId string + var itemId string + var defaultFolder string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-configuration", + Short: "Create an ECM folder configuration", + Long: "Adds an existing ECM folder to a room as (default or reference) file storage. There is no data validation happening for the request. Please ensure the correct `driveId` and `itemId.` These can be collected from the MS Graph API. The `contentUrl` and `displayName` are used only for user convenience. The folder will be configured with the MS folder name as `displayName`, and the `contentURL` may be updated or corrected as needed. To assess final configuration, please make a GET request on the linkedFolder.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/room/linkedFolders") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("roomId", roomId) + req.BodyString("contentUrl", contentUrl) + req.BodyString("displayName", displayName) + req.BodyString("driveId", driveId) + req.BodyString("itemId", itemId) + req.BodyString("defaultFolder", defaultFolder) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&roomId, "room-id", "", "") + cmd.Flags().StringVar(&contentUrl, "content-url", "", "") + cmd.Flags().StringVar(&displayName, "display-name", "", "") + cmd.Flags().StringVar(&driveId, "drive-id", "", "") + cmd.Flags().StringVar(&itemId, "item-id", "", "") + cmd.Flags().StringVar(&defaultFolder, "default-folder", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + ecmFolderLinkingCmd.AddCommand(cmd) + } + + { // get + var id string + cmd := &cobra.Command{ + Use: "get", + Short: "Get ECM Folder Details", + Long: `Get details for a room ECM folder with the specified folder id.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/room/linkedFolders/{id}") + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "The unique identifier for the folder.") + cmd.MarkFlagRequired("id") + ecmFolderLinkingCmd.AddCommand(cmd) + } + + { // update-linked + var id string + var roomId string + var contentUrl string + var displayName string + var driveId string + var itemId string + var defaultFolder string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-linked", + Short: "Update an ECM Linked Folder", + Long: "Updates the configuration of the specified Room folder. There is no data validation happening for the request. Please ensure the correct `driveId` and `itemId.` These can be collected from the MS Graph API. The `contentUrl` and `displayName` are used only for user convenience. The folder will be configured with the MS folder name as `displayName`, and the `contentURL` may be updated or corrected as needed. To assess final configuration, please make a GET request on the linkedFolder.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/room/linkedFolders/{id}") + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("roomId", roomId) + req.BodyString("contentUrl", contentUrl) + req.BodyString("displayName", displayName) + req.BodyString("driveId", driveId) + req.BodyString("itemId", itemId) + req.BodyString("defaultFolder", defaultFolder) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "The unique identifier for the room folder.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&roomId, "room-id", "", "") + cmd.Flags().StringVar(&contentUrl, "content-url", "", "") + cmd.Flags().StringVar(&displayName, "display-name", "", "") + cmd.Flags().StringVar(&driveId, "drive-id", "", "") + cmd.Flags().StringVar(&itemId, "item-id", "", "") + cmd.Flags().StringVar(&defaultFolder, "default-folder", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + ecmFolderLinkingCmd.AddCommand(cmd) + } + + { // unlink-linked + var id string + cmd := &cobra.Command{ + Use: "unlink-linked", + Short: "Unlink an ECM linked folder", + Long: `Unlinks the room-linked folder with the specified ID from the space.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/room/linkedFolders/{id}") + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "The unique identifier for the folder to disassociate from the space.") + cmd.MarkFlagRequired("id") + ecmFolderLinkingCmd.AddCommand(cmd) + } + +} diff --git a/cmd/messaging/events.go b/cmd/messaging/events.go new file mode 100644 index 0000000..bc47bb2 --- /dev/null +++ b/cmd/messaging/events.go @@ -0,0 +1,108 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package messaging + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/Cloverhound/webex-cli/internal/timeutil" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = timeutil.ParseLastISO + +var eventsCmd = &cobra.Command{ + Use: "events", + Short: "Events commands", +} + +func init() { + cmd.MessagingCmd.AddCommand(eventsCmd) + + { // list + var resource string + var typeVal string + var actorId string + var from string + var to string + var max string + var serviceType string + var last string + cmd := &cobra.Command{ + Use: "list", + Short: "List Events", + Long: `List events in your organization. Several query parameters are available to filter the events returned in the response. + +Long result sets will be split into [pages](/docs/basics#pagination).`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/events") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("resource", resource) + req.QueryParam("type", typeVal) + req.QueryParam("actorId", actorId) + req.QueryParam("from", from) + req.QueryParam("to", to) + req.QueryParam("max", max) + req.QueryParam("serviceType", serviceType) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&resource, "resource", "", "List events with a specific resource type.") + cmd.Flags().StringVar(&typeVal, "type", "", "List events with a specific event type.") + cmd.Flags().StringVar(&actorId, "actor-id", "", "List events performed by this person, by person ID.") + cmd.Flags().StringVar(&from, "from", "", "List events which occurred after a specific date and time.") + cmd.Flags().StringVar(&to, "to", "", "List events that occurred before a specific date and time. If not specified, events up to the present time will be listed. Cannot be set to a future date relative to the current time.") + cmd.Flags().StringVar(&max, "max", "", "Limit the maximum number of events in the response. Value must be between 1 and 1000, inclusive.") + cmd.Flags().StringVar(&serviceType, "service-type", "", "List events for a specific service type. This parameter is only applicable and mandatory when resource is set to `convergedRecordings`.") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + eventsCmd.AddCommand(cmd) + } + + { // get + var eventId string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Event Details", + Long: "Shows details for an event, by event ID.\n\nSpecify the event ID in the `eventId` parameter in the URI.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/events/{eventId}") + req.PathParam("eventId", eventId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&eventId, "event-id", "", "The unique identifier for the event.") + cmd.MarkFlagRequired("event-id") + eventsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/messaging/hds.go b/cmd/messaging/hds.go new file mode 100644 index 0000000..b32cddf --- /dev/null +++ b/cmd/messaging/hds.go @@ -0,0 +1,392 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package messaging + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/Cloverhound/webex-cli/internal/timeutil" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = timeutil.ParseLastISO + +var hdsCmd = &cobra.Command{ + Use: "hds", + Aliases: []string{"hybrid-data-security"}, + Short: "Hds commands", +} + +func init() { + cmd.MessagingCmd.AddCommand(hdsCmd) + + { // get-test-results-node + var nodeId string + var triggerType string + cmd := &cobra.Command{ + Use: "get-test-results-node", + Short: "Get test results for HDS node", + Long: `Get the latest results of the network tests triggered for a single HDS node. The test results are generated as part of the Network Test execution on the node. The network tests include the Bandwidth Test, DNS Resolution Test, and HTTPS Connectivity Test. + The results from the latest test run are provided, covering up to the past 90 days if available. +To obtain the Node ID needed for this API, use the [Get cluster details API]()`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/hds/testResults/nodes/{nodeId}/networkTest") + req.PathParam("nodeId", nodeId) + req.QueryParam("triggerType", triggerType) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&nodeId, "node-id", "", "Unique ID of the HDS node.") + cmd.MarkFlagRequired("node-id") + cmd.Flags().StringVar(&triggerType, "trigger-type", "", "Trigger type.") + hdsCmd.AddCommand(cmd) + } + + { // get-cluster + var clusterId string + cmd := &cobra.Command{ + Use: "get-cluster", + Short: "Get cluster details", + Long: `Retrieve details for a specific HDS cluster, such as the cluster name, cluster status, upgrade schedule, and HDS nodes in the cluster. +To obtain the Cluster ID needed for this API, use the [Get organization details API]()`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/hds/clusters/{clusterId}") + req.PathParam("clusterId", clusterId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&clusterId, "cluster-id", "", "Unique ID of the HDS cluster.") + cmd.MarkFlagRequired("cluster-id") + hdsCmd.AddCommand(cmd) + } + + { // get-org + var organizationId string + cmd := &cobra.Command{ + Use: "get-org", + Short: "Get organization details", + Long: `Retrieve details for an HDS organization, such as the organization name, type of organization. +To obtain the Organization ID needed for this API, use the [Organizations API]()`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/hds/organizations/{organizationId}") + req.PathParam("organizationId", organizationId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&organizationId, "organization-id", "", "Unique ID of the HDS organization.") + cmd.MarkFlagRequired("organization-id") + hdsCmd.AddCommand(cmd) + } + + { // get-node + var nodeId string + cmd := &cobra.Command{ + Use: "get-node", + Short: "Get node details", + Long: `Retrieve details for a specific HDS node, such as host name, release version, proxy details, deployment and build type, availability details, etc. +To obtain the Node ID needed for this API, use the [Get cluster details API]()`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/hds/nodes/{nodeId}") + req.PathParam("nodeId", nodeId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&nodeId, "node-id", "", "Unique ID of the HDS node") + cmd.MarkFlagRequired("node-id") + hdsCmd.AddCommand(cmd) + } + + { // get-database-org + var organizationId string + cmd := &cobra.Command{ + Use: "get-database-org", + Short: "Get database details for the HDS organization", + Long: `Retrieve details of database information for an HDS organization, such as database type and version used. +To obtain the Organization ID needed for this API, use the [Organizations API]()`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/hds/organizations/{organizationId}/database/details") + req.PathParam("organizationId", organizationId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&organizationId, "organization-id", "", "Unique ID of the HDS organization") + cmd.MarkFlagRequired("organization-id") + hdsCmd.AddCommand(cmd) + } + + { // get-multi-tenant-org + var organizationId string + cmd := &cobra.Command{ + Use: "get-multi-tenant-org", + Short: "Get Multi-Tenant HDS organization details", + Long: `Retrieve details of Multi-Tenant HDS organization such as Organization Name and ID, CMK state and state of Tenants Organizations. +To obtain the Organization ID needed for this API, use the [Organizations API]()`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/hds/organizations/{organizationId}/multiTenant") + req.PathParam("organizationId", organizationId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&organizationId, "organization-id", "", "Unique ID of the HDS organization.") + cmd.MarkFlagRequired("organization-id") + hdsCmd.AddCommand(cmd) + } + + { // get-availability-cluster + var clusterId string + var from string + var to string + var last string + cmd := &cobra.Command{ + Use: "get-availability-cluster", + Short: "Get availability details for HDS cluster", + Long: `Get the availability details for an HDS cluster, where each segment specifies the start and end times, as well as the number of online, offline, and total nodes within that segment. +To obtain the Cluster ID needed for this API, use the [Get organization details API]()`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/hds/clusters/{clusterId}/availability") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.PathParam("clusterId", clusterId) + req.QueryParam("from", from) + req.QueryParam("to", to) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&clusterId, "cluster-id", "", "Unique ID of the HDS cluster.") + cmd.MarkFlagRequired("cluster-id") + cmd.Flags().StringVar(&from, "from", "", "The start date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. The 'from' value cannot be later than the 'to' value, and it cannot be more than 1 day older than the current date and time.") + cmd.Flags().StringVar(&to, "to", "", "The end date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format.") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + hdsCmd.AddCommand(cmd) + } + + { // get-database-config-org + var organizationId string + cmd := &cobra.Command{ + Use: "get-database-config-org", + Aliases: []string{"get-database-org-2"}, + Short: "Get database details for the HDS organization", + Long: `Retrieve details of database information for an HDS organization, such as database type and version used. +To obtain the Organization ID needed for this API, use the [Organizations API]()`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/hds/organizations/{organizationId}/database") + req.PathParam("organizationId", organizationId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&organizationId, "organization-id", "", "Unique ID of the HDS organization") + cmd.MarkFlagRequired("organization-id") + hdsCmd.AddCommand(cmd) + } + + { // list-tenants-org + var organizationId string + cmd := &cobra.Command{ + Use: "list-tenants-org", + Aliases: []string{"get-multi-tenant-org-2"}, + Short: "Get Multi-Tenant HDS organization details", + Long: `Retrieve details of Multi-Tenant HDS organization such as Organization Name and ID, CMK state and state of Tenants Organizations. +To obtain the Organization ID needed for this API, use the [Organizations API]()`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/hds/organizations/{organizationId}/tenants") + req.PathParam("organizationId", organizationId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&organizationId, "organization-id", "", "Unique ID of the HDS organization.") + cmd.MarkFlagRequired("organization-id") + hdsCmd.AddCommand(cmd) + } + + { // list-nodes-cluster + var clusterId string + cmd := &cobra.Command{ + Use: "list-nodes-cluster", + Short: "List nodes for an HDS cluster", + Long: `Retrieve a list of all nodes for a specific HDS cluster, including availability, proxy details, deployment type, and release version. +To obtain the Cluster ID needed for this API, use the [List clusters for an HDS organization API]()`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/hds/clusters/{clusterId}/nodes") + req.PathParam("clusterId", clusterId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&clusterId, "cluster-id", "", "Unique ID of the HDS cluster.") + cmd.MarkFlagRequired("cluster-id") + hdsCmd.AddCommand(cmd) + } + + { // list-clusters-org + var organizationId string + cmd := &cobra.Command{ + Use: "list-clusters-org", + Short: "List clusters for an HDS organization", + Long: `Retrieve a list of all clusters for a specific HDS organization, including cluster status, release channel, and upgrade schedule details. +To obtain the Organization ID needed for this API, use the [Organizations API]()`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/hds/organizations/{organizationId}/clusters") + req.PathParam("organizationId", organizationId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&organizationId, "organization-id", "", "Unique ID of the HDS organization.") + cmd.MarkFlagRequired("organization-id") + hdsCmd.AddCommand(cmd) + } + + { // get-alarms-node + var nodeId string + var from string + var to string + var last string + cmd := &cobra.Command{ + Use: "get-alarms-node", + Short: "Get alarms for an HDS node", + Long: `Returns the alarm details for a single HDS node for the provided time range (last 24 hours). +To obtain the Node ID needed for this API, use the [List nodes for an HDS cluster API]()`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/hds/nodes/{nodeId}/alarms") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.PathParam("nodeId", nodeId) + req.QueryParam("from", from) + req.QueryParam("to", to) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&nodeId, "node-id", "", "Unique ID of the HDS node.") + cmd.MarkFlagRequired("node-id") + cmd.Flags().StringVar(&from, "from", "", "The start date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format.") + cmd.Flags().StringVar(&to, "to", "", "The end date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format.") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + hdsCmd.AddCommand(cmd) + } + + { // get-usage-node + var nodeId string + var from string + var to string + var last string + cmd := &cobra.Command{ + Use: "get-usage-node", + Short: "Get resource usage for an HDS node", + Long: `Retrieve CPU, memory, and disk resource usage details for a specific HDS node over the requested time range. +To obtain the Node ID needed for this API, use the [List nodes for an HDS cluster API]()`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/hds/nodes/{nodeId}/resourceUsage") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.PathParam("nodeId", nodeId) + req.QueryParam("from", from) + req.QueryParam("to", to) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&nodeId, "node-id", "", "Unique ID of the HDS node.") + cmd.MarkFlagRequired("node-id") + cmd.Flags().StringVar(&from, "from", "", "The start date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format.") + cmd.Flags().StringVar(&to, "to", "", "The end date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format.") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + hdsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/messaging/memberships.go b/cmd/messaging/memberships.go new file mode 100644 index 0000000..c87bdd1 --- /dev/null +++ b/cmd/messaging/memberships.go @@ -0,0 +1,187 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package messaging + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var membershipsCmd = &cobra.Command{ + Use: "memberships", + Short: "Memberships commands", +} + +func init() { + cmd.MessagingCmd.AddCommand(membershipsCmd) + + { // list + var roomId string + var personId string + var personEmail string + var max string + cmd := &cobra.Command{ + Use: "list", + Short: "List Memberships", + Long: "Lists all room memberships. By default, lists memberships for rooms to which the authenticated user belongs.\n\nUse query parameters to filter the response.\n\nUse `roomId` to list memberships for a room, by ID.\n\n**NOTE**: For moderated team spaces, the list of memberships will include only the space moderators if the user is a team member but not a direct participant of the space.\n\nUse either `personId` or `personEmail` to filter the results. The `roomId` parameter is required when using these parameters.\n\nWhen the requester is a compliance officer, they can query by `personId` or `personEmail` **WITHOUT** specifying a `roomId`. The response will include **ALL** memberships for the user where a space is owned by an org to which the user belongs.\n\nLong result sets will be split into [pages](/docs/basics#pagination).", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/memberships") + req.QueryParam("roomId", roomId) + req.QueryParam("personId", personId) + req.QueryParam("personEmail", personEmail) + req.QueryParam("max", max) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&roomId, "room-id", "", "List memberships associated with a room, by ID.") + cmd.Flags().StringVar(&personId, "person-id", "", "List memberships associated with a person, by ID. The `roomId` parameter is required when using this parameter.") + cmd.Flags().StringVar(&personEmail, "person-email", "", "List memberships associated with a person, by email address. The `roomId` parameter is required when using this parameter.") + cmd.Flags().StringVar(&max, "max", "", "Limit the maximum number of memberships in the response.") + membershipsCmd.AddCommand(cmd) + } + + { // create + var roomId string + var personId string + var personEmail string + var isModerator bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a Membership", + Long: `Add someone to a room by Person ID or email address, optionally making them a moderator. Compliance Officers cannot add people to empty (team) spaces.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/memberships") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("roomId", roomId) + req.BodyString("personId", personId) + req.BodyString("personEmail", personEmail) + req.BodyBool("isModerator", isModerator, cmd.Flags().Changed("is-moderator")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&roomId, "room-id", "", "") + cmd.Flags().StringVar(&personId, "person-id", "", "") + cmd.Flags().StringVar(&personEmail, "person-email", "", "") + cmd.Flags().BoolVar(&isModerator, "is-moderator", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + membershipsCmd.AddCommand(cmd) + } + + { // get + var membershipId string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Membership Details", + Long: "Get details for a membership by ID.\n\nSpecify the membership ID in the `membershipId` URI parameter.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/memberships/{membershipId}") + req.PathParam("membershipId", membershipId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&membershipId, "membership-id", "", "The unique identifier for the membership.") + cmd.MarkFlagRequired("membership-id") + membershipsCmd.AddCommand(cmd) + } + + { // update + var membershipId string + var isModerator bool + var isRoomHidden bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Short: "Update a Membership", + Long: "Updates properties for a membership by ID.\n\nSpecify the membership ID in the `membershipId` URI parameter.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/memberships/{membershipId}") + req.PathParam("membershipId", membershipId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("isModerator", isModerator, cmd.Flags().Changed("is-moderator")) + req.BodyBool("isRoomHidden", isRoomHidden, cmd.Flags().Changed("is-room-hidden")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&membershipId, "membership-id", "", "The unique identifier for the membership.") + cmd.MarkFlagRequired("membership-id") + cmd.Flags().BoolVar(&isModerator, "is-moderator", false, "") + cmd.Flags().BoolVar(&isRoomHidden, "is-room-hidden", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + membershipsCmd.AddCommand(cmd) + } + + { // delete + var membershipId string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete a Membership", + Long: "Deletes a membership by ID.\n\nSpecify the membership ID in the `membershipId` URI parameter.\n\nThe membership for the last moderator of a [Team](/docs/api/v1/teams)'s General space may not be deleted; [promote another user](/docs/api/v1/team-memberships/update-a-team-membership) to team moderator first.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/memberships/{membershipId}") + req.PathParam("membershipId", membershipId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&membershipId, "membership-id", "", "The unique identifier for the membership.") + cmd.MarkFlagRequired("membership-id") + membershipsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/messaging/messages.go b/cmd/messaging/messages.go new file mode 100644 index 0000000..3bd9afe --- /dev/null +++ b/cmd/messaging/messages.go @@ -0,0 +1,196 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package messaging + +import ( + "fmt" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strings.Join + +var messagesCmd = &cobra.Command{ + Use: "messages", + Short: "Messages commands", +} + +func init() { + cmd.MessagingCmd.AddCommand(messagesCmd) + + { // list + var roomId string + var parentId string + var mentionedPeople string + var before string + var beforeMessage string + var max string + cmd := &cobra.Command{ + Use: "list", + Short: "List Messages", + Long: `Lists all messages in a room. Each message will include content attachments if present. + +The list sorts the messages in descending order by creation date. + +Long result sets will be split into [pages](/docs/basics#pagination).`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/messages") + req.QueryParam("roomId", roomId) + req.QueryParam("parentId", parentId) + req.QueryParam("mentionedPeople", mentionedPeople) + req.QueryParam("mentionedPeople", mentionedPeople) + req.QueryParam("before", before) + req.QueryParam("beforeMessage", beforeMessage) + req.QueryParam("max", max) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&roomId, "room-id", "", "List messages in a room, by ID.") + cmd.Flags().StringVar(&parentId, "parent-id", "", "List messages with a parent, by ID.") + cmd.Flags().StringVar(&mentionedPeople, "mentioned-people", "", "List messages with these people mentioned, by ID. Use `me` as a shorthand for the current API user. Only `me` or the person ID of the current user may be specified. Bots must include this parameter to list messages in group rooms (spaces).") + cmd.Flags().StringVar(&before, "before", "", "List messages sent before a date and time.") + cmd.Flags().StringVar(&beforeMessage, "before-message", "", "List messages sent before a message, by ID.") + cmd.Flags().StringVar(&max, "max", "", "Limit the maximum number of messages in the response. Cannot exceed 100 if used with `mentionedPeople`.") + messagesCmd.AddCommand(cmd) + } + + { // list-direct + var parentId string + var personId string + var personEmail string + cmd := &cobra.Command{ + Use: "list-direct", + Short: "List Direct Messages", + Long: "List all messages in a 1:1 (direct) room. Use the `personId` or `personEmail` query parameter to specify the room. Each message will include content attachments if present.\n\nThe list sorts the messages in descending order by creation date.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/messages/direct") + req.QueryParam("parentId", parentId) + req.QueryParam("personId", personId) + req.QueryParam("personEmail", personEmail) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&parentId, "parent-id", "", "List messages with a parent, by ID.") + cmd.Flags().StringVar(&personId, "person-id", "", "List messages in a 1:1 room, by person ID.") + cmd.Flags().StringVar(&personEmail, "person-email", "", "List messages in a 1:1 room, by person email.") + messagesCmd.AddCommand(cmd) + } + + { // edit + var messageId string + var roomId string + var text string + var markdown string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "edit", + Short: "Edit a Message", + Long: "Update a message you have posted not more than 10 times.\n\nSpecify the `messageId` of the message you want to edit.\n\nEdits of messages containing files or attachments are not currently supported.\nIf a user attempts to edit a message containing files or attachments a `400 Bad Request` will be returned by the API with a message stating that the feature is currently unsupported.\n\nThere is also a maximum number of times a user can edit a message. The maximum currently supported is 10 edits per message.\n If a user attempts to edit a message greater that the maximum times allowed the API will return 400 Bad Request with a message stating the edit limit has been reached.\n\nWhile only the `roomId` and `text` or `markdown` attributes are *required* in the request body, a common pattern for editing message is to first call `GET /messages/{id}` for the message you wish to edit and to then update the `text` or `markdown` attribute accordingly, passing the updated message object in the request body of the `PUT /messages/{id}` request.\nWhen this pattern is used on a message that included markdown, the `html` attribute must be deleted prior to making the `PUT` request.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/messages/{messageId}") + req.PathParam("messageId", messageId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("roomId", roomId) + req.BodyString("text", text) + req.BodyString("markdown", markdown) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&messageId, "message-id", "", "The unique identifier for the message.") + cmd.MarkFlagRequired("message-id") + cmd.Flags().StringVar(&roomId, "room-id", "", "") + cmd.Flags().StringVar(&text, "text", "", "") + cmd.Flags().StringVar(&markdown, "markdown", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + messagesCmd.AddCommand(cmd) + } + + { // get + var messageId string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Message Details", + Long: "Show details for a message, by message ID.\n\nSpecify the message ID in the `messageId` parameter in the URI.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/messages/{messageId}") + req.PathParam("messageId", messageId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&messageId, "message-id", "", "The unique identifier for the message.") + cmd.MarkFlagRequired("message-id") + messagesCmd.AddCommand(cmd) + } + + { // delete + var messageId string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete a Message", + Long: "Delete a message, by message ID.\n\nSpecify the message ID in the `messageId` parameter in the URI.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/messages/{messageId}") + req.PathParam("messageId", messageId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&messageId, "message-id", "", "The unique identifier for the message.") + cmd.MarkFlagRequired("message-id") + messagesCmd.AddCommand(cmd) + } + +} diff --git a/cmd/messaging/people.go b/cmd/messaging/people.go new file mode 100644 index 0000000..bd37a6f --- /dev/null +++ b/cmd/messaging/people.go @@ -0,0 +1,222 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package messaging + +import ( + "fmt" + "strings" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = strings.Join + +var peopleCmd = &cobra.Command{ + Use: "people", + Short: "People commands", +} + +func init() { + cmd.MessagingCmd.AddCommand(peopleCmd) + + { // list + var email string + var displayName string + var id string + var orgId string + var roles string + var callingData string + var locationId string + var max string + var excludeStatus string + cmd := &cobra.Command{ + Use: "list", + Short: "List People", + Long: "List people in your organization. For most users, either the `email` or `displayName` parameter is required. Admin users can omit these fields and list all users in their organization.\n\nResponse properties associated with a user's presence status, such as `status` or `lastActivity`, will only be returned for people within your organization or an organization you manage. Presence information will not be returned if the authenticated user has [disabled status sharing](https://help.webex.com/nkzs6wl/). Calling /people frequently to poll `status` information for a large set of users will quickly lead to `429` errors and throttling of such requests and is therefore discouraged.\n\nAdmin users can include `Webex Calling` (BroadCloud) user details in the response by specifying `callingData` parameter as `true`. Admin users can list all users in a location. Admin users will receive an enriched payload with additional administrative fields like `licenses`,`roles`, `locations` etc. These fields are shown when accessing a user via GET /people/{id}, not when doing a GET /people?id=\n\nLookup by `email` is only supported for people within the same org or where a partner admin relationship is in place.\n\nLookup by `roles` is only supported for Admin users for the people within the same org.\n\nLong result sets will be split into [pages](/docs/basics#pagination).", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/people") + req.QueryParam("email", email) + req.QueryParam("displayName", displayName) + req.QueryParam("id", id) + req.QueryParam("orgId", orgId) + req.QueryParam("roles", roles) + req.QueryParam("callingData", callingData) + req.QueryParam("locationId", locationId) + req.QueryParam("max", max) + req.QueryParam("excludeStatus", excludeStatus) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&email, "email", "", "List people with this email address. For non-admin requests, either this or `displayName` are required. With the exception of partner admins and a managed org relationship, people lookup by email is only available for users in the same org.") + cmd.Flags().StringVar(&displayName, "display-name", "", "List people whose name starts with this string. For non-admin requests, either this or email are required.") + cmd.Flags().StringVar(&id, "id", "", "List people by ID. Accepts up to 85 person IDs separated by commas. If this parameter is provided then presence information (such as the `lastActivity` or `status` properties) will not be included in the response.") + cmd.Flags().StringVar(&orgId, "org-id", "", "List people in this organization. Only admin users of another organization (such as partners) may use this parameter.") + cmd.Flags().StringVar(&roles, "roles", "", "List of roleIds separated by commas.") + cmd.Flags().StringVar(&callingData, "calling-data", "", "Include Webex Calling user details in the response.") + cmd.Flags().StringVar(&locationId, "location-id", "", "List people present in this location.") + cmd.Flags().StringVar(&max, "max", "", "Limit the maximum number of people in the response. If `callingData`=true, then `max` will not be more than 100. If `locationId` is specified then `max` will not be more than 50.") + cmd.Flags().StringVar(&excludeStatus, "exclude-status", "", "Omit people status/availability to enhance query performance.") + peopleCmd.AddCommand(cmd) + } + + { // create-person + var callingData string + var minResponse string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create-person", + Short: "Create a Person", + Long: "Create a new user account for a given organization. Only an admin can create a new user account.\n\nAt least one of the following body parameters is required to create a new user: `displayName`, `firstName`, `lastName`.\n\nCurrently, users may have only one email address associated with their account. The `emails` parameter is an array, which accepts multiple values to allow for future expansion, but currently only one email address will be used for the new user.\n\nAdmin users can include `Webex calling` (BroadCloud) user details in the response by specifying `callingData` parameter as true. It may happen that the POST request with calling data returns a 400 status, but the person was created still. One way to get into this state is if an invalid phone number is assigned to a user. The people API aggregates calls to several other microservices, and one may have failed. A best practice is to check if the user exists before retrying. This can be done with the user's email address and a GET /people.\n\nWhen doing attendee management, append `#attendee` to the `siteUrl` parameter (e.g. `mysite.webex.com#attendee`) to make the new user an attendee for a site.\n\n**NOTES**:\n\n* For creating a `Webex Calling` user, you must provide `phoneNumbers` or `extension`, `locationId`, and `licenses` string in the same request.\n\n* `SipAddresses` are asigned via an asynchronous process. This means that the POST response may not show the SIPAddresses immediately. Instead you can verify them with a separate GET to /people, after they were newly configured.\n\n* When assigning multiple licenses in a single request, the system will assign all valid and available licenses. If any requested licenses cannot be assigned, the operation will continue with the remaining licenses. As a result, it is possible that not all requested licenses are assigned to the user.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/people") + req.QueryParam("callingData", callingData) + req.QueryParam("minResponse", minResponse) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callingData, "calling-data", "", "Include Webex Calling user details in the response.") + cmd.Flags().StringVar(&minResponse, "min-response", "", "Set to `true` to improve performance by omitting person details and returning only the ID in the response when successful. If unsuccessful the response will have optional error details.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + peopleCmd.AddCommand(cmd) + } + + { // get-person + var personId string + var callingData string + cmd := &cobra.Command{ + Use: "get-person", + Short: "Get Person Details", + Long: "Shows details for a person, by ID.\n\nResponse properties associated with a user's presence status, such as `status` or `lastActivity`, will only be displayed for people within your organization or an organization you manage. Presence information will not be shown if the authenticated user has [disabled status sharing](https://help.webex.com/nkzs6wl/).\n\nAdmin users can include `Webex Calling` (BroadCloud) user details in the response by specifying `callingData` parameter as `true`.\n\nSpecify the person ID in the `personId` parameter in the URI.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/people/{personId}") + req.PathParam("personId", personId) + req.QueryParam("callingData", callingData) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&callingData, "calling-data", "", "Include Webex Calling user details in the response.") + peopleCmd.AddCommand(cmd) + } + + { // update-person + var personId string + var callingData string + var showAllTypes string + var minResponse string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update-person", + Short: "Update a Person", + Long: "Update details for a person, by ID.\n\nSpecify the person ID in the `personId` parameter in the URI. Only an admin can update a person details.\n\nInclude all details for the person. This action expects all user details to be present in the request. A common approach is to first [GET the person's details](/docs/api/v1/people/get-person-details), make changes, then PUT both the changed and unchanged values.\n\nAdmin users can include `Webex Calling` (BroadCloud) user details in the response by specifying `callingData` parameter as true.\n\nWhen doing attendee management, to update a user from host role to an attendee for a site append `#attendee` to the respective `siteUrl` and remove the meeting host license for this site from the license array.\nTo update a person from an attendee role to a host for a site, add the meeting license for this site in the meeting array, and remove that site from the `siteurl` parameter.\n\nTo remove the attendee privilege for a user on a meeting site, remove the `sitename#attendee` from the `siteUrl`s array. The `showAllTypes` parameter must be set to `true`.\n\n**NOTE**:\n\n* When assigning a Webex Calling license, either a telephone number or extension must already be assigned to the person or provided in the request payload.\n\n* When `callingData` is set to `true`, a Webex Calling license must be included in the `licenses` array.\n\n* The `locationId` can only be set when assigning a calling license to a user. It cannot be changed if a user is already an existing calling user.\n\n* The `extension` field should be used to update the Webex Calling extension for a person. The extension value should not include the location routing prefix. The `work_extension` type in the `phoneNumbers` object as seen in the response payload of [List People](/docs/api/v1/people/list-people) or [Get Person Details](/docs/api/v1/people/get-person-details), cannot be used to set the Webex Calling extension for a person.\n\n* When updating a user with multiple email addresses using a PUT request, ensure that the primary email address is listed first in the array. Note that the order of email addresses returned by a GET request is not guaranteed..\n\n* The People API is a combination of several microservices, each responsible for specific attributes of a person. As a result, a PUT request that returns an error response code may still have altered some values of the person's data. Therefore, it is recommended to perform a GET request after encountering an error to verify the current state of the resource. \n\n* Some licenses are implicitly assigned by the system and cannot be admin controlled. They are necessary for the baseline function of the Webex system. If you get an error about implicitly assigned licensed that cannot be removed, please ensure you have the corresponding license in your PUT request.\n\n* When assigning multiple licenses in a single request, the system will assign all valid and available licenses. If any requested licenses cannot be assigned, the operation will continue with the remaining licenses. As a result, it is possible that not all requested licenses are assigned to the user.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/people/{personId}") + req.PathParam("personId", personId) + req.QueryParam("callingData", callingData) + req.QueryParam("showAllTypes", showAllTypes) + req.QueryParam("minResponse", minResponse) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + cmd.Flags().StringVar(&callingData, "calling-data", "", "Include Webex Calling user details in the response.") + cmd.Flags().StringVar(&showAllTypes, "show-all-types", "", "Include additional user data like `#attendee` role.") + cmd.Flags().StringVar(&minResponse, "min-response", "", "Set to `true` to improve performance by omitting person details in the response. If unsuccessful the response will have optional error details.") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + peopleCmd.AddCommand(cmd) + } + + { // delete-person + var personId string + cmd := &cobra.Command{ + Use: "delete-person", + Short: "Delete a Person", + Long: "Remove a person from the system.\n\n**Required Administrator Roles:**\n\nThe following administrators have permission to use this API:\n\n**Customer Organization:**\n- Full administrator\n- User administrator\n\n**Partner/External Access:**\n- External full administrator\n\n**Note:** External read-only administrators, provisioning administrators, and device administrators cannot delete users.\n\nSpecify the person ID in the `personId` parameter in the URI.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/people/{personId}") + req.PathParam("personId", personId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&personId, "person-id", "", "A unique identifier for the person.") + cmd.MarkFlagRequired("person-id") + peopleCmd.AddCommand(cmd) + } + + { // get-my-own + var callingData string + cmd := &cobra.Command{ + Use: "get-my-own", + Short: "Get My Own Details", + Long: "Get profile details for the authenticated user. This is the same as GET `/people/{personId}` using the Person ID associated with your Auth token.\n\nAdmin users can include `Webex Calling` (BroadCloud) user details in the response by specifying `callingData` parameter as true.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/people/me") + req.QueryParam("callingData", callingData) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&callingData, "calling-data", "", "Include Webex Calling user details in the response.") + peopleCmd.AddCommand(cmd) + } + +} diff --git a/cmd/messaging/room_tabs.go b/cmd/messaging/room_tabs.go new file mode 100644 index 0000000..c7d8b38 --- /dev/null +++ b/cmd/messaging/room_tabs.go @@ -0,0 +1,178 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package messaging + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var roomTabsCmd = &cobra.Command{ + Use: "room-tabs", + Short: "RoomTabs commands", +} + +func init() { + cmd.MessagingCmd.AddCommand(roomTabsCmd) + + { // list + var roomId string + cmd := &cobra.Command{ + Use: "list", + Short: "List Room Tabs", + Long: "Lists all Room Tabs of a room specified by the `roomId` query parameter.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/room/tabs") + req.QueryParam("roomId", roomId) + if config.Paginate() { + req.OffsetPaging("", "", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&roomId, "room-id", "", "ID of the room for which to list room tabs.") + roomTabsCmd.AddCommand(cmd) + } + + { // create + var roomId string + var contentUrl string + var displayName string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a Room Tab", + Long: `Add a tab with a specified URL to a room.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/room/tabs") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("roomId", roomId) + req.BodyString("contentUrl", contentUrl) + req.BodyString("displayName", displayName) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&roomId, "room-id", "", "") + cmd.Flags().StringVar(&contentUrl, "content-url", "", "") + cmd.Flags().StringVar(&displayName, "display-name", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + roomTabsCmd.AddCommand(cmd) + } + + { // get + var id string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Room Tab Details", + Long: `Get details for a Room Tab with the specified room tab ID.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/room/tabs/{id}") + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "The unique identifier for the Room Tab.") + cmd.MarkFlagRequired("id") + roomTabsCmd.AddCommand(cmd) + } + + { // update + var id string + var roomId string + var contentUrl string + var displayName string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Short: "Update a Room Tab", + Long: `Updates the content URL of the specified Room Tab ID.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/room/tabs/{id}") + req.PathParam("id", id) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("roomId", roomId) + req.BodyString("contentUrl", contentUrl) + req.BodyString("displayName", displayName) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "The unique identifier for the Room Tab.") + cmd.MarkFlagRequired("id") + cmd.Flags().StringVar(&roomId, "room-id", "", "") + cmd.Flags().StringVar(&contentUrl, "content-url", "", "") + cmd.Flags().StringVar(&displayName, "display-name", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + roomTabsCmd.AddCommand(cmd) + } + + { // delete + var id string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete a Room Tab", + Long: `Deletes a Room Tab with the specified ID.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/room/tabs/{id}") + req.PathParam("id", id) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&id, "id", "", "The unique identifier for the Room Tab to delete.") + cmd.MarkFlagRequired("id") + roomTabsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/messaging/rooms.go b/cmd/messaging/rooms.go new file mode 100644 index 0000000..12366f6 --- /dev/null +++ b/cmd/messaging/rooms.go @@ -0,0 +1,255 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package messaging + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/Cloverhound/webex-cli/internal/timeutil" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print +var _ = timeutil.ParseLastISO + +var roomsCmd = &cobra.Command{ + Use: "rooms", + Short: "Rooms commands", +} + +func init() { + cmd.MessagingCmd.AddCommand(roomsCmd) + + { // list + var teamId string + var typeVal string + var orgPublicSpaces string + var from string + var to string + var sortBy string + var max string + var last string + cmd := &cobra.Command{ + Use: "list", + Short: "List Rooms", + Long: "List rooms to which the authenticated user belongs to.\n\nThe `title` of the room for 1:1 rooms will be the display name of the other person. Please use the [memberships API](https://developer.webex.com/docs/api/v1/memberships) to list the people in the space.\n\nLong result sets will be split into [pages](/docs/basics#pagination).\n\nKnown Limitations:\nThe underlying database does not support natural sorting by `lastactivity` and will only sort on limited set of results, which are pulled from the database in order of `roomId`. For users or bots in more than 3000 spaces this can result in anomalies such as spaces that have had recent activity not being returned in the results when sorting by `lastacivity`.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/rooms") + if last != "" { + var err error + from, to, err = timeutil.ParseLastISO(last) + if err != nil { + return err + } + } + req.QueryParam("teamId", teamId) + req.QueryParam("type", typeVal) + req.QueryParam("orgPublicSpaces", orgPublicSpaces) + req.QueryParam("from", from) + req.QueryParam("to", to) + req.QueryParam("sortBy", sortBy) + req.QueryParam("max", max) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&teamId, "team-id", "", "List rooms associated with a team, by ID. Cannot be set in combination with `orgPublicSpaces`.") + cmd.Flags().StringVar(&typeVal, "type", "", "List rooms by type. Cannot be set in combination with `orgPublicSpaces`.") + cmd.Flags().StringVar(&orgPublicSpaces, "org-public-spaces", "", "Shows the org's public spaces joined and unjoined. When set the result list is sorted by the `madePublic` timestamp.") + cmd.Flags().StringVar(&from, "from", "", "Filters rooms, that were made public after this time. See `madePublic` timestamp") + cmd.Flags().StringVar(&to, "to", "", "Filters rooms, that were made public before this time. See `maePublic` timestamp") + cmd.Flags().StringVar(&sortBy, "sort-by", "", "Sort results. Cannot be set in combination with `orgPublicSpaces`.") + cmd.Flags().StringVar(&max, "max", "", "Limit the maximum number of rooms in the response. Value must be between 1 and 1000, inclusive.") + cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") + roomsCmd.AddCommand(cmd) + } + + { // create + var title string + var teamId string + var classificationId string + var isLocked bool + var isPublic bool + var description string + var isAnnouncementOnly bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a Room", + Long: "Creates a room. The authenticated user is automatically added as a member of the room. See the [Memberships API](/docs/api/v1/memberships) to learn how to add more people to the room.\n\nTo create a 1:1 room, use the [Create Messages](/docs/api/v1/messages/create-a-message) endpoint to send a message directly to another person by using the `toPersonId` or `toPersonEmail` parameters.\n\nBots are not able to create and simultaneously classify a room. A bot may update a space classification after a person of the same owning organization joined the space as the first human user.\nA space can only be put into announcement mode when it is locked.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/rooms") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("title", title) + req.BodyString("teamId", teamId) + req.BodyString("classificationId", classificationId) + req.BodyBool("isLocked", isLocked, cmd.Flags().Changed("is-locked")) + req.BodyBool("isPublic", isPublic, cmd.Flags().Changed("is-public")) + req.BodyString("description", description) + req.BodyBool("isAnnouncementOnly", isAnnouncementOnly, cmd.Flags().Changed("is-announcement-only")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&title, "title", "", "") + cmd.Flags().StringVar(&teamId, "team-id", "", "") + cmd.Flags().StringVar(&classificationId, "classification-id", "", "") + cmd.Flags().BoolVar(&isLocked, "is-locked", false, "") + cmd.Flags().BoolVar(&isPublic, "is-public", false, "") + cmd.Flags().StringVar(&description, "description", "", "") + cmd.Flags().BoolVar(&isAnnouncementOnly, "is-announcement-only", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + roomsCmd.AddCommand(cmd) + } + + { // get + var roomId string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Room Details", + Long: "Shows details for a room, by ID.\n\nThe `title` of the room for 1:1 rooms will be the display name of the other person. When a Compliance Officer lists 1:1 rooms, the \"other\" person cannot be determined. This means that the room's title may not be filled in and instead shows \"Empty Title\". Please use the [memberships API](https://developer.webex.com/docs/api/v1/memberships) to list the other person in the space.\n\nSpecify the room ID in the `roomId` parameter in the URI.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/rooms/{roomId}") + req.PathParam("roomId", roomId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&roomId, "room-id", "", "The unique identifier for the room.") + cmd.MarkFlagRequired("room-id") + roomsCmd.AddCommand(cmd) + } + + { // update + var roomId string + var title string + var classificationId string + var teamId string + var isLocked bool + var isPublic bool + var description string + var isAnnouncementOnly bool + var isReadOnly bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Short: "Update a Room", + Long: "Updates details for a room, by ID.\n\nSpecify the room ID in the `roomId` parameter in the URI.\nA space can only be put into announcement mode when it is locked.\nAny space participant or compliance officer can convert a space from public to private. Only a compliance officer can convert a space from private to public and only if the space is classified with the lowest category (usually `public`), and the space has a description.\nTo remove a `description` please use a space character ` ` by itself.\n\n
When using this method for moving a space under a team, ensure that all moderators in the space are also team members. If a moderator is not part of the team, demote or remove them as a moderator. Alternatively, add the non-team moderators to the team. This ensures compliance with the requirement that all space moderators must be team members for successful operation execution.\n
\n\n
A Compliance Officer who is not a member of a space can only update the `classificationId`, `isAnnouncementOnly`, `description`, and `isPublic` fields.\n
", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/rooms/{roomId}") + req.PathParam("roomId", roomId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("title", title) + req.BodyString("classificationId", classificationId) + req.BodyString("teamId", teamId) + req.BodyBool("isLocked", isLocked, cmd.Flags().Changed("is-locked")) + req.BodyBool("isPublic", isPublic, cmd.Flags().Changed("is-public")) + req.BodyString("description", description) + req.BodyBool("isAnnouncementOnly", isAnnouncementOnly, cmd.Flags().Changed("is-announcement-only")) + req.BodyBool("isReadOnly", isReadOnly, cmd.Flags().Changed("is-read-only")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&roomId, "room-id", "", "The unique identifier for the room.") + cmd.MarkFlagRequired("room-id") + cmd.Flags().StringVar(&title, "title", "", "") + cmd.Flags().StringVar(&classificationId, "classification-id", "", "") + cmd.Flags().StringVar(&teamId, "team-id", "", "") + cmd.Flags().BoolVar(&isLocked, "is-locked", false, "") + cmd.Flags().BoolVar(&isPublic, "is-public", false, "") + cmd.Flags().StringVar(&description, "description", "", "") + cmd.Flags().BoolVar(&isAnnouncementOnly, "is-announcement-only", false, "") + cmd.Flags().BoolVar(&isReadOnly, "is-read-only", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + roomsCmd.AddCommand(cmd) + } + + { // delete + var roomId string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete a Room", + Long: "Deletes a room, by ID. Deleted rooms cannot be recovered.\nAs a security measure to prevent accidental deletion, when a non moderator deletes the room they are removed from the room instead.\n\nDeleting a room that is part of a team will archive the room instead.\n\nA Compliance Officer has no special privileges, i.e. they cannot delete rooms they are not part of.\n\nSpecify the room ID in the `roomId` parameter in the URI.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/rooms/{roomId}") + req.PathParam("roomId", roomId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&roomId, "room-id", "", "The unique identifier for the room.") + cmd.MarkFlagRequired("room-id") + roomsCmd.AddCommand(cmd) + } + + { // get-meeting + var roomId string + cmd := &cobra.Command{ + Use: "get-meeting", + Short: "Get Room Meeting Details", + Long: "
\n\nThe meetingInfo API is deprecated and will be EOL on Jan 31, 2025. Meetings in the WSMP must be scheduled and licensed via the meetings backend.\nThe [Create a Meeting](/docs/api/v1/meetings/create-a-meeting) endpoint will provide the SIP address for the meeting to call.\n\n
\n\nShows Webex meeting details for a room such as the SIP address, meeting URL, toll-free and toll dial-in numbers.\n\nSpecify the room ID in the `roomId` parameter in the URI.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/rooms/{roomId}/meetingInfo") + req.PathParam("roomId", roomId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&roomId, "room-id", "", "The unique identifier for the room.") + cmd.MarkFlagRequired("room-id") + roomsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/messaging/team_memberships.go b/cmd/messaging/team_memberships.go new file mode 100644 index 0000000..d114679 --- /dev/null +++ b/cmd/messaging/team_memberships.go @@ -0,0 +1,178 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package messaging + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var teamMembershipsCmd = &cobra.Command{ + Use: "team-memberships", + Short: "TeamMemberships commands", +} + +func init() { + cmd.MessagingCmd.AddCommand(teamMembershipsCmd) + + { // list + var teamId string + var max string + cmd := &cobra.Command{ + Use: "list", + Short: "List Team Memberships", + Long: "Lists all team memberships for a given team, specified by the `teamId` query parameter.\n\nUse query parameters to filter the response.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/team/memberships") + req.QueryParam("teamId", teamId) + req.QueryParam("max", max) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&teamId, "team-id", "", "List memberships for a team, by ID.") + cmd.Flags().StringVar(&max, "max", "", "Limit the maximum number of team memberships in the response.") + teamMembershipsCmd.AddCommand(cmd) + } + + { // create + var teamId string + var personId string + var personEmail string + var isModerator bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a Team Membership", + Long: `Add someone to a team by Person ID or email address, optionally making them a moderator.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/team/memberships") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("teamId", teamId) + req.BodyString("personId", personId) + req.BodyString("personEmail", personEmail) + req.BodyBool("isModerator", isModerator, cmd.Flags().Changed("is-moderator")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&teamId, "team-id", "", "") + cmd.Flags().StringVar(&personId, "person-id", "", "") + cmd.Flags().StringVar(&personEmail, "person-email", "", "") + cmd.Flags().BoolVar(&isModerator, "is-moderator", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + teamMembershipsCmd.AddCommand(cmd) + } + + { // get + var membershipId string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Team Membership Details", + Long: "Shows details for a team membership, by ID.\n\nSpecify the team membership ID in the `membershipId` URI parameter.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/team/memberships/{membershipId}") + req.PathParam("membershipId", membershipId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&membershipId, "membership-id", "", "The unique identifier for the team membership.") + cmd.MarkFlagRequired("membership-id") + teamMembershipsCmd.AddCommand(cmd) + } + + { // update + var membershipId string + var isModerator bool + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Short: "Update a Team Membership", + Long: "Updates a team membership, by ID.\n\nSpecify the team membership ID in the `membershipId` URI parameter.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/team/memberships/{membershipId}") + req.PathParam("membershipId", membershipId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyBool("isModerator", isModerator, cmd.Flags().Changed("is-moderator")) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&membershipId, "membership-id", "", "The unique identifier for the team membership.") + cmd.MarkFlagRequired("membership-id") + cmd.Flags().BoolVar(&isModerator, "is-moderator", false, "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + teamMembershipsCmd.AddCommand(cmd) + } + + { // delete + var membershipId string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete a Team Membership", + Long: "Deletes a team membership, by ID.\n\nSpecify the team membership ID in the `membershipId` URI parameter.\n\nThe team membership for the last moderator of a team may not be deleted; [promote another user](/docs/api/v1/team-memberships/update-a-team-membership) to team moderator first.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/team/memberships/{membershipId}") + req.PathParam("membershipId", membershipId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&membershipId, "membership-id", "", "The unique identifier for the team membership.") + cmd.MarkFlagRequired("membership-id") + teamMembershipsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/messaging/teams.go b/cmd/messaging/teams.go new file mode 100644 index 0000000..a762bdf --- /dev/null +++ b/cmd/messaging/teams.go @@ -0,0 +1,177 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package messaging + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var teamsCmd = &cobra.Command{ + Use: "teams", + Short: "Teams commands", +} + +func init() { + cmd.MessagingCmd.AddCommand(teamsCmd) + + { // list + var max string + cmd := &cobra.Command{ + Use: "list", + Short: "List Teams", + Long: `Lists teams to which the authenticated user belongs.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/teams") + req.QueryParam("max", max) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&max, "max", "", "Limit the maximum number of teams in the response.") + teamsCmd.AddCommand(cmd) + } + + { // create + var name string + var description string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a Team", + Long: `Creates a team. + +The authenticated user is automatically added as a member of the team. See the [Team Memberships API](/docs/api/v1/team-memberships) to learn how to add more people to the team.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/teams") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("name", name) + req.BodyString("description", description) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&description, "description", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + teamsCmd.AddCommand(cmd) + } + + { // get + var teamId string + var description string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Team Details", + Long: "Shows details for a team, by ID.\n\nSpecify the team ID in the `teamId` parameter in the URI.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/teams/{teamId}") + req.PathParam("teamId", teamId) + req.QueryParam("description", description) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&teamId, "team-id", "", "The unique identifier for the team.") + cmd.MarkFlagRequired("team-id") + cmd.Flags().StringVar(&description, "description", "", "The teams description.") + teamsCmd.AddCommand(cmd) + } + + { // update + var teamId string + var name string + var description string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Short: "Update a Team", + Long: "Updates details for a team, by ID.\n\nSpecify the team ID in the `teamId` parameter in the URI.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/teams/{teamId}") + req.PathParam("teamId", teamId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("name", name) + req.BodyString("description", description) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&teamId, "team-id", "", "The unique identifier for the team.") + cmd.MarkFlagRequired("team-id") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&description, "description", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + teamsCmd.AddCommand(cmd) + } + + { // delete + var teamId string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete a Team", + Long: "Deletes a team, by ID.\n\nSpecify the team ID in the `teamId` parameter in the URI.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/teams/{teamId}") + req.PathParam("teamId", teamId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&teamId, "team-id", "", "The unique identifier for the team.") + cmd.MarkFlagRequired("team-id") + teamsCmd.AddCommand(cmd) + } + +} diff --git a/cmd/messaging/webhooks.go b/cmd/messaging/webhooks.go new file mode 100644 index 0000000..96ecc61 --- /dev/null +++ b/cmd/messaging/webhooks.go @@ -0,0 +1,201 @@ +// Code generated by codegen/generate_cli.py; DO NOT EDIT. + +package messaging + +import ( + "fmt" + + cmd "github.com/Cloverhound/webex-cli/cmd" + "github.com/Cloverhound/webex-cli/internal/client" + "github.com/Cloverhound/webex-cli/internal/config" + "github.com/Cloverhound/webex-cli/internal/output" + "github.com/spf13/cobra" +) + +// Ensure imports are used. +var _ = fmt.Sprintf +var _ = config.Token +var _ = output.Print + +var webhooksCmd = &cobra.Command{ + Use: "webhooks", + Short: "Webhooks commands", +} + +func init() { + cmd.MessagingCmd.AddCommand(webhooksCmd) + + { // list + var max string + var ownedBy string + cmd := &cobra.Command{ + Use: "list", + Short: "List Webhooks", + Long: `List all of your webhooks.`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/webhooks") + req.QueryParam("max", max) + req.QueryParam("ownedBy", ownedBy) + if config.Paginate() { + req.OffsetPaging("", "max", 0) + resp, statusCode, err := req.DoPaginated(true) + if err != nil { + return err + } + return output.Print(resp, statusCode) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&max, "max", "", "Limit the maximum number of webhooks in the response.") + cmd.Flags().StringVar(&ownedBy, "owned-by", "", "Limit the result list to org wide webhooks. Only allowed value is `org`.") + webhooksCmd.AddCommand(cmd) + } + + { // create + var name string + var targetUrl string + var resource string + var event string + var filter string + var secret string + var ownedBy string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "create", + Short: "Create a Webhook", + Long: `Creates a webhook. + +To learn more about how to create and use webhooks, see The [Webhooks Guide](/docs/api/guides/webhooks).`, + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "POST", "/webhooks") + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("name", name) + req.BodyString("targetUrl", targetUrl) + req.BodyString("resource", resource) + req.BodyString("event", event) + req.BodyString("filter", filter) + req.BodyString("secret", secret) + req.BodyString("ownedBy", ownedBy) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&targetUrl, "target-url", "", "") + cmd.Flags().StringVar(&resource, "resource", "", "") + cmd.Flags().StringVar(&event, "event", "", "") + cmd.Flags().StringVar(&filter, "filter", "", "") + cmd.Flags().StringVar(&secret, "secret", "", "") + cmd.Flags().StringVar(&ownedBy, "owned-by", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + webhooksCmd.AddCommand(cmd) + } + + { // get + var webhookId string + cmd := &cobra.Command{ + Use: "get", + Short: "Get Webhook Details", + Long: "Shows details for a webhook, by ID.\n\nSpecify the webhook ID in the `webhookId` parameter in the URI.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "GET", "/webhooks/{webhookId}") + req.PathParam("webhookId", webhookId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&webhookId, "webhook-id", "", "The unique identifier for the webhook.") + cmd.MarkFlagRequired("webhook-id") + webhooksCmd.AddCommand(cmd) + } + + { // update + var webhookId string + var name string + var targetUrl string + var secret string + var ownedBy string + var status string + var bodyRaw string + var bodyFile string + cmd := &cobra.Command{ + Use: "update", + Short: "Update a Webhook", + Long: "Updates a webhook, by ID. You cannot use this call to deactivate a webhook, only to activate a webhook that was auto deactivated.\nThe fields that can be updated are `name`, `targetURL`, `secret` and `status`. All other fields, if supplied, are ignored.\n\nSpecify the webhook ID in the `webhookId` parameter in the URI.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "PUT", "/webhooks/{webhookId}") + req.PathParam("webhookId", webhookId) + if bodyFile != "" { + if err := req.SetBodyFile(bodyFile); err != nil { + return err + } + } else if bodyRaw != "" { + req.SetBodyRaw(bodyRaw) + } else { + req.BodyString("name", name) + req.BodyString("targetUrl", targetUrl) + req.BodyString("secret", secret) + req.BodyString("ownedBy", ownedBy) + req.BodyString("status", status) + } + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&webhookId, "webhook-id", "", "The unique identifier for the webhook.") + cmd.MarkFlagRequired("webhook-id") + cmd.Flags().StringVar(&name, "name", "", "") + cmd.Flags().StringVar(&targetUrl, "target-url", "", "") + cmd.Flags().StringVar(&secret, "secret", "", "") + cmd.Flags().StringVar(&ownedBy, "owned-by", "", "") + cmd.Flags().StringVar(&status, "status", "", "") + cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body") + cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file") + webhooksCmd.AddCommand(cmd) + } + + { // delete + var webhookId string + cmd := &cobra.Command{ + Use: "delete", + Short: "Delete a Webhook", + Long: "Deletes a webhook, by ID.\n\nSpecify the webhook ID in the `webhookId` parameter in the URI.", + RunE: func(cmd *cobra.Command, args []string) error { + req := client.NewRequest(config.CallingBaseURL, "DELETE", "/webhooks/{webhookId}") + req.PathParam("webhookId", webhookId) + resp, statusCode, err := req.Do() + if err != nil { + return err + } + return output.Print(resp, statusCode) + }, + } + cmd.Flags().StringVar(&webhookId, "webhook-id", "", "The unique identifier for the webhook.") + cmd.MarkFlagRequired("webhook-id") + webhooksCmd.AddCommand(cmd) + } + +} diff --git a/cmd/root.go b/cmd/root.go index 78b4245..68f3782 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -63,18 +63,6 @@ var rootCmd = &cobra.Command{ return err } - // Contact Center data center: --cc-region flag > WEBEX_CC_REGION env > config file. - ccRegion, _ := cmd.Flags().GetString("cc-region") - if ccRegion == "" { - ccRegion = os.Getenv("WEBEX_CC_REGION") - } - if ccRegion == "" { - ccRegion = cfg.CCRegion - } - if err := setCCRegion(ccRegion); err != nil { - return err - } - readOnly := readOnlyMode(cfg) config.SetReadOnly(readOnly) @@ -178,16 +166,6 @@ func setRegion(region string) error { return nil } -// setCCRegion validates a Contact Center data center and selects its hosts. -func setCCRegion(dc string) error { - normalized := strings.ToLower(strings.TrimSpace(dc)) - if normalized != "" && !slices.Contains(config.CCRegions, normalized) { - return fmt.Errorf("unknown Contact Center region %q (valid: %s)", dc, strings.Join(config.CCRegions, ", ")) - } - config.SetCCRegion(normalized) - return nil -} - // RootCommand returns the root cobra command for external introspection. func RootCommand() *cobra.Command { return rootCmd } @@ -241,7 +219,6 @@ func init() { rootCmd.PersistentFlags().String("user", "", "Use a specific authenticated user (email)") rootCmd.PersistentFlags().String("organization", "", "Override organization ID for this command") rootCmd.PersistentFlags().String("region", "", "Data region for region-specific APIs: "+strings.Join(config.Regions, ", ")+" (default us)") - rootCmd.PersistentFlags().String("cc-region", "", "Contact Center data center: "+strings.Join(config.CCRegions, ", ")+" (default us1)") rootCmd.PersistentFlags().Int("max-retry", 3, "Max number of 429 retries before giving up (0 = no retries)") rootCmd.PersistentFlags().Int("max-retry-timer", 60, "Max total seconds to wait across all 429 retries (0 = unlimited)") diff --git a/codegen/README.md b/codegen/README.md index 246bf95..912fbf6 100644 --- a/codegen/README.md +++ b/codegen/README.md @@ -1,10 +1,8 @@ # Code generation -Run `make codegen` from the repository root to extract API specifications, generate the operation table, and refresh skill command references. Run `make refresh` to download collections first. +Run `make codegen` from the repository root to extract API specifications, generate Go commands, and refresh skill command references. Run `make refresh` to download collections first. -`generate_cli.py` writes `pkg/webexops/zz_.go`: one exported `*Operation` per API call, holding its route, parameters, body fields, paging and CLI names. The CLI builds its commands from that table at startup (`internal/apicmd`), and other Go programs call the same operations. The generated files must not be edited by hand. Change `generate_cli.py` for what the table holds, `internal/apicmd` for how operations become commands, or use `custom_*.go` with the generator skip lists for handwritten request implementations. - -`testdata/golden/` at the repository root records every command's flags and help, and the request each API command sends. Run `make golden` after an intended change and review the diff. +Generated files in the six command area packages must not be edited by hand. Change `generate_cli.py` for generation behavior or use `custom_*.go` with the generator skip lists for handwritten request implementations. ## Supplemental collections diff --git a/codegen/generate_cli.py b/codegen/generate_cli.py index fc8fc5c..2a89528 100644 --- a/codegen/generate_cli.py +++ b/codegen/generate_cli.py @@ -1,66 +1,51 @@ #!/usr/bin/env python3 -"""Generate the Webex operation table from api_spec.json. +"""Generate Go CLI command files from api_spec.json. -Writes one Go file per area into pkg/webexops. Each API operation becomes an -exported *Operation holding its route, parameters, body fields and paging, plus -the CLI names it is published under. The CLI builds its commands from this -table at startup (internal/apicmd), and other Go programs call operations -through it. +Reads the enriched API spec and writes one .go file per group +into cmd/calling/ and cmd/cc/ directories. """ import json import os import re import subprocess +import textwrap from naming_overrides import GROUP_ALIASES, GROUP_DESCRIPTIONS SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) CLI_DIR = os.path.dirname(SCRIPT_DIR) # repo root (parent of codegen/) SPEC_PATH = os.path.join(SCRIPT_DIR, "api_spec.json") -OPS_DIR = os.path.join(CLI_DIR, "pkg", "webexops") -GENERATED_HEADER = '// Code generated by codegen/generate_cli.py; DO NOT EDIT.' - -# Collection name → (area, Go name prefix, is_calling, default host). -# is_calling selects start/max paging for --paginate; Contact Center pages by -# page and pageSize. +# Collection name → (subcommand package, parent var, base URL const, is_calling) COLLECTIONS = { - "Webex Cloud Calling": ("calling", "Calling", True, "webex"), - "Webex Contact Center": ("cc", "CC", False, "cc"), - "Webex Admin": ("admin", "Admin", True, "webex"), - "Webex Device": ("device", "Device", True, "webex"), - "Webex Meetings": ("meetings", "Meetings", True, "webex"), - "Webex Messaging": ("messaging", "Messaging", True, "webex"), + "Webex Cloud Calling": ("calling", "cmd.CallingCmd", "config.CallingBaseURL", True), + "Webex Contact Center": ("cc", "cmd.CcCmd", "config.CcBaseURL", False), + "Webex Admin": ("admin", "cmd.AdminCmd", "config.CallingBaseURL", True), + "Webex Device": ("device", "cmd.DeviceCmd", "config.CallingBaseURL", True), + "Webex Meetings": ("meetings", "cmd.MeetingsCmd", "config.CallingBaseURL", True), + "Webex Messaging": ("messaging", "cmd.MessagingCmd", "config.CallingBaseURL", True), } -# Host keys and their Go constants in pkg/webexops. -HOST_CONSTANTS = { - "webex": "HostWebex", - "cc": "HostCC", - "analytics": "HostAnalytics", - "analytics-calling": "HostAnalyticsCalling", - "ai-agent": "HostAIAgent", -} # Endpoints served from a different host than the rest of their collection. # The Postman collections use "{{baseUrl}}" for every request, so the real host # is not in the source data and has to be recorded here. -# Collection name → URL path prefix → host key. +# Collection name → URL path prefix → Go expression for the base URL. BASE_URL_OVERRIDES = { "Webex Cloud Calling": { - "/v1/analytics/": "analytics", + "/v1/analytics/": "config.AnalyticsBaseURL", # Detailed Call History (CDR) — region-specific analytics FQDN. - "/cdr_feed": "analytics-calling", - "/cdr_stream": "analytics-calling", + "/cdr_feed": "config.AnalyticsCallingBaseURL()", + "/cdr_stream": "config.AnalyticsCallingBaseURL()", }, "Webex Admin": { # Analytics reports. These paths already include /v1, so the base URL # deliberately has no version segment. - "/v1/analytics/": "analytics", + "/v1/analytics/": "config.AnalyticsBaseURL", }, "Webex Contact Center": { # AI Agent Studio, from codegen/supplemental. - "/api/": "ai-agent", + "/api/": "config.AiAgentBaseURL", }, } @@ -71,32 +56,60 @@ "Webex Contact Center": ("/api/",), } -# Routes on APIs that Cisco neither documents nor supports. Their CLI commands -# carry a caution in --help and show a one-time notice when run. +# Routes on APIs that Cisco neither documents nor supports. Their commands carry +# PRIVATE_API_NOTE in --help and show aiagent.PrivateAPINotice once when run. # Collection name → URL path prefixes. PRIVATE_API_ROUTES = { "Webex Contact Center": ("/api/",), } +PRIVATE_API_NOTE = ( + "Caution: this command uses Webex AI Agent Studio's private API, which is not " + "documented or supported by Cisco and can change or stop working without notice. " + "Do not build production automation on it." +) + # AI Agent Studio selects the agent of a v1 call by the agent's runtime token. -# Callers name the agent by ID and the token is looked up, so users never pass -# or see it. +# The CLI looks the token up from --agent-id, so users never pass or see it. AGENT_TOKEN_HEADER = 'bot-access-token' -# Path params that are always the same value — fixed instead of a flag. + +def redacts_secrets(collection_name, path): + return any(path.startswith(p) for p in REDACTED_ROUTES.get(collection_name, ())) + + +def is_private_api(collection_name, path): + return any(path.startswith(p) for p in PRIVATE_API_ROUTES.get(collection_name, ())) + + +def uses_agent_token(ep): + return any(h['name'] == AGENT_TOKEN_HEADER for h in ep.get('extra_headers', [])) + + +def resolve_base_url(collection_name, path, default): + """Return the base URL expression for an endpoint (longest prefix wins).""" + overrides = BASE_URL_OVERRIDES.get(collection_name, {}) + match = "" + for prefix in overrides: + if path.startswith(prefix) and len(prefix) > len(match): + match = prefix + return overrides[match] if match else default + + +# Path params that are always the same value — hardcode instead of generating a flag. HARDCODED_PATH_PARAMS = { "projectId": "5e5c9ad6d61f870d6d778c1b", } -# Groups the CLI publishes through handwritten commands (custom_*.go). Their -# operations stay in the table for other callers. +# Groups to skip during codegen — hand-written replacements exist (custom_*.go). SKIP_GROUPS = { "Webex Contact Center": {"search"}, } -# Per-command handwritten replacements, keyed by collection → group → command. -# These require multipart/form-data file uploads that a JSON operation cannot -# send. Each is replaced by a custom_*.go command in the same CLI package. +# Per-command skip list, keyed by collection → group → set of command names. +# These require multipart/form-data file uploads that the generator cannot produce +# (it emits JSON or empty POST/PUT bodies). Each is replaced by a hand-written +# custom_*.go implementation in the same package. SKIP_COMMANDS = { # Same JSON flags, but files may require a multipart upload. # Replaced by: cmd/messaging/custom_messages.go @@ -135,14 +148,6 @@ }, } -# CC API paths where --from/--to expect epoch milliseconds (not ISO 8601). -EPOCH_MS_PATHS = { - "/v1/queues/statistics", - "/v1/agents/statistics", - "/v1/agents/activities", - "/v1/tasks", -} - def camel_to_kebab(name): """Convert camelCase to kebab-case.""" @@ -150,12 +155,17 @@ def camel_to_kebab(name): return s.lower() +def kebab_to_camel(name): + """Convert kebab-case to camelCase.""" + parts = name.split('-') + return parts[0] + ''.join(p.capitalize() for p in parts[1:]) + + def kebab_to_go_var(name): - """The variable a flag's value was held in when commands were generated Go. - Parameters whose names map to the same variable share one flag, and the - table keeps that sharing.""" + """Convert kebab-case to a Go variable name (camelCase, safe).""" parts = name.split('-') var = parts[0] + ''.join(p.capitalize() for p in parts[1:]) + # Avoid Go keywords if var in ('type', 'range', 'map', 'func', 'var', 'return', 'select', 'default', 'switch', 'case', 'break', 'continue', 'interface', 'package', 'import', 'go', 'defer', 'chan', 'struct'): @@ -168,313 +178,484 @@ def kebab_to_pascal(name): return ''.join(p.capitalize() for p in name.split('-')) -def go_string(s): - """A Go interpreted string literal. JSON escaping is valid Go, and keeping - non-ASCII text as UTF-8 avoids surrogate escapes Go rejects.""" - return json.dumps(s, ensure_ascii=False) +def escape_go_string(s): + """Escape a string for use in Go backtick raw string literal.""" + # Backtick strings can't contain backticks — use double-quoted with escaping + if '`' in s: + return json.dumps(s) # JSON double-quoted escaping works for Go + return '`' + s + '`' -def redacts_secrets(collection_name, path): - return any(path.startswith(p) for p in REDACTED_ROUTES.get(collection_name, ())) +def escape_go_double_quoted(s): + """Escape a string for Go double-quoted literal.""" + return json.dumps(s) -def is_private_api(collection_name, path): - return any(path.startswith(p) for p in PRIVATE_API_ROUTES.get(collection_name, ())) +# CC API paths where --from/--to expect epoch milliseconds (not ISO 8601). +EPOCH_MS_PATHS = { + "/v1/queues/statistics", + "/v1/agents/statistics", + "/v1/agents/activities", + "/v1/tasks", +} -def resolve_host(collection_name, path, default): - """Return the host key for an endpoint (longest prefix wins).""" - overrides = BASE_URL_OVERRIDES.get(collection_name, {}) - match = "" - for prefix in overrides: - if path.startswith(prefix) and len(prefix) > len(match): - match = prefix - return overrides[match] if match else default +def generate_group_file(group, endpoints, pkg, parent_var, base_url_const, is_calling, collection_name=""): + """Generate Go source for one group's commands.""" + group_var = kebab_to_camel(group) + "Cmd" + group_pascal = kebab_to_pascal(group) + lines = [] + lines.append('// Code generated by codegen/generate_cli.py; DO NOT EDIT.') + lines.append('') + lines.append(f'package {pkg}') + lines.append('') + lines.append('import (') + lines.append('\t"fmt"') + + # Check if we need strconv + needs_strconv = False + needs_strings = False + needs_timeutil = False + for ep in endpoints: + for f in ep.get('body_fields', []): + if f['type'] in ('int64', 'float64'): + needs_strconv = True + if f['type'] == '[]string': + needs_strings = True + if any(p['name'] == 'from' for p in ep.get('query_params', [])): + needs_timeutil = True + needs_aiagent = any(redacts_secrets(collection_name, ep['path']) or uses_agent_token(ep) + or is_private_api(collection_name, ep['path']) + for ep in endpoints) + + if needs_strconv: + lines.append('\t"strconv"') + if needs_strings: + lines.append('\t"strings"') -def pagination_hints(cmd_name, query_names, is_calling): - """Return how --paginate pages a GET, or None when the endpoint has no - paging parameters and is not a list (a single-object GET would otherwise - print only an array pulled out of it). + lines.append('') + lines.append('\tcmd "github.com/Cloverhound/webex-cli/cmd"') + if needs_aiagent: + lines.append('\t"github.com/Cloverhound/webex-cli/internal/aiagent"') + lines.append('\t"github.com/Cloverhound/webex-cli/internal/client"') + lines.append('\t"github.com/Cloverhound/webex-cli/internal/config"') + lines.append('\t"github.com/Cloverhound/webex-cli/internal/output"') + if needs_timeutil: + lines.append('\t"github.com/Cloverhound/webex-cli/internal/timeutil"') + lines.append('\t"github.com/spf13/cobra"') + lines.append(')') + lines.append('') + + # Silence import warnings - use a reference + lines.append('// Ensure imports are used.') + lines.append('var _ = fmt.Sprintf') + lines.append('var _ = config.Token') + lines.append('var _ = output.Print') + if needs_strconv: + lines.append('var _ = strconv.Itoa') + if needs_strings: + lines.append('var _ = strings.Join') + if needs_timeutil: + lines.append('var _ = timeutil.ParseLastISO') + lines.append('') + + lines.append(f'var {group_var} = &cobra.Command{{') + lines.append(f'\tUse: "{group}",') + aliases = GROUP_ALIASES.get(collection_name, {}).get(group, []) + if aliases: + lines.append('\tAliases: []string{' + ', '.join(escape_go_double_quoted(a) for a in aliases) + '},') + short = GROUP_DESCRIPTIONS.get(collection_name, {}).get(group, f'{group_pascal} commands') + lines.append(f'\tShort: "{short}",') + lines.append(f'}}') + lines.append('') + lines.append('func init() {') + lines.append(f'\t{parent_var}.AddCommand({group_var})') + lines.append('') - The result is a dict: offset is (start, size, first index) or None for the - area default, size_param names Contact Center's page size parameter, and - query holds parameters that must be set while paging.""" + skip_cmds = SKIP_COMMANDS.get(collection_name, {}).get(group, set()) + for ep in endpoints: + if ep['command'] in skip_cmds: + print(f" Skipping command '{ep['command']}' (custom override)") + continue + ep_base_url = resolve_base_url(collection_name, ep['path'], base_url_const) + lines.extend(generate_command(ep, group_var, ep_base_url, is_calling, + redact=redacts_secrets(collection_name, ep['path']), + private=is_private_api(collection_name, ep['path']))) + lines.append('') + + lines.append('}') + + return '\n'.join(lines) + '\n' + + +def pagination_hints(cmd_name, query_names, is_calling): + """Return the Go calls that configure --paginate for a GET, or None when + the endpoint has no paging parameters and is not a list (a single-object + GET would otherwise print only an array pulled out of it).""" is_list = cmd_name == 'list' or cmd_name.startswith('list-') - paging = {'offset': None, 'size_param': '', 'query': {}} if not is_calling: # AI Agent Studio lists page by limit/offset under "objects". if {'limit', 'offset'} <= query_names: - paging['offset'] = ('offset', 'limit', 0) - return paging + return ['req.OffsetPaging("offset", "limit", 0)'] if not is_list and not query_names & {'page', 'pageSize', 'size'}: return None + hints = [] if 'size' in query_names and 'pageSize' not in query_names: - paging['size_param'] = 'size' + hints.append('req.PageSizeParam("size")') # Without it the flow store returns a bare array with no page count. if 'includePagination' in query_names: - paging['query']['includePagination'] = 'true' - return paging + hints.append('req.QueryParam("includePagination", "true")') + return hints if {'start', 'max'} <= query_names: - return paging + return [] if {'offset', 'max'} <= query_names: - paging['offset'] = ('offset', 'max', 0) - elif {'startIndex', 'count'} <= query_names: - paging['offset'] = ('startIndex', 'count', 1) - elif 'max' in query_names: - paging['offset'] = ('', 'max', 0) - elif is_list: - paging['offset'] = ('', '', 0) - else: - return None - return paging - - -def build_operation(ep, collection_name, is_calling, default_host, group): - """Return one endpoint as operation data. - - params lists path, query and header parameters in the order they are set on - a request. Each names the flag that supplies it; a parameter whose name maps - to an already declared flag reads that flag. body_fields name their flags - the same way.""" + return ['req.OffsetPaging("offset", "max", 0)'] + if {'startIndex', 'count'} <= query_names: + return ['req.OffsetPaging("startIndex", "count", 1)'] + if 'max' in query_names: + return ['req.OffsetPaging("", "max", 0)'] + if is_list: + return ['req.OffsetPaging("", "", 0)'] + return None + + +def generate_command(ep, group_var, base_url_expr, is_calling, redact=False, private=False): + """Generate Go source for one command within a group's init().""" + lines = [] + indent = '\t' + + cmd_name = ep['command'] method = ep['method'] path = ep['path'] - path_params = [dict(p) for p in ep.get('path_params', [])] - query_params = [dict(p) for p in ep.get('query_params', [])] - - # Contact Center paths take the org UUID, which the CLI fills into --orgid. - # So do /contacts/organizations/ paths in other collections (Postman: "orgId - # used in path are the org UUIDs"). Query parameters keep their API name. - if not is_calling or '/contacts/organizations/' in path: + path_params = ep.get('path_params', []) + query_params = ep.get('query_params', []) + body_fields = ep.get('body_fields', []) + complex_body = ep.get('complex_body', False) + has_body = ep.get('has_body', False) + description = ep.get('description', '') + if private: + description = f'{description}\n\n{PRIVATE_API_NOTE}' if description else PRIVATE_API_NOTE + extra_headers = ep.get('extra_headers', []) + original_name = ep.get('original_name', cmd_name) + has_from = any(p['name'] == 'from' for p in query_params) + + # Normalize orgId → orgid so auto-populate in root.go resolves to UUID format. + # Applies to CC commands (is_calling=False) and to any endpoint under + # /contacts/organizations/ which explicitly requires UUID despite being in a + # non-CC collection (Postman note: "orgId used in path are the org UUIDs"). + # For path params, rename both the flag and the param key (path uses {orgid}). + # For query params, only rename the flag; keep the original API key (orgId). + needs_uuid_orgid = not is_calling or '/contacts/organizations/' in path + if needs_uuid_orgid: path = path.replace('{orgId}', '{orgid}') for p in path_params: if p['name'] == 'orgId': p['name'] = 'orgid' for p in query_params: if p['name'] == 'orgId': - p['api_name'] = 'orgId' + p['_api_name'] = 'orgId' # preserve original for API call p['name'] = 'orgid' - declared = {} # flag variable → flag name - params = [] + # Block scope + lines.append(f'{indent}{{ // {cmd_name}') + indent2 = indent + '\t' - def declare(name, usage, kind='string'): - var = kebab_to_go_var(camel_to_kebab(name)) - if var in declared: - return declared[var], False - declared[var] = camel_to_kebab(name) - return declared[var], True + # Track declared variable names and flag names to avoid duplicates + declared_vars = set() + declared_flags = set() + + # Declare flag variables + all_flags = [] for p in path_params: if p['name'] in HARDCODED_PATH_PARAMS: - params.append({'name': p['name'], 'in': 'path', 'value': HARDCODED_PATH_PARAMS[p['name']]}) - continue - flag, _ = declare(p['name'], p.get('description', '')) - params.append({'name': p['name'], 'in': 'path', 'flag': flag, - 'usage': p.get('description', '')}) + continue # hardcoded — no flag needed + var = kebab_to_go_var(camel_to_kebab(p['name'])) + flag = camel_to_kebab(p['name']) + if var not in declared_vars: + declared_vars.add(var) + declared_flags.add(flag) + all_flags.append((var, 'string', flag, p.get('description', ''), True, p['name'])) + lines.append(f'{indent2}var {var} string') + for p in query_params: - flag, _ = declare(p['name'], p.get('description', '')) - params.append({'name': p.get('api_name', p['name']), 'in': 'query', 'flag': flag, - 'usage': p.get('description', '')}) - for h in ep.get('extra_headers', []): + var = kebab_to_go_var(camel_to_kebab(p['name'])) + flag = camel_to_kebab(p['name']) + if var not in declared_vars: + declared_vars.add(var) + declared_flags.add(flag) + all_flags.append((var, 'string', flag, p.get('description', ''), False, p['name'])) + lines.append(f'{indent2}var {var} string') + + for h in extra_headers: if h['name'] == AGENT_TOKEN_HEADER: - # Shares the flag of an {agentId} path parameter when there is one. - flag, _ = declare('agentId', h.get('description', '')) - params.append({'name': h['name'], 'in': 'agent-token', 'flag': flag, - 'usage': h.get('description', '')}) + # Shares the variable with an {agentId} path parameter when there is one. + if 'agentId' not in declared_vars: + declared_vars.add('agentId') + declared_flags.add('agent-id') + all_flags.append(('agentId', 'string', 'agent-id', h.get('description', ''), True, 'agentId')) + lines.append(f'{indent2}var agentId string') continue - flag, _ = declare(h['name'], h.get('description', '')) - params.append({'name': h['name'], 'in': 'header', 'flag': flag, - 'usage': h.get('description', '')}) - - body = None - if ep.get('has_body'): - fields = [] - if not ep.get('complex_body'): - for f in ep.get('body_fields', []): - flag, new = declare(f['name'], '') - if not new and f['type'] != 'string': - # A non-string field cannot share a parameter's text flag. - continue - fields.append({'name': f['name'], 'flag': flag, 'type': f['type']}) - body = {'fields': fields} - - query_names = {p['name'] for p in query_params} - has_from = 'from' in query_names - time_range = '' + var = kebab_to_go_var(camel_to_kebab(h['name'])) + flag = camel_to_kebab(h['name']) + if var not in declared_vars: + declared_vars.add(var) + declared_flags.add(flag) + all_flags.append((var, 'header', flag, h.get('description', ''), False, h['name'])) + lines.append(f'{indent2}var {var} string') + + # Body flags — skip fields that duplicate path/query param names + body_flag_vars = [] + if not complex_body: + for f in body_fields: + flag_name = camel_to_kebab(f['name']) + go_type = f['type'] + var = kebab_to_go_var(flag_name) + + if var in declared_vars: + # Body field duplicates a param — use param var for body too, + # but only if it's a string (query/path params are always string) + if go_type == 'string': + body_flag_vars.append((var, go_type, flag_name, f['name'], True)) + continue + + declared_vars.add(var) + declared_flags.add(flag_name) + body_flag_vars.append((var, go_type, flag_name, f['name'], False)) + + if go_type == 'string': + lines.append(f'{indent2}var {var} string') + elif go_type == 'int64': + lines.append(f'{indent2}var {var} int64') + elif go_type == 'float64': + lines.append(f'{indent2}var {var} float64') + elif go_type == 'bool': + lines.append(f'{indent2}var {var} bool') + elif go_type == '[]string': + lines.append(f'{indent2}var {var} []string') + + # --last convenience flag for endpoints with a 'from' query param if has_from: - time_range = 'epoch-ms' if path in EPOCH_MS_PATHS else 'iso' + lines.append(f'{indent2}var last string') - skip_cmds = SKIP_COMMANDS.get(collection_name, {}).get(group, set()) - return { - 'group': group, - 'command': ep['command'], - 'aliases': ep.get('aliases') or [], - 'summary': ep.get('original_name', ep['command']), - 'description': ep.get('description', ''), - 'method': method, - 'path': path, - 'host': resolve_host(collection_name, ep['path'], default_host), - 'params': params, - 'body': body, - 'paging': pagination_hints(ep['command'], query_names, is_calling) if method == 'GET' else None, - 'time_range': time_range, - 'private': is_private_api(collection_name, ep['path']), - 'redact': redacts_secrets(collection_name, ep['path']), - # This endpoint returns a non-JSON deletion acknowledgement. Restricting - # Accept to application/json causes the service to reject it with HTTP 406. - 'accept': '*/*' if method == 'DELETE' and ep['path'] == '/v1/usage-reports/{reportId}' else '', - 'handwritten': ep['command'] in skip_cmds or group in SKIP_GROUPS.get(collection_name, set()), - } - - -def render_operation(var, area, op): - """Go source for one operation variable.""" - lines = [f'var {var} = &Operation{{'] - lines.append(f'\tID: {go_string(var)}, Area: {go_string(area)}, Group: {go_string(op["group"])}, Command: {go_string(op["command"])},') - if op['aliases']: - lines.append('\tAliases: []string{' + ', '.join(go_string(a) for a in op['aliases']) + '},') - lines.append(f'\tSummary: {go_string(op["summary"])},') - if op['description']: - lines.append(f'\tDescription: {go_string(op["description"])},') - lines.append(f'\tMethod: {go_string(op["method"])}, Path: {go_string(op["path"])}, Host: {HOST_CONSTANTS[op["host"]]},') - if op['params']: - lines.append('\tParams: []Param{') - for p in op['params']: - parts = [f'Name: {go_string(p["name"])}', f'In: {IN_CONSTANTS[p["in"]]}'] - if 'value' in p: - parts.append(f'Value: {go_string(p["value"])}') - else: - parts.append(f'Flag: {go_string(p["flag"])}') - if p.get('usage'): - parts.append(f'Usage: {go_string(p["usage"])}') - lines.append('\t\t{' + ', '.join(parts) + '},') - lines.append('\t},') - if op['body'] is not None: - if op['body']['fields']: - lines.append('\tBody: &Body{Fields: []BodyField{') - for f in op['body']['fields']: - lines.append(f'\t\t{{Name: {go_string(f["name"])}, Flag: {go_string(f["flag"])}, Type: {go_string(f["type"])}}},') - lines.append('\t}},') + # --body and --body-file for POST/PUT/PATCH or complex bodies + if has_body: + lines.append(f'{indent2}var bodyRaw string') + lines.append(f'{indent2}var bodyFile string') + + lines.append(f'{indent2}cmd := &cobra.Command{{') + lines.append(f'{indent2}\tUse: {escape_go_double_quoted(cmd_name)},') + if ep.get('aliases'): + lines.append(f'{indent2}\tAliases: []string{{' + ', '.join(escape_go_double_quoted(a) for a in ep['aliases']) + '},') + lines.append(f'{indent2}\tShort: {escape_go_double_quoted(original_name)},') + + if description: + lines.append(f'{indent2}\tLong: {escape_go_string(description)},') + + # RunE + lines.append(f'{indent2}\tRunE: func(cmd *cobra.Command, args []string) error {{') + indent3 = indent2 + '\t\t' + + if private: + lines.append(f'{indent3}aiagent.PrivateAPINotice()') + lines.append(f'{indent3}req := client.NewRequest({base_url_expr}, "{method}", {escape_go_double_quoted(path)})') + + # This endpoint returns a non-JSON deletion acknowledgement. Restricting + # Accept to application/json causes the service to reject it with HTTP 406. + if method == 'DELETE' and path == '/v1/usage-reports/{reportId}': + lines.append(f'{indent3}req.Header("Accept", "*/*")') + + # --last → from/to conversion + if has_from: + parse_func = 'timeutil.ParseLastEpochMs' if path in EPOCH_MS_PATHS else 'timeutil.ParseLastISO' + lines.append(f'{indent3}if last != "" {{') + lines.append(f'{indent3}\tvar err error') + lines.append(f'{indent3}\tfrom, to, err = {parse_func}(last)') + lines.append(f'{indent3}\tif err != nil {{') + lines.append(f'{indent3}\t\treturn err') + lines.append(f'{indent3}\t}}') + lines.append(f'{indent3}}}') + + # Path params + for p in path_params: + if p['name'] in HARDCODED_PATH_PARAMS: + val = HARDCODED_PATH_PARAMS[p['name']] + lines.append(f'{indent3}req.PathParam("{p["name"]}", "{val}")') else: - lines.append('\tBody: &Body{},') - paging = op['paging'] - if paging is not None: - parts = [] - if paging['offset'] is not None: - start, size, first = paging['offset'] - parts.append(f'Offset: &OffsetPaging{{Start: {go_string(start)}, Size: {go_string(size)}, First: {first}}}') - if paging['size_param']: - parts.append(f'SizeParam: {go_string(paging["size_param"])}') - if paging['query']: - parts.append('Query: map[string]string{' + ', '.join( - f'{go_string(k)}: {go_string(v)}' for k, v in sorted(paging['query'].items())) + '}') - lines.append('\tPaging: &Paging{' + ', '.join(parts) + '},') - if op['time_range']: - lines.append(f'\tTimeRange: {TIME_RANGE_CONSTANTS[op["time_range"]]},') - if op['private']: - lines.append('\tPrivate: true,') - if op['redact']: - lines.append('\tRedact: true,') - if op['accept']: - lines.append(f'\tAccept: {go_string(op["accept"])},') - if op['handwritten']: - lines.append('\tHandwritten: true,') - lines.append('}') - return lines + var = kebab_to_go_var(camel_to_kebab(p['name'])) + lines.append(f'{indent3}req.PathParam("{p["name"]}", {var})') + # Query params + for p in query_params: + var = kebab_to_go_var(camel_to_kebab(p['name'])) + api_name = p.get('_api_name', p['name']) + lines.append(f'{indent3}req.QueryParam("{api_name}", {var})') -IN_CONSTANTS = {'path': 'InPath', 'query': 'InQuery', 'header': 'InHeader', 'agent-token': 'InAgentToken'} -TIME_RANGE_CONSTANTS = {'iso': 'TimeISO', 'epoch-ms': 'TimeEpochMs'} - - -def operation_var(prefix, group, command, taken): - """An exported, unique Go name for an operation.""" - name = prefix + kebab_to_pascal(group) + kebab_to_pascal(command) - name = re.sub(r'[^A-Za-z0-9_]', '', name) - base, n = name, 2 - while name in taken: - name = f'{base}Dup{n}' if n > 2 else f'{base}Dup' - n += 1 - taken.add(name) - return name - - -def generate_area_file(collection_name, groups, taken): - """Go source for one area's groups and operations.""" - area, prefix, is_calling, default_host = COLLECTIONS[collection_name] - lines = [GENERATED_HEADER, '', 'package webexops', ''] - group_lines = [f'var {area}Groups = []Group{{'] - op_vars = [] - op_count = 0 - for group_data in groups: - group = group_data['group'] - endpoints = group_data['endpoints'] - if not endpoints: + # Extra headers + for h in extra_headers: + if h['name'] == AGENT_TOKEN_HEADER: + lines.append(f'{indent3}botToken, err := aiagent.BotToken(agentId)') + lines.append(f'{indent3}if err != nil {{') + lines.append(f'{indent3}\treturn err') + lines.append(f'{indent3}}}') + lines.append(f'{indent3}req.Header("{AGENT_TOKEN_HEADER}", botToken)') continue - aliases = GROUP_ALIASES.get(collection_name, {}).get(group, []) - summary = GROUP_DESCRIPTIONS.get(collection_name, {}).get(group, f'{kebab_to_pascal(group)} commands') - parts = [f'Name: {go_string(group)}'] - if aliases: - parts.append('Aliases: []string{' + ', '.join(go_string(a) for a in aliases) + '}') - parts.append(f'Summary: {go_string(summary)}') - if group in SKIP_GROUPS.get(collection_name, set()): - parts.append('Handwritten: true') - group_lines.append('\t{' + ', '.join(parts) + '},') - for ep in endpoints: - op = build_operation(ep, collection_name, is_calling, default_host, group) - var = operation_var(prefix, group, ep['command'], taken) - lines.extend(render_operation(var, area, op)) - lines.append('') - op_vars.append(var) - op_count += 1 - group_lines.append('}') - lines.extend(group_lines) - lines.append('') - lines.append(f'var {area}Operations = []*Operation{{') - for var in op_vars: - lines.append(f'\t{var},') - lines.append('}') - return '\n'.join(lines) + '\n', op_count + var = kebab_to_go_var(camel_to_kebab(h['name'])) + lines.append(f'{indent3}req.Header("{h["name"]}", {var})') + + # Body handling + if has_body: + lines.append(f'{indent3}if bodyFile != "" {{') + lines.append(f'{indent3}\tif err := req.SetBodyFile(bodyFile); err != nil {{') + lines.append(f'{indent3}\t\treturn err') + lines.append(f'{indent3}\t}}') + lines.append(f'{indent3}}} else if bodyRaw != "" {{') + lines.append(f'{indent3}\treq.SetBodyRaw(bodyRaw)') + if not complex_body and body_flag_vars: + lines.append(f'{indent3}}} else {{') + for var, go_type, flag_name, orig_name, *rest in body_flag_vars: + if go_type == 'string': + lines.append(f'{indent3}\treq.BodyString("{orig_name}", {var})') + elif go_type == 'int64': + lines.append(f'{indent3}\treq.BodyInt("{orig_name}", {var}, cmd.Flags().Changed("{flag_name}"))') + elif go_type == 'float64': + lines.append(f'{indent3}\treq.BodyFloat("{orig_name}", {var}, cmd.Flags().Changed("{flag_name}"))') + elif go_type == 'bool': + lines.append(f'{indent3}\treq.BodyBool("{orig_name}", {var}, cmd.Flags().Changed("{flag_name}"))') + elif go_type == '[]string': + lines.append(f'{indent3}\treq.BodyStringSlice("{orig_name}", {var})') + lines.append(f'{indent3}}}') + + # Pagination-aware Do for GET commands + paging_hints = pagination_hints(cmd_name, {p['name'] for p in query_params}, is_calling) if method == 'GET' else None + if paging_hints is not None: + is_calling_go = 'true' if is_calling else 'false' + lines.append(f'{indent3}if config.Paginate() {{') + for hint in paging_hints: + lines.append(f'{indent3}\t{hint}') + lines.append(f'{indent3}\tresp, statusCode, err := req.DoPaginated({is_calling_go})') + lines.append(f'{indent3}\tif err != nil {{') + lines.append(f'{indent3}\t\treturn err') + lines.append(f'{indent3}\t}}') + if redact: + lines.append(f'{indent3}\tresp = aiagent.RedactSecrets(resp)') + lines.append(f'{indent3}\treturn output.Print(resp, statusCode)') + lines.append(f'{indent3}}}') + + lines.append(f'{indent3}resp, statusCode, err := req.Do()') + lines.append(f'{indent3}if err != nil {{') + lines.append(f'{indent3}\treturn err') + lines.append(f'{indent3}}}') + if redact: + lines.append(f'{indent3}resp = aiagent.RedactSecrets(resp)') + lines.append(f'{indent3}return output.Print(resp, statusCode)') + + lines.append(f'{indent2}\t}},') + lines.append(f'{indent2}}}') + + # Register flags + for var, ftype, flag_name, desc, required, orig in all_flags: + desc_escaped = desc.replace('\\', '\\\\').replace('"', '\\"').replace('\n', ' ') + if ftype == 'header': + lines.append(f'{indent2}cmd.Flags().StringVar(&{var}, "{flag_name}", "", "{desc_escaped}")') + else: + lines.append(f'{indent2}cmd.Flags().StringVar(&{var}, "{flag_name}", "", "{desc_escaped}")') + if required: + lines.append(f'{indent2}cmd.MarkFlagRequired("{flag_name}")') + + # Body field flags — skip those that reuse a param/query variable + if not complex_body: + for var, go_type, flag_name, orig_name, *rest in body_flag_vars: + is_reused = rest[0] if rest else False + if is_reused: + continue # already registered as a param/query flag + if go_type == 'string': + lines.append(f'{indent2}cmd.Flags().StringVar(&{var}, "{flag_name}", "", "")') + elif go_type == 'int64': + lines.append(f'{indent2}cmd.Flags().Int64Var(&{var}, "{flag_name}", 0, "")') + elif go_type == 'float64': + lines.append(f'{indent2}cmd.Flags().Float64Var(&{var}, "{flag_name}", 0, "")') + elif go_type == 'bool': + lines.append(f'{indent2}cmd.Flags().BoolVar(&{var}, "{flag_name}", false, "")') + elif go_type == '[]string': + lines.append(f'{indent2}cmd.Flags().StringSliceVar(&{var}, "{flag_name}", nil, "")') + + # --body and --body-file + if has_body: + lines.append(f'{indent2}cmd.Flags().StringVar(&bodyRaw, "body", "", "Raw JSON body")') + lines.append(f'{indent2}cmd.Flags().StringVar(&bodyFile, "body-file", "", "Path to JSON body file")') + + # --last convenience flag + if has_from: + lines.append(f'{indent2}cmd.Flags().StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.")') + lines.append(f'{indent2}{group_var}.AddCommand(cmd)') + lines.append(f'{indent}}}') -def remove_generated_go(directory): - """Delete generated Go files, keeping handwritten ones.""" - if not os.path.isdir(directory): - return - for f in os.listdir(directory): - path = os.path.join(directory, f) - if not f.endswith('.go'): - continue - with open(path) as fh: - first = fh.readline().strip() - if first == GENERATED_HEADER: - os.remove(path) + return lines def main(): with open(SPEC_PATH) as f: spec = json.load(f) - os.makedirs(OPS_DIR, exist_ok=True) - remove_generated_go(OPS_DIR) - taken = set() for collection_name, groups in spec.items(): if collection_name not in COLLECTIONS: print(f"Skipping unknown collection: {collection_name}") continue - area = COLLECTIONS[collection_name][0] - # Area command packages hold only handwritten files. - remove_generated_go(os.path.join(CLI_DIR, "cmd", area)) - source, count = generate_area_file(collection_name, groups, taken) - with open(os.path.join(OPS_DIR, f'zz_{area}.go'), 'w') as f: - f.write(source) - print(f"{collection_name}: {count} operations → pkg/webexops/zz_{area}.go") - - result = subprocess.run(['gofmt', '-w', OPS_DIR], capture_output=True, text=True) - if result.returncode != 0: - print(f"gofmt error: {result.stderr}") - print("\nDone. Run 'go build ./...' to verify.") + + pkg, parent_var, base_url_const, is_calling = COLLECTIONS[collection_name] + out_dir = os.path.join(CLI_DIR, "cmd", pkg) + os.makedirs(out_dir, exist_ok=True) + + # Clean existing generated files (preserve hand-written custom_*.go) + for f in os.listdir(out_dir): + if f.endswith('.go') and not f.startswith('custom_'): + os.remove(os.path.join(out_dir, f)) + + file_count = 0 + cmd_count = 0 + for group_data in groups: + group = group_data['group'] + endpoints = group_data['endpoints'] + if not endpoints: + continue + + skip_set = SKIP_GROUPS.get(collection_name, set()) + if group in skip_set: + print(f" Skipping group '{group}' (hand-written override)") + continue + + source = generate_group_file( + group, endpoints, pkg, parent_var, base_url_const, is_calling, + collection_name=collection_name + ) + + filename = group.replace('-', '_') + '.go' + filepath = os.path.join(out_dir, filename) + with open(filepath, 'w') as f: + f.write(source) + + file_count += 1 + cmd_count += len(endpoints) + + print(f"{collection_name}: generated {file_count} files, {cmd_count} commands → cmd/{pkg}/") + + # Run gofmt + print("\nRunning gofmt...") + for pkg in sorted(set(c[0] for c in COLLECTIONS.values())): + pkg_dir = os.path.join(CLI_DIR, "cmd", pkg) + result = subprocess.run( + ['gofmt', '-w', pkg_dir], + capture_output=True, text=True + ) + if result.returncode != 0: + print(f"gofmt error in {pkg}: {result.stderr}") + else: + print(f" gofmt {pkg}/ OK") + + print("\nDone. Run 'go build ./...' in webex-cli/ to verify.") if __name__ == "__main__": diff --git a/codegen/naming_overrides.py b/codegen/naming_overrides.py index 64c137f..bb84701 100644 --- a/codegen/naming_overrides.py +++ b/codegen/naming_overrides.py @@ -25,15 +25,6 @@ ('call-controls-for-me', 'get', ()), }, 'Webex Contact Center': { - # Older list routes from codegen/supplemental, named by API version. - ('site', 'GET', '/organization/{orgid}/site'): ('site', 'list-v1', ()), - ('users', 'GET', '/organization/{orgid}/user'): ('users', 'list-v1', ()), - ('team', 'GET', '/organization/{orgid}/team'): ('team', 'list-v1', ()), - ('skill', 'GET', '/organization/{orgid}/skill'): ('skill', 'list-v1', ()), - ('entry-point', 'GET', '/organization/{orgid}/entry-point'): ('entry-point', 'list-v1', ()), - ('contact-service-queue', 'GET', '/organization/{orgid}/v2/contact-service-queue'): - ('contact-service-queue', 'list-v2', ()), - ('business-hour', 'GET', '/organization/{orgid}/business-hours'): ('business-hour', 'list-v1', ()), ('flow', 'GET', '/flow-store/{orgId}/project/{projectId}/flows/{flowId}:export'): ('flow', 'export-legacy', ()), ('flow', 'POST', '/flow-store/{orgId}/project/{projectId}/flows:import'): ('flow', 'import-legacy', ()), ('contact-service-queue', 'GET', '/organization/{orgid}/contact-service-queue/by-skill-profile-id/{id}'): diff --git a/codegen/supplemental/Contact Center lists.postman_collection.json b/codegen/supplemental/Contact Center lists.postman_collection.json deleted file mode 100644 index 37f7292..0000000 --- a/codegen/supplemental/Contact Center lists.postman_collection.json +++ /dev/null @@ -1,163 +0,0 @@ -{ - "info": { - "name": "Webex Contact Center", - "description": "Hand-maintained. Contact Center list routes that Webex still serves but Cisco's Postman collection replaced with newer versions. Webex Admin Studio reads these; see codegen/supplemental/README.md.", - "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" - }, - "item": [ - { - "name": "Site", - "item": [ - { - "name": "List Site(s) (v1)", - "request": { - "method": "GET", - "description": "Lists sites with every field, through the v1 route. Each item carries lastUpdatedTime.", - "url": { - "raw": "{{baseUrl}}/organization/:orgid/site?page=0&pageSize=100", - "host": ["{{baseUrl}}"], - "path": ["organization", ":orgid", "site"], - "query": [ - {"key": "page", "value": "0", "description": "Page number, from 0."}, - {"key": "pageSize", "value": "100", "description": "Items per page."} - ], - "variable": [{"key": "orgid", "description": "Organization ID."}] - } - } - } - ] - }, - { - "name": "Users", - "item": [ - { - "name": "List Users (v1)", - "request": { - "method": "GET", - "description": "Lists Contact Center users through the v1 route. Each item carries lastUpdatedTime.", - "url": { - "raw": "{{baseUrl}}/organization/:orgid/user?page=0&pageSize=100", - "host": ["{{baseUrl}}"], - "path": ["organization", ":orgid", "user"], - "query": [ - {"key": "page", "value": "0", "description": "Page number, from 0."}, - {"key": "pageSize", "value": "100", "description": "Items per page."} - ], - "variable": [{"key": "orgid", "description": "Organization ID."}] - } - } - } - ] - }, - { - "name": "Team", - "item": [ - { - "name": "List Teams (v1)", - "request": { - "method": "GET", - "description": "Lists teams with every field, through the v1 route. Each item carries lastUpdatedTime.", - "url": { - "raw": "{{baseUrl}}/organization/:orgid/team?page=0&pageSize=100", - "host": ["{{baseUrl}}"], - "path": ["organization", ":orgid", "team"], - "query": [ - {"key": "page", "value": "0", "description": "Page number, from 0."}, - {"key": "pageSize", "value": "100", "description": "Items per page."} - ], - "variable": [{"key": "orgid", "description": "Organization ID."}] - } - } - } - ] - }, - { - "name": "Skill", - "item": [ - { - "name": "List Skills (v1)", - "request": { - "method": "GET", - "description": "Lists skills with every field, through the v1 route. Each item carries lastUpdatedTime.", - "url": { - "raw": "{{baseUrl}}/organization/:orgid/skill?page=0&pageSize=100", - "host": ["{{baseUrl}}"], - "path": ["organization", ":orgid", "skill"], - "query": [ - {"key": "page", "value": "0", "description": "Page number, from 0."}, - {"key": "pageSize", "value": "100", "description": "Items per page."} - ], - "variable": [{"key": "orgid", "description": "Organization ID."}] - } - } - } - ] - }, - { - "name": "Entry Point", - "item": [ - { - "name": "List Entry Point(s) (v1)", - "request": { - "method": "GET", - "description": "Lists entry points with every field, through the v1 route. Each item carries lastUpdatedTime.", - "url": { - "raw": "{{baseUrl}}/organization/:orgid/entry-point?page=0&pageSize=100", - "host": ["{{baseUrl}}"], - "path": ["organization", ":orgid", "entry-point"], - "query": [ - {"key": "page", "value": "0", "description": "Page number, from 0."}, - {"key": "pageSize", "value": "100", "description": "Items per page."} - ], - "variable": [{"key": "orgid", "description": "Organization ID."}] - } - } - } - ] - }, - { - "name": "Contact Service Queue", - "item": [ - { - "name": "List Contact Service Queues (v2)", - "request": { - "method": "GET", - "description": "Lists queues through the v2 route. Items leave out call distribution groups, so read each queue for them. Each item carries lastUpdatedTime.", - "url": { - "raw": "{{baseUrl}}/organization/:orgid/v2/contact-service-queue?page=0&pageSize=100", - "host": ["{{baseUrl}}"], - "path": ["organization", ":orgid", "v2", "contact-service-queue"], - "query": [ - {"key": "page", "value": "0", "description": "Page number, from 0."}, - {"key": "pageSize", "value": "100", "description": "Items per page."} - ], - "variable": [{"key": "orgid", "description": "Organization ID."}] - } - } - } - ] - }, - { - "name": "Business Hour", - "item": [ - { - "name": "List Business Hours (v1)", - "request": { - "method": "GET", - "description": "Lists business hours through the v1 route. Items leave out working hours, so read each one for them. Each item carries lastUpdatedTime.", - "url": { - "raw": "{{baseUrl}}/organization/:orgid/business-hours?page=0&pageSize=100", - "host": ["{{baseUrl}}"], - "path": ["organization", ":orgid", "business-hours"], - "query": [ - {"key": "page", "value": "0", "description": "Page number, from 0."}, - {"key": "pageSize", "value": "100", "description": "Items per page."} - ], - "variable": [{"key": "orgid", "description": "Organization ID."}] - } - } - } - ] - } - ] -} diff --git a/codegen/supplemental/README.md b/codegen/supplemental/README.md index 1076869..8b8f13c 100644 --- a/codegen/supplemental/README.md +++ b/codegen/supplemental/README.md @@ -13,15 +13,6 @@ When a downloaded collection documents the same method and route, the downloaded definition wins and extraction prints the route to remove from here. Routes here keep their trailing slash, which the APIs below require. -## Contact Center lists - -`Contact Center lists.postman_collection.json` holds older Contact Center list -routes that Webex still serves but Cisco's collection replaced with newer -versions. They join their resource's group as `list-v1` (`list-v2` for queues; -see `naming_overrides.py`). The SDK catalog (`pkg/catalog`) reads through them, -because their items carry `lastUpdatedTime` and, for most types, every field. -Each was read on a live organization before it was added. - ## AI Agent Studio `AI Agent Studio.postman_collection.json` holds the private AI Agent Studio @@ -32,12 +23,11 @@ that work with a Webex OAuth token; routes that need Studio's own browser login belong elsewhere. - Cisco does not document or support these routes. `generate_cli.py` lists - them in `PRIVATE_API_ROUTES`, which marks their operations `Private`: every - command carries that caution in `--help` and prints it once per user when - first run. A route added here gets both automatically. -- `generate_cli.py` puts routes under `/api/` on the AI Agent Studio host of - the selected Contact Center data center and marks them `Redact`, so responses - pass through `pkg/aiagent.RedactSecrets`. + them in `PRIVATE_API_ROUTES`, so every command they generate carries that + caution in `--help` and prints it once per user when first run + (`aiagent.PrivateAPINotice`). A route added here gets both automatically. +- `generate_cli.py` sends routes under `/api/` to `config.AiAgentBaseURL` and + passes their responses through `aiagent.RedactSecrets`. - A request header named `bot-access-token` becomes a required `--agent-id` - flag; the agent's runtime token is looked up with `pkg/aiagent.BotToken`. + flag; the command looks up the agent's runtime token with `aiagent.BotToken`. - `limit`/`offset` query parameters make `--paginate` page by offset. diff --git a/codegen/test_generate_cli.py b/codegen/test_generate_cli.py index 12fb224..328f117 100644 --- a/codegen/test_generate_cli.py +++ b/codegen/test_generate_cli.py @@ -1,172 +1,167 @@ -"""Regression checks for the operation table the CLI is built from.""" +"""Regression checks for service-specific request generation.""" import unittest -from generate_cli import build_operation, generate_area_file, render_operation - - -def operation(ep, collection='Webex Contact Center', is_calling=False, host='cc', group='example'): - ep = {'command': 'example', 'method': 'GET', 'path': '/things', **ep} - return build_operation(ep, collection, is_calling, host, group) +from generate_cli import generate_command, generate_group_file class MessagingAttachmentsTest(unittest.TestCase): def test_create_uses_handwritten_override_but_other_messages_are_generated(self): - create = operation({'command': 'create', 'method': 'POST', 'path': '/messages'}, - 'Webex Messaging', True, 'webex', 'messages') - get = operation({'command': 'get', 'path': '/messages/{messageId}'}, - 'Webex Messaging', True, 'webex', 'messages') - self.assertTrue(create['handwritten']) - self.assertFalse(get['handwritten']) + endpoints = [ + {'command': 'create', 'method': 'POST', 'path': '/messages'}, + {'command': 'get', 'method': 'GET', 'path': '/messages/{messageId}'}, + ] + code = generate_group_file('messages', endpoints, 'messaging', + 'cmd.MessagingCmd', 'config.CallingBaseURL', + False, 'Webex Messaging') + self.assertNotIn('{ // create', code) + self.assertIn('{ // get', code) class GroupDescriptionTest(unittest.TestCase): - def area(self, group): - source, _ = generate_area_file('Webex Contact Center', - [{'group': group, 'endpoints': [{'command': 'list', 'method': 'GET', 'path': '/x'}]}], - set()) - return source - def test_described_group_uses_its_description(self): - source = self.area('call-monitor') - self.assertIn('Summary: "Live call monitoring sessions: start, barge in, coach, hold, and end"', source) - self.assertIn('Aliases: []string{"call-monitoring"}', source) + code = generate_group_file('call-monitor', [], 'cc', 'cmd.CcCmd', + 'config.CcBaseURL', False, 'Webex Contact Center') + self.assertIn('Short: "Live call monitoring sessions: start, barge in, coach, hold, and end",', code) + self.assertIn('Aliases: []string{"call-monitoring"},', code) def test_other_groups_keep_the_generated_description(self): - self.assertIn('Summary: "Site commands"', self.area('site')) - - def test_search_is_published_by_handwritten_commands(self): - self.assertIn('Name: "search", Summary: "Search commands", Handwritten: true', self.area('search')) + code = generate_group_file('site', [], 'cc', 'cmd.CcCmd', + 'config.CcBaseURL', False, 'Webex Contact Center') + self.assertIn('Short: "Site commands",', code) class UsageReportNegotiationTest(unittest.TestCase): def test_only_report_delete_accepts_non_json_acknowledgement(self): for method, path, expected in [ - ('DELETE', '/v1/usage-reports/{reportId}', '*/*'), - ('GET', '/v1/usage-reports/{reportId}', ''), - ('DELETE', '/v1/tasks/{taskId}', ''), + ('DELETE', '/v1/usage-reports/{reportId}', True), + ('GET', '/v1/usage-reports/{reportId}', False), + ('DELETE', '/v1/tasks/{taskId}', False), ]: with self.subTest(method=method, path=path): - self.assertEqual(operation({'method': method, 'path': path})['accept'], expected) + endpoint = {'command': 'example', 'method': method, 'path': path} + code = '\n'.join(generate_command(endpoint, 'exampleCmd', 'config.CcBaseURL', False)) + self.assertEqual('req.Header("Accept", "*/*")' in code, expected) class ContactCenterPaginationTest(unittest.TestCase): - def paging(self, query_params, is_calling=False): - return operation({'command': 'list', 'query_params': [{'name': n} for n in query_params]}, - is_calling=is_calling)['paging'] + def paginated_block(self, query_params, is_calling=False): + endpoint = { + 'command': 'list', 'method': 'GET', 'path': '/things', + 'query_params': [{'name': n} for n in query_params], + } + code = '\n'.join(generate_command(endpoint, 'exampleCmd', 'config.CcBaseURL', is_calling)) + return code[code.index('if config.Paginate()'):code.index('req.DoPaginated')] def test_size_endpoint_names_its_page_size_param(self): - paging = self.paging(['page', 'size']) - self.assertEqual(paging['size_param'], 'size') - self.assertEqual(paging['query'], {}) + block = self.paginated_block(['page', 'size']) + self.assertIn('req.PageSizeParam("size")', block) + self.assertNotIn('includePagination', block) def test_include_pagination_is_forced_on(self): - self.assertEqual(self.paging(['page', 'size', 'includePagination'])['query'], {'includePagination': 'true'}) + block = self.paginated_block(['page', 'size', 'includePagination']) + self.assertIn('req.QueryParam("includePagination", "true")', block) def test_page_size_endpoint_keeps_default(self): - self.assertEqual(self.paging(['page', 'pageSize'])['size_param'], '') + block = self.paginated_block(['page', 'pageSize']) + self.assertNotIn('PageSizeParam', block) def test_calling_endpoint_skips_cc_hints(self): - paging = self.paging(['max', 'start', 'size', 'includePagination'], is_calling=True) - self.assertEqual((paging['size_param'], paging['query'], paging['offset']), ('', {}, None)) + block = self.paginated_block(['max', 'start', 'size', 'includePagination'], is_calling=True) + self.assertNotIn('PageSizeParam', block) + self.assertNotIn('includePagination', block) class OffsetPaginationTest(unittest.TestCase): - def paging(self, command, query_params, is_calling=True): - return operation({'command': command, 'query_params': [{'name': n} for n in query_params]}, - 'Webex Cloud Calling', is_calling, 'webex')['paging'] + def generate(self, command, query_params, is_calling=True): + endpoint = { + 'command': command, 'method': 'GET', 'path': '/things', + 'query_params': [{'name': n} for n in query_params], + } + return '\n'.join(generate_command(endpoint, 'exampleCmd', 'config.CallingBaseURL', is_calling)) + + def paging_call(self, command, query_params): + code = self.generate(command, query_params) + block = code[code.index('if config.Paginate()'):code.index('req.DoPaginated')] + calls = [l.strip() for l in block.splitlines() if 'OffsetPaging' in l] + return calls[0] if calls else None def test_start_and_max_use_the_default(self): - self.assertIsNone(self.paging('list', ['start', 'max'])['offset']) + self.assertIsNone(self.paging_call('list', ['start', 'max'])) def test_max_only_follows_links(self): - self.assertEqual(self.paging('list', ['max'])['offset'], ('', 'max', 0)) + self.assertEqual(self.paging_call('list', ['max']), 'req.OffsetPaging("", "max", 0)') def test_offset_and_max(self): - self.assertEqual(self.paging('list-events', ['offset', 'max'])['offset'], ('offset', 'max', 0)) + self.assertEqual(self.paging_call('list-events', ['offset', 'max']), 'req.OffsetPaging("offset", "max", 0)') def test_scim_start_index_and_count(self): - self.assertEqual(self.paging('search', ['startIndex', 'count'])['offset'], ('startIndex', 'count', 1)) + self.assertEqual(self.paging_call('search', ['startIndex', 'count']), 'req.OffsetPaging("startIndex", "count", 1)') def test_list_without_params_follows_links(self): - self.assertEqual(self.paging('list', [])['offset'], ('', '', 0)) + self.assertEqual(self.paging_call('list', []), 'req.OffsetPaging("", "", 0)') def test_get_without_paging_params_is_not_paginated(self): for is_calling in (True, False): with self.subTest(is_calling=is_calling): - self.assertIsNone(self.paging('get', ['id'], is_calling)) + self.assertNotIn('DoPaginated', self.generate('get', ['id'], is_calling)) def test_cc_get_with_page_params_is_paginated(self): - self.assertIsNotNone(self.paging('get', ['pageSize'], is_calling=False)) + self.assertIn('DoPaginated', self.generate('get', ['pageSize'], is_calling=False)) def test_cc_limit_and_offset_page_by_offset(self): - self.assertEqual(self.paging('list', ['limit', 'offset'], is_calling=False)['offset'], ('offset', 'limit', 0)) - - def test_writes_do_not_page(self): - op = operation({'command': 'list', 'method': 'POST', 'query_params': [{'name': 'max'}]}, - 'Webex Cloud Calling', True, 'webex') - self.assertIsNone(op['paging']) - - -class FlagSharingTest(unittest.TestCase): - def test_contact_center_org_id_becomes_orgid_but_query_keeps_its_api_name(self): - op = operation({'path': '/organization/{orgId}/team', 'path_params': [{'name': 'orgId'}], - 'query_params': [{'name': 'orgId'}]}) - self.assertEqual(op['path'], '/organization/{orgid}/team') - self.assertEqual([(p['name'], p['in'], p['flag']) for p in op['params']], - [('orgid', 'path', 'orgid'), ('orgId', 'query', 'orgid')]) - - def test_project_id_is_fixed(self): - op = operation({'path': '/{orgId}/project/{projectId}/flows', - 'path_params': [{'name': 'orgId'}, {'name': 'projectId'}]}) - self.assertEqual(op['params'][1], {'name': 'projectId', 'in': 'path', 'value': '5e5c9ad6d61f870d6d778c1b'}) - - def test_string_body_field_shares_a_parameter_flag_and_other_types_are_dropped(self): - op = operation({'method': 'PUT', 'has_body': True, - 'path_params': [{'name': 'id'}], 'query_params': [{'name': 'enabled'}], - 'body_fields': [{'name': 'id', 'type': 'string'}, {'name': 'enabled', 'type': 'bool'}, - {'name': 'maxRings', 'type': 'int64'}]}) - self.assertEqual(op['body']['fields'], [{'name': 'id', 'flag': 'id', 'type': 'string'}, - {'name': 'maxRings', 'flag': 'max-rings', 'type': 'int64'}]) - - def test_go_keyword_names_share_one_flag(self): - op = operation({'query_params': [{'name': 'type'}, {'name': 'typeVal'}]}) - self.assertEqual([p['flag'] for p in op['params']], ['type', 'type']) - - def test_from_selects_the_time_format(self): - self.assertEqual(operation({'path': '/v1/tasks', 'query_params': [{'name': 'from'}]})['time_range'], 'epoch-ms') - self.assertEqual(operation({'path': '/v1/other', 'query_params': [{'name': 'from'}]})['time_range'], 'iso') + code = self.generate('list', ['limit', 'offset'], is_calling=False) + block = code[code.index('if config.Paginate()'):code.index('req.DoPaginated')] + self.assertIn('req.OffsetPaging("offset", "limit", 0)', block) class AiAgentStudioTest(unittest.TestCase): """AI Agent Studio routes come from codegen/supplemental and live on their own host.""" + def group(self, endpoints): + return generate_group_file('ai-agent', endpoints, 'cc', 'cmd.CcCmd', + 'config.CcBaseURL', False, 'Webex Contact Center') + def test_studio_routes_use_the_studio_host_and_redact_secrets(self): - op = operation({'path': '/api/v2/organizations/{orgId}/agents/', 'path_params': [{'name': 'orgId'}]}) - self.assertEqual((op['host'], op['path'], op['redact'], op['private']), - ('ai-agent', '/api/v2/organizations/{orgid}/agents/', True, True)) + code = self.group([{'command': 'list', 'method': 'GET', 'path': '/api/v2/organizations/{orgId}/agents/', + 'path_params': [{'name': 'orgId'}]}]) + self.assertIn('client.NewRequest(config.AiAgentBaseURL, "GET", "/api/v2/organizations/{orgid}/agents/")', code) + self.assertIn('"github.com/Cloverhound/webex-cli/internal/aiagent"', code) + self.assertEqual(code.count('resp = aiagent.RedactSecrets(resp)'), 2) def test_other_cc_routes_are_unchanged(self): - op = operation({'path': '/organization/{orgId}/v2/site', 'path_params': [{'name': 'orgId'}]}) - self.assertEqual((op['host'], op['redact'], op['private']), ('cc', False, False)) + code = self.group([{'command': 'list', 'method': 'GET', 'path': '/organization/{orgId}/v2/site', + 'path_params': [{'name': 'orgId'}], + 'description': 'Lists sites.'}]) + self.assertIn('client.NewRequest(config.CcBaseURL,', code) + self.assertNotIn('aiagent', code) + self.assertNotIn('supported by Cisco', code) + + def test_private_routes_warn_in_help_and_when_run(self): + code = self.group([{'command': 'export', 'method': 'GET', 'path': '/api/v1/llmagent/export/', + 'description': 'Exports the agent.'}]) + long_help = code[code.index('Long:'):code.index('RunE:')] + self.assertIn('Exports the agent.', long_help) + self.assertIn('not documented or supported by Cisco', long_help) + run = code[code.index('RunE:'):] + self.assertEqual(run.splitlines()[1].strip(), 'aiagent.PrivateAPINotice()') + + def test_private_route_without_description_still_warns(self): + code = self.group([{'command': 'export', 'method': 'GET', 'path': '/api/v1/llmagent/export/'}]) + self.assertIn('not documented or supported by Cisco', code) def test_agent_token_header_is_resolved_from_agent_id(self): - op = operation({'path': '/api/v1/llmagent/export/', - 'extra_headers': [{'name': 'bot-access-token', 'description': 'AI agent ID.'}]}) - self.assertEqual(op['params'], [{'name': 'bot-access-token', 'in': 'agent-token', 'flag': 'agent-id', - 'usage': 'AI agent ID.'}]) + code = self.group([{'command': 'export', 'method': 'GET', 'path': '/api/v1/llmagent/export/', + 'extra_headers': [{'name': 'bot-access-token', 'description': 'AI agent ID.'}]}]) + self.assertIn('cmd.Flags().StringVar(&agentId, "agent-id", "", "AI agent ID.")', code) + self.assertIn('cmd.MarkFlagRequired("agent-id")', code) + self.assertIn('botToken, err := aiagent.BotToken(agentId)', code) + self.assertIn('req.Header("bot-access-token", botToken)', code) + self.assertNotIn('"bot-access-token", "",', code) def test_agent_token_header_shares_the_agent_id_path_flag(self): - op = operation({'path': '/api/v1/bot/{agentId}/', 'path_params': [{'name': 'agentId'}], - 'extra_headers': [{'name': 'bot-access-token'}]}) - self.assertEqual([p['flag'] for p in op['params']], ['agent-id', 'agent-id']) - - -class RenderTest(unittest.TestCase): - def test_text_with_backticks_and_non_ascii_is_a_valid_go_string(self): - op = operation({'description': 'Use `x` — ✓ "quoted"\nnext'}) - lines = '\n'.join(render_operation('CCExample', 'cc', op)) - self.assertIn('Description: "Use `x` — ✓ \\"quoted\\"\\nnext",', lines) - - -if __name__ == '__main__': - unittest.main() + code = self.group([{'command': 'get', 'method': 'GET', 'path': '/api/v1/bot/{agentId}/', + 'path_params': [{'name': 'agentId', 'description': 'AI agent ID.'}], + 'extra_headers': [{'name': 'bot-access-token', 'description': 'AI agent ID.'}]}]) + self.assertEqual(code.count('"agent-id", "",'), 1) + self.assertIn('req.PathParam("agentId", agentId)', code) + self.assertIn('aiagent.BotToken(agentId)', code) diff --git a/codegen/test_naming_overrides.py b/codegen/test_naming_overrides.py index 20da49a..e07958d 100644 --- a/codegen/test_naming_overrides.py +++ b/codegen/test_naming_overrides.py @@ -4,16 +4,17 @@ import json from pathlib import Path -from extract_api_spec import load_collections, merge_folders, apply_naming_overrides +from extract_api_spec import extract_collection, merge_folders, apply_naming_overrides from naming_overrides import NAMING_OVERRIDES, RELEASED_ID_ALIASES class NamingOverridesTest(unittest.TestCase): @classmethod def setUpClass(cls): - here = Path(__file__).parent - cls.raw = {name: merge_folders(folders) - for name, folders in load_collections(here / 'postman', here / 'supplemental').items()} + cls.raw = {} + for path in (Path(__file__).parent / 'postman').glob('*.json'): + name, folders = extract_collection(path) + cls.raw[name] = merge_folders(folders) def resolved(self, area): return apply_naming_overrides(area, self.raw[area]) @@ -156,13 +157,14 @@ def test_new_scoped_call_controls(self): self.assertIn('/members/me/', ep['path']) def test_metrics_move_preserves_analytics_host(self): - from generate_cli import resolve_host + from generate_cli import resolve_base_url spec = json.loads((Path(__file__).parent / 'api_spec.json').read_text()) self.assertFalse(any(g['group'] in ('metrics', 'calling-metrics') for g in spec['Webex Admin'])) group = next(g for g in spec['Webex Cloud Calling'] if g['group'] == 'metrics') ep = group['endpoints'][0] self.assertEqual(ep['command'], 'get-call-quality-stats') - self.assertEqual(resolve_host('Webex Cloud Calling', ep['path'], 'wrong-host'), 'analytics') + self.assertEqual(resolve_base_url('Webex Cloud Calling', ep['path'], 'wrong-host'), + 'config.AnalyticsBaseURL') def test_queue_names_keep_selection_method_without_parameter_suffixes(self): for name in ['list-agent-based', 'list-skill-based', 'list-team-based', diff --git a/internal/aiagent/aiagent.go b/internal/aiagent/aiagent.go index 483b04a..e1bdb02 100644 --- a/internal/aiagent/aiagent.go +++ b/internal/aiagent/aiagent.go @@ -1,22 +1,58 @@ -// Package aiagent connects the CLI's AI Agent Studio commands to pkg/aiagent, with -// this run's login, org and hosts, and shows the private-API notice. +// Package aiagent supports the Contact Center commands for Webex AI Agent +// Studio, whose private API is described in codegen/supplemental. package aiagent import ( - "context" + "encoding/json" + "fmt" + "regexp" "github.com/Cloverhound/webex-cli/internal/client" "github.com/Cloverhound/webex-cli/internal/config" - sdk "github.com/Cloverhound/webex-cli/pkg/aiagent" ) -// BotToken returns the runtime token of an AI agent in the current organization. +// baseURL is a variable so tests can point it at a fake Studio. +var baseURL = config.AiAgentBaseURL + +// BotToken returns the runtime token of an AI agent in the current +// organization. Studio's v1 API selects the agent of a call by this token, and +// the v2 agent list is the only place a regular Webex login can read it. func BotToken(agentID string) (string, error) { - return sdk.BotToken(context.Background(), client.SDK(), config.Hosts(), config.OrgID(), agentID) + orgID := config.OrgID() + if orgID == "" { + return "", fmt.Errorf("no organization: log in or pass --organization") + } + req := client.NewRequest(baseURL, "GET", "/api/v2/organizations/{orgid}/agents/") + req.PathParam("orgid", orgID) + req.OffsetPaging("offset", "limit", 0) + body, _, err := req.DoPaginated(false) + if err != nil { + return "", fmt.Errorf("looking up AI agent %s: %w", agentID, err) + } + var agents []struct { + ID string `json:"id"` + Token string `json:"bot_access_token"` + } + if err := json.Unmarshal(body, &agents); err != nil { + return "", fmt.Errorf("reading the AI agent list: %w", err) + } + for _, a := range agents { + if a.ID != agentID { + continue + } + if a.Token == "" { + return "", fmt.Errorf("AI agent %s has no runtime token", agentID) + } + return a.Token, nil + } + return "", fmt.Errorf("AI agent %s not found in organization %s", agentID, orgID) } -// RedactSecrets replaces Studio credentials in a JSON response. -func RedactSecrets(body []byte) []byte { return sdk.RedactSecrets(body) } +// secretField matches a JSON string value of a Studio credential field. +var secretField = regexp.MustCompile(`("(?:bot_access_token|auth_token|user_access_token|ci_access_token)"\s*:\s*)"(?:[^"\\]|\\.)*"`) -// RedactError replaces Studio credentials in the response an API error repeats. -func RedactError(err error) error { return sdk.RedactError(err) } +// RedactSecrets replaces Studio credentials in a JSON response, keeping the +// rest of the document byte for byte. +func RedactSecrets(body []byte) []byte { + return secretField.ReplaceAll(body, []byte(`$1""`)) +} diff --git a/internal/aiagent/aiagent_test.go b/internal/aiagent/aiagent_test.go new file mode 100644 index 0000000..09dbccb --- /dev/null +++ b/internal/aiagent/aiagent_test.go @@ -0,0 +1,61 @@ +package aiagent + +import ( + "encoding/json" + "net/http" + "net/http/httptest" + "strings" + "testing" + + "github.com/Cloverhound/webex-cli/internal/config" +) + +func studio(t *testing.T) *httptest.Server { + t.Helper() + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if r.URL.Path != "/api/v2/organizations/org-1/agents/" { + http.NotFound(w, r) + return + } + json.NewEncoder(w).Encode(map[string]any{ + "meta": map[string]any{"total_count": 2}, + "objects": []map[string]string{ + {"id": "a1", "name": "One", "bot_access_token": "token-1"}, + {"id": "a2", "name": "Two"}, + }, + }) + })) + t.Cleanup(srv.Close) + baseURL = srv.URL + t.Cleanup(func() { baseURL = config.AiAgentBaseURL }) + config.SetOrgID("org-1") + t.Cleanup(func() { config.SetOrgID("") }) + return srv +} + +func TestBotTokenFindsTheAgent(t *testing.T) { + studio(t) + got, err := BotToken("a1") + if err != nil || got != "token-1" { + t.Fatalf("BotToken = %q, %v", got, err) + } +} + +func TestBotTokenNamesAMissingAgent(t *testing.T) { + studio(t) + if _, err := BotToken("zz"); err == nil || !strings.Contains(err.Error(), "zz") { + t.Fatalf("err = %v", err) + } + if _, err := BotToken("a2"); err == nil { + t.Fatal("an agent without a token was accepted") + } +} + +func TestRedactSecretsKeepsTheRest(t *testing.T) { + in := `{"objects":[{"id":"a1","bot_access_token":"tok\"en","meta":{"auth_token":"x"}}],"user_access_token":null}` + got := string(RedactSecrets([]byte(in))) + want := `{"objects":[{"id":"a1","bot_access_token":"","meta":{"auth_token":""}}],"user_access_token":null}` + if got != want { + t.Fatalf("got %s\nwant %s", got, want) + } +} diff --git a/internal/apicmd/apicmd.go b/internal/apicmd/apicmd.go deleted file mode 100644 index 0792564..0000000 --- a/internal/apicmd/apicmd.go +++ /dev/null @@ -1,243 +0,0 @@ -// Package apicmd builds the CLI's API commands from the operation table in -// pkg/webexops. Each operation becomes `webex `, with a -// flag per parameter and body field. -package apicmd - -import ( - "strings" - - "github.com/Cloverhound/webex-cli/internal/aiagent" - "github.com/Cloverhound/webex-cli/internal/client" - "github.com/Cloverhound/webex-cli/internal/config" - "github.com/Cloverhound/webex-cli/internal/output" - "github.com/Cloverhound/webex-cli/internal/timeutil" - "github.com/Cloverhound/webex-cli/pkg/webexops" - "github.com/spf13/cobra" -) - -// PrivateAPINote ends the help of commands on an API Cisco does not support. -const PrivateAPINote = "Caution: this command uses Webex AI Agent Studio's private API, which is not " + - "documented or supported by Cisco and can change or stop working without notice. " + - "Do not build production automation on it." - -// Register adds an area's groups and commands under parent and returns the group -// commands by name, for handwritten commands to join. -func Register(parent *cobra.Command, area string) map[string]*cobra.Command { - groups := map[string]*cobra.Command{} - for _, g := range webexops.Groups(area) { - if g.Handwritten { - continue - } - gc := &cobra.Command{Use: g.Name, Aliases: g.Aliases, Short: g.Summary} - parent.AddCommand(gc) - groups[g.Name] = gc - } - for _, op := range webexops.Operations(area) { - if op.Handwritten { - continue - } - groups[op.Group].AddCommand(NewCommand(op)) - } - return groups -} - -// BaseURL is the base URL of an operation's host for this run. -func BaseURL(h webexops.Host) string { return h.URL(config.Hosts()) } - -// flagValues holds a command's flag values by flag name. -type flagValues struct { - strings map[string]*string - ints map[string]*int64 - floats map[string]*float64 - bools map[string]*bool - slices map[string]*[]string -} - -func (v *flagValues) text(flag string) string { - if p := v.strings[flag]; p != nil { - return *p - } - return "" -} - -// NewCommand builds the command for one operation. -func NewCommand(op *webexops.Operation) *cobra.Command { - values := &flagValues{ - strings: map[string]*string{}, ints: map[string]*int64{}, floats: map[string]*float64{}, - bools: map[string]*bool{}, slices: map[string]*[]string{}, - } - var last, bodyRaw, bodyFile string - - description := op.Description - if op.Private { - if description != "" { - description += "\n\n" + PrivateAPINote - } else { - description = PrivateAPINote - } - } - isCalling := op.Area != "cc" - - c := &cobra.Command{ - Use: op.Command, - Aliases: op.Aliases, - Short: op.Summary, - Long: description, - RunE: func(cmd *cobra.Command, args []string) error { - if op.Private { - aiagent.PrivateAPINotice() - } - req := client.NewRequest(BaseURL(op.Host), op.Method, op.Path) - if op.Accept != "" { - req.Header("Accept", op.Accept) - } - if op.TimeRange != "" && last != "" { - parse := timeutil.ParseLastISO - if op.TimeRange == webexops.TimeEpochMs { - parse = timeutil.ParseLastEpochMs - } - from, to, err := parse(last) - if err != nil { - return err - } - for flag, v := range map[string]string{"from": from, "to": to} { - if p := values.strings[flag]; p != nil { - *p = v - } - } - } - for _, p := range op.Params { - switch p.In { - case webexops.InPath: - v := p.Value - if v == "" { - v = values.text(p.Flag) - } - req.PathParam(p.Name, v) - case webexops.InQuery: - req.QueryParam(p.Name, values.text(p.Flag)) - } - } - for _, p := range op.Params { - switch p.In { - case webexops.InAgentToken: - token, err := aiagent.BotToken(values.text(p.Flag)) - if err != nil { - return err - } - req.Header(p.Name, token) - case webexops.InHeader: - req.Header(p.Name, values.text(p.Flag)) - } - } - if op.Body != nil { - switch { - case bodyFile != "": - if err := req.SetBodyFile(bodyFile); err != nil { - return err - } - case bodyRaw != "": - req.SetBodyRaw(bodyRaw) - default: - setBodyFields(cmd, req, op.Body.Fields, values) - } - } - if op.Paging != nil && config.Paginate() { - if o := op.Paging.Offset; o != nil { - req.OffsetPaging(o.Start, o.Size, o.First) - } - if op.Paging.SizeParam != "" { - req.PageSizeParam(op.Paging.SizeParam) - } - for k, v := range op.Paging.Query { - req.QueryParam(k, v) - } - resp, statusCode, err := req.DoPaginated(isCalling) - if err != nil { - return redactError(op, err) - } - if op.Redact { - resp = aiagent.RedactSecrets(resp) - } - return output.Print(resp, statusCode) - } - resp, statusCode, err := req.Do() - if err != nil { - return redactError(op, err) - } - if op.Redact { - resp = aiagent.RedactSecrets(resp) - } - return output.Print(resp, statusCode) - }, - } - - flags := c.Flags() - for _, p := range op.Params { - if p.Value != "" || values.strings[p.Flag] != nil { - continue - } - values.strings[p.Flag] = new(string) - flags.StringVar(values.strings[p.Flag], p.Flag, "", strings.ReplaceAll(p.Usage, "\n", " ")) - if p.In == webexops.InPath || p.In == webexops.InAgentToken { - c.MarkFlagRequired(p.Flag) - } - } - if op.Body != nil { - for _, f := range op.Body.Fields { - if flags.Lookup(f.Flag) != nil { - continue - } - switch f.Type { - case "int64": - values.ints[f.Flag] = new(int64) - flags.Int64Var(values.ints[f.Flag], f.Flag, 0, "") - case "float64": - values.floats[f.Flag] = new(float64) - flags.Float64Var(values.floats[f.Flag], f.Flag, 0, "") - case "bool": - values.bools[f.Flag] = new(bool) - flags.BoolVar(values.bools[f.Flag], f.Flag, false, "") - case "[]string": - values.slices[f.Flag] = new([]string) - flags.StringSliceVar(values.slices[f.Flag], f.Flag, nil, "") - default: - values.strings[f.Flag] = new(string) - flags.StringVar(values.strings[f.Flag], f.Flag, "", "") - } - } - flags.StringVar(&bodyRaw, "body", "", "Raw JSON body") - flags.StringVar(&bodyFile, "body-file", "", "Path to JSON body file") - } - if op.TimeRange != "" { - flags.StringVar(&last, "last", "", "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically.") - } - return c -} - -// redactError keeps credentials out of the error a failed redacting operation -// prints, which repeats the response. -func redactError(op *webexops.Operation, err error) error { - if op.Redact { - return aiagent.RedactError(err) - } - return err -} - -func setBodyFields(cmd *cobra.Command, req *client.Request, fields []webexops.BodyField, values *flagValues) { - for _, f := range fields { - changed := cmd.Flags().Changed(f.Flag) - switch f.Type { - case "int64": - req.BodyInt(f.Name, *values.ints[f.Flag], changed) - case "float64": - req.BodyFloat(f.Name, *values.floats[f.Flag], changed) - case "bool": - req.BodyBool(f.Name, *values.bools[f.Flag], changed) - case "[]string": - req.BodyStringSlice(f.Name, *values.slices[f.Flag]) - default: - req.BodyString(f.Name, values.text(f.Flag)) - } - } -} diff --git a/internal/appconfig/appconfig.go b/internal/appconfig/appconfig.go index 3115fe6..541658d 100644 --- a/internal/appconfig/appconfig.go +++ b/internal/appconfig/appconfig.go @@ -42,7 +42,6 @@ type Config struct { DefaultOrgID string `json:"default_org_id,omitempty"` DefaultOrgName string `json:"default_org_name,omitempty"` Region string `json:"region,omitempty"` - CCRegion string `json:"cc_region,omitempty"` ReadOnly bool `json:"read_only,omitempty"` ReadOnlyScopes string `json:"read_only_scopes,omitempty"` diff --git a/internal/auth/minttl_test.go b/internal/auth/minttl_test.go deleted file mode 100644 index fa03ecd..0000000 --- a/internal/auth/minttl_test.go +++ /dev/null @@ -1,54 +0,0 @@ -package auth - -import ( - "strings" - "testing" - "time" -) - -func saveExpiring(t *testing.T, email string, in time.Duration) { - t.Helper() - tok := &StoredToken{AccessToken: "old", RefreshToken: "rt-0", ExpiresAt: time.Now().Add(in), IssuedAt: time.Now()} - if err := SaveToken(email, tok); err != nil { - t.Fatal(err) - } -} - -func TestEnsureMinTTLKeepsATokenWithEnoughLife(t *testing.T) { - noKeyring(t) - calls := fakeTokenEndpoint(t) - saveExpiring(t, "a@example.com", 2*time.Hour) - - tok, err := EnsureMinTTL("a@example.com", time.Hour, testConfig("a@example.com")) - if err != nil { - t.Fatal(err) - } - if tok.AccessToken != "old" || *calls != 0 { - t.Fatalf("token=%q refreshes=%d", tok.AccessToken, *calls) - } -} - -func TestEnsureMinTTLRefreshesAShortToken(t *testing.T) { - noKeyring(t) - calls := fakeTokenEndpoint(t) - saveExpiring(t, "a@example.com", 10*time.Minute) - - tok, err := EnsureMinTTL("a@example.com", 30*time.Minute, testConfig("a@example.com")) - if err != nil { - t.Fatal(err) - } - if tok.AccessToken != "at-1" || *calls != 1 { - t.Fatalf("token=%q refreshes=%d", tok.AccessToken, *calls) - } -} - -func TestEnsureMinTTLFailsWhenRefreshCannotProvideEnoughLife(t *testing.T) { - noKeyring(t) - fakeTokenEndpoint(t) - saveExpiring(t, "a@example.com", 10*time.Minute) - - _, err := EnsureMinTTL("a@example.com", 2*time.Hour, testConfig("a@example.com")) - if err == nil || !strings.Contains(err.Error(), "shorter than the requested") { - t.Fatalf("err = %v", err) - } -} diff --git a/internal/auth/resolve.go b/internal/auth/resolve.go index 11fd0ee..99f1366 100644 --- a/internal/auth/resolve.go +++ b/internal/auth/resolve.go @@ -4,7 +4,6 @@ import ( "fmt" "os" "sync" - "time" "github.com/Cloverhound/webex-cli/internal/appconfig" ) @@ -168,27 +167,6 @@ func MakeEnvRefresher(current string, cfg *appconfig.Config) func() (string, err } } -// EnsureMinTTL returns the stored token for email, refreshing it when less than -// minTTL remains. A caller that hands the token to a long-running process with no -// way to refresh uses this so the token cannot expire partway through. -func EnsureMinTTL(email string, minTTL time.Duration, cfg *appconfig.Config) (*StoredToken, error) { - tok, err := LoadToken(email) - if err != nil { - return nil, fmt.Errorf("no token for %s — run: webex login", email) - } - if time.Until(tok.ExpiresAt) >= minTTL && !tok.IsExpired() { - return tok, nil - } - refreshed, err := refreshStored(email, cfg, tok.AccessToken) - if err != nil { - return nil, fmt.Errorf("refreshing token for %s: %w\nRun: webex login", email, err) - } - if remaining := time.Until(refreshed.ExpiresAt); remaining < minTTL { - return nil, fmt.Errorf("token for %s lasts %s, shorter than the requested %s", email, remaining.Round(time.Second), minTTL) - } - return refreshed, nil -} - // refreshStored refreshes the stored token for email under a lock shared by all // CLI processes. Webex refresh tokens may be single-use, so when another process // has already refreshed (the stored access token is no longer stale), its diff --git a/internal/client/characterize_test.go b/internal/client/characterize_test.go deleted file mode 100644 index 32b59df..0000000 --- a/internal/client/characterize_test.go +++ /dev/null @@ -1,240 +0,0 @@ -package client - -import ( - "errors" - "io" - "net/http" - "net/http/httptest" - "os" - "strings" - "testing" - "time" - - "github.com/Cloverhound/webex-cli/internal/config" -) - -// These tests pin user-visible CLI behaviour: scripts and agents match this error -// and stderr text, so it must survive changes to the transport underneath. - -func captureStderr(t *testing.T, run func()) string { - t.Helper() - r, w, err := os.Pipe() - if err != nil { - t.Fatal(err) - } - saved := os.Stderr - os.Stderr = w - defer func() { os.Stderr = saved }() - run() - w.Close() - out, err := io.ReadAll(r) - if err != nil { - t.Fatal(err) - } - return string(out) -} - -func resetClientConfig(t *testing.T) { - t.Helper() - reset := func() { - config.SetToken("tok-1") - config.TokenRefresher = nil - refreshedAt = time.Time{} - config.SetMaxRetry(3) - config.SetMaxRetryTimer(0) - config.SetDryRun(false) - config.SetReadOnly(false) - config.SetDebug(false) - } - reset() - t.Cleanup(reset) -} - -func TestRefreshThenRateLimitOrderAndStderr(t *testing.T) { - resetClientConfig(t) - var seen []string - statuses := []int{401, 429, 200} - srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - seen = append(seen, r.Header.Get("Authorization")) - status := statuses[len(seen)-1] - if status == 429 { - w.Header().Set("Retry-After", "1") - } - w.WriteHeader(status) - io.WriteString(w, `{"ok":true}`) - })) - defer srv.Close() - - refreshes := 0 - config.TokenRefresher = func() (string, error) { - refreshes++ - return "tok-2", nil - } - - var body []byte - var status int - var err error - stderr := captureStderr(t, func() { - body, status, err = NewRequest(srv.URL, "GET", "/x").Do() - }) - if err != nil || status != 200 || string(body) != `{"ok":true}` { - t.Fatalf("got body=%q status=%d err=%v", body, status, err) - } - if refreshes != 1 { - t.Fatalf("refreshes = %d", refreshes) - } - want := []string{"Bearer tok-1", "Bearer tok-2", "Bearer tok-2"} - if strings.Join(seen, ",") != strings.Join(want, ",") { - t.Fatalf("authorization headers = %v", seen) - } - if stderr != "Rate limited (429). Retrying in 1s (attempt 1/3)...\n" { - t.Fatalf("stderr = %q", stderr) - } -} - -func TestFailedRefreshReturnsTheOriginal401(t *testing.T) { - resetClientConfig(t) - srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(401) - io.WriteString(w, "denied") - })) - defer srv.Close() - config.TokenRefresher = func() (string, error) { return "", errors.New("no refresh") } - - body, status, err := NewRequest(srv.URL, "GET", "/x").Do() - if status != 401 || string(body) != "denied" { - t.Fatalf("status=%d body=%q", status, body) - } - if err == nil || err.Error() != "API error 401: denied" { - t.Fatalf("err = %v", err) - } -} - -func TestErrorKeepsBodyAndTruncatesMessage(t *testing.T) { - resetClientConfig(t) - long := strings.Repeat("e", 600) - srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(404) - io.WriteString(w, long) - })) - defer srv.Close() - - body, status, err := NewRequest(srv.URL, "GET", "/x").Do() - if status != 404 || string(body) != long { - t.Fatalf("status=%d len(body)=%d", status, len(body)) - } - if err == nil || err.Error() != "API error 404: "+long[:500]+"..." { - t.Fatalf("err = %v", err) - } -} - -func TestRateLimitMessages(t *testing.T) { - resetClientConfig(t) - srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(429) - })) - defer srv.Close() - - config.SetMaxRetry(0) - _, status, err := NewRequest(srv.URL, "GET", "/x").Do() - want := "rate limited (429): retry limit reached after 0 attempts — try again after 5s" - if status != 429 || err == nil || err.Error() != want { - t.Fatalf("status=%d err=%v", status, err) - } - - config.SetMaxRetry(3) - config.SetMaxRetryTimer(1) - _, status, err = NewRequest(srv.URL, "GET", "/x").Do() - want = "rate limited (429): retry wait of 5s would exceed max-retry-timer of 1s — try again after 5s" - if status != 429 || err == nil || err.Error() != want { - t.Fatalf("status=%d err=%v", status, err) - } -} - -func TestDryRunAndReadOnlySendNothing(t *testing.T) { - resetClientConfig(t) - hits := 0 - srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { hits++ })) - defer srv.Close() - - config.SetDryRun(true) - var status int - var err error - stderr := captureStderr(t, func() { - req := NewRequest(srv.URL, "POST", "/x") - req.SetBodyRaw(`{"a":1}`) - _, status, err = req.Do() - }) - if !errors.Is(err, ErrDryRun) || status != 0 { - t.Fatalf("status=%d err=%v", status, err) - } - if !strings.Contains(stderr, "[DRY RUN] POST "+srv.URL+"/x\n") || !strings.Contains(stderr, `[DRY RUN] Body: {"a":1}`) { - t.Fatalf("stderr = %q", stderr) - } - - config.SetDryRun(false) - config.SetReadOnly(true) - _, status, err = NewRequest(srv.URL, "DELETE", "/x").Do() - if !errors.Is(err, ErrReadOnly) || status != 0 { - t.Fatalf("status=%d err=%v", status, err) - } - if hits != 0 { - t.Fatalf("server received %d requests", hits) - } -} - -func TestWrongRegionMessage(t *testing.T) { - resetClientConfig(t) - srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(451) - io.WriteString(w, `use https://analytics-eu.webexapis.com please`) - })) - defer srv.Close() - - _, status, err := NewRequest(srv.URL, "GET", "/x").Do() - if status != 451 || err == nil { - t.Fatalf("status=%d err=%v", status, err) - } - for _, want := range []string{"wrong data region (451)", "Webex says to use https://analytics-eu.webexapis.com", "rerun with --region"} { - if !strings.Contains(err.Error(), want) { - t.Fatalf("err = %v, missing %q", err, want) - } - } -} - -func TestTransportFailureIsWrapped(t *testing.T) { - resetClientConfig(t) - srv := httptest.NewServer(http.NotFoundHandler()) - url := srv.URL - srv.Close() - - _, status, err := NewRequest(url, "GET", "/x").Do() - if status != 0 || err == nil || !strings.HasPrefix(err.Error(), "executing request: ") { - t.Fatalf("status=%d err=%v", status, err) - } -} - -type recordingTransport struct{ used bool } - -func (r *recordingTransport) RoundTrip(*http.Request) (*http.Response, error) { - r.used = true - return &http.Response{StatusCode: 200, Header: http.Header{}, Body: http.NoBody}, nil -} - -func TestUsesDefaultClientSoLongDownloadsHaveNoTimeout(t *testing.T) { - resetClientConfig(t) - saved := http.DefaultClient.Transport - rec := &recordingTransport{} - http.DefaultClient.Transport = rec - defer func() { http.DefaultClient.Transport = saved }() - - if _, status, err := NewRequest("http://example.invalid", "GET", "/x").Do(); err != nil || status != 200 { - t.Fatalf("status=%d err=%v", status, err) - } - if !rec.used { - t.Fatal("http.DefaultClient was not used") - } - if http.DefaultClient.Timeout != 0 { - t.Fatalf("DefaultClient timeout = %s", http.DefaultClient.Timeout) - } -} diff --git a/internal/client/client.go b/internal/client/client.go index a3139e1..674e0e9 100644 --- a/internal/client/client.go +++ b/internal/client/client.go @@ -1,19 +1,19 @@ package client import ( - "context" "errors" "fmt" + "io" "net/http" urlpkg "net/url" "os" "regexp" + "strconv" "strings" "time" "github.com/Cloverhound/webex-cli/internal/config" "github.com/Cloverhound/webex-cli/internal/readonly" - "github.com/Cloverhound/webex-cli/pkg/webexapi" ) // ErrDryRun is returned when a write operation is intercepted by --dry-run mode. @@ -37,57 +37,41 @@ func Do(req *Request) ([]byte, int, error) { // doWithHeaders is Do, also returning the final response's headers. func doWithHeaders(req *Request) ([]byte, int, http.Header, error) { - url := requestURL(req) - api := apiClient(req, url) + body, status, headers, err := doOnce(req) - apiReq := webexapi.Request{ - Method: req.method, - URL: url, - ContentType: req.bodyContentType, - Header: http.Header{}, - } - if req.bodyRaw != "" { - apiReq.Body = []byte(req.bodyRaw) - } - for k, v := range req.headers { - apiReq.Header.Set(k, v) + if status == 401 && config.TokenRefresher != nil { + newToken, refreshErr := config.TokenRefresher() + if refreshErr != nil { + return body, status, headers, err + } + config.SetToken(newToken) + body, status, headers, err = doOnce(req) } - resp, err := api.Send(context.Background(), apiReq) - if resp == nil { - return nil, 0, nil, err - } - if resp.Status == 451 { - return resp.Body, resp.Status, resp.Header, wrongRegionError(resp.Body) - } - return resp.Body, resp.Status, resp.Header, err -} + var cumulativeWait time.Duration + for retries := 0; status == 429; retries++ { + maxRetry := config.MaxRetry() + maxTimer := time.Duration(config.MaxRetryTimer()) * time.Second + wait := retryAfterDuration(headers.Get("Retry-After")) -// apiClient configures the shared transport from the process-wide CLI settings. -func apiClient(req *Request, url string) *webexapi.Client { - api := &webexapi.Client{ - HTTP: http.DefaultClient, - Token: func(context.Context) (string, error) { - return config.Token(), nil - }, - MaxRetries: config.MaxRetry(), - MaxRetryWait: time.Duration(config.MaxRetryTimer()) * time.Second, - OnRetry: func(wait time.Duration, attempt, max int) { - fmt.Fprintf(os.Stderr, "Rate limited (429). Retrying in %s (attempt %d/%d)...\n", wait.Round(time.Second), attempt, max) - }, - BeforeSend: func(httpReq *http.Request) error { - return beforeSend(req, url, httpReq) - }, - AfterResponse: func(status, size int) { - if config.Debug() { - fmt.Fprintf(os.Stderr, "DEBUG: Response %d (%d bytes)\n", status, size) - } - }, + if retries >= maxRetry { + return body, status, headers, fmt.Errorf("rate limited (429): retry limit reached after %d attempts — try again after %s", retries, wait.Round(time.Second)) + } + if maxTimer > 0 && cumulativeWait+wait > maxTimer { + return body, status, headers, fmt.Errorf("rate limited (429): retry wait of %s would exceed max-retry-timer of %s — try again after %s", (cumulativeWait + wait).Round(time.Second), maxTimer.Round(time.Second), wait.Round(time.Second)) + } + + fmt.Fprintf(os.Stderr, "Rate limited (429). Retrying in %s (attempt %d/%d)...\n", wait.Round(time.Second), retries+1, maxRetry) + time.Sleep(wait) + cumulativeWait += wait + body, status, headers, err = doOnce(req) } - if config.TokenRefresher != nil { - api.Refresh = refreshToken + + if status == 451 { + return body, status, headers, wrongRegionError(body) } - return api + + return body, status, headers, err } // endpointURLPattern finds the regional endpoint Webex returns in a 451 body. @@ -111,6 +95,16 @@ func regionLabel() string { return "us (default)" } +// retryAfterDuration parses the Retry-After header value (seconds integer) and +// returns the duration to wait. Defaults to 5 seconds if the header is absent +// or unparseable. +func retryAfterDuration(header string) time.Duration { + if secs, err := strconv.Atoi(strings.TrimSpace(header)); err == nil && secs > 0 { + return time.Duration(secs) * time.Second + } + return 5 * time.Second +} + // redactHeader replaces a credential value with its length, which is enough to // tell a missing or truncated token from a present one without printing it. func redactHeader(key, value string) string { @@ -127,16 +121,18 @@ func redactHeader(key, value string) string { return fmt.Sprintf("<%d chars>", len(value)) } -// requestURL expands path parameters and appends the query string. -func requestURL(req *Request) string { - if req.rawURL != "" { - return req.rawURL - } +// doOnce executes a single HTTP request without retry. +func doOnce(req *Request) ([]byte, int, http.Header, error) { + // Build URL url := req.baseURL + req.path for k, v := range req.pathParams { url = strings.ReplaceAll(url, "{"+k+"}", urlpkg.PathEscape(v)) } - if len(req.queryParams) > 0 { + + // Add query params + if req.rawURL != "" { + url = req.rawURL + } else if len(req.queryParams) > 0 { params := urlpkg.Values{} for k, v := range req.queryParams { if v != "" { @@ -147,12 +143,36 @@ func requestURL(req *Request) string { url += "?" + encoded } } - return url -} -// beforeSend applies the CLI's debug output, read-only mode and dry-run mode to each -// attempt. -func beforeSend(req *Request, url string, httpReq *http.Request) error { + // Build body + var bodyReader io.Reader + if req.bodyRaw != "" { + bodyReader = strings.NewReader(req.bodyRaw) + } + + httpReq, err := http.NewRequest(req.method, url, bodyReader) + if err != nil { + return nil, 0, nil, fmt.Errorf("building request: %w", err) + } + + // Auth + httpReq.Header.Set("Authorization", "Bearer "+config.Token()) + + // Content type + if req.bodyRaw != "" { + contentType := req.bodyContentType + if contentType == "" { + contentType = "application/json" + } + httpReq.Header.Set("Content-Type", contentType) + } + httpReq.Header.Set("Accept", "application/json") + + // Extra headers + for k, v := range req.headers { + httpReq.Header.Set(k, v) + } + // Multipart diagnostics describe the file; never print its binary contents. logBody := req.bodyRaw if req.bodySummary != "" { @@ -171,7 +191,7 @@ func beforeSend(req *Request, url string, httpReq *http.Request) error { } if config.ReadOnly() && !readOnlyAllows(req.method, req.path) { - return ReadOnlyError(req.method, url) + return nil, 0, nil, ReadOnlyError(req.method, url) } // Dry-run: intercept write operations before making the HTTP call @@ -183,10 +203,29 @@ func beforeSend(req *Request, url string, httpReq *http.Request) error { if req.bodyRaw != "" { fmt.Fprintf(os.Stderr, "[DRY RUN] Body: %s\n", logBody) } - return ErrDryRun + return nil, 0, nil, ErrDryRun + } + + resp, err := http.DefaultClient.Do(httpReq) + if err != nil { + return nil, 0, nil, fmt.Errorf("executing request: %w", err) + } + defer resp.Body.Close() + + body, err := io.ReadAll(resp.Body) + if err != nil { + return nil, resp.StatusCode, resp.Header, fmt.Errorf("reading response: %w", err) + } + + if config.Debug() { + fmt.Fprintf(os.Stderr, "DEBUG: Response %d (%d bytes)\n", resp.StatusCode, len(body)) + } + + if resp.StatusCode >= 400 { + return body, resp.StatusCode, resp.Header, fmt.Errorf("API error %d: %s", resp.StatusCode, truncate(string(body), 500)) } - return nil + return body, resp.StatusCode, resp.Header, nil } func truncate(s string, n int) string { diff --git a/internal/client/client_test.go b/internal/client/client_test.go index c0a3200..1016d8d 100644 --- a/internal/client/client_test.go +++ b/internal/client/client_test.go @@ -1,56 +1,14 @@ package client import ( - "context" "errors" "net/http" "net/http/httptest" - "sync" - "sync/atomic" "testing" - "time" "github.com/Cloverhound/webex-cli/internal/config" - "github.com/Cloverhound/webex-cli/pkg/webexapi" ) -// The SDK reads in parallel, so an expired token fails several requests at once. -// Run under -race. -func TestConcurrent401sRefreshTheTokenOnce(t *testing.T) { - resetClientConfig(t) - config.SetToken("old") - var refreshes atomic.Int32 - config.TokenRefresher = func() (string, error) { - refreshes.Add(1) - time.Sleep(20 * time.Millisecond) - return "new", nil - } - srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - if r.Header.Get("Authorization") != "Bearer new" { - w.WriteHeader(http.StatusUnauthorized) - return - } - w.Write([]byte(`{}`)) - })) - defer srv.Close() - - api := SDK() - var wg sync.WaitGroup - for i := 0; i < 5; i++ { - wg.Add(1) - go func() { - defer wg.Done() - if _, err := api.Send(context.Background(), webexapi.Request{Method: "GET", URL: srv.URL}); err != nil { - t.Error(err) - } - }() - } - wg.Wait() - if n := refreshes.Load(); n != 1 { - t.Errorf("refreshed %d times", n) - } -} - func TestReadOnlyBlocksWritesBeforeSending(t *testing.T) { var hits int srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { diff --git a/internal/client/pagination.go b/internal/client/pagination.go index 1c414e3..5bd9b19 100644 --- a/internal/client/pagination.go +++ b/internal/client/pagination.go @@ -4,11 +4,13 @@ import ( "bytes" "encoding/json" "fmt" + "net/http" + urlpkg "net/url" "sort" "strconv" + "strings" "github.com/Cloverhound/webex-cli/internal/config" - "github.com/Cloverhound/webex-cli/pkg/webexapi" ) // PaginateCalling auto-paginates a Calling API list endpoint. @@ -70,7 +72,7 @@ func paginateOffset(baseURL, method, path, startParam, sizeParam string, firstIn prevFirst = items[0] allItems = append(allItems, items...) - if link := webexapi.NextLink(respHeaders, baseURL); link != "" { + if link := nextLink(respHeaders, baseURL); link != "" { next = link continue } @@ -116,6 +118,30 @@ func listItems(body []byte) ([]json.RawMessage, int, error) { return nil, total, nil } +// nextLink returns the rel="next" URL from a Link header, but only when it +// points at the same host as baseURL, so the bearer token is never sent elsewhere. +func nextLink(h http.Header, baseURL string) string { + base, err := urlpkg.Parse(baseURL) + if err != nil { + return "" + } + for _, value := range h.Values("Link") { + for _, part := range strings.Split(value, ",") { + target, params, ok := strings.Cut(part, ";") + if !ok || !strings.Contains(strings.ReplaceAll(params, " ", ""), `rel="next"`) { + continue + } + target = strings.Trim(strings.TrimSpace(target), "<>") + u, err := urlpkg.Parse(target) + if err != nil || u.Scheme != base.Scheme || u.Host != base.Host { + return "" + } + return target + } + } + return "" +} + // PaginateCC auto-paginates a Contact Center API list endpoint. // CC uses page/pageSize with meta.totalPages. func PaginateCC(baseURL, method, path string, pathParams, queryParams, headers map[string]string) ([]json.RawMessage, error) { @@ -147,7 +173,6 @@ func paginateCC(baseURL, method, path, sizeParam string, pathParams, queryParams func visitCC(baseURL, method, path, sizeParam string, pathParams, queryParams, headers map[string]string, visit func(items []json.RawMessage) bool) (single []byte, err error) { page := 0 pageSize := 100 - var previousFirst json.RawMessage for { r := NewRequest(baseURL, method, path) @@ -168,19 +193,11 @@ func visitCC(baseURL, method, path, sizeParam string, pathParams, queryParams, h return nil, err } - // A bare array carries no page metadata. A full one may have more after it, - // unless the endpoint ignores page and answers the same array again. + // A bare array carries no page metadata, so it is the only page. var bare []json.RawMessage if err := json.Unmarshal(body, &bare); err == nil { - if len(bare) > 0 && bytes.Equal(bare[0], previousFirst) { - return nil, nil - } - if !visit(bare) || len(bare) < pageSize { - return nil, nil - } - previousFirst = bare[0] - page++ - continue + visit(bare) + return nil, nil } var result map[string]json.RawMessage diff --git a/internal/client/pagination_test.go b/internal/client/pagination_test.go index d0e2e87..c38b33b 100644 --- a/internal/client/pagination_test.go +++ b/internal/client/pagination_test.go @@ -112,50 +112,6 @@ func TestDoPaginatedAcceptsPlainArray(t *testing.T) { } } -func TestDoPaginatedPagesFullBareArrays(t *testing.T) { - var pages []string - srv := flowStore(250, &pages) - defer srv.Close() - - req := NewRequest(srv.URL, "GET", "/flows") - req.PageSizeParam("size") - body, _, err := req.DoPaginated(false) - if err != nil { - t.Fatalf("DoPaginated: %v", err) - } - if got := names(t, body); len(got) != 250 || got[249] != "f249" { - t.Fatalf("got %d items, want 250 ending in f249", len(got)) - } - if fmt.Sprint(pages) != "[0 1 2]" { - t.Fatalf("requested pages %v, want [0 1 2]", pages) - } -} - -func TestDoPaginatedStopsWhenABareArrayRepeats(t *testing.T) { - var hits int - srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - hits++ - if hits > 3 { // stops a pager that does not notice the repeat - w.WriteHeader(http.StatusInternalServerError) - return - } - var data []map[string]string - for i := 0; i < 100; i++ { - data = append(data, map[string]string{"name": fmt.Sprintf("s%d", i)}) - } - json.NewEncoder(w).Encode(data) - })) - defer srv.Close() - - body, _, err := NewRequest(srv.URL, "GET", "/skill").DoPaginated(false) - if err != nil { - t.Fatalf("DoPaginated: %v", err) - } - if got := names(t, body); len(got) != 100 || hits != 2 { - t.Fatalf("got %d items in %d requests, want 100 in 2", len(got), hits) - } -} - func TestDoPaginatedLeavesNonListResponseAlone(t *testing.T) { srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.Write([]byte(`{"id":"s1","name":"Language_EN-US"}`)) diff --git a/internal/client/sdk.go b/internal/client/sdk.go deleted file mode 100644 index 3318763..0000000 --- a/internal/client/sdk.go +++ /dev/null @@ -1,100 +0,0 @@ -package client - -import ( - "context" - "fmt" - "io" - "net/http" - "os" - "strings" - "sync" - "time" - - "github.com/Cloverhound/webex-cli/internal/config" - "github.com/Cloverhound/webex-cli/pkg/webexapi" -) - -// SDK returns a transport for the SDK packages, set up from this run's flags like -// every other request: the token and its refresh, 429 retries, debug output, -// read-only mode and dry-run. -func SDK() *webexapi.Client { - api := &webexapi.Client{ - HTTP: http.DefaultClient, - Token: func(context.Context) (string, error) { - return config.Token(), nil - }, - MaxRetries: config.MaxRetry(), - MaxRetryWait: time.Duration(config.MaxRetryTimer()) * time.Second, - OnRetry: func(wait time.Duration, attempt, max int) { - fmt.Fprintf(os.Stderr, "Rate limited (429). Retrying in %s (attempt %d/%d)...\n", wait.Round(time.Second), attempt, max) - }, - BeforeSend: sdkBeforeSend, - AfterResponse: func(status, size int) { - if config.Debug() { - fmt.Fprintf(os.Stderr, "DEBUG: Response %d (%d bytes)\n", status, size) - } - }, - } - if config.TokenRefresher != nil { - api.Refresh = refreshToken - } - return api -} - -var ( - refreshMu sync.Mutex - refreshedAt time.Time -) - -// refreshTokenWindow is how recent a refresh must be for a 401 to retry with its -// token instead of refreshing again. -const refreshTokenWindow = 30 * time.Second - -// refreshToken gets a new token after a 401. Parallel requests fail together when -// a token expires, and the first refresh serves them all. -func refreshToken(context.Context) error { - refreshMu.Lock() - defer refreshMu.Unlock() - if time.Since(refreshedAt) < refreshTokenWindow { - return nil - } - newToken, err := config.TokenRefresher() - if err != nil { - return err - } - config.SetToken(newToken) - refreshedAt = time.Now() - return nil -} - -// sdkBeforeSend applies debug output, read-only mode and dry-run to each attempt. -// SDK requests carry no route template, so read-only mode allows reads only. -func sdkBeforeSend(r *http.Request) error { - body := "" - if r.GetBody != nil { - if rc, err := r.GetBody(); err == nil { - data, _ := io.ReadAll(rc) - body = string(data) - } - } - if config.Debug() { - fmt.Fprintf(os.Stderr, "DEBUG: %s %s\n", r.Method, r.URL) - for k, v := range r.Header { - fmt.Fprintf(os.Stderr, "DEBUG: %s: %s\n", k, redactHeader(k, strings.Join(v, ", "))) - } - if body != "" { - fmt.Fprintf(os.Stderr, "DEBUG: Body: %s\n", truncate(body, 500)) - } - } - if config.ReadOnly() && isWriteMethod(r.Method) { - return ReadOnlyError(r.Method, r.URL.String()) - } - if config.DryRun() && isWriteMethod(r.Method) { - fmt.Fprintf(os.Stderr, "[DRY RUN] %s %s\n", r.Method, r.URL) - if body != "" { - fmt.Fprintf(os.Stderr, "[DRY RUN] Body: %s\n", body) - } - return ErrDryRun - } - return nil -} diff --git a/internal/config/config.go b/internal/config/config.go index 9092d63..619d840 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -1,10 +1,8 @@ package config import ( + "encoding/base64" "strings" - "sync" - - "github.com/Cloverhound/webex-cli/pkg/webexapi" ) var ( @@ -20,20 +18,8 @@ var ( maxRetryTimer int // max total seconds allowed across all 429 waits (0 = unlimited) ) -// tokenMu guards token, which SDK reads running in parallel refresh after a 401. -var tokenMu sync.RWMutex - -func SetToken(t string) { - tokenMu.Lock() - defer tokenMu.Unlock() - token = t -} - -func Token() string { - tokenMu.RLock() - defer tokenMu.RUnlock() - return token -} +func SetToken(t string) { token = t } +func Token() string { return token } func SetMaxRetry(n int) { maxRetry = n } func MaxRetry() int { return maxRetry } @@ -72,63 +58,104 @@ func SetOrgID(id string) { func OrgID() string { return orgID } func OrgIDBase64() string { return orgIDBase64 } -// Regions lists the supported --region values. -var Regions = webexapi.DataRegions +const ( + CallingBaseURL = "https://webexapis.com/v1" + CcBaseURL = "https://api.wxcc-us1.cisco.com" -// CCRegions lists the supported --cc-region values: Contact Center data centers. -var CCRegions = webexapi.CCDataCenters + // AnalyticsBaseURL serves the Admin analytics reports. Paths for those + // endpoints already carry their own /v1 segment. + AnalyticsBaseURL = "https://analytics.webexapis.com" -var ( - region, ccRegion string - hosts, _ = webexapi.NewHosts("", "") + // AiAgentBaseURL is AI Agent Studio in the same data center as CcBaseURL; + // each Contact Center data center has its own Studio host. + AiAgentBaseURL = "https://studio.aiagent-us1.cisco.com" ) -// SetRegion stores the org's data region (us, ca, eu, eun, in, au). -// Empty means "use the default host and let Webex route by geography". -// An unknown region keeps the default host; callers validate first. -func SetRegion(r string) { - region = strings.ToLower(strings.TrimSpace(r)) - updateHosts() +// analyticsCallingHosts maps a data region to the Detailed Call History (CDR) FQDN. +// Calls to the default host are routed to the nearest region; if that region does +// not hold the org's data the API returns HTTP 451 with the correct endpoint. +var analyticsCallingHosts = map[string]string{ + "us": "https://analytics-calling.webexapis.com", + "ca": "https://analytics-calling.webexapis.com", + "eu": "https://analytics-calling-eu.webexapis.com", + "eun": "https://analytics-calling-eu.webexapis.com", + "in": "https://analytics-calling-in.webexapis.com", + "au": "https://analytics-calling-au.webexapis.com", } -func Region() string { return region } -// SetCCRegion stores the org's Contact Center data center (us1, eu1, ...), -// which selects the Contact Center and AI Agent Studio hosts. Empty means us1. -func SetCCRegion(r string) { - ccRegion = strings.ToLower(strings.TrimSpace(r)) - updateHosts() -} -func CCRegion() string { return ccRegion } +// Regions lists the supported --region values. +var Regions = []string{"us", "ca", "eu", "eun", "in", "au"} + +var region string -func updateHosts() { - if h, err := webexapi.NewHosts(ccRegion, region); err == nil { - hosts = h +// SetRegion stores the org's data region (us, ca, eu, eun, in, au). +// Empty means "use the default host and let Webex route by geography". +func SetRegion(r string) { region = strings.ToLower(strings.TrimSpace(r)) } +func Region() string { return region } + +// AnalyticsCallingBaseURL returns the Detailed Call History base URL for the +// configured region, falling back to the US/Canada host. +func AnalyticsCallingBaseURL() string { + host, ok := analyticsCallingHosts[region] + if !ok { + host = analyticsCallingHosts["us"] } + return host + "/v1" } -// Hosts returns the API base URLs for this run's regions. -func Hosts() webexapi.Hosts { return hosts } - -func CallingBaseURL() string { return hosts.Webex } -func CcBaseURL() string { return hosts.CC } +// DecodeOrgID converts a base64-encoded Webex org ID (ciscospark://us/ORGANIZATION/) +// to the raw UUID. If the input is already a UUID or unrecognized, it is returned as-is. +func DecodeOrgID(id string) string { + if id == "" { + return id + } -// AnalyticsBaseURL serves the Admin analytics reports. Paths for those -// endpoints already carry their own /v1 segment. -func AnalyticsBaseURL() string { return hosts.Analytics } + // If it already looks like a UUID, return as-is + if strings.Count(id, "-") == 4 && len(id) == 36 { + return id + } -// AiAgentBaseURL is AI Agent Studio in the same data center as CcBaseURL. -func AiAgentBaseURL() string { return hosts.AIAgent } + // Try all base64 variants (Webex IDs may or may not have padding) + encodings := []*base64.Encoding{ + base64.StdEncoding, + base64.RawStdEncoding, + base64.URLEncoding, + base64.RawURLEncoding, + } -// AnalyticsCallingBaseURL returns the Detailed Call History base URL for the -// configured region. Calls to the default host are routed to the nearest -// region; if that region does not hold the org's data the API returns HTTP 451 -// with the correct endpoint. -func AnalyticsCallingBaseURL() string { return hosts.AnalyticsCalling } + for _, enc := range encodings { + decoded, err := enc.DecodeString(id) + if err != nil { + continue + } + s := string(decoded) + if strings.HasPrefix(s, "ciscospark://") { + parts := strings.Split(s, "/") + if len(parts) > 0 { + uuid := parts[len(parts)-1] + if uuid != "" { + return uuid + } + } + } + } -// DecodeOrgID converts a base64-encoded Webex org ID (ciscospark://us/ORGANIZATION/) -// to the raw UUID. If the input is already a UUID or unrecognized, it is returned as-is. -func DecodeOrgID(id string) string { return webexapi.OrgUUID(id) } + return id +} -// EncodeOrgID converts a UUID to the base64-encoded Webex org ID format, -// unpadded as Webex issues it. Anything else is returned as-is. -func EncodeOrgID(id string) string { return webexapi.OrgIDFromUUID(id) } +// EncodeOrgID converts a UUID to the base64-encoded Webex org ID format: +// base64("ciscospark://us/ORGANIZATION/"), unpadded as Webex issues it. +// Calling multipart upload endpoints never respond to a padded orgId. +// If the input is empty, returns empty. If the input is already base64-encoded, returns as-is. +func EncodeOrgID(id string) string { + if id == "" { + return "" + } + // If it looks like a UUID, encode it + if strings.Count(id, "-") == 4 && len(id) == 36 { + uri := "ciscospark://us/ORGANIZATION/" + id + return base64.RawStdEncoding.EncodeToString([]byte(uri)) + } + // Already base64 or unknown format — return as-is + return id +} diff --git a/internal/readonly/readonly_test.go b/internal/readonly/readonly_test.go index 88d86f3..188c96d 100644 --- a/internal/readonly/readonly_test.go +++ b/internal/readonly/readonly_test.go @@ -6,8 +6,6 @@ import ( "path/filepath" "strings" "testing" - - "github.com/Cloverhound/webex-cli/pkg/webexops" ) func TestIsReadScope(t *testing.T) { @@ -82,9 +80,8 @@ func TestIsQueryPOST(t *testing.T) { } } -// Query paths must match a POST operation's path, or a handwritten request, -// exactly, or read-only mode blocks the command. Regenerated operations can -// rename path parameters. +// Query paths must match a POST request template exactly, or read-only mode +// blocks the command. Regenerated commands can rename path parameters. func TestQueryPOSTPathsMatchRequests(t *testing.T) { var src strings.Builder for _, dir := range []string{"../../cmd", "../../internal"} { @@ -100,16 +97,8 @@ func TestQueryPOSTPathsMatchRequests(t *testing.T) { t.Fatal(err) } } - posts := map[string]bool{} - for _, area := range webexops.Areas { - for _, op := range webexops.Operations(area) { - if op.Method == "POST" && !op.Handwritten { - posts[op.Path] = true - } - } - } for _, p := range queryPOSTPaths { - if !posts[p] && !strings.Contains(src.String(), `"POST", "`+p+`")`) { + if !strings.Contains(src.String(), `"POST", "`+p+`")`) { t.Errorf("no POST request uses %q", p) } } diff --git a/internal/search/paginate.go b/internal/search/paginate.go index f9ed457..78e67eb 100644 --- a/internal/search/paginate.go +++ b/internal/search/paginate.go @@ -29,7 +29,7 @@ func PaginateGraphQL(queryType QueryType, params Params, orgID, trackingID strin return nil, 0, err } - req := client.NewRequest(config.CcBaseURL(), "POST", "/search") + req := client.NewRequest(config.CcBaseURL, "POST", "/search") req.QueryParam("orgId", orgID) req.Header("TrackingId", trackingID) req.SetBodyRaw(body) diff --git a/pkg/aiagent/aiagent.go b/pkg/aiagent/aiagent.go deleted file mode 100644 index e7adce9..0000000 --- a/pkg/aiagent/aiagent.go +++ /dev/null @@ -1,108 +0,0 @@ -// Package aiagent supports the Webex AI Agent Studio operations in pkg/webexops -// (those marked Private). Studio's API is not documented or supported by Cisco and -// can change without notice; these routes accept a regular Webex token. -// -// Studio's v1 API selects the agent of a call by its runtime token, sent as the -// bot-access-token header. Callers name the agent by ID, and BotToken looks the -// token up. Responses can carry credentials, which RedactSecrets removes. -package aiagent - -import ( - "context" - "encoding/json" - "errors" - "fmt" - "regexp" - - "github.com/Cloverhound/webex-cli/pkg/webexapi" - "github.com/Cloverhound/webex-cli/pkg/webexops" -) - -// agentList is the v2 agent list, the only place a regular Webex login can read an -// agent's runtime token. -var agentList = webexops.CCAiAgentList - -// errFound stops the list once the agent is found. -var errFound = errors.New("found") - -// BotToken returns the runtime token of an AI agent in an org. -func BotToken(ctx context.Context, c *webexapi.Client, hosts webexapi.Hosts, orgUUID, agentID string) (string, error) { - if orgUUID == "" { - return "", fmt.Errorf("no organization: log in or pass --organization") - } - var token string - var found bool - err := webexops.List(ctx, c, hosts, agentList, webexops.Args{Path: map[string]string{"orgid": orgUUID}}, - func(page []json.RawMessage) error { - for _, raw := range page { - var a struct { - ID string `json:"id"` - Token string `json:"bot_access_token"` - } - if json.Unmarshal(raw, &a) == nil && a.ID == agentID { - token, found = a.Token, true - return errFound - } - } - return nil - }) - switch { - case errors.Is(err, errFound): - case err != nil: - return "", fmt.Errorf("looking up AI agent %s: %w", agentID, err) - case !found: - return "", fmt.Errorf("AI agent %s not found in organization %s", agentID, orgUUID) - } - if token == "" { - return "", fmt.Errorf("AI agent %s has no runtime token", agentID) - } - return token, nil -} - -// secretField matches a JSON string value of a Studio credential field. -var secretField = regexp.MustCompile(`("(?:bot_access_token|auth_token|user_access_token|ci_access_token)"\s*:\s*)"(?:[^"\\]|\\.)*"`) - -// RedactSecrets replaces Studio credentials in a JSON response, keeping the rest of -// the document byte for byte. -func RedactSecrets(body []byte) []byte { - return secretField.ReplaceAll(body, []byte(`$1""`)) -} - -// RedactError replaces Studio credentials in an API error's body and message, which -// repeat the response a failed call returned. -func RedactError(err error) error { - var apiErr *webexapi.APIError - if errors.As(err, &apiErr) { - return apiErr.WithBody(RedactSecrets(apiErr.Body)) - } - return err -} - -// Call sends a Studio operation. An operation that selects its agent by token gets -// the token of agentID, and a response that can carry credentials comes back with -// them redacted. -func Call(ctx context.Context, c *webexapi.Client, hosts webexapi.Hosts, orgUUID string, op *webexops.Operation, args webexops.Args, agentID string) (*webexapi.Response, error) { - for _, p := range op.Params { - if p.In != webexops.InAgentToken { - continue - } - token, err := BotToken(ctx, c, hosts, orgUUID, agentID) - if err != nil { - return nil, err - } - header := map[string]string{} - for k, v := range args.Header { - header[k] = v - } - header[p.Name] = token - args.Header = header - } - resp, err := webexops.Call(ctx, c, hosts, op, args) - if op.Redact { - if resp != nil { - resp.Body = RedactSecrets(resp.Body) - } - err = RedactError(err) - } - return resp, err -} diff --git a/pkg/aiagent/aiagent_test.go b/pkg/aiagent/aiagent_test.go deleted file mode 100644 index f091a4d..0000000 --- a/pkg/aiagent/aiagent_test.go +++ /dev/null @@ -1,106 +0,0 @@ -package aiagent - -import ( - "context" - "encoding/json" - "errors" - "net/http" - "net/http/httptest" - "strings" - "testing" - - "github.com/Cloverhound/webex-cli/pkg/webexapi" - "github.com/Cloverhound/webex-cli/pkg/webexops" -) - -func studio(t *testing.T) (webexapi.Hosts, *[]*http.Request) { - t.Helper() - var seen []*http.Request - srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - seen = append(seen, r) - switch r.URL.Path { - case "/api/v2/organizations/org-1/agents/": - json.NewEncoder(w).Encode(map[string]any{ - "meta": map[string]any{"total_count": 2}, - "objects": []map[string]string{ - {"id": "a1", "name": "One", "bot_access_token": "token-1"}, - {"id": "a2", "name": "Two"}, - }, - }) - case "/api/v1/llmagent/export/": - io := `{"bot":{"bot_access_token":"token-1","name":"One"}}` - w.Write([]byte(io)) - default: - http.NotFound(w, r) - } - })) - t.Cleanup(srv.Close) - return webexapi.Hosts{AIAgent: srv.URL}, &seen -} - -func TestBotTokenFindsTheAgent(t *testing.T) { - hosts, _ := studio(t) - got, err := BotToken(context.Background(), &webexapi.Client{}, hosts, "org-1", "a1") - if err != nil || got != "token-1" { - t.Fatalf("BotToken = %q, %v", got, err) - } -} - -func TestBotTokenNamesAMissingAgent(t *testing.T) { - hosts, _ := studio(t) - c := &webexapi.Client{} - if _, err := BotToken(context.Background(), c, hosts, "org-1", "zz"); err == nil || !strings.Contains(err.Error(), "zz") { - t.Fatalf("err = %v", err) - } - if _, err := BotToken(context.Background(), c, hosts, "org-1", "a2"); err == nil { - t.Fatal("an agent without a token was accepted") - } - if _, err := BotToken(context.Background(), c, hosts, "", "a1"); err == nil { - t.Fatal("no organization was accepted") - } -} - -func TestCallSendsTheAgentTokenAndRedactsTheResponse(t *testing.T) { - hosts, seen := studio(t) - resp, err := Call(context.Background(), &webexapi.Client{}, hosts, "org-1", webexops.CCAiAgentExport, webexops.Args{}, "a1") - if err != nil { - t.Fatal(err) - } - last := (*seen)[len(*seen)-1] - if last.Header.Get("bot-access-token") != "token-1" { - t.Fatalf("token header = %q", last.Header.Get("bot-access-token")) - } - if strings.Contains(string(resp.Body), "token-1") || !strings.Contains(string(resp.Body), `"name":"One"`) { - t.Fatalf("body = %s", resp.Body) - } -} - -// A failed call's error repeats the response, so it is redacted too. -func TestCallRedactsTheErrorOfAFailedCall(t *testing.T) { - srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - if r.URL.Path == "/api/v2/organizations/org-1/agents/" { - json.NewEncoder(w).Encode(map[string]any{"objects": []map[string]string{{"id": "a1", "bot_access_token": "token-1"}}}) - return - } - w.WriteHeader(http.StatusBadRequest) - w.Write([]byte(`{"error":"bad","auth_token":"secret-token"}`)) - })) - defer srv.Close() - _, err := Call(context.Background(), &webexapi.Client{}, webexapi.Hosts{AIAgent: srv.URL}, "org-1", webexops.CCAiAgentExport, webexops.Args{}, "a1") - var apiErr *webexapi.APIError - if !errors.As(err, &apiErr) || apiErr.Status != 400 { - t.Fatalf("err = %v", err) - } - if strings.Contains(err.Error(), "secret-token") || strings.Contains(string(apiErr.Body), "secret-token") { - t.Fatalf("credential in the error: %v", err) - } -} - -func TestRedactSecretsKeepsTheRest(t *testing.T) { - in := `{"objects":[{"id":"a1","bot_access_token":"tok\"en","meta":{"auth_token":"x"}}],"user_access_token":null}` - got := string(RedactSecrets([]byte(in))) - want := `{"objects":[{"id":"a1","bot_access_token":"","meta":{"auth_token":""}}],"user_access_token":null}` - if got != want { - t.Fatalf("got %s\nwant %s", got, want) - } -} diff --git a/pkg/catalog/catalog.go b/pkg/catalog/catalog.go deleted file mode 100644 index 8a7c421..0000000 --- a/pkg/catalog/catalog.go +++ /dev/null @@ -1,171 +0,0 @@ -// Package catalog lists the Webex object types the SDK can read, and the ones it can -// write. Each type names the operations from pkg/webexops it uses, so a collection -// refresh that drops one fails to build. -// -// Writes on a Managed type were proven on a live tenant before it was marked so. -// Other types are read-only. -package catalog - -import ( - "fmt" - - "github.com/Cloverhound/webex-cli/pkg/resource" - "github.com/Cloverhound/webex-cli/pkg/webexops" -) - -// on binds an operation to a type. keys name the operation's path parameters that -// take the object's parent and ID, in that order. -func on(op *webexops.Operation, keys ...string) resource.Route { - r := resource.Route{Op: op} - if len(keys) > 0 { - r.Parent = keys[0] - } - if len(keys) > 1 { - r.ID = keys[1] - } - return r -} - -var huntGroup = resource.Type{ - Name: "hunt_group", - Title: "Hunt Group", - Plural: "Hunt Groups", - Area: resource.Calling, - Managed: true, - ParentField: "location_id", - LabelField: "name", - Write: resource.WriteDelta, - Routes: resource.Routes{ - List: on(webexops.CallingHuntGroupList), - Create: on(webexops.CallingHuntGroupCreate, "locationId"), - Read: on(webexops.CallingHuntGroupGet, "locationId", "huntGroupId"), - Update: on(webexops.CallingHuntGroupUpdate, "locationId", "huntGroupId"), - Delete: on(webexops.CallingHuntGroupDelete, "locationId", "huntGroupId"), - ArrayKey: "huntGroups", - ParentKey: "locationId", - ListIsPartial: true, - }, - Fields: huntGroupFields, - CreateDefaults: map[string]any{ - "agents": []any{}, - "callPolicies": map[string]any{ - "waitingEnabled": false, - "groupBusyEnabled": false, - "allowMembersToControlGroupBusyEnabled": false, - "noAnswer": map[string]any{ - "nextAgentEnabled": false, - "nextAgentRings": 5, - "forwardEnabled": false, - "destinationVoicemailEnabled": false, - }, - "busyRedirect": map[string]any{"enabled": false, "destinationVoicemailEnabled": false}, - "businessContinuityRedirect": map[string]any{"enabled": false, "destinationVoicemailEnabled": false}, - }, - }, -} - -var callQueue = resource.Type{ - Name: "call_queue", - Title: "Call Queue", - Plural: "Call Queues", - Area: resource.Calling, - Managed: true, - ParentField: "location_id", - LabelField: "name", - Write: resource.WriteDelta, - Routes: resource.Routes{ - List: on(webexops.CallingCallQueueListCustomerAssist), - Create: on(webexops.CallingCallQueueCreateCustomerAssist, "locationId"), - Read: on(webexops.CallingCallQueueGetCustomerAssist, "locationId", "queueId"), - Update: on(webexops.CallingCallQueueUpdate, "locationId", "queueId"), - Delete: on(webexops.CallingCallQueueDelete, "locationId", "queueId"), - ArrayKey: "queues", - ParentKey: "locationId", - ListIsPartial: true, - }, - Fields: callQueueFields, - CreateDefaults: map[string]any{ - "agents": []any{}, - "callPolicies": map[string]any{ - "callBounce": map[string]any{"callBounceEnabled": false}, - "distinctiveRing": map[string]any{"enabled": false}, - }, - "queueSettings": map[string]any{}, - }, -} - -var autoAttendant = resource.Type{ - Name: "auto_attendant", - Title: "Auto Attendant", - Plural: "Auto Attendants", - Area: resource.Calling, - Managed: true, - NoCreate: true, - NoDelete: true, - ParentField: "location_id", - LabelField: "name", - Write: resource.WriteDelta, - Routes: resource.Routes{ - List: on(webexops.CallingAutoAttendantList), - Read: on(webexops.CallingAutoAttendantGet, "locationId", "autoAttendantId"), - Update: on(webexops.CallingAutoAttendantUpdate, "locationId", "autoAttendantId"), - ArrayKey: "autoAttendants", - ParentKey: "locationId", - ListIsPartial: true, - }, - Fields: autoAttendantFields, -} - -var location = resource.Type{ - Name: "location", - Title: "Location", - Plural: "Locations", - Area: resource.Calling, - LabelField: "name", - Routes: resource.Routes{ - List: on(webexops.CallingLocationsList), - Read: on(webexops.CallingLocationsGet, "", "locationId"), - ArrayKey: "items", - }, - Fields: []resource.Field{ - {Name: "name", Path: "name"}, - {Name: "time_zone", Path: "timeZone"}, - {Name: "city", Path: "address.city"}, - }, -} - -// All lists every type in a stable order: Calling first, then Contact Center, each -// grouped by subject. Webex Admin Studio's sidebar follows it. -func All() []resource.Type { - var out []resource.Type - for _, group := range [][]resource.Type{ - {location}, callingOrganization, - {huntGroup, callQueue, autoAttendant}, callingRouting, - callingSchedules, callingPSTN, callingDevices, callingLocationSettings, callingOrgSettings, - centerTypes, - } { - out = append(out, group...) - } - return out -} - -// Managed lists the types that can be written. -func Managed() []resource.Type { - var out []resource.Type - for _, t := range All() { - if t.Managed { - out = append(out, t) - } - } - return out -} - -// ByName finds a type. -func ByName(name string) (resource.Type, error) { - for _, t := range All() { - if t.Name == name { - return t, nil - } - } - return resource.Type{}, fmt.Errorf("unknown object type %q", name) -} diff --git a/pkg/catalog/catalog_test.go b/pkg/catalog/catalog_test.go deleted file mode 100644 index 70b4798..0000000 --- a/pkg/catalog/catalog_test.go +++ /dev/null @@ -1,268 +0,0 @@ -package catalog - -import ( - "strings" - "testing" - - "github.com/Cloverhound/webex-cli/pkg/resource" - "github.com/Cloverhound/webex-cli/pkg/webexops" -) - -// Every path parameter of a route must have a value: the object's parent or ID, the -// org, or a fixed value. The operation's method must match the route's use. -func checkRoute(t *testing.T, typ resource.Type, use string, r resource.Route, method string) { - t.Helper() - if r.Op.Method != method { - t.Errorf("%s %s: %s is %s, want %s", typ.Name, use, r.Op.ID, r.Op.Method, method) - } - wantHost := webexops.HostWebex - if typ.Area == resource.ContactCenter { - wantHost = webexops.HostCC - } - if r.Op.Host != wantHost { - t.Errorf("%s %s: %s is on host %s", typ.Name, use, r.Op.ID, r.Op.Host) - } - if r.Parent != "" { - if _, ok := r.Op.Param(r.Parent); !ok { - t.Errorf("%s %s: %s has no parameter %s", typ.Name, use, r.Op.ID, r.Parent) - } - } - if r.ID != "" { - if _, ok := r.Op.Param(r.ID); !ok { - t.Errorf("%s %s: %s has no parameter %s", typ.Name, use, r.Op.ID, r.ID) - } - } - if _, err := r.Path(resource.Key{Parent: "p", ID: "i"}, "o"); err != nil { - t.Errorf("%s %s: %v", typ.Name, use, err) - } - for name := range r.Query { - if p, ok := r.Op.Param(name); !ok || p.In != webexops.InQuery { - t.Errorf("%s %s: %s has no query parameter %s", typ.Name, use, r.Op.ID, name) - } - } -} - -func TestEveryRouteNamesAMatchingOperation(t *testing.T) { - for _, typ := range All() { - r := typ.Routes - if !r.List.Defined() { - t.Errorf("%s has no list operation", typ.Name) - continue - } - checkRoute(t, typ, "list", r.List, "GET") - if r.PerLocation != (r.List.Parent != "") { - t.Errorf("%s: a per-location list, and only one, binds the location", typ.Name) - } - if r.Read.Defined() { - checkRoute(t, typ, "read", r.Read, "GET") - } - if r.Create.Defined() { - checkRoute(t, typ, "create", r.Create, "POST") - } - if r.Update.Defined() { - method := "PUT" - if typ.Write == resource.WritePatch { - method = "PATCH" - } - checkRoute(t, typ, "update", r.Update, method) - } - if r.Delete.Defined() { - checkRoute(t, typ, "delete", r.Delete, "DELETE") - } - if !typ.Managed { - if r.Create.Defined() || r.Update.Defined() || r.Delete.Defined() { - t.Errorf("%s is read-only but has a write operation", typ.Name) - } - continue - } - if !r.Update.Defined() || (!r.Read.Defined() && !r.ReadByFilter) { - t.Errorf("%s is managed but cannot be read and updated", typ.Name) - } - if typ.NoCreate == r.Create.Defined() || typ.NoDelete == r.Delete.Defined() { - t.Errorf("%s: NoCreate and NoDelete must match the operations it has", typ.Name) - } - for _, item := range []resource.Route{r.Read, r.Update, r.Delete} { - if item.Defined() && item.ID == "" { - t.Errorf("%s: %s does not bind the object's ID", typ.Name, item.Op.ID) - } - if item.Defined() && (typ.ParentField != "") != (item.Parent != "") { - t.Errorf("%s: %s must bind a parent exactly when the type has one", typ.Name, item.Op.ID) - } - } - } -} - -func TestEveryTypeIsWellFormed(t *testing.T) { - seen := map[string]bool{} - for _, typ := range All() { - if seen[typ.Name] { - t.Errorf("%s is listed twice", typ.Name) - } - seen[typ.Name] = true - if typ.Title == "" || typ.Plural == "" { - t.Errorf("%s is incomplete: %+v", typ.Name, typ) - } - if typ.Routes.Singleton { - continue - } - if _, ok := typ.Field(typ.LabelField); !ok && typ.LabelField != "" { - t.Errorf("%s has no label field %q", typ.Name, typ.LabelField) - } - if typ.Area == resource.Calling && typ.Routes.ArrayKey == "" { - t.Errorf("%s needs an array key", typ.Name) - } - if typ.ParentField != "" { - if f, ok := typ.Field(typ.ParentField); !ok || f.Path != "" || !f.Immutable { - t.Errorf("%s parent field must be an immutable field with no path", typ.Name) - } - } - for _, f := range typ.Fields { - if (f.Kind == resource.ObjectList) != (len(f.Item) > 0) { - t.Errorf("%s.%s: only a row list has item fields, and it needs them", typ.Name, f.Name) - } - if f.MatchKey != "" { - if _, ok := (resource.Type{Fields: f.Item}).Field(f.MatchKey); !ok { - t.Errorf("%s.%s matches rows on unknown field %q", typ.Name, f.Name, f.MatchKey) - } - } - if f.Unordered && f.Kind == resource.ObjectList && f.MatchKey == "" { - t.Errorf("%s.%s: unordered rows need a match key to sort by", typ.Name, f.Name) - } - if f.Unique && (f.Kind != resource.String || f.Immutable || f.Name == typ.LabelField) { - t.Errorf("%s.%s: only editable text other than the label is marked unique; the rest are never bulk-edited anyway", typ.Name, f.Name) - } - if f.Needs != "" { - if _, ok := typ.Field(f.Needs); !ok { - t.Errorf("%s.%s needs unknown field %q", typ.Name, f.Name, f.Needs) - } - } - if f.OptionScope != "" { - if _, ok := typ.Field(f.OptionScope); !ok || f.OptionSource == "" { - t.Errorf("%s.%s: choices scoped by %q need an option source and a field of that name", typ.Name, f.Name, f.OptionScope) - } - } - } - } -} - -func TestFormatsAreKnownAndOnText(t *testing.T) { - known := map[string]bool{"": true, resource.Date: true, resource.Time: true, resource.DateTime: true} - for _, typ := range All() { - for _, f := range append(append([]resource.Field{}, typ.Fields...), itemFields(typ)...) { - if !known[f.Format] || (f.Format != "" && (f.Kind != resource.String || f.Options != nil || f.Ref != "")) { - t.Errorf("%s.%s: format %q needs a plain text field", typ.Name, f.Name, f.Format) - } - } - } -} - -func TestPatternsCompileAndExplainThemselves(t *testing.T) { - for _, typ := range All() { - for _, f := range append(append([]resource.Field{}, typ.Fields...), itemFields(typ)...) { - if f.Pattern == "" && f.PatternHint == "" { - continue - } - if f.Kind != resource.String || f.Options != nil || f.PatternHint == "" { - t.Errorf("%s.%s: a pattern needs a plain text field and a hint", typ.Name, f.Name) - } - if err := f.Check("x"); err != nil && strings.HasPrefix(err.Error(), "pattern ") { - t.Errorf("%s.%s: %v", typ.Name, f.Name, err) - } - } - } -} - -func TestGlobalVariableNamesTakeOnlyLettersDigitsAndUnderscores(t *testing.T) { - typ, _ := ByName("cc_global_variable") - name, _ := typ.Field("name") - // Accepted and refused by Webex on a live tenant. - for _, ok := range []string{"zz_live_Var2", "9zz", "_", "12345", strings.Repeat("a", 80)} { - if err := name.Check(ok); err != nil { - t.Errorf("%q: %v", ok, err) - } - } - for _, bad := range []string{"zz-live-var", "zz var", "zz.var", "zz_probé", "zz_π", "zz_日本", "zz_٣", strings.Repeat("a", 81)} { - if name.Check(bad) == nil { - t.Errorf("%q was allowed", bad) - } - } - for _, f := range []string{"description", "active"} { - if _, ok := typ.Field(f); !ok { - t.Errorf("lost %s", f) - } - } - other, _ := ByName("cc_skill") - if f, _ := other.Field("name"); f.Pattern != "" { - t.Fatal("the rule is the global variable's alone") - } -} - -func TestASkillKeepsItsNameButATeamDoesNot(t *testing.T) { - skill, _ := ByName("cc_skill") - if f, ok := skill.Field("name"); !ok || f.Path != "name" || !f.Immutable { - t.Fatalf("skill name = %+v", f) - } - for _, f := range []string{"description", "active", "skill_type"} { - if _, ok := skill.Field(f); !ok { - t.Errorf("lost %s", f) - } - } - team, _ := ByName("cc_team") - if f, _ := team.Field("name"); f.Immutable { - t.Fatal("only the skill's name has been seen to be fixed") - } -} - -func TestReferencesPointAtKnownTypes(t *testing.T) { - for _, typ := range All() { - for _, f := range append(append([]resource.Field{}, typ.Fields...), itemFields(typ)...) { - if f.Ref == "" { - continue - } - if _, err := ByName(f.Ref); err != nil { - t.Errorf("%s.%s references unknown type %q", typ.Name, f.Name, f.Ref) - } - } - } -} - -func itemFields(typ resource.Type) []resource.Field { - var out []resource.Field - for _, f := range typ.Fields { - out = append(out, f.Item...) - } - return out -} - -func TestFieldPathsAreUnique(t *testing.T) { - for _, typ := range Managed() { - paths := map[string]bool{} - for _, f := range typ.Fields { - if f.Path != "" && paths[f.Path] { - t.Errorf("%s has two fields at %s", typ.Name, f.Path) - } - paths[f.Path] = true - } - } -} - -func TestContactCenterTypesUseFullWrites(t *testing.T) { - for _, typ := range Managed() { - if typ.Area == resource.ContactCenter && typ.Write == resource.WriteDelta { - t.Errorf("%s: every live CC PUT rejects a partial body", typ.Name) - } - } -} - -func TestManagedTypesCoverV1(t *testing.T) { - want := []string{"hunt_group", "call_queue", "auto_attendant", "cc_team", "cc_skill", "cc_business_hours", "cc_queue", "cc_entry_point"} - got := map[string]bool{} - for _, typ := range Managed() { - got[typ.Name] = true - } - for _, name := range want { - if !got[name] { - t.Errorf("missing %s", name) - } - } -} diff --git a/pkg/catalog/center.go b/pkg/catalog/center.go deleted file mode 100644 index 09f635f..0000000 --- a/pkg/catalog/center.go +++ /dev/null @@ -1,538 +0,0 @@ -package catalog - -import ( - "github.com/Cloverhound/webex-cli/pkg/resource" - "github.com/Cloverhound/webex-cli/pkg/webexops" -) - -// Contact Center types. Every CC PUT replaces the whole object, so each type writes a -// fresh read with the changes laid over it. Routes and required create fields were -// checked on a live tenant; a type without a create or delete operation is one Webex -// would not create or delete through this API. - -var ( - accessAll = []string{"ALL", "SPECIFIC"} - accessAllOrNone = []string{"ALL", "SPECIFIC", "NONE"} - workTypeCodes = []string{"IDLE_CODE", "WRAP_UP_CODE"} - burnoutInclusion = []string{"INCLUDED", "EXCLUDED", "NOT_APPLICABLE"} - variableTypes = []string{"String", "Boolean", "Integer", "Decimal", "DateTime"} - blendingModes = []string{"BLENDED", "BLENDED_REALTIME", "EXCLUSIVE"} - channelTypes = []string{"TELEPHONY", "CHAT", "EMAIL", "SOCIAL_CHANNEL"} - directions = []string{"INBOUND", "OUTBOUND"} - queueRoutingTypes = []string{"TEAM_BASED", "SKILL_BASED", "AGENT_BASED"} - routingTypes = []string{"LONGEST_AVAILABLE_AGENT", "BEST_AVAILABLE_AGENT", "LINEAR", "CIRCULAR"} - skillTypes = []string{"PROFICIENCY", "BOOLEAN", "TEXT"} - weekDays = []string{"MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"} - loginVoice = []string{"BROWSER", "EXTENSION", "AGENT_DN"} - dnValidation = []string{"NONE", "PROVISIONED_VALUE"} - parentTypes = []string{"ORGANIZATION", "SITE"} - profileTypes = []string{"ADMINISTRATOR", "ADMINISTRATOR_ONLY", "SUPERVISOR", "PREMIUM_AGENT", "STANDARD_AGENT"} - enabledDisabled = []string{"ENABLED", "DISABLED"} - inclusionType = []string{"ALL", "SPECIFIC"} - includedExcluded = []string{"INCLUDED", "EXCLUDED"} - permissionAccess = []string{"EDIT", "VIEW", "ENABLED", "DISABLED", "NONE"} - - // The permission names Webex uses in user profiles. - permissionNames = []string{"additional-supervisory", "address-book", "agent-personalized-greeting", "agent-wellbeing", - "analyzer", "api-key", "asset", "audio-prompt", "audio-recording-transcript", "auto-csat", "barge-in", "basic-digital", - "business-rules-engine", "call-monitoring", "call-recording-schedule", "change-agent-state", "channel", "custom-channel", - "desktop-layout", "desktop-profile", "download", "entry-point", "flow", "flow-settings-override", "function", - "generated-summary", "global-variable", "holiday-list", "idle-wrapup-code", "manage-agent-queues-assignment", - "mid-call-monitor", "multimedia", "multimedia-profile", "outdial-ani", "override", "personalized-ai-routing", "play", - "queue", "quick-reply", "real-time-transcription", "reskill-agent", "resource-collection", "restricted-monitor-only", - "routing-strategy", "schedule-listening", "send-message", "sentiment-analysis", "sign-out-agent", "site", - "skill-definition", "skill-profile", "social-channel", "suggested-response", "support-number", "team", "tenant-setting", - "threshold-rule", "user", "user-profile", "view-blind-monitor-request", "web-chat-asset", "whisper-coach", "working-hour"} - - // The resource types a resource collection lists. Webex expects these lowercase - // names; uppercase ones fail with a 500. It adds "channel" itself if it is left out. - resourceTypes = []string{"address-book", "audio-prompt", "cad-variable", "channel", "desktop-layout", "desktop-profile", "entry-point", - "flow", "function", "holiday-list", "idle-wrapup-code", "multimedia-profile", "outdial-ani", "override", "queue", - "site", "skill-definition", "skill-profile", "sub-flow", "team", "working-hour"} -) - -func ref(name, path, target string) resource.Field { - return resource.Field{Name: name, Path: path, Ref: target} -} - -// refs is an unordered list of IDs. List references stay literal IDs in config, so they -// may point at any type, including one that points back. -func refs(name, path, target string) resource.Field { - return resource.Field{Name: name, Path: path, Kind: resource.StringList, Ref: target, Unordered: true} -} - -func picks(name, path string, options []string) resource.Field { - return resource.Field{Name: name, Path: path, Kind: resource.StringList, Options: options, Unordered: true} -} - -func when(name, path, format string) resource.Field { - return resource.Field{Name: name, Path: path, Format: format} -} - -func required(f resource.Field) resource.Field { - f.Required = true - return f -} - -func fixed(f resource.Field) resource.Field { - f.Immutable = true - return f -} - -func unique(f resource.Field) resource.Field { - f.Unique = true - return f -} - -func matching(f resource.Field, pattern, hint string) resource.Field { - f.Pattern, f.PatternHint = pattern, hint - return f -} - -func needs(f resource.Field, other string) resource.Field { - f.Needs = other - return f -} - -func scoped(f resource.Field, by string) resource.Field { - f.OptionScope = by - return f -} - -func rows(name, path, key string, unordered bool, item ...resource.Field) resource.Field { - return resource.Field{Name: name, Path: path, Kind: resource.ObjectList, MatchKey: key, Unordered: unordered, Item: item} -} - -func basics() []resource.Field { - return []resource.Field{text("name", "name"), text("description", "description"), flag("active", "active")} -} - -// ccRoutes binds a CC type's operations. Item operations take the object's ID as -// {id}. A nil operation is an action Webex does not offer for the type. -func ccRoutes(list, create, read, update, del *webexops.Operation) resource.Routes { - r := resource.Routes{List: on(list), Updated: "lastUpdatedTime"} - if create != nil { - r.Create = on(create) - } - if read != nil { - r.Read = on(read, "", "id") - } - if update != nil { - r.Update = on(update, "", "id") - } - if del != nil { - r.Delete = on(del, "", "id") - } - return r -} - -// managedCC defines a writable CC type. A type with an active field is created active -// unless the create says otherwise, because Webex requires the value. -func managedCC(name, title, plural string, routes resource.Routes, fields ...[]resource.Field) resource.Type { - t := resource.Type{Name: name, Title: title, Plural: plural, Area: resource.ContactCenter, - Managed: true, LabelField: "name", Write: resource.WriteFull, Routes: routes, Fields: joined(fields...)} - t.NoCreate = !routes.Create.Defined() - t.NoDelete = !routes.Delete.Defined() - if _, ok := t.Field("active"); ok { - t.CreateDefaults = map[string]any{"active": true} - } - return t -} - -func withDefaults(t resource.Type, defaults map[string]any) resource.Type { - if t.CreateDefaults == nil { - t.CreateDefaults = map[string]any{} - } - for k, v := range defaults { - t.CreateDefaults[k] = v - } - return t -} - -// settingsCC defines an org-wide CC settings object: one per org, edited but never -// created or deleted. -func settingsCC(name, title string, list, read, update *webexops.Operation, fs ...resource.Field) resource.Type { - t := managedCC(name, title, title, ccRoutes(list, nil, read, update, nil), fs) - t.LabelField = "" - t.CreateDefaults = nil - return t -} - -// Agents & Teams - -var ccMultimediaProfile = withDefaults(managedCC("cc_multimedia_profile", "Multimedia Profile", "Multimedia Profiles", - ccRoutes(webexops.CCMultimediaProfileList, webexops.CCMultimediaProfileCreate, webexops.CCMultimediaProfileGet, webexops.CCMultimediaProfileUpdate, webexops.CCMultimediaProfileDelete), - append(basics(), choice("blending_mode", "blendingMode", blendingModes), flag("blending_enabled", "blendingModeEnabled")), - fields(number("telephony", "telephony"), number("chat", "chat"), number("email", "email"), number("social", "social")), - fields(number("manual_chat", "manuallyAssignable.chat"), number("manual_email", "manuallyAssignable.email"), - number("manual_social", "manuallyAssignable.social")), -), map[string]any{ - "blendingMode": "BLENDED", "blendingModeEnabled": false, "telephony": 1, "chat": 0, "email": 0, "social": 0, - "manuallyAssignable": map[string]any{"chat": 0, "email": 0, "social": 0, "telephony": 0}, -}) - -var ccSite = managedCC("cc_site", "Site", "Sites", - ccRoutes(webexops.CCSiteListV1, webexops.CCSiteCreate, webexops.CCSiteGet, webexops.CCSiteUpdate, webexops.CCSiteDelete), - append(basics(), required(ref("multimedia_profile_id", "multimediaProfileId", "cc_multimedia_profile")))) - -// Webex refuses an update that changes a skill's name. -var ccSkill = managedCC("cc_skill", "Skill", "Skills", - ccRoutes(webexops.CCSkillListV1, webexops.CCSkillCreate, webexops.CCSkillGet, webexops.CCSkillUpdate, webexops.CCSkillDelete), - append(append([]resource.Field{fixed(text("name", "name"))}, basics()[1:]...), - required(fixed(choice("skill_type", "skillType", skillTypes))), - number("service_level_threshold", "serviceLevelThreshold"))) - -var ccSkillProfile = func() resource.Type { - t := managedCC("cc_skill_profile", "Skill Profile", "Skill Profiles", - ccRoutes(webexops.CCSkillProfileList, webexops.CCSkillProfileCreate, webexops.CCSkillProfileGet, webexops.CCSkillProfileUpdate, webexops.CCSkillProfileDelete), - fields(text("name", "name"), text("description", "description")), - fields(rows("skills", "activeSkills", "skill_id", true, - required(ref("skill_id", "skillId", "cc_skill")), number("proficiency", "proficiencyValue"), - flag("value", "booleanValue"), text("text", "textValue")))) - t.Routes.ListIsPartial = true - return t -}() - -// A new desktop layout starts as a copy of the org's global layout file, because Webex -// requires a layout file and the model does not cover its content. -var ccDesktopLayout = func() resource.Type { - t := withDefaults(managedCC("cc_desktop_layout", "Desktop Layout", "Desktop Layouts", - ccRoutes(webexops.CCDesktopLayoutList, webexops.CCDesktopLayoutCreate, webexops.CCDesktopLayoutGet, webexops.CCDesktopLayoutUpdate, webexops.CCDesktopLayoutDelete), - fields(text("name", "name"), text("description", "description"), flag("status", "status"), - fixed(flag("global", "global"))), - fields(refs("team_ids", "teamIds", "cc_team"))), - map[string]any{"global": false, "status": true, "validated": false, "defaultJsonModified": false, - "editedBy": "Webex Admin Studio", "jsonFileName": "Desktop Layout.json", "teamIds": []any{}}) - t.CopyOnCreate = &resource.Copy{Match: map[string]any{"global": true}, Keys: []string{"jsonFileContent"}} - return t -}() - -var ccTeam = withDefaults(managedCC("cc_team", "Team", "Teams", - ccRoutes(webexops.CCTeamListV1, webexops.CCTeamCreate, webexops.CCTeamGet, webexops.CCTeamUpdate, webexops.CCTeamDelete), - append(basics(), - required(ref("site_id", "siteId", "cc_site")), - choice("team_type", "teamType", teamTypes), choice("team_status", "teamStatus", teamStatuses), - number("capacity", "capacity"), unique(text("dialed_number", "dialedNumber"))), - fields( - flag("rank_queues", "rankQueuesForTeam"), - ref("desktop_layout_id", "desktopLayoutId", "cc_desktop_layout"), - ref("multimedia_profile_id", "multiMediaProfileId", "cc_multimedia_profile"), - ref("skill_profile_id", "skillProfileId", "cc_skill_profile")), -), map[string]any{"rankQueuesForTeam": false, "teamType": "AGENT", "teamStatus": "IN_SERVICE"}) - -// Each user profile type requires its own permissions, and Webex refuses a profile -// whose permissions duplicate another's. New permissions carry no ID: copying one from -// another profile is refused as a duplicate. -var ccUserProfile = func() resource.Type { - t := withDefaults(managedCC("cc_user_profile", "User Profile", "User Profiles", - ccRoutes(webexops.CCUserProfilesList, webexops.CCUserProfilesCreate, webexops.CCUserProfilesGet, webexops.CCUserProfilesUpdate, webexops.CCUserProfilesDelete), - append(basics(), required(fixed(choice("profile_type", "profileType", profileTypes))), - choice("permission_access", "permissionAccessLevel", accessAllOrNone), - choice("resource_access", "resourceAccessLevel", accessAllOrNone)), - fields(rows("permissions", "permissions", "name", true, - required(choice("name", "name", permissionNames)), required(choice("access", "access", permissionAccess))))), - map[string]any{"permissionAccessLevel": "SPECIFIC", "resourceAccessLevel": "ALL", - "permissions": []any{map[string]any{"name": "basic-digital", "access": "ENABLED"}, map[string]any{"name": "multimedia", "access": "EDIT"}}}) - t.Routes.ListIsPartial = true - return t -}() - -// Webex requires a resource collection to list every resource type, and refuses NONE -// for sites, teams, queues and entry points. The IDs a SPECIFIC row names are kept on -// writes but not edited here. -var ccResourceCollection = func() resource.Type { - defaults := []any{} - for _, name := range resourceTypes { - defaults = append(defaults, map[string]any{"name": name, "accessLevel": "ALL", "ids": []any{}}) - } - t := withDefaults(managedCC("cc_resource_collection", "Resource Collection", "Resource Collections", - ccRoutes(webexops.CCResourceCollectionList, webexops.CCResourceCollectionCreate, webexops.CCResourceCollectionGet, webexops.CCResourceCollectionUpdate, webexops.CCResourceCollectionDelete), - fields(text("name", "name"), text("description", "description")), - fields(rows("resources", "resources", "resource", true, - required(choice("resource", "name", resourceTypes)), required(choice("access", "accessLevel", accessAllOrNone))))), - map[string]any{"resources": defaults}) - t.Routes.ListIsPartial = true - return t -}() - -// Business Hours - -var ccHolidayList = func() resource.Type { - t := managedCC("cc_holiday_list", "Holiday List", "Holiday Lists", - ccRoutes(webexops.CCHolidayListList, webexops.CCHolidayListCreate, webexops.CCHolidayListGet, webexops.CCHolidayListUpdate, webexops.CCHolidayListDelete), - fields(text("name", "name"), text("description", "description")), - fields(rows("holidays", "holidays", "name", false, - required(text("name", "name")), required(when("start_date", "startDate", resource.Date)), required(when("end_date", "endDate", resource.Date))))) - t.Routes.ListIsPartial = true - return t -}() - -var ccOverride = func() resource.Type { - t := managedCC("cc_override", "Override", "Overrides", - ccRoutes(webexops.CCOverridesList, webexops.CCOverridesCreate, webexops.CCOverridesGet, webexops.CCOverridesUpdate, webexops.CCOverridesDelete), - fields(text("name", "name"), text("description", "description"), - required(sourced("timezone", "timezone", resource.TimeZones))), - fields(rows("overrides", "overrides", "name", false, - required(text("name", "name")), flag("working_hours", "workingHours"), - required(when("start", "startDateTime", resource.DateTime)), required(when("end", "endDateTime", resource.DateTime))))) - t.Routes.ListIsPartial = true - return t -}() - -var ccBusinessHours = func() resource.Type { - t := managedCC("cc_business_hours", "Business Hours", "Business Hours", - ccRoutes(webexops.CCBusinessHourListV1, webexops.CCBusinessHourCreate, webexops.CCBusinessHourGet, webexops.CCBusinessHourUpdate, webexops.CCBusinessHourDelete), - fields(text("name", "name"), text("description", "description"), - required(sourced("timezone", "timezone", resource.TimeZones)), - ref("holidays_id", "holidaysId", "cc_holiday_list"), ref("overrides_id", "overridesId", "cc_override")), - fields(rows("working_hours", "workingHours", "name", true, - required(text("name", "name")), picks("days", "days", weekDays), - required(when("start_time", "startTime", resource.Time)), required(when("end_time", "endTime", resource.Time))))) - t.Routes.ListIsPartial = true - return t -}() - -// Routing - -var ccQueue = func() resource.Type { - t := withDefaults(managedCC("cc_queue", "Queue", "Queues", - ccRoutes(webexops.CCContactServiceQueueListV2, webexops.CCContactServiceQueueCreate, webexops.CCContactServiceQueueGet, webexops.CCContactServiceQueueUpdate, webexops.CCContactServiceQueueDelete), - append(basics(), - fixed(choice("channel_type", "channelType", channelTypes)), fixed(choice("queue_type", "queueType", directions)), - fixed(choice("queue_routing_type", "queueRoutingType", queueRoutingTypes)), - choice("routing_type", "routingType", routingTypes), - required(sourced("timezone", "timezone", resource.TimeZones)), - required(ref("default_music_id", "defaultMusicInQueueMediaFileId", "cc_audio_file"))), - fields( - number("max_active_contacts", "maxActiveContacts"), number("max_time_in_queue", "maxTimeInQueue"), - number("service_level_threshold", "serviceLevelThreshold"), - flag("check_agent_availability", "checkAgentAvailability"), flag("manually_assignable", "manuallyAssignable")), - fields(rows("distribution_groups", "callDistributionGroups", "order", false, - required(number("order", "order")), number("duration", "duration"), - resource.Field{Name: "team_ids", Path: "agentGroups[].teamId", Kind: resource.StringList, Ref: "cc_team"})), - fields( - flag("monitoring_permitted", "monitoringPermitted"), flag("parking_permitted", "parkingPermitted"), - flag("recording_permitted", "recordingPermitted"), flag("record_all_calls", "recordingAllCallsPermitted"), - flag("pause_recording", "pauseRecordingPermitted"), number("recording_pause_seconds", "recordingPauseDuration")), - fields( - choice("auto_csat", "queueLevelAutoCsatInclusion", includedExcluded), - choice("realtime_transcriptions", "queueLevelRealTimeTranscriptionsInclusion", includedExcluded), - choice("sentiment_analysis", "queueLevelSentimentAnalysisInclusion", includedExcluded), - choice("generated_summaries", "queueLevelSummariesInclusion", includedExcluded)), - ), map[string]any{ - "queueType": "INBOUND", "channelType": "TELEPHONY", "queueRoutingType": "TEAM_BASED", "routingType": "LONGEST_AVAILABLE_AGENT", - "checkAgentAvailability": false, "maxActiveContacts": 0, "maxTimeInQueue": 600, "serviceLevelThreshold": 30, - "monitoringPermitted": false, "parkingPermitted": false, "recordingPermitted": false, - "recordingAllCallsPermitted": false, "pauseRecordingPermitted": false, "callDistributionGroups": []any{}, - }) - t.Routes.ListIsPartial = true - return t -}() - -// ccFlow lists Flow Designer flows, which entry points run. The project ID is the same -// fixed value for every org, and the list pages by size, not pageSize. -var ccFlow = center("cc_flow", "Flow", "Flows", - resource.Route{Op: webexops.CCFlowList, Query: map[string]string{"flowType": "FLOW", "includePagination": "true", "size": "100"}}, "name", - text("name", "name"), text("description", "description"), text("status", "status")) - -// An entry point runs one version of a flow, named by one of the flow's tags, such as -// Live or Latest. Webex refuses a tag that points at no published version. -var ccEntryPoint = withDefaults(managedCC("cc_entry_point", "Entry Point", "Entry Points", - ccRoutes(webexops.CCEntryPointListV1, webexops.CCEntryPointCreate, webexops.CCEntryPointGet, webexops.CCEntryPointUpdate, webexops.CCEntryPointDelete), - append(basics(), - fixed(choice("channel_type", "channelType", channelTypes)), fixed(choice("entry_point_type", "entryPointType", directions)), - required(sourced("timezone", "timezone", resource.TimeZones)), - number("maximum_active_contacts", "maximumActiveContacts"), number("service_level_threshold", "serviceLevelThreshold"), - ref("music_on_hold_id", "musicOnHoldId", "cc_audio_file")), - fields(needs(ref("flow_id", "flowId", "cc_flow"), "music_on_hold_id"), scoped(sourced("flow_version", "flowTagId", resource.FlowTags), "flow_id")), - fields( - flag("callback_enabled", "callbackEnabled"), flag("outdial_transfer_to_queue", "outdialTransferToQueueEnabled"), - ref("outdial_queue_id", "outdialQueueId", "cc_queue")), -), map[string]any{"entryPointType": "INBOUND", "channelType": "TELEPHONY", "serviceLevelThreshold": 30, "maximumActiveContacts": 0}) - -var ccDialPlan = managedCC("cc_dial_plan", "Dial Plan", "Dial Plans", - ccRoutes(webexops.CCDialPlanList, webexops.CCDialPlanCreate, webexops.CCDialPlanGet, webexops.CCDialPlanUpdate, webexops.CCDialPlanDelete), - append(basics(), required(text("regular_expression", "regularExpression")), - text("prefix", "prefix"), text("stripped_chars", "strippedChars"))) - -var ccOutdialANI = func() resource.Type { - t := managedCC("cc_outdial_ani", "Outdial ANI", "Outdial ANIs", - ccRoutes(webexops.CCOutdialAniList, webexops.CCOutdialAniCreate, webexops.CCOutdialAniGet, webexops.CCOutdialAniUpdate, webexops.CCOutdialAniDelete), - fields(text("name", "name"), text("description", "description")), - fields(rows("numbers", "outdialANIEntries", "number", true, - required(text("name", "name")), required(text("number", "number")), flag("default", "defaultANIEntry")))) - t.Routes.ListIsPartial = true - return t -}() - -var ccContactNumber = func() resource.Type { - t := managedCC("cc_contact_number", "Contact Number", "Contact Numbers", - ccRoutes(webexops.CCContactNumberList, webexops.CCContactNumberCreate, webexops.CCContactNumberGet, webexops.CCContactNumberUpdate, webexops.CCContactNumberDelete), - fields(required(text("number", "number")))) - t.LabelField = "number" - return t -}() - -var ccAddressBook = withDefaults(managedCC("cc_address_book", "Address Book", "Address Books", - ccRoutes(webexops.CCAddressBookList, webexops.CCAddressBookCreate, webexops.CCAddressBookGet, webexops.CCAddressBookUpdate, webexops.CCAddressBookDelete), - fields(text("name", "name"), text("description", "description"), - fixed(choice("parent_type", "parentType", parentTypes)), ref("site_id", "siteId", "cc_site"))), - map[string]any{"parentType": "ORGANIZATION"}) - -// ccDialNumber maps one number to one entry point, so an entry point's phone numbers -// are the dial numbers that name it. It cannot be created here: Webex needs a number -// the org already owns and its CC location, which come from Control Hub's number -// assignment. -var ccDialNumber = func() resource.Type { - t := managedCC("cc_dial_number", "Dial Number", "Dial Numbers", - ccRoutes(webexops.CCDialNumberListDialedMapping, nil, webexops.CCDialNumberGetDialedMappingId, webexops.CCDialNumberUpdateDialedMappingId, webexops.CCDialNumberDeleteDialedMappingId), - fields(fixed(text("dialled_number", "dialledNumber")), unique(text("extension", "extension")), - ref("entry_point_id", "entryPointId", "cc_entry_point"), flag("default_ani", "defaultAni"))) - t.LabelField = "dialled_number" - t.FallbackLabelField = "extension" - return t -}() - -// Desktop & Media - -// Work type item reads return 406, so a work type is read through the list with an -// id filter. -var ccWorkType = func() resource.Type { - t := managedCC("cc_work_type", "Work Type", "Work Types", - ccRoutes(webexops.CCWorkTypesList, webexops.CCWorkTypesCreate, nil, webexops.CCWorkTypesUpdate, webexops.CCWorkTypesDelete), - append(basics(), required(fixed(choice("work_type_code", "workTypeCode", workTypeCodes))))) - t.Routes.ReadByFilter = true - return t -}() - -var ccAuxiliaryCode = withDefaults(managedCC("cc_auxiliary_code", "Idle or Wrap-Up Code", "Idle & Wrap-Up Codes", - ccRoutes(webexops.CCAuxiliaryCodeList, webexops.CCAuxiliaryCodeCreate, webexops.CCAuxiliaryCodeGet, webexops.CCAuxiliaryCodeUpdate, webexops.CCAuxiliaryCodeDelete), - append(basics(), - required(fixed(choice("work_type_code", "workTypeCode", workTypeCodes))), - required(ref("work_type_id", "workTypeId", "cc_work_type")), - flag("default_code", "defaultCode"), choice("burnout_inclusion", "burnoutInclusion", burnoutInclusion)), -), map[string]any{"defaultCode": false, "isSystemCode": false}) - -// Webex refuses a global variable name longer than 80 characters or with any -// character other than an ASCII letter, digit or underscore. -var ccGlobalVariable = withDefaults(managedCC("cc_global_variable", "Global Variable", "Global Variables", - ccRoutes(webexops.CCGlobalVariablesList, webexops.CCGlobalVariablesCreate, webexops.CCGlobalVariablesGet, webexops.CCGlobalVariablesUpdate, webexops.CCGlobalVariablesDelete), - append(append([]resource.Field{matching(text("name", "name"), `[A-Za-z0-9_]{1,80}`, - "Use only letters A–Z, digits and _, up to 80 characters")}, - basics()[1:]...), - required(fixed(choice("variable_type", "variableType", variableTypes))), text("default_value", "defaultValue"), - text("desktop_label", "desktopLabel")), - fields(flag("agent_viewable", "agentViewable"), flag("agent_editable", "agentEditable"), - flag("reportable", "reportable"), flag("sensitive", "sensitive")), -), map[string]any{"agentViewable": false, "agentEditable": false, "reportable": false}) - -// ccAudioFile is edited with PATCH: its PUT and POST take a multipart file upload, so -// files are added in Control Hub and only the description is edited here. -var ccAudioFile = func() resource.Type { - t := managedCC("cc_audio_file", "Audio File", "Audio Files", - ccRoutes(webexops.CCAudioFilesList, nil, webexops.CCAudioFilesGet, webexops.CCAudioFilesPatch, webexops.CCAudioFilesDelete), - fields(fixed(text("name", "name")), text("description", "description"))) - t.Write = resource.WritePatch - return t -}() - -// Desktop profiles come after the types their single references point at, so config -// can refer to those objects by address. -var ccDesktopProfile = func() resource.Type { - t := withDefaults(managedCC("cc_agent_profile", "Desktop Profile", "Desktop Profiles", - ccRoutes(webexops.CCDesktopProfileList, webexops.CCDesktopProfileCreate, webexops.CCDesktopProfileGet, webexops.CCDesktopProfileUpdate, webexops.CCDesktopProfileDelete), - basics(), - fields( - choice("idle_code_access", "accessIdleCode", accessAll), refs("idle_codes", "idleCodes", "cc_auxiliary_code"), - choice("wrap_up_code_access", "accessWrapUpCode", accessAll), refs("wrap_up_codes", "wrapUpCodes", "cc_auxiliary_code"), - choice("queue_access", "accessQueue", accessAllOrNone), refs("queues", "queues", "cc_queue"), - choice("entry_point_access", "accessEntryPoint", accessAllOrNone), refs("entry_points", "entryPoints", "cc_entry_point"), - choice("buddy_team_access", "accessBuddyTeam", accessAllOrNone), refs("buddy_teams", "buddyTeams", "cc_team")), - fields( - picks("login_voice_options", "loginVoiceOptions", loginVoice), - flag("auto_answer", "autoAnswer"), flag("auto_wrap_up", "autoWrapUp"), - number("auto_wrap_after_seconds", "autoWrapAfterSeconds"), flag("allow_auto_wrap_up_extension", "allowAutoWrapUpExtension"), - flag("screen_popup", "screenPopup"), flag("last_agent_routing", "lastAgentRouting"), - flag("consult_to_queue", "consultToQueue"), flag("manage_channel_availability", "manageChannelAvailability"), - flag("auto_accept_digital", "autoAcceptDigitalInteractions"), flag("personal_greeting", "agentPersonalGreeting"), - flag("schedule_callbacks", "scheduleAndManageCallBack"), - flag("custom_inactivity_timeout", "timeoutDesktopInactivityCustomEnabled"), - number("inactivity_timeout_minutes", "timeoutDesktopInactivityMins")), - fields( - flag("outdial_enabled", "outdialEnabled"), ref("outdial_entry_point_id", "outdialEntryPointId", "cc_entry_point"), - ref("outdial_ani_id", "outdialANIId", "cc_outdial_ani"), ref("address_book_id", "addressBookId", "cc_address_book"), - flag("agent_available_after_outdial", "agentAvailableAfterOutdial"), - flag("dial_plan_enabled", "dialPlanEnabled"), refs("dial_plans", "dialPlans", "cc_dial_plan"), - choice("agent_dn_validation", "agentDNValidation", dnValidation)), - fields( - flag("agent_statistics", "viewableStatistics.agentStats"), - choice("queue_statistics", "viewableStatistics.accessQueueStats", accessAllOrNone), - choice("team_statistics", "viewableStatistics.accessTeamStats", accessAllOrNone), - flag("logged_in_team_statistics", "viewableStatistics.loggedInTeamStats")), - fields( - flag("webex_user_details", "showUserDetailsWebex"), flag("webex_state_sync", "stateSynchronizationWebex"), - flag("teams_user_details", "showUserDetailsMS"), flag("teams_state_sync", "stateSynchronizationMS")), - ), map[string]any{ - "parentType": "ORGANIZATION", "accessIdleCode": "ALL", "accessWrapUpCode": "ALL", "accessQueue": "ALL", - "accessEntryPoint": "ALL", "accessBuddyTeam": "ALL", "agentDNValidation": "NONE", - "loginVoiceOptions": []any{"BROWSER", "EXTENSION", "AGENT_DN"}, "dialPlanEnabled": false, "outdialEnabled": false, - "viewableStatistics": map[string]any{"agentStats": false, "accessQueueStats": "NONE", "contactServiceQueues": []any{}, - "loggedInTeamStats": false, "accessTeamStats": "NONE", "teams": []any{}}, - }) - t.Routes.ListIsPartial = true - return t -}() - -// ccUser edits a person's Contact Center settings. People are added and removed in -// Control Hub, so users are never created or deleted here. -var ccUser = func() resource.Type { - t := managedCC("cc_user", "User", "Users", - ccRoutes(webexops.CCUsersListV1, nil, webexops.CCUsersGet, webexops.CCUsersUpdate, nil), - fields(fixed(text("email", "email")), fixed(text("first_name", "firstName")), fixed(text("last_name", "lastName")), - unique(text("external_identifier", "externalIdentifier")), unique(text("default_dialled_number", "deafultDialledNumber"))), - fields( - ref("site_id", "siteId", "cc_site"), refs("team_ids", "teamIds", "cc_team"), - ref("preferred_supervisor_team_id", "preferredSupervisorTeamId", "cc_team"), - ref("desktop_profile_id", "agentProfileId", "cc_agent_profile"), ref("user_profile_id", "userProfileId", "cc_user_profile"), - ref("multimedia_profile_id", "multimediaProfileId", "cc_multimedia_profile"), - ref("skill_profile_id", "skillProfileId", "cc_skill_profile")), - fields( - choice("auto_csat", "userLevelAutoCSATInclusion", includedExcluded), - choice("agent_wellbeing", "userLevelBurnoutInclusion", includedExcluded), - choice("generated_summaries", "userLevelSummariesInclusion", includedExcluded), - choice("wellness_break_reminders", "userLevelWellnessBreakReminders", enabledDisabled))) - t.LabelField = "email" - t.Routes.ListIsPartial = true - return t -}() - -// AI Features. The combined ai-feature object is left read-only: its route is a PATCH -// whose handling of nested settings is unverified, and the three objects below edit -// the same settings through full PUTs. - -var ccAgentWellbeing = settingsCC("cc_agent_wellbeing", "Agent Wellbeing", - webexops.CCAgentWellbeingListBurnout, webexops.CCAgentWellbeingGetBurnoutId, webexops.CCAgentWellbeingUpdateBurnoutId, - flag("enabled", "enabled"), choice("agent_inclusion", "agentInclusionType", inclusionType), - choice("wellness_break_reminders", "wellnessBreakReminders", enabledDisabled)) - -var ccAutoCSAT = settingsCC("cc_auto_csat", "Auto CSAT", - webexops.CCAutoCsatList, webexops.CCAutoCsatGet, webexops.CCAutoCsatUpdate, - flag("enabled", "enabled"), choice("agent_inclusion", "agentInclusionType", inclusionType), - text("survey_data_source", "surveyDataSource"), - ref("global_variable_id", "selectedGlobalVariableId", "cc_global_variable")) - -var ccGeneratedSummaries = settingsCC("cc_generated_summaries", "Generated Summaries", - webexops.CCGeneratedSummariesList, webexops.CCGeneratedSummariesGet, webexops.CCGeneratedSummariesUpdate, - flag("call_drop_summaries", "callDropSummariesEnabled"), flag("virtual_agent_transfer_summaries", "virtualAgentTransferSummariesEnabled"), - flag("consult_transfer_summaries", "consultTransferSummariesEnabled"), choice("agent_inclusion", "agentInclusionType", inclusionType)) - -var ccAIFeature = center("cc_ai_feature", "AI Features", "AI Features", on(webexops.CCAiFeatureList), "") - -// centerTypes lists the CC types, grouped by subject. -var centerTypes = []resource.Type{ - ccSite, ccUser, ccTeam, ccSkill, ccSkillProfile, ccDesktopProfile, ccMultimediaProfile, ccUserProfile, ccDesktopLayout, ccResourceCollection, - ccEntryPoint, ccFlow, ccQueue, ccDialNumber, ccDialPlan, ccOutdialANI, ccContactNumber, ccAddressBook, - ccBusinessHours, ccHolidayList, ccOverride, - ccAuxiliaryCode, ccWorkType, ccGlobalVariable, ccAudioFile, - ccAIFeature, ccAgentWellbeing, ccAutoCSAT, ccGeneratedSummaries, -} diff --git a/pkg/catalog/fields.go b/pkg/catalog/fields.go deleted file mode 100644 index d4440e8..0000000 --- a/pkg/catalog/fields.go +++ /dev/null @@ -1,122 +0,0 @@ -package catalog - -import "github.com/Cloverhound/webex-cli/pkg/resource" - -var ( - huntPolicies = []string{"CIRCULAR", "REGULAR", "SIMULTANEOUS", "UNIFORM", "WEIGHTED"} - queuePolicies = []string{"CIRCULAR", "REGULAR", "SIMULTANEOUS", "UNIFORM", "WEIGHTED"} - queueRouting = []string{"PRIORITY_BASED", "SKILL_BASED"} - overflowActions = []string{"PERFORM_BUSY_TREATMENT", "PLAY_RINGING_UNTIL_CALLER_HANGS_UP", "TRANSFER_TO_PHONE_NUMBER"} - callerIDNames = []string{"DISPLAY_NAME", "CUSTOM_NAME"} - lineIDPolicies = []string{"DIRECT_LINE", "LOCATION_NUMBER", "CUSTOM"} - dialingScopes = []string{"ENTERPRISE", "GROUP"} - teamTypes = []string{"AGENT", "CAPACITY"} - teamStatuses = []string{"IN_SERVICE", "NOT_AVAILABLE"} -) - -func number(name, path string) resource.Field { - return resource.Field{Name: name, Path: path, Kind: resource.Int} -} - -func choice(name, path string, options []string) resource.Field { - return resource.Field{Name: name, Path: path, Options: options} -} - -func sourced(name, path, source string) resource.Field { - return resource.Field{Name: name, Path: path, OptionSource: source} -} - -func fields(fs ...resource.Field) []resource.Field { return fs } - -func joined(groups ...[]resource.Field) []resource.Field { - var out []resource.Field - for _, g := range groups { - out = append(out, g...) - } - return out -} - -var huntGroupFields = joined( - fields( - locationField, text("name", "name"), text("first_name", "firstName"), text("last_name", "lastName"), - unique(text("extension", "extension")), unique(text("phone_number", "phoneNumber")), flag("enabled", "enabled"), - sourced("language_code", "languageCode", resource.Languages), sourced("time_zone", "timeZone", resource.TimeZones), - text("dial_by_name", "dialByName")), - fields( - choice("caller_id_name", "directLineCallerIdName.selection", callerIDNames), - text("caller_id_custom_name", "directLineCallerIdName.customName"), - flag("use_for_outgoing_calls", "huntGroupCallerIdForOutgoingCallsEnabled"), - flag("distinctive_ring", "alternateNumberSettings.distinctiveRingEnabled")), - fields( - choice("policy", "callPolicies.policy", huntPolicies), - flag("waiting_enabled", "callPolicies.waitingEnabled"), - flag("group_busy", "callPolicies.groupBusyEnabled"), - flag("members_control_group_busy", "callPolicies.allowMembersToControlGroupBusyEnabled")), - fields( - number("no_answer_rings", "callPolicies.noAnswer.numberOfRings"), - flag("next_agent_enabled", "callPolicies.noAnswer.nextAgentEnabled"), - number("next_agent_rings", "callPolicies.noAnswer.nextAgentRings"), - flag("no_answer_forward", "callPolicies.noAnswer.forwardEnabled"), - text("no_answer_destination", "callPolicies.noAnswer.destination")), - fields( - flag("busy_redirect", "callPolicies.busyRedirect.enabled"), - text("busy_redirect_destination", "callPolicies.busyRedirect.destination"), - flag("continuity_redirect", "callPolicies.businessContinuityRedirect.enabled"), - text("continuity_redirect_destination", "callPolicies.businessContinuityRedirect.destination")), -) - -var callQueueFields = joined( - fields( - locationField, text("name", "name"), text("first_name", "firstName"), text("last_name", "lastName"), - unique(text("extension", "extension")), unique(text("phone_number", "phoneNumber")), flag("enabled", "enabled"), - sourced("language_code", "languageCode", resource.Languages), sourced("time_zone", "timeZone", resource.TimeZones), - text("dial_by_name", "dialByName")), - fields( - choice("calling_line_id_policy", "callingLineIdPolicy", lineIDPolicies), - text("calling_line_id_number", "callingLineIdPhoneNumber"), - choice("caller_id_name", "directLineCallerIdName.selection", callerIDNames), - text("caller_id_custom_name", "directLineCallerIdName.customName"), - flag("use_for_outgoing_calls", "phoneNumberForOutgoingCallsEnabled"), - flag("distinctive_ring", "alternateNumberSettings.distinctiveRingEnabled")), - fields( - choice("policy", "callPolicies.policy", queuePolicies), - choice("routing_type", "callPolicies.routingType", queueRouting), - flag("agents_can_join", "allowAgentJoinEnabled"), - flag("call_waiting_for_agents", "allowCallWaitingForAgentsEnabled")), - fields( - flag("call_bounce", "callPolicies.callBounce.callBounceEnabled"), - number("call_bounce_rings", "callPolicies.callBounce.callBounceMaxRings"), - flag("bounce_if_unavailable", "callPolicies.callBounce.agentUnavailableEnabled"), - flag("alert_agent", "callPolicies.callBounce.alertAgentEnabled"), - number("alert_agent_seconds", "callPolicies.callBounce.alertAgentMaxSeconds"), - flag("bounce_on_hold", "callPolicies.callBounce.callBounceOnHoldEnabled"), - number("bounce_on_hold_seconds", "callPolicies.callBounce.callBounceOnHoldMaxSeconds")), - fields( - number("queue_size", "queueSettings.queueSize"), - flag("call_offer_tone", "queueSettings.callOfferToneEnabled"), - flag("reset_statistics", "queueSettings.resetCallStatisticsEnabled")), - fields( - choice("overflow_action", "queueSettings.overflow.action", overflowActions), - flag("overflow_after_wait", "queueSettings.overflow.overflowAfterWaitEnabled"), - number("overflow_wait_seconds", "queueSettings.overflow.overflowAfterWaitTime"), - flag("overflow_greeting", "queueSettings.overflow.playOverflowGreetingEnabled")), - fields( - flag("welcome_message", "queueSettings.welcomeMessage.enabled"), - flag("welcome_always", "queueSettings.welcomeMessage.alwaysEnabled"), - flag("wait_message", "queueSettings.waitMessage.enabled"), - flag("comfort_message", "queueSettings.comfortMessage.enabled"), - number("comfort_message_seconds", "queueSettings.comfortMessage.timeBetweenMessages"), - flag("whisper_message", "queueSettings.whisperMessage.enabled")), -) - -var autoAttendantFields = joined( - fields( - locationField, text("name", "name"), text("first_name", "firstName"), text("last_name", "lastName"), - unique(text("extension", "extension")), unique(text("phone_number", "phoneNumber")), - sourced("language_code", "languageCode", resource.Languages), sourced("time_zone", "timeZone", resource.TimeZones), - text("dial_by_name", "dialByName"), - sourced("business_schedule", "businessSchedule", resource.Schedules)), - fields( - choice("extension_dialing", "extensionDialing", dialingScopes), - choice("name_dialing", "nameDialing", dialingScopes)), -) diff --git a/pkg/catalog/reference.go b/pkg/catalog/reference.go deleted file mode 100644 index ff8973f..0000000 --- a/pkg/catalog/reference.go +++ /dev/null @@ -1,166 +0,0 @@ -package catalog - -import ( - "github.com/Cloverhound/webex-cli/pkg/resource" - "github.com/Cloverhound/webex-cli/pkg/webexops" -) - -// Everything here is read-only. A type moves into the managed set once its writes -// are proven on a live tenant. -// -// RedSky settings are left out on purpose, because the response carries a secret. - -func text(name, path string) resource.Field { return resource.Field{Name: name, Path: path} } - -func flag(name, path string) resource.Field { - return resource.Field{Name: name, Path: path, Kind: resource.Bool} -} - -func list(name, path string) resource.Field { - return resource.Field{Name: name, Path: path, Kind: resource.StringList} -} - -var locationField = resource.Field{Name: "location_id", Immutable: true, Ref: "location"} - -// calling defines a read-only Calling list. -func calling(name, title, plural string, op *webexops.Operation, key, label string, fields ...resource.Field) resource.Type { - return resource.Type{Name: name, Title: title, Plural: plural, Area: resource.Calling, - LabelField: label, Fields: fields, Routes: resource.Routes{List: on(op), ArrayKey: key}} -} - -// withLocation groups a Calling type's objects by the location each list item names. -func withLocation(t resource.Type) resource.Type { - t.ParentField = "location_id" - t.Routes.ParentKey = "locationId" - t.Fields = append([]resource.Field{locationField}, t.Fields...) - return t -} - -// perLocation reads a Calling list once for each location. -func perLocation(t resource.Type) resource.Type { - t.ParentField = "location_id" - t.Routes.PerLocation = true - t.Routes.List.Parent = "locationId" - t.Fields = append([]resource.Field{locationField}, t.Fields...) - return t -} - -// orgSettings defines an organization-wide Calling settings object. -func orgSettings(name, title string, op *webexops.Operation) resource.Type { - return resource.Type{Name: name, Title: title, Plural: title, Area: resource.Calling, - Routes: resource.Routes{List: on(op), Singleton: true}} -} - -// locationSettings defines a settings object held once per location. -func locationSettings(name, title string, op *webexops.Operation) resource.Type { - return resource.Type{Name: name, Title: title, Plural: title, Area: resource.Calling, - ParentField: "location_id", Fields: []resource.Field{locationField}, - Routes: resource.Routes{List: on(op, "locationId"), Singleton: true, PerLocation: true}} -} - -// center defines a read-only Contact Center list. -func center(name, title, plural string, list resource.Route, label string, fields ...resource.Field) resource.Type { - return resource.Type{Name: name, Title: title, Plural: plural, Area: resource.ContactCenter, - LabelField: label, Fields: fields, Routes: resource.Routes{List: list}} -} - -var callingOrganization = []resource.Type{ - func() resource.Type { - t := calling("announcement_language", "Language", "Languages", webexops.CallingCallingServiceListAnnouncementLanguages, "languages", "name", - text("name", "name"), text("code", "code")) - t.Routes.IDKey = "code" - return t - }(), - calling("person", "Person", "People", webexops.CallingPeopleList, "items", "display_name", - text("display_name", "displayName"), list("emails", "emails"), text("status", "status")), - func() resource.Type { - t := calling("phone_number", "Phone Number", "Phone Numbers", webexops.CallingNumbersGetPhoneOrg, "phoneNumbers", "phone_number", - text("phone_number", "phoneNumber"), text("extension", "extension"), - text("location", "location.name"), text("state", "state")) - t.Routes.IDKey = "phoneNumber" - t.Routes.FallbackIDKey = "extension" - return t - }(), -} - -var callingRouting = []resource.Type{ - withLocation(calling("voicemail_group", "Voicemail Group", "Voicemail Groups", webexops.CallingLocationVoicemailListVoicemailgroup, "voicemailGroups", "name", - text("name", "name"), text("extension", "extension"), flag("enabled", "enabled"))), - withLocation(calling("paging_group", "Paging Group", "Paging Groups", webexops.CallingPagingGroupList, "locationPaging", "name", - text("name", "name"), text("extension", "extension"))), - perLocation(calling("call_park", "Call Park", "Call Parks", webexops.CallingCallParkList, "callParks", "name", - text("name", "name"))), - withLocation(calling("call_park_extension", "Call Park Extension", "Call Park Extensions", webexops.CallingCallParkListExtensions, "callParkExtensions", "name", - text("name", "name"), text("extension", "extension"))), - perLocation(calling("call_pickup", "Call Pickup", "Call Pickups", webexops.CallingCallPickupList, "callPickups", "name", - text("name", "name"))), - calling("virtual_line", "Virtual Line", "Virtual Lines", webexops.CallingVirtualLineCallList, "virtualLines", "last_name", - text("last_name", "lastName"), text("first_name", "firstName"), text("number", "callerIdNumber")), - calling("virtual_extension", "Virtual Extension", "Virtual Extensions", webexops.CallingVirtualExtensionsList, "virtualExtensions", "display_name", - text("display_name", "displayName"), text("extension", "extension")), - calling("virtual_extension_range", "Virtual Extension Range", "Virtual Extension Ranges", webexops.CallingVirtualExtensionsListRange, "virtualExtensionRanges", "name", - text("name", "name")), - calling("wrapup_reason", "Wrap-Up Reason", "Wrap-Up Reasons", webexops.CallingCustomerExperienceEssentialsListWrapUpReasons, "wrapupReasons", "name", - text("name", "name")), -} - -var callingSchedules = []resource.Type{ - perLocation(calling("schedule", "Schedule", "Schedules", webexops.CallingLocationSchedulesList, "schedules", "name", - text("name", "name"), text("type", "type"))), - calling("operating_mode", "Operating Mode", "Operating Modes", webexops.CallingOperatingModesList, "operatingModes", "name", - text("name", "name"), text("type", "type"), text("level", "level")), - calling("announcement", "Announcement", "Announcements", webexops.CallingAnnouncementRepositoryListGreetings, "announcements", "name", - text("name", "name"), text("file_name", "fileName"), text("level", "level")), - calling("announcement_playlist", "Playlist", "Playlists", webexops.CallingAnnouncementPlaylistList, "playlists", "name", - text("name", "name")), -} - -var callingPSTN = []resource.Type{ - calling("trunk", "Trunk", "Trunks", webexops.CallingCallRoutingListTrunks, "trunks", "name", - text("name", "name"), text("trunk_type", "trunkType"), text("location", "location.name"), flag("in_use", "inUse")), - calling("route_group", "Route Group", "Route Groups", webexops.CallingCallRoutingListGroups, "routeGroups", "name", - text("name", "name"), flag("in_use", "inUse")), - calling("route_list", "Route List", "Route Lists", webexops.CallingCallRoutingListRouteLists, "routeLists", "name", - text("name", "name")), - calling("dial_plan", "Dial Plan", "Dial Plans", webexops.CallingCallRoutingListDialPlans, "dialPlans", "name", - text("name", "name"), text("route_name", "routeName"), text("route_type", "routeType")), - calling("translation_pattern", "Translation Pattern", "Translation Patterns", webexops.CallingCallRoutingListTranslationPatterns, "translationPatterns", "name", - text("name", "name"), text("matching_pattern", "matchingPattern"), - text("replacement_pattern", "replacementPattern"), text("level", "level")), -} - -var callingDevices = []resource.Type{ - calling("device", "Device", "Devices", webexops.CallingDevicesList, "items", "display_name", - text("display_name", "displayName"), text("product", "product"), text("connection_status", "connectionStatus")), - calling("workspace", "Workspace", "Workspaces", webexops.CallingWorkspacesList, "items", "display_name", - text("display_name", "displayName"), text("type", "type")), - calling("line_key_template", "Line Key Template", "Line Key Templates", webexops.CallingDeviceCallListLineKeyTemplates, "lineKeyTemplates", "template_name", - text("template_name", "templateName"), text("model", "modelDisplayName")), - calling("dect_network", "DECT Network", "DECT Networks", webexops.CallingDectDevicesListNetworks, "dectNetworks", "name", - text("name", "name")), -} - -var callingLocationSettings = []resource.Type{ - locationSettings("location_voicemail", "Voicemail", webexops.CallingLocationVoicemailGet), - locationSettings("location_voice_portal", "Voice Portal", webexops.CallingLocationVoicemailGetVoiceportal), - locationSettings("location_music_on_hold", "Music on Hold", webexops.CallingLocationCallGetMusicHold), - locationSettings("location_internal_dialing", "Internal Dialing", webexops.CallingLocationCallHandlingGetInternalDialingConfiguration), - locationSettings("location_intercept", "Call Intercept", webexops.CallingLocationCallHandlingGetIntercept), - locationSettings("location_emergency_callback", "Emergency Callback", webexops.CallingLocationCallGetEmergencyCallback), - locationSettings("location_emergency_notification", "Emergency Notification", webexops.CallingEmergencyServicesGetLocationCallNotification), - locationSettings("location_call_captions", "Call Captions", webexops.CallingLocationCallGetCaptionsSettings), - locationSettings("location_call_park_settings", "Call Park Settings", webexops.CallingCallParkGet2), - locationSettings("location_recording_announcement", "Recording Announcement", webexops.CallingCallRecordingGetLocationComplianceAnnouncement), -} - -var callingOrgSettings = []resource.Type{ - orgSettings("voicemail_settings", "Voicemail Settings", webexops.CallingCallingServiceGetVoicemail), - orgSettings("voicemail_rules", "Voicemail Passcode Rules", webexops.CallingCallingServiceGetVoicemailRules), - orgSettings("moh_settings", "Music on Hold", webexops.CallingCallingServiceGetOrgMusicHoldConfiguration), - orgSettings("call_recording", "Call Recording", webexops.CallingCallRecordingGet), - orgSettings("recording_announcement", "Recording Announcement", webexops.CallingCallRecordingGetOrgComplianceAnnouncement), - orgSettings("emergency_notification", "Emergency Notification", webexops.CallingEmergencyServicesGetOrgCallNotification), - orgSettings("call_captions", "Call Captions", webexops.CallingCallingServiceGetOrgCallCaptionsSettings), - orgSettings("caller_reputation", "Caller Reputation", webexops.CallingCallerReputationProviderGetSettings), - orgSettings("virtual_extension_settings", "Virtual Extension Mode", webexops.CallingVirtualExtensionsGetSettings), -} diff --git a/pkg/changeset/changeset_test.go b/pkg/changeset/changeset_test.go deleted file mode 100644 index 60c670d..0000000 --- a/pkg/changeset/changeset_test.go +++ /dev/null @@ -1,146 +0,0 @@ -package changeset - -import ( - "encoding/json" - "os" - "path/filepath" - "strings" - "testing" -) - -func huntGroup(id string) Target { - return Target{API: APIWebex, Route: "/telephony/config/locations/{locationId}/huntGroups/{huntGroupId}", - Params: map[string]string{"locationId": "loc1", "huntGroupId": id}} -} - -func TestGetAndSet(t *testing.T) { - d := map[string]any{} - Set(d, "a.b.c", 1) - Set(d, "a.x", "y") - if v, ok := Get(d, "a.b.c"); !ok || v != 1 { - t.Errorf("Get a.b.c = %v %v", v, ok) - } - if _, ok := Get(d, "a.b.missing"); ok { - t.Error("Get found a missing path") - } -} - -func TestEqualIgnoresNumberSpelling(t *testing.T) { - if !Equal(json.Number("20"), json.Number("2e1")) || !Equal(json.Number("3"), 3) || Equal("3", 3) { - t.Error("numbers must compare by value, and only numbers") - } -} - -func TestTargetKeys(t *testing.T) { - a := Target{API: APIContactCenter, Route: "/team/{id}", Params: map[string]string{"id": "t1"}} - b := Target{API: APIContactCenter, Route: "/team/{teamId}", Params: map[string]string{"teamId": "t1"}} - if a.Key() != b.Key() { - t.Error("placeholder names split one object") - } - audio := func(user string) Target { - return Target{API: APIWebex, Route: "/meetingPreferences/audio", Query: map[string]string{"userEmail": user}} - } - if audio("a@example.com").Key() == audio("b@example.com").Key() { - t.Error("targets that differ in their query are one object") - } -} - -func TestHandleOf(t *testing.T) { - if h, ok := HandleOf("new:desk"); !ok || h != "desk" { - t.Errorf("handle = %q %v", h, ok) - } - if _, ok := HandleOf("team1"); ok { - t.Error("an ordinary ID is a placeholder") - } -} - -func TestSaveKeepsChangeSetsOwnerOnly(t *testing.T) { - path := filepath.Join(t.TempDir(), "x.changeset.json") - if err := Save(path, New("org")); err != nil { - t.Fatal(err) - } - if info, _ := os.Stat(path); info.Mode().Perm() != 0o600 { - t.Fatalf("new file mode = %v", info.Mode().Perm()) - } - if err := os.Chmod(path, 0o640); err != nil { - t.Fatal(err) - } - if err := Save(path, New("org")); err != nil { - t.Fatal(err) - } - if info, _ := os.Stat(path); info.Mode().Perm() != 0o640 { - t.Fatalf("an existing file's mode became %v", info.Mode().Perm()) - } -} - -func TestValidate(t *testing.T) { - cs := New("org") - cs.Intents = []Intent{{ID: "i", Summary: "s"}} - cs.Operations = []Operation{ - {ID: "op-1", Action: Create, Handle: "t", Target: Target{API: APIContactCenter, Route: "/team"}, Body: map[string]any{"name": "T"}}, - {ID: "op-2", Intent: "i", Action: Update, Target: huntGroup("hg1"), Changes: []Change{{Path: "name", Value: RefTo("t")}}}, - } - if p := Validate(cs); len(p.Errors) > 0 { - t.Fatalf("valid change set: %v", p.Errors) - } - - bad := *cs - bad.Operations = []Operation{ - {ID: "op-1", Action: Update, Target: huntGroup("hg1"), Changes: []Change{{Path: "a..b", Value: 1}, {Path: "x", Value: RefTo("later")}}, Intent: "nope"}, - {ID: "op-1", Action: Delete, Target: Target{API: "calling", Route: "/team"}}, - {ID: "op-3", Action: Create, Handle: "later", Target: Target{API: APIContactCenter, Route: "/team"}, Body: map[string]any{}}, - {ID: "op-4", Action: Invoke, Method: "POST", Target: Target{API: APIContactCenter, Route: "/team/bulk"}}, - {ID: "op-5", Action: Update, Target: huntGroup("new:later"), Changes: []Change{{Path: "a", Value: 1}}}, - {ID: "op-6", Action: Delete, Target: huntGroup("hg1")}, - } - p := Validate(&bad) - for _, want := range []string{ - `bad change path "a..b"`, `$ref "later" does not name an earlier create`, `intent "nope" is not defined`, - "op-1: id appears twice", `target.api is "calling"`, "route of a delete must end with the object's ID", - "is a placeholder ID", "op-6: targets the same object as op-1", - } { - if !strings.Contains(strings.Join(p.Errors, "\n"), want) { - t.Errorf("missing error %q in:\n%s", want, strings.Join(p.Errors, "\n")) - } - } - if len(p.Warnings) != 1 { - t.Errorf("warnings = %v", p.Warnings) - } -} - -func TestFileRoundTripKeepsNullBeforeAndExactNumbers(t *testing.T) { - path := filepath.Join(t.TempDir(), "x.changeset.json") - cs := New("org") - cs.Operations = []Operation{{ID: "op-1", Action: Update, Target: huntGroup("hg1"), Changes: []Change{ - {Path: "a", Value: json.Number("12345678901234567890"), Before: nil, HasBefore: true}, - {Path: "b", Value: nil}, - }}} - if err := Save(path, cs); err != nil { - t.Fatal(err) - } - data, _ := os.ReadFile(path) - if !strings.Contains(string(data), `"before": null`) || strings.Count(string(data), `"before"`) != 1 { - t.Errorf("file:\n%s", data) - } - back, err := Load(path) - if err != nil { - t.Fatal(err) - } - changes := back.Operations[0].Changes - if !changes[0].HasBefore || changes[1].HasBefore || changes[0].Value != json.Number("12345678901234567890") { - t.Errorf("changes = %+v", changes) - } -} - -func TestParseRejectsUnknownKeys(t *testing.T) { - if _, err := Parse([]byte(`{"format":"webex-changeset/v1","metdata":{}}`)); err == nil { - t.Error("a misspelt key was accepted") - } -} - -func TestSchemaIsJSON(t *testing.T) { - var v map[string]any - if err := json.Unmarshal(Schema, &v); err != nil { - t.Fatal(err) - } -} diff --git a/pkg/changeset/file.go b/pkg/changeset/file.go deleted file mode 100644 index a5e09b9..0000000 --- a/pkg/changeset/file.go +++ /dev/null @@ -1,72 +0,0 @@ -package changeset - -import ( - "bytes" - "encoding/json" - "fmt" - "os" - "path/filepath" -) - -// Parse decodes a change set, keeping numbers exact. -func Parse(data []byte) (*ChangeSet, error) { - var cs ChangeSet - d := json.NewDecoder(bytes.NewReader(data)) - d.UseNumber() - d.DisallowUnknownFields() - if err := d.Decode(&cs); err != nil { - return nil, fmt.Errorf("reading change set: %w", err) - } - return &cs, nil -} - -// Load reads a change set file. -func Load(path string) (*ChangeSet, error) { - data, err := os.ReadFile(path) - if err != nil { - return nil, err - } - return Parse(data) -} - -// Encode renders a change set as indented JSON. -func Encode(cs *ChangeSet) ([]byte, error) { - var buf bytes.Buffer - enc := json.NewEncoder(&buf) - enc.SetEscapeHTML(false) - enc.SetIndent("", " ") - if err := enc.Encode(cs); err != nil { - return nil, err - } - return buf.Bytes(), nil -} - -// Save writes a change set atomically. -func Save(path string, cs *ChangeSet) error { - data, err := Encode(cs) - if err != nil { - return err - } - tmp, err := os.CreateTemp(filepath.Dir(path), ".changeset-*") - if err != nil { - return err - } - defer os.Remove(tmp.Name()) - if _, err := tmp.Write(data); err != nil { - tmp.Close() - return err - } - if err := tmp.Close(); err != nil { - return err - } - // A change set can hold credentials a write sends, such as a trunk's password, so a - // new file is owner-only and a replaced one keeps its mode. - mode := os.FileMode(0o600) - if info, err := os.Stat(path); err == nil { - mode = info.Mode().Perm() - } - if err := os.Chmod(tmp.Name(), mode); err != nil { - return err - } - return os.Rename(tmp.Name(), path) -} diff --git a/pkg/changeset/paths.go b/pkg/changeset/paths.go deleted file mode 100644 index 4bb55ed..0000000 --- a/pkg/changeset/paths.go +++ /dev/null @@ -1,91 +0,0 @@ -package changeset - -import ( - "encoding/json" - "reflect" - "strings" -) - -// Get returns the value at a dotted path. Only objects are walked; a list is a -// leaf. -func Get(doc any, path string) (any, bool) { - cur := doc - for _, key := range strings.Split(path, ".") { - m, ok := cur.(map[string]any) - if !ok { - return nil, false - } - if cur, ok = m[key]; !ok { - return nil, false - } - } - return cur, true -} - -// Set stores v at a dotted path, creating objects on the way and replacing -// anything that is not one. -func Set(doc map[string]any, path string, v any) { - keys := strings.Split(path, ".") - cur := doc - for _, key := range keys[:len(keys)-1] { - next, ok := cur[key].(map[string]any) - if !ok { - next = map[string]any{} - cur[key] = next - } - cur = next - } - cur[keys[len(keys)-1]] = v -} - -// Equal compares two decoded JSON values. Numbers compare by value whether they -// were decoded as json.Number or float64. -func Equal(a, b any) bool { - return reflect.DeepEqual(canonical(a), canonical(b)) -} - -func canonical(v any) any { - switch t := v.(type) { - case json.Number: - if f, err := t.Float64(); err == nil { - return f - } - return string(t) - case int: - return float64(t) - case int64: - return float64(t) - case map[string]any: - out := make(map[string]any, len(t)) - for k, e := range t { - out[k] = canonical(e) - } - return out - case []any: - out := make([]any, len(t)) - for i, e := range t { - out[i] = canonical(e) - } - return out - } - return v -} - -// Clone deep-copies a decoded JSON value. -func Clone(v any) any { - switch t := v.(type) { - case map[string]any: - out := make(map[string]any, len(t)) - for k, e := range t { - out[k] = Clone(e) - } - return out - case []any: - out := make([]any, len(t)) - for i, e := range t { - out[i] = Clone(e) - } - return out - } - return v -} diff --git a/pkg/changeset/record.go b/pkg/changeset/record.go deleted file mode 100644 index 6aa6279..0000000 --- a/pkg/changeset/record.go +++ /dev/null @@ -1,37 +0,0 @@ -package changeset - -import ( - "crypto/rand" - "encoding/hex" - "strings" - "time" -) - -// New starts an empty change set for an org. -func New(orgID string) *ChangeSet { - var b [4]byte - _, _ = rand.Read(b[:]) - now := time.Now().UTC() - return &ChangeSet{ - Format: Format, - Metadata: Metadata{ - ID: "cs_" + now.Format("20060102T150405Z") + "_" + hex.EncodeToString(b[:]), - CreatedAt: now.Format(time.RFC3339), - }, - Scope: Scope{OrgID: orgID}, - Operations: []Operation{}, - } -} - -// NewIDPrefix marks a placeholder ID for an object a change set creates. A file -// names such an object with a {"$ref": ""} value instead, so a target -// parameter never holds one. -const NewIDPrefix = "new:" - -// HandleOf returns the handle in a "new:" placeholder ID. -func HandleOf(id string) (string, bool) { - if !strings.HasPrefix(id, NewIDPrefix) { - return "", false - } - return strings.TrimPrefix(id, NewIDPrefix), true -} diff --git a/pkg/changeset/schema.go b/pkg/changeset/schema.go deleted file mode 100644 index 0f5925c..0000000 --- a/pkg/changeset/schema.go +++ /dev/null @@ -1,8 +0,0 @@ -package changeset - -import _ "embed" - -// Schema is the JSON Schema for a v1 change set. -// -//go:embed schema.json -var Schema []byte diff --git a/pkg/changeset/schema.json b/pkg/changeset/schema.json deleted file mode 100644 index f3885eb..0000000 --- a/pkg/changeset/schema.json +++ /dev/null @@ -1,129 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/Cloverhound/webex-cli/pkg/changeset/schema.json", - "title": "Webex change set", - "description": "Proposed Webex configuration changes, addressed by API route, Webex ID and API JSON path.", - "type": "object", - "required": ["format", "metadata", "scope", "operations"], - "additionalProperties": false, - "properties": { - "format": { "const": "webex-changeset/v1" }, - "metadata": { - "type": "object", - "required": ["id"], - "additionalProperties": false, - "properties": { - "id": { "type": "string", "minLength": 1 }, - "title": { "type": "string" }, - "createdAt": { "type": "string", "format": "date-time" }, - "rationale": { "type": "string", "description": "Why, in plain words." }, - "author": { - "type": "object", - "additionalProperties": false, - "properties": { - "type": { "enum": ["agent", "human"] }, - "id": { "type": "string" }, - "onBehalfOf": { "type": "string" } - } - }, - "links": { "type": "object", "additionalProperties": { "type": "string" } } - } - }, - "scope": { - "type": "object", - "required": ["orgId"], - "additionalProperties": false, - "properties": { - "orgId": { "type": "string", "minLength": 1, "description": "The org's UUID." } - } - }, - "intents": { - "type": "array", - "items": { - "type": "object", - "required": ["id", "summary"], - "additionalProperties": false, - "properties": { - "id": { "type": "string", "minLength": 1 }, - "summary": { "type": "string" } - } - } - }, - "operations": { "type": "array", "items": { "$ref": "#/$defs/operation" } }, - "review": { - "type": "object", - "additionalProperties": false, - "description": "Facts about an exported change set. Not enforced on import.", - "properties": { - "plan": { - "type": "object", - "required": ["hash"], - "additionalProperties": false, - "properties": { - "hash": { "type": "string" }, - "commit": { "type": "string" }, - "plannedAt": { "type": "string", "format": "date-time" } - } - }, - "approvals": { - "type": "array", - "items": { - "type": "object", - "required": ["by", "at"], - "additionalProperties": false, - "properties": { - "by": { "type": "string" }, - "at": { "type": "string", "format": "date-time" }, - "hash": { "type": "string" }, - "comment": { "type": "string" } - } - } - } - } - } - }, - "$defs": { - "operation": { - "type": "object", - "required": ["id", "action", "target"], - "additionalProperties": false, - "properties": { - "id": { "type": "string", "minLength": 1 }, - "intent": { "type": "string" }, - "action": { "enum": ["create", "update", "delete", "invoke"] }, - "handle": { "type": "string", "description": "A create's name for its new object; other operations refer to its ID with {\"$ref\": handle}." }, - "target": { "$ref": "#/$defs/target" }, - "changes": { "type": "array", "items": { "$ref": "#/$defs/change" } }, - "body": { "description": "A create's or invoke's request body." }, - "method": { "type": "string", "description": "An invoke's HTTP method." } - }, - "allOf": [ - { "if": { "properties": { "action": { "const": "create" } } }, "then": { "required": ["handle", "body"], "properties": { "body": { "type": "object" } } } }, - { "if": { "properties": { "action": { "const": "update" } } }, "then": { "required": ["changes"], "properties": { "changes": { "minItems": 1 } } } }, - { "if": { "properties": { "action": { "const": "invoke" } } }, "then": { "required": ["method"] } } - ] - }, - "target": { - "type": "object", - "required": ["api", "route"], - "additionalProperties": false, - "properties": { - "api": { "enum": ["webex", "cc"], "description": "webex: https://webexapis.com/v1. cc: the Contact Center API, with routes relative to /organization/{orgId}." }, - "route": { "type": "string", "pattern": "^/", "description": "API route template. An update or delete names the object, ending with its ID placeholder; a create names the collection." }, - "params": { "type": "object", "additionalProperties": { "type": "string" }, "description": "A value for every placeholder in route." }, - "query": { "type": "object", "additionalProperties": { "type": "string" } }, - "display": { "type": "string", "description": "A label for people." } - } - }, - "change": { - "type": "object", - "required": ["path", "value"], - "additionalProperties": false, - "properties": { - "path": { "type": "string", "pattern": "^[^.]+(\\.[^.]+)*$", "description": "Dotted path into the object's API JSON. Lists are replaced whole." }, - "before": { "description": "The value the author saw; a precondition. null means absent." }, - "value": { "description": "The new value. {\"$ref\": handle} anywhere means the ID of an object this change set creates." } - } - } - } -} diff --git a/pkg/changeset/types.go b/pkg/changeset/types.go deleted file mode 100644 index 58e7536..0000000 --- a/pkg/changeset/types.go +++ /dev/null @@ -1,269 +0,0 @@ -// Package changeset defines a portable file of proposed Webex configuration -// changes. It names objects by API route and Webex ID and fields by API JSON -// path, so a tool that knows only the Webex REST API can write one, and an -// engine such as Webex Admin Studio can review and apply it. -package changeset - -import ( - "bytes" - "encoding/json" - "fmt" - "regexp" - "sort" - "strings" -) - -// Format is the value of a v1 file's "format" key. -const Format = "webex-changeset/v1" - -// API names the base URL a route is relative to. -const ( - // APIWebex is https://webexapis.com/v1: Calling, Admin and the other - // webexapis.com areas. - APIWebex = "webex" - // APIContactCenter is the Contact Center API. Routes are relative to - // /organization/{orgId}. - APIContactCenter = "cc" -) - -type Action string - -const ( - Create Action = "create" - Update Action = "update" - Delete Action = "delete" - // Invoke is any other write, such as a bulk save or a purge. It is kept so - // nothing an author did is lost, but it has no field-level meaning. - Invoke Action = "invoke" -) - -type ChangeSet struct { - Format string `json:"format"` - Metadata Metadata `json:"metadata"` - Scope Scope `json:"scope"` - Intents []Intent `json:"intents,omitempty"` - Operations []Operation `json:"operations"` - Review *Review `json:"review,omitempty"` -} - -type Metadata struct { - ID string `json:"id"` - Title string `json:"title,omitempty"` - CreatedAt string `json:"createdAt,omitempty"` - Rationale string `json:"rationale,omitempty"` - Author *Author `json:"author,omitempty"` - Links map[string]string `json:"links,omitempty"` -} - -type Author struct { - Type string `json:"type,omitempty"` // agent or human - ID string `json:"id,omitempty"` - OnBehalfOf string `json:"onBehalfOf,omitempty"` -} - -type Scope struct { - OrgID string `json:"orgId"` -} - -// Intent is a plain-language summary that operations can point to. -type Intent struct { - ID string `json:"id"` - Summary string `json:"summary"` -} - -type Operation struct { - ID string `json:"id"` - Intent string `json:"intent,omitempty"` - Action Action `json:"action"` - // Handle names a created object so other operations can refer to its ID - // with {"$ref": handle}. - Handle string `json:"handle,omitempty"` - Target Target `json:"target"` - // Changes are an update's field changes. - Changes []Change `json:"changes,omitempty"` - // Body is a create's or invoke's request body. - Body any `json:"body,omitempty"` - // Method is an invoke's HTTP method. - Method string `json:"method,omitempty"` -} - -type Target struct { - API string `json:"api"` - // Route is the API route template. For an update or delete it names the - // object, or for a settings update the settings; for a create it is the - // collection. Placeholder names do not matter when routes are compared. - Route string `json:"route"` - Params map[string]string `json:"params,omitempty"` - Query map[string]string `json:"query,omitempty"` - Display string `json:"display,omitempty"` -} - -// Change sets the value at a dotted path in the object's API JSON. A list is -// always a single value: Webex replaces lists whole. -type Change struct { - Path string - Value any - // Before is the value the author saw. HasBefore distinguishes a seen null - // (the field was absent or empty) from no precondition at all. - Before any - HasBefore bool -} - -type changeJSON struct { - Path string `json:"path"` - Before json.RawMessage `json:"before,omitempty"` - Value json.RawMessage `json:"value"` -} - -func (c Change) MarshalJSON() ([]byte, error) { - value, err := json.Marshal(c.Value) - if err != nil { - return nil, err - } - out := changeJSON{Path: c.Path, Value: value} - if c.HasBefore { - if out.Before, err = json.Marshal(c.Before); err != nil { - return nil, err - } - } - return json.Marshal(out) -} - -func (c *Change) UnmarshalJSON(data []byte) error { - var in changeJSON - if err := json.Unmarshal(data, &in); err != nil { - return err - } - if in.Value == nil { - return fmt.Errorf("change %q has no value", in.Path) - } - *c = Change{Path: in.Path} - if err := decode(in.Value, &c.Value); err != nil { - return err - } - if in.Before != nil { - c.HasBefore = true - return decode(in.Before, &c.Before) - } - return nil -} - -// Review carries facts about an exported change set. Nothing enforces it. -type Review struct { - Plan *PlanInfo `json:"plan,omitempty"` - Approvals []Approval `json:"approvals,omitempty"` -} - -type PlanInfo struct { - Hash string `json:"hash"` - Commit string `json:"commit,omitempty"` - PlannedAt string `json:"plannedAt,omitempty"` -} - -type Approval struct { - By string `json:"by"` - At string `json:"at"` - Hash string `json:"hash,omitempty"` - Comment string `json:"comment,omitempty"` -} - -// Ref returns the handle when v is {"$ref": handle}. -func Ref(v any) (string, bool) { - m, ok := v.(map[string]any) - if !ok || len(m) != 1 { - return "", false - } - handle, ok := m["$ref"].(string) - return handle, ok -} - -// RefTo builds a reference to a created object's ID. -func RefTo(handle string) map[string]any { return map[string]any{"$ref": handle} } - -// Refs lists every handle referred to anywhere in v. -func Refs(v any) []string { - var out []string - var walk func(any) - walk = func(v any) { - if h, ok := Ref(v); ok { - out = append(out, h) - return - } - switch t := v.(type) { - case map[string]any: - keys := make([]string, 0, len(t)) - for k := range t { - keys = append(keys, k) - } - sort.Strings(keys) - for _, k := range keys { - walk(t[k]) - } - case []any: - for _, e := range t { - walk(e) - } - } - } - walk(v) - return out -} - -var placeholder = regexp.MustCompile(`\{[^}]*\}`) - -// NormalizeRoute replaces every placeholder with {} so routes from different -// sources compare equal. -func NormalizeRoute(route string) string { - return placeholder.ReplaceAllString(strings.TrimRight(route, "/"), "{}") -} - -// Placeholders lists a route's placeholder names in order. -func Placeholders(route string) []string { - var out []string - for _, m := range placeholder.FindAllString(route, -1) { - out = append(out, m[1:len(m)-1]) - } - return out -} - -// Key identifies the object a target names: its API, normalized route, parameter -// values in route order, and query, which can select the object as userEmail -// selects whose preferences. -func (t Target) Key() string { - parts := []string{t.API, NormalizeRoute(t.Route)} - for _, name := range Placeholders(t.Route) { - parts = append(parts, t.Params[name]) - } - names := make([]string, 0, len(t.Query)) - for name := range t.Query { - names = append(names, name) - } - sort.Strings(names) - for _, name := range names { - parts = append(parts, name+"="+t.Query[name]) - } - return strings.Join(parts, "\x00") -} - -// Path fills the route's placeholders from params. -func (t Target) Path() string { - return placeholder.ReplaceAllStringFunc(t.Route, func(m string) string { - return t.Params[m[1:len(m)-1]] - }) -} - -// ID is the value of the route's last placeholder, which for an item route is -// the object's Webex ID. -func (t Target) ID() string { - names := Placeholders(t.Route) - if len(names) == 0 || !strings.HasSuffix(t.Route, "}") { - return "" - } - return t.Params[names[len(names)-1]] -} - -func decode(data []byte, v any) error { - d := json.NewDecoder(bytes.NewReader(data)) - d.UseNumber() - return d.Decode(v) -} diff --git a/pkg/changeset/validate.go b/pkg/changeset/validate.go deleted file mode 100644 index 0fab5e3..0000000 --- a/pkg/changeset/validate.go +++ /dev/null @@ -1,153 +0,0 @@ -package changeset - -import ( - "fmt" - "strings" -) - -// Problems are what Validate finds. Errors make the file unusable; warnings -// are operations an engine may refuse. -type Problems struct { - Errors []string `json:"errors,omitempty"` - Warnings []string `json:"warnings,omitempty"` -} - -func (p *Problems) errorf(format string, args ...any) { - p.Errors = append(p.Errors, fmt.Sprintf(format, args...)) -} - -func (p *Problems) warnf(format string, args ...any) { - p.Warnings = append(p.Warnings, fmt.Sprintf(format, args...)) -} - -// Validate checks a change set's structure without reading Webex. -func Validate(cs *ChangeSet) Problems { - var p Problems - if cs.Format != Format { - p.errorf("format is %q, expected %q", cs.Format, Format) - } - if cs.Scope.OrgID == "" { - p.errorf("scope.orgId is missing") - } - - intents := map[string]bool{} - for _, in := range cs.Intents { - if in.ID == "" { - p.errorf("an intent has no id") - } - if intents[in.ID] { - p.errorf("intent %q appears twice", in.ID) - } - intents[in.ID] = true - } - - ids := map[string]bool{} - handles := map[string]bool{} - targets := map[string]string{} - for i, op := range cs.Operations { - name := op.ID - if name == "" { - name = fmt.Sprintf("operation %d", i+1) - p.errorf("%s has no id", name) - } else if ids[op.ID] { - p.errorf("%s: id appears twice", name) - } - ids[op.ID] = true - - if op.Intent != "" && !intents[op.Intent] { - p.errorf("%s: intent %q is not defined", name, op.Intent) - } - validateTarget(&p, name, op) - - switch op.Action { - case Create: - if op.Handle == "" { - p.errorf("%s: a create needs a handle", name) - } else if handles[op.Handle] { - p.errorf("%s: handle %q appears twice", name, op.Handle) - } - if _, ok := op.Body.(map[string]any); !ok { - p.errorf("%s: a create needs a body object", name) - } - if len(op.Changes) > 0 { - p.errorf("%s: a create carries its fields in body, not changes", name) - } - case Update: - if len(op.Changes) == 0 { - p.errorf("%s: an update needs changes", name) - } - paths := map[string]bool{} - for _, c := range op.Changes { - if c.Path == "" || strings.HasPrefix(c.Path, ".") || strings.HasSuffix(c.Path, ".") || strings.Contains(c.Path, "..") { - p.errorf("%s: bad change path %q", name, c.Path) - } - if paths[c.Path] { - p.errorf("%s: path %q appears twice", name, c.Path) - } - paths[c.Path] = true - } - if op.Body != nil { - p.errorf("%s: an update carries changes, not a body", name) - } - case Delete: - if len(op.Changes) > 0 || op.Body != nil { - p.errorf("%s: a delete carries no changes or body", name) - } - case Invoke: - if op.Method == "" { - p.errorf("%s: an invoke needs a method", name) - } - p.warnf("%s: %s %s is not a create, update or delete, so it cannot be reviewed field by field", name, op.Method, op.Target.Route) - default: - p.errorf("%s: unknown action %q", name, op.Action) - } - - if op.Action == Update || op.Action == Delete { - key := op.Target.Key() - if other, ok := targets[key]; ok { - p.errorf("%s: targets the same object as %s", name, other) - } - targets[key] = name - } - - for _, handle := range opRefs(op) { - if !handles[handle] { - p.errorf("%s: $ref %q does not name an earlier create", name, handle) - } - } - if op.Action == Create && op.Handle != "" { - handles[op.Handle] = true - } - } - return p -} - -func validateTarget(p *Problems, name string, op Operation) { - t := op.Target - if t.API != APIWebex && t.API != APIContactCenter { - p.errorf("%s: target.api is %q, expected %q or %q", name, t.API, APIWebex, APIContactCenter) - } - if !strings.HasPrefix(t.Route, "/") { - p.errorf("%s: target.route must start with /", name) - } - for _, param := range Placeholders(t.Route) { - value := t.Params[param] - if value == "" { - p.errorf("%s: target.params has no %q", name, param) - } else if _, ok := HandleOf(value); ok { - p.errorf("%s: target.params.%s is a placeholder ID; fold the change into the create", name, param) - } - } - // An update may target a settings route that has no ID. - if op.Action == Delete && t.ID() == "" { - p.errorf("%s: the target route of a %s must end with the object's ID", name, op.Action) - } -} - -func opRefs(op Operation) []string { - refs := Refs(op.Body) - for _, c := range op.Changes { - refs = append(refs, Refs(c.Value)...) - } - return refs -} diff --git a/pkg/fakeapi/collections.go b/pkg/fakeapi/collections.go deleted file mode 100644 index c533c11..0000000 --- a/pkg/fakeapi/collections.go +++ /dev/null @@ -1,325 +0,0 @@ -package fakeapi - -import ( - "fmt" - "net/http" - "regexp" - "strings" - "time" - - "github.com/Cloverhound/webex-cli/pkg/catalog" - "github.com/Cloverhound/webex-cli/pkg/resource" -) - -// collection is an object type served generically, shaped by what the live routes do. -type collection struct { - name string - - // listPath serves lists. key names the array; empty means a bare array. - listPath string - key string - - // paged wraps the array in {data, meta}, as CC queue lists do. - paged bool - - // item matches item and collection paths, with the ID as the last group. - item *regexp.Regexp - - // deletePath, when set, is the only route that accepts DELETE. - deletePath *regexp.Regexp - - // hidden are fields only item reads return. - hidden []string - - // summary limits list items to these fields, for lists that lack detail. - summary []string - - // required makes PUT replace the object, refusing a body missing these fields. - // Without it, PUT merges, as Calling routes do. - required []string -} - -var collections = []*collection{ - { - name: "call_queue", listPath: "/v1/telephony/config/queues", key: "queues", - item: regexp.MustCompile(`^/v1/telephony/config/locations/[^/]+/queues(?:/([^/]+))?$`), - summary: []string{"id", "name", "locationId", "enabled"}, - }, - { - name: "auto_attendant", listPath: "/v1/telephony/config/autoAttendants", key: "autoAttendants", - item: regexp.MustCompile(`^/v1/telephony/config/locations/[^/]+/autoAttendants(?:/([^/]+))?$`), - summary: []string{"id", "name", "locationId"}, - }, - { - name: "cc_skill", listPath: "/organization/" + OrgUUID + "/skill", - item: regexp.MustCompile(`^/organization/[^/]+/skill(?:/([^/]+))?$`), - required: []string{"name", "skillType", "active"}, - }, - { - name: "cc_business_hours", listPath: "/organization/" + OrgUUID + "/business-hours", - item: regexp.MustCompile(`^/organization/[^/]+/business-hours(?:/([^/]+))?$`), - hidden: []string{"workingHours"}, - required: []string{"name", "timezone", "workingHours"}, - }, - { - name: "cc_queue", listPath: "/organization/" + OrgUUID + "/v2/contact-service-queue", paged: true, - item: regexp.MustCompile(`^/organization/[^/]+/v2/contact-service-queue(?:/([^/]+))?$`), - deletePath: regexp.MustCompile(`^/organization/[^/]+/contact-service-queue/([^/]+)$`), - hidden: []string{"callDistributionGroups"}, - required: []string{"name", "channelType", "callDistributionGroups"}, - }, - { - name: "cc_entry_point", listPath: "/organization/" + OrgUUID + "/entry-point", - item: regexp.MustCompile(`^/organization/[^/]+/entry-point(?:/([^/]+))?$`), - required: []string{"name", "channelType"}, - }, - { - name: "cc_site", listPath: "/organization/" + OrgUUID + "/site", - item: regexp.MustCompile(`^/organization/[^/]+/site(?:/([^/]+))?$`), - required: []string{"name"}, - }, - { - name: "cc_user", listPath: "/organization/" + OrgUUID + "/user", - item: regexp.MustCompile(`^/organization/[^/]+/user(?:/([^/]+))?$`), - hidden: []string{"teamIds"}, - required: []string{"email"}, - }, -} - -// The other managed CC types are served from their catalog routes, each seeded with -// one sample object. Their PUT replaces the object, as every live CC PUT does. -func init() { - have := map[string]bool{"cc_team": true} - for _, c := range collections { - have[c.name] = true - } - for _, t := range catalog.Managed() { - if t.Area != resource.ContactCenter || have[t.Name] { - continue - } - item := t.Routes.Read.Template() - if item == "" { - item = t.Routes.Update.Template() - } - base := t.Routes.Create.Template() - if base == "" { - base = strings.TrimSuffix(item, "/{id}") - } - c := &collection{ - name: t.Name, listPath: "/organization/" + OrgUUID + t.Routes.List.Template(), paged: true, - item: regexp.MustCompile(`^/organization/[^/]+` + regexp.QuoteMeta(base) + `(?:/([^/]+))?$`), - required: []string{"id"}, - } - if del := t.Routes.Delete.Template(); del != "" && del != item { - c.deletePath = regexp.MustCompile(`^/organization/[^/]+` + regexp.QuoteMeta(strings.TrimSuffix(del, "/{id}")) + `/([^/]+)$`) - } - collections = append(collections, c) - generated = append(generated, t) - } -} - -// generated lists the catalog types served by init, for seeding. -var generated []resource.Type - -func seedCollections() map[string]map[string]map[string]any { - seeds := handwrittenSeeds() - for _, t := range generated { - object := sampleObject(t) - seeds[t.Name] = map[string]map[string]any{object["id"].(string): object} - } - for name, objects := range seeds { - for _, o := range objects { - if _, ok := o["lastUpdatedTime"]; !ok && strings.HasPrefix(name, "cc_") { - o["lastUpdatedTime"] = 1000.0 - } - } - } - return seeds -} - -func handwrittenSeeds() map[string]map[string]map[string]any { - return map[string]map[string]map[string]any{ - "cc_site": {"site1": {"id": "site1", "name": "Main Site", "active": true}}, - "cc_user": {"user1": {"id": "user1", "firstName": "Ada", "lastName": "Agent", "email": "ada@example.com", "teamIds": []any{"team1"}}}, - "call_queue": {"cq1": { - "id": "cq1", "name": "q-cq1", "firstName": "zz", "lastName": "queue", "extension": "2001", "languageCode": "en_us", - "timeZone": "America/New_York", "enabled": true, "locationId": "loc1", - "callPolicies": map[string]any{"policy": "CIRCULAR", "callBounce": map[string]any{"callBounceMaxRings": 8.0}}, - "queueSettings": map[string]any{"queueSize": 5.0, "overflow": map[string]any{"action": "PERFORM_BUSY_TREATMENT"}}, - "agents": []any{map[string]any{"id": "agentA", "firstName": "Ada", "lastName": "Agent"}}, - }}, - "auto_attendant": {"aa1": { - "id": "aa1", "name": "a-aa1", "firstName": "zz", "lastName": "aa", "extension": "2002", "languageCode": "en_us", - "timeZone": "America/New_York", "businessSchedule": "Hours", "locationId": "loc1", - "businessHoursMenu": map[string]any{"keyConfigurations": []any{map[string]any{"key": "0", "action": "EXIT"}}}, - }}, - "cc_skill": {"skill1": { - "id": "skill1", "name": "s-skill1", "description": "seed", "active": true, "skillType": "PROFICIENCY", - "serviceLevelThreshold": 30.0, "dynamicSkill": false, - }}, - "cc_business_hours": {"hours1": { - "id": "hours1", "name": "h-hours1", "description": "seed", "timezone": "America/New_York", - "workingHours": []any{map[string]any{"name": "8-6", "days": []any{"MON"}, "startTime": "08:00", "endTime": "18:00"}}, - }}, - "cc_queue": {"queue1": { - "id": "queue1", "name": "q-queue1", "description": "seed", "active": true, "timezone": "America/New_York", - "channelType": "TELEPHONY", "maxActiveContacts": 0.0, "maxTimeInQueue": 600.0, "serviceLevelThreshold": 120.0, - "callDistributionGroups": []any{map[string]any{"order": 1.0}}, - }}, - "cc_entry_point": {"ep1": { - "id": "ep1", "name": "e-ep1", "description": "seed", "active": true, "timezone": "America/New_York", - "channelType": "TELEPHONY", "maximumActiveContacts": 0.0, "serviceLevelThreshold": 1.0, - "flowId": "cc_flow1", "flowTagId": "Live", "controlFlowScriptUrl": "https://example.com/flow", - }}, - } -} - -// match finds the collection and object ID for a path. A delete-only route matches -// only a DELETE, and a delete at the ordinary item route of such a collection is a 405. -func (s *Server) match(method, path string) (*collection, string, bool) { - for _, c := range collections { - if c.deletePath != nil { - if m := c.deletePath.FindStringSubmatch(path); m != nil { - return c, m[1], true - } - } - if m := c.item.FindStringSubmatch(path); m != nil { - return c, m[1], true - } - } - return nil, "", false -} - -func (s *Server) collectionOp(c *collection, method, path, id string, body map[string]any) (result, bool) { - objects := s.objects[c.name] - if method == http.MethodPost { - for _, o := range objects { - if o["name"] == body["name"] { - return problem(409, 0, "duplicate name"), false - } - } - s.next++ - nid := fmt.Sprintf("%s%d", c.name, s.next) - o := clone(body) - o["id"] = nid - touch(c.name, o) - objects[nid] = o - return result{201, map[string]any{"id": nid}}, true - } - o, ok := objects[id] - if !ok { - return problem(404, 0, "not found"), false - } - switch method { - case http.MethodGet: - return result{200, clone(o)}, false - case http.MethodPut: - if len(c.required) == 0 { - merge(o, body) - return result{204, nil}, true - } - for _, field := range c.required { - if _, present := body[field]; !present { - return problem(400, 0, field+": should not be null or blank."), false - } - } - replaced := clone(body) - replaced["id"] = id - touch(c.name, replaced) - objects[id] = replaced - return result{200, clone(replaced)}, true - case http.MethodDelete: - if c.deletePath != nil && !c.deletePath.MatchString(path) { - return problem(405, 0, "method"), false - } - delete(objects, id) - return result{204, nil}, true - } - return problem(405, 0, "method"), false -} - -func (s *Server) collectionList(w http.ResponseWriter, r *http.Request) bool { - for _, c := range collections { - if r.URL.Path != c.listPath { - continue - } - items := []any{} - for _, id := range sortedIDs(s.objects[c.name]) { - items = append(items, listItem(c, s.objects[c.name][id])) - } - if filter := r.URL.Query().Get("filter"); strings.HasPrefix(filter, `id=="`) { - want := strings.TrimSuffix(strings.TrimPrefix(filter, `id=="`), `"`) - matched := []any{} - for _, item := range items { - if item.(map[string]any)["id"] == want { - matched = append(matched, item) - } - } - items = matched - } - switch { - case c.key != "": - start, size := queryInt(r, "start", 0), queryInt(r, "max", 100) - write(w, result{200, map[string]any{c.key: window(items, start, size)}}) - case c.paged: - page, size := queryInt(r, "page", 0), queryInt(r, "pageSize", 100) - total := (len(items) + size - 1) / size - write(w, result{200, map[string]any{"data": window(items, page*size, size), "meta": map[string]any{"totalPages": total}}}) - default: - page, size := queryInt(r, "page", 0), queryInt(r, "pageSize", 100) - write(w, result{200, window(items, page*size, size)}) - } - return true - } - return false -} - -func listItem(c *collection, o map[string]any) map[string]any { - item := clone(o) - for _, field := range c.hidden { - delete(item, field) - } - if c.summary != nil { - short := map[string]any{} - for _, field := range c.summary { - short[field] = o[field] - } - return short - } - return item -} - -// Object returns a copy of a stored object from a generic collection. -func (s *Server) Object(collection, id string) map[string]any { - s.mu.Lock() - defer s.mu.Unlock() - return clone(s.objects[collection][id]) -} - -// Put stores an object in a generic collection, as another admin would. -func (s *Server) Put(collection string, object map[string]any) { - s.mu.Lock() - defer s.mu.Unlock() - o := clone(object) - touch(collection, o) - s.objects[collection][object["id"].(string)] = o -} - -// touch records a change time as Contact Center does on every write, including writes -// to fields its lists leave out. -func touch(collection string, o map[string]any) { - if strings.HasPrefix(collection, "cc_") { - o["lastUpdatedTime"] = float64(time.Now().UnixMilli()) - } -} - -// Objects returns copies of every object in a generic collection. -func (s *Server) Objects(collection string) []map[string]any { - s.mu.Lock() - defer s.mu.Unlock() - var out []map[string]any - for _, id := range sortedIDs(s.objects[collection]) { - out = append(out, clone(s.objects[collection][id])) - } - return out -} diff --git a/pkg/fakeapi/fakeapi.go b/pkg/fakeapi/fakeapi.go deleted file mode 100644 index d34a63b..0000000 --- a/pkg/fakeapi/fakeapi.go +++ /dev/null @@ -1,591 +0,0 @@ -// Package fakeapi mimics the Webex behaviour observed on a live tenant, on the same -// routes, for the catalog's types, and adds fault injection a live tenant cannot -// safely provide. Tests use it in-process; Webex Admin Studio serves it to end-to-end -// runs. -package fakeapi - -import ( - "encoding/json" - "fmt" - "io" - "net/http" - "regexp" - "strconv" - "strings" - "sync" - "time" - - "github.com/Cloverhound/webex-cli/pkg/webexapi" -) - -// OrgUUID is the fake org's Contact Center ID. -const OrgUUID = "org1" - -// Hosts are the API hosts of a fake served at baseURL. -func Hosts(baseURL string) webexapi.Hosts { - return webexapi.Hosts{Webex: baseURL + "/v1", CC: baseURL} -} - -// Fault modes. -const ( - LoseResponse = "lose_response" // commits, then drops the connection - Fail500NoCommit = "fail_500_no_commit" // 500, nothing changed - Fail500Commit = "fail_500_commit" // 500 after committing - Fail401 = "fail_401" // 401, nothing changed - Fail403 = "fail_403" // 403, nothing changed - DropNoCommit = "drop_no_commit" // drops the connection, nothing changed - DelayCommit = "delay_commit" // commits after DelayMS, even if the client left -) - -// Fault makes matching requests misbehave. -type Fault struct { - Method string `json:"method"` - Path string `json:"path"` // regexp - Mode string `json:"mode"` - - // After holds the fault until a request with this method has been seen. - After string `json:"after"` - - Skip int `json:"skip"` - DelayMS int `json:"delay_ms"` - - // Times limits the fault, 1 by default. Negative means unlimited. - Times int `json:"times"` - - seen int -} - -// LogEntry records a request. -type LogEntry struct { - Seq int `json:"seq"` - Method string `json:"method"` - Path string `json:"path"` - Committed bool `json:"committed"` - Fault string `json:"fault,omitempty"` -} - -// Server is the fake. The zero value is not usable; call New. -type Server struct { - mu sync.Mutex - hg map[string]map[string]any - team map[string]map[string]any - location []map[string]any - objects map[string]map[string]map[string]any - next int - faults []*Fault - log []*LogEntry - seen map[string]bool - latency time.Duration -} - -var ( - hgItem = regexp.MustCompile(`^/v1/telephony/config/locations/([^/]+)/huntGroups(?:/([^/]+))?$`) - teamItem = regexp.MustCompile(`^/organization/([^/]+)/team(?:/([^/]+))?$`) -) - -// New returns a server holding three hunt groups, two teams and reference data. -func New() *Server { - s := &Server{} - s.Reset() - return s -} - -// Reset restores the seeded state and clears faults and the request log. -func (s *Server) Reset() { - s.mu.Lock() - defer s.mu.Unlock() - s.reset() -} - -func (s *Server) reset() { - s.hg, s.team, s.faults, s.log, s.seen, s.next = map[string]map[string]any{}, map[string]map[string]any{}, nil, nil, map[string]bool{}, 100 - s.latency = 0 - for _, id := range []string{"hg1", "hg2", "hg3"} { - s.hg[id] = seedHG(id) - } - for _, id := range []string{"team1", "team2"} { - s.team[id] = map[string]any{"id": id, "name": "t-" + id, "teamType": "AGENT", "teamStatus": "IN_SERVICE", - "active": true, "siteId": "site1", "description": "seed", "version": 3.0, "dbId": "db-" + id, - "lastUpdatedTime": 1000.0, "rankQueuesForTeam": false, "skillProfileId": "unmodelled-sp", - "userIds": []any{"user1"}, "futureField": "keep-me"} - } - s.location = []map[string]any{{"id": "loc1", "name": "Boston", "timeZone": "America/New_York", - "address": map[string]any{"city": "Boston"}}} - s.objects = seedCollections() -} - -func seedHG(id string) map[string]any { - return map[string]any{"id": id, "name": "g-" + id, "firstName": "zz", "lastName": "spike", "extension": "1" + id[2:], - "languageCode": "en_us", "timeZone": "America/New_York", "enabled": true, "esn": "091", "routingPrefix": "091", - "locationId": "loc1", - "alternateNumberSettings": map[string]any{"distinctiveRingEnabled": true}, - "callPolicies": map[string]any{"policy": "CIRCULAR", "noAnswer": map[string]any{"numberOfRings": 5.0, "systemMaxNumberOfRings": 20.0}}, - "agents": []any{map[string]any{"id": "agentA", "firstName": "enriched"}}, - "directoryPin": "s3cret-unmodelled"} -} - -// Seed adds count hunt groups, for scale tests. -func (s *Server) Seed(count int) { - s.mu.Lock() - defer s.mu.Unlock() - for i := 0; i < count; i++ { - id := fmt.Sprintf("hg%d", 1000+i) - s.hg[id] = seedHG(id) - } -} - -// SetLatency delays every API request. -func (s *Server) SetLatency(d time.Duration) { - s.mu.Lock() - defer s.mu.Unlock() - s.latency = d -} - -// AddFault arms a fault. -func (s *Server) AddFault(f Fault) { - s.mu.Lock() - defer s.mu.Unlock() - if f.Times == 0 { - f.Times = 1 - } - s.faults = append(s.faults, &f) -} - -// External changes an object as another admin would, outside any client request. -func (s *Server) External(kind, id string, patch map[string]any) { - s.mu.Lock() - defer s.mu.Unlock() - if kind == "hg" { - merge(s.hg[id], patch) - } else if objects, ok := s.objects[kind]; ok { - merge(objects[id], patch) - touch(kind, objects[id]) - } else { - merge(s.team[id], patch) - } -} - -// Delete removes an object as another admin would. -func (s *Server) Delete(kind, id string) { - s.mu.Lock() - defer s.mu.Unlock() - if kind == "hg" { - delete(s.hg, id) - } else if objects, ok := s.objects[kind]; ok { - delete(objects, id) - } else { - delete(s.team, id) - } -} - -// Log returns a copy of the request log. -func (s *Server) Log() []LogEntry { - s.mu.Lock() - defer s.mu.Unlock() - out := make([]LogEntry, len(s.log)) - for i, e := range s.log { - out[i] = *e - } - return out -} - -// Mutations returns logged requests other than GET. -func (s *Server) Mutations() []LogEntry { - var out []LogEntry - for _, e := range s.Log() { - if e.Method != http.MethodGet { - out = append(out, e) - } - } - return out -} - -// HuntGroup returns a copy of a stored hunt group, including hidden fields. -func (s *Server) HuntGroup(id string) map[string]any { - s.mu.Lock() - defer s.mu.Unlock() - return clone(s.hg[id]) -} - -// Team returns a copy of a stored team, including hidden fields. -func (s *Server) Team(id string) map[string]any { - s.mu.Lock() - defer s.mu.Unlock() - return clone(s.team[id]) -} - -func (s *Server) take(method, path string) *Fault { - for _, f := range s.faults { - if f.Times == 0 || f.Method != method { - continue - } - if ok, _ := regexp.MatchString(f.Path, path); !ok { - continue - } - if f.After != "" && !s.seen[f.After] { - continue - } - f.seen++ - if f.seen <= f.Skip { - continue - } - if f.Times > 0 { - f.Times-- - } - return f - } - return nil -} - -// merge deep-merges a body the way the live hunt group PUT does. Clearing firstName -// is accepted and ignored, which is real Webex behaviour. -func merge(dst, patch map[string]any) { - for k, v := range patch { - if k == "firstName" && (v == nil || v == "") { - continue - } - if m, ok := v.(map[string]any); ok { - if d, ok := dst[k].(map[string]any); ok { - merge(d, m) - continue - } - } - dst[k] = v - } -} - -type result struct { - status int - body any -} - -func problem(status, code int, msg string) result { - return result{status, map[string]any{"errorCode": code, "message": msg}} -} - -func clone(m map[string]any) map[string]any { - if m == nil { - return nil - } - b, _ := json.Marshal(m) - var o map[string]any - _ = json.Unmarshal(b, &o) - return o -} - -func (s *Server) hgOp(method, id string, body map[string]any) (result, bool) { - if method == http.MethodPost { - for _, o := range s.hg { - if o["name"] == body["name"] { - return problem(400, 4208, "[Error 4208] The name is already in use by a service of this type."), false - } - } - s.next++ - nid := fmt.Sprintf("hg%d", s.next) - o := seedHG(nid) - delete(o, "directoryPin") - merge(o, body) - o["id"] = nid - o["enabled"] = true - s.hg[nid] = o - return result{201, map[string]any{"id": nid}}, true - } - o, ok := s.hg[id] - if !ok { - return problem(404, 4003, "not found"), false - } - switch method { - case http.MethodGet: - out := clone(o) - delete(out, "directoryPin") - return result{200, out}, false - case http.MethodPut: - merge(o, body) - return result{204, nil}, true - case http.MethodDelete: - delete(s.hg, id) - return result{204, nil}, true - } - return problem(405, 0, "method"), false -} - -func (s *Server) teamOp(method, id string, body map[string]any) (result, bool) { - if method == http.MethodPost { - for _, o := range s.team { - if o["name"] == body["name"] && o["siteId"] == body["siteId"] { - return result{409, map[string]any{"error": map[string]any{"key": "409", "errorKey": "error_duplicate_entry"}}}, false - } - } - s.next++ - nid := fmt.Sprintf("team%d", s.next) - o := clone(body) - o["id"], o["version"], o["dbId"], o["lastUpdatedTime"] = nid, 1.0, "db-"+nid, float64(time.Now().UnixMilli()) - s.team[nid] = o - return result{201, clone(o)}, true - } - o, ok := s.team[id] - if !ok { - return problem(404, 0, "not found"), false - } - switch method { - case http.MethodGet: - out := clone(o) - delete(out, "version") - delete(out, "dbId") - out["_links"] = map[string]any{"self": "x"} - out["siteName"] = "Site-1" - return result{200, out}, false - case http.MethodPut: - for _, f := range []string{"name", "teamType", "teamStatus", "siteId"} { - if _, ok := body[f]; !ok { - return problem(400, 0, "missing "+f), false - } - } - n := clone(body) - n["version"], n["dbId"], n["lastUpdatedTime"] = o["version"].(float64)+1, o["dbId"], float64(time.Now().UnixMilli()) - delete(n, "siteName") - s.team[id] = n - return result{200, clone(n)}, true - case http.MethodDelete: - delete(s.team, id) - return result{204, nil}, true - } - return problem(405, 0, "method"), false -} - -func write(w http.ResponseWriter, r result) { - w.Header().Set("Trackingid", "FAKE_"+fmt.Sprint(time.Now().UnixNano())) - if r.body == nil { - w.WriteHeader(r.status) - return - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(r.status) - _ = json.NewEncoder(w).Encode(r.body) -} - -func drop(w http.ResponseWriter) { - if h, ok := w.(http.Hijacker); ok { - if c, _, err := h.Hijack(); err == nil { - c.Close() - } - } -} - -func sortedIDs(m map[string]map[string]any) []string { - ids := make([]string, 0, len(m)) - for id := range m { - ids = append(ids, id) - } - // Numeric-aware order keeps pages stable as seeded counts grow. - for i := 1; i < len(ids); i++ { - for j := i; j > 0 && less(ids[j], ids[j-1]); j-- { - ids[j], ids[j-1] = ids[j-1], ids[j] - } - } - return ids -} - -func less(a, b string) bool { - if len(a) != len(b) { - return len(a) < len(b) - } - return a < b -} - -func window[T any](items []T, start, size int) []T { - if start >= len(items) { - return []T{} - } - end := start + size - if end > len(items) { - end = len(items) - } - return items[start:end] -} - -func queryInt(r *http.Request, name string, fallback int) int { - if v, err := strconv.Atoi(r.URL.Query().Get(name)); err == nil { - return v - } - return fallback -} - -// list answers list routes. CC lists here return a bare array, as the live tenant's -// team, site and user routes do. -func (s *Server) list(w http.ResponseWriter, r *http.Request) bool { - if r.Method != http.MethodGet { - return false - } - start, size := queryInt(r, "start", 0), queryInt(r, "max", 100) - page, pageSize := queryInt(r, "page", 0), queryInt(r, "pageSize", 100) - ccWindow := func(items []any) []any { return window(items, page*pageSize, pageSize) } - switch { - case r.URL.Path == "/v1/telephony/config/huntGroups": - out := []any{} - for _, id := range sortedIDs(s.hg) { - o := s.hg[id] - out = append(out, map[string]any{"id": o["id"], "name": o["name"], "locationId": o["locationId"]}) - } - write(w, result{200, map[string]any{"huntGroups": window(out, start, size)}}) - case r.URL.Path == "/v1/locations": - out := []any{} - for _, o := range s.location { - out = append(out, o) - } - write(w, result{200, map[string]any{"items": window(out, start, size)}}) - case r.URL.Path == "/organization/"+OrgUUID+"/team": - out := []any{} - for _, id := range sortedIDs(s.team) { - o := clone(s.team[id]) - delete(o, "version") - delete(o, "dbId") - out = append(out, o) - } - write(w, result{200, ccWindow(out)}) - default: - return false - } - return true -} - -func (s *Server) serveAPI(w http.ResponseWriter, r *http.Request) { - s.mu.Lock() - lat := s.latency - s.mu.Unlock() - if lat > 0 { - time.Sleep(lat) - } - raw, _ := io.ReadAll(r.Body) - var body map[string]any - _ = json.Unmarshal(raw, &body) - // The handlers write into the body, so a write without one is refused here. - if body == nil && (r.Method == http.MethodPost || r.Method == http.MethodPut || r.Method == http.MethodPatch) { - write(w, problem(400, 0, "the body must be a JSON object")) - return - } - - s.mu.Lock() - e := &LogEntry{Seq: len(s.log) + 1, Method: r.Method, Path: r.URL.Path} - f := s.take(r.Method, r.URL.Path) - s.log = append(s.log, e) - mode := "" - if f != nil { - mode = f.Mode - e.Fault = mode - } - if mode == "" && r.Method == http.MethodGet && (s.list(w, r) || s.collectionList(w, r) || s.referenceList(w, r)) { - s.mu.Unlock() - return - } - var op func() (result, bool) - if m := hgItem.FindStringSubmatch(r.URL.Path); m != nil { - op = func() (result, bool) { return s.hgOp(r.Method, m[2], body) } - } else if m := teamItem.FindStringSubmatch(r.URL.Path); m != nil { - op = func() (result, bool) { return s.teamOp(r.Method, m[2], body) } - } else if c, id, ok := s.match(r.Method, r.URL.Path); ok { - op = func() (result, bool) { return s.collectionOp(c, r.Method, r.URL.Path, id, body) } - } else if mode == "" { - s.mu.Unlock() - write(w, problem(404, 0, "no route")) - return - } - switch mode { - case Fail500NoCommit: - s.seen[r.Method] = true - s.mu.Unlock() - write(w, problem(500, 0, "injected")) - return - case Fail401: - s.mu.Unlock() - write(w, problem(401, 0, "token expired")) - return - case Fail403: - s.mu.Unlock() - write(w, problem(403, 0, "not licensed")) - return - case DropNoCommit: - s.mu.Unlock() - drop(w) - return - case DelayCommit: - s.mu.Unlock() - time.Sleep(time.Duration(f.DelayMS) * time.Millisecond) - s.mu.Lock() - } - if op == nil { - // A commit-type fault on a route with no item handler has nothing to commit. - s.mu.Unlock() - write(w, problem(404, 0, "no route")) - return - } - res, committed := op() - e.Committed = committed - s.seen[r.Method] = true - s.mu.Unlock() - switch mode { - case LoseResponse: - drop(w) - case Fail500Commit: - write(w, problem(500, 0, "injected after commit")) - default: - write(w, res) - } -} - -func (s *Server) serveControl(w http.ResponseWriter, r *http.Request) { - raw, _ := io.ReadAll(r.Body) - switch strings.TrimPrefix(r.URL.Path, "/__ctl/") { - case "reset": - s.Reset() - case "latency": - var v struct { - MS int `json:"ms"` - } - _ = json.Unmarshal(raw, &v) - s.SetLatency(time.Duration(v.MS) * time.Millisecond) - case "seed": - var v struct { - Count int `json:"count"` - } - _ = json.Unmarshal(raw, &v) - s.Seed(v.Count) - case "fault": - var f Fault - _ = json.Unmarshal(raw, &f) - s.AddFault(f) - case "log": - _ = json.NewEncoder(w).Encode(s.Log()) - case "state": - s.mu.Lock() - state := map[string]any{"hg": s.hg, "team": s.team} - _ = json.NewEncoder(w).Encode(state) - s.mu.Unlock() - case "external": - var v struct { - Kind string `json:"kind"` - ID string `json:"id"` - Patch map[string]any `json:"patch"` - } - _ = json.Unmarshal(raw, &v) - s.External(v.Kind, v.ID, v.Patch) - case "delete": - var v struct { - Kind string `json:"kind"` - ID string `json:"id"` - } - _ = json.Unmarshal(raw, &v) - s.Delete(v.Kind, v.ID) - default: - w.WriteHeader(http.StatusNotFound) - } -} - -// ServeHTTP implements http.Handler. -func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { - if strings.HasPrefix(r.URL.Path, "/__ctl/") { - s.serveControl(w, r) - return - } - s.serveAPI(w, r) -} diff --git a/pkg/fakeapi/reference.go b/pkg/fakeapi/reference.go deleted file mode 100644 index 5aa01ab..0000000 --- a/pkg/fakeapi/reference.go +++ /dev/null @@ -1,101 +0,0 @@ -package fakeapi - -import ( - "net/http" - "strings" - - "github.com/Cloverhound/webex-cli/pkg/catalog" - "github.com/Cloverhound/webex-cli/pkg/resource" -) - -// served lists catalog types this package answers with specific behaviour. Managed CC -// types are served as collections, and every other type is read-only in the app, so -// one sample object in the right envelope is enough. -var served = map[string]bool{ - "location": true, "hunt_group": true, "cc_team": true, "call_queue": true, "auto_attendant": true, -} - -var sampleText = map[string]string{resource.Date: "2026-12-25", resource.Time: "08:00", resource.DateTime: "2026-12-25T08:00"} - -func sampleValues(fields []resource.Field) resource.Values { - values := resource.Values{} - for _, f := range fields { - switch f.Kind { - case resource.Bool: - values[f.Name] = true - case resource.Int: - values[f.Name] = 1 - case resource.StringList: - values[f.Name] = []any{"sample"} - case resource.ObjectList: - values[f.Name] = []any{map[string]any(sampleValues(f.Item))} - default: - values[f.Name] = sampleText[f.Format] - if f.Format == "" { - values[f.Name] = "sample " + f.Name - } - } - } - return values -} - -func sampleObject(t resource.Type) map[string]any { - object := clone(t.PatchBody(sampleValues(t.Fields))) - object["id"] = t.Name + "1" - if t.Routes.IDKey != "" { - object[t.Routes.IDKey] = t.Name + "1" - } - if t.Routes.ParentKey != "" { - object[t.Routes.ParentKey] = "loc1" - } - return object -} - -func samplePath(t resource.Type) string { - route := strings.ReplaceAll(t.Routes.List.Template(), "{parent}", "loc1") - if strings.Contains(route, "{org}") { - return strings.ReplaceAll(route, "{org}", OrgUUID) - } - if t.Area == resource.ContactCenter { - return "/organization/" + OrgUUID + route - } - return "/v1" + route -} - -// referenceList answers read-only catalog routes and the calling location list. -func (s *Server) referenceList(w http.ResponseWriter, r *http.Request) bool { - if r.URL.Path == "/v1/telephony/config/locations" { - items := []any{} - for _, o := range s.location { - items = append(items, o) - } - write(w, result{200, map[string]any{"locations": items}}) - return true - } - for _, t := range catalog.All() { - if served[t.Name] || r.URL.Path != samplePath(t) { - continue - } - object := sampleObject(t) - switch { - case t.Routes.Singleton: - write(w, result{200, object}) - case t.Area == resource.ContactCenter: - write(w, result{200, map[string]any{"data": []any{object}, "meta": map[string]any{"totalPages": 1}}}) - default: - write(w, result{200, map[string]any{t.Routes.ArrayKey: []any{object}}}) - } - return true - } - return false -} - -// Types the fake seeds, for tests that count objects. -func SeededObjects() int { - return len(catalog.All()) + 3 // three hunt groups and two teams instead of one each -} - -// SeededManaged is the number of seeded objects in the Terraform model. -func SeededManaged() int { - return len(catalog.Managed()) + 3 -} diff --git a/pkg/guard/guard.go b/pkg/guard/guard.go deleted file mode 100644 index f919dc1..0000000 --- a/pkg/guard/guard.go +++ /dev/null @@ -1,325 +0,0 @@ -// Package guard is the write protocol. Webex has no conditional writes, can accept a -// write and ignore it, and can commit a write it reports as failed, so every write -// here is checked before and after it is sent. -package guard - -import ( - "context" - "errors" - "fmt" - "strings" - "sync" - "time" - - "github.com/Cloverhound/webex-cli/pkg/resource" - "github.com/Cloverhound/webex-cli/pkg/webex" -) - -// Kind classifies a failure. The app shows each kind differently. -type Kind string - -const ( - Refused Kind = "refused" // writes are not permitted in this run - Stopped Kind = "stopped" // an earlier failure or cancellation ended the run - Conflict Kind = "conflict" // the object changed after the plan - Rejected Kind = "rejected" // Webex refused the write; nothing changed - OutcomeUnknown Kind = "outcome_unknown" // the write may or may not have landed - Divergent Kind = "divergent" // Webex accepted the write but the object differs - Unverified Kind = "unverified" // the write was accepted but could not be read back -) - -// Failure is what the admin sees. -type Failure struct { - Kind Kind - Summary string - Detail string -} - -func (f *Failure) Error() string { return f.Summary + ": " + f.Detail } - -// API is the Webex access the guard needs. -type API interface { - Read(ctx context.Context, t resource.Type, key resource.Key) (webex.Object, error) - Create(ctx context.Context, t resource.Type, desired resource.Values) (resource.Key, error) - Update(ctx context.Context, t resource.Type, key resource.Key, raw map[string]any, delta resource.Values) error - Delete(ctx context.Context, t resource.Type, key resource.Key) error -} - -const verifyAttempts = 3 - -// Guard wraps writes for one apply. It lives for one provider process, which is what -// makes its stop flag effective: OpenTofu keeps scheduling independent resources after -// a failure, and every one of them comes through here. -type Guard struct { - API API - - // Writable must be set by the reviewed apply. Sync and plan runs leave it false, - // so they cannot change Webex even by mistake. - Writable bool - - // VerifyDelay separates read-back attempts, to allow for read-after-write lag. - VerifyDelay time.Duration - - mu sync.Mutex - stopped string -} - -func (g *Guard) stop(reason string) { - g.mu.Lock() - defer g.mu.Unlock() - if g.stopped == "" { - g.stopped = reason - } -} - -func (g *Guard) fail(f *Failure) *Failure { - g.stop(f.Summary) - return f -} - -func (g *Guard) admit(ctx context.Context) error { - if !g.Writable { - return &Failure{Refused, "Refused: this run may not write to Webex", "writes happen only during a reviewed apply"} - } - if err := g.halted(); err != nil { - return err - } - if err := ctx.Err(); err != nil { - g.stop("the run was cancelled") - return &Failure{Stopped, "Stopped: the run was cancelled", err.Error()} - } - return nil -} - -// halted reports a stop. Writes check it again just before sending, because another -// write can fail while this one reads. -func (g *Guard) halted() error { - g.mu.Lock() - reason := g.stopped - g.mu.Unlock() - if reason != "" { - return &Failure{Stopped, "Stopped: an earlier failure blocks further writes", reason} - } - return nil -} - -// recoveryContext deliberately ignores the caller's cancellation: the outcome of a -// write that was already sent must be learned even when the run is stopping. -func recoveryContext() (context.Context, context.CancelFunc) { - return context.WithTimeout(context.Background(), 8*time.Second) -} - -// plannedChanges lists fields whose planned value is known and differs. A nil planned -// value means Terraform left it for the server, so it is not a change. -func plannedChanges(t resource.Type, have, planned resource.Values) []string { - return t.Unmet(have, planned) -} - -// Update writes the fields that differ between prior and planned. It returns the -// object's real values, also on failure, so Terraform state never records a value -// Webex does not hold. -func (g *Guard) Update(ctx context.Context, t resource.Type, key resource.Key, prior, planned resource.Values) (resource.Values, error) { - if err := g.admit(ctx); err != nil { - return prior, err - } - fresh, err := g.API.Read(ctx, t, key) - if errors.Is(err, webex.ErrNotFound) { - return prior, g.fail(&Failure{Conflict, "Conflict: this object was deleted after the plan was made", t.Title}) - } - if err != nil { - return prior, g.fail(&Failure{Stopped, "Stopped before writing: could not read the current object", err.Error()}) - } - // Webex offers no conditional write, so a change landing between this read and - // the PUT cannot be detected. - if d := resource.Changed(fresh.Values, prior, t.FieldNames()); len(d) > 0 { - return fresh.Values, g.fail(&Failure{Conflict, "Conflict: this object changed after the plan was made", strings.Join(d, ", ")}) - } - fields := plannedChanges(t, prior, planned) - if len(fields) == 0 { - return fresh.Values, nil - } - delta := resource.Values{} - for _, f := range fields { - delta[f] = planned[f] - } - return g.write(ctx, t, key, fresh.Raw, fresh.Values, planned, delta) -} - -func (g *Guard) write(ctx context.Context, t resource.Type, key resource.Key, raw map[string]any, baseline, planned, delta resource.Values) (resource.Values, error) { - if err := g.halted(); err != nil { - return baseline, err - } - // Each attempt checks again, as a 429 retry can come after another write failed. - if err := g.API.Update(webex.WithBeforeWrite(ctx, g.halted), t, key, raw, delta); err != nil { - var stopped *Failure - if errors.As(err, &stopped) { - return baseline, err - } - // Other writes stop now, not after the read below, which can take seconds. - g.stop(writeFailure(err, "The write", "").Summary) - actual := g.observe(t, key, baseline) - return actual, g.fail(writeFailure(err, "The write", observed(actual, baseline, planned, t))) - } - actual, diff, err := g.verify(t, key, planned) - if err != nil { - return baseline, g.fail(&Failure{Unverified, "Webex accepted the write but it could not be verified", err.Error()}) - } - if len(diff) > 0 { - return actual, g.fail(&Failure{Divergent, "The observed state differs from the approved plan", strings.Join(diff, ", ")}) - } - return actual, nil -} - -// observe reads what is there after a failed write. The result is only a first look: -// a delayed write can still land afterwards, so the caller reports the outcome as -// unknown whatever this says. -func (g *Guard) observe(t resource.Type, key resource.Key, fallback resource.Values) resource.Values { - ctx, cancel := recoveryContext() - defer cancel() - obj, err := g.API.Read(ctx, t, key) - if err != nil { - return fallback - } - return obj.Values -} - -func observed(actual, baseline, planned resource.Values, t resource.Type) string { - switch { - case len(plannedChanges(t, actual, planned)) == 0: - return "it appears to have landed" - case len(resource.Changed(actual, baseline, t.FieldNames())) == 0: - return "it does not appear to have landed yet" - default: - return "the object holds other values" - } -} - -func writeFailure(err error, what, seen string) *Failure { - var unsent *webex.NotSent - var invalid *resource.Invalid - if errors.As(err, &unsent) || errors.As(err, &invalid) { - return &Failure{Rejected, what + " was not sent", err.Error()} - } - if webex.Classify(err) == webex.Rejected { - return &Failure{Rejected, "Webex rejected " + strings.ToLower(what), err.Error()} - } - detail := err.Error() - if seen != "" { - detail = fmt.Sprintf("%s; %s", detail, seen) - } - return &Failure{OutcomeUnknown, "The outcome of " + strings.ToLower(what) + " is unknown", detail} -} - -func (g *Guard) verify(t resource.Type, key resource.Key, planned resource.Values) (resource.Values, []string, error) { - ctx, cancel := recoveryContext() - defer cancel() - var last error - var actual resource.Values - for i := 0; i < verifyAttempts; i++ { - if i > 0 { - time.Sleep(g.VerifyDelay) - } - obj, err := g.API.Read(ctx, t, key) - if err != nil { - last = err - continue - } - last, actual = nil, obj.Values - if len(plannedChanges(t, actual, planned)) == 0 { - return actual, nil, nil - } - } - if last != nil { - return nil, nil, last - } - return actual, plannedChanges(t, actual, planned), nil -} - -// Create makes the object, then writes any field Webex ignored on create. A returned -// key with an error means the object exists but is not as planned, and Terraform -// state must hold it. -func (g *Guard) Create(ctx context.Context, t resource.Type, desired resource.Values) (resource.Key, resource.Values, error) { - if err := g.admit(ctx); err != nil { - return resource.Key{}, nil, err - } - // A create that copies from an existing object reads first, and a failure - // elsewhere during those reads must still stop its POST. - key, err := g.API.Create(webex.WithBeforeWrite(ctx, g.halted), t, desired) - var stopped *Failure - if errors.As(err, &stopped) { - return resource.Key{}, nil, err - } - if err != nil { - return resource.Key{}, nil, g.fail(writeFailure(err, "The create", "")) - } - obj, err := g.readBack(t, key, func(err error) bool { return err == nil }) - if err != nil { - return key, desired, g.fail(&Failure{Unverified, "The object was created but could not be verified", err.Error()}) - } - missed := plannedChanges(t, obj.Values, desired) - if len(missed) == 0 { - return key, obj.Values, nil - } - delta := resource.Values{} - for _, f := range missed { - delta[f] = desired[f] - } - actual, err := g.write(ctx, t, key, obj.Raw, obj.Values, desired, delta) - return key, actual, err -} - -// Delete removes the object if it still matches prior. An object already gone is -// success, since that is the intended end state. -func (g *Guard) Delete(ctx context.Context, t resource.Type, key resource.Key, prior resource.Values) error { - if err := g.admit(ctx); err != nil { - return err - } - fresh, err := g.API.Read(ctx, t, key) - if errors.Is(err, webex.ErrNotFound) { - return nil - } - if err != nil { - return g.fail(&Failure{Stopped, "Stopped before writing: could not read the current object", err.Error()}) - } - if d := resource.Changed(fresh.Values, prior, t.FieldNames()); len(d) > 0 { - return g.fail(&Failure{Conflict, "Conflict: this object changed after the plan was made", strings.Join(d, ", ")}) - } - if err := g.halted(); err != nil { - return err - } - if err := g.API.Delete(webex.WithBeforeWrite(ctx, g.halted), t, key); err != nil { - var stopped *Failure - if errors.As(err, &stopped) { - return err - } - return g.fail(writeFailure(err, "The delete", "")) - } - _, err = g.readBack(t, key, func(err error) bool { return errors.Is(err, webex.ErrNotFound) }) - switch { - case errors.Is(err, webex.ErrNotFound): - return nil - case err != nil: - return g.fail(&Failure{Unverified, "The delete could not be verified", err.Error()}) - default: - return g.fail(&Failure{Divergent, "The observed state differs from the approved plan", "object still exists"}) - } -} - -// readBack reads the object after a write until done accepts the result, up to -// verifyAttempts reads apart, because Webex can answer a read with the state before -// the write. It returns the last read. -func (g *Guard) readBack(t resource.Type, key resource.Key, done func(error) bool) (webex.Object, error) { - ctx, cancel := recoveryContext() - defer cancel() - var obj webex.Object - var err error - for i := 0; i < verifyAttempts; i++ { - if i > 0 { - time.Sleep(g.VerifyDelay) - } - if obj, err = g.API.Read(ctx, t, key); done(err) { - break - } - } - return obj, err -} diff --git a/pkg/guard/guard_test.go b/pkg/guard/guard_test.go deleted file mode 100644 index eb407f2..0000000 --- a/pkg/guard/guard_test.go +++ /dev/null @@ -1,495 +0,0 @@ -package guard - -import ( - "context" - "errors" - "net/http/httptest" - "strings" - "testing" - "time" - - "github.com/Cloverhound/webex-cli/pkg/catalog" - "github.com/Cloverhound/webex-cli/pkg/fakeapi" - "github.com/Cloverhound/webex-cli/pkg/resource" - "github.com/Cloverhound/webex-cli/pkg/webex" - "github.com/Cloverhound/webex-cli/pkg/webexapi" -) - -const hgPath = "/huntGroups" - -type fixture struct { - guard *Guard - api *webex.Client - fake *fakeapi.Server - hg resource.Type - team resource.Type -} - -func newFixture(t *testing.T) *fixture { - t.Helper() - fake := fakeapi.New() - srv := httptest.NewServer(fake) - t.Cleanup(srv.Close) - api := &webex.Client{ - API: &webexapi.Client{Token: func(context.Context) (string, error) { return "tok", nil }}, - Hosts: fakeapi.Hosts(srv.URL), - OrgUUID: fakeapi.OrgUUID, - } - hg, err := catalog.ByName("hunt_group") - if err != nil { - t.Fatal(err) - } - team, err := catalog.ByName("cc_team") - if err != nil { - t.Fatal(err) - } - return &fixture{guard: &Guard{API: api, Writable: true, VerifyDelay: time.Millisecond}, api: api, fake: fake, hg: hg, team: team} -} - -var hg1 = resource.Key{Parent: "loc1", ID: "hg1"} - -func (f *fixture) prior(t *testing.T) resource.Values { - t.Helper() - obj, err := f.api.Read(context.Background(), f.hg, hg1) - if err != nil { - t.Fatal(err) - } - return obj.Values -} - -func with(v resource.Values, field string, value any) resource.Values { - out := resource.Values{} - for k, x := range v { - out[k] = x - } - out[field] = value - return out -} - -func failureKind(t *testing.T, err error) Kind { - t.Helper() - var f *Failure - if !errors.As(err, &f) { - t.Fatalf("err = %v, want a Failure", err) - } - return f.Kind -} - -// stopDuringRead stands in for another write failing while this one reads. -type stopDuringRead struct { - API - guard *Guard -} - -func (s stopDuringRead) Read(ctx context.Context, t resource.Type, key resource.Key) (webex.Object, error) { - s.guard.stop("another write failed") - return s.API.Read(ctx, t, key) -} - -func TestAFailureDuringTheReadStopsTheWrite(t *testing.T) { - f := newFixture(t) - prior := f.prior(t) - f.guard.API = stopDuringRead{f.api, f.guard} - if _, err := f.guard.Update(context.Background(), f.hg, hg1, prior, with(prior, "no_answer_rings", 7)); failureKind(t, err) != Stopped { - t.Fatalf("update err = %v", err) - } - f.guard.stopped = "" - if err := f.guard.Delete(context.Background(), f.hg, hg1, prior); failureKind(t, err) != Stopped { - t.Fatalf("delete err = %v", err) - } - if m := f.fake.Mutations(); len(m) != 0 { - t.Fatalf("sent %v", m) - } -} - -// failingUpdate fails every update and, on the read that observes the failure, -// records whether another write would still be admitted. -type failingUpdate struct { - API - guard *Guard - reads int - admitted *bool -} - -func (f *failingUpdate) Read(ctx context.Context, t resource.Type, key resource.Key) (webex.Object, error) { - f.reads++ - if f.reads == 2 { - *f.admitted = f.guard.admit(ctx) == nil - } - return f.API.Read(ctx, t, key) -} - -func (f *failingUpdate) Update(context.Context, resource.Type, resource.Key, map[string]any, resource.Values) error { - return errors.New("connection reset") -} - -func TestAFailedUpdateStopsOtherWritesBeforeItIsObserved(t *testing.T) { - f := newFixture(t) - prior := f.prior(t) - var admitted bool - f.guard.API = &failingUpdate{API: f.api, guard: f.guard, admitted: &admitted} - if _, err := f.guard.Update(context.Background(), f.hg, hg1, prior, with(prior, "no_answer_rings", 7)); failureKind(t, err) != OutcomeUnknown { - t.Fatalf("err = %v", err) - } - if admitted { - t.Fatal("another write was admitted while the failed update was being observed") - } -} - -// stopBeforeSend stands in for a create whose reads take long enough for another -// write to fail before its POST. -type stopBeforeSend struct { - API - guard *Guard -} - -func (s stopBeforeSend) Create(ctx context.Context, t resource.Type, desired resource.Values) (resource.Key, error) { - s.guard.stop("another write failed") - return s.API.Create(ctx, t, desired) -} - -func (s stopBeforeSend) Update(ctx context.Context, t resource.Type, key resource.Key, raw map[string]any, delta resource.Values) error { - s.guard.stop("another write failed") - return s.API.Update(ctx, t, key, raw, delta) -} - -func (s stopBeforeSend) Delete(ctx context.Context, t resource.Type, key resource.Key) error { - s.guard.stop("another write failed") - return s.API.Delete(ctx, t, key) -} - -// The stop is checked by the transport at each attempt, so one that lands after the -// guard's own checks, as during a 429 wait, still keeps the write unsent. -func TestAStopAtSendStopsAnUpdateAndADelete(t *testing.T) { - f := newFixture(t) - prior := f.prior(t) - f.guard.API = stopBeforeSend{f.api, f.guard} - if _, err := f.guard.Update(context.Background(), f.hg, hg1, prior, with(prior, "no_answer_rings", 7)); failureKind(t, err) != Stopped { - t.Fatalf("update err = %v", err) - } - f.guard.stopped = "" - if err := f.guard.Delete(context.Background(), f.hg, hg1, prior); failureKind(t, err) != Stopped { - t.Fatalf("delete err = %v", err) - } - if m := f.fake.Mutations(); len(m) != 0 { - t.Fatalf("sent %v", m) - } -} - -func TestAStopDuringACreatesReadsStopsItsPost(t *testing.T) { - f := newFixture(t) - f.guard.API = stopBeforeSend{f.api, f.guard} - _, _, err := f.guard.Create(context.Background(), f.team, resource.Values{"name": "zz", "site_id": "site1"}) - if failureKind(t, err) != Stopped { - t.Fatalf("err = %v", err) - } - if m := f.fake.Mutations(); len(m) != 0 { - t.Fatalf("sent %v", m) - } -} - -// staleFirstRead answers the first read after a write with the state before it, as -// Webex's read-after-write lag can. -type staleFirstRead struct { - API - wrote, stale bool -} - -func (s *staleFirstRead) Create(ctx context.Context, t resource.Type, desired resource.Values) (resource.Key, error) { - s.wrote = true - return s.API.Create(ctx, t, desired) -} - -func (s *staleFirstRead) Delete(ctx context.Context, t resource.Type, key resource.Key) error { - s.wrote = true - return s.API.Delete(ctx, t, key) -} - -func (s *staleFirstRead) Read(ctx context.Context, t resource.Type, key resource.Key) (webex.Object, error) { - if s.wrote && !s.stale { - s.stale = true - if key.ID == "team2" { - return webex.Object{Values: resource.Values{"name": "t-team2"}}, nil - } - return webex.Object{}, webex.ErrNotFound - } - return s.API.Read(ctx, t, key) -} - -func TestCreateAndDeleteReadBackThroughLag(t *testing.T) { - f := newFixture(t) - f.guard.API = &staleFirstRead{API: f.api} - if _, _, err := f.guard.Create(context.Background(), f.team, resource.Values{"name": "zz", "site_id": "site1", "team_type": "AGENT"}); err != nil { - t.Fatalf("create: %v", err) - } - f.guard.API = &staleFirstRead{API: f.api} - prior, err := f.api.Read(context.Background(), f.team, resource.Key{ID: "team2"}) - if err != nil { - t.Fatal(err) - } - if err := f.guard.Delete(context.Background(), f.team, resource.Key{ID: "team2"}, prior.Values); err != nil { - t.Fatalf("delete: %v", err) - } -} - -// A write that fails before its request, here for want of the location its route -// needs, changed nothing; it is not an unknown outcome. -func TestAWriteThatWasNeverSentIsNotAnUnknownOutcome(t *testing.T) { - f := newFixture(t) - _, _, err := f.guard.Create(context.Background(), f.hg, resource.Values{"name": "zz", "extension": "4100"}) - var failure *Failure - if !errors.As(err, &failure) || failure.Kind != Rejected || !strings.Contains(failure.Summary, "was not sent") { - t.Fatalf("err = %v", err) - } - if m := f.fake.Mutations(); len(m) != 0 { - t.Fatalf("sent %v", m) - } -} - -func TestUpdateWritesOnlyChangedFieldsAndVerifies(t *testing.T) { - f := newFixture(t) - prior := f.prior(t) - got, err := f.guard.Update(context.Background(), f.hg, hg1, prior, with(prior, "no_answer_rings", 7)) - if err != nil { - t.Fatal(err) - } - if got["no_answer_rings"] != 7.0 { - t.Fatalf("got %v", got) - } - if len(f.fake.Mutations()) != 1 { - t.Fatalf("mutations = %v", f.fake.Mutations()) - } -} - -func TestUpdateRefusedWithoutWritePermission(t *testing.T) { - f := newFixture(t) - f.guard.Writable = false - prior := f.prior(t) - _, err := f.guard.Update(context.Background(), f.hg, hg1, prior, with(prior, "name", "x")) - if failureKind(t, err) != Refused { - t.Fatalf("err = %v", err) - } - if len(f.fake.Mutations()) != 0 { - t.Fatal("a write was sent") - } -} - -func TestConcurrentEditOfManagedFieldStopsWithoutWriting(t *testing.T) { - f := newFixture(t) - prior := f.prior(t) - f.fake.External("hg", "hg1", map[string]any{"callPolicies": map[string]any{"noAnswer": map[string]any{"numberOfRings": 11}}}) - - got, err := f.guard.Update(context.Background(), f.hg, hg1, prior, with(prior, "no_answer_rings", 7)) - if failureKind(t, err) != Conflict { - t.Fatalf("err = %v", err) - } - if got["no_answer_rings"] != 11.0 { - t.Fatalf("returned state must be the real value, got %v", got["no_answer_rings"]) - } - if len(f.fake.Mutations()) != 0 { - t.Fatal("the other admin's change was overwritten") - } -} - -func TestChangeToUnmanagedFieldIsNotAConflict(t *testing.T) { - f := newFixture(t) - prior := f.prior(t) - f.fake.External("hg", "hg1", map[string]any{"esn": "999"}) - if _, err := f.guard.Update(context.Background(), f.hg, hg1, prior, with(prior, "name", "x")); err != nil { - t.Fatal(err) - } -} - -func TestIgnoredWriteIsReportedWithTheRealValue(t *testing.T) { - f := newFixture(t) - prior := f.prior(t) - got, err := f.guard.Update(context.Background(), f.hg, hg1, prior, with(prior, "first_name", "")) - if failureKind(t, err) != Divergent { - t.Fatalf("err = %v", err) - } - if got["first_name"] != "zz" { - t.Fatalf("state must keep the real value, got %v", got["first_name"]) - } -} - -func TestLostResponseIsUnknownButObservedIntended(t *testing.T) { - f := newFixture(t) - prior := f.prior(t) - f.fake.AddFault(fakeapi.Fault{Method: "PUT", Path: hgPath, Mode: fakeapi.LoseResponse}) - got, err := f.guard.Update(context.Background(), f.hg, hg1, prior, with(prior, "name", "new")) - if failureKind(t, err) != OutcomeUnknown { - t.Fatalf("err = %v", err) - } - if got["name"] != "new" { - t.Fatalf("state must show the landed value, got %v", got["name"]) - } - if puts := f.fake.Mutations(); len(puts) != 1 { - t.Fatalf("a write must not be retried: %v", puts) - } -} - -func TestServerErrorAfterCommitIsUnknown(t *testing.T) { - f := newFixture(t) - prior := f.prior(t) - f.fake.AddFault(fakeapi.Fault{Method: "PUT", Path: hgPath, Mode: fakeapi.Fail500Commit}) - _, err := f.guard.Update(context.Background(), f.hg, hg1, prior, with(prior, "name", "new")) - if failureKind(t, err) != OutcomeUnknown { - t.Fatalf("err = %v", err) - } -} - -func TestClientErrorIsARejection(t *testing.T) { - f := newFixture(t) - prior := f.prior(t) - f.fake.AddFault(fakeapi.Fault{Method: "PUT", Path: hgPath, Mode: fakeapi.Fail401}) - _, err := f.guard.Update(context.Background(), f.hg, hg1, prior, with(prior, "name", "new")) - if failureKind(t, err) != Rejected { - t.Fatalf("err = %v", err) - } -} - -func TestWritesStopAfterTheFirstFailure(t *testing.T) { - f := newFixture(t) - prior := f.prior(t) - f.fake.AddFault(fakeapi.Fault{Method: "PUT", Path: hgPath, Mode: fakeapi.Fail500NoCommit}) - if _, err := f.guard.Update(context.Background(), f.hg, hg1, prior, with(prior, "name", "a")); err == nil { - t.Fatal("expected a failure") - } - before := len(f.fake.Mutations()) - - if _, err := f.guard.Update(context.Background(), f.hg, hg1, prior, with(prior, "name", "b")); failureKind(t, err) != Stopped { - t.Fatalf("update err = %v", err) - } - if _, _, err := f.guard.Create(context.Background(), f.team, resource.Values{"name": "n"}); failureKind(t, err) != Stopped { - t.Fatalf("create err = %v", err) - } - if err := f.guard.Delete(context.Background(), f.team, resource.Key{ID: "team1"}, resource.Values{}); failureKind(t, err) != Stopped { - t.Fatalf("delete err = %v", err) - } - if len(f.fake.Mutations()) != before { - t.Fatal("a write was sent after the stop") - } -} - -func TestCancelledRunSendsNothing(t *testing.T) { - f := newFixture(t) - prior := f.prior(t) - ctx, cancel := context.WithCancel(context.Background()) - cancel() - _, err := f.guard.Update(ctx, f.hg, hg1, prior, with(prior, "name", "x")) - if failureKind(t, err) != Stopped { - t.Fatalf("err = %v", err) - } - if len(f.fake.Mutations()) != 0 { - t.Fatal("a write was sent") - } -} - -func TestFailedVerificationReadIsUnverified(t *testing.T) { - f := newFixture(t) - prior := f.prior(t) - f.fake.AddFault(fakeapi.Fault{Method: "GET", Path: hgPath, Mode: fakeapi.Fail500NoCommit, After: "PUT", Times: -1}) - _, err := f.guard.Update(context.Background(), f.hg, hg1, prior, with(prior, "name", "x")) - if failureKind(t, err) != Unverified { - t.Fatalf("err = %v", err) - } -} - -func TestCreateRunsSecondStepForIgnoredFields(t *testing.T) { - f := newFixture(t) - desired := resource.Values{"location_id": "loc1", "name": "new", "extension": "1777", "enabled": false} - key, got, err := f.guard.Create(context.Background(), f.hg, desired) - if err != nil { - t.Fatal(err) - } - if got["enabled"] != false || f.fake.HuntGroup(key.ID)["enabled"] != false { - t.Fatalf("got %v", got) - } - if m := f.fake.Mutations(); len(m) != 2 || m[0].Method != "POST" || m[1].Method != "PUT" { - t.Fatalf("mutations = %v", m) - } -} - -func TestFailedSecondStepReturnsTheKeySoStateHoldsTheObject(t *testing.T) { - f := newFixture(t) - f.fake.AddFault(fakeapi.Fault{Method: "PUT", Path: hgPath, Mode: fakeapi.Fail500NoCommit}) - desired := resource.Values{"location_id": "loc1", "name": "new", "extension": "1777", "enabled": false} - key, got, err := f.guard.Create(context.Background(), f.hg, desired) - if err == nil || key.ID == "" { - t.Fatalf("key=%+v err=%v", key, err) - } - if got["enabled"] != true { - t.Fatalf("must report the group as still enabled, got %v", got["enabled"]) - } -} - -func TestLostCreateIsUnknownAndNotRetried(t *testing.T) { - f := newFixture(t) - f.fake.AddFault(fakeapi.Fault{Method: "POST", Path: "/team$", Mode: fakeapi.LoseResponse}) - desired := resource.Values{"name": "lost", "site_id": "site1", "team_type": "AGENT", "team_status": "IN_SERVICE", "active": true, "description": "d"} - key, _, err := f.guard.Create(context.Background(), f.team, desired) - if failureKind(t, err) != OutcomeUnknown || key.ID != "" { - t.Fatalf("key=%+v err=%v", key, err) - } - if len(f.fake.Mutations()) != 1 { - t.Fatalf("mutations = %v", f.fake.Mutations()) - } -} - -func TestDeleteChecksForConflictsAndVerifies(t *testing.T) { - f := newFixture(t) - key := resource.Key{ID: "team1"} - obj, err := f.api.Read(context.Background(), f.team, key) - if err != nil { - t.Fatal(err) - } - f.fake.External("team", "team1", map[string]any{"description": "changed"}) - if err := f.guard.Delete(context.Background(), f.team, key, obj.Values); failureKind(t, err) != Conflict { - t.Fatalf("err = %v", err) - } - if f.fake.Team("team1") == nil { - t.Fatal("team was deleted despite the conflict") - } - - f = newFixture(t) - obj, _ = f.api.Read(context.Background(), f.team, key) - if err := f.guard.Delete(context.Background(), f.team, key, obj.Values); err != nil { - t.Fatal(err) - } - if f.fake.Team("team1") != nil { - t.Fatal("team still exists") - } -} - -func TestDeleteOfAbsentObjectSucceeds(t *testing.T) { - f := newFixture(t) - if err := f.guard.Delete(context.Background(), f.team, resource.Key{ID: "gone"}, resource.Values{}); err != nil { - t.Fatal(err) - } - if len(f.fake.Mutations()) != 0 { - t.Fatal("no request was needed") - } -} - -func TestUpdateOfDeletedObjectIsAConflict(t *testing.T) { - f := newFixture(t) - prior := f.prior(t) - f.fake.Delete("hg", "hg1") - _, err := f.guard.Update(context.Background(), f.hg, hg1, prior, with(prior, "name", "x")) - if failureKind(t, err) != Conflict { - t.Fatalf("err = %v", err) - } -} - -func TestUnknownPlannedValuesAreNotTreatedAsChanges(t *testing.T) { - f := newFixture(t) - prior := f.prior(t) - planned := with(prior, "name", "x") - planned["time_zone"] = nil - if _, err := f.guard.Update(context.Background(), f.hg, hg1, prior, planned); err != nil { - t.Fatal(err) - } - if f.fake.HuntGroup("hg1")["timeZone"] != "America/New_York" { - t.Fatal("an unknown value must not clear the field") - } -} diff --git a/pkg/resource/resource.go b/pkg/resource/resource.go deleted file mode 100644 index b5b44cd..0000000 --- a/pkg/resource/resource.go +++ /dev/null @@ -1,701 +0,0 @@ -// Package resource describes Webex object types as data: their fields, the JSON -// paths those fields live at, and the operations that read and write them. Reading -// and writing (package webex), the write protocol (package guard) and Webex Admin -// Studio all work from these definitions, so adding a type means adding a -// definition, not new code paths. -// -// Definitions hold API facts only. How a program presents a type, such as its -// sidebar folder or form sections, belongs to that program. -package resource - -import ( - "encoding/json" - "fmt" - "net/url" - "regexp" - "sort" - "strings" - - "github.com/Cloverhound/webex-cli/pkg/webexops" -) - -// Values holds an object's modelled fields by field name. -type Values = map[string]any - -// Kind is a field's Terraform type. -type Kind int - -const ( - String Kind = iota - Bool - Int - StringList - - // ObjectList is a list of rows, each holding the fields in Item. - ObjectList -) - -// Field maps one Terraform attribute to one JSON location in the Webex object. -type Field struct { - Name string - - // Path is a dotted JSON path. Empty means the value is the object's parent ID, - // which Webex carries in the URL, not the body. A "[]" step, as in - // "agentGroups[].teamId", maps a StringList onto one key of each array element. - Path string - - Kind Kind - - // Immutable fields can be set at create but never changed, because changing - // them would mean deleting and recreating the object. - Immutable bool - - // Ref names the Type this field's ID points at. - Ref string - - // Options lists the values a field accepts, when they are fixed. - Options []string - - // OptionSource names where the accepted values come from when they are not fixed, - // such as the time zones Webex knows. - OptionSource string - - // OptionScope names the field whose value the OptionSource's choices depend on, as a - // flow's versions depend on the flow. Without it, choices depend on the parent. - OptionScope string - - // Format is the layout of a String holding a date or time. Webex stores these as - // text, not timestamps. - Format string - - // Pattern is a regular expression that a String's whole text must match, where - // Webex limits the characters it accepts. PatternHint states the rule for people. - Pattern string - PatternHint string - - // Required fields must be set to create an object, because Webex has no default - // for them. - Required bool - - // Needs names a field Webex requires whenever this one is set, as an entry point's - // flow needs music on hold. - Needs string - - // Unique fields identify one object, such as an extension, so they are never set - // on several objects at once. - Unique bool - - // Unordered lists are compared as sets, because Webex does not keep their order. - Unordered bool - - // Item holds an ObjectList row's fields, with paths relative to the element. - Item []Field - - // MatchKey names the Item field that identifies a row across writes. A row whose - // key matches an element Webex holds is written over that element, keeping its ID: - // Webex rejects a list update that re-adds an existing element without it. - MatchKey string -} - -// Sources of accepted values that are not fixed. -const ( - TimeZones = "timezones" - Languages = "languages" - Schedules = "schedules" - FlowTags = "flow_tags" -) - -// Formats of date and time text, as Webex writes them. -const ( - Date = "date" // 2026-12-25 - Time = "time" // 08:00 - DateTime = "datetime" // 2026-12-25T08:00 -) - -// Area selects the Webex API host a Type lives on. -type Area int - -const ( - Calling Area = iota - ContactCenter -) - -// WriteMode says how a PUT behaves on a Type's route. -type WriteMode int - -const ( - // WriteDelta sends only changed fields, for routes that merge the body. - WriteDelta WriteMode = iota - - // WriteFull sends the whole object from a fresh read, for routes that replace - // it, so fields the model does not cover are kept. - WriteFull - - // WritePatch sends only changed fields with PATCH, for routes whose PUT needs a - // file upload or a different body. - WritePatch -) - -// Route is the operation a type uses for one action. Parent and ID name the -// operation's path parameters that take the object's parent and ID. The client fills -// a Contact Center operation's org parameter and adds the org to Webex routes. -type Route struct { - Op *webexops.Operation - Parent string - ID string - - // Query is sent on every request through this route. - Query map[string]string -} - -// Defined reports whether the type has this route. -func (r Route) Defined() bool { return r.Op != nil } - -// ccOrgPrefix starts every Contact Center path that names the org first. -const ccOrgPrefix = "/organization/{orgid}" - -// Template is the route's path with {parent} and {id} placeholders, relative to its -// API's base URL, the form change set files and the fake API use. Fixed parameters -// are filled in. A Contact Center path is relative to /organization/{org}; one that -// places the org elsewhere, as flows do, is relative to the host and keeps {org}. -func (r Route) Template() string { - if r.Op == nil { - return "" - } - path := r.Op.Path - for _, p := range r.Op.Params { - if p.In != webexops.InPath { - continue - } - switch { - case p.Value != "": - path = strings.ReplaceAll(path, "{"+p.Name+"}", p.Value) - case p.Name == r.Parent: - path = strings.ReplaceAll(path, "{"+p.Name+"}", "{parent}") - case p.Name == r.ID: - path = strings.ReplaceAll(path, "{"+p.Name+"}", "{id}") - } - } - if r.Op.Host == webexops.HostCC { - if rest, ok := strings.CutPrefix(path, ccOrgPrefix); ok { - return rest - } - path = strings.ReplaceAll(path, "{orgid}", "{org}") - } - return path -} - -// Path fills the route's path parameters. A Contact Center org parameter takes -// orgUUID. It fails on a parameter it has no value for. -func (r Route) Path(key Key, orgUUID string) (string, error) { - path := r.Op.Path - for _, p := range r.Op.Params { - if p.In != webexops.InPath { - continue - } - var v string - switch { - case p.Value != "": - v = p.Value - case p.Name == r.Parent: - v = key.Parent - case p.Name == r.ID: - v = key.ID - case p.Name == "orgid": - v = orgUUID - } - if v == "" { - return "", fmt.Errorf("%s: no value for path parameter %s", r.Op.ID, p.Name) - } - path = strings.ReplaceAll(path, "{"+p.Name+"}", url.PathEscape(v)) - } - return path, nil -} - -// Routes are the operations a type is read and written through. -type Routes struct { - List Route - Create Route - Read Route - Update Route - Delete Route - - // ArrayKey names the array in a Calling list response. - ArrayKey string - - // ParentKey names the parent ID in a list item when items are grouped under a - // parent. - ParentKey string - - // ListIsPartial means list items lack fields, so each needs an item read. - ListIsPartial bool - - // Updated names a list item field holding the object's last change time, in - // milliseconds. Webex moves it for changes to fields the list leaves out too, so an - // unchanged value lets a sync keep its earlier item read. - Updated string - - // IDKey names the ID field in a list item, when it is not "id". - IDKey string - - // FallbackIDKey is used for items without IDKey, as for extension-only numbers. - FallbackIDKey string - - // PerLocation means List holds {parent} and is read once for each calling location. - PerLocation bool - - // Singleton means List returns one settings object, not a list. With PerLocation - // there is one per location, keyed by the location. - Singleton bool - - // ReadByFilter reads one object through List with an id filter, for types whose - // item route accepts writes but refuses reads. - ReadByFilter bool -} - -// Type defines one Webex object type. -type Type struct { - Name string - Title string - Plural string - Area Area - - // Managed types can be written: their writes are proven on a live tenant. Other - // types are read-only, read for display and to label references. - Managed bool - - // NoCreate types cannot be created here, because Webex needs something the model - // does not cover, such as an uploaded file. - NoCreate bool - - // NoDelete types cannot be deleted here. - NoDelete bool - - ParentField string - LabelField string - - // FallbackLabelField labels objects whose LabelField is empty, as a dial number - // with only an extension. - FallbackLabelField string - - Fields []Field - Routes Routes - Write WriteMode - - // CreateDefaults are merged under the create body, for fields Webex requires - // that the model does not cover. - CreateDefaults map[string]any - - // CopyOnCreate fills a create body from an existing object of the same type, for - // content Webex requires that has no sensible fixed default, such as a layout file. - CopyOnCreate *Copy -} - -// Copy names the object a create copies from and what it copies. -type Copy struct { - // Match picks the first object whose raw fields hold these values. - Match map[string]any - - // Keys are copied when the create body does not set them. - Keys []string -} - -// Key identifies a Webex object. -type Key struct { - Parent string `json:"parent,omitempty"` - ID string `json:"id"` -} - -// FieldNames lists the Type's field names in definition order. -func (t Type) FieldNames() []string { - names := make([]string, len(t.Fields)) - for i, f := range t.Fields { - names[i] = f.Name - } - return names -} - -// Field looks up a field by name. -func (t Type) Field(name string) (Field, bool) { - for _, f := range t.Fields { - if f.Name == name { - return f, true - } - } - return Field{}, false -} - -// Check reports a value Webex would refuse because of the field's Pattern, and a -// list given as anything but []any, which bodies would write as an empty list. Empty -// text passes: whether a field may be empty is Required's rule. -func (f Field) Check(v any) error { - if f.Kind == StringList || f.Kind == ObjectList { - list, ok := v.([]any) - if v != nil && !ok { - return fmt.Errorf("want a list as []any, not %T", v) - } - if f.Kind != ObjectList { - return nil - } - for i, e := range list { - row, ok := e.(map[string]any) - if !ok { - return fmt.Errorf("row %d: want map[string]any, not %T", i+1, e) - } - for _, sub := range f.Item { - if err := sub.Check(row[sub.Name]); err != nil { - return fmt.Errorf("row %d %s: %w", i+1, sub.Name, err) - } - } - } - return nil - } - s, ok := v.(string) - if f.Pattern == "" || !ok || s == "" { - return nil - } - re, err := regexp.Compile(`^(?:` + f.Pattern + `)$`) - if err != nil { - return fmt.Errorf("pattern %q: %w", f.Pattern, err) - } - if re.MatchString(s) { - return nil - } - if f.PatternHint != "" { - return fmt.Errorf("%q: %s", s, f.PatternHint) - } - return fmt.Errorf("%q does not match %s", s, f.Pattern) -} - -// Invalid is a value refused before any request, so nothing was written. -type Invalid struct { - Type, Field, Reason string -} - -func (e *Invalid) Error() string { return fmt.Sprintf("%s %s: %s", e.Type, e.Field, e.Reason) } - -// Check reports the first value Webex would refuse, so a write can be stopped before -// it is sent. -func (t Type) Check(values Values) error { - for _, f := range t.Fields { - v, set := values[f.Name] - if !set { - continue - } - if err := f.Check(v); err != nil { - return &Invalid{t.Title, f.Name, err.Error()} - } - } - return nil -} - -// CheckUpdate is Check for the fields an update changes, which also must not be -// Immutable. -func (t Type) CheckUpdate(delta Values) error { - for _, f := range t.Fields { - if _, set := delta[f.Name]; set && f.Immutable { - return &Invalid{t.Title, f.Name, "cannot be changed after the object is created"} - } - } - return t.Check(delta) -} - -// Project extracts the modelled fields from a raw Webex object. -func (t Type) Project(parent string, raw map[string]any) Values { - out := Values{} - for _, f := range t.Fields { - if f.Path == "" { - out[f.Name] = parent - continue - } - out[f.Name] = f.project(raw) - } - return out -} - -func (f Field) project(raw map[string]any) any { - v := lookup(raw, f.Path) - if f.Kind != ObjectList { - return f.Normalize(v) - } - elements, ok := v.([]any) - if !ok { - return nil - } - rows := make([]any, 0, len(elements)) - for _, e := range elements { - element, _ := e.(map[string]any) - row := map[string]any{} - for _, sub := range f.Item { - row[sub.Name] = lookup(element, sub.Path) - } - rows = append(rows, row) - } - return f.Normalize(rows) -} - -// Normalize puts a value in a canonical order: unordered lists are sorted, at any depth, -// so two values that Webex treats as equal compare equal. -func (f Field) Normalize(v any) any { - list, ok := v.([]any) - if !ok { - return v - } - out := make([]any, len(list)) - for i, e := range list { - row, isRow := e.(map[string]any) - if f.Kind != ObjectList || !isRow { - out[i] = e - continue - } - normal := make(map[string]any, len(row)) - for k, x := range row { - normal[k] = x - } - for _, sub := range f.Item { - if x, ok := normal[sub.Name]; ok { - normal[sub.Name] = sub.Normalize(x) - } - } - out[i] = normal - } - if f.Unordered { - sortKey := func(v any) string { - if row, ok := v.(map[string]any); ok && f.MatchKey != "" { - return canonical(row[f.MatchKey]) + "\x00" + canonical(v) - } - return canonical(v) - } - sort.SliceStable(out, func(i, j int) bool { return sortKey(out[i]) < sortKey(out[j]) }) - } - return out -} - -// Label is the display name of an object. -func (t Type) Label(values Values) string { - if s, ok := values[t.LabelField].(string); ok { - return s - } - return "" -} - -// PatchBody builds a nested body from changed fields. Fields with no path are -// skipped, since they travel in the URL. -func (t Type) PatchBody(delta Values) map[string]any { - body := map[string]any{} - t.apply(body, delta) - return body -} - -// FullBody overlays changed fields on a fresh read of the object. -func (t Type) FullBody(raw map[string]any, delta Values) map[string]any { - body := clone(raw) - delete(body, "_links") - delete(body, "links") - t.apply(body, delta) - return body -} - -// CreateBody builds a create request from desired values over CreateDefaults. Unknown -// values are left out so Webex applies its own defaults. -func (t Type) CreateBody(desired Values) map[string]any { - body := clone(t.CreateDefaults) - if body == nil { - body = map[string]any{} - } - known := Values{} - for k, v := range desired { - if v != nil { - known[k] = v - } - } - t.apply(body, known) - return body -} - -func (t Type) apply(body map[string]any, values Values) { - for _, f := range t.Fields { - v, ok := values[f.Name] - if !ok || f.Path == "" { - continue - } - if f.Kind == ObjectList { - v = f.elements(lookup(body, f.Path), v) - } - set(body, f.Path, v) - } -} - -// elements builds an ObjectList's Webex array from rows. A row whose MatchKey matches -// an element in have is written over a copy of that element. -func (f Field) elements(have, rows any) any { - list, ok := rows.([]any) - if !ok { - return rows - } - existing, _ := have.([]any) - key, hasKey := f.item(f.MatchKey) - out := make([]any, 0, len(list)) - for _, r := range list { - row, _ := r.(map[string]any) - element := map[string]any{} - if hasKey && row[key.Name] != nil { - for _, e := range existing { - candidate, ok := e.(map[string]any) - if ok && canonical(lookup(candidate, key.Path)) == canonical(row[key.Name]) { - element = clone(candidate) - break - } - } - } - for _, sub := range f.Item { - if x := row[sub.Name]; x != nil { - set(element, sub.Path, x) - } - } - out = append(out, element) - } - return out -} - -func (f Field) item(name string) (Field, bool) { - for _, sub := range f.Item { - if name != "" && sub.Name == name { - return sub, true - } - } - return Field{}, false -} - -// Changed lists fields whose values differ, comparing canonical JSON so a Terraform -// int64 equals a decoded JSON float64. A nil list and an empty list are equal, because -// Webex omits empty lists on read. -func Changed(a, b Values, fields []string) []string { - var out []string - for _, f := range fields { - if canonical(a[f]) != canonical(b[f]) { - out = append(out, f) - } - } - sort.Strings(out) - return out -} - -// Unmet lists fields whose planned value is known and not yet what have holds. A nil -// planned value, also inside a row, means Terraform left it for Webex to fill. -func (t Type) Unmet(have, planned Values) []string { - var out []string - for _, f := range t.Fields { - p := planned[f.Name] - if p == nil { - continue - } - // have comes from Project, which normalizes; a caller's plan may not be. - p = f.Normalize(p) - if f.Kind == ObjectList { - if !rowsMeet(have[f.Name], p) { - out = append(out, f.Name) - } - continue - } - if canonical(have[f.Name]) != canonical(p) { - out = append(out, f.Name) - } - } - sort.Strings(out) - return out -} - -// rowsMeet compares normalized rows by position, ignoring planned nils. -func rowsMeet(have, planned any) bool { - h, _ := have.([]any) - p, _ := planned.([]any) - if len(h) != len(p) { - return false - } - for i := range p { - want, _ := p[i].(map[string]any) - got, _ := h[i].(map[string]any) - for k, v := range want { - if v != nil && canonical(v) != canonical(got[k]) { - return false - } - } - } - return true -} - -func canonical(v any) string { - if l, ok := v.([]any); ok && len(l) == 0 { - return "null" - } - b, err := json.Marshal(v) - if err != nil { - return fmt.Sprintf("%v", v) - } - return string(b) -} - -func lookup(m map[string]any, path string) any { - if head, rest, ok := strings.Cut(path, "[]."); ok { - elements, ok := lookup(m, head).([]any) - if !ok { - return nil - } - out := make([]any, 0, len(elements)) - for _, e := range elements { - element, _ := e.(map[string]any) - out = append(out, lookup(element, rest)) - } - return out - } - var cur any = m - for _, part := range strings.Split(path, ".") { - obj, ok := cur.(map[string]any) - if !ok { - return nil - } - cur = obj[part] - } - return cur -} - -func set(m map[string]any, path string, v any) { - if head, rest, ok := strings.Cut(path, "[]."); ok { - values, _ := v.([]any) - elements := make([]any, len(values)) - for i, x := range values { - element := map[string]any{} - set(element, rest, x) - elements[i] = element - } - set(m, head, elements) - return - } - parts := strings.Split(path, ".") - cur := m - for _, part := range parts[:len(parts)-1] { - next, ok := cur[part].(map[string]any) - if !ok { - next = map[string]any{} - cur[part] = next - } - cur = next - } - cur[parts[len(parts)-1]] = v -} - -func clone(m map[string]any) map[string]any { - if m == nil { - return nil - } - b, err := json.Marshal(m) - if err != nil { - return nil - } - var out map[string]any - if json.Unmarshal(b, &out) != nil { - return nil - } - return out -} diff --git a/pkg/resource/resource_test.go b/pkg/resource/resource_test.go deleted file mode 100644 index f80737e..0000000 --- a/pkg/resource/resource_test.go +++ /dev/null @@ -1,240 +0,0 @@ -package resource - -import ( - "encoding/json" - "reflect" - "testing" -) - -var sample = Type{ - Name: "thing", - ParentField: "location_id", - LabelField: "name", - Fields: []Field{ - {Name: "location_id", Immutable: true, Ref: "location"}, - {Name: "name", Path: "name"}, - {Name: "rings", Path: "policy.noAnswer.rings", Kind: Int}, - {Name: "enabled", Path: "enabled", Kind: Bool}, - {Name: "tags", Path: "tags", Kind: StringList}, - }, - CreateDefaults: map[string]any{"policy": map[string]any{"mode": "CIRCULAR"}, "agents": []any{}}, -} - -func TestCheckHoldsTextToTheWholePattern(t *testing.T) { - typ := Type{Title: "Variable", Fields: []Field{ - {Name: "name", Path: "name", Pattern: `[a-z_]+`, PatternHint: "Only a-z and _ are allowed"}, - {Name: "label", Path: "label"}, - }} - if err := typ.Check(Values{"name": "ok_name", "label": "any thing!"}); err != nil { - t.Fatal(err) - } - if err := typ.Check(Values{"name": ""}); err != nil { - t.Fatalf("empty text is Required's rule: %v", err) - } - err := typ.Check(Values{"name": "bad-name"}) - if err == nil || err.Error() != `Variable name: "bad-name": Only a-z and _ are allowed` { - t.Fatalf("err = %v", err) - } - if typ.Check(Values{"name": "ok_name-"}) == nil { - t.Fatal("the pattern must match the whole text") - } -} - -// A body writes only []any lists; any other slice would become an empty list. -func TestCheckRefusesAListThatIsNotAnySlice(t *testing.T) { - if err := sample.Check(Values{"tags": []string{"a"}}); err == nil { - t.Error("a []string list was accepted") - } - if err := sample.Check(Values{"tags": []any{"a"}}); err != nil { - t.Error(err) - } - if err := sample.Check(Values{"tags": nil}); err != nil { - t.Errorf("clearing a list: %v", err) - } - // Inside rows too: a []string list in a row would also be written as empty. - if err := withRows.Check(Values{"groups": []any{map[string]any{"order": 1, "team_ids": []string{"t1"}}}}); err == nil { - t.Error("a []string list inside a row was accepted") - } - if err := withRows.Check(Values{"groups": []any{map[string]any{"order": 1, "team_ids": []any{"t1"}}}}); err != nil { - t.Error(err) - } -} - -func TestProjectReadsNestedPathsAndParent(t *testing.T) { - raw := map[string]any{"name": "a", "enabled": true, "policy": map[string]any{"noAnswer": map[string]any{"rings": 5.0}}, "tags": []any{"x"}, "hidden": "kept"} - got := sample.Project("loc1", raw) - want := Values{"location_id": "loc1", "name": "a", "rings": 5.0, "enabled": true, "tags": []any{"x"}} - if !reflect.DeepEqual(got, want) { - t.Fatalf("got %v", got) - } -} - -func TestProjectGivesNilForMissingPath(t *testing.T) { - got := sample.Project("", map[string]any{"policy": "not an object"}) - if got["rings"] != nil { - t.Fatalf("rings = %v", got["rings"]) - } -} - -func TestPatchBodyIsNestedAndSkipsParent(t *testing.T) { - got := sample.PatchBody(Values{"rings": 7, "location_id": "loc2"}) - want := map[string]any{"policy": map[string]any{"noAnswer": map[string]any{"rings": 7}}} - if !reflect.DeepEqual(got, want) { - t.Fatalf("got %v", got) - } -} - -func TestFullBodyKeepsUnmodelledFieldsAndDropsLinks(t *testing.T) { - raw := map[string]any{"name": "a", "userIds": []any{"u1"}, "_links": "x", "links": "y"} - got := sample.FullBody(raw, Values{"name": "b"}) - want := map[string]any{"name": "b", "userIds": []any{"u1"}} - if !reflect.DeepEqual(got, want) { - t.Fatalf("got %v", got) - } - if raw["name"] != "a" { - t.Fatal("the fresh read must not be modified") - } -} - -func TestCreateBodyLayersOverDefaultsAndOmitsUnknown(t *testing.T) { - got := sample.CreateBody(Values{"name": "a", "rings": 3, "enabled": nil}) - want := map[string]any{"name": "a", "agents": []any{}, "policy": map[string]any{"mode": "CIRCULAR", "noAnswer": map[string]any{"rings": 3}}} - if !reflect.DeepEqual(got, want) { - t.Fatalf("got %v", got) - } - if _, ok := sample.CreateDefaults["name"]; ok { - t.Fatal("defaults must not be modified") - } -} - -func TestChangedTreatsNumberTypesAndEmptyListsAsEqual(t *testing.T) { - fields := []string{"rings", "tags", "name"} - a := Values{"rings": int64(5), "tags": []any{}, "name": "a"} - b := Values{"rings": 5.0, "tags": nil, "name": "b"} - if got := Changed(a, b, fields); !reflect.DeepEqual(got, []string{"name"}) { - t.Fatalf("got %v", got) - } -} - -func TestChangedKeepsListOrder(t *testing.T) { - a := Values{"tags": []any{"x", "y"}} - b := Values{"tags": []any{"y", "x"}} - if got := Changed(a, b, []string{"tags"}); len(got) != 1 { - t.Fatalf("got %v", got) - } -} - -var withRows = Type{ - Name: "profile", - Fields: []Field{ - {Name: "name", Path: "name"}, - {Name: "skills", Path: "activeSkills", Kind: ObjectList, MatchKey: "skill_id", Item: []Field{ - {Name: "skill_id", Path: "skillId", Ref: "skill"}, - {Name: "level", Path: "proficiencyValue", Kind: Int}, - }}, - {Name: "hours", Path: "workingHours", Kind: ObjectList, Unordered: true, MatchKey: "name", Item: []Field{ - {Name: "name", Path: "name"}, - {Name: "days", Path: "days", Kind: StringList, Unordered: true}, - }}, - {Name: "groups", Path: "groups", Kind: ObjectList, Item: []Field{ - {Name: "order", Path: "order", Kind: Int}, - {Name: "team_ids", Path: "agentGroups[].teamId", Kind: StringList}, - }}, - {Name: "codes", Path: "codes", Kind: StringList, Unordered: true}, - }, -} - -func TestProjectReadsRowsAndSortsUnorderedValues(t *testing.T) { - raw := map[string]any{ - "activeSkills": []any{map[string]any{"id": "e1", "skillId": "s1", "proficiencyValue": 5.0, "skillName": "x"}}, - "workingHours": []any{ - map[string]any{"name": "b", "days": []any{"TUE", "MON"}}, - map[string]any{"name": "a", "days": []any{"WED"}}, - }, - "groups": []any{map[string]any{"order": 1.0, "agentGroups": []any{map[string]any{"teamId": "t1"}, map[string]any{"teamId": "t2"}}}}, - "codes": []any{"z", "a"}, - } - got := withRows.Project("", raw) - want := Values{ - "name": nil, - "skills": []any{map[string]any{"skill_id": "s1", "level": 5.0}}, - "hours": []any{ - map[string]any{"name": "a", "days": []any{"WED"}}, - map[string]any{"name": "b", "days": []any{"MON", "TUE"}}, - }, - "groups": []any{map[string]any{"order": 1.0, "team_ids": []any{"t1", "t2"}}}, - "codes": []any{"a", "z"}, - } - if !reflect.DeepEqual(got, want) { - t.Fatalf("got %v\nwant %v", got, want) - } -} - -func TestFullBodyKeepsUnmodelledPartsOfMatchingRows(t *testing.T) { - raw := map[string]any{"activeSkills": []any{ - map[string]any{"id": "e1", "skillId": "s1", "proficiencyValue": 5.0}, - map[string]any{"id": "e2", "skillId": "s2", "proficiencyValue": 3.0}, - }} - got := withRows.FullBody(raw, Values{"skills": []any{ - map[string]any{"skill_id": "s2", "level": int64(9)}, - map[string]any{"skill_id": "s3", "level": int64(1)}, - }}) - want := []any{ - map[string]any{"id": "e2", "skillId": "s2", "proficiencyValue": int64(9)}, - map[string]any{"skillId": "s3", "proficiencyValue": int64(1)}, - } - if !reflect.DeepEqual(got["activeSkills"], want) { - t.Fatalf("got %v", got["activeSkills"]) - } -} - -func TestBodyBuildsListsUnderArrayPaths(t *testing.T) { - got := withRows.CreateBody(Values{"groups": []any{map[string]any{"order": int64(1), "team_ids": []any{"t1", "t2"}}}}) - want := map[string]any{"groups": []any{map[string]any{"order": int64(1), "agentGroups": []any{ - map[string]any{"teamId": "t1"}, map[string]any{"teamId": "t2"}, - }}}} - if !reflect.DeepEqual(got, want) { - t.Fatalf("got %v", got) - } -} - -func TestNormalizeMakesUnorderedValuesComparable(t *testing.T) { - f, _ := withRows.Field("hours") - a := f.Normalize([]any{map[string]any{"name": "b", "days": []any{"TUE", "MON"}}, map[string]any{"name": "a", "days": nil}}) - b := f.Normalize([]any{map[string]any{"name": "a", "days": nil}, map[string]any{"name": "b", "days": []any{"MON", "TUE"}}}) - if got := Changed(Values{"hours": a}, Values{"hours": b}, []string{"hours"}); len(got) != 0 { - t.Fatalf("got %v", got) - } -} - -func TestUnmetLeavesUnknownValuesToWebex(t *testing.T) { - have := Values{"name": "a", "skills": []any{map[string]any{"skill_id": "s1", "level": 5.0}}} - planned := Values{"name": nil, "skills": []any{map[string]any{"skill_id": "s1", "level": nil}}} - if got := withRows.Unmet(have, planned); len(got) != 0 { - t.Fatalf("got %v", got) - } - planned["skills"] = []any{map[string]any{"skill_id": "s1", "level": int64(6)}} - planned["name"] = "b" - if got := withRows.Unmet(have, planned); !reflect.DeepEqual(got, []string{"name", "skills"}) { - t.Fatalf("got %v", got) - } - planned["skills"] = []any{} - if got := withRows.Unmet(have, planned); !reflect.DeepEqual(got, []string{"name", "skills"}) { - t.Fatalf("an emptied list must count: got %v", got) - } -} - -// A plan may list an unordered field in any order; what Webex holds is sorted. -func TestUnmetComparesUnorderedListsAsSets(t *testing.T) { - have := withRows.Project("", map[string]any{"name": "a", "codes": []any{"x", "y"}}) - planned := Values{"codes": []any{"y", "x"}} - if got := withRows.Unmet(have, planned); len(got) != 0 { - t.Fatalf("got %v", got) - } -} - -func TestProjectedValuesAreJSONSafe(t *testing.T) { - if _, err := json.Marshal(sample.Project("", map[string]any{})); err != nil { - t.Fatal(err) - } -} diff --git a/pkg/webex/webex.go b/pkg/webex/webex.go deleted file mode 100644 index f372312..0000000 --- a/pkg/webex/webex.go +++ /dev/null @@ -1,602 +0,0 @@ -// Package webex reads and writes Webex objects from their resource definitions. It -// knows routes and body shapes and decides nothing about whether a write is safe; -// that is the guard package's job. -package webex - -import ( - "context" - "encoding/json" - "errors" - "fmt" - "net/http" - "net/url" - "sync" - "time" - - "github.com/Cloverhound/webex-cli/pkg/resource" - "github.com/Cloverhound/webex-cli/pkg/webexapi" - "github.com/Cloverhound/webex-cli/pkg/webexops" -) - -// ErrNotFound means the object does not exist. -var ErrNotFound = errors.New("not found") - -// maxParallelReads matches OpenTofu's default parallelism, which sends the same reads -// during a refresh. -const maxParallelReads = 10 - -// Outcome classifies a failed write. -type Outcome int - -const ( - // Rejected means Webex refused the write and nothing changed. - Rejected Outcome = iota - - // Unknown means the write may or may not have committed. - Unknown -) - -// Classify says what a write error means. Only a 4xx, or a value refused before it was -// sent, is a definite refusal: a 5xx or a broken connection can follow a committed -// write. -func Classify(err error) Outcome { - var apiErr *webexapi.APIError - if errors.As(err, &apiErr) && apiErr.Status >= 400 && apiErr.Status < 500 { - return Rejected - } - var invalid *resource.Invalid - var unsent *NotSent - if errors.As(err, &invalid) || errors.As(err, &unsent) { - return Rejected - } - return Unknown -} - -// Object is one Webex object. -type Object struct { - Type string `json:"type"` - Key resource.Key `json:"key"` - Label string `json:"label"` - Values resource.Values `json:"values"` - - // Raw is the object as Webex returned it, including fields outside the model. - Raw map[string]any `json:"raw"` -} - -// Client is the Webex object API for one org. -type Client struct { - API *webexapi.Client - Hosts webexapi.Hosts - - // OrgUUID addresses Contact Center routes. - OrgUUID string - - // OrgID, when set, targets Webex routes at a specific org, as partner admins - // need. - OrgID string - - locationsOnce sync.Mutex - locations []string - locationNames map[string]string -} - -// callingLocations lists locations with Calling service; /locations also holds -// locations without it, whose Calling routes fail. -var callingLocations = resource.Route{Op: webexops.CallingLocationCallListWebexCalling} - -// url builds a route's URL for one object, with query added to the route's own. -func (c *Client) url(r resource.Route, key resource.Key, query map[string]string) (string, error) { - path, err := r.Path(key, c.OrgUUID) - if err != nil { - return "", err - } - q := url.Values{} - for k, v := range r.Query { - q.Set(k, v) - } - for k, v := range query { - q.Set(k, v) - } - if r.Op.Host == webexops.HostWebex && c.OrgID != "" { - q.Set("orgId", c.OrgID) - } - u := r.Op.Host.URL(c.Hosts) + path - if encoded := q.Encode(); encoded != "" { - u += "?" + encoded - } - return u, nil -} - -func (c *Client) object(t resource.Type, key resource.Key, raw map[string]any) Object { - values := t.Project(key.Parent, raw) - label := t.Label(values) - if label == "" && t.FallbackLabelField != "" { - label, _ = values[t.FallbackLabelField].(string) - } - if label == "" && t.Routes.IDKey != "" { - label = key.ID - } - if label == "" { - label = t.Title - } - return Object{Type: t.Name, Key: key, Label: label, Values: values, Raw: raw} -} - -// Known holds objects from an earlier read, so a list can keep one in place of an item -// read when its list entry shows the same change time. -type Known struct { - // Objects are keyed by type name and ID, as "type/id". - Objects map[string]Object - - // Before is when the earlier read began, less a margin. Change times are whole - // seconds, and a second edit within the same second as a read leaves the time - // unchanged, so objects changed this recently are read again. The margin also - // covers the difference between this clock and Webex's. - Before time.Time -} - -// unchanged returns the earlier read of an object whose list entry shows no change since. -func (k *Known) unchanged(t resource.Type, key resource.Key, listed map[string]any) (map[string]any, bool) { - if k == nil || t.Routes.Updated == "" { - return nil, false - } - stamp, ok := listed[t.Routes.Updated].(float64) - if !ok || stamp >= float64(k.Before.UnixMilli()) { - return nil, false - } - earlier, ok := k.Objects[t.Name+"/"+key.ID] - if !ok || earlier.Key != key { - return nil, false - } - if was, ok := earlier.Raw[t.Routes.Updated].(float64); !ok || was != stamp { - return nil, false - } - return earlier.Raw, true -} - -// List reads every object of a type. Any failure fails the whole list, because a -// partial list would look like deleted objects. -func (c *Client) List(ctx context.Context, t resource.Type) ([]Object, error) { - return c.ListKnown(ctx, t, nil) -} - -// ListKnown is List, keeping known objects that have not changed instead of reading -// them again. -func (c *Client) ListKnown(ctx context.Context, t resource.Type, known *Known) ([]Object, error) { - if !t.Routes.PerLocation { - return c.listUnder(ctx, t, "", known) - } - locations, err := c.locationIDs(ctx) - if err != nil { - return nil, err - } - var out []Object - for _, location := range locations { - found, err := c.listUnder(ctx, t, location, known) - if IsUnavailable(err) { - continue - } - if err != nil { - return nil, err - } - out = append(out, found...) - } - return out, nil -} - -func (c *Client) listUnder(ctx context.Context, t resource.Type, location string, known *Known) ([]Object, error) { - listURL, err := c.url(t.Routes.List, resource.Key{Parent: location}, nil) - if err != nil { - return nil, err - } - if t.Routes.Singleton { - return c.readSingleton(ctx, t, listURL, location) - } - var items []map[string]any - visit := func(page []json.RawMessage) error { - for _, item := range page { - var raw map[string]any - if err := json.Unmarshal(item, &raw); err != nil { - return fmt.Errorf("decoding %s: %w", t.Name, err) - } - if location != "" && t.Routes.ParentKey == "" { - raw[perLocationKey] = location - } - items = append(items, raw) - } - return nil - } - if err := c.listPages(ctx, t, listURL, visit); err != nil { - return nil, fmt.Errorf("listing %s: %w", t.Plural, err) - } - return c.resolve(ctx, t, items, known) -} - -// listPages reads a type's list to its end. Outside Contact Center it pages with -// start and max, unless the operation table records other parameters, Link headers -// only, or none at all. -func (c *Client) listPages(ctx context.Context, t resource.Type, listURL string, visit func([]json.RawMessage) error) error { - if t.Area == resource.ContactCenter { - return c.API.ListCC(ctx, listURL, visit) - } - p := webexapi.Paging{Start: "start", Size: "max", ArrayKey: t.Routes.ArrayKey} - if pg := t.Routes.List.Op.Paging; pg != nil && pg.Offset != nil { - p.Start, p.Size, p.First = pg.Offset.Start, pg.Offset.Size, pg.Offset.First - } - return c.API.List(ctx, listURL, p, visit) -} - -// perLocationKey carries the location a per-location list was read from, for lists -// whose items do not name it. It is removed before the raw object is kept. -const perLocationKey = "__studioLocation" - -// readSingleton reads a settings object. An org-level one is keyed by its type name, -// which is stable, and a per-location one by its location. -func (c *Client) readSingleton(ctx context.Context, t resource.Type, target, location string) ([]Object, error) { - resp, err := c.API.Send(ctx, webexapi.Request{Method: http.MethodGet, URL: target}) - if err != nil { - return nil, fmt.Errorf("reading %s: %w", t.Plural, err) - } - var raw map[string]any - if err := json.Unmarshal(resp.Body, &raw); err != nil { - return nil, fmt.Errorf("decoding %s: %w", t.Name, err) - } - key := resource.Key{ID: t.Name} - if location != "" { - key = resource.Key{Parent: location, ID: t.Name + "-" + location} - } - obj := c.object(t, key, raw) - obj.Label = t.Title - if location != "" { - obj.Label = c.locationNames[location] - } - return []Object{obj}, nil -} - -// locationIDs lists calling locations once per client, because every per-location type -// needs them. The calling route is used because /locations also holds locations with -// no calling service, whose calling routes fail. -func (c *Client) locationIDs(ctx context.Context) ([]string, error) { - c.locationsOnce.Lock() - defer c.locationsOnce.Unlock() - if c.locations != nil { - return c.locations, nil - } - ids := []string{} - names := map[string]string{} - listURL, err := c.url(callingLocations, resource.Key{}, nil) - if err != nil { - return nil, err - } - err = c.API.ListOffset(ctx, listURL, "locations", func(page []json.RawMessage) error { - for _, item := range page { - var head struct { - ID string `json:"id"` - Name string `json:"name"` - } - if err := json.Unmarshal(item, &head); err != nil || head.ID == "" { - return fmt.Errorf("location list item has no id") - } - ids = append(ids, head.ID) - names[head.ID] = head.Name - } - return nil - }) - if err != nil { - return nil, fmt.Errorf("listing calling locations: %w", err) - } - c.locations, c.locationNames = ids, names - return ids, nil -} - -// IsUnavailable reports an error meaning this org or login cannot read a route, as -// with a missing license, rather than a failed read. Contact Center answers 412 for a -// feature the org does not have, such as Generated Summaries. -func IsUnavailable(err error) bool { - var apiErr *webexapi.APIError - if !errors.As(err, &apiErr) { - return false - } - switch apiErr.Status { - case http.StatusBadRequest, http.StatusForbidden, http.StatusNotFound, http.StatusPreconditionFailed: - return true - } - return false -} - -// resolve turns list items into objects, keeping list order so snapshots are stable. -// Item reads run in parallel, because partial lists need one read per object and a -// large org would otherwise take most of an hour. -func (c *Client) resolve(ctx context.Context, t resource.Type, items []map[string]any, known *Known) ([]Object, error) { - ctx, cancel := context.WithCancelCause(ctx) - defer cancel(nil) - out := make([]Object, len(items)) - slots := make(chan struct{}, maxParallelReads) - var wg sync.WaitGroup - for i, raw := range items { - slots <- struct{}{} - wg.Add(1) - go func() { - defer wg.Done() - defer func() { <-slots }() - obj, err := c.fromListItem(ctx, t, raw, known) - if err != nil { - cancel(err) - return - } - out[i] = obj - }() - } - wg.Wait() - if err := context.Cause(ctx); err != nil { - return nil, err - } - return out, nil -} - -// ListKeys reads only list routes, without the item reads List may need. -func (c *Client) ListKeys(ctx context.Context, t resource.Type) ([]resource.Key, error) { - if t.Routes.PerLocation || t.Routes.Singleton { - objects, err := c.List(ctx, t) - if err != nil { - return nil, err - } - keys := make([]resource.Key, len(objects)) - for i, o := range objects { - keys[i] = o.Key - } - return keys, nil - } - listURL, err := c.url(t.Routes.List, resource.Key{}, nil) - if err != nil { - return nil, err - } - keys := []resource.Key{} - visit := func(page []json.RawMessage) error { - for _, item := range page { - var raw map[string]any - if err := json.Unmarshal(item, &raw); err != nil { - return fmt.Errorf("decoding %s: %w", t.Name, err) - } - key, err := itemKey(t, raw) - if err != nil { - return err - } - keys = append(keys, key) - } - return nil - } - if err = c.listPages(ctx, t, listURL, visit); err != nil { - return nil, fmt.Errorf("listing %s: %w", t.Plural, err) - } - return keys, nil -} - -func itemKey(t resource.Type, raw map[string]any) (resource.Key, error) { - idKey := t.Routes.IDKey - if idKey == "" { - idKey = "id" - } - id, _ := raw[idKey].(string) - if id == "" && t.Routes.FallbackIDKey != "" { - id, _ = raw[t.Routes.FallbackIDKey].(string) - } - if id == "" { - return resource.Key{}, fmt.Errorf("%s list item has no %s", t.Name, idKey) - } - key := resource.Key{ID: id} - if t.Routes.ParentKey != "" { - key.Parent, _ = raw[t.Routes.ParentKey].(string) - } - return key, nil -} - -func (c *Client) fromListItem(ctx context.Context, t resource.Type, raw map[string]any, known *Known) (Object, error) { - key, err := itemKey(t, raw) - if err != nil { - return Object{}, err - } - if location, ok := raw[perLocationKey].(string); ok { - key.Parent = location - delete(raw, perLocationKey) - } - if t.Routes.ListIsPartial { - // Projected again from the raw read, so a newer catalog applies to it. - if earlier, ok := known.unchanged(t, key, raw); ok { - return c.object(t, key, earlier), nil - } - return c.Read(ctx, t, key) - } - return c.object(t, key, raw), nil -} - -// Read fetches one object. -func (c *Client) Read(ctx context.Context, t resource.Type, key resource.Key) (Object, error) { - if t.Routes.ReadByFilter { - return c.readByFilter(ctx, t, key) - } - if !t.Routes.Read.Defined() { - return Object{}, fmt.Errorf("%s cannot be read one at a time", t.Plural) - } - target, err := c.url(t.Routes.Read, key, nil) - if err != nil { - return Object{}, err - } - resp, err := c.API.Send(ctx, webexapi.Request{Method: http.MethodGet, URL: target}) - if err != nil { - if resp != nil && resp.Status == http.StatusNotFound { - return Object{}, ErrNotFound - } - return Object{}, err - } - var raw map[string]any - if err := json.Unmarshal(resp.Body, &raw); err != nil { - return Object{}, fmt.Errorf("decoding %s: %w", t.Name, err) - } - return c.object(t, key, raw), nil -} - -func (c *Client) readByFilter(ctx context.Context, t resource.Type, key resource.Key) (Object, error) { - target, err := c.url(t.Routes.List, key, map[string]string{"filter": `id=="` + key.ID + `"`}) - if err != nil { - return Object{}, err - } - var found map[string]any - err = c.API.ListCC(ctx, target, func(page []json.RawMessage) error { - for _, item := range page { - var raw map[string]any - if err := json.Unmarshal(item, &raw); err != nil { - return fmt.Errorf("decoding %s: %w", t.Name, err) - } - if raw["id"] == key.ID { - found = raw - } - } - return nil - }) - if err != nil { - return Object{}, err - } - if found == nil { - return Object{}, ErrNotFound - } - delete(found, "links") - return c.object(t, key, found), nil -} - -// Create makes an object and returns its key. -func (c *Client) Create(ctx context.Context, t resource.Type, desired resource.Values) (resource.Key, error) { - key := resource.Key{} - if t.ParentField != "" { - key.Parent, _ = desired[t.ParentField].(string) - } - if !t.Routes.Create.Defined() { - return resource.Key{}, notSent(fmt.Errorf("%s cannot be created through the API", t.Plural)) - } - if err := t.Check(desired); err != nil { - return resource.Key{}, err - } - body, err := c.createBody(ctx, t, desired) - if err != nil { - return resource.Key{}, notSent(err) - } - target, err := c.url(t.Routes.Create, key, nil) - if err != nil { - return resource.Key{}, notSent(err) - } - resp, err := c.send(ctx, http.MethodPost, target, body) - if err != nil { - return resource.Key{}, err - } - var created struct { - ID string `json:"id"` - } - if err := json.Unmarshal(resp.Body, &created); err != nil || created.ID == "" { - return resource.Key{}, fmt.Errorf("create response has no id: %.200s", resp.Body) - } - key.ID = created.ID - return key, nil -} - -// createBody returns the body Create sends for desired, including what the type -// copies from an existing object. -func (c *Client) createBody(ctx context.Context, t resource.Type, desired resource.Values) (map[string]any, error) { - body := t.CreateBody(desired) - if t.CopyOnCreate != nil { - if err := c.copyInto(ctx, t, body); err != nil { - return nil, err - } - } - return body, nil -} - -// copyInto fills body's missing CopyOnCreate keys from the first matching object, read -// in full because lists can leave those keys out. -func (c *Client) copyInto(ctx context.Context, t resource.Type, body map[string]any) error { - objects, err := c.List(ctx, t) - if err != nil { - return fmt.Errorf("finding a %s to copy: %w", t.Title, err) - } - for _, o := range objects { - if !matches(o.Raw, t.CopyOnCreate.Match) { - continue - } - source, err := c.Read(ctx, t, o.Key) - if err != nil { - return fmt.Errorf("reading %s to copy: %w", o.Label, err) - } - for _, k := range t.CopyOnCreate.Keys { - if _, set := body[k]; !set { - body[k] = source.Raw[k] - } - } - return nil - } - return fmt.Errorf("there is no %s to copy from", t.Title) -} - -func matches(raw, want map[string]any) bool { - for k, v := range want { - if raw[k] != v { - return false - } - } - return true -} - -// Update writes changed fields. raw is a fresh read, which routes that replace the -// whole object need. -func (c *Client) Update(ctx context.Context, t resource.Type, key resource.Key, raw map[string]any, delta resource.Values) error { - if !t.Routes.Update.Defined() { - return notSent(fmt.Errorf("%s cannot be changed through the API", t.Plural)) - } - if err := t.CheckUpdate(delta); err != nil { - return err - } - body := t.PatchBody(delta) - if t.Write == resource.WriteFull { - body = t.FullBody(raw, delta) - } - target, err := c.url(t.Routes.Update, key, nil) - if err != nil { - return notSent(err) - } - _, err = c.send(ctx, t.Routes.Update.Op.Method, target, body) - return err -} - -// Delete removes an object. -func (c *Client) Delete(ctx context.Context, t resource.Type, key resource.Key) error { - if !t.Routes.Delete.Defined() { - return notSent(fmt.Errorf("%s cannot be deleted through the API", t.Plural)) - } - target, err := c.url(t.Routes.Delete, key, nil) - if err != nil { - return notSent(err) - } - _, err = c.API.Send(ctx, webexapi.Request{Method: http.MethodDelete, URL: target}) - return err -} - -// WithBeforeWrite returns a context whose writes call check just before each attempt -// is sent: after any reads the write needs first, and again before a retry. An error -// from check stops the write. -func WithBeforeWrite(ctx context.Context, check func() error) context.Context { - return webexapi.WithWriteCheck(ctx, check) -} - -func (c *Client) send(ctx context.Context, method, target string, body map[string]any) (*webexapi.Response, error) { - data, err := json.Marshal(body) - if err != nil { - return nil, notSent(fmt.Errorf("encoding body: %w", err)) - } - return c.API.Send(ctx, webexapi.Request{Method: method, URL: target, Body: data}) -} - -// NotSent is a write that failed before its request was sent, so nothing changed. -type NotSent struct{ Err error } - -func (e *NotSent) Error() string { return e.Err.Error() } -func (e *NotSent) Unwrap() error { return e.Err } - -func notSent(err error) error { return &NotSent{Err: err} } diff --git a/pkg/webex/webex_test.go b/pkg/webex/webex_test.go deleted file mode 100644 index 7820148..0000000 --- a/pkg/webex/webex_test.go +++ /dev/null @@ -1,530 +0,0 @@ -package webex - -import ( - "context" - "encoding/json" - "errors" - "fmt" - "net/http" - "net/http/httptest" - "reflect" - "strings" - "testing" - "time" - - "github.com/Cloverhound/webex-cli/pkg/catalog" - "github.com/Cloverhound/webex-cli/pkg/fakeapi" - "github.com/Cloverhound/webex-cli/pkg/resource" - "github.com/Cloverhound/webex-cli/pkg/webexapi" -) - -func newClient(t *testing.T) (*Client, *fakeapi.Server) { - t.Helper() - fake := fakeapi.New() - srv := httptest.NewServer(fake) - t.Cleanup(srv.Close) - c := &Client{ - API: &webexapi.Client{Token: func(context.Context) (string, error) { return "tok", nil }}, - Hosts: fakeapi.Hosts(srv.URL), - OrgUUID: fakeapi.OrgUUID, - } - return c, fake -} - -func typeOf(t *testing.T, name string) resource.Type { - t.Helper() - typ, err := catalog.ByName(name) - if err != nil { - t.Fatal(err) - } - return typ -} - -func TestListReadsDetailsForPartialLists(t *testing.T) { - c, _ := newClient(t) - objs, err := c.List(context.Background(), typeOf(t, "hunt_group")) - if err != nil { - t.Fatal(err) - } - if len(objs) != 3 { - t.Fatalf("objects = %d", len(objs)) - } - o := objs[0] - if o.Key != (resource.Key{Parent: "loc1", ID: "hg1"}) || o.Label != "g-hg1" { - t.Fatalf("object = %+v", o) - } - if o.Values["no_answer_rings"] != 5.0 || o.Values["location_id"] != "loc1" { - t.Fatalf("values = %v", o.Values) - } - if _, ok := o.Raw["agents"]; !ok { - t.Fatal("raw must keep unmodelled fields such as agents for display") - } -} - -func TestListUsesFullItemsFromCCListsAndReadsReferenceTypes(t *testing.T) { - c, _ := newClient(t) - teams, err := c.List(context.Background(), typeOf(t, "cc_team")) - if err != nil || len(teams) != 2 || teams[0].Values["site_id"] != "site1" { - t.Fatalf("teams=%+v err=%v", teams, err) - } - locations, err := c.List(context.Background(), typeOf(t, "location")) - if err != nil || len(locations) != 1 || locations[0].Label != "Boston" { - t.Fatalf("locations=%+v err=%v", locations, err) - } - users, err := c.List(context.Background(), typeOf(t, "cc_user")) - if err != nil || len(users) != 1 || users[0].Label != "ada@example.com" { - t.Fatalf("users=%+v err=%v", users, err) - } -} - -func TestListCoversEveryPage(t *testing.T) { - c, fake := newClient(t) - fake.Seed(250) - objs, err := c.List(context.Background(), typeOf(t, "hunt_group")) - if err != nil || len(objs) != 253 { - t.Fatalf("objects=%d err=%v", len(objs), err) - } -} - -func TestDetailReadsRunConcurrentlyAndKeepOrder(t *testing.T) { - c, fake := newClient(t) - fake.Seed(97) - fake.SetLatency(20 * time.Millisecond) - start := time.Now() - objs, err := c.List(context.Background(), typeOf(t, "hunt_group")) - if err != nil { - t.Fatal(err) - } - if elapsed := time.Since(start); elapsed > time.Second { - t.Fatalf("took %s; one at a time would be about 2s", elapsed) - } - if len(objs) != 100 || objs[0].Key.ID != "hg1" || objs[99].Key.ID != "hg1096" { - t.Fatalf("len=%d first=%s last=%s", len(objs), objs[0].Key.ID, objs[len(objs)-1].Key.ID) - } -} - -func TestListFailsOnASingleFailedDetailRead(t *testing.T) { - c, fake := newClient(t) - fake.AddFault(fakeapi.Fault{Method: "GET", Path: "huntGroups/hg2$", Mode: fakeapi.Fail500NoCommit}) - if _, err := c.List(context.Background(), typeOf(t, "hunt_group")); err == nil { - t.Fatal("a partial read must not pass as a whole org") - } -} - -func TestReadMissingObjectIsNotFound(t *testing.T) { - c, _ := newClient(t) - _, err := c.Read(context.Background(), typeOf(t, "cc_team"), resource.Key{ID: "nope"}) - if !errors.Is(err, ErrNotFound) { - t.Fatalf("err = %v", err) - } -} - -func TestCreateReturnsKeyWithParent(t *testing.T) { - c, fake := newClient(t) - typ := typeOf(t, "hunt_group") - key, err := c.Create(context.Background(), typ, resource.Values{"location_id": "loc1", "name": "new", "extension": "1777"}) - if err != nil { - t.Fatal(err) - } - if key.Parent != "loc1" || key.ID == "" { - t.Fatalf("key = %+v", key) - } - if fake.HuntGroup(key.ID)["name"] != "new" { - t.Fatal("object was not created") - } -} - -func TestAValueWebexWouldRefuseIsNeverSent(t *testing.T) { - c, fake := newClient(t) - typ := typeOf(t, "cc_global_variable") - _, err := c.Create(context.Background(), typ, resource.Values{"name": "zz-studio-live-var", "variable_type": "String"}) - if err == nil || !strings.Contains(err.Error(), "Global Variable name") { - t.Fatalf("create err = %v", err) - } - err = c.Update(context.Background(), typ, resource.Key{ID: "gv1"}, map[string]any{"id": "gv1"}, resource.Values{"name": "zz bad"}) - if err == nil || !strings.Contains(err.Error(), "Use only letters A–Z, digits and _") { - t.Fatalf("update err = %v", err) - } - if m := fake.Mutations(); len(m) != 0 { - t.Fatalf("sent %v", m) - } -} - -func TestAnUpdateToAFixedFieldIsNeverSent(t *testing.T) { - c, fake := newClient(t) - typ := typeOf(t, "cc_skill") - got, err := c.Read(context.Background(), typ, resource.Key{ID: "skill1"}) - if err != nil { - t.Fatal(err) - } - err = c.Update(context.Background(), typ, got.Key, got.Raw, resource.Values{"name": "zz renamed"}) - if err == nil || err.Error() != "Skill name: cannot be changed after the object is created" { - t.Fatalf("err = %v", err) - } - if Classify(err) != Rejected { - t.Fatal("a write refused before sending changed nothing") - } - if m := fake.Mutations(); len(m) != 0 { - t.Fatalf("sent %v", m) - } -} - -func TestDeltaWriteSendsOnlyChangedFields(t *testing.T) { - c, fake := newClient(t) - typ := typeOf(t, "hunt_group") - key := resource.Key{Parent: "loc1", ID: "hg1"} - if err := c.Update(context.Background(), typ, key, nil, resource.Values{"no_answer_rings": 9}); err != nil { - t.Fatal(err) - } - h := fake.HuntGroup("hg1") - policies := h["callPolicies"].(map[string]any)["noAnswer"].(map[string]any) - if policies["numberOfRings"] != 9.0 || policies["systemMaxNumberOfRings"] != 20.0 { - t.Fatalf("policies = %v", policies) - } - if h["directoryPin"] != "s3cret-unmodelled" { - t.Fatal("unmodelled hidden field was lost") - } -} - -func TestFullWriteKeepsMembershipAndUnmodelledFields(t *testing.T) { - c, fake := newClient(t) - typ := typeOf(t, "cc_team") - key := resource.Key{ID: "team1"} - got, err := c.Read(context.Background(), typ, key) - if err != nil { - t.Fatal(err) - } - if err := c.Update(context.Background(), typ, key, got.Raw, resource.Values{"description": "edited"}); err != nil { - t.Fatal(err) - } - team := fake.Team("team1") - if team["description"] != "edited" || team["futureField"] != "keep-me" { - t.Fatalf("team = %v", team) - } - if !reflect.DeepEqual(team["userIds"], []any{"user1"}) { - t.Fatalf("membership changed: %v", team["userIds"]) - } -} - -func TestDelete(t *testing.T) { - c, fake := newClient(t) - if err := c.Delete(context.Background(), typeOf(t, "cc_team"), resource.Key{ID: "team2"}); err != nil { - t.Fatal(err) - } - if fake.Team("team2") != nil { - t.Fatal("team still exists") - } -} - -func TestPerLocationListsCarryTheirLocation(t *testing.T) { - c, _ := newClient(t) - objs, err := c.List(context.Background(), typeOf(t, "schedule")) - if err != nil { - t.Fatal(err) - } - if len(objs) != 1 || objs[0].Key.Parent != "loc1" { - t.Fatalf("objs = %+v", objs) - } - if _, leaked := objs[0].Raw[perLocationKey]; leaked { - t.Fatal("the internal location key must not stay in the raw object") - } -} - -func TestSingletonsBecomeOneObjectEach(t *testing.T) { - c, _ := newClient(t) - org, err := c.List(context.Background(), typeOf(t, "voicemail_settings")) - if err != nil || len(org) != 1 || org[0].Key.ID != "voicemail_settings" || org[0].Label == "" { - t.Fatalf("org=%+v err=%v", org, err) - } - perLocation, err := c.List(context.Background(), typeOf(t, "location_voicemail")) - if err != nil || len(perLocation) != 1 || perLocation[0].Key.Parent != "loc1" { - t.Fatalf("perLocation=%+v err=%v", perLocation, err) - } -} - -func TestAnIDFieldOtherThanIDIsHonoured(t *testing.T) { - c, _ := newClient(t) - objs, err := c.List(context.Background(), typeOf(t, "phone_number")) - if err != nil || len(objs) != 1 || objs[0].Key.ID == "" { - t.Fatalf("objs=%+v err=%v", objs, err) - } -} - -func TestAnExtensionOnlyNumberUsesItsExtensionAsIDAndLabel(t *testing.T) { - c, _ := newClient(t) - typ := typeOf(t, "phone_number") - obj, err := c.fromListItem(context.Background(), typ, map[string]any{"extension": "1234"}, nil) - if err != nil { - t.Fatal(err) - } - if obj.Key.ID != "1234" || obj.Label != "1234" { - t.Fatalf("object = %+v", obj) - } -} - -func TestPermissionErrorsAreUnavailableButServerErrorsAreNot(t *testing.T) { - if !IsUnavailable(&webexapi.APIError{Status: 403}) || !IsUnavailable(&webexapi.APIError{Status: 404}) { - t.Fatal("a 403 or 404 means the org cannot read this route") - } - if !IsUnavailable(&webexapi.APIError{Status: 412}) { - t.Fatal("a 412 means the feature is not available for this org") - } - if IsUnavailable(&webexapi.APIError{Status: 500}) || IsUnavailable(errors.New("reset")) || IsUnavailable(nil) { - t.Fatal("anything else is a failed read") - } -} - -func TestEveryTypeListsAndReadsBack(t *testing.T) { - c, _ := newClient(t) - for _, typ := range catalog.All() { - objs, err := c.List(context.Background(), typ) - if err != nil { - t.Fatalf("%s: %v", typ.Name, err) - } - if len(objs) == 0 { - t.Fatalf("%s: no objects", typ.Name) - } - if objs[0].Label == "" { - t.Errorf("%s has no label", typ.Name) - } - } -} - -func TestContactCenterFullWritesKeepUnmodelledStructure(t *testing.T) { - c, fake := newClient(t) - for _, tc := range []struct{ typ, id, collection, kept string }{ - {"cc_queue", "queue1", "cc_queue", "callDistributionGroups"}, - {"cc_business_hours", "hours1", "cc_business_hours", "workingHours"}, - {"cc_entry_point", "ep1", "cc_entry_point", "controlFlowScriptUrl"}, - {"cc_skill", "skill1", "cc_skill", "dynamicSkill"}, - } { - typ := typeOf(t, tc.typ) - key := resource.Key{ID: tc.id} - got, err := c.Read(context.Background(), typ, key) - if err != nil { - t.Fatalf("%s: %v", tc.typ, err) - } - if err := c.Update(context.Background(), typ, key, got.Raw, resource.Values{"description": "edited"}); err != nil { - t.Fatalf("%s: %v", tc.typ, err) - } - stored := fake.Object(tc.collection, tc.id) - if stored["description"] != "edited" { - t.Fatalf("%s = %v", tc.typ, stored) - } - if _, ok := stored[tc.kept]; !ok { - t.Fatalf("%s lost %s: %v", tc.typ, tc.kept, stored) - } - } -} - -func TestFlowsListOutsideTheOrganizationPath(t *testing.T) { - c, fake := newClient(t) - flows, err := c.List(context.Background(), typeOf(t, "cc_flow")) - if err != nil || len(flows) != 1 { - t.Fatalf("flows = %v, %v", flows, err) - } - want := "/" + fakeapi.OrgUUID + "/project/5e5c9ad6d61f870d6d778c1b/flows" - if log := fake.Log(); len(log) == 0 || log[len(log)-1].Path != want { - t.Fatalf("read %v, want %s", log, want) - } -} - -func TestADialNumberWithOnlyAnExtensionIsLabelledByIt(t *testing.T) { - c, fake := newClient(t) - fake.Put("cc_dial_number", map[string]any{"id": "dn2", "extension": "5000", "entryPointId": "ep1"}) - objs, err := c.List(context.Background(), typeOf(t, "cc_dial_number")) - if err != nil { - t.Fatal(err) - } - for _, o := range objs { - if o.Key.ID == "dn2" && o.Label != "5000" { - t.Fatalf("label = %q", o.Label) - } - } -} - -func TestEntryPointFlowAndVersionWrite(t *testing.T) { - c, fake := newClient(t) - typ := typeOf(t, "cc_entry_point") - key := resource.Key{ID: "ep1"} - got, err := c.Read(context.Background(), typ, key) - if err != nil { - t.Fatal(err) - } - if got.Values["flow_id"] != "cc_flow1" || got.Values["flow_version"] != "Live" { - t.Fatalf("values = %v", got.Values) - } - if err := c.Update(context.Background(), typ, key, got.Raw, resource.Values{"flow_id": "flow2", "flow_version": "Latest"}); err != nil { - t.Fatal(err) - } - stored := fake.Object("cc_entry_point", "ep1") - if stored["flowId"] != "flow2" || stored["flowTagId"] != "Latest" { - t.Fatalf("stored = %v", stored) - } -} - -func TestCallingDeltaKeepsNestedSettings(t *testing.T) { - c, fake := newClient(t) - typ := typeOf(t, "call_queue") - key := resource.Key{Parent: "loc1", ID: "cq1"} - if err := c.Update(context.Background(), typ, key, nil, resource.Values{"queue_size": 7, "policy": "REGULAR"}); err != nil { - t.Fatal(err) - } - q := fake.Object("call_queue", "cq1") - settings := q["queueSettings"].(map[string]any) - policies := q["callPolicies"].(map[string]any) - if settings["queueSize"] != 7.0 || settings["overflow"] == nil { - t.Fatalf("settings = %v", settings) - } - if policies["policy"] != "REGULAR" || policies["callBounce"] == nil { - t.Fatalf("policies = %v", policies) - } - if q["agents"] == nil { - t.Fatal("agents were lost") - } -} - -func TestCCQueueDeleteUsesItsOwnRoute(t *testing.T) { - c, fake := newClient(t) - if err := c.Delete(context.Background(), typeOf(t, "cc_queue"), resource.Key{ID: "queue1"}); err != nil { - t.Fatal(err) - } - if fake.Object("cc_queue", "queue1") != nil { - t.Fatal("queue still exists") - } -} - -func TestOrgIDIsSentToCallingWhenSet(t *testing.T) { - c, fake := newClient(t) - c.OrgID = "base64org" - if _, err := c.Read(context.Background(), typeOf(t, "hunt_group"), resource.Key{Parent: "loc1", ID: "hg1"}); err != nil { - t.Fatal(err) - } - if len(fake.Log()) != 1 { - t.Fatalf("log = %v", fake.Log()) - } -} - -func TestANewLayoutCopiesTheGlobalLayoutsFile(t *testing.T) { - c, fake := newClient(t) - layouts := typeOf(t, "cc_desktop_layout") - for _, o := range fake.Objects("cc_desktop_layout") { - o["global"] = false - fake.Put("cc_desktop_layout", o) - } - fake.Put("cc_desktop_layout", map[string]any{"id": "global1", "name": "Global", "global": true, "jsonFileContent": `{"layout":1}`}) - key, err := c.Create(context.Background(), layouts, resource.Values{"name": "New"}) - if err != nil { - t.Fatal(err) - } - got := fake.Object("cc_desktop_layout", key.ID) - if got["jsonFileContent"] != `{"layout":1}` || got["name"] != "New" || got["global"] != false { - t.Fatalf("created = %v", got) - } -} - -// A commit-type fault on a route with no item handler must not wedge the fake for -// every later request. -func TestTheFakeSurvivesAFaultOnAListRoute(t *testing.T) { - fake := fakeapi.New() - srv := httptest.NewServer(fake) - defer srv.Close() - fake.AddFault(fakeapi.Fault{Method: "GET", Path: "huntGroups$", Mode: fakeapi.LoseResponse}) - client := &http.Client{Timeout: 5 * time.Second} - if resp, err := client.Get(srv.URL + "/v1/telephony/config/locations/loc1/huntGroups"); err == nil { - resp.Body.Close() - } - resp, err := client.Get(srv.URL + "/v1/telephony/config/locations/loc1/huntGroups/hg1") - if err != nil { - t.Fatalf("the fake stopped answering: %v", err) - } - resp.Body.Close() -} - -func TestTheFakeRefusesAWriteWithoutABody(t *testing.T) { - fake := fakeapi.New() - srv := httptest.NewServer(fake) - defer srv.Close() - client := &http.Client{Timeout: 5 * time.Second} - resp, err := client.Post(srv.URL+"/organization/"+fakeapi.OrgUUID+"/team", "application/json", nil) - if err != nil { - t.Fatal(err) - } - resp.Body.Close() - if resp.StatusCode != http.StatusBadRequest { - t.Fatalf("status = %d", resp.StatusCode) - } - if resp, err := client.Get(srv.URL + "/organization/" + fakeapi.OrgUUID + "/team/team1"); err != nil { - t.Fatalf("the fake stopped answering: %v", err) - } else { - resp.Body.Close() - } -} - -func TestTheFakeDeletesFromEveryCollection(t *testing.T) { - c, fake := newClient(t) - fake.Delete("cc_skill", "skill1") - if _, err := c.Read(context.Background(), typeOf(t, "cc_skill"), resource.Key{ID: "skill1"}); !errors.Is(err, ErrNotFound) { - t.Fatalf("err = %v", err) - } -} - -// A create that copies from another object checks just before its POST, after the -// reads, so a stop that arrives during them still prevents the write. -func TestBeforeWriteRunsAfterTheCopyReadsAndCanStopTheCreate(t *testing.T) { - c, fake := newClient(t) - fake.Put("cc_desktop_layout", map[string]any{"id": "global1", "name": "Global", "global": true, "jsonFileContent": `{"layout":1}`}) - var readsBefore int - stop := errors.New("stopped") - ctx := WithBeforeWrite(context.Background(), func() error { - readsBefore = len(fake.Log()) - return stop - }) - if _, err := c.Create(ctx, typeOf(t, "cc_desktop_layout"), resource.Values{"name": "New"}); !errors.Is(err, stop) { - t.Fatalf("err = %v", err) - } - if readsBefore == 0 || len(fake.Mutations()) != 0 { - t.Fatalf("check ran after %d requests; writes %v", readsBefore, fake.Mutations()) - } -} - -// The operation table records lists that take no paging parameters, which answer -// in one response however many items they hold. -func TestAListWithoutPagingParametersIsReadInOneRequest(t *testing.T) { - var queries []string - srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - queries = append(queries, r.URL.RawQuery) - if len(queries) > 3 { // stops a pager that pages a list that does not page - w.WriteHeader(http.StatusInternalServerError) - return - } - var list []map[string]any - for i := 0; i < 150; i++ { - list = append(list, map[string]any{"id": fmt.Sprintf("p%d", i), "name": fmt.Sprintf("Playlist %d", i)}) - } - json.NewEncoder(w).Encode(map[string]any{"playlists": list}) - })) - defer srv.Close() - c := &Client{API: &webexapi.Client{Token: func(context.Context) (string, error) { return "tok", nil }}, - Hosts: fakeapi.Hosts(srv.URL), OrgUUID: fakeapi.OrgUUID} - - objects, err := c.List(context.Background(), typeOf(t, "announcement_playlist")) - if err != nil || len(objects) != 150 { - t.Fatalf("got %d, err %v", len(objects), err) - } - if len(queries) != 1 || strings.Contains(queries[0], "start=") { - t.Fatalf("queries = %v", queries) - } -} - -func TestClassify(t *testing.T) { - if Classify(&webexapi.APIError{Status: 400}) != Rejected { - t.Fatal("a 400 is a clear refusal") - } - if Classify(&webexapi.APIError{Status: 500}) != Unknown { - t.Fatal("a 500 may follow a committed write") - } - if Classify(errors.New("connection reset")) != Unknown { - t.Fatal("a transport failure may follow a committed write") - } -} diff --git a/pkg/webexapi/client.go b/pkg/webexapi/client.go deleted file mode 100644 index 44587f5..0000000 --- a/pkg/webexapi/client.go +++ /dev/null @@ -1,254 +0,0 @@ -// Package webexapi is the HTTP transport shared by the webex CLI and other programs -// that call Webex APIs. A Client holds no process-global state, so one program can -// run several at once, and every call takes a context. -package webexapi - -import ( - "bytes" - "context" - "fmt" - "io" - "net/http" - "net/url" - "strconv" - "strings" - "time" -) - -// defaultHTTP bounds each request. Callers that stream large downloads supply their -// own http.Client. -var defaultHTTP = &http.Client{Timeout: 60 * time.Second} - -const defaultRetryAfter = 5 * time.Second - -// TokenSource returns the bearer token. It is called for every attempt, so a token -// changed by Refresh takes effect on the retry. -type TokenSource func(ctx context.Context) (string, error) - -// Client sends requests. The zero value makes no retries and has no token hooks. -type Client struct { - // HTTP defaults to a client with a timeout. - HTTP *http.Client - - Token TokenSource - - // Refresh is called at most once per Send, after a 401. - Refresh func(ctx context.Context) error - - // MaxRetries limits 429 retries. MaxRetryWait, when positive, limits their - // total wait. - MaxRetries int - MaxRetryWait time.Duration - - // BeforeSend sees each attempt's request. An error it returns is passed back - // unchanged and nothing is sent. - BeforeSend func(*http.Request) error - - // AfterResponse is called with each attempt's status and body size. - AfterResponse func(status, size int) - - // OnRetry is called before waiting out a 429. - OnRetry func(wait time.Duration, attempt, max int) - - // Sleep defaults to a wait that ends early when ctx is cancelled. - Sleep func(ctx context.Context, d time.Duration) error -} - -// Request is one API call. URL is complete, including any query string. -type Request struct { - Method string - URL string - Body []byte - - // ContentType applies when Body is set and defaults to application/json. - ContentType string - - // Header entries override the defaults. - Header http.Header -} - -// Response is the final attempt's result. -type Response struct { - Status int - Header http.Header - Body []byte -} - -// Send performs the request. A 401 refreshes the token and retries once, and a 429 -// waits out Retry-After and retries within the limits. Nothing else is retried: a 5xx -// or a broken connection may follow a committed write, so repeating it is unsafe. -// -// A nil Response means no status was received. A non-nil Response with an error -// carries the failed status and body. -func (c *Client) Send(ctx context.Context, r Request) (*Response, error) { - resp, err := c.attempt(ctx, r) - if resp != nil && resp.Status == http.StatusUnauthorized && c.Refresh != nil { - if refreshErr := c.Refresh(ctx); refreshErr != nil { - return resp, err - } - resp, err = c.attempt(ctx, r) - } - - var waited time.Duration - for retries := 0; resp != nil && resp.Status == http.StatusTooManyRequests; retries++ { - wait := RetryAfter(resp.Header.Get("Retry-After")) - if retries >= c.MaxRetries { - return resp, rateLimited(resp, fmt.Sprintf("retry limit reached after %d attempts — try again after %s", - retries, wait.Round(time.Second))) - } - if c.MaxRetryWait > 0 && waited+wait > c.MaxRetryWait { - return resp, rateLimited(resp, fmt.Sprintf("retry wait of %s would exceed max-retry-timer of %s — try again after %s", - (waited+wait).Round(time.Second), c.MaxRetryWait.Round(time.Second), wait.Round(time.Second))) - } - if c.OnRetry != nil { - c.OnRetry(wait, retries+1, c.MaxRetries) - } - if sleepErr := c.sleep(ctx, wait); sleepErr != nil { - return resp, sleepErr - } - waited += wait - resp, err = c.attempt(ctx, r) - } - return resp, err -} - -type writeCheckKey struct{} - -// WithWriteCheck returns a context whose writes (any method but GET and HEAD) call -// check before every attempt, retries included; an error from check stops the write -// unsent. -func WithWriteCheck(ctx context.Context, check func() error) context.Context { - return context.WithValue(ctx, writeCheckKey{}, check) -} - -// writeCheck runs the context's write check for a write. -func writeCheck(ctx context.Context, method string) error { - if method == http.MethodGet || method == http.MethodHead { - return nil - } - if check, ok := ctx.Value(writeCheckKey{}).(func() error); ok { - return check() - } - return nil -} - -func (c *Client) attempt(ctx context.Context, r Request) (*Response, error) { - if err := writeCheck(ctx, r.Method); err != nil { - return nil, err - } - var body io.Reader - if len(r.Body) > 0 { - body = bytes.NewReader(r.Body) - } - httpReq, err := http.NewRequestWithContext(ctx, r.Method, r.URL, body) - if err != nil { - return nil, fmt.Errorf("building request: %w", err) - } - - token := "" - if c.Token != nil { - if token, err = c.Token(ctx); err != nil { - return nil, fmt.Errorf("getting token: %w", err) - } - } - httpReq.Header.Set("Authorization", "Bearer "+token) - if len(r.Body) > 0 { - contentType := r.ContentType - if contentType == "" { - contentType = "application/json" - } - httpReq.Header.Set("Content-Type", contentType) - } - httpReq.Header.Set("Accept", "application/json") - for k, values := range r.Header { - httpReq.Header[http.CanonicalHeaderKey(k)] = values - } - - if c.BeforeSend != nil { - if err := c.BeforeSend(httpReq); err != nil { - return nil, err - } - // BeforeSend can wait, as a pacer does, long enough for the check's answer to - // change. - if err := writeCheck(ctx, r.Method); err != nil { - return nil, err - } - } - - client := c.HTTP - if client == nil { - client = defaultHTTP - } - httpResp, err := client.Do(httpReq) - if err != nil { - return nil, fmt.Errorf("executing request: %w", err) - } - defer httpResp.Body.Close() - - data, err := io.ReadAll(httpResp.Body) - if err != nil { - return &Response{Status: httpResp.StatusCode, Header: httpResp.Header}, fmt.Errorf("reading response: %w", err) - } - resp := &Response{Status: httpResp.StatusCode, Header: httpResp.Header, Body: data} - if c.AfterResponse != nil { - c.AfterResponse(resp.Status, len(data)) - } - if resp.Status >= 400 { - return resp, newAPIError(resp) - } - return resp, nil -} - -func (c *Client) sleep(ctx context.Context, d time.Duration) error { - if c.Sleep != nil { - return c.Sleep(ctx, d) - } - timer := time.NewTimer(d) - defer timer.Stop() - select { - case <-timer.C: - return nil - case <-ctx.Done(): - return ctx.Err() - } -} - -// RetryAfter parses a Retry-After value given in seconds. An absent or unusable -// value means five seconds. -func RetryAfter(header string) time.Duration { - if secs, err := strconv.Atoi(strings.TrimSpace(header)); err == nil && secs > 0 { - return time.Duration(secs) * time.Second - } - return defaultRetryAfter -} - -// NextLink returns the rel="next" URL from a Link header, but only when it points at -// the same host as baseURL, so the bearer token is never sent elsewhere. -func NextLink(h http.Header, baseURL string) string { - link, _ := nextLink(h, baseURL) - return link -} - -// nextLink is NextLink, also reporting a next link it refused, which means the -// list has more pages it will not read. -func nextLink(h http.Header, baseURL string) (link string, refused bool) { - base, err := url.Parse(baseURL) - if err != nil { - return "", false - } - for _, value := range h.Values("Link") { - for _, part := range strings.Split(value, ",") { - target, params, ok := strings.Cut(part, ";") - if !ok || !strings.Contains(strings.ReplaceAll(params, " ", ""), `rel="next"`) { - continue - } - target = strings.Trim(strings.TrimSpace(target), "<>") - u, err := url.Parse(target) - if err != nil || u.Scheme != base.Scheme || u.Host != base.Host { - return "", true - } - return target, false - } - } - return "", false -} diff --git a/pkg/webexapi/client_test.go b/pkg/webexapi/client_test.go deleted file mode 100644 index ff0f867..0000000 --- a/pkg/webexapi/client_test.go +++ /dev/null @@ -1,260 +0,0 @@ -package webexapi - -import ( - "context" - "errors" - "io" - "net/http" - "net/http/httptest" - "strings" - "testing" - "time" -) - -func staticToken(token string) TokenSource { - return func(context.Context) (string, error) { return token, nil } -} - -func noSleep(context.Context, time.Duration) error { return nil } - -func TestSendReturnsResponseAndSetsHeaders(t *testing.T) { - srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - if r.Header.Get("Authorization") != "Bearer tok" || r.Header.Get("Accept") != "application/json" { - t.Errorf("headers = %v", r.Header) - } - if r.Header.Get("Content-Type") != "application/json" { - t.Errorf("content type = %q", r.Header.Get("Content-Type")) - } - body, _ := io.ReadAll(r.Body) - if string(body) != `{"a":1}` { - t.Errorf("body = %q", body) - } - w.Header().Set("Trackingid", "T1") - w.WriteHeader(201) - io.WriteString(w, `{"id":"x"}`) - })) - defer srv.Close() - - c := &Client{Token: staticToken("tok")} - resp, err := c.Send(context.Background(), Request{Method: "POST", URL: srv.URL, Body: []byte(`{"a":1}`)}) - if err != nil { - t.Fatal(err) - } - if resp.Status != 201 || string(resp.Body) != `{"id":"x"}` || resp.Header.Get("Trackingid") != "T1" { - t.Fatalf("resp = %+v", resp) - } -} - -func TestErrorStatusIsStructuredAndKeepsBody(t *testing.T) { - srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Trackingid", "T2") - w.WriteHeader(404) - io.WriteString(w, "missing") - })) - defer srv.Close() - - c := &Client{Token: staticToken("tok")} - resp, err := c.Send(context.Background(), Request{Method: "GET", URL: srv.URL}) - var apiErr *APIError - if !errors.As(err, &apiErr) { - t.Fatalf("err = %v", err) - } - if apiErr.Status != 404 || apiErr.TrackingID != "T2" || string(apiErr.Body) != "missing" { - t.Fatalf("apiErr = %+v", apiErr) - } - if err.Error() != "API error 404: missing" { - t.Fatalf("message = %q", err) - } - if resp == nil || resp.Status != 404 || string(resp.Body) != "missing" { - t.Fatalf("resp = %+v", resp) - } -} - -// A write's check runs before every attempt, so a stop during a 429 wait prevents -// the retry. Reads are not checked. -func TestAWriteCheckRunsBeforeEachAttempt(t *testing.T) { - var requests int - srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - requests++ - w.Header().Set("Retry-After", "1") - w.WriteHeader(http.StatusTooManyRequests) - })) - defer srv.Close() - c := &Client{Token: staticToken("tok"), MaxRetries: 3, Sleep: noSleep} - stop := errors.New("stopped") - checks := 0 - ctx := WithWriteCheck(context.Background(), func() error { - if checks++; checks > 1 { - return stop - } - return nil - }) - if _, err := c.Send(ctx, Request{Method: "PUT", URL: srv.URL}); !errors.Is(err, stop) || requests != 1 { - t.Fatalf("err = %v after %d requests", err, requests) - } - checks = 1 - if _, err := c.Send(ctx, Request{Method: "GET", URL: srv.URL}); errors.Is(err, stop) { - t.Fatal("a read was checked") - } -} - -// A pacer in BeforeSend can wait; a stop during that wait still keeps the write unsent. -func TestAWriteCheckRunsAfterBeforeSend(t *testing.T) { - var requests int - srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { requests++ })) - defer srv.Close() - stopped := false - c := &Client{Token: staticToken("tok"), BeforeSend: func(*http.Request) error { stopped = true; return nil }} - ctx := WithWriteCheck(context.Background(), func() error { - if stopped { - return errors.New("stopped") - } - return nil - }) - if _, err := c.Send(ctx, Request{Method: "PUT", URL: srv.URL}); err == nil || requests != 0 { - t.Fatalf("err = %v after %d requests", err, requests) - } -} - -func TestRefreshesOnceOn401ThenHandles429(t *testing.T) { - statuses := []int{401, 429, 200} - var auth []string - srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - auth = append(auth, r.Header.Get("Authorization")) - status := statuses[len(auth)-1] - if status == 429 { - w.Header().Set("Retry-After", "2") - } - w.WriteHeader(status) - })) - defer srv.Close() - - token := "old" - var retried []string - c := &Client{ - Token: func(context.Context) (string, error) { return token, nil }, - Refresh: func(context.Context) error { token = "new"; return nil }, - MaxRetries: 3, - Sleep: noSleep, - OnRetry: func(wait time.Duration, attempt, max int) { - retried = append(retried, wait.String()) - }, - } - resp, err := c.Send(context.Background(), Request{Method: "GET", URL: srv.URL}) - if err != nil || resp.Status != 200 { - t.Fatalf("resp=%+v err=%v", resp, err) - } - if strings.Join(auth, ",") != "Bearer old,Bearer new,Bearer new" { - t.Fatalf("auth = %v", auth) - } - if strings.Join(retried, ",") != "2s" { - t.Fatalf("retried = %v", retried) - } -} - -func TestRateLimitLimits(t *testing.T) { - calls := 0 - srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - calls++ - w.WriteHeader(429) - })) - defer srv.Close() - - c := &Client{Token: staticToken("tok"), MaxRetries: 2, Sleep: noSleep} - _, err := c.Send(context.Background(), Request{Method: "GET", URL: srv.URL}) - if err == nil || err.Error() != "rate limited (429): retry limit reached after 2 attempts — try again after 5s" { - t.Fatalf("err = %v", err) - } - if calls != 3 { - t.Fatalf("calls = %d", calls) - } - - c.MaxRetryWait = time.Second - _, err = c.Send(context.Background(), Request{Method: "GET", URL: srv.URL}) - if err == nil || err.Error() != "rate limited (429): retry wait of 5s would exceed max-retry-timer of 1s — try again after 5s" { - t.Fatalf("err = %v", err) - } -} - -func TestServerErrorIsNeverRetried(t *testing.T) { - calls := 0 - srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - calls++ - w.WriteHeader(500) - })) - defer srv.Close() - - c := &Client{Token: staticToken("tok"), MaxRetries: 3, Sleep: noSleep} - if _, err := c.Send(context.Background(), Request{Method: "PUT", URL: srv.URL}); err == nil { - t.Fatal("expected an error") - } - if calls != 1 { - t.Fatalf("calls = %d", calls) - } -} - -func TestBeforeSendErrorIsReturnedUnchangedAndNothingIsSent(t *testing.T) { - srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - t.Error("request was sent") - })) - defer srv.Close() - - blocked := errors.New("blocked") - c := &Client{Token: staticToken("tok"), BeforeSend: func(*http.Request) error { return blocked }} - resp, err := c.Send(context.Background(), Request{Method: "POST", URL: srv.URL}) - if err != blocked || resp != nil { - t.Fatalf("resp=%+v err=%v", resp, err) - } -} - -func TestTransportFailureIsNotAnAPIError(t *testing.T) { - srv := httptest.NewServer(http.NotFoundHandler()) - url := srv.URL - srv.Close() - - c := &Client{Token: staticToken("tok")} - resp, err := c.Send(context.Background(), Request{Method: "PUT", URL: url}) - var apiErr *APIError - if err == nil || errors.As(err, &apiErr) || resp != nil { - t.Fatalf("resp=%+v err=%v", resp, err) - } - if !strings.HasPrefix(err.Error(), "executing request: ") { - t.Fatalf("err = %v", err) - } -} - -func TestCancelledContextInterruptsRetryWait(t *testing.T) { - srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Retry-After", "60") - w.WriteHeader(429) - })) - defer srv.Close() - - ctx, cancel := context.WithCancel(context.Background()) - c := &Client{Token: staticToken("tok"), MaxRetries: 3, OnRetry: func(time.Duration, int, int) { cancel() }} - start := time.Now() - _, err := c.Send(ctx, Request{Method: "GET", URL: srv.URL}) - if !errors.Is(err, context.Canceled) { - t.Fatalf("err = %v", err) - } - if time.Since(start) > 5*time.Second { - t.Fatal("retry wait was not interrupted") - } -} - -func TestDefaultHTTPClientHasATimeout(t *testing.T) { - if defaultHTTP.Timeout <= 0 { - t.Fatal("library callers must not hang forever") - } -} - -func TestNextLinkOnlyFollowsTheSameHost(t *testing.T) { - h := http.Header{} - h.Add("Link", `; rel="next"`) - if got := NextLink(h, "https://webexapis.com/v1"); got != "https://webexapis.com/v1/x?cursor=2" { - t.Fatalf("got %q", got) - } - if got := NextLink(h, "https://other.example.com"); got != "" { - t.Fatalf("got %q", got) - } -} diff --git a/pkg/webexapi/errors.go b/pkg/webexapi/errors.go deleted file mode 100644 index 4da5bbe..0000000 --- a/pkg/webexapi/errors.go +++ /dev/null @@ -1,65 +0,0 @@ -package webexapi - -import ( - "errors" - "fmt" -) - -const errorBodyLimit = 500 - -// ErrIncompleteList reports a list that could not be read to its end. Callers must -// not treat the items seen so far as the whole list. -var ErrIncompleteList = errors.New("incomplete list") - -// APIError is a response with a status of 400 or above. -type APIError struct { - Status int - TrackingID string - Body []byte - - message string - // fromBody marks a message built from Body, which WithBody rebuilds. - fromBody bool -} - -func (e *APIError) Error() string { - return e.message -} - -// WithBody returns a copy of the error that carries body instead, with its message -// rebuilt from it, as when a caller must redact what the response held. -func (e *APIError) WithBody(body []byte) *APIError { - c := *e - c.Body = body - if c.fromBody { - c.message = bodyMessage(c.Status, body) - } - return &c -} - -func newAPIError(resp *Response) *APIError { - return &APIError{ - Status: resp.Status, - TrackingID: resp.Header.Get("Trackingid"), - Body: resp.Body, - message: bodyMessage(resp.Status, resp.Body), - fromBody: true, - } -} - -func bodyMessage(status int, body []byte) string { - return fmt.Sprintf("API error %d: %s", status, truncate(string(body), errorBodyLimit)) -} - -func rateLimited(resp *Response, detail string) *APIError { - e := newAPIError(resp) - e.message, e.fromBody = "rate limited (429): "+detail, false - return e -} - -func truncate(s string, n int) string { - if len(s) <= n { - return s - } - return s[:n] + "..." -} diff --git a/pkg/webexapi/hosts.go b/pkg/webexapi/hosts.go deleted file mode 100644 index 6342a9e..0000000 --- a/pkg/webexapi/hosts.go +++ /dev/null @@ -1,116 +0,0 @@ -package webexapi - -import ( - "encoding/base64" - "fmt" - "strings" -) - -// Hosts are the base URLs of the Webex APIs one org uses. -type Hosts struct { - // Webex serves Admin, Calling, Devices, Meetings and Messaging. - Webex string - - // CC is Contact Center in the org's data center. - CC string - - // Analytics serves the Admin analytics reports, whose paths carry their own /v1. - Analytics string - - // AnalyticsCalling serves Detailed Call History in the org's data region. - AnalyticsCalling string - - // AIAgent is AI Agent Studio, which sits in the same data center as CC. - AIAgent string -} - -// CCDataCenters lists the Contact Center data centers, each of which has its own -// API and AI Agent Studio host. -var CCDataCenters = []string{"us1", "eu1", "eu2", "anz1", "ca1", "jp1", "sg1"} - -// DataRegions lists the Webex data regions that have their own analytics host. -var DataRegions = []string{"us", "ca", "eu", "eun", "in", "au"} - -// analyticsCallingHosts maps a data region to its Detailed Call History host. The -// default host routes to the nearest region and answers 451 with the right one when -// that region does not hold the org's data. -var analyticsCallingHosts = map[string]string{ - "us": "https://analytics-calling.webexapis.com", - "ca": "https://analytics-calling.webexapis.com", - "eu": "https://analytics-calling-eu.webexapis.com", - "eun": "https://analytics-calling-eu.webexapis.com", - "in": "https://analytics-calling-in.webexapis.com", - "au": "https://analytics-calling-au.webexapis.com", -} - -// NewHosts returns the hosts for a Contact Center data center and a data region. -// Empty values mean us1 and us. -func NewHosts(ccDataCenter, dataRegion string) (Hosts, error) { - dc := strings.ToLower(strings.TrimSpace(ccDataCenter)) - if dc == "" { - dc = "us1" - } - if !contains(CCDataCenters, dc) { - return Hosts{}, fmt.Errorf("unknown Contact Center data center %q (valid: %s)", ccDataCenter, strings.Join(CCDataCenters, ", ")) - } - region := strings.ToLower(strings.TrimSpace(dataRegion)) - if region == "" { - region = "us" - } - analytics, ok := analyticsCallingHosts[region] - if !ok { - return Hosts{}, fmt.Errorf("unknown data region %q (valid: %s)", dataRegion, strings.Join(DataRegions, ", ")) - } - return Hosts{ - Webex: "https://webexapis.com/v1", - CC: "https://api.wxcc-" + dc + ".cisco.com", - Analytics: "https://analytics.webexapis.com", - AnalyticsCalling: analytics + "/v1", - AIAgent: "https://studio.aiagent-" + dc + ".cisco.com", - }, nil -} - -func contains(list []string, s string) bool { - for _, x := range list { - if x == s { - return true - } - } - return false -} - -// OrgUUID returns the UUID inside a Webex org ID (base64 of -// ciscospark://us/ORGANIZATION/), which Contact Center paths use. A UUID, or -// anything it does not recognize, is returned unchanged. -func OrgUUID(id string) string { - if id == "" || isUUID(id) { - return id - } - for _, enc := range []*base64.Encoding{base64.StdEncoding, base64.RawStdEncoding, base64.URLEncoding, base64.RawURLEncoding} { - decoded, err := enc.DecodeString(id) - if err != nil { - continue - } - s := string(decoded) - if strings.HasPrefix(s, "ciscospark://") { - if uuid := s[strings.LastIndex(s, "/")+1:]; uuid != "" { - return uuid - } - } - } - return id -} - -// OrgIDFromUUID returns the Webex org ID for an org UUID, unpadded as Webex issues -// it: Calling multipart uploads never answer a padded orgId. Anything that is not a -// UUID is returned unchanged. -func OrgIDFromUUID(uuid string) string { - if !isUUID(uuid) { - return uuid - } - return base64.RawStdEncoding.EncodeToString([]byte("ciscospark://us/ORGANIZATION/" + uuid)) -} - -func isUUID(s string) bool { - return strings.Count(s, "-") == 4 && len(s) == 36 -} diff --git a/pkg/webexapi/hosts_test.go b/pkg/webexapi/hosts_test.go deleted file mode 100644 index 0c9a538..0000000 --- a/pkg/webexapi/hosts_test.go +++ /dev/null @@ -1,56 +0,0 @@ -package webexapi - -import "testing" - -func TestDefaultHostsAreUS(t *testing.T) { - h, err := NewHosts("", "") - if err != nil { - t.Fatal(err) - } - want := Hosts{ - Webex: "https://webexapis.com/v1", - CC: "https://api.wxcc-us1.cisco.com", - Analytics: "https://analytics.webexapis.com", - AnalyticsCalling: "https://analytics-calling.webexapis.com/v1", - AIAgent: "https://studio.aiagent-us1.cisco.com", - } - if h != want { - t.Fatalf("got %+v", h) - } -} - -func TestContactCenterDataCenterSelectsCCAndStudioHosts(t *testing.T) { - h, err := NewHosts("EU2", "eu") - if err != nil { - t.Fatal(err) - } - if h.CC != "https://api.wxcc-eu2.cisco.com" || h.AIAgent != "https://studio.aiagent-eu2.cisco.com" { - t.Fatalf("got %+v", h) - } - if h.AnalyticsCalling != "https://analytics-calling-eu.webexapis.com/v1" { - t.Fatalf("analytics calling = %s", h.AnalyticsCalling) - } -} - -func TestUnknownRegionsAreRefused(t *testing.T) { - if _, err := NewHosts("mars1", ""); err == nil { - t.Fatal("unknown data center accepted") - } - if _, err := NewHosts("", "mars"); err == nil { - t.Fatal("unknown data region accepted") - } -} - -func TestOrgIDsConvertBothWays(t *testing.T) { - uuid := "6ab1d2c4-0000-4000-8000-00000000c1d0" - encoded := OrgIDFromUUID(uuid) - if encoded != "Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA" { - t.Fatalf("encoded = %s", encoded) - } - if OrgUUID(encoded) != uuid || OrgUUID(encoded+"=") != uuid || OrgUUID(uuid) != uuid { - t.Fatal("decode failed") - } - if OrgIDFromUUID(encoded) != encoded || OrgUUID("other") != "other" || OrgIDFromUUID("") != "" { - t.Fatal("non-matching input changed") - } -} diff --git a/pkg/webexapi/pacer.go b/pkg/webexapi/pacer.go deleted file mode 100644 index 87d2937..0000000 --- a/pkg/webexapi/pacer.go +++ /dev/null @@ -1,53 +0,0 @@ -package webexapi - -import ( - "net/http" - "strings" - "sync" - "time" -) - -// CCInterval spaces Contact Center requests. Contact Center refuses bursts above about -// 25 requests a second with a Retry-After that runs to the next minute boundary, often -// 20 to 30 seconds, while 16 a second has never been refused. Pacing costs milliseconds; -// one refusal stalls a whole bulk run. -const CCInterval = time.Second / 15 - -// Pacer spaces requests under one URL prefix evenly across every goroutine that shares -// it. -type Pacer struct { - Prefix string - Interval time.Duration - - mu sync.Mutex - next time.Time -} - -// Wait holds a request under the prefix until its turn, and passes others at once. -// It suits Client.BeforeSend. -func (p *Pacer) Wait(r *http.Request) error { - if p == nil || p.Interval <= 0 || !strings.HasPrefix(r.URL.String(), p.Prefix) { - return nil - } - p.mu.Lock() - now := time.Now() - slot := p.next - if slot.Before(now) { - slot = now - } - p.next = slot.Add(p.Interval) - p.mu.Unlock() - - delay := time.Until(slot) - if delay <= 0 { - return nil - } - timer := time.NewTimer(delay) - defer timer.Stop() - select { - case <-timer.C: - return nil - case <-r.Context().Done(): - return r.Context().Err() - } -} diff --git a/pkg/webexapi/pacer_test.go b/pkg/webexapi/pacer_test.go deleted file mode 100644 index d0ea476..0000000 --- a/pkg/webexapi/pacer_test.go +++ /dev/null @@ -1,68 +0,0 @@ -package webexapi - -import ( - "context" - "net/http" - "sync" - "testing" - "time" -) - -func TestPacerSpacesRequestsToItsHostOnly(t *testing.T) { - p := &Pacer{Prefix: "https://cc.example/", Interval: 20 * time.Millisecond} - request := func(host string) *http.Request { - r, _ := http.NewRequest(http.MethodGet, "https://"+host+"/x", nil) - return r - } - - start := time.Now() - var wg sync.WaitGroup - for range 6 { - wg.Add(1) - go func() { - defer wg.Done() - if err := p.Wait(request("cc.example")); err != nil { - t.Error(err) - } - }() - } - wg.Wait() - if elapsed := time.Since(start); elapsed < 100*time.Millisecond { - t.Fatalf("6 paced requests took %v, want at least 5 intervals", elapsed) - } - - start = time.Now() - for range 6 { - if err := p.Wait(request("calling.example")); err != nil { - t.Fatal(err) - } - } - if elapsed := time.Since(start); elapsed > 10*time.Millisecond { - t.Fatalf("unpaced host waited %v", elapsed) - } -} - -func TestPacerGivesUpWhenTheRequestIsCancelled(t *testing.T) { - p := &Pacer{Prefix: "https://cc.example/", Interval: time.Hour} - ctx, cancel := context.WithCancel(context.Background()) - first, _ := http.NewRequestWithContext(ctx, http.MethodGet, "https://cc.example/x", nil) - if err := p.Wait(first); err != nil { - t.Fatal(err) - } - cancel() - second, _ := http.NewRequestWithContext(ctx, http.MethodGet, "https://cc.example/x", nil) - if err := p.Wait(second); err == nil { - t.Fatal("a cancelled request waited for its turn") - } -} - -func TestNilOrZeroPacerDoesNotWait(t *testing.T) { - r, _ := http.NewRequest(http.MethodGet, "https://cc.example/x", nil) - var p *Pacer - if err := p.Wait(r); err != nil { - t.Fatal(err) - } - if err := (&Pacer{Prefix: "https://cc.example/"}).Wait(r); err != nil { - t.Fatal(err) - } -} diff --git a/pkg/webexapi/pager.go b/pkg/webexapi/pager.go deleted file mode 100644 index b030287..0000000 --- a/pkg/webexapi/pager.go +++ /dev/null @@ -1,292 +0,0 @@ -package webexapi - -import ( - "bytes" - "context" - "encoding/json" - "fmt" - "net/http" - "net/url" - "strconv" -) - -const ( - ccPageSize = 100 - offsetPageSize = 100 -) - -// Paging says how a list is read to its end. -type Paging struct { - // CC lists page with page and SizeParam, pageSize when empty, and wrap items in - // {data, meta} or {data, pageInfo}, or send a bare array. - CC bool - SizeParam string - - // Start and Size name an offset list's parameters. An empty Start means the list - // pages only through Link headers, and an empty Size sends no page size. First is - // the first item's offset, 1 for SCIM. - Start, Size string - First int - - // ArrayKey names the array in an offset list's response. When empty, a bare - // array, "items" or "Resources" is read, or else the response's only array. - ArrayKey string - - // Header is sent with every page request. - Header http.Header -} - -// List reads a list to its end, passing each page to visit. A list that cannot be -// read to its end gives ErrIncompleteList: a silently short list would look like -// deletions. -func (c *Client) List(ctx context.Context, listURL string, p Paging, visit func([]json.RawMessage) error) error { - if p.CC { - if p.SizeParam == "" { - p.SizeParam = "pageSize" - } - return c.listCC(ctx, listURL, p, visit) - } - if p.Start != "" && p.Size == "" { - return fmt.Errorf("offset paging by %s needs a page size parameter", p.Start) - } - return c.listOffset(ctx, listURL, p, visit) -} - -// ListCC reads a Contact Center list to its end, passing each page to visit. -// -// CC endpoints wrap items in {data, meta}, or return a bare array with no page -// metadata. Neither form proves the list ended, so a full page always leads to -// another request. An endpoint that repeats a full page, or a later page that is not -// a list, gives ErrIncompleteList: a silently short list would look like deletions. -func (c *Client) ListCC(ctx context.Context, listURL string, visit func([]json.RawMessage) error) error { - return c.listCC(ctx, listURL, Paging{CC: true, SizeParam: "pageSize"}, visit) -} - -func (c *Client) listCC(ctx context.Context, listURL string, p Paging, visit func([]json.RawMessage) error) error { - var previousFirst json.RawMessage - for page := 0; ; page++ { - pageURL, err := withQuery(listURL, map[string]string{"page": strconv.Itoa(page), p.SizeParam: strconv.Itoa(ccPageSize)}) - if err != nil { - return err - } - resp, err := c.Send(ctx, Request{Method: http.MethodGet, URL: pageURL, Header: p.Header.Clone()}) - if err != nil { - return err - } - items, totalPages, err := ccPage(resp.Body) - if err != nil { - return fmt.Errorf("%w: page %d of %s: %v", ErrIncompleteList, page, listURL, err) - } - if repeats(items, previousFirst) { - return fmt.Errorf("%w: %s repeated page %d", ErrIncompleteList, listURL, page) - } - if len(items) > 0 { - if err := visit(items); err != nil { - return err - } - previousFirst = items[0] - } - switch { - case totalPages > 0 && page+1 >= totalPages: - return nil - case totalPages == 0 && len(items) < ccPageSize: - return nil - } - } -} - -// array decodes a JSON array. null decodes into a nil slice without error, but -// reading it as no items would make a failed page look like the end of the list. -func array(raw []byte) ([]json.RawMessage, error) { - if bytes.Equal(bytes.TrimSpace(raw), []byte("null")) { - return nil, fmt.Errorf("null, not an array") - } - var items []json.RawMessage - err := json.Unmarshal(raw, &items) - return items, err -} - -func ccPage(body []byte) (items []json.RawMessage, totalPages int, err error) { - if items, err := array(body); err == nil { - return items, 0, nil - } - var result struct { - Data *[]json.RawMessage `json:"data"` - Meta *ccMeta `json:"meta"` - PageInfo *ccMeta `json:"pageInfo"` - } - if err := json.Unmarshal(body, &result); err != nil { - return nil, 0, err - } - if result.Data == nil { - return nil, 0, fmt.Errorf("response has no data array") - } - meta := result.Meta - if meta == nil { - meta = result.PageInfo - } - if meta != nil { - totalPages = meta.TotalPages - } - return *result.Data, totalPages, nil -} - -type ccMeta struct { - TotalPages int `json:"totalPages"` -} - -// ListOffset reads a start/max list to its end, passing each page to visit. arrayKey -// names the array in the response, which differs per endpoint. A Link rel="next" -// header is followed when present. See ListCC for why failures are not silent. -func (c *Client) ListOffset(ctx context.Context, listURL, arrayKey string, visit func([]json.RawMessage) error) error { - return c.listOffset(ctx, listURL, Paging{Start: "start", Size: "max", ArrayKey: arrayKey}, visit) -} - -func (c *Client) listOffset(ctx context.Context, listURL string, p Paging, visit func([]json.RawMessage) error) error { - var previousFirst json.RawMessage - next := "" - seen := 0 - for start := p.First; ; { - pageURL := next - if pageURL == "" { - params := map[string]string{} - if p.Start != "" { - params[p.Start] = strconv.Itoa(start) - } - if p.Size != "" { - params[p.Size] = strconv.Itoa(offsetPageSize) - } - var err error - if pageURL, err = withQuery(listURL, params); err != nil { - return err - } - } - resp, err := c.Send(ctx, Request{Method: http.MethodGet, URL: pageURL, Header: p.Header.Clone()}) - if err != nil { - return err - } - // Several Calling lists answer {} when they hold nothing at all, which only - // means that on the first page. - if start == p.First && next == "" && bytes.Equal(bytes.TrimSpace(resp.Body), []byte("{}")) { - return nil - } - items, total, err := pageArray(resp.Body, p.ArrayKey) - if err != nil { - return fmt.Errorf("%w: %s: %v", ErrIncompleteList, listURL, err) - } - if repeats(items, previousFirst) { - return fmt.Errorf("%w: %s repeated a page", ErrIncompleteList, listURL) - } - if len(items) > 0 { - if err := visit(items); err != nil { - return err - } - previousFirst = items[0] - } - seen += len(items) - link, refused := nextLink(resp.Header, listURL) - if refused { - return fmt.Errorf("%w: %s gave a next page on another host", ErrIncompleteList, listURL) - } - if link != "" { - next = link - continue - } - if next != "" || p.Start == "" { - return nil - } - // A stated total ends the list only when reached; a short page can be a - // server's own page size. - switch { - case total > 0 && seen >= total: - return nil - case total > 0 && len(items) == 0: - return fmt.Errorf("%w: %s ended at %d of %d items", ErrIncompleteList, listURL, seen, total) - case total == 0 && len(items) < offsetPageSize: - return nil - } - start += len(items) - } -} - -// repeats reports whether a page starts with the previous page's first item: the -// endpoint ignored the paging parameters, whatever size of page it answers with. -func repeats(items []json.RawMessage, previousFirst json.RawMessage) bool { - return len(items) > 0 && previousFirst != nil && bytes.Equal(items[0], previousFirst) -} - -// pageArray finds a page's items. total is SCIM's totalResults when present. -func pageArray(body []byte, key string) (items []json.RawMessage, total int, err error) { - if key == "" { - if items, err := array(body); err == nil { - return items, 0, nil - } - } - var result map[string]json.RawMessage - if err := json.Unmarshal(body, &result); err != nil { - return nil, 0, err - } - rawTotal, scim := result["totalResults"] - if scim { - json.Unmarshal(rawTotal, &total) - } - if key != "" { - items, err := namedArray(result, key) - return items, total, err - } - for _, k := range []string{"items", "Resources"} { - if _, ok := result[k]; ok { - items, err := namedArray(result, k) - return items, total, err - } - } - var found []string - for k, raw := range result { - // SCIM's schemas array names the response type, not items. - if k == "schemas" { - continue - } - var probe []json.RawMessage - if json.Unmarshal(raw, &probe) == nil && probe != nil { - found = append(found, k) - items = probe - } - } - switch len(found) { - case 1: - return items, total, nil - case 0: - // SCIM may leave out Resources when there are none. - if scim && total == 0 { - return nil, 0, nil - } - return nil, 0, fmt.Errorf("response has no array") - default: - return nil, 0, fmt.Errorf("response has several arrays; name one") - } -} - -func namedArray(result map[string]json.RawMessage, key string) ([]json.RawMessage, error) { - raw, ok := result[key] - if !ok { - return nil, fmt.Errorf("response has no %q array", key) - } - items, err := array(raw) - if err != nil { - return nil, fmt.Errorf("%q is not an array: %w", key, err) - } - return items, nil -} - -func withQuery(rawURL string, params map[string]string) (string, error) { - u, err := url.Parse(rawURL) - if err != nil { - return "", fmt.Errorf("parsing list URL: %w", err) - } - q := u.Query() - for k, v := range params { - q.Set(k, v) - } - u.RawQuery = q.Encode() - return u.String(), nil -} diff --git a/pkg/webexapi/pager_test.go b/pkg/webexapi/pager_test.go deleted file mode 100644 index 1b33a39..0000000 --- a/pkg/webexapi/pager_test.go +++ /dev/null @@ -1,396 +0,0 @@ -package webexapi - -import ( - "context" - "encoding/json" - "errors" - "fmt" - "net/http" - "net/http/httptest" - "strconv" - "strings" - "testing" -) - -func items(from, n int) string { - out := "[" - for i := 0; i < n; i++ { - if i > 0 { - out += "," - } - out += fmt.Sprintf(`{"id":"%d"}`, from+i) - } - return out + "]" -} - -func collect(t *testing.T, run func(visit func([]json.RawMessage) error) error) ([]json.RawMessage, error) { - t.Helper() - var all []json.RawMessage - err := run(func(page []json.RawMessage) error { - all = append(all, page...) - return nil - }) - return all, err -} - -func ccServer(handler func(page, size int) (int, string)) *httptest.Server { - return httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - page, _ := strconv.Atoi(r.URL.Query().Get("page")) - size, _ := strconv.Atoi(r.URL.Query().Get("pageSize")) - status, body := handler(page, size) - w.WriteHeader(status) - fmt.Fprint(w, body) - })) -} - -func TestCCPagerFollowsMetaTotalPages(t *testing.T) { - srv := ccServer(func(page, size int) (int, string) { - return 200, fmt.Sprintf(`{"data":%s,"meta":{"totalPages":3}}`, items(page*10, 10)) - }) - defer srv.Close() - - c := &Client{Token: staticToken("tok")} - all, err := collect(t, func(v func([]json.RawMessage) error) error { return c.ListCC(context.Background(), srv.URL, v) }) - if err != nil || len(all) != 30 { - t.Fatalf("len=%d err=%v", len(all), err) - } -} - -func TestCCPagerReadsPastAFullBareArray(t *testing.T) { - srv := ccServer(func(page, size int) (int, string) { - if page == 0 { - return 200, items(0, size) - } - return 200, items(size, 3) - }) - defer srv.Close() - - c := &Client{Token: staticToken("tok")} - all, err := collect(t, func(v func([]json.RawMessage) error) error { return c.ListCC(context.Background(), srv.URL, v) }) - if err != nil { - t.Fatal(err) - } - if len(all) != ccPageSize+3 { - t.Fatalf("len = %d", len(all)) - } -} - -func TestCCPagerStopsOnAShortBareArray(t *testing.T) { - calls := 0 - srv := ccServer(func(page, size int) (int, string) { - calls++ - return 200, items(0, 8) - }) - defer srv.Close() - - c := &Client{Token: staticToken("tok")} - all, err := collect(t, func(v func([]json.RawMessage) error) error { return c.ListCC(context.Background(), srv.URL, v) }) - if err != nil || len(all) != 8 || calls != 1 { - t.Fatalf("len=%d calls=%d err=%v", len(all), calls, err) - } -} - -func TestCCPagerFailsWhenAFullPageRepeats(t *testing.T) { - srv := ccServer(func(page, size int) (int, string) { return 200, items(0, size) }) - defer srv.Close() - - c := &Client{Token: staticToken("tok")} - _, err := collect(t, func(v func([]json.RawMessage) error) error { return c.ListCC(context.Background(), srv.URL, v) }) - if !errors.Is(err, ErrIncompleteList) { - t.Fatalf("err = %v", err) - } -} - -func TestCCPagerFailsOnALaterPageWithoutData(t *testing.T) { - srv := ccServer(func(page, size int) (int, string) { - if page == 0 { - return 200, fmt.Sprintf(`{"data":%s,"meta":{"totalPages":2}}`, items(0, 2)) - } - return 200, `{"message":"try later"}` - }) - defer srv.Close() - - c := &Client{Token: staticToken("tok")} - _, err := collect(t, func(v func([]json.RawMessage) error) error { return c.ListCC(context.Background(), srv.URL, v) }) - if !errors.Is(err, ErrIncompleteList) { - t.Fatalf("err = %v", err) - } -} - -func TestCCPagerReadsPastFullPageWithoutMeta(t *testing.T) { - srv := ccServer(func(page, size int) (int, string) { - if page == 0 { - return 200, fmt.Sprintf(`{"data":%s}`, items(0, size)) - } - return 200, `{"data":[]}` - }) - defer srv.Close() - - c := &Client{Token: staticToken("tok")} - all, err := collect(t, func(v func([]json.RawMessage) error) error { return c.ListCC(context.Background(), srv.URL, v) }) - if err != nil || len(all) != ccPageSize { - t.Fatalf("len=%d err=%v", len(all), err) - } -} - -func TestCCPagerStopsWhenVisitFails(t *testing.T) { - srv := ccServer(func(page, size int) (int, string) { - return 200, fmt.Sprintf(`{"data":%s,"meta":{"totalPages":5}}`, items(0, 1)) - }) - defer srv.Close() - - stop := errors.New("stop") - c := &Client{Token: staticToken("tok")} - err := c.ListCC(context.Background(), srv.URL, func([]json.RawMessage) error { return stop }) - if err != stop { - t.Fatalf("err = %v", err) - } -} - -func TestOffsetPagerAdvancesUntilAShortPage(t *testing.T) { - srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - start, _ := strconv.Atoi(r.URL.Query().Get("start")) - size, _ := strconv.Atoi(r.URL.Query().Get("max")) - n := size - if start > 0 { - n = 4 - } - fmt.Fprintf(w, `{"huntGroups":%s}`, items(start, n)) - })) - defer srv.Close() - - c := &Client{Token: staticToken("tok")} - all, err := collect(t, func(v func([]json.RawMessage) error) error { - return c.ListOffset(context.Background(), srv.URL+"?orgId=o", "huntGroups", v) - }) - if err != nil || len(all) != offsetPageSize+4 { - t.Fatalf("len=%d err=%v", len(all), err) - } -} - -func TestOffsetPagerFollowsLinkHeaders(t *testing.T) { - var srv *httptest.Server - srv = httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - if r.URL.Query().Get("cursor") == "" { - w.Header().Set("Link", fmt.Sprintf(`<%s/x?cursor=2>; rel="next"`, srv.URL)) - fmt.Fprintf(w, `{"items":%s}`, items(0, 2)) - return - } - fmt.Fprintf(w, `{"items":%s}`, items(2, 2)) - })) - defer srv.Close() - - c := &Client{Token: staticToken("tok")} - all, err := collect(t, func(v func([]json.RawMessage) error) error { - return c.ListOffset(context.Background(), srv.URL+"/x", "items", v) - }) - if err != nil || len(all) != 4 { - t.Fatalf("len=%d err=%v", len(all), err) - } -} - -func TestOffsetPagerTreatsAnEmptyFirstPageObjectAsNoItems(t *testing.T) { - srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - fmt.Fprint(w, `{}`) - })) - defer srv.Close() - - c := &Client{Token: staticToken("tok")} - all, err := collect(t, func(v func([]json.RawMessage) error) error { - return c.ListOffset(context.Background(), srv.URL, "operatingModes", v) - }) - if err != nil || len(all) != 0 { - t.Fatalf("len=%d err=%v", len(all), err) - } -} - -func TestOffsetPagerFailsOnAnEmptyLaterPage(t *testing.T) { - srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - if r.URL.Query().Get("start") != "0" { - fmt.Fprint(w, `{}`) - return - } - size, _ := strconv.Atoi(r.URL.Query().Get("max")) - fmt.Fprintf(w, `{"items":%s}`, items(0, size)) - })) - defer srv.Close() - - c := &Client{Token: staticToken("tok")} - _, err := collect(t, func(v func([]json.RawMessage) error) error { - return c.ListOffset(context.Background(), srv.URL, "items", v) - }) - if !errors.Is(err, ErrIncompleteList) { - t.Fatalf("err = %v", err) - } -} - -func TestOffsetPagerFailsWithoutTheNamedArray(t *testing.T) { - srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - fmt.Fprint(w, `{"somethingElse":[]}`) - })) - defer srv.Close() - - c := &Client{Token: staticToken("tok")} - _, err := collect(t, func(v func([]json.RawMessage) error) error { - return c.ListOffset(context.Background(), srv.URL, "huntGroups", v) - }) - if !errors.Is(err, ErrIncompleteList) { - t.Fatalf("err = %v", err) - } -} - -// An endpoint that ignores the paging parameters and holds more than a page answers -// every request with the same oversized page. -func TestPagersFailRatherThanLoopOnARepeatedOversizedPage(t *testing.T) { - var requests int - srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - requests++ - if requests > 5 { // a pager that does not notice the repeat would loop forever - w.WriteHeader(http.StatusInternalServerError) - return - } - fmt.Fprintf(w, `{"data":%s,"items":%s}`, items(0, 150), items(0, 150)) - })) - defer srv.Close() - - c := &Client{Token: staticToken("tok")} - for name, list := range map[string]func(func([]json.RawMessage) error) error{ - "offset": func(v func([]json.RawMessage) error) error { - return c.ListOffset(context.Background(), srv.URL, "items", v) - }, - "cc": func(v func([]json.RawMessage) error) error { return c.ListCC(context.Background(), srv.URL, v) }, - } { - requests = 0 - if _, err := collect(t, list); !errors.Is(err, ErrIncompleteList) || requests > 2 { - t.Errorf("%s: err = %v after %d requests", name, err, requests) - } - } -} - -func TestOffsetPagerIgnoresNullFieldsWhenFindingTheArray(t *testing.T) { - srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - fmt.Fprintf(w, `{"objects":%s,"next":null}`, items(0, 3)) - })) - defer srv.Close() - - c := &Client{Token: staticToken("tok")} - got, err := collect(t, func(v func([]json.RawMessage) error) error { - return c.List(context.Background(), srv.URL, Paging{}, v) - }) - if err != nil || len(got) != 3 { - t.Fatalf("got %d, err %v", len(got), err) - } -} - -func TestPagersFailOnANullList(t *testing.T) { - for name, body := range map[string]string{"bare": `null`, "named": `{"items":null}`} { - srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { fmt.Fprint(w, body) })) - c := &Client{Token: staticToken("tok")} - lists := map[string]func(func([]json.RawMessage) error) error{ - "offset": func(v func([]json.RawMessage) error) error { return c.List(context.Background(), srv.URL, Paging{}, v) }, - } - if name == "bare" { - lists["cc"] = func(v func([]json.RawMessage) error) error { return c.ListCC(context.Background(), srv.URL, v) } - } - for pager, list := range lists { - if _, err := collect(t, list); !errors.Is(err, ErrIncompleteList) { - t.Errorf("%s pager, %s null: err = %v", pager, name, err) - } - } - srv.Close() - } -} - -func TestWithBodyRebuildsTheMessage(t *testing.T) { - e := newAPIError(&Response{Status: 400, Header: http.Header{}, Body: []byte(`{"auth_token":"secret"}`)}) - r := e.WithBody([]byte(`{"auth_token":""}`)) - if strings.Contains(r.Error(), "secret") || string(r.Body) != `{"auth_token":""}` || r.Status != 400 || !strings.Contains(e.Error(), "secret") { - t.Fatalf("redacted %q from %q", r.Error(), e.Error()) - } - limited := rateLimited(&Response{Status: 429, Header: http.Header{}}, "retry later") - if got := limited.WithBody(nil).Error(); got != limited.Error() { - t.Errorf("rate-limit message changed: %q", got) - } -} - -func TestAnEmptySCIMListWithoutResourcesHasNoItems(t *testing.T) { - srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - fmt.Fprint(w, `{"schemas":["urn:ietf:params:scim:api:messages:2.0:ListResponse"],"totalResults":0}`) - })) - defer srv.Close() - c := &Client{Token: staticToken("tok")} - scim := Paging{Start: "startIndex", Size: "count", First: 1} - got, err := collect(t, func(v func([]json.RawMessage) error) error { return c.List(context.Background(), srv.URL, scim, v) }) - if err != nil || len(got) != 0 { - t.Fatalf("got %d items %v, err %v", len(got), got, err) - } -} - -// The token goes only to the API's own host, so a next page elsewhere is a list that -// cannot be read to its end. -func TestAPagerFailsOnANextPageOnAnotherHost(t *testing.T) { - srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Link", `; rel="next"`) - fmt.Fprintf(w, `{"items":%s}`, items(0, 2)) - })) - defer srv.Close() - c := &Client{Token: staticToken("tok")} - if _, err := collect(t, func(v func([]json.RawMessage) error) error { - return c.List(context.Background(), srv.URL, Paging{}, v) - }); !errors.Is(err, ErrIncompleteList) { - t.Fatalf("err = %v", err) - } -} - -// SCIM states its total, and a short page does not end the list before it. -func TestOffsetPagerReadsToAStatedTotal(t *testing.T) { - srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - start, _ := strconv.Atoi(r.URL.Query().Get("startIndex")) - if start > 3 { // stops a pager that loops - fmt.Fprint(w, `{"totalResults":2,"Resources":[]}`) - return - } - fmt.Fprintf(w, `{"totalResults":2,"Resources":%s}`, items(start, 1)) - })) - defer srv.Close() - - c := &Client{Token: staticToken("tok")} - scim := Paging{Start: "startIndex", Size: "count", First: 1} - got, err := collect(t, func(v func([]json.RawMessage) error) error { return c.List(context.Background(), srv.URL, scim, v) }) - if err != nil || len(got) != 2 { - t.Fatalf("got %d items, err %v", len(got), err) - } -} - -func TestOffsetPagerFailsWhenItStopsShortOfItsTotal(t *testing.T) { - srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - if r.URL.Query().Get("startIndex") == "1" { - fmt.Fprintf(w, `{"totalResults":5,"Resources":%s}`, items(1, 1)) - return - } - fmt.Fprint(w, `{"totalResults":5,"Resources":[]}`) - })) - defer srv.Close() - - c := &Client{Token: staticToken("tok")} - scim := Paging{Start: "startIndex", Size: "count", First: 1} - if _, err := collect(t, func(v func([]json.RawMessage) error) error { return c.List(context.Background(), srv.URL, scim, v) }); !errors.Is(err, ErrIncompleteList) { - t.Fatalf("err = %v", err) - } -} - -func TestOffsetPagerFailsWhenAFullPageRepeats(t *testing.T) { - srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - size, _ := strconv.Atoi(r.URL.Query().Get("max")) - fmt.Fprintf(w, `{"items":%s}`, items(0, size)) - })) - defer srv.Close() - - c := &Client{Token: staticToken("tok")} - _, err := collect(t, func(v func([]json.RawMessage) error) error { - return c.ListOffset(context.Background(), srv.URL, "items", v) - }) - if !errors.Is(err, ErrIncompleteList) { - t.Fatalf("err = %v", err) - } -} diff --git a/pkg/webexapi/paging_test.go b/pkg/webexapi/paging_test.go deleted file mode 100644 index 9beef0f..0000000 --- a/pkg/webexapi/paging_test.go +++ /dev/null @@ -1,89 +0,0 @@ -package webexapi - -import ( - "context" - "encoding/json" - "errors" - "fmt" - "net/http" - "net/http/httptest" - "strconv" - "testing" -) - -func list(t *testing.T, url string, p Paging) ([]json.RawMessage, error) { - t.Helper() - c := &Client{Token: staticToken("tok")} - return collect(t, func(v func([]json.RawMessage) error) error { return c.List(context.Background(), url, p, v) }) -} - -func TestCCListUsesItsPageSizeParameter(t *testing.T) { - srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - if r.URL.Query().Get("size") != "100" || r.URL.Query().Has("pageSize") { - w.WriteHeader(400) - return - } - page, _ := strconv.Atoi(r.URL.Query().Get("page")) - fmt.Fprintf(w, `{"data":%s,"pageInfo":{"totalPages":2}}`, items(page*100, 100)) - })) - defer srv.Close() - all, err := list(t, srv.URL, Paging{CC: true, SizeParam: "size"}) - if err != nil || len(all) != 200 { - t.Fatalf("len=%d err=%v", len(all), err) - } -} - -func TestOffsetListNamesItsParametersAndFindsTheOnlyArray(t *testing.T) { - srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - offset, _ := strconv.Atoi(r.URL.Query().Get("offset")) - limit, _ := strconv.Atoi(r.URL.Query().Get("limit")) - n := min(limit, 150-offset) - fmt.Fprintf(w, `{"meta":{"total_count":150},"objects":%s}`, items(offset, n)) - })) - defer srv.Close() - all, err := list(t, srv.URL, Paging{Start: "offset", Size: "limit"}) - if err != nil || len(all) != 150 { - t.Fatalf("len=%d err=%v", len(all), err) - } -} - -func TestSCIMListStartsAtOneAndStopsAtTotalResults(t *testing.T) { - var starts []string - srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - start, _ := strconv.Atoi(r.URL.Query().Get("startIndex")) - starts = append(starts, r.URL.Query().Get("startIndex")) - fmt.Fprintf(w, `{"totalResults":200,"Resources":%s}`, items(start, 100)) - })) - defer srv.Close() - all, err := list(t, srv.URL, Paging{Start: "startIndex", Size: "count", First: 1}) - if err != nil || len(all) != 200 || fmt.Sprint(starts) != "[1 101]" { - t.Fatalf("len=%d starts=%v err=%v", len(all), starts, err) - } -} - -func TestLinkOnlyListReadsOnePageWithoutALink(t *testing.T) { - calls := 0 - srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - calls++ - fmt.Fprintf(w, `{"items":%s}`, items(0, 100)) - })) - defer srv.Close() - all, err := list(t, srv.URL, Paging{}) - if err != nil || len(all) != 100 || calls != 1 { - t.Fatalf("len=%d calls=%d err=%v", len(all), calls, err) - } -} - -func TestOffsetListRefusesAmbiguousOrMissingArrays(t *testing.T) { - for _, body := range []string{`{"a":[],"b":[]}`, `{"count":3}`} { - srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { fmt.Fprint(w, body) })) - _, err := list(t, srv.URL, Paging{Start: "start", Size: "max", First: 0}) - srv.Close() - if !errors.Is(err, ErrIncompleteList) { - t.Errorf("%s: err = %v", body, err) - } - } - if _, err := list(t, "http://unused.example", Paging{Start: "offset"}); err == nil { - t.Error("an offset without a page size was accepted") - } -} diff --git a/pkg/webexops/operation.go b/pkg/webexops/operation.go deleted file mode 100644 index 23c65ce..0000000 --- a/pkg/webexops/operation.go +++ /dev/null @@ -1,345 +0,0 @@ -// Package webexops is the table of Webex API operations, generated from Cisco's -// Postman collections by codegen/generate_cli.py. Each operation is an exported -// *Operation, so a program that names one fails to build when a collection -// refresh drops or renames it. Call sends an operation through a webexapi.Client. -// -// Bodies and responses are JSON documents, not Go types: the collections' example -// bodies do not match what Webex returns, so generated structs would be wrong. -package webexops - -import ( - "context" - "encoding/json" - "fmt" - "net/http" - "net/url" - "strings" - - "github.com/Cloverhound/webex-cli/pkg/webexapi" -) - -// Host names the API host an operation is served from. -type Host string - -const ( - HostWebex Host = "webex" - HostCC Host = "cc" - HostAnalytics Host = "analytics" - HostAnalyticsCalling Host = "analytics-calling" - HostAIAgent Host = "ai-agent" -) - -// URL returns the host's base URL. -func (h Host) URL(hosts webexapi.Hosts) string { - switch h { - case HostCC: - return hosts.CC - case HostAnalytics: - return hosts.Analytics - case HostAnalyticsCalling: - return hosts.AnalyticsCalling - case HostAIAgent: - return hosts.AIAgent - default: - return hosts.Webex - } -} - -// In says where a parameter travels. -type In string - -const ( - InPath In = "path" - InQuery In = "query" - InHeader In = "header" - - // InAgentToken is AI Agent Studio's bot-access-token header. Callers supply the - // agent's ID, and the token is looked up from it. - InAgentToken In = "agent-token" -) - -// TimeRange says how a --last duration fills an operation's from and to. -type TimeRange string - -const ( - TimeISO TimeRange = "iso" - TimeEpochMs TimeRange = "epoch-ms" -) - -// Param is one path, query or header parameter. -type Param struct { - // Name is the parameter as the API names it. - Name string - In In - - // Flag is the CLI flag that supplies the value, in kebab case. Parameters that - // share a flag share a value. - Flag string - Usage string - - // Value is fixed, so no flag supplies it. - Value string -} - -// Body says an operation sends a JSON body. -type Body struct { - // Fields are top-level body fields the CLI offers as flags. Bodies that are - // not flat have none. - Fields []BodyField -} - -// BodyField is one top-level body field. -type BodyField struct { - Name string - Flag string - - // Type is string, bool, int64, float64 or []string. - Type string -} - -// Paging says how a list reads to its end. -type Paging struct { - // Offset names offset paging's parameters. Nil means the area's default: start - // and max outside Contact Center, page and pageSize in it. - Offset *OffsetPaging - - // SizeParam is Contact Center's page size parameter when it is not pageSize. - SizeParam string - - // Query is set on every page request. - Query map[string]string -} - -// OffsetPaging names an offset and page size parameter. An empty Start means the -// list pages only through Link headers. First is the first item's offset. -type OffsetPaging struct { - Start, Size string - First int -} - -// Group is a set of operations published under one CLI command. -type Group struct { - Name string - Aliases []string - Summary string - - // Handwritten groups are published by handwritten CLI commands. - Handwritten bool -} - -// Operation is one API call. -type Operation struct { - // ID is the operation's Go variable name, such as CCTeamList. - ID string - - // Area, Group and Command are the CLI names: webex . - Area, Group, Command string - Aliases []string - - Summary, Description string - - Method string - // Path is relative to Host, with {name} placeholders for path parameters. - Path string - Host Host - - Params []Param - Body *Body - - // Paging is set on reads that can page. - Paging *Paging - - TimeRange TimeRange - - // Private operations are on an API that Cisco neither documents nor supports. - Private bool - - // Redact means responses can carry credentials, which must be removed before - // they are shown. - Redact bool - - // Accept overrides the default application/json Accept header. - Accept string - - // Handwritten operations are published by a handwritten CLI command instead, - // because the request needs something the table cannot describe, such as a - // file upload. - Handwritten bool -} - -// Name is the operation's CLI command path without "webex". -func (o *Operation) Name() string { return o.Area + " " + o.Group + " " + o.Command } - -// Param returns the parameter with this API name. -func (o *Operation) Param(name string) (Param, bool) { - for _, p := range o.Params { - if p.Name == name { - return p, true - } - } - return Param{}, false -} - -// Areas lists the operation areas in CLI order. -var Areas = []string{"admin", "calling", "cc", "device", "meetings", "messaging"} - -// Operations lists an area's operations in collection order. -func Operations(area string) []*Operation { - switch area { - case "admin": - return adminOperations - case "calling": - return callingOperations - case "cc": - return ccOperations - case "device": - return deviceOperations - case "meetings": - return meetingsOperations - case "messaging": - return messagingOperations - } - return nil -} - -// Groups lists an area's groups in collection order. -func Groups(area string) []Group { - switch area { - case "admin": - return adminGroups - case "calling": - return callingGroups - case "cc": - return ccGroups - case "device": - return deviceGroups - case "meetings": - return meetingsGroups - case "messaging": - return messagingGroups - } - return nil -} - -// Find returns the operation published as webex , the -// first one when a collection repeats a name. -func Find(area, group, command string) (*Operation, bool) { - for _, op := range Operations(area) { - if op.Group == group && op.Command == command { - return op, true - } - } - return nil, false -} - -// Args are the values for one call, keyed by API parameter name. Fixed parameters -// need no value. -type Args struct { - Path map[string]string - Query map[string]string - Header map[string]string - Body []byte -} - -// URL builds the request URL. Every path parameter needs a value; an argument -// the operation does not declare is an error, so a misspelled name is never -// silently dropped. -func (o *Operation) URL(hosts webexapi.Hosts, args Args) (string, error) { - declared := map[In]map[string]bool{InPath: {}, InQuery: {}, InHeader: {}, InAgentToken: {}} - path := o.Path - for _, p := range o.Params { - declared[p.In][p.Name] = true - if p.In != InPath { - continue - } - v := p.Value - if v == "" { - v = args.Path[p.Name] - } - if v == "" { - return "", fmt.Errorf("%s: path parameter %s is required", o.Name(), p.Name) - } - path = strings.ReplaceAll(path, "{"+p.Name+"}", url.PathEscape(v)) - } - for name := range args.Path { - if !declared[InPath][name] { - return "", fmt.Errorf("%s has no path parameter %s", o.Name(), name) - } - } - for name := range args.Header { - known := false - for _, p := range o.Params { - known = known || ((p.In == InHeader || p.In == InAgentToken) && strings.EqualFold(p.Name, name)) - } - if !known { - return "", fmt.Errorf("%s has no header %s", o.Name(), name) - } - } - query := url.Values{} - for name, v := range args.Query { - if !declared[InQuery][name] { - return "", fmt.Errorf("%s has no query parameter %s", o.Name(), name) - } - if v != "" { - query.Set(name, v) - } - } - u := o.Host.URL(hosts) + path - if encoded := query.Encode(); encoded != "" { - u += "?" + encoded - } - return u, nil -} - -// List reads a paging operation to its end, passing each page's items to visit. -// Paging parameters are set here, so args leave them out. A list that cannot be read -// to its end fails rather than ending short. -func List(ctx context.Context, c *webexapi.Client, hosts webexapi.Hosts, op *Operation, args Args, visit func([]json.RawMessage) error) error { - if op.Paging == nil { - return fmt.Errorf("%s does not page", op.Name()) - } - query := map[string]string{} - for k, v := range args.Query { - query[k] = v - } - for k, v := range op.Paging.Query { - query[k] = v - } - args.Query = query - u, err := op.URL(hosts, args) - if err != nil { - return err - } - p := webexapi.Paging{Start: "start", Size: "max"} - switch o := op.Paging.Offset; { - case o != nil: - p = webexapi.Paging{Start: o.Start, Size: o.Size, First: o.First} - case op.Area == "cc": - p = webexapi.Paging{CC: true, SizeParam: op.Paging.SizeParam} - } - p.Header = http.Header{} - for name, v := range args.Header { - p.Header.Set(name, v) - } - return c.List(ctx, u, p, visit) -} - -// Call sends the operation. Header values in args are sent as given; resolving an -// AI agent's token is the caller's job, since it needs another call. -func Call(ctx context.Context, c *webexapi.Client, hosts webexapi.Hosts, op *Operation, args Args) (*webexapi.Response, error) { - u, err := op.URL(hosts, args) - if err != nil { - return nil, err - } - if len(args.Body) > 0 && op.Body == nil { - return nil, fmt.Errorf("%s takes no body", op.Name()) - } - req := webexapi.Request{Method: op.Method, URL: u, Body: args.Body, Header: map[string][]string{}} - for name, v := range args.Header { - req.Header.Set(name, v) - } - if op.Accept != "" { - req.Header.Set("Accept", op.Accept) - } - return c.Send(ctx, req) -} diff --git a/pkg/webexops/operation_test.go b/pkg/webexops/operation_test.go deleted file mode 100644 index 5051815..0000000 --- a/pkg/webexops/operation_test.go +++ /dev/null @@ -1,145 +0,0 @@ -package webexops - -import ( - "context" - "encoding/json" - "io" - "net/http" - "net/http/httptest" - "strings" - "testing" - - "github.com/Cloverhound/webex-cli/pkg/webexapi" -) - -func TestEveryOperationIsWellFormed(t *testing.T) { - seen := map[string]bool{} - for _, area := range Areas { - groups := map[string]bool{} - for _, g := range Groups(area) { - groups[g.Name] = true - } - ops := Operations(area) - if len(ops) == 0 { - t.Fatalf("%s has no operations", area) - } - for _, op := range ops { - if op.Area != area || !groups[op.Group] { - t.Errorf("%s: area or group is not listed", op.Name()) - } - for _, p := range op.Params { - if p.In == InPath && !strings.Contains(op.Path, "{"+p.Name+"}") { - t.Errorf("%s: path %s has no {%s}", op.Name(), op.Path, p.Name) - } - if (p.Flag == "") == (p.Value == "") { - t.Errorf("%s: parameter %s needs exactly one of a flag or a fixed value", op.Name(), p.Name) - } - } - seen[op.Name()] = true - } - } - if len(seen) < 1500 { - t.Fatalf("only %d distinct operations", len(seen)) - } -} - -func TestURLFillsPathAndQueryAndRefusesUnknownArguments(t *testing.T) { - hosts, _ := webexapi.NewHosts("eu1", "") - op, ok := Find("cc", "flow", "list") - if !ok { - t.Fatal("cc flow list is missing") - } - u, err := op.URL(hosts, Args{Path: map[string]string{"orgid": "org 1"}, Query: map[string]string{"size": "10", "page": ""}}) - if err != nil { - t.Fatal(err) - } - if u != "https://api.wxcc-eu1.cisco.com/org%201/project/5e5c9ad6d61f870d6d778c1b/flows?size=10" { - t.Fatalf("url = %s", u) - } - if _, err := op.URL(hosts, Args{}); err == nil || !strings.Contains(err.Error(), "orgid is required") { - t.Fatalf("missing path parameter: %v", err) - } - if _, err := op.URL(hosts, Args{Path: map[string]string{"orgid": "o"}, Query: map[string]string{"sise": "1"}}); err == nil { - t.Fatal("misspelled query parameter accepted") - } - if _, err := op.URL(hosts, Args{Path: map[string]string{"orgid": "o"}, Header: map[string]string{"Trakking-Id": "x"}}); err == nil { - t.Fatal("undeclared header accepted") - } - if _, err := MeetingsRecordingsListGroup.URL(hosts, Args{Header: map[string]string{"HostEmail": "a@example.com"}}); err != nil { - t.Fatalf("a declared header, in another case: %v", err) - } -} - -func TestListPagesAsTheOperationSays(t *testing.T) { - var queries []string - srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - queries = append(queries, r.URL.RawQuery) - io.WriteString(w, `{"data":[{"id":"f1"}],"pageInfo":{"totalPages":1}}`) - })) - defer srv.Close() - op, _ := Find("cc", "flow", "list") - var got []json.RawMessage - err := List(context.Background(), &webexapi.Client{}, webexapi.Hosts{CC: srv.URL}, op, - Args{Path: map[string]string{"orgid": "o1"}, Query: map[string]string{"flowType": "FLOW"}}, - func(page []json.RawMessage) error { got = append(got, page...); return nil }) - if err != nil || len(got) != 1 { - t.Fatalf("got %d, err %v", len(got), err) - } - if queries[0] != "flowType=FLOW&includePagination=true&page=0&size=100" { - t.Fatalf("query = %s", queries[0]) - } - get, _ := Find("cc", "team", "get") - if err := List(context.Background(), &webexapi.Client{}, webexapi.Hosts{}, get, Args{}, nil); err == nil { - t.Fatal("a read that does not page was listed") - } -} - -func TestListSendsTheCallersHeadersOnEveryPage(t *testing.T) { - var hostEmails []string - var srv *httptest.Server - srv = httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - hostEmails = append(hostEmails, r.Header.Get("hostEmail")) - if len(hostEmails) > 3 { // stops a pager that loops - w.WriteHeader(http.StatusInternalServerError) - return - } - if r.URL.Query().Get("cursor") == "" { - w.Header().Set("Link", `<`+srv.URL+`/group/recordings?cursor=2>; rel="next"`) - } - io.WriteString(w, `{"items":[{"id":"`+r.URL.Query().Get("cursor")+`"}]}`) - })) - defer srv.Close() - err := List(context.Background(), &webexapi.Client{}, webexapi.Hosts{Webex: srv.URL}, MeetingsRecordingsListGroup, - Args{Header: map[string]string{"hostEmail": "a@example.com"}}, func([]json.RawMessage) error { return nil }) - if err != nil || len(hostEmails) != 2 || hostEmails[0] != "a@example.com" || hostEmails[1] != "a@example.com" { - t.Fatalf("hostEmail per page = %q, err %v", hostEmails, err) - } -} - -func TestCallSendsTheOperation(t *testing.T) { - var got *http.Request - var body string - srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - got = r - b, _ := io.ReadAll(r.Body) - body = string(b) - io.WriteString(w, `{"id":"t1"}`) - })) - defer srv.Close() - - op, ok := Find("cc", "team", "create") - if !ok { - t.Fatal("cc team create is missing") - } - hosts := webexapi.Hosts{CC: srv.URL} - resp, err := Call(context.Background(), &webexapi.Client{}, hosts, op, Args{ - Path: map[string]string{"orgid": "o1"}, - Body: []byte(`{"name":"zz"}`), - }) - if err != nil { - t.Fatal(err) - } - if got.Method != http.MethodPost || got.URL.Path != "/organization/o1/team" || body != `{"name":"zz"}` || string(resp.Body) != `{"id":"t1"}` { - t.Fatalf("%s %s %s → %s", got.Method, got.URL.Path, body, resp.Body) - } -} diff --git a/pkg/webexops/zz_admin.go b/pkg/webexops/zz_admin.go deleted file mode 100644 index a9e8efd..0000000 --- a/pkg/webexops/zz_admin.go +++ /dev/null @@ -1,2070 +0,0 @@ -// Code generated by codegen/generate_cli.py; DO NOT EDIT. - -package webexops - -var AdminAdminAuditListEvents = &Operation{ - ID: "AdminAdminAuditListEvents", Area: "admin", Group: "admin-audit", Command: "list-events", - Summary: "List Admin Audit Events", - Description: "List admin audit events in your organization. Several query parameters are available to filter the response.\n\nLong result sets will be split into [pages](/docs/basics#pagination).\n\n**NOTE**: A maximum of one year of audit events can be returned per request.", - Method: "GET", Path: "/adminAudit/events", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List events in this organization, by ID."}, - {Name: "from", In: InQuery, Flag: "from", Usage: "List events which occurred after a specific date and time."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "List events which occurred before a specific date and time."}, - {Name: "actorId", In: InQuery, Flag: "actor-id", Usage: "List events performed by this person, by ID."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the maximum number of events in the response. The maximum value is `200`."}, - {Name: "offset", In: InQuery, Flag: "offset", Usage: "Offset from the first result that you want to fetch."}, - {Name: "eventCategories", In: InQuery, Flag: "event-categories", Usage: "List events, by event categories."}, - {Name: "eventCategories", In: InQuery, Flag: "event-categories", Usage: "List events, by event categories."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "offset", Size: "max", First: 0}}, - TimeRange: TimeISO, -} - -var AdminAdminAuditListEventCategories = &Operation{ - ID: "AdminAdminAuditListEventCategories", Area: "admin", Group: "admin-audit", Command: "list-event-categories", - Summary: "List Admin Audit Event Categories", - Description: "Get the list of all admin event categories.", - Method: "GET", Path: "/adminAudit/eventCategories", Host: HostWebex, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var AdminAuthorizationsListUser = &Operation{ - ID: "AdminAuthorizationsListUser", Area: "admin", Group: "authorizations", Command: "list-user", - Summary: "List authorizations for a user", - Description: "Lists all authorizations for a user. Either `personId` or `personEmail` must be provided. This API does not support pagination.", - Method: "GET", Path: "/authorizations", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InQuery, Flag: "person-id", Usage: "List authorizations for this user id."}, - {Name: "personEmail", In: InQuery, Flag: "person-email", Usage: "List authorizations for this user email."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var AdminAuthorizationsDeleteOrgClientId = &Operation{ - ID: "AdminAuthorizationsDeleteOrgClientId", Area: "admin", Group: "authorizations", Command: "delete-org-client-id", - Summary: "Delete authorization of org and client ID", - Description: "Deletes an authorization by org ID and client ID.", - Method: "DELETE", Path: "/authorizations", Host: HostWebex, - Params: []Param{ - {Name: "clientId", In: InQuery, Flag: "client-id", Usage: "The unique oAuth client id."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "The ID of the organization to which this person belongs. If no orgId is specified, use orgId from the OAuth token."}, - }, -} - -var AdminAuthorizationsDelete = &Operation{ - ID: "AdminAuthorizationsDelete", Area: "admin", Group: "authorizations", Command: "delete", - Summary: "Delete authorization", - Description: "Deletes an authorization by authorization ID.\n\nSpecify the authorization Id in the `authorizationId` parameter in the URI, which was listed in the list resource.", - Method: "DELETE", Path: "/authorizations/{authorizationId}", Host: HostWebex, - Params: []Param{ - {Name: "authorizationId", In: InPath, Flag: "authorization-id", Usage: "The unique identifier for the message."}, - }, -} - -var AdminAuthorizationsGetExpirationStatusToken = &Operation{ - ID: "AdminAuthorizationsGetExpirationStatusToken", Area: "admin", Group: "authorizations", Command: "get-expiration-status-token", - Summary: "Get expiration status for a token", - Description: "Epoch-based expiration time for the token.", - Method: "GET", Path: "/authorizations/tokenExpiry", Host: HostWebex, -} - -var AdminClassificationsList = &Operation{ - ID: "AdminClassificationsList", Area: "admin", Group: "classifications", Command: "list", - Summary: "List classifications", - Description: "List all the space classifications configured in your org.", - Method: "GET", Path: "/classifications", Host: HostWebex, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var AdminDataSourcesRegister = &Operation{ - ID: "AdminDataSourcesRegister", Area: "admin", Group: "data-sources", Command: "register", - Summary: "Register a Data Source", - Description: "Register a data source with the Webex BYODS system. Authenticate using a Service App with the `spark-admin:datasource_write` scope.\nSchema IDs determine the types of data Webex sends to the DAP and the expected responses. Use the Data Source Schemas endpoints to inspect the available schemas.", - Method: "POST", Path: "/dataSources", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "audience", Flag: "audience", Type: "string"}, - {Name: "nonce", Flag: "nonce", Type: "string"}, - {Name: "schemaId", Flag: "schema-id", Type: "string"}, - {Name: "subject", Flag: "subject", Type: "string"}, - {Name: "tokenLifetimeMinutes", Flag: "token-lifetime-minutes", Type: "int64"}, - {Name: "url", Flag: "url", Type: "string"}, - }}, -} - -var AdminDataSourcesGetAll = &Operation{ - ID: "AdminDataSourcesGetAll", Area: "admin", Group: "data-sources", Command: "get-all", - Summary: "Retrieve All Data Sources", - Description: "Lists all data sources registered by the Service App. Requires the `spark-admin:datasource_read` scope.", - Method: "GET", Path: "/dataSources", Host: HostWebex, -} - -var AdminDataSourcesGetSchemas = &Operation{ - ID: "AdminDataSourcesGetSchemas", Area: "admin", Group: "data-sources", Command: "get-schemas", - Summary: "Retrieve Data Source Schemas", - Description: "Lists the available data source schemas. A valid API access token is required, but no specific scope is needed.", - Method: "GET", Path: "/dataSources/schemas", Host: HostWebex, -} - -var AdminDataSourcesGetSchema = &Operation{ - ID: "AdminDataSourcesGetSchema", Area: "admin", Group: "data-sources", Command: "get-schema", - Summary: "Retrieve Details of a Specific Data Source Schema", - Description: "Retrieves details for a specific data source schema by schema ID. A valid API access token is required, but no specific scope is needed.", - Method: "GET", Path: "/dataSources/schemas/{schemaId}", Host: HostWebex, - Params: []Param{ - {Name: "schemaId", In: InPath, Flag: "schema-id", Usage: "The unique identifier for the schema."}, - }, -} - -var AdminDataSourcesDelete = &Operation{ - ID: "AdminDataSourcesDelete", Area: "admin", Group: "data-sources", Command: "delete", - Summary: "Delete a Data Source", - Description: "Deletes a data source by ID.\n\nSpecify the data source ID in the `dataSourceId` URI parameter.", - Method: "DELETE", Path: "/dataSources/{dataSourceId}", Host: HostWebex, - Params: []Param{ - {Name: "dataSourceId", In: InPath, Flag: "data-source-id", Usage: "The unique identifier for the data source."}, - }, -} - -var AdminDataSourcesGet = &Operation{ - ID: "AdminDataSourcesGet", Area: "admin", Group: "data-sources", Command: "get", - Summary: "Retrieve Data Source Details", - Description: "Retrieves details for a data source by ID. Use a Service App token with the `spark-admin:datasource_read` scope.", - Method: "GET", Path: "/dataSources/{dataSourceId}", Host: HostWebex, - Params: []Param{ - {Name: "dataSourceId", In: InPath, Flag: "data-source-id", Usage: "The unique identifier for the data source."}, - }, -} - -var AdminDataSourcesUpdate = &Operation{ - ID: "AdminDataSourcesUpdate", Area: "admin", Group: "data-sources", Command: "update", - Summary: "Update a Data Source", - Description: "Updates a data source. The fields you can update are `audience`, `subject`, `nonce`, `url`, and `tokenLifetimeMinutes`.\nYou can set `status` from `active` to `disabled` only if you provide an `errorMessage`, which may be shown to the customer administrator in Control Hub.\nUpdate tokens before they expire to prevent service interruption.", - Method: "PUT", Path: "/dataSources/{dataSourceId}", Host: HostWebex, - Params: []Param{ - {Name: "dataSourceId", In: InPath, Flag: "data-source-id", Usage: "The unique identifier for the data source."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "audience", Flag: "audience", Type: "string"}, - {Name: "errorMessage", Flag: "error-message", Type: "string"}, - {Name: "nonce", Flag: "nonce", Type: "string"}, - {Name: "schemaId", Flag: "schema-id", Type: "string"}, - {Name: "status", Flag: "status", Type: "string"}, - {Name: "subject", Flag: "subject", Type: "string"}, - {Name: "tokenLifetimeMinutes", Flag: "token-lifetime-minutes", Type: "int64"}, - {Name: "url", Flag: "url", Type: "string"}, - }}, -} - -var AdminDomainManagementGetVerificationToken = &Operation{ - ID: "AdminDomainManagementGetVerificationToken", Area: "admin", Group: "domain-management", Command: "get-verification-token", - Summary: "Get Domain Verification Token", - Description: "This endpoint helps generate a token for a given domain within the specified organization. The user needs to add this token as a 'TXT' record to the DNS server.\n\n**Possible Error:**\n\n- 409: The request encountered a resource conflict. This error occurs if the domain is either claimed by another organization or by the same organization.\n\n**Authorization:**\n\nAn 'OAuth' token issued by the 'Identity Broker' is required to access this endpoint. The token must include one of the following scopes:\n\n- `Identity:Organization`\n\n- `identity:organizations_rw`\n\n**Administrator Roles:**\n\nThe following administrators can use this API:\n\n- `id_full_admin`", - Method: "POST", Path: "/identity/organizations/{orgId}/actions/getDomainVerificationToken", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InPath, Flag: "org-id", Usage: "The Webex Identity-assigned organization identifier for a user's organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "domain", Flag: "domain", Type: "string"}, - }}, -} - -var AdminDomainManagementVerify = &Operation{ - ID: "AdminDomainManagementVerify", Area: "admin", Group: "domain-management", Command: "verify", - Summary: "Verify Domain", - Description: "This endpoint helps verify a given domain within the specified organization. This API verifies domain ownership by looking up and validating the 'TXT' record for the domain.\nOnce verified, domain enforcement will be applied to the organization. Any users in the organization whose email domain doesn't match one of the verified domains will be marked as transient.\n\nIf you want to verify and claim the domain, just set the 'claimDomain' parameter to true. By default, it's set to false, which will only verify the domain.\n\n**Possible Errors:**\n\n- 400: The request was a Bad Request. The domain can't be verified. This error happens if the user didn't request a token before trying to verify the domain.\n\n- 409: The request resulted in a resource conflict. This error occurs if the domain has already been claimed by another organization.\n\n**Authorization:**\n\nAn 'OAuth' token issued by the 'Identity Broker' is required to access this endpoint. The token must include one of the following scopes:\n\n- `Identity:Organization`\n\n- `identity:organizations_rw`\n\n**Administrator Roles:**\n\nThe following administrators can use this API:\n\n- `id_full_admin`", - Method: "POST", Path: "/identity/organizations/{orgId}/actions/verifyDomain", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InPath, Flag: "org-id", Usage: "The Webex Identity-assigned organization identifier for a user's organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "domain", Flag: "domain", Type: "string"}, - {Name: "claimDomain", Flag: "claim-domain", Type: "bool"}, - {Name: "reserveDomain", Flag: "reserve-domain", Type: "bool"}, - }}, -} - -var AdminDomainManagementClaim = &Operation{ - ID: "AdminDomainManagementClaim", Area: "admin", Group: "domain-management", Command: "claim", - Summary: "Claim Domain", - Description: "This endpoint helps claim the given domain within the specified organization. The domain needs to be verified before it can be claimed.\n\n**Note**\n\n\nThere's an organization-level boolean flag called 'enforceVerifiedDomains'. If this flag is set to false, we won't put any user in the organization into a transient state when verifying or claiming a domain.\nCustomers can still create users within the organization who don't use the verified domains as their email. However, if the flag is set to true, all users in the organization must use one of the verified domains as their email.\nThis flag defines whether the organization enforces user email verification within the organization. If set to true, all users inside the organization must use one of the verified domains.\nThis flag is effective only after the admin has verified at least one email domain.\n\n\n**Possible Error:**\n\n- 400: The request was a Bad Request. This error occurs if the domain is not verified.\n\n**Authorization:**\n\nAn 'OAuth' token issued by the 'Identity Broker' is required to access this endpoint. The token must include one of the following scopes:\n\n- `Identity:Organization`\n\n- `identity:organizations_rw`\n\n**Administrator Roles:**\n\nThe following administrators can use this API:\n\n- `id_full_admin`", - Method: "POST", Path: "/identity/organizations/{orgId}/actions/claimDomain", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InPath, Flag: "org-id", Usage: "The Webex Identity-assigned organization identifier for a user's organization."}, - }, - Body: &Body{}, -} - -var AdminDomainManagementUnverify = &Operation{ - ID: "AdminDomainManagementUnverify", Area: "admin", Group: "domain-management", Command: "unverify", - Summary: "Unverify Domain", - Description: "After you unclaim the domain, it will still be verified. Domain enforcement will still apply to the organization. The unverify endpoint helps to remove the domain ownership verification for the organization.\n\n**Possible Error:**\n\n- 400: The request was a Bad Request. The domain cannot be unverified. This error occurs if the domain is still claimed.\n\n- 404: The request was Not Found. This error occurs if the domain is not associated with the organization.\n\n**Authorization:**\n\nAn 'OAuth' token issued by the 'Identity Broker' is required to access this endpoint. The token must include one of the following scopes:\n\n- `Identity:Organization`\n\n- `identity:organizations_rw`\n\n**Administrator Roles:**\n\nThe following administrators can use this API:\n\n- `id_full_admin`", - Method: "POST", Path: "/identity/organizations/{orgId}/actions/unverifyDomain", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InPath, Flag: "org-id", Usage: "The Webex Identity-assigned organization identifier for a user's organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "domain", Flag: "domain", Type: "string"}, - {Name: "removePending", Flag: "remove-pending", Type: "bool"}, - }}, -} - -var AdminDomainManagementUnclaim = &Operation{ - ID: "AdminDomainManagementUnclaim", Area: "admin", Group: "domain-management", Command: "unclaim", - Summary: "Unclaim Domain", - Description: "This API is used to unclaim a domain for the organization. The domain will remain verified, and domain enforcement will still apply to the given organization.\n\n**Possible Error:**\n\n- 400: The request was a Bad Request. The domain cannot be unclaimed. This error occurs if the requested parameter is invalid.\n\n**Authorization:**\n\nAn 'OAuth' token issued by the 'Identity Broker' is required to access this endpoint. The token must include one of the following scopes:\n\n- `Identity:Organization`\n\n- `identity:organizations_rw`\n\n**Administrator Roles:**\n\nThe following administrators can use this API:\n\n- `id_full_admin`", - Method: "POST", Path: "/identity/organizations/{orgId}/actions/unclaimDomain", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InPath, Flag: "org-id", Usage: "The Webex Identity-assigned organization identifier for a user's organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "domain", Flag: "domain", Type: "string"}, - }}, -} - -var AdminIdentityOrgGet = &Operation{ - ID: "AdminIdentityOrgGet", Area: "admin", Group: "identity-org", Command: "get", - Summary: "Get an organization", - Description: "
\n\n**Authorization**\n\nOAuth token rendered by identity broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:organizations_rw`\n\n- `identity:organizations_read`\n\n
", - Method: "GET", Path: "/identity/organizations/{orgId}", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InPath, Flag: "org-id", Usage: "Webex Identity assigned organization identifier."}, - }, -} - -var AdminIdentityOrgUpdate = &Operation{ - ID: "AdminIdentityOrgUpdate", Area: "admin", Group: "identity-org", Command: "update", - Summary: "Update an organization", - Description: "
\n\n**Authorization**\n\nOAuth token rendered by identity broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:organizations_rw`\n\n
\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n
\n\n**Usage**:\n\n1. Input JSON must contain schema: \"urn:cisco:codev:identity:organization:core:1.0\".", - Method: "PATCH", Path: "/identity/organizations/{orgId}", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InPath, Flag: "org-id", Usage: "Webex Identity assigned organization identifier."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "schemas", Flag: "schemas", Type: "[]string"}, - {Name: "displayName", Flag: "display-name", Type: "string"}, - {Name: "preferredLanguage", Flag: "preferred-language", Type: "string"}, - }}, -} - -var AdminIdentityOrgGenerateOtp = &Operation{ - ID: "AdminIdentityOrgGenerateOtp", Area: "admin", Group: "identity-org", Command: "generate-otp", - Summary: "Generate OTP", - Description: "This API allows an admin to generate a One-Time Password (OTP) for user accounts with `userNameType` set as `partner-upn`. The OTP is used by users to log in to any Webex application, whereupon they are asked to change their password.\nThe OTP generated by this API has a default length of 6 digits and expires in 7 days.\n\nSeveral OTPs can be active for the same user. When the user successfully uses an OTP, all other OTPs are automatically revoked.\n\nThe creation of OTPs is logged in the [Admin Audit Events](https://developer.webex.com/docs/api/v1/admin-audit-events).\n\n**Possible Error:**\n\n- 403: The request was forbidden. OTP generation is restricted to users with a `userNameType` of `partner-upn`. This error occurs if the user does not meet the required criteria for OTP generation.\n\n**Authorization:**\n\nAn OAuth token issued by the Identity Broker is required to access this endpoint. The token must include one of the following scopes:\n\n- `Identity:one_time_password`\nor\n\n- `Identity:Config`\n\n**Administrator Roles:**\n\nThe following administrators have permission to use this API:\n\n- `Org Full Admin`: Can generate OTPs for non-email-type users in their organization.\n\n- `Partner Full Admin`: Can generate OTPs for User/Machine Accounts in Customer Orgs.\n\n- `Org User Admin`: Can generate OTPs for User/Machine Accounts within their organization.", - Method: "POST", Path: "/identity/organizations/{orgId}/users/{userId}/actions/generateOtp", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InPath, Flag: "org-id", Usage: "The Webex Identity-assigned organization identifier for a user's organization."}, - {Name: "userId", In: InPath, Flag: "user-id", Usage: "The Common Identity-assigned user identifier for an existing user (`entryUUID`)."}, - }, -} - -var AdminIdentityOrgUpdateAuthenticationConfigurationSettings = &Operation{ - ID: "AdminIdentityOrgUpdateAuthenticationConfigurationSettings", Area: "admin", Group: "identity-org", Command: "update-authentication-configuration-settings", - Summary: "Update Organization Authentication Configuration Settings", - Description: "Update the authentication configuration details, by organizationID.\nSpecify the organization ID in the `orgId` parameter in the URI.\n\n
\n\n**Authorization**\n\nOAuth token rendered by identity broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:organizations_rw`\n\n
\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n
\n\n**Usage**:\n\n1. Input JSON must contain schema: \"urn:cisco:codev:identity:idbroker:authnconfig:schemas:1.0\".", - Method: "PATCH", Path: "/identity/organizations/{orgId}/authenticationConfig", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InPath, Flag: "org-id", Usage: "A unique identifier for the org."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "schemas", Flag: "schemas", Type: "[]string"}, - {Name: "RememberMyLoginId", Flag: "remember-my-login-id", Type: "bool"}, - {Name: "RememberMyLoginIdDuration", Flag: "remember-my-login-id-duration", Type: "int64"}, - {Name: "mfaEnabled", Flag: "mfa-enabled", Type: "bool"}, - }}, -} - -var AdminIdentityOrgUpdatePasswordPolicy = &Operation{ - ID: "AdminIdentityOrgUpdatePasswordPolicy", Area: "admin", Group: "identity-org", Command: "update-password-policy", - Summary: "Update Organization Password Policy", - Description: "Update Organization Password Policy, by organizationID.\nSpecify the organization ID in the `orgId` parameter in the URI.\n\n
\n\n**Authorization**\n\nOAuth token rendered by identity broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:organizations_rw`\n\n
\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n
\n\n**Usage**:\n\n1. Input JSON must contain schema: \"urn:cisco:codev:identity:idbroker:pwdpolicy:schemas:1.0\".", - Method: "PATCH", Path: "/identity/organizations/{orgId}/passwordPolicy", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InPath, Flag: "org-id", Usage: "A unique identifier for the org."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "schemas", Flag: "schemas", Type: "[]string"}, - {Name: "minimumNumeric", Flag: "minimum-numeric", Type: "string"}, - {Name: "minimumCapAlpha", Flag: "minimum-cap-alpha", Type: "string"}, - {Name: "minimumLowAlpha", Flag: "minimum-low-alpha", Type: "string"}, - {Name: "minimumSpecial", Flag: "minimum-special", Type: "string"}, - {Name: "minimumLength", Flag: "minimum-length", Type: "string"}, - {Name: "historyCount", Flag: "history-count", Type: "string"}, - {Name: "maxPasswordAge", Flag: "max-password-age", Type: "string"}, - {Name: "notAcceptableStrings", Flag: "not-acceptable-strings", Type: "string"}, - }}, -} - -var AdminEventsList = &Operation{ - ID: "AdminEventsList", Area: "admin", Group: "events", Command: "list", - Summary: "List Events", - Description: "List events in your organization. Several query parameters are available to filter the events returned in the response.\n\nLong result sets will be split into [pages](/docs/basics#pagination).", - Method: "GET", Path: "/events", Host: HostWebex, - Params: []Param{ - {Name: "resource", In: InQuery, Flag: "resource", Usage: "List events with a specific resource type."}, - {Name: "type", In: InQuery, Flag: "type", Usage: "List events with a specific event type."}, - {Name: "actorId", In: InQuery, Flag: "actor-id", Usage: "List events performed by this person, by person ID."}, - {Name: "from", In: InQuery, Flag: "from", Usage: "List events which occurred after a specific date and time."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "List events that occurred before a specific date and time. If not specified, events up to the present time will be listed. Cannot be set to a future date relative to the current time."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the maximum number of events in the response. Value must be between 1 and 1000, inclusive."}, - {Name: "serviceType", In: InQuery, Flag: "service-type", Usage: "List events for a specific service type. This parameter is only applicable and mandatory when resource is set to `convergedRecordings`."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, - TimeRange: TimeISO, -} - -var AdminEventsGet = &Operation{ - ID: "AdminEventsGet", Area: "admin", Group: "events", Command: "get", - Summary: "Get Event Details", - Description: "Shows details for an event, by event ID.\n\nSpecify the event ID in the `eventId` parameter in the URI.", - Method: "GET", Path: "/events/{eventId}", Host: HostWebex, - Params: []Param{ - {Name: "eventId", In: InPath, Flag: "event-id", Usage: "The unique identifier for the event."}, - }, -} - -var AdminGroupsCreate = &Operation{ - ID: "AdminGroupsCreate", Area: "admin", Group: "groups", Command: "create", - Summary: "Create a Group", - Description: "Create a new group for a given organization. The group may optionally be created with group members.", - Method: "POST", Path: "/groups", Host: HostWebex, - Body: &Body{}, -} - -var AdminGroupsListSearch = &Operation{ - ID: "AdminGroupsListSearch", Area: "admin", Group: "groups", Command: "list-search", - Summary: "List and Search Groups", - Description: "List groups in your organization.\n\n* Set the `includeMembers` parameter to `true` to return group members. The total number of members returned is limited to 500.\n\n* Use the `startIndex` and `count` parameters to page through result set.\n\n* To search for a specific group use the `filter` parameter.\n\n* Use `sortBy` parameter to sort the responses by `id` or `displayName`.", - Method: "GET", Path: "/groups", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List groups in this organization. Only admin users of another organization (such as partners) may use this parameter."}, - {Name: "filter", In: InQuery, Flag: "filter", Usage: "Searches the group by `displayName` with an operator and a value. The available operators are `eq` (equal) and `sw` (starts with). Only `displayName` can be used to filter results."}, - {Name: "attributes", In: InQuery, Flag: "attributes", Usage: "The attributes to return."}, - {Name: "sortBy", In: InQuery, Flag: "sort-by", Usage: "Sort the results based by group `displayName`."}, - {Name: "sortOrder", In: InQuery, Flag: "sort-order", Usage: "Sort results alphabetically by group display name, in ascending or descending order."}, - {Name: "includeMembers", In: InQuery, Flag: "include-members", Usage: "Optionally return group members in the response. The maximum number of members returned is 500."}, - {Name: "startIndex", In: InQuery, Flag: "start-index", Usage: "The index to start for group pagination."}, - {Name: "count", In: InQuery, Flag: "count", Usage: "Specifies the desired number of search results per page."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "startIndex", Size: "count", First: 1}}, -} - -var AdminGroupsUpdate = &Operation{ - ID: "AdminGroupsUpdate", Area: "admin", Group: "groups", Command: "update", - Summary: "Update a Group", - Description: "Update the group details, by ID.\n\nSpecify the group ID in the `groupId` parameter in the URI.", - Method: "PATCH", Path: "/groups/{groupId}", Host: HostWebex, - Params: []Param{ - {Name: "groupId", In: InPath, Flag: "group-id", Usage: "A unique identifier for the group."}, - }, - Body: &Body{}, -} - -var AdminGroupsGet = &Operation{ - ID: "AdminGroupsGet", Area: "admin", Group: "groups", Command: "get", - Summary: "Get Group Details", - Description: "Get details for a group, by ID.\n\nOptionally, the members may be retrieved with this request. The maximum number of members returned is 500.", - Method: "GET", Path: "/groups/{groupId}", Host: HostWebex, - Params: []Param{ - {Name: "groupId", In: InPath, Flag: "group-id", Usage: "A unique identifier for the group."}, - {Name: "includeMembers", In: InQuery, Flag: "include-members", Usage: "Include the members as part of the response."}, - }, -} - -var AdminGroupsDelete = &Operation{ - ID: "AdminGroupsDelete", Area: "admin", Group: "groups", Command: "delete", - Summary: "Delete a Group", - Description: "Remove a group from the system.\n\nSpecify the group ID in the `groupId` parameter in the URI.", - Method: "DELETE", Path: "/groups/{groupId}", Host: HostWebex, - Params: []Param{ - {Name: "groupId", In: InPath, Flag: "group-id", Usage: "A unique identifier for the group."}, - }, -} - -var AdminGroupsGetMembers = &Operation{ - ID: "AdminGroupsGetMembers", Area: "admin", Group: "groups", Command: "get-members", - Summary: "Get Group Members", - Description: "Gets the members of a group.\n\n* The default maximum members returned is 500.\n\n* Control parameters is available to page through the members and to control the size of the results.", - Method: "GET", Path: "/groups/{groupId}/members", Host: HostWebex, - Params: []Param{ - {Name: "groupId", In: InPath, Flag: "group-id", Usage: "A unique identifier for the group."}, - {Name: "startIndex", In: InQuery, Flag: "start-index", Usage: "The index to start for group pagination."}, - {Name: "count", In: InQuery, Flag: "count", Usage: "Non-negative integer that specifies the desired number of search results per page. Maximum value for the count is 500."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "startIndex", Size: "count", First: 1}}, -} - -var AdminGuestManagementCreate = &Operation{ - ID: "AdminGuestManagementCreate", Area: "admin", Group: "guest-management", Command: "create", - Summary: "Create a Guest", - Description: "Create a new token for a single guest user. The Service App that creates the guest must have the scope `guest-issuer:write`.\n\nGuests are implicitly created by retrieving the guest access token.\n\nRepeated calls to this API with the same `subject` will create additional tokens without invalidating previous ones. Tokens are valid until the `expiresIn`.\n\nGuests can be renamed by supplying the same `subject` and changing the `displayName.`\n\nTo retrieve a new token for an existing guest, please provide the existing guest's `subject`. Tokens are valid until `expiresIn`.", - Method: "POST", Path: "/guests/token", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "subject", Flag: "subject", Type: "string"}, - {Name: "displayName", Flag: "display-name", Type: "string"}, - }}, -} - -var AdminGuestManagementGetCount = &Operation{ - ID: "AdminGuestManagementGetCount", Area: "admin", Group: "guest-management", Command: "get-count", - Summary: "Get Guest Count", - Description: "To retrieve the number of guests, the scopes `guest-issuer:read` or `guest-issuer:write` are needed.", - Method: "GET", Path: "/guests/count", Host: HostWebex, -} - -var AdminAnalyticsHistoricalDataRelatedMessaging = &Operation{ - ID: "AdminAnalyticsHistoricalDataRelatedMessaging", Area: "admin", Group: "analytics", Command: "historical-data-related-messaging", - Summary: "Historical Data related to Messaging", - Description: "Returns daily aggregates of various metrics related to Webex messaging.\n\n
The base URL for these APIs is **analytics.webexapis.com**, which does not work with the **Try It** feature.
", - Method: "GET", Path: "/v1/analytics/messagingMetrics/dailyTotals", Host: HostAnalytics, - Params: []Param{ - {Name: "from", In: InQuery, Flag: "from", Usage: "UTC date starting from which the data needs to be returned."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "UTC date up to which the data needs to be returned"}, - }, - TimeRange: TimeISO, -} - -var AdminAnalyticsHistoricalDataRelatedRoomDevices = &Operation{ - ID: "AdminAnalyticsHistoricalDataRelatedRoomDevices", Area: "admin", Group: "analytics", Command: "historical-data-related-room-devices", - Summary: "Historical Data related to Room Devices", - Description: "Returns daily aggregates of various metrics related to Room Devices.\n\n
The base URL for these APIs is **analytics.webexapis.com**, which does not work with the **Try It** feature.
", - Method: "GET", Path: "/v1/analytics/roomDeviceMetrics/dailyTotals", Host: HostAnalytics, - Params: []Param{ - {Name: "from", In: InQuery, Flag: "from", Usage: "Starting UTC Date from which historical data should be returned."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "Ending UTC Date for which data should be returned."}, - }, - TimeRange: TimeISO, -} - -var AdminAnalyticsHistoricalDataRelatedMeetings = &Operation{ - ID: "AdminAnalyticsHistoricalDataRelatedMeetings", Area: "admin", Group: "analytics", Command: "historical-data-related-meetings", - Summary: "Historical Data related to Meetings", - Description: "Return aggregates of various metrics related to meetings for a given Webex site over a specified time range.\n\n
The base URL for these APIs is **analytics.webexapis.com**, which does not work with the **Try It** feature.
", - Method: "GET", Path: "/v1/analytics/meetingsMetrics/aggregates", Host: HostAnalytics, - Params: []Param{ - {Name: "siteUrl", In: InQuery, Flag: "site-url", Usage: "URL of the Webex site for which historical data is requested."}, - {Name: "from", In: InQuery, Flag: "from", Usage: "UTC Date starting from which the data needs to be returned"}, - {Name: "to", In: InQuery, Flag: "to", Usage: "UTC Date up to which the data needs to be returned"}, - }, - TimeRange: TimeISO, -} - -var AdminHybridClustersList = &Operation{ - ID: "AdminHybridClustersList", Area: "admin", Group: "hybrid-clusters", Command: "list", - Summary: "List Hybrid Clusters", - Description: "List hybrid clusters for an organization. If no `orgId` is specified, the default is the organization of the authenticated user.\n\nOnly an admin auth token with the `spark-admin:hybrid_clusters_read` scope can list clusters.", - Method: "GET", Path: "/hybrid/clusters", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List hybrid clusters in this organization. If an organization is not specified, the organization of the caller will be used."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var AdminHybridClustersGet = &Operation{ - ID: "AdminHybridClustersGet", Area: "admin", Group: "hybrid-clusters", Command: "get", - Summary: "Get Hybrid Cluster Details", - Description: "Shows details for a hybrid cluster, by ID.\n\nOnly an admin auth token with the `spark-admin:hybrid_clusters_read` scope can see cluster details.", - Method: "GET", Path: "/hybrid/clusters/{hybridClusterId}", Host: HostWebex, - Params: []Param{ - {Name: "hybridClusterId", In: InPath, Flag: "hybrid-cluster-id", Usage: "The ID of the cluster."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "\nFind the cluster in this specific organization.\nIf this is not specified, the organization of the caller\nwill be used.\n"}, - }, -} - -var AdminHybridConnectorsList = &Operation{ - ID: "AdminHybridConnectorsList", Area: "admin", Group: "hybrid-connectors", Command: "list", - Summary: "List Hybrid Connectors", - Description: "List hybrid connectors for an organization. If no `orgId` is specified, the default is the organization of the authenticated user.\n\nOnly an admin auth token with the `spark-admin:hybrid_connectors_read` scope can list connectors.", - Method: "GET", Path: "/hybrid/connectors", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List hybrid connectors in this organization. If an organization is not specified, the organization of the caller will be used."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var AdminHybridConnectorsGet = &Operation{ - ID: "AdminHybridConnectorsGet", Area: "admin", Group: "hybrid-connectors", Command: "get", - Summary: "Get Hybrid Connector Details", - Description: "Shows details for a hybrid connector, by ID.\n\nOnly an admin auth token with the `spark-admin:hybrid_connectors_read` scope can see connector details.", - Method: "GET", Path: "/hybrid/connectors/{connectorId}", Host: HostWebex, - Params: []Param{ - {Name: "connectorId", In: InPath, Flag: "connector-id", Usage: "The ID of the connector."}, - }, -} - -var AdminLicensesList = &Operation{ - ID: "AdminLicensesList", Area: "admin", Group: "licenses", Command: "list", - Summary: "List Licenses", - Description: "List all licenses for a given organization. If no `orgId` is specified, the default is the organization of the authenticated user.\n\nResponse properties that are not applicable to the license will not be present in the response.", - Method: "GET", Path: "/licenses", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List licenses for this organization."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var AdminLicensesGetLicense = &Operation{ - ID: "AdminLicensesGetLicense", Area: "admin", Group: "licenses", Command: "get-license", - Summary: "Get License Details", - Description: "Shows details for a license, by ID.\n\nSpecify the license ID in the `licenseId` parameter in the URI.\nUse the optional query parameter `includeAssignedTo` to get a list of all objects that are assigned with the license. The objects include but not limited to, users including external users. Long result sets will be split into [pages](/docs/basics#pagination).\n\nResponse properties that are not applicable to the license will not be present in the response.", - Method: "GET", Path: "/licenses/{licenseId}", Host: HostWebex, - Params: []Param{ - {Name: "licenseId", In: InPath, Flag: "license-id", Usage: "The unique identifier for the license."}, - {Name: "includeAssignedTo", In: InQuery, Flag: "include-assigned-to", Usage: "The type of object to whom the license is assigned to."}, - {Name: "next", In: InQuery, Flag: "next", Usage: "List the next set of users. Applicable only if `includeAssignedTo` is populated."}, - {Name: "limit", In: InQuery, Flag: "limit", Usage: "A limit on the number of users to be returned in the response. Applicable only if `includeAssignedTo` is populated. limit cannot be more than 300."}, - }, -} - -var AdminLicensesAssignUsers = &Operation{ - ID: "AdminLicensesAssignUsers", Area: "admin", Group: "licenses", Command: "assign-users", - Summary: "Assign Licenses to Users", - Description: "Assign licenses and attendee `siteUrls` to existing users. Only an admin can assign licenses. Only existing users can be assigned a license. Assign meeting licenses to users outside your organization (Status will be pending until the user accepts the invite)\n\nAt least one of the following body parameters is required to assign license to the user: `email`, `personId`. For Calling license assignment, properties `phoneNumber` or `extension` are required. If `phoneNumber` is not provided then `locationId` is mandatory.\n\nWhen assigning licenses and attendee siteUrls to a user who does not belong to the organization, the licenses and siteUrls remain in pending state until the user accepts them. The `pendingLicenses` and `pendingSiteUrls` are part of the response.", - Method: "PATCH", Path: "/licenses/users", Host: HostWebex, - Body: &Body{}, -} - -var AdminMeetingQualitiesGet = &Operation{ - ID: "AdminMeetingQualitiesGet", Area: "admin", Group: "meeting-qualities", Command: "get", - Summary: "Get Meeting Qualities", - Description: "Get quality data for a meeting, by `meetingId`. Only organization administrators can retrieve meeting quality data.", - Method: "GET", Path: "/meeting/qualities", Host: HostWebex, - Params: []Param{ - {Name: "meetingId", In: InQuery, Flag: "meeting-id", Usage: "Unique identifier for the specific meeting instance. **Note:** The `meetingId` can be obtained via the Meeting List API when meetingType=meeting. The `id` attribute in the Meeting List Response is what is needed, for example, `e5dba9613a9d455aa49f6ffdafb6e7db_I_191395283063545470`."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the maximum number of media sessions in the response."}, - {Name: "offset", In: InQuery, Flag: "offset", Usage: "Offset from the first result that you want to fetch."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "offset", Size: "max", First: 0}}, -} - -var AdminOrgContactsCreate = &Operation{ - ID: "AdminOrgContactsCreate", Area: "admin", Group: "org-contacts", Command: "create", - Summary: "Create a Contact", - Description: "Creating a new contact for a given organization requires an org admin role.\n\nAt least one of the following body parameters: `phoneNumbers`, `emails`, `sipAddresses` is required to create a new contact for source \"CH\",\n`displayName` is required to create a new contact for source \"Webex4Broadworks\".\n\nUse the optional `groupIds` field to add group IDs in an array within the organisation contact. This will become a group contact.", - Method: "POST", Path: "/contacts/organizations/{orgid}/contacts", Host: HostWebex, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Webex Identity assigned organization identifier for the user's organization or the organization he manages."}, - }, - Body: &Body{}, -} - -var AdminOrgContactsGet = &Operation{ - ID: "AdminOrgContactsGet", Area: "admin", Group: "org-contacts", Command: "get", - Summary: "Get a Contact", - Description: "Shows details for an organization contact by ID.\nSpecify the organization ID in the `orgId` parameter in the URI, and specify the contact ID in the `contactId` parameter in the URI.\n\n**NOTE**:\nThe `orgId` used in the path for this API are the org UUIDs. They follow a xxxx-xxxx-xxxx-xxxx pattern. If you have an orgId in base64 encoded format (starting with Y2.....) you need to base64 decode the id and extract the UUID from the slug, before you use it in your API call.", - Method: "GET", Path: "/contacts/organizations/{orgid}/contacts/{contactId}", Host: HostWebex, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Webex Identity assigned organization identifier for the user's organization or the organization he manages."}, - {Name: "contactId", In: InPath, Flag: "contact-id", Usage: "The contact ID."}, - }, -} - -var AdminOrgContactsUpdate = &Operation{ - ID: "AdminOrgContactsUpdate", Area: "admin", Group: "org-contacts", Command: "update", - Summary: "Update a Contact", - Description: "Update details for contact by ID. Only an admin can update a contact.\nSpecify the organization ID in the `orgId` parameter in the URI, and specify the contact ID in the `contactId` parameter in the URI.\n\nUse the optional `groupIds` field to update the group IDs by changing the existing array. You can add or remove one or all groups. To remove all associated groups, pass an empty array in the `groupIds` field.", - Method: "PATCH", Path: "/contacts/organizations/{orgid}/contacts/{contactId}", Host: HostWebex, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Webex Identity assigned organization identifier for the user's organization or the organization he manages."}, - {Name: "contactId", In: InPath, Flag: "contact-id", Usage: "The contact ID."}, - }, - Body: &Body{}, -} - -var AdminOrgContactsDelete = &Operation{ - ID: "AdminOrgContactsDelete", Area: "admin", Group: "org-contacts", Command: "delete", - Summary: "Delete a Contact", - Description: "Remove a contact from the organization. Only an admin can remove a contact.\n\nSpecify the organization ID in the `orgId` parameter in the URI, and specify the contact ID in the `contactId` parameter in the URI.", - Method: "DELETE", Path: "/contacts/organizations/{orgid}/contacts/{contactId}", Host: HostWebex, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Webex Identity assigned organization identifier for the user's organization or the organization he manages."}, - {Name: "contactId", In: InPath, Flag: "contact-id", Usage: "The contact ID."}, - }, -} - -var AdminOrgContactsList = &Operation{ - ID: "AdminOrgContactsList", Area: "admin", Group: "org-contacts", Command: "list", - Summary: "List Contacts", - Description: "List contacts in the organization. The default limit is `100`.\n\n`keyword` can be the value of \"displayName\", \"firstName\", \"lastName\", \"email\". An empty string of `keyword` means get all contacts.\n\n`groupIds` is a comma separated list group IDs. Results are filtered based on those group IDs.\n\nLong result sets will be split into [pages](/docs/basics#pagination).", - Method: "GET", Path: "/contacts/organizations/{orgid}/contacts/search", Host: HostWebex, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "The organization ID."}, - {Name: "keyword", In: InQuery, Flag: "keyword", Usage: "List contacts with a keyword."}, - {Name: "source", In: InQuery, Flag: "source", Usage: "List contacts with source."}, - {Name: "limit", In: InQuery, Flag: "limit", Usage: "Limit the maximum number of contact in the response.\n + Default: 100\n"}, - {Name: "groupIds", In: InQuery, Flag: "group-ids", Usage: "Filter contacts based on groups."}, - {Name: "groupIds", In: InQuery, Flag: "group-ids", Usage: "Filter contacts based on groups."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var AdminOrgContactsBulkCreateUpdate = &Operation{ - ID: "AdminOrgContactsBulkCreateUpdate", Area: "admin", Group: "org-contacts", Command: "bulk-create-update", - Summary: "Bulk Create or Update Contacts", - Description: "Create or update contacts in bulk. Update an existing contact by specifying the contact ID in the `contactId` parameter in the request body.", - Method: "POST", Path: "/contacts/organizations/{orgid}/contacts/bulk", Host: HostWebex, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Webex Identity assigned organization identifier for the user's organization or the organization he manages."}, - }, - Body: &Body{}, -} - -var AdminOrgContactsBulkDelete = &Operation{ - ID: "AdminOrgContactsBulkDelete", Area: "admin", Group: "org-contacts", Command: "bulk-delete", - Summary: "Bulk Delete Contacts", - Description: "Delete contacts in bulk.", - Method: "POST", Path: "/contacts/organizations/{orgid}/contacts/bulk/delete", Host: HostWebex, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Webex Identity assigned organization identifier for the user's organization or the organization he manages."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "schemas", Flag: "schemas", Type: "string"}, - {Name: "objectIds", Flag: "object-ids", Type: "[]string"}, - }}, -} - -var AdminOrganizationsList = &Operation{ - ID: "AdminOrganizationsList", Area: "admin", Group: "organizations", Command: "list", - Summary: "List Organizations", - Description: "List all organizations visible by your account. The results will not be [paginated](/docs/basics#pagination).", - Method: "GET", Path: "/organizations", Host: HostWebex, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var AdminOrganizationsGet = &Operation{ - ID: "AdminOrganizationsGet", Area: "admin", Group: "organizations", Command: "get", - Summary: "Get Organization Details", - Description: "Shows details for an organization, by ID.\n\nSpecify the org ID in the `orgId` parameter in the URI.", - Method: "GET", Path: "/organizations/{orgId}", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InPath, Flag: "org-id", Usage: "The unique identifier for the organization."}, - }, -} - -var AdminOrganizationsDelete = &Operation{ - ID: "AdminOrganizationsDelete", Area: "admin", Group: "organizations", Command: "delete", - Summary: "Delete Organization", - Description: "Deletes an organization, by ID. It may take up to 10 minutes for the organization to be deleted after the response is returned.\n

\nSpecify the org ID in the `orgId` parameter in the URI.\n\n
Deleting your organization permanently deletes all of the information associated with your organization and is irreversible.
\n\nDeleting an Organization may fail with a HTTP 409 Conflict response and encounter one or more of the errors described below. Resolve these conditions to allow the delete to succeed.\n

\n\n+ Org cannot be deleted as it has Linked sites.\n\n+ Org cannot be deleted as it has active subscriptions or licenses.\n\n+ Org cannot be deleted as [Directory Synchronization](https://developer.webex.com/docs/api/v1/broadworks-enterprises/get-directory-sync-status-for-an-enterprise) is enabled.\n\n+ Org cannot be deleted as it has more than 1 user.\n\n+ Org cannot be deleted as it has more than 1 managed by relationship.\n\n+ Org cannot be deleted as it has managed orgs.\n\n
\nWhen deleting a Webex for BroadWorks Organization with BroadWorks Directory Synchronization enabled, a prerequisite is to disable BroadWorks Directory Synchronization for the given Organization. Refer to the [Organization Deletion](https://developer.webex.com/docs/api/guides/webex-for-broadworks-developers-guide#organization-deletion) section of the [Webex for BroadWorks](/docs/api/guides/webex-for-broadworks-developers-guide) guide for more information.\n
", - Method: "DELETE", Path: "/organizations/{orgId}", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InPath, Flag: "org-id", Usage: "The unique identifier for the organization."}, - }, -} - -var AdminPartnerAdministratorsGetAllCustomersManagedAdmin = &Operation{ - ID: "AdminPartnerAdministratorsGetAllCustomersManagedAdmin", Area: "admin", Group: "partner-administrators", Command: "get-all-customers-managed-admin", - Summary: "Get all customers managed by a partner admin", - Description: "Get all customer organizations managed by given partner admin, in the `managedBy` request parameter. The `managedBy` user typically has the role of a Partner Admin. In case where a Partner Full Admin or Partner Read-Only admin is selected an error like \"The user already has access to all customers managed by their partner organization.\" is shown as a Partner Admin (Full and Read-Only) is able to manage all customers by default. This does not include customers managed through Customer Groups.\n\nThis API can be invoked by Partner Full Admin and Partner Readonly Admin.\nSpecify the `personId` in the `managedBy` parameter in the URI.", - Method: "GET", Path: "/partner/organizations", Host: HostWebex, - Params: []Param{ - {Name: "managedBy", In: InQuery, Flag: "managed-by", Usage: "List customer orgs associated with this person ID."}, - }, -} - -var AdminPartnerAdministratorsGetAllAdminsAssignedCustomer = &Operation{ - ID: "AdminPartnerAdministratorsGetAllAdminsAssignedCustomer", Area: "admin", Group: "partner-administrators", Command: "get-all-admins-assigned-customer", - Summary: "Get all partner admins assigned to a customer", - Description: "For a given customer, get all the partner admins with their role details. This does not include partner admins who have access through Customer Groups.\nThis API can be used by Partner Full Admins.\n\nSpecify the `orgId` in the path parameter.", - Method: "GET", Path: "/partner/organizations/{orgId}/partnerAdmins", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InPath, Flag: "org-id", Usage: "List partner admins associated with this customer org ID."}, - }, -} - -var AdminPartnerAdministratorsAssignAdminCustomer = &Operation{ - ID: "AdminPartnerAdministratorsAssignAdminCustomer", Area: "admin", Group: "partner-administrators", Command: "assign-admin-customer", - Summary: "Assign partner admin to a customer", - Description: "Assign a specific Partner Admin to a customer organization. The partner admin is a user that has the Partner Administrator role.\nOther partner roles, such as Partner Full Administrator are not applicable for this API, since this role manages all customer organizations.\n\nThis API can be used b a Partner Full Admin.\n\nSpecify the `orgId` and the `personId` in the path param.", - Method: "POST", Path: "/partner/organizations/{orgId}/partnerAdmin/{personId}/assign", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InPath, Flag: "org-id", Usage: "The ID of the customer organization."}, - {Name: "personId", In: InPath, Flag: "person-id", Usage: "User ID of the partner admin in the partners org."}, - }, -} - -var AdminPartnerAdministratorsUnassignAdminCustomer = &Operation{ - ID: "AdminPartnerAdministratorsUnassignAdminCustomer", Area: "admin", Group: "partner-administrators", Command: "unassign-admin-customer", - Summary: "Unassign partner admin from a customer", - Description: "Unassign a specific partner admin from a customer organization. Unassigning a customer organization from a partner admin does not remove the role from the user. If a partner admin is also managing the customer organization through a Customer Group, they will continue to have access.\nThis API can be used by Partner Full Admin.\n\nSpecify the `orgId` and the `personId` in the path param.", - Method: "DELETE", Path: "/partner/organizations/{orgId}/partnerAdmin/{personId}/unassign", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InPath, Flag: "org-id", Usage: "The ID of the customer organization."}, - {Name: "personId", In: InPath, Flag: "person-id", Usage: "User ID of the partner admin in the partners org."}, - }, -} - -var AdminPartnerAdministratorsRevokeAllAdminRolesPersonId = &Operation{ - ID: "AdminPartnerAdministratorsRevokeAllAdminRolesPersonId", Area: "admin", Group: "partner-administrators", Command: "revoke-all-admin-roles-person-id", - Summary: "Revoke all partner admin roles for a given person ID", - Description: "Revoke all partner administrator roles from a user, thereby revoking access to Partner Hub and all managed customer organizations.\nThis action does not grant or revoke Control Hub administrator roles (e.g. Full Administrator, User and Device Administrator, etc.).\nThis API can be used by Partner Full Admin.\nSpecify the `personId` in the path param.", - Method: "DELETE", Path: "/partner/organizations/partnerAdmin/{personId}", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "ID of the user whose partner roles needs to be revoked."}, - }, -} - -var AdminPartnerReportsTemplatesList = &Operation{ - ID: "AdminPartnerReportsTemplatesList", Area: "admin", Group: "partner-reports-templates", Command: "list", - Summary: "List Reports", - Description: "Lists all reports previously generated from a given region. Use query parameters to filter the response. The parameters are optional.\n\nTo access this endpoint, you must use an administrator token with `spark-admin:reports_read` and `identity:people_read` scopes.\n\n
CSV reports for Webex suite services are only supported for organizations based in one region per API request. Organizations based in a different region will require a separate request with region specified.
\n\n
When no region is specified, the request defaults to Partner organization's home region.
\n\n
Reports are usually provided in zip format. A content-header application/zip or application/octet-stream does indicate the zip format. There is usually no .zip file extension.
", - Method: "GET", Path: "/partner/reports", Host: HostWebex, - Params: []Param{ - {Name: "service", In: InQuery, Flag: "service", Usage: "List reports which use this service."}, - {Name: "templateId", In: InQuery, Flag: "template-id", Usage: "List reports with this report template ID."}, - {Name: "from", In: InQuery, Flag: "from", Usage: "List reports that were created on or after this date."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "List reports that were created before this date."}, - {Name: "regionId", In: InQuery, Flag: "region-id", Usage: "Data in the report will be from organizations in this region, for example, US, CA, or EU."}, - {Name: "onBehalfOfSubPartnerOrgId", In: InQuery, Flag: "on-behalf-of-sub-partner-org-id", Usage: "The encoded organization ID for the sub partner."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, - TimeRange: TimeISO, -} - -var AdminPartnerReportsTemplatesCreate = &Operation{ - ID: "AdminPartnerReportsTemplatesCreate", Area: "admin", Group: "partner-reports-templates", Command: "create", - Summary: "Create a Report", - Description: "Create a new report. A new report can be created using `templateId` available from the _List Report Templates_ API. For each `templateId`, there are a set of validation rules that need to be followed.\n\nThe `templateId` parameter is a number. However, it is a limitation of developer.webex.com platform that it is passed as a string when you try to test the API from here.\n\nTo access this endpoint, you must use an administrator token with `spark-admin:reports_write` and `identity:people_read` scopes.\n\n**Notes**:\n\n
CSV reports for Webex suite services are only created for organizations in the specified region. Organizations based in a different region will require a separate request with region specified.
\n\n
When no region is specified, the request defaults to Partner organization's home region. A request against a region where there are no organizations will return blank CSV files.
", - Method: "POST", Path: "/partner/reports", Host: HostWebex, - Params: []Param{ - {Name: "onBehalfOfSubPartnerOrgId", In: InQuery, Flag: "on-behalf-of-sub-partner-org-id", Usage: "The encoded organization ID for the sub partner."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "templateId", Flag: "template-id", Type: "int64"}, - {Name: "startDate", Flag: "start-date", Type: "string"}, - {Name: "endDate", Flag: "end-date", Type: "string"}, - {Name: "regionId", Flag: "region-id", Type: "string"}, - }}, -} - -var AdminPartnerReportsTemplatesGet = &Operation{ - ID: "AdminPartnerReportsTemplatesGet", Area: "admin", Group: "partner-reports-templates", Command: "get", - Summary: "Get Report Details", - Description: "Shows details for a report by report ID.\n\nSpecify the report ID in the `reportId` parameter in the URI.\n\nTo access this endpoint, you must use an administrator token with `spark-admin:reports_read` and `identity:people_read` scopes.\n\n**Notes**:\n\n
Reports are usually provided in zip format. A content-header application/zip or application/octet-stream does indicate the zip format. There is usually no .zip file extension.
", - Method: "GET", Path: "/partner/reports/{reportId}", Host: HostWebex, - Params: []Param{ - {Name: "reportId", In: InPath, Flag: "report-id", Usage: "The unique identifier for the report."}, - {Name: "onBehalfOfSubPartnerOrgId", In: InQuery, Flag: "on-behalf-of-sub-partner-org-id", Usage: "The encoded organization ID for the sub partner."}, - }, -} - -var AdminPartnerReportsTemplatesDelete = &Operation{ - ID: "AdminPartnerReportsTemplatesDelete", Area: "admin", Group: "partner-reports-templates", Command: "delete", - Summary: "Delete a Report", - Description: "Remove a report from the system.\n\nSpecify the report ID in the `reportId` parameter in the URI\n\nTo access this endpoint, you must use an administrator token with `spark-admin:reports_write` scope.", - Method: "DELETE", Path: "/partner/reports/{reportId}", Host: HostWebex, - Params: []Param{ - {Name: "reportId", In: InPath, Flag: "report-id", Usage: "The unique identifier for the report."}, - {Name: "onBehalfOfSubPartnerOrgId", In: InQuery, Flag: "on-behalf-of-sub-partner-org-id", Usage: "The encoded organization ID for the sub partner."}, - }, -} - -var AdminPartnerReportsTemplatesList2 = &Operation{ - ID: "AdminPartnerReportsTemplatesList2", Area: "admin", Group: "partner-reports-templates", Command: "list-2", - Summary: "List Report Templates", - Description: "List report templates. Report templates are available for use with the Partner Reports API.\n\nTo access this endpoint, you must use an administrator token with `spark-admin:reports_read` and `identity:people_read` [scopes](/docs/integrations#scopes). The authenticated user must be a Partner full administrator or Partner read-only administrator of the organization.", - Method: "GET", Path: "/partner/reports/templates", Host: HostWebex, - Params: []Param{ - {Name: "onBehalfOfSubPartnerOrgId", In: InQuery, Flag: "on-behalf-of-sub-partner-org-id", Usage: "The encoded organization ID for the sub partner."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var AdminPeopleList = &Operation{ - ID: "AdminPeopleList", Area: "admin", Group: "people", Command: "list", - Summary: "List People", - Description: "List people in your organization. For most users, either the `email` or `displayName` parameter is required. Admin users can omit these fields and list all users in their organization.\n\nResponse properties associated with a user's presence status, such as `status` or `lastActivity`, will only be returned for people within your organization or an organization you manage. Presence information will not be returned if the authenticated user has [disabled status sharing](https://help.webex.com/nkzs6wl/). Calling /people frequently to poll `status` information for a large set of users will quickly lead to `429` errors and throttling of such requests and is therefore discouraged.\n\nAdmin users can include `Webex Calling` (BroadCloud) user details in the response by specifying `callingData` parameter as `true`. Admin users can list all users in a location. Admin users will receive an enriched payload with additional administrative fields like `licenses`,`roles`, `locations` etc. These fields are shown when accessing a user via GET /people/{id}, not when doing a GET /people?id=\n\nLookup by `email` is only supported for people within the same org or where a partner admin relationship is in place.\n\nLookup by `roles` is only supported for Admin users for the people within the same org.\n\nLong result sets will be split into [pages](/docs/basics#pagination).", - Method: "GET", Path: "/people", Host: HostWebex, - Params: []Param{ - {Name: "email", In: InQuery, Flag: "email", Usage: "List people with this email address. For non-admin requests, either this or `displayName` are required. With the exception of partner admins and a managed org relationship, people lookup by email is only available for users in the same org."}, - {Name: "displayName", In: InQuery, Flag: "display-name", Usage: "List people whose name starts with this string. For non-admin requests, either this or email are required."}, - {Name: "id", In: InQuery, Flag: "id", Usage: "List people by ID. Accepts up to 85 person IDs separated by commas. If this parameter is provided then presence information (such as the `lastActivity` or `status` properties) will not be included in the response."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List people in this organization. Only admin users of another organization (such as partners) may use this parameter."}, - {Name: "roles", In: InQuery, Flag: "roles", Usage: "List of roleIds separated by commas."}, - {Name: "callingData", In: InQuery, Flag: "calling-data", Usage: "Include Webex Calling user details in the response."}, - {Name: "locationId", In: InQuery, Flag: "location-id", Usage: "List people present in this location."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the maximum number of people in the response. If `callingData`=true, then `max` will not be more than 100. If `locationId` is specified then `max` will not be more than 50."}, - {Name: "excludeStatus", In: InQuery, Flag: "exclude-status", Usage: "Omit people status/availability to enhance query performance."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, -} - -var AdminPeopleCreatePerson = &Operation{ - ID: "AdminPeopleCreatePerson", Area: "admin", Group: "people", Command: "create-person", - Summary: "Create a Person", - Description: "Create a new user account for a given organization. Only an admin can create a new user account.\n\nAt least one of the following body parameters is required to create a new user: `displayName`, `firstName`, `lastName`.\n\nCurrently, users may have only one email address associated with their account. The `emails` parameter is an array, which accepts multiple values to allow for future expansion, but currently only one email address will be used for the new user.\n\nAdmin users can include `Webex calling` (BroadCloud) user details in the response by specifying `callingData` parameter as true. It may happen that the POST request with calling data returns a 400 status, but the person was created still. One way to get into this state is if an invalid phone number is assigned to a user. The people API aggregates calls to several other microservices, and one may have failed. A best practice is to check if the user exists before retrying. This can be done with the user's email address and a GET /people.\n\nWhen doing attendee management, append `#attendee` to the `siteUrl` parameter (e.g. `mysite.webex.com#attendee`) to make the new user an attendee for a site.\n\n**NOTES**:\n\n* For creating a `Webex Calling` user, you must provide `phoneNumbers` or `extension`, `locationId`, and `licenses` string in the same request.\n\n* `SipAddresses` are asigned via an asynchronous process. This means that the POST response may not show the SIPAddresses immediately. Instead you can verify them with a separate GET to /people, after they were newly configured.\n\n* When assigning multiple licenses in a single request, the system will assign all valid and available licenses. If any requested licenses cannot be assigned, the operation will continue with the remaining licenses. As a result, it is possible that not all requested licenses are assigned to the user.", - Method: "POST", Path: "/people", Host: HostWebex, - Params: []Param{ - {Name: "callingData", In: InQuery, Flag: "calling-data", Usage: "Include Webex Calling user details in the response."}, - {Name: "minResponse", In: InQuery, Flag: "min-response", Usage: "Set to `true` to improve performance by omitting person details and returning only the ID in the response when successful. If unsuccessful the response will have optional error details."}, - }, - Body: &Body{}, -} - -var AdminPeopleGetPerson = &Operation{ - ID: "AdminPeopleGetPerson", Area: "admin", Group: "people", Command: "get-person", - Summary: "Get Person Details", - Description: "Shows details for a person, by ID.\n\nResponse properties associated with a user's presence status, such as `status` or `lastActivity`, will only be displayed for people within your organization or an organization you manage. Presence information will not be shown if the authenticated user has [disabled status sharing](https://help.webex.com/nkzs6wl/).\n\nAdmin users can include `Webex Calling` (BroadCloud) user details in the response by specifying `callingData` parameter as `true`.\n\nSpecify the person ID in the `personId` parameter in the URI.", - Method: "GET", Path: "/people/{personId}", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - {Name: "callingData", In: InQuery, Flag: "calling-data", Usage: "Include Webex Calling user details in the response."}, - }, -} - -var AdminPeopleUpdatePerson = &Operation{ - ID: "AdminPeopleUpdatePerson", Area: "admin", Group: "people", Command: "update-person", - Summary: "Update a Person", - Description: "Update details for a person, by ID.\n\nSpecify the person ID in the `personId` parameter in the URI. Only an admin can update a person details.\n\nInclude all details for the person. This action expects all user details to be present in the request. A common approach is to first [GET the person's details](/docs/api/v1/people/get-person-details), make changes, then PUT both the changed and unchanged values.\n\nAdmin users can include `Webex Calling` (BroadCloud) user details in the response by specifying `callingData` parameter as true.\n\nWhen doing attendee management, to update a user from host role to an attendee for a site append `#attendee` to the respective `siteUrl` and remove the meeting host license for this site from the license array.\nTo update a person from an attendee role to a host for a site, add the meeting license for this site in the meeting array, and remove that site from the `siteurl` parameter.\n\nTo remove the attendee privilege for a user on a meeting site, remove the `sitename#attendee` from the `siteUrl`s array. The `showAllTypes` parameter must be set to `true`.\n\n**NOTE**:\n\n* When assigning a Webex Calling license, either a telephone number or extension must already be assigned to the person or provided in the request payload.\n\n* When `callingData` is set to `true`, a Webex Calling license must be included in the `licenses` array.\n\n* The `locationId` can only be set when assigning a calling license to a user. It cannot be changed if a user is already an existing calling user.\n\n* The `extension` field should be used to update the Webex Calling extension for a person. The extension value should not include the location routing prefix. The `work_extension` type in the `phoneNumbers` object as seen in the response payload of [List People](/docs/api/v1/people/list-people) or [Get Person Details](/docs/api/v1/people/get-person-details), cannot be used to set the Webex Calling extension for a person.\n\n* When updating a user with multiple email addresses using a PUT request, ensure that the primary email address is listed first in the array. Note that the order of email addresses returned by a GET request is not guaranteed..\n\n* The People API is a combination of several microservices, each responsible for specific attributes of a person. As a result, a PUT request that returns an error response code may still have altered some values of the person's data. Therefore, it is recommended to perform a GET request after encountering an error to verify the current state of the resource. \n\n* Some licenses are implicitly assigned by the system and cannot be admin controlled. They are necessary for the baseline function of the Webex system. If you get an error about implicitly assigned licensed that cannot be removed, please ensure you have the corresponding license in your PUT request.\n\n* When assigning multiple licenses in a single request, the system will assign all valid and available licenses. If any requested licenses cannot be assigned, the operation will continue with the remaining licenses. As a result, it is possible that not all requested licenses are assigned to the user.", - Method: "PUT", Path: "/people/{personId}", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - {Name: "callingData", In: InQuery, Flag: "calling-data", Usage: "Include Webex Calling user details in the response."}, - {Name: "showAllTypes", In: InQuery, Flag: "show-all-types", Usage: "Include additional user data like `#attendee` role."}, - {Name: "minResponse", In: InQuery, Flag: "min-response", Usage: "Set to `true` to improve performance by omitting person details in the response. If unsuccessful the response will have optional error details."}, - }, - Body: &Body{}, -} - -var AdminPeopleDeletePerson = &Operation{ - ID: "AdminPeopleDeletePerson", Area: "admin", Group: "people", Command: "delete-person", - Summary: "Delete a Person", - Description: "Remove a person from the system.\n\n**Required Administrator Roles:**\n\nThe following administrators have permission to use this API:\n\n**Customer Organization:**\n- Full administrator\n- User administrator\n\n**Partner/External Access:**\n- External full administrator\n\n**Note:** External read-only administrators, provisioning administrators, and device administrators cannot delete users.\n\nSpecify the person ID in the `personId` parameter in the URI.", - Method: "DELETE", Path: "/people/{personId}", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - }, -} - -var AdminPeopleGetMyOwn = &Operation{ - ID: "AdminPeopleGetMyOwn", Area: "admin", Group: "people", Command: "get-my-own", - Summary: "Get My Own Details", - Description: "Get profile details for the authenticated user. This is the same as GET `/people/{personId}` using the Person ID associated with your Auth token.\n\nAdmin users can include `Webex Calling` (BroadCloud) user details in the response by specifying `callingData` parameter as true.", - Method: "GET", Path: "/people/me", Host: HostWebex, - Params: []Param{ - {Name: "callingData", In: InQuery, Flag: "calling-data", Usage: "Include Webex Calling user details in the response."}, - }, -} - -var AdminRecordingReportListAuditSummaries = &Operation{ - ID: "AdminRecordingReportListAuditSummaries", Area: "admin", Group: "recording-report", Command: "list-audit-summaries", - Summary: "List of Recording Audit Report Summaries", - Description: "Lists of recording audit report summaries. You can specify a date range and the maximum number of recording audit report summaries to return.\n\nOnly recording audit report summaries of meetings hosted by or shared with the authenticated user will be listed.\n\nThe list returned is sorted in descending order by the date and time that the recordings were created.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n* If `siteUrl` is specified, the recording audit report summaries of the specified site will be listed; otherwise, recording audit report summaries of the user's preferred site will be listed. All available Webex sites and the preferred site of the user can be retrieved by the `Get Site List` API.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.", - Method: "GET", Path: "/recordingReport/accessSummary", Host: HostWebex, - Params: []Param{ - {Name: "max", In: InQuery, Flag: "max", Usage: "Maximum number of recording audit report summaries to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`."}, - {Name: "from", In: InQuery, Flag: "from", Usage: "Starting date and time (inclusive) for recording audit report summaries to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`. Please note that the interval between `to` and `from` cannot exceed 90 days and the interval between the current time and `from` cannot exceed 365 days."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "Ending date and time (exclusive) for recording audit report summaries to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`. Please note that the interval between `to` and `from` cannot exceed 90 days and the interval between the current time and `from` cannot exceed 365 days."}, - {Name: "hostEmail", In: InQuery, Flag: "host-email", Usage: "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin on-behalf-of scopes. If set, the admin may specify the email of a user in a site they manage and the API will return recording audit report summaries of that user. If a special value of `all` is set for `hostEmail`, the admin can list recording audit report summaries of all users on the target site, not of a single user."}, - {Name: "siteUrl", In: InQuery, Flag: "site-url", Usage: "URL of the Webex site which the API lists recording audit report summaries from. If not specified, the API lists summary audit report for recordings from the user's preferred site. All available Webex sites and the preferred site of the user can be retrieved by `Get Site List` API."}, - {Name: "timezone", In: InHeader, Flag: "timezone", Usage: "e.g. UTC"}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, - TimeRange: TimeISO, -} - -var AdminRecordingReportGetAudit = &Operation{ - ID: "AdminRecordingReportGetAudit", Area: "admin", Group: "recording-report", Command: "get-audit", - Summary: "Get Recording Audit Report Details", - Description: "Retrieves details for a recording audit report with a specified recording ID.\n\nOnly recording audit report details of meetings hosted by or shared with the authenticated user may be retrieved.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.", - Method: "GET", Path: "/recordingReport/accessDetail", Host: HostWebex, - Params: []Param{ - {Name: "recordingId", In: InQuery, Flag: "recording-id", Usage: "A unique identifier for the recording."}, - {Name: "hostEmail", In: InQuery, Flag: "host-email", Usage: "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin on-behalf-of scopes. If set, the admin may specify the email of a user in a site they manage and the API will return recording details of that user."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Maximum number of recording audit report details to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`."}, - {Name: "timezone", In: InHeader, Flag: "timezone", Usage: "e.g. UTC"}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, -} - -var AdminRecordingReportListMeetingArchiveSummaries = &Operation{ - ID: "AdminRecordingReportListMeetingArchiveSummaries", Area: "admin", Group: "recording-report", Command: "list-meeting-archive-summaries", - Summary: "List Meeting Archive Summaries", - Description: "Lists of meeting archive summaries. You can specify a date range and the maximum number of meeting archive summaries to return.\n\nMeeting archive summaries are only available to full administrators, not even the meeting host.\n\nThe list returned is sorted in descending order by the date and time that the archives were created.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n* If `siteUrl` is specified, the meeting archive summaries of the specified site will be listed; otherwise, meeting archive summaries of the user's preferred site will be listed. All available Webex sites and the preferred site of the user can be retrieved by the `Get Site List` API.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.", - Method: "GET", Path: "/recordingReport/meetingArchiveSummaries", Host: HostWebex, - Params: []Param{ - {Name: "max", In: InQuery, Flag: "max", Usage: "Maximum number of meeting archive summaries to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`."}, - {Name: "from", In: InQuery, Flag: "from", Usage: "Starting date and time (inclusive) for meeting archive summaries to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`. Please note that the interval between `to` and `from` cannot exceed 30 days."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "Ending date and time (exclusive) for meeting archive summaries to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`. Please note that the interval between `to` and `from` cannot exceed 30 days."}, - {Name: "siteUrl", In: InQuery, Flag: "site-url", Usage: "URL of the Webex site which the API lists meeting archive summaries from. If not specified, the API lists meeting archive summaries for recordings from the user's preferred site. All available Webex sites and the preferred site of the user can be retrieved by `Get Site List` API."}, - {Name: "timezone", In: InHeader, Flag: "timezone", Usage: "e.g. UTC"}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, - TimeRange: TimeISO, -} - -var AdminRecordingReportGetMeetingArchive = &Operation{ - ID: "AdminRecordingReportGetMeetingArchive", Area: "admin", Group: "recording-report", Command: "get-meeting-archive", - Summary: "Get Meeting Archive Details", - Description: "Retrieves details for a meeting archive report with a specified archive ID, which contains recording metadata.\n\nMeeting archive details are only available to full administrators, not even the meeting host.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.", - Method: "GET", Path: "/recordingReport/meetingArchives/{archiveId}", Host: HostWebex, - Params: []Param{ - {Name: "archiveId", In: InPath, Flag: "archive-id", Usage: "A unique identifier for the meeting archive summary."}, - {Name: "timezone", In: InHeader, Flag: "timezone", Usage: "e.g. UTC"}, - }, -} - -var AdminRecordingsList = &Operation{ - ID: "AdminRecordingsList", Area: "admin", Group: "recordings", Command: "list", - Summary: "List Recordings", - Description: "
This API is still supported and behaves the same as before, but will be deprecated in the future. Due to limited support for special characters when filtering recordings by `topic`, it is recommended to use the new [Query Recordings](/docs/api/v1/recordings/query-recordings) API instead.
\n\nLists recordings. You can specify a date range, a parent meeting ID, and the maximum number of recordings to return.\n\nOnly recordings of meetings hosted by or shared with the authenticated user will be listed.\n\nThe list returned is sorted in descending order by the date and time that the recordings were created.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n* If `meetingId` is specified, only recordings associated with the specified meeting will be listed. **NOTE**: when `meetingId` is specified, parameter of `siteUrl` will be ignored.\n\n* If `siteUrl` is specified, recordings of the specified site will be listed; otherwise, the API lists recordings of all the user's sites. All available Webex sites and preferred site of the user can be retrieved by [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\n#### Request Header\n\n* `timezone`: *[Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.*", - Method: "GET", Path: "/recordings", Host: HostWebex, - Params: []Param{ - {Name: "max", In: InQuery, Flag: "max", Usage: "Maximum number of recordings to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`."}, - {Name: "from", In: InQuery, Flag: "from", Usage: "Starting date and time (inclusive) for recordings to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "Ending date and time (exclusive) for List recordings to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`."}, - {Name: "meetingId", In: InQuery, Flag: "meeting-id", Usage: "Unique identifier for the parent meeting series, scheduled meeting, or meeting instance for which recordings are being requested. If a meeting series ID is specified, the operation returns an array of recordings for the specified meeting series. If a scheduled meeting ID is specified, the operation returns an array of recordings for the specified scheduled meeting. If a meeting instance ID is specified, the operation returns an array of recordings for the specified meeting instance. If no ID is specified, the operation returns an array of recordings for all meetings of the current user. When `meetingId` is specified, the `siteUrl` parameter is ignored."}, - {Name: "hostEmail", In: InQuery, Flag: "host-email", Usage: "Email address for the meeting host. This parameter is only used if the user or application calling the API has the required [admin-level meeting scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will return recordings of that user."}, - {Name: "siteUrl", In: InQuery, Flag: "site-url", Usage: "URL of the Webex site from which the API lists recordings. If not specified, the API lists recordings from all of a user's sites. All available Webex sites and the preferred site of the user can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API."}, - {Name: "integrationTag", In: InQuery, Flag: "integration-tag", Usage: "External key of the parent meeting created by an integration application. This parameter is used by the integration application to query recordings by a key in its own domain, such as a Zendesk ticket ID, a Jira ID, a Salesforce Opportunity ID, etc. An integrationTag created by one client cannot be accessed or used as a filtering parameter by another client. For example, if a meeting has an `integrationTag` of \"Sales\" which is created by the client behind the developer portal, then this integrationTag can't be accessed on the meeting or its recordings by another client. Neither can it be used to filter meetings or recordings by a client other than the one that created the integrationTag of \"Sales\"."}, - {Name: "topic", In: InQuery, Flag: "topic", Usage: "Recording's topic. If specified, the API filters recordings by topic in a case-insensitive manner."}, - {Name: "format", In: InQuery, Flag: "format", Usage: "Recording's file format. If specified, the API filters recordings by format."}, - {Name: "serviceType", In: InQuery, Flag: "service-type", Usage: "The service type for recordings. If this item is specified, the API filters recordings by service-type."}, - {Name: "status", In: InQuery, Flag: "status", Usage: "Recording's status. If not specified or `available`, retrieves recordings that are available. Otherwise, if specified as `deleted`, retrieves recordings that have been moved into the recycle bin. The `purged` status only applies if the user calling the API is a Compliance Officer and `meetingId` is specified."}, - {Name: "timezone", In: InHeader, Flag: "timezone", Usage: "e.g. UTC"}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, - TimeRange: TimeISO, -} - -var AdminRecordingsListAdminComplianceOfficer = &Operation{ - ID: "AdminRecordingsListAdminComplianceOfficer", Area: "admin", Group: "recordings", Command: "list-admin-compliance-officer", - Summary: "List Recordings For an Admin or Compliance Officer", - Description: "
This API is still supported and behaves the same as before, but will be deprecated in the future. Due to limited support for special characters when filtering recordings by `topic`, it is recommended to use the new [Query Recordings For an Admin or Compliance Officer](/docs/api/v1/recordings/query-recordings-for-an-admin-or-compliance-officer) API instead.
\n\nList recordings for an admin or compliance officer. You can specify a date range, a parent meeting ID, and the maximum number of recordings to return.\n\nThe list returned is sorted in descending order by the date and time that the recordings were created.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n* If `meetingId` is specified, only recordings associated with the specified meeting will be listed. Please note that when `meetingId` is specified, parameters of `siteUrl`, `from`, and `to` will be ignored.\n\n* If `siteUrl` is specified, all the recordings on the specified site are listed; otherwise, all the recordings on the admin user's or compliance officer's preferred site are listed. All the available Webex sites and the admin user's or compliance officer's preferred site can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\n#### Request Header\n\n* `timezone`: *[Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.*", - Method: "GET", Path: "/admin/recordings", Host: HostWebex, - Params: []Param{ - {Name: "max", In: InQuery, Flag: "max", Usage: "Maximum number of recordings to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`."}, - {Name: "from", In: InQuery, Flag: "from", Usage: "Starting date and time (inclusive) for recordings to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`. The interval between `from` and `to` must be within 30 days. If `to` is specified, the default value for `from` is `to` minus 7 days. If `to` is also not specified, the default value for `from` is current date and time minus 7 days."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "Ending date and time (exclusive) for List recordings to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`. The interval between `from` and `to` must be within 30 days. If `from` is specified, the default value for `to` is `from` plus 7 days. If `from` is also not specified, the default value for `to` is the current date and time."}, - {Name: "meetingId", In: InQuery, Flag: "meeting-id", Usage: "Unique identifier for the parent meeting series, scheduled meeting, or meeting instance for which recordings are being requested. If a meeting series ID is specified, the operation returns an array of recordings for the specified meeting series. If a scheduled meeting ID is specified, the operation returns an array of recordings for the specified scheduled meeting. If a meeting instance ID is specified, the operation returns an array of recordings for the specified meeting instance. If not specified, the operation returns an array of recordings for all the current user's meetings. When `meetingId` is specified, the `siteUrl` parameter is ignored."}, - {Name: "siteUrl", In: InQuery, Flag: "site-url", Usage: "URL of the Webex site which the API lists recordings from. If not specified, the API lists recordings from user's preferred site. All available Webex sites and preferred site of the user can be retrieved by [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API."}, - {Name: "integrationTag", In: InQuery, Flag: "integration-tag", Usage: "External key of the parent meeting created by an integration application. This parameter is used by the integration application to query recordings by a key in its own domain such as a Zendesk ticket ID, a Jira ID, a Salesforce Opportunity ID, etc. An integrationTag created by one client cannot be accessed or used as a filtering parameter by another client. For example, if a meeting has an `integrationTag` of \"Sales\" which is created by the client behind the developer portal, then this integrationTag can't be accessed on the meeting or its recordings by another client. Neither can it be used to filter meetings or recordings by a client other than the one that created the integrationTag of \"Sales\"."}, - {Name: "topic", In: InQuery, Flag: "topic", Usage: "Recording topic. If specified, the API filters recordings by topic in a case-insensitive manner."}, - {Name: "format", In: InQuery, Flag: "format", Usage: "Recording's file format. If specified, the API filters recordings by format."}, - {Name: "serviceType", In: InQuery, Flag: "service-type", Usage: "The service type for recordings. If specified, the API filters recordings by service type."}, - {Name: "status", In: InQuery, Flag: "status", Usage: "Recording's status. If not specified or `available`, retrieves recordings that are available. If specified as `deleted`, retrieves recordings that have been moved to the recycle bin. Otherwise, if specified as `purged`, retrieves recordings that have been purged from the recycle bin."}, - {Name: "timezone", In: InHeader, Flag: "timezone", Usage: "e.g. UTC"}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, - TimeRange: TimeISO, -} - -var AdminRecordingsDeleteAdmin = &Operation{ - ID: "AdminRecordingsDeleteAdmin", Area: "admin", Group: "recordings", Command: "delete-admin", - Summary: "Delete a Recording By an Admin", - Description: "Removes a recording with a specified recording ID by an admin. The deleted recording cannot be recovered. It will be inaccessible to regular users (host, attendees and shared) or an admin, but it will be still available to the Compliance Officer.\n\nAny recording on a site which is managed by the admin can be deleted by him.\n\nThe `temporaryDirectDownloadLinks` of a recording which are retrieved by the [Get Recording Details](/docs/api/v1/recordings/get-recording-details) API are still available to Compliance Officers even if the recording has been deleted.", - Method: "DELETE", Path: "/admin/recordings/{recordingId}", Host: HostWebex, - Params: []Param{ - {Name: "recordingId", In: InPath, Flag: "recording-id", Usage: "A unique identifier for the recording."}, - }, -} - -var AdminRecordingsGet = &Operation{ - ID: "AdminRecordingsGet", Area: "admin", Group: "recordings", Command: "get", - Summary: "Get Recording Details", - Description: "Retrieves details for a recording with a specified recording ID.\n\nOnly recordings of meetings hosted by or shared with the authenticated user may be retrieved.\n\n#### Request Header\n\n* `timezone`: *[Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.*\n\n* `siteUrl`: Optional request header parameter. If specified, retrieve the recording details from that site; otherwise, retrieve it from the site which is implied based on the recording ID.", - Method: "GET", Path: "/recordings/{recordingId}", Host: HostWebex, - Params: []Param{ - {Name: "recordingId", In: InPath, Flag: "recording-id", Usage: "A unique identifier for the recording."}, - {Name: "hostEmail", In: InQuery, Flag: "host-email", Usage: "Email address for the meeting host. Only used if the user or application calling the API has required [admin-level meeting scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage, and the API will return recording details of that user."}, - {Name: "timezone", In: InHeader, Flag: "timezone", Usage: "e.g. UTC"}, - {Name: "siteUrl", In: InHeader, Flag: "site-url", Usage: "e.g. example.webex.com"}, - }, -} - -var AdminRecordingsDelete = &Operation{ - ID: "AdminRecordingsDelete", Area: "admin", Group: "recordings", Command: "delete", - Summary: "Delete a Recording", - Description: "Removes a recording with a specified recording ID. The deleted recording cannot be recovered. If a Compliance Officer deletes another user's recording, the recording will be inaccessible to regular users (host, attendees and shared), but will be still available to the Compliance Officer.\n\nOnly recordings of meetings hosted by the authenticated user can be deleted.\n\nThe `temporaryDirectDownloadLinks` of a recording which are retrieved by the [Get Recording Details](/docs/api/v1/recordings/get-recording-details) API are still available to Compliance Officers even if the recording has been deleted.", - Method: "DELETE", Path: "/recordings/{recordingId}", Host: HostWebex, - Params: []Param{ - {Name: "recordingId", In: InPath, Flag: "recording-id", Usage: "A unique identifier for the recording."}, - {Name: "hostEmail", In: InQuery, Flag: "host-email", Usage: "Email address for the meeting host. Only used if the user or application calling the API has the required [admin-level meeting scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will delete a recording of that user."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "reason", Flag: "reason", Type: "string"}, - {Name: "comment", Flag: "comment", Type: "string"}, - }}, -} - -var AdminRecordingsMoveRecycleBin = &Operation{ - ID: "AdminRecordingsMoveRecycleBin", Area: "admin", Group: "recordings", Command: "move-recycle-bin", - Summary: "Move Recordings into the Recycle Bin", - Description: "Move recordings into the recycle bin with recording IDs. Recordings in the recycle bin can be recovered by [Restore Recordings from Recycle Bin](/docs/api/v1/recordings/restore-recordings-from-recycle-bin) API. If you'd like to empty recordings from the recycle bin, you can use [Purge Recordings from Recycle Bin](/docs/api/v1/recordings/purge-recordings-from-recycle-bin) API to purge all or some of them.\n\nOnly recordings of meetings hosted by the authenticated user can be moved into the recycle bin.\n\n* `recordingIds` should not be empty and its maximum size is `100`.\n\n* All the IDs of `recordingIds` should belong to the site of `siteUrl` or the user's preferred site if `siteUrl` is not specified.", - Method: "POST", Path: "/recordings/softDelete", Host: HostWebex, - Params: []Param{ - {Name: "hostEmail", In: InQuery, Flag: "host-email", Usage: "Email address for the meeting host. Only used if the user or application calling the API has the required [admin-level meeting scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will move recordings into recycle bin of that user"}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "recordingIds", Flag: "recording-ids", Type: "[]string"}, - {Name: "siteUrl", Flag: "site-url", Type: "string"}, - }}, -} - -var AdminRecordingsRestoreRecycleBin = &Operation{ - ID: "AdminRecordingsRestoreRecycleBin", Area: "admin", Group: "recordings", Command: "restore-recycle-bin", - Summary: "Restore Recordings from Recycle Bin", - Description: "Restore all or some recordings from the recycle bin. Only recordings of meetings hosted by the authenticated user can be restored from recycle bin.\n\n* If `restoreAll` is `true`, `recordingIds` should be empty.\n\n* If `restoreAll` is `false`, `recordingIds` should not be empty and its maximum size is `100`.\n\n* All the IDs of `recordingIds` should belong to the site of `siteUrl` or the user's preferred site if `siteUrl` is not specified.", - Method: "POST", Path: "/recordings/restore", Host: HostWebex, - Params: []Param{ - {Name: "hostEmail", In: InQuery, Flag: "host-email", Usage: "Email address for the meeting host. This parameter is only used if the user or application calling the API has the required [admin-level meeting scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will restore recordings of that user."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "restoreAll", Flag: "restore-all", Type: "bool"}, - {Name: "recordingIds", Flag: "recording-ids", Type: "[]string"}, - {Name: "siteUrl", Flag: "site-url", Type: "string"}, - }}, -} - -var AdminRecordingsPurgeRecycleBin = &Operation{ - ID: "AdminRecordingsPurgeRecycleBin", Area: "admin", Group: "recordings", Command: "purge-recycle-bin", - Summary: "Purge Recordings from Recycle Bin", - Description: "Purge recordings from recycle bin with recording IDs or purge all the recordings that are in the recycle bin.\n\nOnly recordings of meetings hosted by the authenticated user can be purged from recycle bin.\n\n* If `purgeAll` is `true`, `recordingIds` should be empty.\n\n* If `purgeAll` is `false`, `recordingIds` should not be empty and its maximum size is `100`.\n\n* All the IDs of `recordingIds` should belong to the site of `siteUrl` or the user's preferred site if `siteUrl` is not specified.", - Method: "POST", Path: "/recordings/purge", Host: HostWebex, - Params: []Param{ - {Name: "hostEmail", In: InQuery, Flag: "host-email", Usage: "Email address for the meeting host. Only used if the user or application calling the API has the required [admin-level meeting scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will purge recordings from recycle bin of that user."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "purgeAll", Flag: "purge-all", Type: "bool"}, - {Name: "recordingIds", Flag: "recording-ids", Type: "[]string"}, - {Name: "siteUrl", Flag: "site-url", Type: "string"}, - }}, -} - -var AdminRecordingsShare = &Operation{ - ID: "AdminRecordingsShare", Area: "admin", Group: "recordings", Command: "share", - Summary: "Share a Recording", - Description: "Share or unshare a recording with other users by recording ID and email addresses.", - Method: "POST", Path: "/recordings/{recordingId}/accessList", Host: HostWebex, - Params: []Param{ - {Name: "recordingId", In: InPath, Flag: "recording-id", Usage: "A unique identifier for the recording."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "hostEmail", Flag: "host-email", Type: "string"}, - {Name: "addEmails", Flag: "add-emails", Type: "[]string"}, - {Name: "removeEmails", Flag: "remove-emails", Type: "[]string"}, - {Name: "sendEmail", Flag: "send-email", Type: "bool"}, - }}, -} - -var AdminRecordingsListGroup = &Operation{ - ID: "AdminRecordingsListGroup", Area: "admin", Group: "recordings", Command: "list-group", - Summary: "List Group Recordings", - Description: "List group recordings for a service app which has group recording access. You can specify a date range, the maximum number of recordings to return, and `personId` or `hostEmail` of whom the recordings will be retrieved.\n\n* The list returned is sorted in descending order by the date and time that the recordings were created.\n\n* Only recordings which are in the `available` status and not shared by others can be listed. Those in the `deleted` or `purged` status or shared by others can't be listed.\n\n* Long result sets are split into [pages](/docs/basics#pagination).\n\n* If `siteUrl` is specified, the API lists group recordings on the specified site; otherwise, the API lists group recordings on all the sites managed by the service app. All the sites managed by a service app can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\n* One of the `personId` parameter and `hostEmail` header must be specified so that only recordings of meetings hosted by the person of `personId` or `hostEmail` will be returned.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.\n\n* `hostEmail`: Email of the user whose recordings will be retrieved. The `hostEmail` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified.", - Method: "GET", Path: "/group/recordings", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InQuery, Flag: "person-id", Usage: "Person ID of the user whose recordings will be retrieved. The person ID can be retrieved from the [People APIs](/docs/api/v1/people), e.g. [Lit People](/docs/api/v1/people/list-people). Note that a person ID retrieved from the People APIs is a Base64-encoded string, e.g. `Y2lzY29zcGFyazovL3VzL1BFT1BMRS9kNDdiMmU3ZC01ZTBmLTRmNjktYWVmNC1lNGZmOTBhZWE3Yzk`. The person ID in the raw UUID format which is the last part of the Base64-decoded string, e.g. `d47b2e7d-5e0f-4f69-aef4-e4ff90aea7c9`, is also supported. The `personId` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Maximum number of recordings to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`."}, - {Name: "from", In: InQuery, Flag: "from", Usage: "Starting date and time (inclusive) for recordings to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`. The interval between `from` and `to` must be within 30 days."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "Ending date and time (exclusive) for List recordings to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`. The interval between `from` and `to` must be within 30 days."}, - {Name: "siteUrl", In: InQuery, Flag: "site-url", Usage: "URL of the Webex site which the API lists recordings from. If not specified, the API lists recordings from user's preferred site. All available Webex sites and preferred site of the user can be retrieved by [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API."}, - {Name: "integrationTag", In: InQuery, Flag: "integration-tag", Usage: "External key of the parent meeting created by an integration application. This parameter is used by the integration application to query recordings by a key in its own domain such as a Zendesk ticket ID, a Jira ID, a Salesforce Opportunity ID, etc. An integrationTag created by one client cannot be accessed or used as a filtering parameter by another client. For example, if a meeting has an `integrationTag` of \"Sales\" which is created by the client behind the developer portal, then this integrationTag can't be accessed on the meeting or its recordings by another client. Neither can it be used to filter meetings or recordings by a client other than the one that created the integrationTag of \"Sales\"."}, - {Name: "format", In: InQuery, Flag: "format", Usage: "Recording's file format. If specified, the API filters recordings by format."}, - {Name: "serviceType", In: InQuery, Flag: "service-type", Usage: "The service type for recordings. If specified, the API filters recordings by service type."}, - {Name: "timezone", In: InHeader, Flag: "timezone", Usage: "e.g. UTC"}, - {Name: "hostEmail", In: InHeader, Flag: "host-email", Usage: "Email of the user whose recordings will be retrieved. The `hostEmail` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, - TimeRange: TimeISO, -} - -var AdminRecordingsGetGroup = &Operation{ - ID: "AdminRecordingsGetGroup", Area: "admin", Group: "recordings", Command: "get-group", - Summary: "Get Group Recording Details", - Description: "Retrieves details for a group recording for a service app which has group recording access.\n\n* Only recordings which are in the `available` status and not shared by others can be listed. Those in the `deleted` or `purged` status or shared by others can't be listed.\n\n* One of the `personId` parameter and `hostEmail` header must be specified so that only recordings of meetings hosted by the person of `personId` or `hostEmail` will be returned.\n\n#### Request Header\n\n* `timezone`: *[Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.*\n\n* `hostEmail`: Email of the user whose recordings will be retrieved. The `hostEmail` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified.", - Method: "GET", Path: "/group/recordings/{recordingId}", Host: HostWebex, - Params: []Param{ - {Name: "recordingId", In: InPath, Flag: "recording-id", Usage: "A unique identifier for the recording."}, - {Name: "personId", In: InQuery, Flag: "person-id", Usage: "Person ID of the user whose recordings will be retrieved. The person ID can be retrieved from the [People APIs](/docs/api/v1/people), e.g. [Lit People](/docs/api/v1/people/list-people). Note that a person ID retrieved from the People APIs is a Base64-encoded string, e.g. `Y2lzY29zcGFyazovL3VzL1BFT1BMRS9kNDdiMmU3ZC01ZTBmLTRmNjktYWVmNC1lNGZmOTBhZWE3Yzk`. The person ID in the raw UUID format which is the last part of the Base64-decoded string, e.g. `d47b2e7d-5e0f-4f69-aef4-e4ff90aea7c9`, is also supported. The `personId` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified."}, - {Name: "timezone", In: InHeader, Flag: "timezone", Usage: "e.g. UTC"}, - {Name: "hostEmail", In: InHeader, Flag: "host-email", Usage: "Email of the user whose recordings will be retrieved. The `hostEmail` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified."}, - }, -} - -var AdminRecordingsShareLink = &Operation{ - ID: "AdminRecordingsShareLink", Area: "admin", Group: "recordings", Command: "share-link", - Summary: "Share a Recording Link", - Description: "Share or unshare a recording with other users by recording link and email addresses.", - Method: "POST", Path: "/recordings/accessList", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "hostEmail", Flag: "host-email", Type: "string"}, - {Name: "webShareLink", Flag: "web-share-link", Type: "string"}, - {Name: "addEmails", Flag: "add-emails", Type: "[]string"}, - {Name: "removeEmails", Flag: "remove-emails", Type: "[]string"}, - {Name: "sendEmail", Flag: "send-email", Type: "bool"}, - }}, -} - -var AdminRecordingsQuery = &Operation{ - ID: "AdminRecordingsQuery", Area: "admin", Group: "recordings", Command: "query", - Summary: "Query Recordings", - Description: "Queries recordings with filters in the request body. You can specify a date range, a parent meeting ID, the maximum number of recordings to return, and additional filters such as siteUrl, integrationTag, hostEmail, topic, format, serviceType, and status.\n\nOnly recordings of meetings hosted by or shared with the authenticated user will be listed.\n\nThe list returned is sorted in descending order by the date and time that the recordings were created.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n* If `meetingId` is specified, only recordings associated with the specified meeting will be listed. **NOTE**: when `meetingId` is specified, parameter of `siteUrl` will be ignored.\n\n* If `siteUrl` is specified, recordings of the specified site will be listed; otherwise, the API lists recordings of all the user's sites. All available Webex sites and preferred site of the user can be retrieved by [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\n#### Request Header\n\n* `timezone`: *[Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.*", - Method: "POST", Path: "/recordings/query", Host: HostWebex, - Params: []Param{ - {Name: "timezone", In: InHeader, Flag: "timezone", Usage: "e.g. UTC"}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "max", Flag: "max", Type: "int64"}, - {Name: "from", Flag: "from", Type: "string"}, - {Name: "to", Flag: "to", Type: "string"}, - {Name: "meetingId", Flag: "meeting-id", Type: "string"}, - {Name: "siteUrl", Flag: "site-url", Type: "string"}, - {Name: "integrationTag", Flag: "integration-tag", Type: "string"}, - {Name: "hostEmail", Flag: "host-email", Type: "string"}, - {Name: "topic", Flag: "topic", Type: "string"}, - {Name: "format", Flag: "format", Type: "string"}, - {Name: "serviceType", Flag: "service-type", Type: "string"}, - {Name: "status", Flag: "status", Type: "string"}, - }}, -} - -var AdminRecordingsQueryAdminComplianceOfficer = &Operation{ - ID: "AdminRecordingsQueryAdminComplianceOfficer", Area: "admin", Group: "recordings", Command: "query-admin-compliance-officer", - Summary: "Query Recordings For an Admin or Compliance Officer", - Description: "Queries recordings for an admin or compliance officer with filters in the request body. You can specify a date range, a parent meeting ID, the maximum number of recordings to return, and additional filters such as siteUrl, integrationTag, topic, format, serviceType, and status.\n\nThe list returned is sorted in descending order by the date and time that the recordings were created.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n* If `meetingId` is specified, only recordings associated with the specified meeting will be listed. Please note that when `meetingId` is specified, parameters of `siteUrl`, `from`, and `to` will be ignored.\n\n* If `siteUrl` is specified, all the recordings on the specified site are listed; otherwise, all the recordings on the admin user's or compliance officer's preferred site are listed. All the available Webex sites and the admin user's or compliance officer's preferred site can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\n#### Request Header\n\n* `timezone`: *[Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.*", - Method: "POST", Path: "/admin/recordings/query", Host: HostWebex, - Params: []Param{ - {Name: "timezone", In: InHeader, Flag: "timezone", Usage: "e.g. UTC"}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "max", Flag: "max", Type: "int64"}, - {Name: "from", Flag: "from", Type: "string"}, - {Name: "to", Flag: "to", Type: "string"}, - {Name: "meetingId", Flag: "meeting-id", Type: "string"}, - {Name: "siteUrl", Flag: "site-url", Type: "string"}, - {Name: "integrationTag", Flag: "integration-tag", Type: "string"}, - {Name: "topic", Flag: "topic", Type: "string"}, - {Name: "format", Flag: "format", Type: "string"}, - {Name: "serviceType", Flag: "service-type", Type: "string"}, - {Name: "status", Flag: "status", Type: "string"}, - {Name: "timezone", Flag: "timezone", Type: "string"}, - }}, -} - -var AdminReportTemplatesList = &Operation{ - ID: "AdminReportTemplatesList", Area: "admin", Group: "report-templates", Command: "list", - Summary: "List Report Templates", - Description: "List all the available report templates that can be generated.\n\nCSV (comma separated value) reports for Webex services are only supported for organizations based in the North American region. Organizations based in other regions will return blank CSV files for any Webex reports.\n\n#### Validation Fields\n\nEach template includes validation rules that specify which fields are required when generating a report using the [Reports API](/docs/api/v1/reports). The possible validation field values are:\n\n- **templateId**: The unique identifier of the report template to use. This is always required when creating a report.\n- **siteList**: A comma-separated list of Webex sites (e.g., \"cisco.webex.com\"). Required for site-based templates, typically for Webex Meetings reports.\n- **subIds**: Subscription IDs for the report. Required for certain enterprise agreement templates, particularly for Webex Onboarding service reports.\n- **startDate**: The start date for the report data range in YYYY-MM-DD format. Required for date-range based templates.\n- **endDate**: The end date for the report data range in YYYY-MM-DD format. Required for date-range based templates.\n\nWhen creating a report, ensure you provide all fields marked as \"required\": \"yes\" in the template's validation rules.", - Method: "GET", Path: "/report/templates", Host: HostWebex, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var AdminReportsList = &Operation{ - ID: "AdminReportsList", Area: "admin", Group: "reports", Command: "list", - Summary: "List Reports", - Description: "Lists all reports. Use query parameters to filter the response. The parameters are optional. However, `from` and `to` parameters should be provided together.\n\n**Notes**:\nCSV reports for Webex suite services are only supported for organizations based in the North American region. Organizations based in a different region will return blank CSV files for any Teams reports.\n\nReports are usually provided in zip format. A Content-header `application/zip` or `application/octet-stream` does indicate the zip format. There is usually no .zip file extension.", - Method: "GET", Path: "/reports", Host: HostWebex, - Params: []Param{ - {Name: "reportId", In: InQuery, Flag: "report-id", Usage: "List reports by ID."}, - {Name: "service", In: InQuery, Flag: "service", Usage: "List reports which use this service."}, - {Name: "templateId", In: InQuery, Flag: "template-id", Usage: "List reports with this report template ID."}, - {Name: "from", In: InQuery, Flag: "from", Usage: "List reports that were created on or after this date."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "List reports that were created before this date."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, - TimeRange: TimeISO, -} - -var AdminReportsCreate = &Operation{ - ID: "AdminReportsCreate", Area: "admin", Group: "reports", Command: "create", - Summary: "Create a Report", - Description: "Create a new report. For each `templateId`, there are a set of validation rules that need to be followed. For example, for templates belonging to Webex, the user needs to provide `siteUrl`. These validation rules can be retrieved via the [Report Templates API](/docs/api/v1/report-templates).\n\nThe 'templateId' parameter is a number. However, it is a limitation of developer.webex.com platform that it is passed as a string when you try to test the API from here.\n\nCSV reports for Webex suite services are only supported for organizations based in the North American region. Organizations based in a different region will return blank CSV files for any Teams reports.", - Method: "POST", Path: "/reports", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "templateId", Flag: "template-id", Type: "int64"}, - {Name: "startDate", Flag: "start-date", Type: "string"}, - {Name: "endDate", Flag: "end-date", Type: "string"}, - {Name: "siteList", Flag: "site-list", Type: "string"}, - {Name: "timeZone", Flag: "time-zone", Type: "string"}, - }}, -} - -var AdminReportsGet = &Operation{ - ID: "AdminReportsGet", Area: "admin", Group: "reports", Command: "get", - Summary: "Get Report Details", - Description: "Shows details for a report, by report ID.\n\nSpecify the report ID in the `reportId` parameter in the URI.\n\n**Notes**:\nCSV reports for Webex suite services are only supported for organizations based in the North American region. Organizations based in a different region will return blank CSV files for any Teams reports.\n\nReports are usually provided in zip format. A Content-header `application/zip` or `application/octet-stream` does indicate the zip format. There is usually no .zip file extension.", - Method: "GET", Path: "/reports/{reportId}", Host: HostWebex, - Params: []Param{ - {Name: "reportId", In: InPath, Flag: "report-id", Usage: "The unique identifier for the report."}, - }, -} - -var AdminReportsDelete = &Operation{ - ID: "AdminReportsDelete", Area: "admin", Group: "reports", Command: "delete", - Summary: "Delete a Report", - Description: "Remove a report from the system.\n\nSpecify the report ID in the `reportId` parameter in the URI\n\nCSV reports for Webex suite services are only supported for organizations based in the North American region. Organizations based in a different region will return blank CSV files for any Teams reports.", - Method: "DELETE", Path: "/reports/{reportId}", Host: HostWebex, - Params: []Param{ - {Name: "reportId", In: InPath, Flag: "report-id", Usage: "The unique identifier for the report."}, - }, -} - -var AdminResourceMembershipsListGroup = &Operation{ - ID: "AdminResourceMembershipsListGroup", Area: "admin", Group: "resource-memberships", Command: "list-group", - Summary: "List Resource Group Memberships", - Description: "Lists all resource group memberships for an organization.\n\nUse query parameters to filter the response.", - Method: "GET", Path: "/resourceGroup/memberships", Host: HostWebex, - Params: []Param{ - {Name: "licenseId", In: InQuery, Flag: "license-id", Usage: "List resource group memberships for a license, by ID."}, - {Name: "personId", In: InQuery, Flag: "person-id", Usage: "List resource group memberships for a person, by ID."}, - {Name: "personOrgId", In: InQuery, Flag: "person-org-id", Usage: "List resource group memberships for an organization, by ID."}, - {Name: "status", In: InQuery, Flag: "status", Usage: "Limit resource group memberships to a specific status."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the maximum number of resource group memberships in the response."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, -} - -var AdminResourceMembershipsGetGroup = &Operation{ - ID: "AdminResourceMembershipsGetGroup", Area: "admin", Group: "resource-memberships", Command: "get-group", - Summary: "Get Resource Group Membership Details", - Description: "Shows details for a resource group membership, by ID.\n\nSpecify the resource group membership ID in the `resourceGroupMembershipId` URI parameter.", - Method: "GET", Path: "/resourceGroup/memberships/{resourceGroupMembershipId}", Host: HostWebex, - Params: []Param{ - {Name: "resourceGroupMembershipId", In: InPath, Flag: "resource-group-membership-id", Usage: "The unique identifier for the resource group membership."}, - }, -} - -var AdminResourceMembershipsUpdateGroup = &Operation{ - ID: "AdminResourceMembershipsUpdateGroup", Area: "admin", Group: "resource-memberships", Command: "update-group", - Summary: "Update a Resource Group Membership", - Description: "Updates a resource group membership, by ID.\n\nSpecify the resource group membership ID in the `resourceGroupMembershipId` URI parameter.\n\nOnly the `resourceGroupId` can be changed with this action. Resource group memberships with a `status` of \"pending\" cannot be updated. For more information about resource group memberships, see the [Managing Hybrid Services](/docs/api/guides/managing-hybrid-services-licenses#webex-resource-groups) guide.", - Method: "PUT", Path: "/resourceGroup/memberships/{resourceGroupMembershipId}", Host: HostWebex, - Params: []Param{ - {Name: "resourceGroupMembershipId", In: InPath, Flag: "resource-group-membership-id", Usage: "The unique identifier for the resource group membership."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "resourceGroupId", Flag: "resource-group-id", Type: "string"}, - {Name: "licenseId", Flag: "license-id", Type: "string"}, - {Name: "personId", Flag: "person-id", Type: "string"}, - {Name: "personOrgId", Flag: "person-org-id", Type: "string"}, - {Name: "status", Flag: "status", Type: "string"}, - }}, -} - -var AdminResourceMembershipsListGroupV2 = &Operation{ - ID: "AdminResourceMembershipsListGroupV2", Area: "admin", Group: "resource-memberships", Command: "list-group-v2", - Summary: "List Resource Group Memberships V2", - Description: "Lists all resource group memberships for an organization having filtering option based on entity type (User / Workspace).\n\nUse query parameters to filter the response.", - Method: "GET", Path: "/resourceGroup/memberships/v2", Host: HostWebex, - Params: []Param{ - {Name: "licenseId", In: InQuery, Flag: "license-id", Usage: "List resource group memberships for a license, by ID."}, - {Name: "id", In: InQuery, Flag: "id", Usage: "List resource group memberships by ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List resource group memberships for an organization, by ID."}, - {Name: "status", In: InQuery, Flag: "status", Usage: "Limit resource group memberships to a specific status."}, - {Name: "type", In: InQuery, Flag: "type", Usage: "List resource group memberships for an organization, by type. If left blank it will include both User and Workspace type."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the maximum number of resource group memberships in the response."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, -} - -var AdminResourceGroupsList = &Operation{ - ID: "AdminResourceGroupsList", Area: "admin", Group: "resource-groups", Command: "list", - Summary: "List Resource Groups", - Description: "List resource groups.\n\nUse query parameters to filter the response.", - Method: "GET", Path: "/resourceGroups", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List resource groups in this organization. Only admin users of another organization (such as partners) may use this parameter."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var AdminResourceGroupsGet = &Operation{ - ID: "AdminResourceGroupsGet", Area: "admin", Group: "resource-groups", Command: "get", - Summary: "Get Resource Group Details", - Description: "Shows details for a resource group, by ID.\n\nSpecify the resource group ID in the `resourceGroupId` parameter in the URI.", - Method: "GET", Path: "/resourceGroups/{resourceGroupId}", Host: HostWebex, - Params: []Param{ - {Name: "resourceGroupId", In: InPath, Flag: "resource-group-id", Usage: "The unique identifier for the resource group."}, - }, -} - -var AdminRolesList = &Operation{ - ID: "AdminRolesList", Area: "admin", Group: "roles", Command: "list", - Summary: "List Roles", - Description: "List all roles. Must be called by an admin user.", - Method: "GET", Path: "/roles", Host: HostWebex, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var AdminRolesGet = &Operation{ - ID: "AdminRolesGet", Area: "admin", Group: "roles", Command: "get", - Summary: "Get Role Details", - Description: "Shows details for a role, by ID.\n\nSpecify the role ID in the `roleId` parameter in the URI.", - Method: "GET", Path: "/roles/{roleId}", Host: HostWebex, - Params: []Param{ - {Name: "roleId", In: InPath, Flag: "role-id", Usage: "The unique identifier for the role."}, - }, -} - -var AdminScim2BulkUserApi = &Operation{ - ID: "AdminScim2BulkUserApi", Area: "admin", Group: "scim-2-bulk", Command: "user-api", - Summary: "User bulk API", - Description: "
\n\n**Authorization**\n\nOAuth token rendered by Identity Broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n
\n\n**Usage**:\n\n1. The input JSON must conform to the following schema: 'urn:ietf:params:scim:api:messages:2.0:BulkRequest'.\n\n1. The request must be accompanied with a body in JSON format according to the standard SCIM schema definition.\n The maximum number of operations in a request is 100; an error is thrown if the limit is exceeded.\n\n1. `failOnErrors` parameter\n\n An integer specifies the number of errors that the service provider will accept before the operation is terminated and an error response is returned.\n It is OPTIONAL in a request.\n Maximum number of operations allowed to fail before the server stops processing the request. The value must be between 1 and 100.\n\n1. `operations` parameter\n\n Contains a list of bulk operations for POST/PATCH/DELETE operations. (REQUIRED)\n + `operations.method`\n\n The HTTP method of the current operation. Possible values are POST, PATCH or DELETE.\n + `operations.path`\n\n The Resource's relative path. If the method is POST the value must specify a Resource type endpoint;\n e.g., /Users or /Groups whereas all other method values must specify the path to a specific Resource;\n e.g., /Users/2819c223-7f76-453a-919d-413861904646.\n + `operations.data`\n\n The Resource data as it would appear for a single POST or PATCH Resource operation.\n It is REQUIRED in a request when method is POST and PATCH.\n Refer to corresponding wiki for SCIM 2.0 POST, PATCH and DELETE API.\n + `operations.bulkId`\n\n The transient identifier of a newly created resource, unique within a bulk request and created by the client.\n The bulkId serves as a surrogate resource id enabling clients to uniquely identify newly created resources in the response and cross-reference new resources in and across operations within a bulk request.\n It is REQUIRED when \"method\" is \"POST\".", - Method: "POST", Path: "/identity/scim/{orgId}/v2/Bulk", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InPath, Flag: "org-id", Usage: "Webex Identity assigned organization identifier for user's organization."}, - }, - Body: &Body{}, -} - -var AdminScim2GroupsCreate = &Operation{ - ID: "AdminScim2GroupsCreate", Area: "admin", Group: "scim-2-groups", Command: "create", - Summary: "Create a group", - Description: "Create a new group for a given organization. The group may optionally be created with group members.\n\n
\n\n**Authorization**\n\nOAuth token returned by Identity Broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n
\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n- `id_group_admin`\n\n
\n\n**Usage**:\n\n1. The input JSON must conform to one of the following schemas:\n - `urn:ietf:params:scim:schemas:core:2.0:Group`\n - `urn:scim:schemas:extension:cisco:webexidentity:2.0:Group`\n\n1. Unrecognized schemas (ID/section) are ignored.\n\n1. Read-only attributes provided as input values are ignored.", - Method: "POST", Path: "/identity/scim/{orgId}/v2/Groups", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InPath, Flag: "org-id", Usage: "The ID of the organization to which this group belongs. If not specified, the organization ID from the OAuth token is used."}, - }, - Body: &Body{}, -} - -var AdminScim2GroupsSearch = &Operation{ - ID: "AdminScim2GroupsSearch", Area: "admin", Group: "scim-2-groups", Command: "search", - Summary: "Search groups", - Description: "Retrieve a list of groups in the organization.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n
\n\n**Authorization**\n\nAn OAuth token rendered by Identity Broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n- `identity:people_read`\n\n
\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n- `id_group_admin`\n\n- `id_readonly_admin`\n\n- `id_device_admin`", - Method: "GET", Path: "/identity/scim/{orgId}/v2/Groups", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InPath, Flag: "org-id", Usage: "The ID of the organization to which this group belongs. If not specified, the organization ID from the OAuth token is used."}, - {Name: "filter", In: InQuery, Flag: "filter", Usage: "The url encoded filter. The example content is 'displayName Eq \"group1@example.com\" or displayName Eq \"group2@example.com\"'.\nFor more filter patterns, see https://datatracker.ietf.org/doc/html/rfc7644#section-3.4.2.2. If the value is empty, the API returns all groups under the organization.\n"}, - {Name: "attributes", In: InQuery, Flag: "attributes", Usage: "The attributes to return."}, - {Name: "excludedAttributes", In: InQuery, Flag: "excluded-attributes", Usage: "Attributes to be excluded from the return."}, - {Name: "sortBy", In: InQuery, Flag: "sort-by", Usage: "A string indicating the attribute whose value be used to order the returned responses. Now we only allow `displayName, id, meta.lastModified` to sort."}, - {Name: "sortOrder", In: InQuery, Flag: "sort-order", Usage: "A string indicating the order in which the `sortBy` parameter is applied. Allowed values are `ascending` and `descending`."}, - {Name: "startIndex", In: InQuery, Flag: "start-index", Usage: "An integer indicating the 1-based index of the first query result. The default is 1."}, - {Name: "count", In: InQuery, Flag: "count", Usage: "An integer indicating the desired maximum number of query results per page. The default is 100."}, - {Name: "includeMembers", In: InQuery, Flag: "include-members", Usage: "Default \"false\". If false, no members returned."}, - {Name: "memberType", In: InQuery, Flag: "member-type", Usage: "Filter the members by member type. Sample data: `user`, `machine`, `group`."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "startIndex", Size: "count", First: 1}}, -} - -var AdminScim2GroupsGet = &Operation{ - ID: "AdminScim2GroupsGet", Area: "admin", Group: "scim-2-groups", Command: "get", - Summary: "Get a group", - Description: "Retrieve details for a group, by ID.\n\nOptionally, members can be retrieved with this request. The maximum number of members returned is 500.\n\n
\n\n**Authorization**\n\nOAuth token rendered by Identity Broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n- `identity:people_read`\n\n
\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n- `id_group_admin`\n\n- `id_readonly_admin`\n\n- `id_device_admin`", - Method: "GET", Path: "/identity/scim/{orgId}/v2/Groups/{groupId}", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InPath, Flag: "org-id", Usage: "The ID of the organization to which this group belongs. If not specified, the organization ID from the OAuth token is used."}, - {Name: "groupId", In: InPath, Flag: "group-id", Usage: "A unique identifier for the group."}, - {Name: "excludedAttributes", In: InQuery, Flag: "excluded-attributes", Usage: "Attributes to be excluded from the return."}, - }, -} - -var AdminScim2GroupsUpdatePut = &Operation{ - ID: "AdminScim2GroupsUpdatePut", Area: "admin", Group: "scim-2-groups", Command: "update-put", - Summary: "Update a group with PUT", - Description: "Replace the contents of the Group.\n\nSpecify the group ID in the `groupId` parameter in the URI.\n\n
\n\n**Authorization**\n\nOAuth token returned by Identity Broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n
\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n- `id_group_admin`\n\n
\n\n**Usage**:\n\n1. The input JSON must conform to one of the following schemas:\n - `urn:ietf:params:scim:schemas:core:2.0:Group`\n - `urn:scim:schemas:extension:cisco:webexidentity:2.0:Group`\n\n1. Unrecognized schemas (ID/section) are ignored.\n\n1. Read-only attributes provided as input values are ignored.\n\n1. The group `id` is not changed.\n\n1. All attributes are cleaned up if a new value is not provided by the client.\n\n1. The values, `meta` and `created` are not changed.", - Method: "PUT", Path: "/identity/scim/{orgId}/v2/Groups/{groupId}", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InPath, Flag: "org-id", Usage: "The ID of the organization to which this group belongs. If not specified, the organization ID from the OAuth token is used."}, - {Name: "groupId", In: InPath, Flag: "group-id", Usage: "A unique identifier for the group."}, - }, - Body: &Body{}, -} - -var AdminScim2GroupsUpdatePatch = &Operation{ - ID: "AdminScim2GroupsUpdatePatch", Area: "admin", Group: "scim-2-groups", Command: "update-patch", - Summary: "Update a group with PATCH", - Description: "Update group attributes with PATCH.\n\nSpecify the group ID in the `groupId` parameter in the URI.\n\n
\n\n**Authorization**\n\nOAuth token returned by Identity Broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n
\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n- `id_group_admin`\n\n
\n\n**Usage**:\n\n1. The input JSON must conform to one of the following schemas:\n - `urn:ietf:params:scim:schemas:core:2.0:Group`\n - `urn:scim:schemas:extension:cisco:webexidentity:2.0:Group`\n\n1. Unrecognized schemas (ID/section) are ignored.\n\n1. Read-only attributes provided as input values are ignored.\n\n1. Each operation on an attribute must be compatible with the attribute's mutability.\n\n1. Each PATCH operation represents a single action to be applied to the\n same SCIM resource specified by the request URI. Operations are\n applied sequentially in the order they appear in the array. Each\n operation in the sequence is applied to the target resource; the\n resulting resource becomes the target of the next operation.\n Evaluation continues until all operations are successfully applied or\n until an error condition is encountered.\n\n
\n\n**Add operations**:\n\nThe `add` operation is used to add a new attribute value to an existing resource. The operation must contain a `value` member whose content specifies the value to be added. The value may be a quoted value, or it may be a JSON object containing the sub-attributes of the complex attribute specified in the operation's `path`. The result of the add operation depends upon the target location indicated by `path` references:\n\n
\n\n- If omitted, the target location is assumed to be the resource itself. The `value` parameter contains a set of attributes to be added to the resource.\n\n- If the target location does not exist, the attribute and value are added.\n\n- If the target location specifies a complex attribute, a set of sub-attributes shall be specified in the `value` parameter.\n\n- If the target location specifies a multi-valued attribute, a new value is added to the attribute.\n\n- If the target location specifies a single-valued attribute, the existing value is replaced.\n\n- If the target location specifies an attribute that does not exist (has no value), the attribute is added with the new value.\n\n- If the target location exists, the value is replaced.\n\n- If the target location already contains the value specified, no changes should be made to the resource.\n\n
\n\n**Replace operations**:\n\nThe `replace` operation replaces the value at the target location specified by the `path`. The operation performs the following functions, depending on the target location specified by `path`:\n\n
\n\n- If the `path` parameter is omitted, the target is assumed to be the resource itself. In this case, the `value` attribute shall contain a list of one or more attributes that are to be replaced.\n\n- If the target location is a single-value attribute, the value of the attribute is replaced.\n\n- If the target location is a multi-valued attribute and no filter is specified, the attribute and all values are replaced.\n\n- If the target location path specifies an attribute that does not exist, the service provider shall treat the operation as an \"add\".\n\n- If the target location specifies a complex attribute, a set of sub-attributes SHALL be specified in the `value` parameter, which replaces any existing values or adds where an attribute did not previously exist. Sub-attributes that are not specified in the `value` parameters are left unchanged.\n\n- If the target location is a multi-valued attribute and a value selection (\"valuePath\") filter is specified that matches one or more values of the multi-valued attribute, then all matching record values will be replaced.\n\n- If the target location is a complex multi-valued attribute with a value selection filter (\"valuePath\") and a specific sub-attribute (e.g., \"addresses[type eq \"work\"].streetAddress\"), the matching sub-attribute of all matching records is replaced.\n\n- If the target location is a multi-valued attribute for which a value selection filter (\"valuePath\") has been supplied and no record match was made, the service provider will indicate the failure by returning HTTP status code 400 and a `scimType` error code of `noTarget`.\n\n
\n\n**Remove operations**:\n\nThe `remove` operation removes the value at the target location specified by the required attribute `path`. The operation performs the following functions, depending on the target location specified by `path`:\n\n
\n\n- If `path` is unspecified, the operation fails with HTTP status code 400 and a \"scimType\" error code of \"noTarget\".\n\n- If the target location is a single-value attribute, the attribute and its associated value is removed, and the attribute will be considered unassigned.\n\n- If the target location is a multi-valued attribute and no filter is specified, the attribute and all values are removed, and the attribute SHALL be considered unassigned.\n\n- If the target location is a multi-valued attribute and a complex filter is specified comparing a `value`, the values matched by the filter are removed. If no other values remain after the removal of the selected values, the multi-valued attribute will be considered unassigned.\n\n- If the target location is a complex multi-valued attribute and a complex filter is specified based on the attribute`s sub-attributes, the matching records are removed. Sub-attributes whose values have been removed will be considered unassigned. If the complex multi-valued attribute has no remaining records, the attribute will be considered unassigned.", - Method: "PATCH", Path: "/identity/scim/{orgId}/v2/Groups/{groupId}", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InPath, Flag: "org-id", Usage: "The ID of the organization to which this group belongs. If not specified, the organization ID from the OAuth token is used."}, - {Name: "groupId", In: InPath, Flag: "group-id", Usage: "A unique identifier for the group."}, - }, - Body: &Body{}, -} - -var AdminScim2GroupsDelete = &Operation{ - ID: "AdminScim2GroupsDelete", Area: "admin", Group: "scim-2-groups", Command: "delete", - Summary: "Delete a group", - Description: "Remove a group from the system.\n\nSpecify the group ID in the `groupId` parameter in the URI.\n\n
\n\n**Authorization**\n\nOAuth token rendered by Identity Broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n
\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n- `id_group_admin`", - Method: "DELETE", Path: "/identity/scim/{orgId}/v2/Groups/{groupId}", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InPath, Flag: "org-id", Usage: "The ID of the organization to which this group belongs. If not specified, the organization ID from the OAuth token is used."}, - {Name: "groupId", In: InPath, Flag: "group-id", Usage: "A unique identifier for the group."}, - }, -} - -var AdminScim2GroupsGetMembers = &Operation{ - ID: "AdminScim2GroupsGetMembers", Area: "admin", Group: "scim-2-groups", Command: "get-members", - Summary: "Get Group Members", - Description: "Returns the members of a group.\n\n- The default maximum number of members returned is 500.\n\n- Control parameters are available to page through the members and to control the size of the results.\n\n- Long result sets are split into [pages](/docs/basics#pagination).\n\n**Note**\nLocation groups are different from SCIM groups. You cannot search for identities in a location via groups.\n\n
\n\n**Authorization**\n\nOAuth token returned by the Identity Broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n- `identity:people_read`\n\n
\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n- `id_group_admin`\n\n- `id_readonly_admin`\n\n- `id_device_admin`", - Method: "GET", Path: "/identity/scim/{orgId}/v2/Groups/{groupId}/Members", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InPath, Flag: "org-id", Usage: "The ID of the organization to which this group belongs. If not specified, the organization ID from the OAuth token is used."}, - {Name: "groupId", In: InPath, Flag: "group-id", Usage: "A unique identifier for the group."}, - {Name: "startIndex", In: InQuery, Flag: "start-index", Usage: "The index to start for group pagination."}, - {Name: "count", In: InQuery, Flag: "count", Usage: "Non-negative integer that specifies the desired number of search results per page. The maximum value for the count is 500."}, - {Name: "memberType", In: InQuery, Flag: "member-type", Usage: "Filter the members by member type. Sample data: `user`, `machine`, `group`."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "startIndex", Size: "count", First: 1}}, -} - -var AdminScim2UsersCreate = &Operation{ - ID: "AdminScim2UsersCreate", Area: "admin", Group: "scim-2-users", Command: "create", - Summary: "Create a user", - Description: "The SCIM 2 /Users API provides a programmatic way to manage users in Webex Identity using The Internet Engineering Task Force standard SCIM 2.0 standard as specified by [RFC 7643 SCIM 2.0 Core Schema ](https://datatracker.ietf.org/doc/html/rfc7643) and [RFC 7644 SCIM 2.0 Core Protocol](https://datatracker.ietf.org/doc/html/rfc7644). The WebEx SCIM 2.0 APIs allow clients supporting the SCIM 2.0 standard to manage users, and groups within Webex. Webex supports the following SCIM 2.0 Schemas:\n\n• urn:ietf:params:scim:schemas:core:2.0:User\n\n• urn:ietf:params:scim:schemas:extension:enterprise:2.0:User\n\n• urn:scim:schemas:extension:cisco:webexidentity:2.0:User\n\n
\n\n**Authorization**\n\nOAuth token rendered by Identity Broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n
\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n- `id_user_admin`\n\n
\n\n**Usage**:\n\n1. Input JSON must contain schema: \"urn:ietf:params:scim:schemas:core:2.0:User\".\n\n2. Support 3 schemas :\n - \"urn:ietf:params:scim:schemas:core:2.0:User\"\n - \"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User\"\n - \"urn:scim:schemas:extension:cisco:webexidentity:2.0:User\"\n\n3. Unrecognized schemas (ID/section) are ignored.\n\n4. Read-only attributes provided as input values are ignored.\n\n The following roles cannot be assigned to a user:\n\n1. Location Admin\n\n2. Webex Site Admin", - Method: "POST", Path: "/identity/scim/{orgId}/v2/Users", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InPath, Flag: "org-id", Usage: "Webex Identity assigned organization identifier for user's organization."}, - }, - Body: &Body{}, -} - -var AdminScim2UsersSearch = &Operation{ - ID: "AdminScim2UsersSearch", Area: "admin", Group: "scim-2-users", Command: "search", - Summary: "Search users", - Description: "
\n\n**Authorization**\n\nOAuth token rendered by Identity Broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n- `identity:people_read`\n\n
\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n- `id_user_admin`\n\n- `id_readonly_admin`\n\n- `id_device_admin`\n\n
", - Method: "GET", Path: "/identity/scim/{orgId}/v2/Users", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InPath, Flag: "org-id", Usage: "Webex Identity assigned organization identifier for user's organization."}, - {Name: "filter", In: InQuery, Flag: "filter", Usage: "The URL encoded filter. If the value is empty, the API will return all users under the organization.\n\nThe examples below show some search filters:\n\n- `userName` eq \"user1@example.com\"\n\n- `userName` sw \"user1@example\"\n\n- `userName` ew \"example\"\n\n- `phoneNumbers` [ type eq \"mobile\" and value eq \"14170120\"]\n\n- `urn:scim:schemas:extension:cisco:webexidentity:2.0:User:meta.organizationId` eq \"0ae87ade-8c8a-4952-af08-318798958d0c\"\n\n- For more filter patterns, please check [filtering](https://datatracker.ietf.org/doc/html/rfc7644#section-3.4.2.2).\n\n| **Attributes** | **Operators** |\n|-----|-----|\n| **SCIM Core**                              | ---- |\n| `id` | eq |\n| `userName` | eq sw ew |\n| `name.familyName` | eq sw ew |\n| `name.givenName` | eq sw |\n| `name.middleName` | eq sw |\n| `name.formatted` | eq sw |\n| `displayName` | eq sw ew |\n| `nickName` | eq sw ew |\n| `emails.display` | eq sw ew |\n| `emails.value` | eq sw ew |\n| `phoneNumbers.value` | eq sw ew |\n| `phoneNumbers.display` | eq sw ew |\n| **Enterprise Extensions** | ---- |\n| `employeeNumber` | eq sw ew |\n| `costCenter` | eq sw ew |\n| `organization` | eq sw ew |\n| `division` | eq sw ew |\n| `department` | eq sw ew |\n| `manager.value` | eq |\n| `manager.displayName` | eq sw ew |"}, - {Name: "attributes", In: InQuery, Flag: "attributes", Usage: "A multi-valued list of string names for resource attributes to return in the response, like 'userName,department,emails'. It supports the SCIM id 'urn:ietf:params:scim:schemas:extension:enterprise:2.0:User,userName'. The default is empty, all attributes will be returned"}, - {Name: "excludedAttributes", In: InQuery, Flag: "excluded-attributes", Usage: "A multi-valued list of strings names for resource attributes to be removed from the default set of attributes to return. The default is empty, all attributes will be returned"}, - {Name: "sortBy", In: InQuery, Flag: "sort-by", Usage: "A string for the attribute whose value can be used to order the returned responses. Now we only allow `userName`, `id`, `meta.lastModified` to sort."}, - {Name: "sortOrder", In: InQuery, Flag: "sort-order", Usage: "A string for the order in which the 'sortBy' parameter is applied. Allowed values are 'ascending' and 'descending'."}, - {Name: "startIndex", In: InQuery, Flag: "start-index", Usage: "An integer for the 1-based index of the first query result. The default is 1."}, - {Name: "count", In: InQuery, Flag: "count", Usage: "An integer for the maximum number of query results per page. The default is 100."}, - {Name: "returnGroups", In: InQuery, Flag: "return-groups", Usage: "Define whether the group information needs to be returned. The default is false."}, - {Name: "includeGroupDetails", In: InQuery, Flag: "include-group-details", Usage: "Define whether the group information with details needs to be returned. The default is false."}, - {Name: "groupUsageTypes", In: InQuery, Flag: "group-usage-types", Usage: "Returns groups with details of the specified group type."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "startIndex", Size: "count", First: 1}}, -} - -var AdminScim2UsersGet = &Operation{ - ID: "AdminScim2UsersGet", Area: "admin", Group: "scim-2-users", Command: "get", - Summary: "Get a user", - Description: "
\n\n**Authorization**\n\nOAuth token rendered by Identity Broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n- `identity:people_read`\n\n
\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n- `id_user_admin`\n\n- `id_readonly_admin`\n\n- `id_device_admin`\n\n
", - Method: "GET", Path: "/identity/scim/{orgId}/v2/Users/{userId}", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InPath, Flag: "org-id", Usage: "Webex Identity assigned organization identifier for user's organization."}, - {Name: "userId", In: InPath, Flag: "user-id", Usage: "Webex Identity assigned user identifier."}, - }, -} - -var AdminScim2UsersUpdatePut = &Operation{ - ID: "AdminScim2UsersUpdatePut", Area: "admin", Group: "scim-2-users", Command: "update-put", - Summary: "Update a user with PUT", - Description: "
\n\n**Authorization**\n\nOAuth token rendered by Identity Broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n
\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n- `id_user_admin`\n\n
\n\n**Usage**:\n\n1. Input JSON must contain schema: \"urn:ietf:params:scim:schemas:core:2.0:User\".\n\n2. Support 3 schemas :\n - \"urn:ietf:params:scim:schemas:core:2.0:User\"\n - \"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User\"\n - \"urn:scim:schemas:extension:cisco:webexidentity:2.0:User\"\n\n3. Unrecognized schemas (ID/section) are ignored.\n\n4. Read-only attributes provided as input values are ignored.\n\n5. User `id` will not be changed.\n\n6. `meta`.`created` will not be changed.\n\n7. The PUT API replaces the contents of the user's data with the data in the request body. All attributes specified in the request body will replace all existing attributes for the `userId` specified in the URL. Should you wish to replace or change some attributes as opposed to all attributes please refer to the SCIM PATCH operation https://developer.webex.com/docs/api/v1/scim2-user/update-a-user-with-patch.\n\n
\n\n**NOTE**:\n\nOnce a user's role or managed roles are changed, all tokens associated with that user will be invalidated.", - Method: "PUT", Path: "/identity/scim/{orgId}/v2/Users/{userId}", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InPath, Flag: "org-id", Usage: "Webex Identity assigned organization identifier for user's organization."}, - {Name: "userId", In: InPath, Flag: "user-id", Usage: "Webex Identity assigned user identifier."}, - }, - Body: &Body{}, -} - -var AdminScim2UsersUpdatePatch = &Operation{ - ID: "AdminScim2UsersUpdatePatch", Area: "admin", Group: "scim-2-users", Command: "update-patch", - Summary: "Update a user with PATCH", - Description: "
\n\n**Authorization**\n\nOAuth token rendered by Identity Broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n
\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n- `id_user_admin`\n\n
\n\n**Usage**:\n\n1. The PATCH API replaces individual attributes and roles of the user's data in the request body.\n The PATCH API supports `add`, `remove`, and `replace` operations on any individual\n attribute or role allowing only specific attributes of the user's object to be modified.\n\n2. Each operation against an attribute must be compatible with the attribute's mutability.\n\n3. Each PATCH operation represents a single action to be applied to the\n same SCIM resource specified by the request URI. Operations are\n applied sequentially in the order they appear in the array. Each\n operation in the sequence is applied to the target resource; the\n resulting resource becomes the target of the next operation.\n Evaluation continues until all operations are successfully applied or\n until an error condition is encountered.\n\n
\n\n**Add operations**:\n\nThe `add` operation adds a new attribute value to an existing resource.\nThe operation must contain a `value` member whose content specifies the value to be added.\nThe value may be a quoted value, or it may be a JSON object containing the sub-attributes of the complex attribute specified in the operation's `path`.\nThe result of the add operation depends upon the target `path` reference locations:\n\n
\n\n- If omitted, the target location is assumed to be the resource itself. The `value` parameter contains a set of attributes to be added to the resource.\n\n- If the target location does not exist, the attribute and value are added.\n\n- If the target location specifies a complex attribute, a set of sub-attributes shall be specified in the `value` parameter.\n\n- If the target location specifies a multi-valued attribute, a new value is added to the attribute.\n\n- If the target location specifies a single-valued attribute, the existing value is replaced.\n\n- If the target location specifies an attribute that does not exist (has no value), the attribute is added with the new value.\n\n- If the target location exists, the value is replaced.\n\n- If the target location already contains the value specified, no changes should be made to the resource.\n\n
\n\n**Replace operations**:\n\nThe `replace` operation replaces the value at the target location specified by the `path`.\nThe operation performs the following functions, depending on the target location specified by `path`:\n\n
\n\n- If the `path` parameter is omitted, the target is assumed to be the resource itself. In this case, the `value` attribute shall contain a list of one or more attributes to be replaced.\n\n- If the target location is a single-value attribute, the value of the attribute is replaced.\n\n- If the target location is a multi-valued attribute and no filter is specified, the attribute and all values are replaced.\n\n- If the target location path specifies an attribute that does not exist, the service provider shall treat the operation as an \"add\".\n\n- If the target location specifies a complex attribute, a set of sub-attributes SHALL be specified in the `value` parameter, which replaces any existing values or adds where an attribute did not previously exist. Sub-attributes not specified in the `value` parameters are left unchanged.\n\n- If the target location is a multi-valued attribute and a value selection (\"valuePath\") filter is specified that matches one or more values of the multi-valued attribute, then all matching record values will be replaced.\n\n- If the target location is a complex multi-valued attribute with a value selection filter (\"valuePath\") and a specific sub-attribute (e.g., \"addresses[type eq \"work\"].streetAddress\"), the matching sub-attribute of all matching records is replaced.\n\n- If the target location is a multi-valued attribute for which a value selection filter (\"valuePath\") has been supplied and no record match was made, the service provider will return failure as HTTP status code 400 and a `scimType` error code of \"noTarget\".\n\n
\n\n**Remove operations**:\n\nThe `remove` operation removes the value at the target location specified by the required attribute `path`. The operation performs the following functions, depending on the target location specified by `path`:\n\n
\n\n- If `path` is unspecified, the operation fails with HTTP status code 400 and a \"scimType\" error code of \"noTarget\".\n\n- If the target location is a single-value attribute, the attribute and its associated value is removed, and the attribute will be considered unassigned.\n\n- If the target location is a multi-valued attribute and no filter is specified, the attribute and all values are removed, and the attribute SHALL be considered unassigned.\n\n- If the target location is a multi-valued attribute and a complex filter is specified comparing a `value`, the values matched by the filter are removed. If no other values remain after the removal of the selected values, the multi-valued attribute will be considered unassigned.\n\n- If the target location is a complex multi-valued attribute and a complex filter is specified based on the attribute's sub-attributes, the matching records are removed. Sub-attributes whose values have been removed will be considered unassigned. If the complex multi-valued attribute has no remaining records, the attribute will be considered unassigned.\n\n The following roles cannot be assigned to a user:\n\n1. Location Admin\n\n2. Webex Site Admin \n\n
\n\n**NOTE**:\n\nOnce a user's role or managed roles are changed, all tokens associated with that user will be invalidated.", - Method: "PATCH", Path: "/identity/scim/{orgId}/v2/Users/{userId}", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InPath, Flag: "org-id", Usage: "Webex Identity assigned organization identifier for user's organization."}, - {Name: "userId", In: InPath, Flag: "user-id", Usage: "Webex Identity assigned user identifier."}, - }, - Body: &Body{}, -} - -var AdminScim2UsersDelete = &Operation{ - ID: "AdminScim2UsersDelete", Area: "admin", Group: "scim-2-users", Command: "delete", - Summary: "Delete a user", - Description: "
\n\n**Authorization**\n\nOAuth token rendered by Identity Broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n
\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n- `id_user_admin`\n\n
", - Method: "DELETE", Path: "/identity/scim/{orgId}/v2/Users/{userId}", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InPath, Flag: "org-id", Usage: "Webex Identity assigned organization identifier for user's organization."}, - {Name: "userId", In: InPath, Flag: "user-id", Usage: "Webex Identity assigned user identifier."}, - }, -} - -var AdminScim2UsersGetMe = &Operation{ - ID: "AdminScim2UsersGetMe", Area: "admin", Group: "scim-2-users", Command: "get-me", - Summary: "Get Me", - Description: "
\n\n**Authorization**\n\nOAuth token rendered by Identity Broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n- `identity:people_read`\n\n
\n\nThe API can be used by any user to retrieve user information using their own access token.\n\n
", - Method: "GET", Path: "/identity/scim/v2/Users/me", Host: HostWebex, -} - -var AdminSecurityAuditListEvents = &Operation{ - ID: "AdminSecurityAuditListEvents", Area: "admin", Group: "security-audit", Command: "list-events", - Summary: "List Security Audit Events", - Description: "List Security Audit Events. This API currently returns user sign-in and sign-out data.\nTo call this API the `audit:events_read` scope must be selected for the Integration or Service App and authorized by a Full Admin.\n\nSeveral query parameters are available to filter the response.\n\nLong result sets will be split into multiple [pages](/docs/basics#pagination)\n\n**NOTE**: A maximum of one year of audit events can be returned per request.", - Method: "GET", Path: "/admin/securityAudit/events", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List events in this organization, by ID."}, - {Name: "startTime", In: InQuery, Flag: "start-time", Usage: "List events which occurred after a specific date and time."}, - {Name: "endTime", In: InQuery, Flag: "end-time", Usage: "List events which occurred before a specific date and time."}, - {Name: "actorId", In: InQuery, Flag: "actor-id", Usage: "List events performed by this person, by ID."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the maximum number of events in the response. The maximum value is `1000`."}, - {Name: "eventCategories", In: InQuery, Flag: "event-categories", Usage: "List events, by event categories."}, - {Name: "eventCategories", In: InQuery, Flag: "event-categories", Usage: "List events, by event categories."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, -} - -var AdminSettingsGetOrg = &Operation{ - ID: "AdminSettingsGetOrg", Area: "admin", Group: "settings", Command: "get-org", - Summary: "Get an Organization Setting", - Description: "This endpoint retrieves the specified setting for the given organization and is accessible with the scope 'identity:organizations_read'.", - Method: "GET", Path: "/settings/organizations/{orgId}/settings/{settingKey}", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InPath, Flag: "org-id", Usage: "The Webex organization id in Control Hub UUID or API orgId format."}, - {Name: "settingKey", In: InPath, Flag: "setting-key", Usage: "The key of the setting."}, - }, -} - -var AdminSettingsCreateUpdateOrg = &Operation{ - ID: "AdminSettingsCreateUpdateOrg", Area: "admin", Group: "settings", Command: "create-update-org", - Summary: "Create or Update an Organization Setting", - Description: "This endpoint creates or updates the specified setting for the given organization; however, the 'name' of the setting cannot be modified. It is accessible with the scope 'identity:organizations_rw'.", - Method: "POST", Path: "/settings/organizations/{orgId}/settings", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InPath, Flag: "org-id", Usage: "The Webex organization id in Control Hub UUID or API orgId format."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "key", Flag: "key", Type: "string"}, - {Name: "value", Flag: "value", Type: "bool"}, - }}, -} - -var AdminPartnerTagsGetAllCustomer = &Operation{ - ID: "AdminPartnerTagsGetAllCustomer", Area: "admin", Group: "partner-tags", Command: "get-all-customer", - Summary: "Retrieve all customer tags", - Description: "Retrieves all tags which are being used by any customer organizations. Once a tag is unassigned from the last customer, it is automatically removed and is not returned by this API.\nThis API can be used by a partner full admin, a read-only partner, or an partner admin. \nThe `type` can have the value ORGANIZATION or SUBSCRIPTION. If not provided, the value is ORGANIZATION", - Method: "GET", Path: "/partner/tags", Host: HostWebex, - Params: []Param{ - {Name: "type", In: InQuery, Flag: "type", Usage: "List tags associated with an organization."}, - }, -} - -var AdminPartnerTagsCreateReplaceCustomerProvidedOnes = &Operation{ - ID: "AdminPartnerTagsCreateReplaceCustomerProvidedOnes", Area: "admin", Group: "partner-tags", Command: "create-replace-customer-provided-ones", - Summary: "Create or Replace existing customer tags with the provided ones", - Description: "Assign or replace tag(s) which for a customer organization. If the tag doesn't already exist, a new one is created and assigned to the customer automatically.\nThis API can be used by partner full admins and partner admins. \nEach tag has a character limit of 25. Currently, there is a limit of 5 tags per organization when creating tags. To remove all the tags, pass an empty array.\nSpecify the customer organization ID in the `orgId` parameter in the URI.", - Method: "POST", Path: "/partner/tags/organizations/{orgId}/assignTags", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InPath, Flag: "org-id", Usage: "The unique identifier for the customer organization."}, - }, - Body: &Body{}, -} - -var AdminPartnerTagsGetCustomerOrg = &Operation{ - ID: "AdminPartnerTagsGetCustomerOrg", Area: "admin", Group: "partner-tags", Command: "get-customer-org", - Summary: "Get customer organization's tags", - Description: "Retrieve tags associated with a customer organization based on the `orgId` provided.\nThis API can be used by a partner full admin, a read-only partner, or an partner admin. \nSpecify the customer orgId in the `orgId` parameter in the URI.", - Method: "GET", Path: "/partner/tags/organizations/{orgId}", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InPath, Flag: "org-id", Usage: "Fetch all customers and associated tags for the customer."}, - }, -} - -var AdminPartnerTagsGetAllCustomersSet = &Operation{ - ID: "AdminPartnerTagsGetAllCustomersSet", Area: "admin", Group: "partner-tags", Command: "get-all-customers-set", - Summary: "Fetch all customers for a given set of tags", - Description: "For a set of tags, retrieve all customer organizations that match any one of the tags.\nThis API can be used by a partner full admin, a read-only partner, or an partner admin.", - Method: "GET", Path: "/partner/tags/organizations", Host: HostWebex, - Params: []Param{ - {Name: "tags", In: InQuery, Flag: "tags", Usage: "A comma separated list of tags to filter by."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Value must be between 1 and 100, inclusive."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, -} - -var AdminPartnerTagsCreateReplaceSubscriptionProvidedOnes = &Operation{ - ID: "AdminPartnerTagsCreateReplaceSubscriptionProvidedOnes", Area: "admin", Group: "partner-tags", Command: "create-replace-subscription-provided-ones", - Summary: "Create or Replace existing subscription tags with the provided ones", - Description: "Assign or replace tags specific to each subscription for an organization. Each organization may have one or more subscriptions.\nThis API can be used by partner full admins and partner admins. \nCurrently there is a limit of 5 tags per subscription when creating tags. To remove all the tags, pass an empty array.\nSpecify the customer organization ID in the `orgId` parameter in the URI and subscription ID in `subscriptionId` parameter", - Method: "POST", Path: "/partner/tags/organizations/{orgId}/subscriptions/{subscriptionId}/assignTags", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InPath, Flag: "org-id", Usage: "The unique identifier for the customer organization."}, - {Name: "subscriptionId", In: InPath, Flag: "subscription-id", Usage: "The unique identifier for the subscription."}, - }, - Body: &Body{}, -} - -var AdminPartnerTagsSubscriptionListNameSet = &Operation{ - ID: "AdminPartnerTagsSubscriptionListNameSet", Area: "admin", Group: "partner-tags", Command: "subscription-list-name-set", - Summary: "Subscription List on a given tag name or a set of tags", - Description: "For a partner organization fetch all it's subscriptions with their tag list for a given tag names.\nThis API can be used by partner full admins, partner admins and admin read-only partners.", - Method: "GET", Path: "/partner/tags/subscriptions", Host: HostWebex, - Params: []Param{ - {Name: "tags", In: InQuery, Flag: "tags", Usage: "A comma separated list of tags to filter by."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Value must be between 1 and 100, inclusive."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, -} - -var AdminPartnerTagsGetSubscription = &Operation{ - ID: "AdminPartnerTagsGetSubscription", Area: "admin", Group: "partner-tags", Command: "get-subscription", - Summary: "Fetch a Subscription", - Description: "For a given partner org, customer org and external subscription id, fetch subscription details with its associated tags.\nThis API can be used by partner full admins, partner admins and admin read-only partners.", - Method: "GET", Path: "/partner/tags/organizations/{orgId}/subscriptions/{subscriptionId}", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InPath, Flag: "org-id", Usage: "The unique identifier for the customer organization."}, - {Name: "subscriptionId", In: InPath, Flag: "subscription-id", Usage: "The unique identifier for the subscription."}, - }, -} - -var AdminWorkspaceLocationsList = &Operation{ - ID: "AdminWorkspaceLocationsList", Area: "admin", Group: "workspace-locations", Command: "list", - Summary: "List Workspace Locations", - Description: "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nList workspace locations. Use query parameters to filter the response. The `orgId` parameter can only be used by admin users of another\norganization (such as partners). The `displayName`, `address`, `countryCode` and `cityName` parameters are all optional.\nRequires an administrator auth token with the `spark-admin:workspace_locations_read` scope.", - Method: "GET", Path: "/workspaceLocations", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List workspace locations in this organization. Only admin users of another organization (such as partners) may use this parameter."}, - {Name: "displayName", In: InQuery, Flag: "display-name", Usage: "Location display name."}, - {Name: "address", In: InQuery, Flag: "address", Usage: "Location address."}, - {Name: "countryCode", In: InQuery, Flag: "country-code", Usage: "Location country code (ISO 3166-1)."}, - {Name: "cityName", In: InQuery, Flag: "city-name", Usage: "Location city name."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var AdminWorkspaceLocationsCreate = &Operation{ - ID: "AdminWorkspaceLocationsCreate", Area: "admin", Group: "workspace-locations", Command: "create", - Summary: "Create a Workspace Location", - Description: "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nCreate a location. The `cityName` and `notes` parameters are optional, and omitting them will result in the creation of a location without values for those attributes.\nRequires an administrator auth token with the `spark-admin:workspace_locations_write` scope.", - Method: "POST", Path: "/workspaceLocations", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "displayName", Flag: "display-name", Type: "string"}, - {Name: "address", Flag: "address", Type: "string"}, - {Name: "countryCode", Flag: "country-code", Type: "string"}, - {Name: "latitude", Flag: "latitude", Type: "int64"}, - {Name: "longitude", Flag: "longitude", Type: "int64"}, - {Name: "cityName", Flag: "city-name", Type: "string"}, - {Name: "notes", Flag: "notes", Type: "string"}, - }}, -} - -var AdminWorkspaceLocationsGet = &Operation{ - ID: "AdminWorkspaceLocationsGet", Area: "admin", Group: "workspace-locations", Command: "get", - Summary: "Get a Workspace Location Details", - Description: "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nShows details for a location, by ID. Specify the location ID in the `locationId` parameter in the URI.\nRequires an administrator auth token with the `spark-admin:workspace_locations_read` scope.", - Method: "GET", Path: "/workspaceLocations/{locationId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "A unique identifier for the location."}, - }, -} - -var AdminWorkspaceLocationsUpdate = &Operation{ - ID: "AdminWorkspaceLocationsUpdate", Area: "admin", Group: "workspace-locations", Command: "update", - Summary: "Update a Workspace Location", - Description: "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nUpdates details for a location, by ID. Specify the location ID in the `locationId` parameter in the URI. The request should include all details for the location returned in a previous call to [Get Workspace Location Details](/docs/api/v1/workspace-locations/get-a-workspace-location-details). Omitting the optional `cityName` or `notes` fields will result in those fields no longer being defined for the location.\nRequires an administrator auth token with the `spark-admin:workspace_locations_write` scope.", - Method: "PUT", Path: "/workspaceLocations/{locationId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "A unique identifier for the location."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "displayName", Flag: "display-name", Type: "string"}, - {Name: "address", Flag: "address", Type: "string"}, - {Name: "countryCode", Flag: "country-code", Type: "string"}, - {Name: "latitude", Flag: "latitude", Type: "int64"}, - {Name: "longitude", Flag: "longitude", Type: "int64"}, - {Name: "id", Flag: "id", Type: "string"}, - {Name: "cityName", Flag: "city-name", Type: "string"}, - {Name: "notes", Flag: "notes", Type: "string"}, - }}, -} - -var AdminWorkspaceLocationsDelete = &Operation{ - ID: "AdminWorkspaceLocationsDelete", Area: "admin", Group: "workspace-locations", Command: "delete", - Summary: "Delete a Workspace Location", - Description: "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nDeletes a location, by ID. The workspaces associated to that location will no longer have a location, but a new location can be reassigned to them.\nRequires an administrator auth token with the `spark-admin:workspace_locations_write` scope.", - Method: "DELETE", Path: "/workspaceLocations/{locationId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "A unique identifier for the location."}, - }, -} - -var AdminWorkspaceLocationsListFloors = &Operation{ - ID: "AdminWorkspaceLocationsListFloors", Area: "admin", Group: "workspace-locations", Command: "list-floors", - Summary: "List Workspace Location Floors", - Description: "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nList workspace location floors.\nRequires an administrator auth token with the `spark-admin:workspace_locations_read` scope.", - Method: "GET", Path: "/workspaceLocations/{locationId}/floors", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "A unique identifier for the location."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var AdminWorkspaceLocationsCreateFloor = &Operation{ - ID: "AdminWorkspaceLocationsCreateFloor", Area: "admin", Group: "workspace-locations", Command: "create-floor", - Summary: "Create a Workspace Location Floor", - Description: "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nCreate a new floor in the given location. The `displayName` parameter is optional, and omitting it will result in the creation of a floor without that value set.\nRequires an administrator auth token with the `spark-admin:workspace_locations_write` scope.", - Method: "POST", Path: "/workspaceLocations/{locationId}/floors", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "A unique identifier for the location."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "floorNumber", Flag: "floor-number", Type: "int64"}, - {Name: "displayName", Flag: "display-name", Type: "string"}, - }}, -} - -var AdminWorkspaceLocationsGetFloor = &Operation{ - ID: "AdminWorkspaceLocationsGetFloor", Area: "admin", Group: "workspace-locations", Command: "get-floor", - Summary: "Get a Workspace Location Floor Details", - Description: "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nShows details for a floor, by ID. Specify the floor ID in the `floorId` parameter in the URI.\nRequires an administrator auth token with the `spark-admin:workspace_locations_read` scope.", - Method: "GET", Path: "/workspaceLocations/{locationId}/floors/{floorId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "A unique identifier for the location."}, - {Name: "floorId", In: InPath, Flag: "floor-id", Usage: "A unique identifier for the floor."}, - }, -} - -var AdminWorkspaceLocationsUpdateFloor = &Operation{ - ID: "AdminWorkspaceLocationsUpdateFloor", Area: "admin", Group: "workspace-locations", Command: "update-floor", - Summary: "Update a Workspace Location Floor", - Description: "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nUpdates details for a floor, by ID. Specify the floor ID in the `floorId` parameter in the URI. Include all details for the floor returned by a previous call to [Get Workspace Location Floor Details](/docs/api/v1/workspace-locations/get-a-workspace-location-details). Omitting the optional `displayName` field will result in that field no longer being defined for the floor.\nRequires an administrator auth token with the `spark-admin:workspace_locations_write` scope.", - Method: "PUT", Path: "/workspaceLocations/{locationId}/floors/{floorId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "A unique identifier for the location."}, - {Name: "floorId", In: InPath, Flag: "floor-id", Usage: "A unique identifier for the floor."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "floorNumber", Flag: "floor-number", Type: "int64"}, - {Name: "displayName", Flag: "display-name", Type: "string"}, - }}, -} - -var AdminWorkspaceLocationsDeleteFloor = &Operation{ - ID: "AdminWorkspaceLocationsDeleteFloor", Area: "admin", Group: "workspace-locations", Command: "delete-floor", - Summary: "Delete a Workspace Location Floor", - Description: "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nDeletes a floor, by ID.\nRequires an administrator auth token with the `spark-admin:workspace_locations_write` scope.", - Method: "DELETE", Path: "/workspaceLocations/{locationId}/floors/{floorId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "A unique identifier for the location."}, - {Name: "floorId", In: InPath, Flag: "floor-id", Usage: "A unique identifier for the floor."}, - }, -} - -var AdminWorkspaceMetricsWorkspaceMetrics = &Operation{ - ID: "AdminWorkspaceMetricsWorkspaceMetrics", Area: "admin", Group: "workspace-metrics", Command: "workspace-metrics", - Summary: "Workspace Metrics", - Description: "Get metric data for the specified workspace and metric name, optionally aggregated over a specified time period.\n\n* The `workspaceId` and `metricName` parameters indicate which workspace to fetch metrics for and what kind of metrics to get.\n\n* When executing an aggregated query, the result bucket start times will be truncated to the start of an hour or a day, depending on\nthe aggregation interval. However, the buckets will not contain data from outside the requested time range. For example, when\npassing `from=2020-10-21T10:34:56.000Z` and `aggregation=hourly`, the first output bucket would start at `2020-10-21T10:00:00.000Z`,\nbut the bucket would only aggregate data timestamped after `10:34:56`.\n\n* For aggregation modes `none` and `hourly`, the maximum time span is 48 hours. For aggregation mode `daily`, the maximum\ntime span is 30 days.\n\n* If the aggregation mode query parameter is set to `none`, the returned data in the response will be an array of items with the `deviceId`, `timestamp` and the raw `value`.\n\n* If the aggregation mode is `hourly` or `daily`, the returned data in the response will be an array of items with the `start` and `end` of the aggregation time bucket, and the `mean`, `max` and `min` values of the requested value. Note that zeroes and negative values are ignored. For example, this means that the `peopleCount` mean value should be interpreted as the average number of people in the room _when it is in use_.", - Method: "GET", Path: "/workspaceMetrics", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InQuery, Flag: "workspace-id", Usage: "ID of the workspace to get metrics for."}, - {Name: "metricName", In: InQuery, Flag: "metric-name", Usage: "The type of data to extract."}, - {Name: "aggregation", In: InQuery, Flag: "aggregation", Usage: "Time unit over which to aggregate measurements."}, - {Name: "from", In: InQuery, Flag: "from", Usage: "List only data points after a specific date and time (ISO 8601 timestamp)"}, - {Name: "to", In: InQuery, Flag: "to", Usage: "List data points before a specific date and time (ISO 8601 timestamp)"}, - {Name: "unit", In: InQuery, Flag: "unit", Usage: "Output data unit (only a valid parameter if `metricName` is `temperature`)."}, - {Name: "sortBy", In: InQuery, Flag: "sort-by", Usage: "Sort results."}, - }, - TimeRange: TimeISO, -} - -var AdminWorkspaceMetricsDuration = &Operation{ - ID: "AdminWorkspaceMetricsDuration", Area: "admin", Group: "workspace-metrics", Command: "duration", - Summary: "Workspace Duration Metrics", - Description: "Get metrics for how much time a workspace has been in the state given by the `measurement` parameter.\n\nFor example, if the measurement is `timeBooked` then the duration for which the workspace has been booked is returned. The `workspaceId` parameter indicates which workspace to fetch metrics for. If no `measurement` is given, the default value is `timeUsed`.\n\n* When executing a query, the result bucket start times will default to the start of an hour or a day, depending on\nthe aggregation interval. However, the buckets will not contain data from outside the requested time range. For example, when\npassing `from=2020-10-21T10:34:56.000Z` and `aggregation=hourly`, the first output bucket would start at `2020-10-21T10:00:00.000Z`,\nbut the bucket would only aggregate data timestamped after `10:34:56`.\n\n* For aggregation mode `hourly`, the maximum time span is 48 hours. For aggregation mode `daily`, the maximum\ntime span is 30 days.", - Method: "GET", Path: "/workspaceDurationMetrics", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InQuery, Flag: "workspace-id", Usage: "ID of the workspace to get metrics for."}, - {Name: "aggregation", In: InQuery, Flag: "aggregation", Usage: "Unit of time over which to aggregate measurements."}, - {Name: "measurement", In: InQuery, Flag: "measurement", Usage: "The measurement to return duration for."}, - {Name: "from", In: InQuery, Flag: "from", Usage: "Include data points after a specific date and time (ISO 8601 timestamp)."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "Include data points before a specific date and time (ISO 8601 timestamp)."}, - }, - TimeRange: TimeISO, -} - -var AdminScim2SchemasGetGroup = &Operation{ - ID: "AdminScim2SchemasGetGroup", Area: "admin", Group: "scim-2-schemas", Command: "get-group", - Summary: "Get Group Schema", - Description: "This API allows the service client to get all the `Group` schemas information from CI.\n\n**Authorization:**\n\nOAuth token rendered by Identity Broker.\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n- `identity:organizations_rw`\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n- `id_user_admin`\n\n- `id_readonly_admin`\n\n- `id_device_admin`", - Method: "GET", Path: "/Schemas/SCIM2/Group", Host: HostWebex, -} - -var AdminScim2SchemasGetUser = &Operation{ - ID: "AdminScim2SchemasGetUser", Area: "admin", Group: "scim-2-schemas", Command: "get-user", - Summary: "Get User Schema", - Description: "This API allows the service client to get all the `User` schemas information from CI.\n\n**Authorization:**\n\nOAuth token rendered by Identity Broker.\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n- `identity:organizations_rw`\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n- `id_user_admin`\n\n- `id_readonly_admin`\n\n- `id_device_admin`", - Method: "GET", Path: "/Schemas/SCIM2/User", Host: HostWebex, -} - -var AdminScim2SchemasGetGroupId = &Operation{ - ID: "AdminScim2SchemasGetGroupId", Area: "admin", Group: "scim-2-schemas", Command: "get-group-id", - Summary: "Get Schema using Group Schema ID", - Description: "This API allows the service client to get the Group/User Schema using `Schema Id` from CI.\n\nExample:\n\n- `urn:ietf:params:scim:schemas:core:2.0:Group` is one of the `Group Schema Id`. Using this particular ID, we can fetch all information related to it.\n\n- `urn:ietf:params:scim:schemas:extension:enterprise:2.0:User` is one of the `User Schema Id`. Using this particular ID, we can fetch all information related to it.\n\n**Authorization:**\n\nOAuth token rendered by Identity Broker.\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n- `identity:organizations_rw`\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n- `id_user_admin`\n\n- `id_readonly_admin`\n\n- `id_device_admin`", - Method: "GET", Path: "/Schemas/SCIM2/{schemaId}", Host: HostWebex, - Params: []Param{ - {Name: "schemaId", In: InPath, Flag: "schema-id", Usage: "The Schema Id of Group/User Schema"}, - }, -} - -var AdminSendActivationEmailInitiateBulkResendJob = &Operation{ - ID: "AdminSendActivationEmailInitiateBulkResendJob", Area: "admin", Group: "send-activation-email", Command: "initiate-bulk-resend-job", - Summary: "Initiate Bulk Activation Email Resend Job", - Description: "Initiate a bulk activation email resend job that sends an activation email to all eligible users in an organization. Only a single instance of the job can be running for an organization.\n\nRequires a full or user administrator auth token with a scope of `spark-admin:people_write`.", - Method: "POST", Path: "/identity/organizations/{orgId}/jobs/sendActivationEmails", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InPath, Flag: "org-id", Usage: "Initiate job for this organization."}, - }, -} - -var AdminSendActivationEmailGetBulkResendJobStatus = &Operation{ - ID: "AdminSendActivationEmailGetBulkResendJobStatus", Area: "admin", Group: "send-activation-email", Command: "get-bulk-resend-job-status", - Summary: "Get Bulk Activation Email Resend Job Status", - Description: "Get the details of an activation email resend job by its job ID.\n\nRequires a full or user administrator auth token with a scope of `spark-admin:people_write` or read-only administrator auth token with a scope of `spark-admin:people_read`.", - Method: "GET", Path: "/identity/organizations/{orgId}/jobs/sendActivationEmails/{jobId}/status", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InPath, Flag: "org-id", Usage: "Check job status for this organization."}, - {Name: "jobId", In: InPath, Flag: "job-id", Usage: "Retrieve job status for this `jobId`."}, - }, -} - -var AdminSendActivationEmailGetBulkResendJobErrors = &Operation{ - ID: "AdminSendActivationEmailGetBulkResendJobErrors", Area: "admin", Group: "send-activation-email", Command: "get-bulk-resend-job-errors", - Summary: "Get Bulk Activation Email Resend Job Errors", - Description: "Get errors of an activation email resend job by its job ID.\n\nRequires a full or user administrator auth token with a scope of `spark-admin:people_write` or read-only administrator auth token with a scope of `spark-admin:people_read`.", - Method: "GET", Path: "/identity/organizations/{orgId}/jobs/sendActivationEmails/{jobId}/errors", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InPath, Flag: "org-id", Usage: "Check job status for this organization."}, - {Name: "jobId", In: InPath, Flag: "job-id", Usage: "Retrieve job status for this `jobId`."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the maximum number of errors in the response."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, -} - -var AdminServiceAppsCreateAccessToken = &Operation{ - ID: "AdminServiceAppsCreateAccessToken", Area: "admin", Group: "service-apps", Command: "create-access-token", - Summary: "Create Service App Access Token", - Description: "Retrieves an organization specific token pair for an already authorized Service App. Service Apps use machine accounts to make API calls on behalf of an organization, independent of individual user life cycles.\n\nThis endpoint allows you to programmatically retrieve access and refresh tokens after a Full Admin has authorized your Service App in Control Hub.\n\nTo call this endpoint, you need an integration with the spark:applications_token scope.", - Method: "POST", Path: "/applications/{applicationId}/token", Host: HostWebex, - Params: []Param{ - {Name: "applicationId", In: InPath, Flag: "application-id", Usage: "The unique identifier of the Service App"}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "clientId", Flag: "client-id", Type: "string"}, - {Name: "clientSecret", Flag: "client-secret", Type: "string"}, - {Name: "targetOrgId", Flag: "target-org-id", Type: "string"}, - }}, -} - -var AdminLiveMonitoringGetMeetingMetricsCategorizedCountry = &Operation{ - ID: "AdminLiveMonitoringGetMeetingMetricsCategorizedCountry", Area: "admin", Group: "live-monitoring", Command: "get-meeting-metrics-categorized-country", - Summary: "Get Live Meeting metrics categorized by Country", - Description: "Retrieve live meeting metrics categorized by country for a specific meeting site or for all meeting sites owned by the customer. \n\nTo retrieve live monitoring information, you must use an administrator token with the `analytics:read_all` [scope](/docs/integrations#scopes). The authenticated user must be a read-only or full administrator of the organization to which the meeting belongs and must not be an external administrator.\n\nTo use this endpoint, the org needs to be licensed for the Webex Pro Pack.\n\nA rate limit of one API call per minute applies to each customer organization", - Method: "POST", Path: "/livemonitoring/liveMeetingsByCountry", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "siteIds", Flag: "site-ids", Type: "[]string"}, - {Name: "siteUrl", Flag: "site-url", Type: "string"}, - }}, -} - -var AdminArchiveUsersGet = &Operation{ - ID: "AdminArchiveUsersGet", Area: "admin", Group: "archive-users", Command: "get", - Summary: "Get Archive User", - Description: "The `useruuid` is the unique identifier of a user in the system. It is assigned when the user is created and can be retrieved through **GET Users** API.
\n\n**Authorization**\n\nOAuth token issued by the Identity Broker.\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`.\n- `identity:people_read`.\n\nThe following administrators can use this API:\n\n- `Account in the specified organization with one of the following roles: id_full_admin, id_user_admin, id_readonly_admin`.\n- `Proxy account managing the specified organization with one of the following roles: id_full_admin, id_user_admin, id_readonly_admin`.\n\n
", - Method: "GET", Path: "/identity/organizations/{orgId}/v1/ArchivedUser/{useruuid}", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InPath, Flag: "org-id", Usage: "The unique identifier for the organization."}, - {Name: "useruuid", In: InPath, Flag: "useruuid", Usage: "The unique identifier for the user."}, - }, -} - -var AdminArchiveUsersQuery = &Operation{ - ID: "AdminArchiveUsersQuery", Area: "admin", Group: "archive-users", Command: "query", - Summary: "Query Archive User", - Description: "Retrieves archived user information for the specified organization. Supported attributes are `id`, which is the unique identifier of a user in the system, and `username`. It is assigned when the user is created and can be retrieved through **GET Users** API.
\n\n**Authorization**\n\nOAuth token issued by the Identity Broker.\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`.\n- `identity:people_read`.\n\nThe following administrators can use this API:\n\n- `Account in the specified organization with one of the following roles: id_full_admin, id_user_admin, id_readonly_admin`.\n- `Proxy account managing the specified organization with one of the following roles: id_full_admin, id_user_admin, id_readonly_admin`.\n\n
", - Method: "GET", Path: "/identity/organizations/{orgId}/v1/ArchivedUser", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InPath, Flag: "org-id", Usage: "The unique identifier for the organization."}, - {Name: "filter", In: InQuery, Flag: "filter", Usage: "A SCIM-style filter expression used to search archived users. Supported attributes are `username` and `id`, and only the `eq` operator is supported.\n\nExamples:\n\n- `username eq \"test_user_1@example.com\"`\n- `id eq \"40929cc6-2df2-4ab5-871c-ec8e38f07b93\"`"}, - }, -} - -var adminGroups = []Group{ - {Name: "admin-audit", Summary: "AdminAudit commands"}, - {Name: "authorizations", Summary: "Authorizations commands"}, - {Name: "classifications", Summary: "Classifications commands"}, - {Name: "data-sources", Summary: "DataSources commands"}, - {Name: "domain-management", Summary: "DomainManagement commands"}, - {Name: "identity-org", Summary: "IdentityOrg commands"}, - {Name: "events", Summary: "Events commands"}, - {Name: "groups", Summary: "Groups commands"}, - {Name: "guest-management", Summary: "GuestManagement commands"}, - {Name: "analytics", Summary: "Analytics commands"}, - {Name: "hybrid-clusters", Summary: "HybridClusters commands"}, - {Name: "hybrid-connectors", Summary: "HybridConnectors commands"}, - {Name: "licenses", Summary: "Licenses commands"}, - {Name: "meeting-qualities", Summary: "MeetingQualities commands"}, - {Name: "org-contacts", Summary: "OrgContacts commands"}, - {Name: "organizations", Summary: "Organizations commands"}, - {Name: "partner-administrators", Summary: "PartnerAdministrators commands"}, - {Name: "partner-reports-templates", Summary: "PartnerReportsTemplates commands"}, - {Name: "people", Summary: "People commands"}, - {Name: "recording-report", Summary: "RecordingReport commands"}, - {Name: "recordings", Summary: "Recordings commands"}, - {Name: "report-templates", Summary: "ReportTemplates commands"}, - {Name: "reports", Summary: "Reports commands"}, - {Name: "resource-memberships", Summary: "ResourceMemberships commands"}, - {Name: "resource-groups", Summary: "ResourceGroups commands"}, - {Name: "roles", Summary: "Roles commands"}, - {Name: "scim-2-bulk", Summary: "Scim2Bulk commands"}, - {Name: "scim-2-groups", Summary: "Scim2Groups commands"}, - {Name: "scim-2-users", Summary: "Scim2Users commands"}, - {Name: "security-audit", Summary: "SecurityAudit commands"}, - {Name: "settings", Summary: "Settings commands"}, - {Name: "partner-tags", Summary: "PartnerTags commands"}, - {Name: "workspace-locations", Summary: "WorkspaceLocations commands"}, - {Name: "workspace-metrics", Summary: "WorkspaceMetrics commands"}, - {Name: "scim-2-schemas", Summary: "Scim2Schemas commands"}, - {Name: "send-activation-email", Summary: "SendActivationEmail commands"}, - {Name: "service-apps", Summary: "ServiceApps commands"}, - {Name: "live-monitoring", Summary: "LiveMonitoring commands"}, - {Name: "archive-users", Summary: "ArchiveUsers commands"}, -} - -var adminOperations = []*Operation{ - AdminAdminAuditListEvents, - AdminAdminAuditListEventCategories, - AdminAuthorizationsListUser, - AdminAuthorizationsDeleteOrgClientId, - AdminAuthorizationsDelete, - AdminAuthorizationsGetExpirationStatusToken, - AdminClassificationsList, - AdminDataSourcesRegister, - AdminDataSourcesGetAll, - AdminDataSourcesGetSchemas, - AdminDataSourcesGetSchema, - AdminDataSourcesDelete, - AdminDataSourcesGet, - AdminDataSourcesUpdate, - AdminDomainManagementGetVerificationToken, - AdminDomainManagementVerify, - AdminDomainManagementClaim, - AdminDomainManagementUnverify, - AdminDomainManagementUnclaim, - AdminIdentityOrgGet, - AdminIdentityOrgUpdate, - AdminIdentityOrgGenerateOtp, - AdminIdentityOrgUpdateAuthenticationConfigurationSettings, - AdminIdentityOrgUpdatePasswordPolicy, - AdminEventsList, - AdminEventsGet, - AdminGroupsCreate, - AdminGroupsListSearch, - AdminGroupsUpdate, - AdminGroupsGet, - AdminGroupsDelete, - AdminGroupsGetMembers, - AdminGuestManagementCreate, - AdminGuestManagementGetCount, - AdminAnalyticsHistoricalDataRelatedMessaging, - AdminAnalyticsHistoricalDataRelatedRoomDevices, - AdminAnalyticsHistoricalDataRelatedMeetings, - AdminHybridClustersList, - AdminHybridClustersGet, - AdminHybridConnectorsList, - AdminHybridConnectorsGet, - AdminLicensesList, - AdminLicensesGetLicense, - AdminLicensesAssignUsers, - AdminMeetingQualitiesGet, - AdminOrgContactsCreate, - AdminOrgContactsGet, - AdminOrgContactsUpdate, - AdminOrgContactsDelete, - AdminOrgContactsList, - AdminOrgContactsBulkCreateUpdate, - AdminOrgContactsBulkDelete, - AdminOrganizationsList, - AdminOrganizationsGet, - AdminOrganizationsDelete, - AdminPartnerAdministratorsGetAllCustomersManagedAdmin, - AdminPartnerAdministratorsGetAllAdminsAssignedCustomer, - AdminPartnerAdministratorsAssignAdminCustomer, - AdminPartnerAdministratorsUnassignAdminCustomer, - AdminPartnerAdministratorsRevokeAllAdminRolesPersonId, - AdminPartnerReportsTemplatesList, - AdminPartnerReportsTemplatesCreate, - AdminPartnerReportsTemplatesGet, - AdminPartnerReportsTemplatesDelete, - AdminPartnerReportsTemplatesList2, - AdminPeopleList, - AdminPeopleCreatePerson, - AdminPeopleGetPerson, - AdminPeopleUpdatePerson, - AdminPeopleDeletePerson, - AdminPeopleGetMyOwn, - AdminRecordingReportListAuditSummaries, - AdminRecordingReportGetAudit, - AdminRecordingReportListMeetingArchiveSummaries, - AdminRecordingReportGetMeetingArchive, - AdminRecordingsList, - AdminRecordingsListAdminComplianceOfficer, - AdminRecordingsDeleteAdmin, - AdminRecordingsGet, - AdminRecordingsDelete, - AdminRecordingsMoveRecycleBin, - AdminRecordingsRestoreRecycleBin, - AdminRecordingsPurgeRecycleBin, - AdminRecordingsShare, - AdminRecordingsListGroup, - AdminRecordingsGetGroup, - AdminRecordingsShareLink, - AdminRecordingsQuery, - AdminRecordingsQueryAdminComplianceOfficer, - AdminReportTemplatesList, - AdminReportsList, - AdminReportsCreate, - AdminReportsGet, - AdminReportsDelete, - AdminResourceMembershipsListGroup, - AdminResourceMembershipsGetGroup, - AdminResourceMembershipsUpdateGroup, - AdminResourceMembershipsListGroupV2, - AdminResourceGroupsList, - AdminResourceGroupsGet, - AdminRolesList, - AdminRolesGet, - AdminScim2BulkUserApi, - AdminScim2GroupsCreate, - AdminScim2GroupsSearch, - AdminScim2GroupsGet, - AdminScim2GroupsUpdatePut, - AdminScim2GroupsUpdatePatch, - AdminScim2GroupsDelete, - AdminScim2GroupsGetMembers, - AdminScim2UsersCreate, - AdminScim2UsersSearch, - AdminScim2UsersGet, - AdminScim2UsersUpdatePut, - AdminScim2UsersUpdatePatch, - AdminScim2UsersDelete, - AdminScim2UsersGetMe, - AdminSecurityAuditListEvents, - AdminSettingsGetOrg, - AdminSettingsCreateUpdateOrg, - AdminPartnerTagsGetAllCustomer, - AdminPartnerTagsCreateReplaceCustomerProvidedOnes, - AdminPartnerTagsGetCustomerOrg, - AdminPartnerTagsGetAllCustomersSet, - AdminPartnerTagsCreateReplaceSubscriptionProvidedOnes, - AdminPartnerTagsSubscriptionListNameSet, - AdminPartnerTagsGetSubscription, - AdminWorkspaceLocationsList, - AdminWorkspaceLocationsCreate, - AdminWorkspaceLocationsGet, - AdminWorkspaceLocationsUpdate, - AdminWorkspaceLocationsDelete, - AdminWorkspaceLocationsListFloors, - AdminWorkspaceLocationsCreateFloor, - AdminWorkspaceLocationsGetFloor, - AdminWorkspaceLocationsUpdateFloor, - AdminWorkspaceLocationsDeleteFloor, - AdminWorkspaceMetricsWorkspaceMetrics, - AdminWorkspaceMetricsDuration, - AdminScim2SchemasGetGroup, - AdminScim2SchemasGetUser, - AdminScim2SchemasGetGroupId, - AdminSendActivationEmailInitiateBulkResendJob, - AdminSendActivationEmailGetBulkResendJobStatus, - AdminSendActivationEmailGetBulkResendJobErrors, - AdminServiceAppsCreateAccessToken, - AdminLiveMonitoringGetMeetingMetricsCategorizedCountry, - AdminArchiveUsersGet, - AdminArchiveUsersQuery, -} diff --git a/pkg/webexops/zz_calling.go b/pkg/webexops/zz_calling.go deleted file mode 100644 index 4266234..0000000 --- a/pkg/webexops/zz_calling.go +++ /dev/null @@ -1,15415 +0,0 @@ -// Code generated by codegen/generate_cli.py; DO NOT EDIT. - -package webexops - -var CallingDectDevicesCreateNetwork = &Operation{ - ID: "CallingDectDevicesCreateNetwork", Area: "calling", Group: "dect-devices", Command: "create-network", - Summary: "Create a DECT Network", - Description: "Create a multi-cell DECT network for a given location.\n\nCreating a DECT network requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/locations/{locationId}/dectNetworks", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Create a DECT network in this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Create a DECT network in this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "name", Flag: "name", Type: "string"}, - {Name: "model", Flag: "model", Type: "string"}, - {Name: "defaultAccessCodeEnabled", Flag: "default-access-code-enabled", Type: "bool"}, - {Name: "defaultAccessCode", Flag: "default-access-code", Type: "string"}, - {Name: "displayName", Flag: "display-name", Type: "string"}, - }}, -} - -var CallingDectDevicesListNetworks = &Operation{ - ID: "CallingDectDevicesListNetworks", Area: "calling", Group: "dect-devices", Command: "list-networks", - Summary: "Get the List of DECT Networks for an organization", - Description: "Retrieves the list of DECT networks for an organization.\n\nDECT Networks provide roaming voice services via base stations and wireless handsets. A DECT network can be provisioned up to 1000 lines across up to 254 base stations.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/dectNetworks", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List of DECT networks in this organization."}, - {Name: "name", In: InQuery, Flag: "name", Usage: "List of DECT networks with this name."}, - {Name: "locationId", In: InQuery, Flag: "location-id", Usage: "List of DECT networks at this location."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var CallingDectDevicesGetNetwork = &Operation{ - ID: "CallingDectDevicesGetNetwork", Area: "calling", Group: "dect-devices", Command: "get-network", - Summary: "Get DECT Network Details", - Description: "Retrieves the details of a DECT network.\n\nDECT Networks provide roaming voice services via base stations and wireless handsets. A DECT network can be provisioned up to 1000 lines across up to 254 base stations.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/dectNetworks/{dectNetworkId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Details of the DECT network at this location."}, - {Name: "dectNetworkId", In: InPath, Flag: "dect-network-id", Usage: "Details of the specified DECT network."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Details of the DECT network in this organization."}, - }, -} - -var CallingDectDevicesUpdateNetwork = &Operation{ - ID: "CallingDectDevicesUpdateNetwork", Area: "calling", Group: "dect-devices", Command: "update-network", - Summary: "Update DECT Network", - Description: "Update the details of a DECT network.\n\nDECT Networks provide roaming voice services via base stations and wireless handsets. A DECT network can be provisioned up to 1000 lines across up to 254 base stations.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/locations/{locationId}/dectNetworks/{dectNetworkId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Update DECT network details in the specified location."}, - {Name: "dectNetworkId", In: InPath, Flag: "dect-network-id", Usage: "Update DECT network details in the specified DECT network."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Update DECT network details in the specified organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "name", Flag: "name", Type: "string"}, - {Name: "defaultAccessCodeEnabled", Flag: "default-access-code-enabled", Type: "bool"}, - {Name: "defaultAccessCode", Flag: "default-access-code", Type: "string"}, - {Name: "displayName", Flag: "display-name", Type: "string"}, - }}, -} - -var CallingDectDevicesDeleteNetwork = &Operation{ - ID: "CallingDectDevicesDeleteNetwork", Area: "calling", Group: "dect-devices", Command: "delete-network", - Summary: "Delete DECT Network", - Description: "Delete a DECT network.\n\nDECT Networks provide roaming voice services via base stations and wireless handsets. A DECT network can be provisioned up to 1000 lines across up to 254 base stations.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/locations/{locationId}/dectNetworks/{dectNetworkId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Delete the DECT network in the specified location."}, - {Name: "dectNetworkId", In: InPath, Flag: "dect-network-id", Usage: "Delete the specified DECT network."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Delete the DECT network in the specified organization."}, - }, -} - -var CallingDectDevicesCreateMultipleBaseStations = &Operation{ - ID: "CallingDectDevicesCreateMultipleBaseStations", Area: "calling", Group: "dect-devices", Command: "create-multiple-base-stations", - Summary: "Create Multiple Base Stations", - Description: "This API is used to create multiple base stations in a DECT network in an organization.\n\nCreating base stations in a DECT network requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/locations/{locationId}/dectNetworks/{dectNetworkId}/baseStations", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Create a base station in this location."}, - {Name: "dectNetworkId", In: InPath, Flag: "dect-network-id", Usage: "Create a base station for the DECT network."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Create a base station for a DECT network in this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "baseStationMacs", Flag: "base-station-macs", Type: "[]string"}, - }}, -} - -var CallingDectDevicesListNetworkBaseStations = &Operation{ - ID: "CallingDectDevicesListNetworkBaseStations", Area: "calling", Group: "dect-devices", Command: "list-network-base-stations", - Summary: "Get a list of DECT Network Base Stations", - Description: "Retrieve a list of base stations in a DECT Network.\n\nA DECT network supports 2 types of base stations, DECT DBS-110 Single-Cell and DECT DBS-210 Multi-Cell.\nA DECT DBS-110 allows up to 30 lines of registration and supports 1 base station only. A DECT DBS-210 can have up to 254 base stations and supports up to 1000 lines of registration.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/dectNetworks/{dectNetworkId}/baseStations", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location containing the DECT network."}, - {Name: "dectNetworkId", In: InPath, Flag: "dect-network-id", Usage: "Retrieve the list of base stations in the specified DECT network ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization containing the DECT network."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var CallingDectDevicesDeleteBulkNetworkBaseStations = &Operation{ - ID: "CallingDectDevicesDeleteBulkNetworkBaseStations", Area: "calling", Group: "dect-devices", Command: "delete-bulk-network-base-stations", - Summary: "Delete bulk DECT Network Base Stations", - Description: "Delete all the base stations in the DECT Network.\n\nA DECT network supports 2 types of base stations, DECT DBS-110 Single-Cell and DECT DBS-210 Multi-Cell.\nA DECT DBS-110 allows up to 30 lines of registration and supports 1 base station only. A DECT DBS-210 can have up to 254 base stations and supports up to 1000 lines of registration.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/locations/{locationId}/dectNetworks/{dectNetworkId}/baseStations", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location containing the DECT network."}, - {Name: "dectNetworkId", In: InPath, Flag: "dect-network-id", Usage: "Delete all the base stations in the specified DECT network ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization containing the DECT network."}, - }, -} - -var CallingDectDevicesGetNetworkBaseStation = &Operation{ - ID: "CallingDectDevicesGetNetworkBaseStation", Area: "calling", Group: "dect-devices", Command: "get-network-base-station", - Summary: "Get the details of a specific DECT Network Base Station", - Description: "Retrieve details of a specific base station in the DECT Network.\n\nA DECT network supports 2 types of base stations, DECT DBS-110 Single-Cell and DECT DBS-210 Multi-Cell.\nA DECT DBS-110 allows up to 30 lines of registration and supports 1 base station only. A DECT DBS-210 can have up to 254 base stations and supports up to 1000 lines of registration.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/dectNetworks/{dectNetworkId}/baseStations/{baseStationId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location containing the DECT network."}, - {Name: "dectNetworkId", In: InPath, Flag: "dect-network-id", Usage: "Retrieve details of a specific base station in the specified DECT network ID."}, - {Name: "baseStationId", In: InPath, Flag: "base-station-id", Usage: "Retrieve details of the specific DECT base station ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization containing the DECT network."}, - }, -} - -var CallingDectDevicesDeleteNetworkBaseStation = &Operation{ - ID: "CallingDectDevicesDeleteNetworkBaseStation", Area: "calling", Group: "dect-devices", Command: "delete-network-base-station", - Summary: "Delete a specific DECT Network Base Station", - Description: "Delete a specific base station in the DECT Network.\n\nA DECT network supports 2 types of base stations, DECT DBS-110 Single-Cell and DECT DBS-210 Multi-Cell.\nA DECT DBS-110 allows up to 30 lines of registration and supports 1 base station only. A DECT DBS-210 can have up to 254 base stations and supports up to 1000 lines of registration.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/locations/{locationId}/dectNetworks/{dectNetworkId}/baseStations/{baseStationId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location containing the DECT network."}, - {Name: "dectNetworkId", In: InPath, Flag: "dect-network-id", Usage: "Delete a specific base station in the specified DECT network ID."}, - {Name: "baseStationId", In: InPath, Flag: "base-station-id", Usage: "Delete the specific DECT base station ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization containing the DECT network."}, - }, -} - -var CallingDectDevicesCreateHandsetNetwork = &Operation{ - ID: "CallingDectDevicesCreateHandsetNetwork", Area: "calling", Group: "dect-devices", Command: "create-handset-network", - Summary: "Add a Handset to a DECT Network", - Description: "Add a handset to a DECT network in a location in an organization.\n\nAdding a handset to a DECT network requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n
Adding a DECT handset to a person with a Webex Calling Standard license will disable Webex Calling across their Webex mobile, tablet, desktop, and browser applications.
\n\n
Adding or removing handsets to the DECT network in less than 90 seconds may result in base station not having the latest configuration until the base station is rebooted.
", - Method: "POST", Path: "/telephony/config/locations/{locationId}/dectNetworks/{dectNetworkId}/handsets", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Add handset in this location."}, - {Name: "dectNetworkId", In: InPath, Flag: "dect-network-id", Usage: "A unique identifier for the DECT network."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Add handset in this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "line1MemberId", Flag: "line1-member-id", Type: "string"}, - {Name: "customDisplayName", Flag: "custom-display-name", Type: "string"}, - {Name: "line2MemberId", Flag: "line2-member-id", Type: "string"}, - }}, -} - -var CallingDectDevicesListHandsetsNetworkId = &Operation{ - ID: "CallingDectDevicesListHandsetsNetworkId", Area: "calling", Group: "dect-devices", Command: "list-handsets-network-id", - Summary: "Get List of Handsets for a DECT Network ID", - Description: "List all the handsets associated with a DECT Network ID.\n\nA handset can have up to two lines, and a DECT network supports a total of 120 lines across all handsets.\nA member on line1 of a DECT handset can be of type PEOPLE or PLACE while a member on line2 of a DECT handset can be of type PEOPLE, PLACE, or VIRTUAL_LINE.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/dectNetworks/{dectNetworkId}/handsets", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location containing the DECT network."}, - {Name: "dectNetworkId", In: InPath, Flag: "dect-network-id", Usage: "Search handset details in the specified DECT network ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization containing the DECT network."}, - {Name: "basestationId", In: InQuery, Flag: "basestation-id", Usage: "Search handset details in the specified DECT base station ID."}, - {Name: "memberId", In: InQuery, Flag: "member-id", Usage: "ID of the member of the handset. Members can be of type PEOPLE, PLACE, or VIRTUAL_LINE."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var CallingDectDevicesGetNetworkHandset = &Operation{ - ID: "CallingDectDevicesGetNetworkHandset", Area: "calling", Group: "dect-devices", Command: "get-network-handset", - Summary: "Get Specific DECT Network Handset Details", - Description: "List the specific DECT Network handset details.\n\nA handset can have up to two lines, and a DECT network supports a total of 120 lines across all handsets.\nA member on line1 of a DECT handset can be of type PEOPLE or PLACE while a member on line2 of a DECT handset can be of type PEOPLE, PLACE, or VIRTUAL_LINE.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/dectNetworks/{dectNetworkId}/handsets/{handsetId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location containing the DECT network."}, - {Name: "dectNetworkId", In: InPath, Flag: "dect-network-id", Usage: "Search handset details in the specified DECT network ID."}, - {Name: "handsetId", In: InPath, Flag: "handset-id", Usage: "A unique identifier for the handset."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization containing the DECT network."}, - }, -} - -var CallingDectDevicesUpdateNetworkHandset = &Operation{ - ID: "CallingDectDevicesUpdateNetworkHandset", Area: "calling", Group: "dect-devices", Command: "update-network-handset", - Summary: "Update DECT Network Handset", - Description: "Update the line assignment on a handset.\n\nA handset can have up to two lines, and a DECT network supports a total of 120 lines across all handsets.\nA member on line1 of a DECT handset can be of type PEOPLE or PLACE while a member on line2 of a DECT handset can be of type PEOPLE, PLACE, or VIRTUAL_LINE.\n\nUpdating a DECT Network handset requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n
Adding a person with a Webex Calling Standard license to the DECT handset line1 will disable Webex Calling across their Webex mobile, tablet, desktop, and browser applications. \nRemoving a person with a Webex Calling Standard license from the DECT handset line1 will enable Webex Calling across their Webex mobile, tablet, desktop, and browser applications.
\n\n
Adding or removing handsets to the DECT network in less than 90 seconds may result in base station not having the latest configuration until the base station is rebooted.
", - Method: "PUT", Path: "/telephony/config/locations/{locationId}/dectNetworks/{dectNetworkId}/handsets/{handsetId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location containing the DECT network."}, - {Name: "dectNetworkId", In: InPath, Flag: "dect-network-id", Usage: "Update handset details in the specified DECT network."}, - {Name: "handsetId", In: InPath, Flag: "handset-id", Usage: "A unique identifier for the handset."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization containing the DECT network."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "line1MemberId", Flag: "line1-member-id", Type: "string"}, - {Name: "customDisplayName", Flag: "custom-display-name", Type: "string"}, - {Name: "line2MemberId", Flag: "line2-member-id", Type: "string"}, - }}, -} - -var CallingDectDevicesDeleteNetworkHandset = &Operation{ - ID: "CallingDectDevicesDeleteNetworkHandset", Area: "calling", Group: "dect-devices", Command: "delete-network-handset", - Summary: "Delete specific DECT Network Handset Details", - Description: "Delete a specific DECT Network handset.\n\nA handset can have up to two lines, and a DECT network supports a total of 120 lines across all handsets.\nA member on line1 of a DECT handset can be of type PEOPLE or PLACE while a member on line2 of a DECT handset can be of type PEOPLE, PLACE, or VIRTUAL_LINE.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n
Deleting a DECT handset from a person with a Webex Calling Standard license will enable Webex Calling across their Webex mobile, tablet, desktop, and browser applications.
\n\n
Adding or removing handsets to the DECT network in less than 90 seconds may result in base station not having the latest configuration until the base station is rebooted.
", - Method: "DELETE", Path: "/telephony/config/locations/{locationId}/dectNetworks/{dectNetworkId}/handsets/{handsetId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location containing the DECT network."}, - {Name: "dectNetworkId", In: InPath, Flag: "dect-network-id", Usage: "Delete handset details in the specified DECT network ID."}, - {Name: "handsetId", In: InPath, Flag: "handset-id", Usage: "A unique identifier for the handset."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization containing the DECT network."}, - }, -} - -var CallingDectDevicesDeleteMultipleHandsets = &Operation{ - ID: "CallingDectDevicesDeleteMultipleHandsets", Area: "calling", Group: "dect-devices", Command: "delete-multiple-handsets", - Summary: "Delete multiple handsets", - Description: "Delete multiple handsets or all of them.\n\nA handset can have up to two lines, and a DECT network supports a total of 120 lines across all handsets.\nA member on line1 of a DECT handset can be of type PEOPLE or PLACE while a member on line2 of a DECT handset can be of type PEOPLE, PLACE, or VIRTUAL_LINE.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n
Deleting a DECT handset from a person with a Webex Calling Standard license will enable Webex Calling across their Webex mobile, tablet, desktop, and browser applications.
\n\n
Adding or removing handsets to the DECT network in less than 90 seconds may result in base station not having the latest configuration until the base station is rebooted.
", - Method: "DELETE", Path: "/telephony/config/locations/{locationId}/dectNetworks/{dectNetworkId}/handsets", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location containing the DECT network."}, - {Name: "dectNetworkId", In: InPath, Flag: "dect-network-id", Usage: "Delete handset details in the specified DECT network ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization containing the DECT network."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "handsetIds", Flag: "handset-ids", Type: "[]string"}, - {Name: "deleteAll", Flag: "delete-all", Type: "bool"}, - }}, -} - -var CallingDectDevicesCreateListHandsetsNetwork = &Operation{ - ID: "CallingDectDevicesCreateListHandsetsNetwork", Area: "calling", Group: "dect-devices", Command: "create-list-handsets-network", - Summary: "Add a List of Handsets to a DECT Network", - Description: "Add a list of up to 50 handsets to a DECT network in a location.\n\nA DECT network acts as a container that can support up to 1,000 lines across all handsets, with each handset capable of handling up to two lines. Once the network is created, you can add bases, handsets, and assign users or lines as needed.\n\nAdding a list of handsets to a DECT network requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n
Adding a DECT handset to a person with a Webex Calling Standard license will disable Webex Calling across their Webex mobile, tablet, desktop, and browser applications.\n\n
\n\n
Adding or removing handsets to the DECT network in less than 90 seconds may result in base station not having the latest configuration until the base station is rebooted.
", - Method: "POST", Path: "/telephony/config/locations/{locationId}/dectNetworks/{dectNetworkId}/handsets/bulk", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Add handsets in this location."}, - {Name: "dectNetworkId", In: InPath, Flag: "dect-network-id", Usage: "A unique identifier for the DECT network."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Add handsets in this organization."}, - }, - Body: &Body{}, -} - -var CallingDectDevicesListNetworksAssociatedPerson = &Operation{ - ID: "CallingDectDevicesListNetworksAssociatedPerson", Area: "calling", Group: "dect-devices", Command: "list-networks-associated-person", - Summary: "GET List of DECT networks associated with a Person", - Description: "Retrieves the list of DECT networks for a person in an organization.\n\nDECT Network provides roaming voice services via base stations and wireless handsets. DECT network can be provisioned up to 1000 lines across up to 254 base stations.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/{personId}/dectNetworks", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "List of DECT networks associated with this person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List of DECT networks associated with a person in this organization."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var CallingDectDevicesListNetworksAssociatedWorkspace = &Operation{ - ID: "CallingDectDevicesListNetworksAssociatedWorkspace", Area: "calling", Group: "dect-devices", Command: "list-networks-associated-workspace", - Summary: "GET List of DECT networks associated with a workspace", - Description: "Retrieves the list of DECT networks for a workspace in an organization.\n\nDECT Network provides roaming voice services via base stations and wireless handsets. DECT network can be provisioned up to 1000 lines across up to 254 base stations.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/workspaces/{workspaceId}/dectNetworks", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "List of DECT networks associated with this workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List of DECT networks associated with a workspace in this organization."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var CallingDectDevicesSearchAvailableMembers = &Operation{ - ID: "CallingDectDevicesSearchAvailableMembers", Area: "calling", Group: "dect-devices", Command: "search-available-members", - Summary: "Search Available Members", - Description: "List the members that are available to be assigned to DECT handset lines.\n\nThis requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/devices/availableMembers", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Search members in this organization."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Specifies the offset from the first result that you want to fetch."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Specifies the maximum number of records that you want to fetch."}, - {Name: "memberName", In: InQuery, Flag: "member-name", Usage: "Search (Contains) numbers based on member name."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Search (Contains) based on number."}, - {Name: "extension", In: InQuery, Flag: "extension", Usage: "Search (Contains) based on extension."}, - {Name: "order", In: InQuery, Flag: "order", Usage: "Sort the list of available members on the device in ascending order by name, using either last name `lname` or first name `fname`. Default sort is the last name in ascending order."}, - {Name: "locationId", In: InQuery, Flag: "location-id", Usage: "List members for the location ID."}, - {Name: "excludeVirtualLine", In: InQuery, Flag: "exclude-virtual-line", Usage: "If true, search results will exclude virtual lines in the member list. NOTE: Virtual lines cannot be assigned as the primary line."}, - {Name: "usageType", In: InQuery, Flag: "usage-type", Usage: "Search for members eligible to become the owner of the device, or share line on the device."}, - }, - Paging: &Paging{}, -} - -var CallingDectDevicesGenerateEnableServicePassword = &Operation{ - ID: "CallingDectDevicesGenerateEnableServicePassword", Area: "calling", Group: "dect-devices", Command: "generate-enable-service-password", - Summary: "Generate and Enable DECT Serviceability Password", - Description: "Generates and enables a 16-character DECT serviceability password.\n\n
Generating a password and transmitting it to the DECT network can reboot the entire network. Be sure you choose an appropriate time to generate a new password.
\n\nThe DECT serviceability password, also known as the admin override password, provides read/write access to DECT base stations for performing system serviceability and troubleshooting functions.\n\nThis API requires either a full administrator auth token with the scope `spark-admin:telephony_config_write`, or a device administrator token with the scope of `spark-admin:devices_write`.", - Method: "POST", Path: "/telephony/config/locations/{locationId}/dectNetworks/{dectNetworkId}/serviceabilityPassword/actions/generate/invoke", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Unique identifier for the location."}, - {Name: "dectNetworkId", In: InPath, Flag: "dect-network-id", Usage: "Unique identifier for the DECT network."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Unique identifier for the organization."}, - }, -} - -var CallingDectDevicesGetServicePasswordStatus = &Operation{ - ID: "CallingDectDevicesGetServicePasswordStatus", Area: "calling", Group: "dect-devices", Command: "get-service-password-status", - Summary: "Get DECT Serviceability Password status", - Description: "Retrieves the DECT serviceability password status.\n\n
If the serviceability password is enabled but has not been generated, the `enabled` status will be returned as `true` even though there is no active serviceability password.
\n\nThe DECT serviceability password, also known as the admin override password, provides read/write access to DECT base stations for performing system serviceability and troubleshooting functions.\n\nThis API requires an auth token with either a full, read-only token with the scope of `spark-admin:telephony_config_read`, or a device administrator token with the scope of `spark-admin:devices_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/dectNetworks/{dectNetworkId}/serviceabilityPassword", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Unique identifier for the location."}, - {Name: "dectNetworkId", In: InPath, Flag: "dect-network-id", Usage: "Unique identifier for the DECT network."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Unique identifier for the organization."}, - }, -} - -var CallingDectDevicesUpdateServicePasswordStatus = &Operation{ - ID: "CallingDectDevicesUpdateServicePasswordStatus", Area: "calling", Group: "dect-devices", Command: "update-service-password-status", - Summary: "Update DECT Serviceability Password status", - Description: "Enables or disables the DECT serviceability password.\n\n
Enabling or disabling the password and transmitting it to the DECT network can reboot the entire network. Be sure you choose an appropriate time for this action.
\n\n
If enabling is requested, but the serviceability password has not been generated, we will not actively reject the request even though there is no serviceability password.
\n\nThe DECT serviceability password, also known as the admin override password, provides read/write access to DECT base stations for performing system serviceability and troubleshooting functions.\n\nThis API requires either a full administrator auth token with the scope `spark-admin:telephony_config_write`, or a device administrator token with the scope of `spark-admin:devices_write`.", - Method: "PUT", Path: "/telephony/config/locations/{locationId}/dectNetworks/{dectNetworkId}/serviceabilityPassword", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Unique identifier for the location."}, - {Name: "dectNetworkId", In: InPath, Flag: "dect-network-id", Usage: "Unique identifier for the DECT network."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Unique identifier for the organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "enabled", Flag: "enabled", Type: "bool"}, - }}, -} - -var CallingCallControlsDial = &Operation{ - ID: "CallingCallControlsDial", Area: "calling", Group: "call-controls", Command: "dial", - Summary: "Dial", - Description: "Initiate an outbound call to a specified destination. This is also commonly referred to as Click to Call or Click to Dial. Alerts occur on all the devices belonging to a user unless an optional endpointId is specified in which case only the device or application identified by the endpointId is alerted. When a user answers an alerting device, an outbound call is placed from that device to the destination.", - Method: "POST", Path: "/telephony/calls/dial", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "destination", Flag: "destination", Type: "string"}, - {Name: "endpointId", Flag: "endpoint-id", Type: "string"}, - {Name: "singleNumberReachPhoneNumber", Flag: "single-number-reach-phone-number", Type: "string"}, - {Name: "lineOwnerId", Flag: "line-owner-id", Type: "string"}, - }}, -} - -var CallingCallControlsAnswer = &Operation{ - ID: "CallingCallControlsAnswer", Area: "calling", Group: "call-controls", Command: "answer", - Summary: "Answer", - Description: "Answer an incoming call. When no endpointId is specified, the call is answered on the user's primary device. When an endpointId is specified, the call is answered on the device or application identified by the endpointId. The answer API is rejected if the device is not alerting for the call or the device does not support answer via API.", - Method: "POST", Path: "/telephony/calls/answer", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "callId", Flag: "call-id", Type: "string"}, - {Name: "endpointId", Flag: "endpoint-id", Type: "string"}, - {Name: "lineOwnerId", Flag: "line-owner-id", Type: "string"}, - }}, -} - -var CallingCallControlsReject = &Operation{ - ID: "CallingCallControlsReject", Area: "calling", Group: "call-controls", Command: "reject", - Summary: "Reject", - Description: "Reject an unanswered incoming call.", - Method: "POST", Path: "/telephony/calls/reject", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "callId", Flag: "call-id", Type: "string"}, - {Name: "action", Flag: "action", Type: "string"}, - {Name: "lineOwnerId", Flag: "line-owner-id", Type: "string"}, - }}, -} - -var CallingCallControlsHangup = &Operation{ - ID: "CallingCallControlsHangup", Area: "calling", Group: "call-controls", Command: "hangup", - Summary: "Hangup", - Description: "Hangup a call. If used on an unanswered incoming call, the call is rejected and sent to busy.", - Method: "POST", Path: "/telephony/calls/hangup", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "callId", Flag: "call-id", Type: "string"}, - {Name: "lineOwnerId", Flag: "line-owner-id", Type: "string"}, - }}, -} - -var CallingCallControlsHold = &Operation{ - ID: "CallingCallControlsHold", Area: "calling", Group: "call-controls", Command: "hold", - Summary: "Hold", - Description: "Hold a connected call.", - Method: "POST", Path: "/telephony/calls/hold", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "callId", Flag: "call-id", Type: "string"}, - {Name: "lineOwnerId", Flag: "line-owner-id", Type: "string"}, - }}, -} - -var CallingCallControlsResume = &Operation{ - ID: "CallingCallControlsResume", Area: "calling", Group: "call-controls", Command: "resume", - Summary: "Resume", - Description: "Resume a held call.", - Method: "POST", Path: "/telephony/calls/resume", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "callId", Flag: "call-id", Type: "string"}, - {Name: "lineOwnerId", Flag: "line-owner-id", Type: "string"}, - }}, -} - -var CallingCallControlsMute = &Operation{ - ID: "CallingCallControlsMute", Area: "calling", Group: "call-controls", Command: "mute", - Summary: "Mute", - Description: "Mute a call. This API can only be used for a call that reports itself as mute capable via the muteCapable field in the call details.", - Method: "POST", Path: "/telephony/calls/mute", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "callId", Flag: "call-id", Type: "string"}, - {Name: "lineOwnerId", Flag: "line-owner-id", Type: "string"}, - }}, -} - -var CallingCallControlsUnmute = &Operation{ - ID: "CallingCallControlsUnmute", Area: "calling", Group: "call-controls", Command: "unmute", - Summary: "Unmute", - Description: "Unmute a call. This API can only be used for a call that reports itself as mute capable via the muteCapable field in the call details.", - Method: "POST", Path: "/telephony/calls/unmute", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "callId", Flag: "call-id", Type: "string"}, - {Name: "lineOwnerId", Flag: "line-owner-id", Type: "string"}, - }}, -} - -var CallingCallControlsDivert = &Operation{ - ID: "CallingCallControlsDivert", Area: "calling", Group: "call-controls", Command: "divert", - Summary: "Divert", - Description: "Divert a call to a destination or a user's voicemail. This is also commonly referred to as a Blind Transfer.", - Method: "POST", Path: "/telephony/calls/divert", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "callId", Flag: "call-id", Type: "string"}, - {Name: "destination", Flag: "destination", Type: "string"}, - {Name: "toVoicemail", Flag: "to-voicemail", Type: "bool"}, - {Name: "lineOwnerId", Flag: "line-owner-id", Type: "string"}, - }}, -} - -var CallingCallControlsTransfer = &Operation{ - ID: "CallingCallControlsTransfer", Area: "calling", Group: "call-controls", Command: "transfer", - Summary: "Transfer", - Description: "Transfer two calls together.\n\nUnanswered incoming calls cannot be transferred but can be diverted using the divert API.\n\nIf the user has only two calls and wants to transfer them together, the `callId1` and `callId2` parameters are optional and when not provided the calls are automatically selected and transferred.\n\nIf the user has more than two calls and wants to transfer two of them together, the `callId1` and `callId2` parameters are mandatory to specify which calls are being transferred. Those are also commonly referred to as Attended Transfer, Consultative Transfer, or Supervised Transfer and will return a `204` response.\n\nIf the user wants to transfer one call to a new destination but only when the destination responds, the `callId1` and destination parameters are mandatory to specify the call being transferred and the destination.\n\nThis is referred to as a Mute Transfer and is similar to the divert API with the difference of waiting for the destination to respond prior to transferring the call. If the destination does not respond, the call is not transferred. This will return a `201` response.", - Method: "POST", Path: "/telephony/calls/transfer", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "callId1", Flag: "call-id1", Type: "string"}, - {Name: "callId2", Flag: "call-id2", Type: "string"}, - {Name: "destination", Flag: "destination", Type: "string"}, - {Name: "lineOwnerId", Flag: "line-owner-id", Type: "string"}, - }}, -} - -var CallingCallControlsPark = &Operation{ - ID: "CallingCallControlsPark", Area: "calling", Group: "call-controls", Command: "park", - Summary: "Park", - Description: "Park a connected call. The number field in the response can be used as the destination for the retrieve command to retrieve the parked call.", - Method: "POST", Path: "/telephony/calls/park", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "callId", Flag: "call-id", Type: "string"}, - {Name: "destination", Flag: "destination", Type: "string"}, - {Name: "isGroupPark", Flag: "is-group-park", Type: "bool"}, - {Name: "lineOwnerId", Flag: "line-owner-id", Type: "string"}, - }}, -} - -var CallingCallControlsGet = &Operation{ - ID: "CallingCallControlsGet", Area: "calling", Group: "call-controls", Command: "get", - Summary: "Retrieve", - Description: "Retrieve a parked call. A new call is initiated to perform the retrieval in a similar manner to the dial command. The number field from the park command response can be used as the destination for the retrieve command.", - Method: "POST", Path: "/telephony/calls/retrieve", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "destination", Flag: "destination", Type: "string"}, - {Name: "endpointId", Flag: "endpoint-id", Type: "string"}, - {Name: "singleNumberReachPhoneNumber", Flag: "single-number-reach-phone-number", Type: "string"}, - {Name: "lineOwnerId", Flag: "line-owner-id", Type: "string"}, - }}, -} - -var CallingCallControlsStartRecording = &Operation{ - ID: "CallingCallControlsStartRecording", Area: "calling", Group: "call-controls", Command: "start-recording", - Summary: "Start Recording", - Description: "Start recording a call. Use of this API is only valid when the user's call recording mode is set to \"On Demand\".", - Method: "POST", Path: "/telephony/calls/startRecording", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "callId", Flag: "call-id", Type: "string"}, - {Name: "lineOwnerId", Flag: "line-owner-id", Type: "string"}, - }}, -} - -var CallingCallControlsStopRecording = &Operation{ - ID: "CallingCallControlsStopRecording", Area: "calling", Group: "call-controls", Command: "stop-recording", - Summary: "Stop Recording", - Description: "Stop recording a call. Use of this API is only valid when a call is being recorded and the user's call recording mode is set to \"On Demand\".", - Method: "POST", Path: "/telephony/calls/stopRecording", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "callId", Flag: "call-id", Type: "string"}, - {Name: "lineOwnerId", Flag: "line-owner-id", Type: "string"}, - }}, -} - -var CallingCallControlsPauseRecording = &Operation{ - ID: "CallingCallControlsPauseRecording", Area: "calling", Group: "call-controls", Command: "pause-recording", - Summary: "Pause Recording", - Description: "Pause recording on a call. Use of this API is only valid when a call is being recorded and the user's call recording mode is set to \"On Demand\" or \"Always with Pause/Resume\".", - Method: "POST", Path: "/telephony/calls/pauseRecording", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "callId", Flag: "call-id", Type: "string"}, - {Name: "lineOwnerId", Flag: "line-owner-id", Type: "string"}, - }}, -} - -var CallingCallControlsResumeRecording = &Operation{ - ID: "CallingCallControlsResumeRecording", Area: "calling", Group: "call-controls", Command: "resume-recording", - Summary: "Resume Recording", - Description: "Resume recording a call. Use of this API is only valid when a call's recording is paused and the user's call recording mode is set to \"On Demand\" or \"Always with Pause/Resume\".", - Method: "POST", Path: "/telephony/calls/resumeRecording", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "callId", Flag: "call-id", Type: "string"}, - {Name: "lineOwnerId", Flag: "line-owner-id", Type: "string"}, - }}, -} - -var CallingCallControlsTransmitDtmf = &Operation{ - ID: "CallingCallControlsTransmitDtmf", Area: "calling", Group: "call-controls", Command: "transmit-dtmf", - Summary: "Transmit DTMF", - Description: "Transmit DTMF digits to a call.", - Method: "POST", Path: "/telephony/calls/transmitDtmf", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "callId", Flag: "call-id", Type: "string"}, - {Name: "dtmf", Flag: "dtmf", Type: "string"}, - {Name: "lineOwnerId", Flag: "line-owner-id", Type: "string"}, - }}, -} - -var CallingCallControlsPush = &Operation{ - ID: "CallingCallControlsPush", Area: "calling", Group: "call-controls", Command: "push", - Summary: "Push", - Description: "Pushes a call from the assistant to the executive the call is associated with. Use of this API is only valid when the assistant's call is associated with an executive.", - Method: "POST", Path: "/telephony/calls/push", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "callId", Flag: "call-id", Type: "string"}, - {Name: "lineOwnerId", Flag: "line-owner-id", Type: "string"}, - }}, -} - -var CallingCallControlsPickup = &Operation{ - ID: "CallingCallControlsPickup", Area: "calling", Group: "call-controls", Command: "pickup", - Summary: "Pickup", - Description: "Picks up an incoming call to another user. A new call is initiated to perform the pickup in a similar manner to the dial command. When target is not present, the API pickups up a call from the user's call pickup group. When target is present, the API pickups an incoming call from the specified target user.", - Method: "POST", Path: "/telephony/calls/pickup", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "target", Flag: "target", Type: "string"}, - {Name: "endpointId", Flag: "endpoint-id", Type: "string"}, - {Name: "singleNumberReachPhoneNumber", Flag: "single-number-reach-phone-number", Type: "string"}, - {Name: "lineOwnerId", Flag: "line-owner-id", Type: "string"}, - }}, -} - -var CallingCallControlsBarge = &Operation{ - ID: "CallingCallControlsBarge", Area: "calling", Group: "call-controls", Command: "barge", - Summary: "Barge In", - Description: "Barge-in on another user's answered call. A new call is initiated to perform the barge-in in a similar manner to the dial command.", - Method: "POST", Path: "/telephony/calls/bargeIn", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "target", Flag: "target", Type: "string"}, - {Name: "endpointId", Flag: "endpoint-id", Type: "string"}, - {Name: "singleNumberReachPhoneNumber", Flag: "single-number-reach-phone-number", Type: "string"}, - {Name: "lineOwnerId", Flag: "line-owner-id", Type: "string"}, - }}, -} - -var CallingCallControlsList = &Operation{ - ID: "CallingCallControlsList", Area: "calling", Group: "call-controls", Command: "list", - Summary: "List Calls", - Description: "Get the list of details for all active calls associated with the user.", - Method: "GET", Path: "/telephony/calls", Host: HostWebex, - Params: []Param{ - {Name: "lineOwnerId", In: InQuery, Flag: "line-owner-id", Usage: "The ID of a user, workspace, or virtual line for which there is a secondary line on a device owned by the user invoking the API."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var CallingCallControlsGet2 = &Operation{ - ID: "CallingCallControlsGet2", Area: "calling", Group: "call-controls", Command: "get-2", - Summary: "Get Call Details", - Description: "Get the details of the specified active call for the user.", - Method: "GET", Path: "/telephony/calls/{callId}", Host: HostWebex, - Params: []Param{ - {Name: "callId", In: InPath, Flag: "call-id", Usage: "The call identifier of the call."}, - {Name: "lineOwnerId", In: InQuery, Flag: "line-owner-id", Usage: "The ID of a user, workspace, or virtual line for which there is a secondary line on a device owned by the user invoking the API."}, - }, -} - -var CallingCallControlsListHistory = &Operation{ - ID: "CallingCallControlsListHistory", Area: "calling", Group: "call-controls", Command: "list-history", - Summary: "List Call History", - Description: "Get the list of call history records for the user. A maximum of 20 call history records per type (`placed`, `missed`, `received`) are returned.", - Method: "GET", Path: "/telephony/calls/history", Host: HostWebex, - Params: []Param{ - {Name: "type", In: InQuery, Flag: "type", Usage: "The type of call history records to retrieve. If not specified, then all call history records are retrieved."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var CallingCallControlsDialMemberId = &Operation{ - ID: "CallingCallControlsDialMemberId", Area: "calling", Group: "call-controls", Command: "dial-member-id", - Summary: "Dial by Member ID", - Description: "Initiate an outbound call to a specified destination. This is also commonly referred to as Click to Call or Click to Dial. Alerts occur on all the devices belonging to a user unless an optional endpointId is specified in which case only the device or application identified by the endpointId is alerted. When a user answers an alerting device, an outbound call is placed from that device to the destination.", - Method: "POST", Path: "/telephony/calls/members/{memberId}/dial", Host: HostWebex, - Params: []Param{ - {Name: "memberId", In: InPath, Flag: "member-id", Usage: "Unique identifier for the member. Member ID can be one of the following: person, workspace, or virtual line"}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Id of the organization to which the member belongs. If not provided, the orgId of the Service App is used. If provided, the organization must be the same as or managed by the Service App's organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "destination", Flag: "destination", Type: "string"}, - {Name: "endpointId", Flag: "endpoint-id", Type: "string"}, - {Name: "singleNumberReachPhoneNumber", Flag: "single-number-reach-phone-number", Type: "string"}, - }}, -} - -var CallingCallControlsAnswerMemberId = &Operation{ - ID: "CallingCallControlsAnswerMemberId", Area: "calling", Group: "call-controls", Command: "answer-member-id", - Summary: "Answer by Member ID", - Description: "Answer an incoming call. When no endpointId is specified, the call is answered on the user's primary device. When an endpointId is specified, the call is answered on the device or application identified by the endpointId. The answer API is rejected if the device is not alerting for the call or the device does not support answer via API.", - Method: "POST", Path: "/telephony/calls/members/{memberId}/answer", Host: HostWebex, - Params: []Param{ - {Name: "memberId", In: InPath, Flag: "member-id", Usage: "Unique identifier for the member. Member ID can be one of the following: person, workspace, or virtual line"}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Id of the organization to which the member belongs. If not provided, the orgId of the Service App is used. If provided, the organization must be the same as or managed by the Service App's organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "callId", Flag: "call-id", Type: "string"}, - {Name: "endpointId", Flag: "endpoint-id", Type: "string"}, - }}, -} - -var CallingCallControlsHangupMemberId = &Operation{ - ID: "CallingCallControlsHangupMemberId", Area: "calling", Group: "call-controls", Command: "hangup-member-id", - Summary: "Hangup by Member ID", - Description: "Hangup a call. If used on an unanswered incoming call, the call is rejected and sent to busy.", - Method: "POST", Path: "/telephony/calls/members/{memberId}/hangup", Host: HostWebex, - Params: []Param{ - {Name: "memberId", In: InPath, Flag: "member-id", Usage: "Unique identifier for the member. Member ID can be one of the following: person, workspace, or virtual line"}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Id of the organization to which the member belongs. If not provided, the orgId of the Service App is used. If provided, the organization must be the same as or managed by the Service App's organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "callId", Flag: "call-id", Type: "string"}, - }}, -} - -var CallingCallControlsListMemberId = &Operation{ - ID: "CallingCallControlsListMemberId", Area: "calling", Group: "call-controls", Command: "list-member-id", - Summary: "List Calls by Member ID", - Description: "Get the list of details for all active calls associated with the member.", - Method: "GET", Path: "/telephony/calls/members/{memberId}/calls", Host: HostWebex, - Params: []Param{ - {Name: "memberId", In: InPath, Flag: "member-id", Usage: "Unique identifier for the member. Member ID can be one of the following: person, workspace, or virtual line"}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Id of the organization to which the member belongs. If not provided, the orgId of the Service App is used. If provided, the organization must be the same as or managed by the Service App's organization."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var CallingCallControlsGetMemberId = &Operation{ - ID: "CallingCallControlsGetMemberId", Area: "calling", Group: "call-controls", Command: "get-member-id", - Summary: "Get Call Details by Member ID", - Description: "Get the details of the specified active call for the member.", - Method: "GET", Path: "/telephony/calls/members/{memberId}/calls/{callId}", Host: HostWebex, - Params: []Param{ - {Name: "memberId", In: InPath, Flag: "member-id", Usage: "Unique identifier for the member. Member ID can be one of the following: person, workspace, or virtual line"}, - {Name: "callId", In: InPath, Flag: "call-id", Usage: "The call identifier of the call."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Id of the organization to which the member belongs. If not provided, the orgId of the Service App is used. If provided, the organization must be the same as or managed by the Service App's organization."}, - }, -} - -var CallingCallControlsPull = &Operation{ - ID: "CallingCallControlsPull", Area: "calling", Group: "call-controls", Command: "pull", - Summary: "Pull", - Description: "Pull a call from one device to another. A temporary new call is initiated to perform the call pull in a similar manner to the dial command. When a user answers an alerting device, the device is connected to the pulled call and the new call created for the call pull is released.", - Method: "POST", Path: "/telephony/calls/pull", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "endpointId", Flag: "endpoint-id", Type: "string"}, - {Name: "lineOwnerId", Flag: "line-owner-id", Type: "string"}, - }}, -} - -var CallingCallControlsForMeDial = &Operation{ - ID: "CallingCallControlsForMeDial", Area: "calling", Group: "call-controls-for-me", Command: "dial", - Summary: "Dial", - Description: "Initiate an outbound call to a specified destination. This is also commonly referred to as Click to Call or Click to Dial. Alerts occur on all the devices belonging to a user unless an optional endpointId is specified in which case only the device or application identified by the endpointId is alerted. When a user answers an alerting device, an outbound call is placed from that device to the destination.", - Method: "POST", Path: "/telephony/calls/members/me/dial", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "destination", Flag: "destination", Type: "string"}, - {Name: "endpointId", Flag: "endpoint-id", Type: "string"}, - {Name: "singleNumberReachPhoneNumber", Flag: "single-number-reach-phone-number", Type: "string"}, - {Name: "lineOwnerId", Flag: "line-owner-id", Type: "string"}, - }}, -} - -var CallingCallControlsForMeAnswer = &Operation{ - ID: "CallingCallControlsForMeAnswer", Area: "calling", Group: "call-controls-for-me", Command: "answer", - Summary: "Answer", - Description: "Answer an incoming call. When no endpointId is specified, the call is answered on the user's primary device. When an endpointId is specified, the call is answered on the device or application identified by the endpointId. The answer API is rejected if the device is not alerting for the call or the device does not support answer via API.", - Method: "POST", Path: "/telephony/calls/members/me/answer", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "callId", Flag: "call-id", Type: "string"}, - {Name: "endpointId", Flag: "endpoint-id", Type: "string"}, - {Name: "lineOwnerId", Flag: "line-owner-id", Type: "string"}, - }}, -} - -var CallingCallControlsForMeHangup = &Operation{ - ID: "CallingCallControlsForMeHangup", Area: "calling", Group: "call-controls-for-me", Command: "hangup", - Summary: "Hangup", - Description: "Hangup a call. If used on an unanswered incoming call, the call is rejected and sent to busy.", - Method: "POST", Path: "/telephony/calls/members/me/hangup", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "callId", Flag: "call-id", Type: "string"}, - {Name: "lineOwnerId", Flag: "line-owner-id", Type: "string"}, - }}, -} - -var CallingCallControlsForMeList = &Operation{ - ID: "CallingCallControlsForMeList", Area: "calling", Group: "call-controls-for-me", Command: "list", - Summary: "List Calls", - Description: "Get the list of details for all active calls associated with the user.", - Method: "GET", Path: "/telephony/calls/members/me/calls", Host: HostWebex, - Params: []Param{ - {Name: "lineOwnerId", In: InQuery, Flag: "line-owner-id", Usage: "The ID of a user, workspace, or virtual line for which there is a secondary line on a device owned by the user invoking the API."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var CallingCallControlsForMeGet = &Operation{ - ID: "CallingCallControlsForMeGet", Area: "calling", Group: "call-controls-for-me", Command: "get", - Summary: "Get Call Details", - Description: "Get the details of the specified active call for the user.", - Method: "GET", Path: "/telephony/calls/members/me/calls/{callId}", Host: HostWebex, - Params: []Param{ - {Name: "callId", In: InPath, Flag: "call-id", Usage: "The call identifier of the call."}, - {Name: "lineOwnerId", In: InQuery, Flag: "line-owner-id", Usage: "The ID of a user, workspace, or virtual line for which there is a secondary line on a device owned by the user invoking the API."}, - }, -} - -var CallingCallRoutingTest = &Operation{ - ID: "CallingCallRoutingTest", Area: "calling", Group: "call-routing", Command: "test", - Summary: "Test Call Routing", - Description: "Validates that an incoming call can be routed.\n\nDial plans route calls to on-premises destinations by use of trunks or route groups.\nThey are configured globally for an enterprise and apply to all users, regardless of location.\nA dial plan also specifies the routing choice (trunk or route group) for calls that match any of its dial patterns.\nSpecific dial patterns can be defined as part of your dial plan.\n\nTest call routing requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/actions/testCallRouting/invoke", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization in which we are validating a call routing."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "originatorId", Flag: "originator-id", Type: "string"}, - {Name: "originatorType", Flag: "originator-type", Type: "string"}, - {Name: "destination", Flag: "destination", Type: "string"}, - {Name: "originatorNumber", Flag: "originator-number", Type: "string"}, - {Name: "includeAppliedServices", Flag: "include-applied-services", Type: "bool"}, - }}, -} - -var CallingCallRoutingGetLgwDialPlanUsageTrunk = &Operation{ - ID: "CallingCallRoutingGetLgwDialPlanUsageTrunk", Area: "calling", Group: "call-routing", Command: "get-lgw-dial-plan-usage-trunk", - Summary: "Get Local Gateway Dial Plan Usage for a Trunk", - Description: "Get Local Gateway Dial Plan Usage for a Trunk.\n\nA trunk is a connection between Webex Calling and the premises, which terminates on the premises with a local gateway or other supported device.\nThe trunk can be assigned to a Route Group which is a group of trunks that allow Webex Calling to distribute calls over multiple trunks or to provide redundancy.\n\nRetrieving this information requires a full administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/premisePstn/trunks/{trunkId}/usageDialPlan", Host: HostWebex, - Params: []Param{ - {Name: "trunkId", In: InPath, Flag: "trunk-id", Usage: "ID of the trunk."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization to which the trunk belongs."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching objects."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of objects returned to this maximum count."}, - {Name: "order", In: InQuery, Flag: "order", Usage: "Order the trunks according to the designated fields. Available sort fields are `name`, and `locationName`. Sort order is ascending by default"}, - {Name: "name", In: InQuery, Flag: "name", Usage: "Return the list of trunks matching the local gateway names"}, - {Name: "name", In: InQuery, Flag: "name", Usage: "Return the list of trunks matching the local gateway names"}, - }, - Paging: &Paging{}, -} - -var CallingCallRoutingGetLocationsLgwPstnConnection = &Operation{ - ID: "CallingCallRoutingGetLocationsLgwPstnConnection", Area: "calling", Group: "call-routing", Command: "get-locations-lgw-pstn-connection", - Summary: "Get Locations Using the Local Gateway as PSTN Connection Routing", - Description: "Get Locations Using the Local Gateway as PSTN Connection Routing.\n\nA trunk is a connection between Webex Calling and the premises, which terminates on the premises with a local gateway or other supported device.\nThe trunk can be assigned to a Route Group which is a group of trunks that allow Webex Calling to distribute calls over multiple trunks or to provide redundancy.\n\nRetrieving this information requires a full administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/premisePstn/trunks/{trunkId}/usagePstnConnection", Host: HostWebex, - Params: []Param{ - {Name: "trunkId", In: InPath, Flag: "trunk-id", Usage: "ID of the trunk."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization to which the trunk belongs."}, - }, -} - -var CallingCallRoutingGetRouteGroupsLgw = &Operation{ - ID: "CallingCallRoutingGetRouteGroupsLgw", Area: "calling", Group: "call-routing", Command: "get-route-groups-lgw", - Summary: "Get Route Groups Using the Local Gateway", - Description: "Get Route Groups Using the Local Gateway.\n\nA trunk is a connection between Webex Calling and the premises, which terminates on the premises with a local gateway or other supported device.\nThe trunk can be assigned to a Route Group which is a group of trunks that allow Webex Calling to distribute calls over multiple trunks or to provide redundancy.\n\nRetrieving this information requires a full administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/premisePstn/trunks/{trunkId}/usageRouteGroup", Host: HostWebex, - Params: []Param{ - {Name: "trunkId", In: InPath, Flag: "trunk-id", Usage: "ID of the trunk."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization to which the trunk belongs."}, - }, -} - -var CallingCallRoutingGetLgwUsageCount = &Operation{ - ID: "CallingCallRoutingGetLgwUsageCount", Area: "calling", Group: "call-routing", Command: "get-lgw-usage-count", - Summary: "Get Local Gateway Usage Count", - Description: "Get Local Gateway Usage Count\n\nA trunk is a connection between Webex Calling and the premises, which terminates on the premises with a local gateway or other supported device.\nThe trunk can be assigned to a Route Group which is a group of trunks that allow Webex Calling to distribute calls over multiple trunks or to provide redundancy.\n\nRetrieving this information requires a full administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/premisePstn/trunks/{trunkId}/usage", Host: HostWebex, - Params: []Param{ - {Name: "trunkId", In: InPath, Flag: "trunk-id", Usage: "ID of the trunk."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization to which the trunk belongs."}, - }, -} - -var CallingCallRoutingUpdateDialPatterns = &Operation{ - ID: "CallingCallRoutingUpdateDialPatterns", Area: "calling", Group: "call-routing", Command: "update-dial-patterns", - Summary: "Modify Dial Patterns", - Description: "Modify dial patterns for the Dial Plan.\n\nDial plans route calls to on-premises destinations by use of trunks or route groups.\nThey are configured globally for an enterprise and apply to all users, regardless of location.\nA dial plan also specifies the routing choice (trunk or route group) for calls that match any of its dial patterns.\nSpecific dial patterns can be defined as part of your dial plan.\n\nModifying a dial pattern requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/premisePstn/dialPlans/{dialPlanId}/dialPatterns", Host: HostWebex, - Params: []Param{ - {Name: "dialPlanId", In: InPath, Flag: "dial-plan-id", Usage: "ID of the dial plan being modified."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization to which dial plan belongs."}, - }, - Body: &Body{}, -} - -var CallingCallRoutingValidateDialPattern = &Operation{ - ID: "CallingCallRoutingValidateDialPattern", Area: "calling", Group: "call-routing", Command: "validate-dial-pattern", - Summary: "Validate a Dial Pattern", - Description: "Validate a Dial Pattern.\n\nDial plans route calls to on-premises destinations by use of trunks or route groups.\nThey are configured globally for an enterprise and apply to all users, regardless of location.\nA dial plan also specifies the routing choice (trunk or route group) for calls that match any of its dial patterns.\nSpecific dial patterns can be defined as part of your dial plan.\n\nValidating a dial pattern requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/premisePstn/actions/validateDialPatterns/invoke", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization to which dial plan belongs."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "dialPatterns", Flag: "dial-patterns", Type: "[]string"}, - }}, -} - -var CallingCallRoutingListDialPlans = &Operation{ - ID: "CallingCallRoutingListDialPlans", Area: "calling", Group: "call-routing", Command: "list-dial-plans", - Summary: "Read the List of Dial Plans", - Description: "List all Dial Plans for the organization.\n\nDial plans route calls to on-premises destinations by use of the trunks or route groups with which the dial plan is associated. Multiple dial patterns can be defined as part of your dial plan. Dial plans are configured globally for an enterprise and apply to all users, regardless of location.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/premisePstn/dialPlans", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List dial plans for this organization."}, - {Name: "dialPlanName", In: InQuery, Flag: "dial-plan-name", Usage: "Return the list of dial plans matching the dial plan name."}, - {Name: "routeGroupName", In: InQuery, Flag: "route-group-name", Usage: "Return the list of dial plans matching the Route group name.."}, - {Name: "trunkName", In: InQuery, Flag: "trunk-name", Usage: "Return the list of dial plans matching the Trunk name.."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of objects returned to this maximum count."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching objects."}, - {Name: "order", In: InQuery, Flag: "order", Usage: "Order the dial plans according to the designated fields. Available sort fields: `name`, `routeName`, `routeType`. Sort order is ascending by default"}, - }, - Paging: &Paging{}, -} - -var CallingCallRoutingCreateDialPlan = &Operation{ - ID: "CallingCallRoutingCreateDialPlan", Area: "calling", Group: "call-routing", Command: "create-dial-plan", - Summary: "Create a Dial Plan", - Description: "Create a Dial Plan for the organization.\n\nDial plans route calls to on-premises destinations by use of trunks or route groups.\nThey are configured globally for an enterprise and apply to all users, regardless of location.\nA dial plan also specifies the routing choice (trunk or route group) for calls that match any of its dial patterns.\nSpecific dial patterns can be defined as part of your dial plan.\n\nCreating a dial plan requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/premisePstn/dialPlans", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization to which dial plan belongs."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "name", Flag: "name", Type: "string"}, - {Name: "routeId", Flag: "route-id", Type: "string"}, - {Name: "routeType", Flag: "route-type", Type: "string"}, - {Name: "dialPatterns", Flag: "dial-patterns", Type: "[]string"}, - }}, -} - -var CallingCallRoutingGetDialPlan = &Operation{ - ID: "CallingCallRoutingGetDialPlan", Area: "calling", Group: "call-routing", Command: "get-dial-plan", - Summary: "Get a Dial Plan", - Description: "Get a Dial Plan for the organization.\n\nDial plans route calls to on-premises destinations by use of trunks or route groups.\nThey are configured globally for an enterprise and apply to all users, regardless of location.\nA dial plan also specifies the routing choice (trunk or route group) for calls that match any of its dial patterns.\nSpecific dial patterns can be defined as part of your dial plan.\n\nRetrieving a dial plan requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/premisePstn/dialPlans/{dialPlanId}", Host: HostWebex, - Params: []Param{ - {Name: "dialPlanId", In: InPath, Flag: "dial-plan-id", Usage: "ID of the dial plan."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization to which dial plan belongs."}, - }, -} - -var CallingCallRoutingUpdateDialPlan = &Operation{ - ID: "CallingCallRoutingUpdateDialPlan", Area: "calling", Group: "call-routing", Command: "update-dial-plan", - Summary: "Modify a Dial Plan", - Description: "Modify a Dial Plan for the organization.\n\nDial plans route calls to on-premises destinations by use of trunks or route groups.\nThey are configured globally for an enterprise and apply to all users, regardless of location.\nA dial plan also specifies the routing choice (trunk or route group) for calls that match any of its dial patterns.\nSpecific dial patterns can be defined as part of your dial plan.\n\nModifying a dial plan requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/premisePstn/dialPlans/{dialPlanId}", Host: HostWebex, - Params: []Param{ - {Name: "dialPlanId", In: InPath, Flag: "dial-plan-id", Usage: "ID of the dial plan being modified."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization to which dial plan belongs."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "name", Flag: "name", Type: "string"}, - {Name: "routeId", Flag: "route-id", Type: "string"}, - {Name: "routeType", Flag: "route-type", Type: "string"}, - }}, -} - -var CallingCallRoutingDeleteDialPlan = &Operation{ - ID: "CallingCallRoutingDeleteDialPlan", Area: "calling", Group: "call-routing", Command: "delete-dial-plan", - Summary: "Delete a Dial Plan", - Description: "Delete a Dial Plan for the organization.\n\nDial plans route calls to on-premises destinations by use of trunks or route groups.\nThey are configured globally for an enterprise and apply to all users, regardless of location.\nA dial plan also specifies the routing choice (trunk or route group) for calls that match any of its dial patterns.\nSpecific dial patterns can be defined as part of your dial plan.\n\nDeleting a dial plan requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/premisePstn/dialPlans/{dialPlanId}", Host: HostWebex, - Params: []Param{ - {Name: "dialPlanId", In: InPath, Flag: "dial-plan-id", Usage: "ID of the dial plan."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization to which dial plan belongs."}, - }, -} - -var CallingCallRoutingValidateLgwFqdnDomainTrunk = &Operation{ - ID: "CallingCallRoutingValidateLgwFqdnDomainTrunk", Area: "calling", Group: "call-routing", Command: "validate-lgw-fqdn-domain-trunk", - Summary: "Validate Local Gateway FQDN and Domain for a Trunk", - Description: "Validate Local Gateway FQDN and Domain for the organization trunks.\n\nA Trunk is a connection between Webex Calling and the premises, which terminates on the premises with a local gateway or other supported device.\nThe trunk can be assigned to a Route Group - a group of trunks that allow Webex Calling to distribute calls over multiple trunks or to provide redundancy.\n\nValidating Local Gateway FQDN and Domain requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/premisePstn/trunks/actions/fqdnValidation/invoke", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization to which trunk types belongs."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "address", Flag: "address", Type: "string"}, - {Name: "domain", Flag: "domain", Type: "string"}, - {Name: "port", Flag: "port", Type: "int64"}, - }}, -} - -var CallingCallRoutingListTrunks = &Operation{ - ID: "CallingCallRoutingListTrunks", Area: "calling", Group: "call-routing", Command: "list-trunks", - Summary: "Read the List of Trunks", - Description: "List all Trunks for the organization.\n\nA Trunk is a connection between Webex Calling and the premises, which terminates on the premises with a local gateway or other supported device.\nThe trunk can be assigned to a Route Group - a group of trunks that allow Webex Calling to distribute calls over multiple trunks or to provide redundancy.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/premisePstn/trunks", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List trunks for this organization."}, - {Name: "name", In: InQuery, Flag: "name", Usage: "Return the list of trunks matching the local gateway names."}, - {Name: "name", In: InQuery, Flag: "name", Usage: "Return the list of trunks matching the local gateway names."}, - {Name: "locationName", In: InQuery, Flag: "location-name", Usage: "Return the list of trunks matching the location names."}, - {Name: "locationName", In: InQuery, Flag: "location-name", Usage: "Return the list of trunks matching the location names."}, - {Name: "trunkType", In: InQuery, Flag: "trunk-type", Usage: "Return the list of trunks matching the trunk type."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of objects returned to this maximum count."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching objects."}, - {Name: "order", In: InQuery, Flag: "order", Usage: "Order the trunks according to the designated fields. Available sort fields: name, locationName. Sort order is ascending by default"}, - }, - Paging: &Paging{}, -} - -var CallingCallRoutingCreateTrunk = &Operation{ - ID: "CallingCallRoutingCreateTrunk", Area: "calling", Group: "call-routing", Command: "create-trunk", - Summary: "Create a Trunk", - Description: "Create a Trunk for the organization.\n\nA Trunk is a connection between Webex Calling and the premises, which terminates on the premises with a local gateway or other supported device.\nThe trunk can be assigned to a Route Group which is a group of trunks that allow Webex Calling to distribute calls over multiple trunks or to provide redundancy.\n\nCreating a trunk requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/premisePstn/trunks", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization to which the trunk belongs."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "name", Flag: "name", Type: "string"}, - {Name: "locationId", Flag: "location-id", Type: "string"}, - {Name: "password", Flag: "password", Type: "string"}, - {Name: "trunkType", Flag: "trunk-type", Type: "string"}, - {Name: "dualIdentitySupportEnabled", Flag: "dual-identity-support-enabled", Type: "bool"}, - {Name: "deviceType", Flag: "device-type", Type: "string"}, - {Name: "address", Flag: "address", Type: "string"}, - {Name: "domain", Flag: "domain", Type: "string"}, - {Name: "port", Flag: "port", Type: "int64"}, - {Name: "maxConcurrentCalls", Flag: "max-concurrent-calls", Type: "int64"}, - {Name: "pChargeInfoSupportPolicy", Flag: "p-charge-info-support-policy", Type: "string"}, - }}, -} - -var CallingCallRoutingGetTrunk = &Operation{ - ID: "CallingCallRoutingGetTrunk", Area: "calling", Group: "call-routing", Command: "get-trunk", - Summary: "Get a Trunk", - Description: "Get a Trunk for the organization.\n\nA Trunk is a connection between Webex Calling and the premises, which terminates on the premises with a local gateway or other supported device.\nThe trunk can be assigned to a Route Group - a group of trunks that allow Webex Calling to distribute calls over multiple trunks or to provide redundancy.\n\nRetrieving a trunk requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/premisePstn/trunks/{trunkId}", Host: HostWebex, - Params: []Param{ - {Name: "trunkId", In: InPath, Flag: "trunk-id", Usage: "ID of the trunk."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization to which trunk belongs."}, - }, -} - -var CallingCallRoutingUpdateTrunk = &Operation{ - ID: "CallingCallRoutingUpdateTrunk", Area: "calling", Group: "call-routing", Command: "update-trunk", - Summary: "Modify a Trunk", - Description: "Modify a Trunk for the organization.\n\nA Trunk is a connection between Webex Calling and the premises, which terminates on the premises with a local gateway or other supported device.\nThe trunk can be assigned to a Route Group - a group of trunks that allow Webex Calling to distribute calls over multiple trunks or to provide redundancy.\n\nModifying a trunk requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/premisePstn/trunks/{trunkId}", Host: HostWebex, - Params: []Param{ - {Name: "trunkId", In: InPath, Flag: "trunk-id", Usage: "ID of the trunk being modified."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization to which trunk belongs."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "name", Flag: "name", Type: "string"}, - {Name: "password", Flag: "password", Type: "string"}, - {Name: "dualIdentitySupportEnabled", Flag: "dual-identity-support-enabled", Type: "bool"}, - {Name: "maxConcurrentCalls", Flag: "max-concurrent-calls", Type: "int64"}, - {Name: "pChargeInfoSupportPolicy", Flag: "p-charge-info-support-policy", Type: "string"}, - }}, -} - -var CallingCallRoutingDeleteTrunk = &Operation{ - ID: "CallingCallRoutingDeleteTrunk", Area: "calling", Group: "call-routing", Command: "delete-trunk", - Summary: "Delete a Trunk", - Description: "Delete a Trunk for the organization.\n\nA Trunk is a connection between Webex Calling and the premises, which terminates on the premises with a local gateway or other supported device.\nThe trunk can be assigned to a Route Group - a group of trunks that allow Webex Calling to distribute calls over multiple trunks or to provide redundancy.\n\nDeleting a trunk requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/premisePstn/trunks/{trunkId}", Host: HostWebex, - Params: []Param{ - {Name: "trunkId", In: InPath, Flag: "trunk-id", Usage: "ID of the trunk."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization to which trunk belongs."}, - }, -} - -var CallingCallRoutingListTrunkTypes = &Operation{ - ID: "CallingCallRoutingListTrunkTypes", Area: "calling", Group: "call-routing", Command: "list-trunk-types", - Summary: "Read the List of Trunk Types", - Description: "List all Trunk Types with Device Types for the organization.\n\nA Trunk is a connection between Webex Calling and the premises, which terminates on the premises with a local gateway or other supported device.\nThe trunk can be assigned to a Route Group which is a group of trunks that allow Webex Calling to distribute calls over multiple trunks or to provide redundancy. Trunk Types are Registering or Certificate Based and are configured in Call Manager.\n\nRetrieving trunk types requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/premisePstn/trunks/trunkTypes", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization to which the trunk types belong."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var CallingCallRoutingListGroups = &Operation{ - ID: "CallingCallRoutingListGroups", Area: "calling", Group: "call-routing", Command: "list-groups", - Summary: "Read the List of Routing Groups", - Description: "List all Route Groups for an organization. A Route Group is a group of trunks that allows further scale and redundancy with the connection to the premises.\n\nRetrieving this route group list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/premisePstn/routeGroups", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List route groups for this organization."}, - {Name: "name", In: InQuery, Flag: "name", Usage: "Return the list of route groups matching the Route group name.."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of objects returned to this maximum count."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching objects."}, - {Name: "order", In: InQuery, Flag: "order", Usage: "Order the route groups according to designated fields. Available sort orders are `asc` and `desc`."}, - }, - Paging: &Paging{}, -} - -var CallingCallRoutingCreateRouteGroup = &Operation{ - ID: "CallingCallRoutingCreateRouteGroup", Area: "calling", Group: "call-routing", Command: "create-route-group", - Summary: "Create Route Group for a Organization", - Description: "Creates a Route Group for the organization.\n\nA Route Group is a collection of trunks that allows further scale and redundancy with the connection to the premises. Route groups can include up to 10 trunks from different locations.\n\nCreating a Route Group requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/premisePstn/routeGroups", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization to which the Route Group belongs."}, - }, - Body: &Body{}, -} - -var CallingCallRoutingGetRouteGroup = &Operation{ - ID: "CallingCallRoutingGetRouteGroup", Area: "calling", Group: "call-routing", Command: "get-route-group", - Summary: "Read a Route Group for a Organization", - Description: "Reads a Route Group for the organization based on id.\n\nA Route Group is a collection of trunks that allows further scale and redundancy with the connection to the premises. Route groups can include up to 10 trunks from different locations.\n\nReading a Route Group requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/premisePstn/routeGroups/{routeGroupId}", Host: HostWebex, - Params: []Param{ - {Name: "routeGroupId", In: InPath, Flag: "route-group-id", Usage: "Route Group for which details are being requested."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization of the Route Group."}, - }, -} - -var CallingCallRoutingUpdateRouteGroup = &Operation{ - ID: "CallingCallRoutingUpdateRouteGroup", Area: "calling", Group: "call-routing", Command: "update-route-group", - Summary: "Modify a Route Group for a Organization", - Description: "Modifies an existing Route Group for an organization based on id.\n\nA Route Group is a collection of trunks that allows further scale and redundancy with the connection to the premises. Route groups can include up to 10 trunks from different locations.\n\nModifying a Route Group requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/premisePstn/routeGroups/{routeGroupId}", Host: HostWebex, - Params: []Param{ - {Name: "routeGroupId", In: InPath, Flag: "route-group-id", Usage: "Route Group for which details are being requested."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization of the Route Group."}, - }, - Body: &Body{}, -} - -var CallingCallRoutingDeleteRouteGroupOrg = &Operation{ - ID: "CallingCallRoutingDeleteRouteGroupOrg", Area: "calling", Group: "call-routing", Command: "delete-route-group-org", - Summary: "Remove a Route Group from an Organization", - Description: "Remove a Route Group from an Organization based on id.\n\nA Route Group is a collection of trunks that allows further scale and redundancy with the connection to the premises. Route groups can include up to 10 trunks from different locations.\n\nRemoving a Route Group requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/premisePstn/routeGroups/{routeGroupId}", Host: HostWebex, - Params: []Param{ - {Name: "routeGroupId", In: InPath, Flag: "route-group-id", Usage: "Route Group for which details are being requested."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization of the Route Group."}, - }, -} - -var CallingCallRoutingGetUsageGroup = &Operation{ - ID: "CallingCallRoutingGetUsageGroup", Area: "calling", Group: "call-routing", Command: "get-usage-group", - Summary: "Read the Usage of a Routing Group", - Description: "List the number of \"Call to\" on-premises Extensions, Dial Plans, PSTN Connections, and Route Lists used by a specific Route Group.\nUsers within Call to Extension locations are registered to a PBX which allows you to route unknown extensions (calling number length of 2-6 digits) to the PBX using an existing Trunk or Route Group.\nPSTN Connections may be a Cisco PSTN, a cloud-connected PSTN, or a premises-based PSTN (local gateway).\nDial Plans allow you to route calls to on-premises extensions via your trunk or route group.\nRoute Lists are a list of numbers that can be reached via a route group and can be used to provide cloud PSTN connectivity to Webex Calling Dedicated Instance.\n\nRetrieving usage information requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/premisePstn/routeGroups/{routeGroupId}/usage", Host: HostWebex, - Params: []Param{ - {Name: "routeGroupId", In: InPath, Flag: "route-group-id", Usage: "ID of the requested Route group."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization associated with the specific route group."}, - }, -} - -var CallingCallRoutingGetExtensionLocationsGroup = &Operation{ - ID: "CallingCallRoutingGetExtensionLocationsGroup", Area: "calling", Group: "call-routing", Command: "get-extension-locations-group", - Summary: "Read the Call to Extension Locations of a Routing Group", - Description: "List \"Call to\" on-premises Extension Locations for a specific route group. Users within these locations are registered to a PBX which allows you to route unknown extensions (calling number length of 2-6 digits) to the PBX using an existing trunk or route group.\n\nRetrieving this location list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/premisePstn/routeGroups/{routeGroupId}/usageCallToExtension", Host: HostWebex, - Params: []Param{ - {Name: "routeGroupId", In: InPath, Flag: "route-group-id", Usage: "ID of the requested Route group."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization associated with specific route group."}, - {Name: "locationName", In: InQuery, Flag: "location-name", Usage: "Return the list of locations matching the location name."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of objects returned to this maximum count."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching objects."}, - {Name: "order", In: InQuery, Flag: "order", Usage: "Order the locations according to designated fields. Available sort orders are `asc`, and `desc`."}, - }, - Paging: &Paging{}, -} - -var CallingCallRoutingGetDialPlanLocationsGroup = &Operation{ - ID: "CallingCallRoutingGetDialPlanLocationsGroup", Area: "calling", Group: "call-routing", Command: "get-dial-plan-locations-group", - Summary: "Read the Dial Plan Locations of a Routing Group", - Description: "List Dial Plan Locations for a specific route group.\n\nDial Plans allow you to route calls to on-premises destinations by use of trunks or route groups. They are configured globally for an enterprise and apply to all users, regardless of location.\nA Dial Plan also specifies the routing choice (trunk or route group) for calls that match any of its dial patterns. Specific dial patterns can be defined as part of your dial plan.\n\nRetrieving this location list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/premisePstn/routeGroups/{routeGroupId}/usageDialPlan", Host: HostWebex, - Params: []Param{ - {Name: "routeGroupId", In: InPath, Flag: "route-group-id", Usage: "ID of the requested Route group."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization associated with specific route group."}, - {Name: "locationName", In: InQuery, Flag: "location-name", Usage: "Return the list of locations matching the location name."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of objects returned to this maximum count."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching objects."}, - {Name: "order", In: InQuery, Flag: "order", Usage: "Order the locations according to designated fields. Available sort orders are `asc`, and `desc`."}, - }, - Paging: &Paging{}, -} - -var CallingCallRoutingGetPstnConnectionLocationsGroup = &Operation{ - ID: "CallingCallRoutingGetPstnConnectionLocationsGroup", Area: "calling", Group: "call-routing", Command: "get-pstn-connection-locations-group", - Summary: "Read the PSTN Connection Locations of a Routing Group", - Description: "List PSTN Connection Locations for a specific route group. This solution lets you configure users to use Cloud PSTN (CCP or Cisco PSTN) or Premises-based PSTN.\n\nRetrieving this Location list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/premisePstn/routeGroups/{routeGroupId}/usagePstnConnection", Host: HostWebex, - Params: []Param{ - {Name: "routeGroupId", In: InPath, Flag: "route-group-id", Usage: "ID of the requested Route group."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization associated with specific route group."}, - {Name: "locationName", In: InQuery, Flag: "location-name", Usage: "Return the list of locations matching the location name."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of objects returned to this maximum count."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching objects."}, - {Name: "order", In: InQuery, Flag: "order", Usage: "Order the locations according to designated fields. Available sort orders are `asc`, and `desc`."}, - }, - Paging: &Paging{}, -} - -var CallingCallRoutingGetRouteListsGroup = &Operation{ - ID: "CallingCallRoutingGetRouteListsGroup", Area: "calling", Group: "call-routing", Command: "get-route-lists-group", - Summary: "Read the Route Lists of a Routing Group", - Description: "List Route Lists for a specific route group. Route Lists are a list of numbers that can be reached via a Route Group. It can be used to provide cloud PSTN connectivity to Webex Calling Dedicated Instance.\n\nRetrieving this list of Route Lists requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/premisePstn/routeGroups/{routeGroupId}/usageRouteList", Host: HostWebex, - Params: []Param{ - {Name: "routeGroupId", In: InPath, Flag: "route-group-id", Usage: "ID of the requested Route group."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization associated with specific route group."}, - {Name: "name", In: InQuery, Flag: "name", Usage: "Return the list of locations matching the location name."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of objects returned to this maximum count."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching objects."}, - {Name: "order", In: InQuery, Flag: "order", Usage: "Order the locations according to designated fields. Available sort orders are `asc`, and `desc`."}, - }, - Paging: &Paging{}, -} - -var CallingCallRoutingListRouteLists = &Operation{ - ID: "CallingCallRoutingListRouteLists", Area: "calling", Group: "call-routing", Command: "list-route-lists", - Summary: "Read the List of Route Lists", - Description: "List all Route Lists for the organization.\n\nA Route List is a list of numbers that can be reached via a Route Group. It can be used to provide cloud PSTN connectivity to Webex Calling Dedicated Instance.\n\nRetrieving the Route List requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/premisePstn/routeLists", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List all Route List for this organization."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching objects."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of objects returned to this maximum count."}, - {Name: "order", In: InQuery, Flag: "order", Usage: "Order the Route List according to the designated fields. Available sort fields are `name`, and `locationId`. Sort order is ascending by default"}, - {Name: "name", In: InQuery, Flag: "name", Usage: "Return the list of Route List matching the route list name."}, - {Name: "name", In: InQuery, Flag: "name", Usage: "Return the list of Route List matching the route list name."}, - {Name: "locationId", In: InQuery, Flag: "location-id", Usage: "Return the list of Route Lists matching the location id."}, - {Name: "locationId", In: InQuery, Flag: "location-id", Usage: "Return the list of Route Lists matching the location id."}, - }, - Paging: &Paging{}, -} - -var CallingCallRoutingCreateRouteList = &Operation{ - ID: "CallingCallRoutingCreateRouteList", Area: "calling", Group: "call-routing", Command: "create-route-list", - Summary: "Create a Route List", - Description: "Create a Route List for the organization.\n\nA Route List is a list of numbers that can be reached via a Route Group. It can be used to provide cloud PSTN connectivity to Webex Calling Dedicated Instance.\n\nCreating a Route List requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/premisePstn/routeLists", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization to which the Route List belongs."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "name", Flag: "name", Type: "string"}, - {Name: "locationId", Flag: "location-id", Type: "string"}, - {Name: "routeGroupId", Flag: "route-group-id", Type: "string"}, - }}, -} - -var CallingCallRoutingDeleteRouteList = &Operation{ - ID: "CallingCallRoutingDeleteRouteList", Area: "calling", Group: "call-routing", Command: "delete-route-list", - Summary: "Delete a Route List", - Description: "Delete a route list for a customer.\n\nA Route List is a list of numbers that can be reached via a Route Group. It can be used to provide cloud PSTN connectivity to Webex Calling Dedicated Instance.\n\nDeleting a Route List requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/premisePstn/routeLists/{routeListId}", Host: HostWebex, - Params: []Param{ - {Name: "routeListId", In: InPath, Flag: "route-list-id", Usage: "ID of the Route List."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization to which the Route List belongs."}, - }, -} - -var CallingCallRoutingGetRouteList = &Operation{ - ID: "CallingCallRoutingGetRouteList", Area: "calling", Group: "call-routing", Command: "get-route-list", - Summary: "Get a Route List", - Description: "Get a rout list details.\n\nA Route List is a list of numbers that can be reached via a Route Group. It can be used to provide cloud PSTN connectivity to Webex Calling Dedicated Instance.\n\nRetrieving a Route List requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/premisePstn/routeLists/{routeListId}", Host: HostWebex, - Params: []Param{ - {Name: "routeListId", In: InPath, Flag: "route-list-id", Usage: "ID of the Route List."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization to which the Route List belongs."}, - }, -} - -var CallingCallRoutingUpdateRouteList = &Operation{ - ID: "CallingCallRoutingUpdateRouteList", Area: "calling", Group: "call-routing", Command: "update-route-list", - Summary: "Modify a Route List", - Description: "Modify the details for a Route List.\n\nA Route List is a list of numbers that can be reached via a Route Group. It can be used to provide cloud PSTN connectivity to Webex Calling Dedicated Instance.\n\nRetrieving a Route List requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/premisePstn/routeLists/{routeListId}", Host: HostWebex, - Params: []Param{ - {Name: "routeListId", In: InPath, Flag: "route-list-id", Usage: "ID of the Route List."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization to which the Route List belongs."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "name", Flag: "name", Type: "string"}, - {Name: "routeGroupId", Flag: "route-group-id", Type: "string"}, - }}, -} - -var CallingCallRoutingUpdateNumbersRouteList = &Operation{ - ID: "CallingCallRoutingUpdateNumbersRouteList", Area: "calling", Group: "call-routing", Command: "update-numbers-route-list", - Summary: "Modify Numbers for Route List", - Description: "Modify numbers for a specific Route List of a Customer.\n\nA Route List is a list of numbers that can be reached via a Route Group. It can be used to provide cloud PSTN connectivity to Webex Calling Dedicated Instance.\n\nRetrieving a Route List requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/premisePstn/routeLists/{routeListId}/numbers", Host: HostWebex, - Params: []Param{ - {Name: "routeListId", In: InPath, Flag: "route-list-id", Usage: "ID of the Route List."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization to which the Route List belongs."}, - }, - Body: &Body{}, -} - -var CallingCallRoutingGetNumbersAssignedRouteList = &Operation{ - ID: "CallingCallRoutingGetNumbersAssignedRouteList", Area: "calling", Group: "call-routing", Command: "get-numbers-assigned-route-list", - Summary: "Get Numbers assigned to a Route List", - Description: "Get numbers assigned to a Route List\n\nA Route List is a list of numbers that can be reached via a Route Group. It can be used to provide cloud PSTN connectivity to Webex Calling Dedicated Instance.\n\nRetrieving a Route List requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "GET", Path: "/telephony/config/premisePstn/routeLists/{routeListId}/numbers", Host: HostWebex, - Params: []Param{ - {Name: "routeListId", In: InPath, Flag: "route-list-id", Usage: "ID of the Route List."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization to which the Route List belongs."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching objects."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of objects returned to this maximum count."}, - {Name: "number", In: InQuery, Flag: "number", Usage: "Number assigned to the route list."}, - {Name: "order", In: InQuery, Flag: "order", Usage: "Order the Route Lists according to number, ascending or descending."}, - }, - Paging: &Paging{}, -} - -var CallingCallRoutingGetLgwOnPremisesExtensionUsageTrunk = &Operation{ - ID: "CallingCallRoutingGetLgwOnPremisesExtensionUsageTrunk", Area: "calling", Group: "call-routing", Command: "get-lgw-on-premises-extension-usage-trunk", - Summary: "Get Local Gateway Call to On-Premises Extension Usage for a Trunk", - Description: "Get local gateway call to on-premises extension usage for a trunk.\n\nA trunk is a connection between Webex Calling and the premises, which terminates on the premises with a local gateway or other supported device.\nThe trunk can be assigned to a Route Group which is a group of trunks that allow Webex Calling to distribute calls over multiple trunks or to provide redundancy.\n\nRetrieving this information requires a full administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/premisePstn/trunks/{trunkId}/usageCallToExtension", Host: HostWebex, - Params: []Param{ - {Name: "trunkId", In: InPath, Flag: "trunk-id", Usage: "ID of the trunk."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization to which the trunk belongs."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching objects."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of objects returned to this maximum count."}, - {Name: "order", In: InQuery, Flag: "order", Usage: "Order the trunks according to the designated fields. Available sort fields are `name`, and `locationName`. Sort order is ascending by default"}, - {Name: "name", In: InQuery, Flag: "name", Usage: "Return the list of trunks matching the local gateway names"}, - {Name: "name", In: InQuery, Flag: "name", Usage: "Return the list of trunks matching the local gateway names"}, - }, - Paging: &Paging{}, -} - -var CallingCallRoutingCreateTranslationPattern = &Operation{ - ID: "CallingCallRoutingCreateTranslationPattern", Area: "calling", Group: "call-routing", Command: "create-translation-pattern", - Summary: "Create a Translation Pattern for an Organization", - Description: "Create a translation pattern for a given organization.\n\nA translation pattern lets you manipulate dialed digits before routing a call and applies to outbound calls only. See [this article](https://help.webex.com/en-us/article/nib9o6h/Translation-patterns-for-outbound-calls) for details about the translation pattern syntax.\n\nRequires a full administrator auth token with the `spark-admin:telephony_config_write` scope.", - Method: "POST", Path: "/telephony/config/callRouting/translationPatterns", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization containing the translation pattern."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "name", Flag: "name", Type: "string"}, - {Name: "matchingPattern", Flag: "matching-pattern", Type: "string"}, - {Name: "replacementPattern", Flag: "replacement-pattern", Type: "string"}, - }}, -} - -var CallingCallRoutingListTranslationPatterns = &Operation{ - ID: "CallingCallRoutingListTranslationPatterns", Area: "calling", Group: "call-routing", Command: "list-translation-patterns", - Summary: "Retrieve the list of Translation Patterns", - Description: "Retrieve a list of translation patterns for a given organization.\n\nA translation pattern lets you manipulate dialed digits before routing a call and applies to outbound calls only. See [this article](https://help.webex.com/en-us/article/nib9o6h/Translation-patterns-for-outbound-calls) for details about the translation pattern syntax.\n\nRequires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/callRouting/translationPatterns", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization containing the translation patterns."}, - {Name: "limitToLocationId", In: InQuery, Flag: "limit-to-location-id", Usage: "When a location ID is passed, then return only the corresponding location level translation patterns."}, - {Name: "limitToOrgLevelEnabled", In: InQuery, Flag: "limit-to-org-level-enabled", Usage: "When set to be `true`, then return only the organization-level translation patterns."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of objects returned to this maximum count."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching objects."}, - {Name: "order", In: InQuery, Flag: "order", Usage: "Sort the list of translation patterns according to translation pattern name, ascending or descending."}, - {Name: "name", In: InQuery, Flag: "name", Usage: "Only return translation patterns with the matching `name`."}, - {Name: "matchingPattern", In: InQuery, Flag: "matching-pattern", Usage: "Only return translation patterns with the matching `matchingPattern`."}, - }, - Paging: &Paging{}, -} - -var CallingCallRoutingGetTranslationPattern = &Operation{ - ID: "CallingCallRoutingGetTranslationPattern", Area: "calling", Group: "call-routing", Command: "get-translation-pattern", - Summary: "Retrieve a specific Translation Pattern for an Organization", - Description: "Retrieve the details of a translation pattern for a given organization.\n\nA translation pattern lets you manipulate dialed digits before routing a call and applies to outbound calls only. See [this article](https://help.webex.com/en-us/article/nib9o6h/Translation-patterns-for-outbound-calls) for details about the translation pattern syntax.\n\nRequires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/callRouting/translationPatterns/{translationId}", Host: HostWebex, - Params: []Param{ - {Name: "translationId", In: InPath, Flag: "translation-id", Usage: "Retrieve the translation pattern with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization containing the translation pattern."}, - }, -} - -var CallingCallRoutingUpdateTranslationPattern = &Operation{ - ID: "CallingCallRoutingUpdateTranslationPattern", Area: "calling", Group: "call-routing", Command: "update-translation-pattern", - Summary: "Modify a specific Translation Pattern for an Organization", - Description: "Modify a translation pattern for a given organization.\n\nA translation pattern lets you manipulate dialed digits before routing a call and applies to outbound calls only. See [this article](https://help.webex.com/en-us/article/nib9o6h/Translation-patterns-for-outbound-calls) for details about the translation pattern syntax.\n\nRequires a full administrator auth token with the `spark-admin:telephony_config_write` scope.", - Method: "PUT", Path: "/telephony/config/callRouting/translationPatterns/{translationId}", Host: HostWebex, - Params: []Param{ - {Name: "translationId", In: InPath, Flag: "translation-id", Usage: "Modify translation pattern with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization containing the translation pattern."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "name", Flag: "name", Type: "string"}, - {Name: "matchingPattern", Flag: "matching-pattern", Type: "string"}, - {Name: "replacementPattern", Flag: "replacement-pattern", Type: "string"}, - }}, -} - -var CallingCallRoutingDeleteTranslationPattern = &Operation{ - ID: "CallingCallRoutingDeleteTranslationPattern", Area: "calling", Group: "call-routing", Command: "delete-translation-pattern", - Summary: "Delete a specific Translation Pattern", - Description: "Delete a translation pattern for a given organization.\n\nA translation pattern lets you manipulate dialed digits before routing a call and applies to outbound calls only. See [this article](https://help.webex.com/en-us/article/nib9o6h/Translation-patterns-for-outbound-calls) for details about the translation pattern syntax.\n\nRequires a full administrator auth token with the `spark-admin:telephony_config_write` scope.", - Method: "DELETE", Path: "/telephony/config/callRouting/translationPatterns/{translationId}", Host: HostWebex, - Params: []Param{ - {Name: "translationId", In: InPath, Flag: "translation-id", Usage: "Delete a translation pattern with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization containing the translation pattern."}, - }, -} - -var CallingCallRoutingCreateTranslationPatternLocation = &Operation{ - ID: "CallingCallRoutingCreateTranslationPatternLocation", Area: "calling", Group: "call-routing", Command: "create-translation-pattern-location", - Summary: "Create a Translation Pattern for a Location", - Description: "Create a translation pattern for a given location.\n\nA translation pattern lets you manipulate dialed digits before routing a call and applies to outbound calls only. See [this article](https://help.webex.com/en-us/article/nib9o6h/Translation-patterns-for-outbound-calls) for details about the translation pattern syntax.\n\nRequires a full administrator auth token with the `spark-admin:telephony_config_write` scope.", - Method: "POST", Path: "/telephony/config/locations/{locationId}/callRouting/translationPatterns", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Unique identifier for the location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Only admin users of another organization (such as partners) may use this parameter since the default is the same organization as the token used to access API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "name", Flag: "name", Type: "string"}, - {Name: "matchingPattern", Flag: "matching-pattern", Type: "string"}, - {Name: "replacementPattern", Flag: "replacement-pattern", Type: "string"}, - }}, -} - -var CallingCallRoutingGetTranslationPatternLocation = &Operation{ - ID: "CallingCallRoutingGetTranslationPatternLocation", Area: "calling", Group: "call-routing", Command: "get-translation-pattern-location", - Summary: "Retrieve a specific Translation Pattern for a Location", - Description: "Retrieve a specific translation pattern for a given location.\n\nA translation pattern lets you manipulate dialed digits before routing a call and applies to outbound calls only. See [this article](https://help.webex.com/en-us/article/nib9o6h/Translation-patterns-for-outbound-calls) for details about the translation pattern syntax.\n\nRequires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/callRouting/translationPatterns/{translationId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Unique identifier for the location."}, - {Name: "translationId", In: InPath, Flag: "translation-id", Usage: "Unique identifier for the translation pattern."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Only admin users of another organization (such as partners) may use this parameter since the default is the same organization as the token used to access API."}, - }, -} - -var CallingCallRoutingUpdateTranslationPatternLocation = &Operation{ - ID: "CallingCallRoutingUpdateTranslationPatternLocation", Area: "calling", Group: "call-routing", Command: "update-translation-pattern-location", - Summary: "Modify a specific Translation Pattern for a Location", - Description: "Modify a specific translation pattern for a given location.\n\nA translation pattern lets you manipulate dialed digits before routing a call and applies to outbound calls only. See [this article](https://help.webex.com/en-us/article/nib9o6h/Translation-patterns-for-outbound-calls) for details about the translation pattern syntax.\n\nRequires a full administrator auth token with the `spark-admin:telephony_config_write` scope.", - Method: "PUT", Path: "/telephony/config/locations/{locationId}/callRouting/translationPatterns/{translationId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Unique identifier for the location."}, - {Name: "translationId", In: InPath, Flag: "translation-id", Usage: "Unique identifier for the translation pattern."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Only admin users of another organization (such as partners) may use this parameter since the default is the same organization as the token used to access API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "name", Flag: "name", Type: "string"}, - {Name: "matchingPattern", Flag: "matching-pattern", Type: "string"}, - {Name: "replacementPattern", Flag: "replacement-pattern", Type: "string"}, - }}, -} - -var CallingCallRoutingDeleteTranslationPatternLocation = &Operation{ - ID: "CallingCallRoutingDeleteTranslationPatternLocation", Area: "calling", Group: "call-routing", Command: "delete-translation-pattern-location", - Summary: "Delete a specific Translation Pattern for a Location", - Description: "Delete a specific translation pattern for a given location.\n\nA translation pattern lets you manipulate dialed digits before routing a call and applies to outbound calls only. See [this article](https://help.webex.com/en-us/article/nib9o6h/Translation-patterns-for-outbound-calls) for details about the translation pattern syntax.\n\nRequires a full administrator auth token with the `spark-admin:telephony_config_write` scope.", - Method: "DELETE", Path: "/telephony/config/locations/{locationId}/callRouting/translationPatterns/{translationId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Unique identifier for the location."}, - {Name: "translationId", In: InPath, Flag: "translation-id", Usage: "Unique identifier for the translation pattern."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Only admin users of another organization (such as partners) may use this parameter since the default is the same organization as the token used to access API."}, - }, -} - -var CallingLocationCallListDialPatterns = &Operation{ - ID: "CallingLocationCallListDialPatterns", Area: "calling", Group: "location-call", Command: "list-dial-patterns", - Summary: "Read the List of Dial Patterns", - Description: "List all Dial Patterns for the organization.\n\nDial plans route calls to on-premises destinations by use of trunks or route groups.\nThey are configured globally for an enterprise and apply to all users, regardless of location.\nA dial plan also specifies the routing choice (trunk or route group) for calls that match any of its dial patterns.\nSpecific dial patterns can be defined as part of your dial plan.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/premisePstn/dialPlans/{dialPlanId}/dialPatterns", Host: HostWebex, - Params: []Param{ - {Name: "dialPlanId", In: InPath, Flag: "dial-plan-id", Usage: "ID of the dial plan."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization to which the dial patterns belong."}, - {Name: "dialPattern", In: InQuery, Flag: "dial-pattern", Usage: "An enterprise dial pattern is represented by a sequence of digits (1-9), followed by optional wildcard characters.\nValid wildcard characters are `!` (matches any sequence of digits) and `X` (matches a single digit, 0-9).\nThe `!` wildcard can only occur once at the end and only in an E.164 pattern\n"}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of objects returned to this maximum count."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching objects."}, - {Name: "order", In: InQuery, Flag: "order", Usage: "Order the dial patterns according to the designated fields. Available sort fields: `dialPattern`."}, - }, - Paging: &Paging{}, -} - -var CallingLocationCallListWebexCalling = &Operation{ - ID: "CallingLocationCallListWebexCalling", Area: "calling", Group: "location-call", Command: "list-webex-calling", - Summary: "List Locations Webex Calling Details", - Description: "Lists Webex Calling locations for an organization with Webex Calling details.\n\nSearching and viewing locations with Webex Calling details in your\norganization require an administrator auth token with the\n`spark-admin:telephony_config_read` scope.", - Method: "GET", Path: "/telephony/config/locations", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List locations for this organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the maximum number of locations in the response."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Specify the offset from the first result that you want to fetch."}, - {Name: "name", In: InQuery, Flag: "name", Usage: "List locations whose name contains this string."}, - {Name: "order", In: InQuery, Flag: "order", Usage: "Sort the list of locations based on `name`, either asc or desc."}, - }, - Paging: &Paging{}, -} - -var CallingLocationCallEnableWebexCalling = &Operation{ - ID: "CallingLocationCallEnableWebexCalling", Area: "calling", Group: "location-call", Command: "enable-webex-calling", - Summary: "Enable a Location for Webex Calling", - Description: "Enable a location by adding it to Webex Calling. This add Webex Calling support to a\nlocation created created using the POST /v1/locations API.\n\nLocations are used to support calling features which can be defined at the location level.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/locations", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, - Body: &Body{}, -} - -var CallingLocationCallGetWebexCalling = &Operation{ - ID: "CallingLocationCallGetWebexCalling", Area: "calling", Group: "location-call", Command: "get-webex-calling", - Summary: "Get Location Webex Calling Details", - Description: "Shows Webex Calling details for a location, by ID.\n\nSpecifies the location ID in the locationId parameter in the URI.\n\nSearching and viewing locations in your organization requires an administrator auth token with the spark-admin:telephony_config_read scope.", - Method: "GET", Path: "/telephony/config/locations/{locationId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Retrieve Webex Calling location attributes for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve Webex Calling location attributes for this organization."}, - }, -} - -var CallingLocationCallUpdateWebexCalling = &Operation{ - ID: "CallingLocationCallUpdateWebexCalling", Area: "calling", Group: "location-call", Command: "update-webex-calling", - Summary: "Update Location Webex Calling Details", - Description: "Update Webex Calling details for a location, by ID.\n\nSpecifies the location ID in the `locationId` parameter in the URI.\n\nModifying the `connection` via API is only supported for the local PSTN types of `TRUNK` and `ROUTE_GROUP`.\n\nUpdating a location in your organization requires an administrator auth token with the `spark-admin:telephony_config_write` scope.", - Method: "PUT", Path: "/telephony/config/locations/{locationId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Updating Webex Calling location attributes for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Updating Webex Calling location attributes for this organization."}, - }, - Body: &Body{}, -} - -var CallingLocationCallListUpdateRoutingPrefixJobs = &Operation{ - ID: "CallingLocationCallListUpdateRoutingPrefixJobs", Area: "calling", Group: "location-call", Command: "list-update-routing-prefix-jobs", - Summary: "Get a List of Update Routing Prefix jobs", - Description: "Get the list of all update routing prefix jobs in an organization.\n\nThe routing prefix is associated with a location and is used to route calls belonging to that location.\nThis API allows users to retrieve all the update routing prefix jobs in an organization.\n\nRetrieving the list of update routing prefix jobs in an organization requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/jobs/updateRoutingPrefix", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve list of update routing prefix jobs in this organization."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var CallingLocationCallGetJobStatusUpdateRoutingPrefixJob = &Operation{ - ID: "CallingLocationCallGetJobStatusUpdateRoutingPrefixJob", Area: "calling", Group: "location-call", Command: "get-job-status-update-routing-prefix-job", - Summary: "Get the job status of Update Routing Prefix job", - Description: "Get the status of the update routing prefix job by its job ID.\n\nThe routing prefix is associated with a location and is used to route calls belonging to that location.\nThis API allows users to check the status of update routing prefix job by job ID in an organization.\n\nChecking the status of the update routing prefix job in an organization requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/jobs/updateRoutingPrefix/{jobId}", Host: HostWebex, - Params: []Param{ - {Name: "jobId", In: InPath, Flag: "job-id", Usage: "Retrieve job status for this `jobId`."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Check update routing prefix job status in this organization."}, - }, -} - -var CallingLocationCallGetJobErrorsUpdateRoutingPrefixJob = &Operation{ - ID: "CallingLocationCallGetJobErrorsUpdateRoutingPrefixJob", Area: "calling", Group: "location-call", Command: "get-job-errors-update-routing-prefix-job", - Summary: "Get job errors for update routing prefix job", - Description: "GET job errors for the update routing prefix job in an organization.\n\nThe routing prefix is associated with a location and is used to route calls belonging to that location.\nThis API allows users to retrieve all the errors of the update routing prefix job by job ID in an organization.\n\nRetrieving all the errors of the update routing prefix job in an organization requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/jobs/updateRoutingPrefix/{jobId}/errors", Host: HostWebex, - Params: []Param{ - {Name: "jobId", In: InPath, Flag: "job-id", Usage: "Retrieve job errors for this `jobId`."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve list of errors for update routing prefix job in this organization."}, - }, -} - -var CallingLocationCallUpdateAnnouncementLanguage = &Operation{ - ID: "CallingLocationCallUpdateAnnouncementLanguage", Area: "calling", Group: "location-call", Command: "update-announcement-language", - Summary: "Change Announcement Language", - Description: "Change announcement language for the given location.\n\nChange announcement language for current people/workspaces and/or existing feature configurations. This does not change the default announcement language which is applied to new users/workspaces and new feature configurations.\n\nChanging the announcement language for the given location requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/locations/{locationId}/actions/modifyAnnouncementLanguage/invoke", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Change announcement language for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Change announcement language for this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "announcementLanguageCode", Flag: "announcement-language-code", Type: "string"}, - {Name: "agentEnabled", Flag: "agent-enabled", Type: "bool"}, - {Name: "serviceEnabled", Flag: "service-enabled", Type: "bool"}, - }}, -} - -var CallingLocationCallGetEmergencyCallback = &Operation{ - ID: "CallingLocationCallGetEmergencyCallback", Area: "calling", Group: "location-call", Command: "get-emergency-callback", - Summary: "Get a Location Emergency callback number", - Description: "Get location emergency callback number.\n\n* To retrieve location callback number requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/features/emergencyCallbackNumber", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Update location attributes for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Update location attributes for this organization."}, - }, -} - -var CallingLocationCallUpdateEmergencyCallback = &Operation{ - ID: "CallingLocationCallUpdateEmergencyCallback", Area: "calling", Group: "location-call", Command: "update-emergency-callback", - Summary: "Update a Location Emergency callback number", - Description: "Update details for a location emergency callback number.\n\n* Updating a location callback number requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/locations/{locationId}/features/emergencyCallbackNumber", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Update location attributes for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Update location attributes for this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "selected", Flag: "selected", Type: "string"}, - {Name: "locationMemberId", Flag: "location-member-id", Type: "string"}, - {Name: "elinExpiryTimeMinutes", Flag: "elin-expiry-time-minutes", Type: "int64"}, - }}, -} - -var CallingLocationCallValidateListExtensions = &Operation{ - ID: "CallingLocationCallValidateListExtensions", Area: "calling", Group: "location-call", Command: "validate-list-extensions", - Summary: "Validate the List of Extensions", - Description: "Validates the list of Extensions provided by the customer at the organization level. It checks the extension meets the current extension length limits and does not conflict with the extensions of organization-level entities and settings. To check for extension use across all locations, use the [Get Phone Numbers](/v1/telephony/config/numbers) API. To validate an extension and check for conflicts for a specific location, use the [Validate Extensions](/docs/api/v1/location-call-settings/validate-extensions) API.\n\nRetrieving this list requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "POST", Path: "/telephony/config/actions/validateExtensions/invoke", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Validate Extension for this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "extensions", Flag: "extensions", Type: "[]string"}, - }}, -} - -var CallingLocationCallValidateExtensions = &Operation{ - ID: "CallingLocationCallValidateExtensions", Area: "calling", Group: "location-call", Command: "validate-extensions", - Summary: "Validate Extensions", - Description: "Validate extensions for a specific location.\n\nValidating extensions requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/locations/{locationId}/actions/validateExtensions/invoke", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Validate extensions for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Validate extensions for this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "extensions", Flag: "extensions", Type: "[]string"}, - }}, -} - -var CallingLocationCallUpdateMusicHold = &Operation{ - ID: "CallingLocationCallUpdateMusicHold", Area: "calling", Group: "location-call", Command: "update-music-hold", - Summary: "Update Music On Hold", - Description: "Update the location's music on hold settings.\n\nLocation music on hold settings allows you to play music when a call is placed on hold or parked.\n\nUpdating a location's music on hold settings requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/locations/{locationId}/musicOnHold", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Update music on hold settings for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Update music on hold settings for this organization."}, - }, - Body: &Body{}, -} - -var CallingLocationCallGetMusicHold = &Operation{ - ID: "CallingLocationCallGetMusicHold", Area: "calling", Group: "location-call", Command: "get-music-hold", - Summary: "Get Music On Hold", - Description: "Retrieve the location's music on hold settings.\n\nLocation music on hold settings allows you to play music when a call is placed on hold or parked.\n\nRetrieving a location's music on hold settings requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/musicOnHold", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Retrieve music on hold settings for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve music on hold settings for this organization."}, - }, -} - -var CallingLocationCallGetPrivateNetworkConnect = &Operation{ - ID: "CallingLocationCallGetPrivateNetworkConnect", Area: "calling", Group: "location-call", Command: "get-private-network-connect", - Summary: "Get Private Network Connect", - Description: "Retrieve the location's network connection type.\n\nNetwork Connection Type determines if the location's network connection is public or private.\n\nRetrieving a location's network connection type requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/privateNetworkConnect", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Retrieve the network connection type for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve the network connection type for this organization."}, - }, -} - -var CallingLocationCallUpdatePrivateNetworkConnect = &Operation{ - ID: "CallingLocationCallUpdatePrivateNetworkConnect", Area: "calling", Group: "location-call", Command: "update-private-network-connect", - Summary: "Update Private Network Connect", - Description: "Update the location's network connection type.\n\nNetwork Connection Type determines if the location's network connection is public or private.\n\nUpdating a location's network connection type requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/locations/{locationId}/privateNetworkConnect", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Update the network connection type for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Update network connection type for this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "networkConnectionType", Flag: "network-connection-type", Type: "string"}, - }}, -} - -var CallingLocationCallListRoutingChoices = &Operation{ - ID: "CallingLocationCallListRoutingChoices", Area: "calling", Group: "location-call", Command: "list-routing-choices", - Summary: "Read the List of Routing Choices", - Description: "List all Routes for the organization.\n\nTrunk and Route Group qualify as Route. Trunks and Route Groups provide you the ability to configure Webex Calling to manage calls between Webex Calling hosted users and premises PBX users. This solution lets you configure users to use Cloud PSTN (CCP or Cisco PSTN) or Premises-based PSTN.\n\nRetrieving this list requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/routeChoices", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List route identities for this organization."}, - {Name: "routeGroupName", In: InQuery, Flag: "route-group-name", Usage: "Return the list of route identities matching the Route group name."}, - {Name: "trunkName", In: InQuery, Flag: "trunk-name", Usage: "Return the list of route identities matching the Trunk name."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of objects returned to this maximum count."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching objects."}, - {Name: "order", In: InQuery, Flag: "order", Usage: "Order the route identities according to the designated fields. Available sort fields: `routeName`, `routeType`."}, - }, - Paging: &Paging{}, -} - -var CallingLocationCallListPhoneNumbersAvailableExternalCallerId = &Operation{ - ID: "CallingLocationCallListPhoneNumbersAvailableExternalCallerId", Area: "calling", Group: "location-call", Command: "list-phone-numbers-available-external-caller-id", - Summary: "Get the List of Phone Numbers Available for External Caller ID", - Description: "Get the list of phone numbers available for external caller ID usage by a Webex Calling entity (such as a person, virtual line, or workspace) within the specified location.\nNumbers from the specified location are returned and cross location numbers are returned as well where the number's location has the same country, PSTN provider, and zone (only applicable for India locations) as the specified location.\nWhen `personId` is specified, and the person belongs to a cisco PSTN location, has a mobile number assigned as primary DN, and does not have a billing plan, only the assigned mobile number is returned as the available number for caller ID.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/externalCallerId/availableNumbers", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Retrieve available external caller ID numbers for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List numbers for this organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of phone numbers returned to this maximum count. The default is 2000."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching phone numbers. The default is 0."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the provided list in the `phoneNumber` array."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the provided list in the `phoneNumber` array."}, - {Name: "ownerName", In: InQuery, Flag: "owner-name", Usage: "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255."}, - {Name: "personId", In: InQuery, Flag: "person-id", Usage: "Retrieve available external caller ID numbers for this person. If `personId` is not provided it may result in the unsuccessful assignment of the returned number. This parameter has no effect when workspace or virtual line ID is used."}, - }, - Paging: &Paging{}, -} - -var CallingLocationCallGetAvailableNumbers = &Operation{ - ID: "CallingLocationCallGetAvailableNumbers", Area: "calling", Group: "location-call", Command: "get-available-numbers", - Summary: "Get Available Phone Numbers for a Location with Given Criteria", - Description: "List the service and standard PSTN numbers that are available to be assigned as the location's main number.\nThese numbers are associated with the location specified in the request URL and can be active/inactive and assigned to an owning entity or unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/availableNumbers", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Return the list of phone numbers for this location within the given organization. The maximum length is 36."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List numbers for this organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of phone numbers returned to this maximum count. The default is 2000."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching phone numbers. The default is 0."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "ownerName", In: InQuery, Flag: "owner-name", Usage: "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255."}, - }, - Paging: &Paging{}, -} - -var CallingLocationCallGetWebexGoAvailableNumbers = &Operation{ - ID: "CallingLocationCallGetWebexGoAvailableNumbers", Area: "calling", Group: "location-call", Command: "get-webex-go-available-numbers", - Summary: "Get Webex Go Available Phone Numbers", - Description: "List standard numbers that are available to be assigned as the webex go phone number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/webexGo/availableNumbers", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Return the list of phone numbers for this location within the given organization. The maximum length is 36."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List numbers for this organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of phone numbers returned to this maximum count. The default is 2000."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching phone numbers. The default is 0."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - }, - Paging: &Paging{}, -} - -var CallingLocationCallGetEcbnAvailableNumbers = &Operation{ - ID: "CallingLocationCallGetEcbnAvailableNumbers", Area: "calling", Group: "location-call", Command: "get-ecbn-available-numbers", - Summary: "Get Location ECBN Available Phone Numbers", - Description: "List standard numbers that are available to be assigned as the location's emergency callback number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are assigned to an owning entity.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/emergencyCallbackNumber/availableNumbers", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Return the list of phone numbers for this location within the given organization. The maximum length is 36."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List numbers for this organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of phone numbers returned to this maximum count. The default is 2000."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching phone numbers. The default is 0."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "ownerName", In: InQuery, Flag: "owner-name", Usage: "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255."}, - }, - Paging: &Paging{}, -} - -var CallingLocationCallGetInterceptAvailableNumbers = &Operation{ - ID: "CallingLocationCallGetInterceptAvailableNumbers", Area: "calling", Group: "location-call", Command: "get-intercept-available-numbers", - Summary: "Get Location Call Intercept Available Phone Numbers", - Description: "List the service and standard PSTN numbers that are available to be assigned as the location's call intercept number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are assigned to an owning entity.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/callIntercept/availableNumbers", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Return the list of phone numbers for this location within the given organization. The maximum length is 36."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List numbers for this organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of phone numbers returned to this maximum count. The default is 2000."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching phone numbers. The default is 0."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "ownerName", In: InQuery, Flag: "owner-name", Usage: "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255."}, - {Name: "extension", In: InQuery, Flag: "extension", Usage: "Returns the list of phone numbers with the given `extension`."}, - }, - Paging: &Paging{}, -} - -var CallingLocationCallCreateReceptionistContactDirectory = &Operation{ - ID: "CallingLocationCallCreateReceptionistContactDirectory", Area: "calling", Group: "location-call", Command: "create-receptionist-contact-directory", - Summary: "Create a Receptionist Contact Directory", - Description: "Create a new Receptionist Contact Directory for a location.\n\nReceptionist Contact Directories can be used to create named directories of users and/or location features (Auto Attendant, Call Queue, Hunt Group, Single Number Reach, and Paging Group).\n\nAdding a directory requires a full or write-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/locations/{locationId}/receptionistContacts/directories", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Add a Receptionist Contact Directory to this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Add a Receptionist Contact Directory to this organization."}, - }, - Body: &Body{}, -} - -var CallingLocationCallListReceptionistContactDirectories = &Operation{ - ID: "CallingLocationCallListReceptionistContactDirectories", Area: "calling", Group: "location-call", Command: "list-receptionist-contact-directories", - Summary: "Read list of Receptionist Contact Directories", - Description: "List all Receptionist Contact Directories for a location.\n\nReceptionist Contact Directories can be used to create named directories of users.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/receptionistContacts/directories", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "List Receptionist Contact Directories for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List Receptionist Contact Directories for this organization."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var CallingLocationCallGetReceptionistContactDirectory = &Operation{ - ID: "CallingLocationCallGetReceptionistContactDirectory", Area: "calling", Group: "location-call", Command: "get-receptionist-contact-directory", - Summary: "Get details for a Receptionist Contact Directory", - Description: "Get details for a specific Receptionist Contact Directory from a location.\n\nReceptionist Contact Directories are uniquely named per location and contain directories of Persons, Auto Attendants, Call Queues, Hunt Groups, Single Number Reaches, and Paging Groups.\n\nThis API is currently supported for Webex calling organizations with fewer than 2000 users or location-based calling features. For organizations with more than 2000 users or location features, the API will throw an error 25395.\n\nRetrieving details requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/receptionistContacts/directories/{directoryId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Get a Receptionist Contact Directory from this location."}, - {Name: "directoryId", In: InPath, Flag: "directory-id", Usage: "Get details for the Receptionist Contact Directory with this identifier."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Get a Receptionist Contact Directory from this organization."}, - {Name: "searchCriteriaModeOr", In: InQuery, Flag: "search-criteria-mode-or", Usage: "When `true`, results matching any one of the search criteria are included. The value can only be `true` or not included in the request. Specifying `searchCriteriaModeOr` without any search criteria, or setting it to `false` results in an `ErrorResponse`. If no search criteria is specified, all results are returned."}, - {Name: "firstName", In: InQuery, Flag: "first-name", Usage: "Search for directories that contain people with the indicated first name."}, - {Name: "lastName", In: InQuery, Flag: "last-name", Usage: "Search for directories that contain people with the indicated last name."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Search for directories that contain people with the indicated phone number."}, - {Name: "extension", In: InQuery, Flag: "extension", Usage: "Search for directories that contain people with the indicated extension."}, - {Name: "personId", In: InQuery, Flag: "person-id", Usage: "Search for directories that contain people with the indicated person ID."}, - }, -} - -var CallingLocationCallDeleteReceptionistContactDirectory = &Operation{ - ID: "CallingLocationCallDeleteReceptionistContactDirectory", Area: "calling", Group: "location-call", Command: "delete-receptionist-contact-directory", - Summary: "Delete a Receptionist Contact Directory", - Description: "Delete a Receptionist Contact Directory from a location.\n\nReceptionist Contact Directories can be used to create named directories of users.\n\nDeleting a directory requires a full or write-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/locations/{locationId}/receptionistContacts/directories/{directoryId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Delete a Receptionist Contact Directory from this location."}, - {Name: "directoryId", In: InPath, Flag: "directory-id", Usage: "Delete the Receptionist Contact Directory ID with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Delete a Receptionist Contact Directory from this organization."}, - }, -} - -var CallingLocationCallUpdateReceptionistContactDirectory = &Operation{ - ID: "CallingLocationCallUpdateReceptionistContactDirectory", Area: "calling", Group: "location-call", Command: "update-receptionist-contact-directory", - Summary: "Modify a Receptionist Contact Directory", - Description: "Modify Receptionist Contact Directories attached to a location. This modification will replace the existing list of contacts with the new incoming contacts list from the request body. The API does not support incremental updates.\n\nReceptionist Contact Directories can be used to create named groups of Persons, Auto Attendants, Call Queues, Hunt Groups, Single Number Reaches, and Paging Groups.\n\nModifying a directory requires a full or write-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/locations/{locationId}/receptionistContacts/directories/{directoryId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Modify list of Receptionist Contact Directories for this location."}, - {Name: "directoryId", In: InPath, Flag: "directory-id", Usage: "Get details for the Receptionist Contact Directory with this identifier."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Modify list of Receptionist Contact Directories for this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "name", Flag: "name", Type: "string"}, - {Name: "contacts", Flag: "contacts", Type: "[]string"}, - }}, -} - -var CallingLocationCallGetAvailableChargeNumbers = &Operation{ - ID: "CallingLocationCallGetAvailableChargeNumbers", Area: "calling", Group: "location-call", Command: "get-available-charge-numbers", - Summary: "Get Available Charge Numbers for a Location with Given Criteria", - Description: "List the numbers that are available to be assigned as the location's charge number.\n\nThese numbers are non-toll-free and non-mobile numbers assigned to the location specified in the request URL.\n\nRetrieving this list requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/chargeNumber/availableNumbers", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Return the list of available charge numbers for this location within the given organization. The maximum length is 36."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List numbers for this organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of phone numbers returned to this maximum count. The default is 2000."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching phone numbers. The default is 0."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "ownerName", In: InQuery, Flag: "owner-name", Usage: "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255."}, - }, - Paging: &Paging{}, -} - -var CallingLocationCallDisableWebexCalling = &Operation{ - ID: "CallingLocationCallDisableWebexCalling", Area: "calling", Group: "location-call", Command: "disable-webex-calling", - Summary: "Disable a Location for Webex Calling", - Description: "Disable a Location for Webex Calling.\n\nInitiating a disable calling location job requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\nThe API returns a jobId that can be used with other job-related APIs to track the status and progress of the disable operation.", - Method: "POST", Path: "/telephony/config/jobs/locations/deleteCallingLocation", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization ID for disabling the location for Webex Calling."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "locationId", Flag: "location-id", Type: "string"}, - {Name: "locationName", Flag: "location-name", Type: "string"}, - {Name: "forceDelete", Flag: "force-delete", Type: "bool"}, - }}, -} - -var CallingLocationCallListDisableCallingJobs = &Operation{ - ID: "CallingLocationCallListDisableCallingJobs", Area: "calling", Group: "location-call", Command: "list-disable-calling-jobs", - Summary: "Get a List of Disable Calling Location Jobs", - Description: "Get a List of Disable Calling Location Jobs for the organization.\n\nRetrieving the list of disable calling location jobs requires a full administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/jobs/locations/deleteCallingLocation", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List disable calling location jobs for this organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Maximum number of jobs to return."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Offset to start returning records from."}, - }, - Paging: &Paging{}, -} - -var CallingLocationCallCheckDeleteCheckDisablingWebexCalling = &Operation{ - ID: "CallingLocationCallCheckDeleteCheckDisablingWebexCalling", Area: "calling", Group: "location-call", Command: "check-delete-check-disabling-webex-calling", - Summary: "Safe Delete Check Before Disabling a Location for Webex Calling", - Description: "Performs a safe delete check operation to identify any issues that would prevent the calling location from being disabled. This API helps identify resources that need to be addressed before a calling location can be successfully disabled.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "POST", Path: "/telephony/config/locations/{locationId}/actions/precheckForDeletion/invoke", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Unique identifier for the location to be checked."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization ID for which the safe delete check operation is being performed."}, - }, -} - -var CallingLocationCallPauseDisableCallingJob = &Operation{ - ID: "CallingLocationCallPauseDisableCallingJob", Area: "calling", Group: "location-call", Command: "pause-disable-calling-job", - Summary: "Pause a Disable Calling Location Job", - Description: "Pause an in-progress disable calling location job. The job must be in the PROCESSING state to be paused.\n\nPausing a job requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/jobs/locations/deleteCallingLocation/{jobId}/actions/pause/invoke", Host: HostWebex, - Params: []Param{ - {Name: "jobId", In: InPath, Flag: "job-id", Usage: "Unique identifier for the job to pause."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization ID for which to pause the job."}, - }, -} - -var CallingLocationCallResumePausedDisableCallingJob = &Operation{ - ID: "CallingLocationCallResumePausedDisableCallingJob", Area: "calling", Group: "location-call", Command: "resume-paused-disable-calling-job", - Summary: "Resume a Paused Disable Calling Location Job", - Description: "Resume a previously paused disable calling location job. The job must be in the PAUSED state to be resumed.\n\nResuming a job requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/jobs/locations/deleteCallingLocation/{jobId}/actions/resume/invoke", Host: HostWebex, - Params: []Param{ - {Name: "jobId", In: InPath, Flag: "job-id", Usage: "Unique identifier for the job to resume."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization ID for which to resume the job."}, - }, -} - -var CallingLocationCallGetErrorsDisableCallingJob = &Operation{ - ID: "CallingLocationCallGetErrorsDisableCallingJob", Area: "calling", Group: "location-call", Command: "get-errors-disable-calling-job", - Summary: "Retrieve Errors for a Disable Calling Location Job", - Description: "Retrieve detailed error information for a disable calling location job. This is particularly useful for jobs that have failed or encountered errors during processing.\n\nRetrieving job errors requires a full administrator auth token with a scope of `spark-admin:telephony_config_read`.\n\nPossible error codes include:\n* `BATCH-1012002` - Unable to delete calling location from Broadworks.\n* `BATCH-1012004` - Safe delete checks failed.\n* `BATCH-1012005` - Failed to perform safe delete checks.\n* `BATCH-1012006` - Trunks in use in the location. Count: {0}\n* `BATCH-1012007` - Users associated with the location. Count: {0}\n* `BATCH-1012008` - Workspaces associated with the location. Count: {0}\n* `BATCH-1012009` - Virtual lines associated with the location. Count: {0}\n* `BATCH-1012010` - Number order is pending.\n* `BATCH-1012011` - Features associated with the location. This is a blocking error, use forceDelete to disable the calling location.\n* `BATCH-1012012` - Not allowed to delete the last calling location. Calling requires at least one active location in the organization, This is a blocking error.\n* `BATCH-1012013` - Local gateway's associated with the location. Count: {0}. This is a blocking error, use forceDelete to disable the calling location.\n* `BATCH-1012014` - Location not found.", - Method: "GET", Path: "/telephony/config/jobs/locations/deleteCallingLocation/{jobId}/errors", Host: HostWebex, - Params: []Param{ - {Name: "jobId", In: InPath, Flag: "job-id", Usage: "Unique identifier for the job to get errors for."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization ID for disable calling location job."}, - }, -} - -var CallingLocationCallGetDisableCallingJobStatus = &Operation{ - ID: "CallingLocationCallGetDisableCallingJobStatus", Area: "calling", Group: "location-call", Command: "get-disable-calling-job-status", - Summary: "Get Disable Calling Location Job Status", - Description: "Get the status and details of a specific disable calling location job.\n\nRetrieving job status requires a full administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/jobs/locations/deleteCallingLocation/{jobId}", Host: HostWebex, - Params: []Param{ - {Name: "jobId", In: InPath, Flag: "job-id", Usage: "Unique identifier for the job."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization ID for which to retrieve the job status."}, - }, -} - -var CallingLocationCallGetCaptionsSettings = &Operation{ - ID: "CallingLocationCallGetCaptionsSettings", Area: "calling", Group: "location-call", Command: "get-captions-settings", - Summary: "Get the location call captions settings", - Description: "Retrieve the location's call captions settings.\n\n**NOTE**: The call captions feature is not supported for locations in India.\n\nThe call caption feature allows the customer to enable and manage closed captions and transcript functionality (rolling caption panel) in Webex Calling, without requiring the user to escalate the call to a meeting.\n\nThis API requires a full, read-only, or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/callCaptions", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Unique identifier for the location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Unique identifier for the organization."}, - }, -} - -var CallingLocationCallUpdateCaptionsSettings = &Operation{ - ID: "CallingLocationCallUpdateCaptionsSettings", Area: "calling", Group: "location-call", Command: "update-captions-settings", - Summary: "Update the location call captions settings", - Description: "Update the location's call captions settings.\n\n**NOTE**: The call captions feature is not supported for locations in India.\n\nThe call caption feature allows the customer to enable and manage closed captions and transcript functionality (rolling caption panel) in Webex Calling, without requiring the user to escalate the call to a meeting.\n\nThis API requires a full or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/locations/{locationId}/callCaptions", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Unique identifier for the location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Unique identifier for the organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "locationClosedCaptionsEnabled", Flag: "location-closed-captions-enabled", Type: "bool"}, - {Name: "locationTranscriptsEnabled", Flag: "location-transcripts-enabled", Type: "bool"}, - {Name: "useOrgSettingsEnabled", Flag: "use-org-settings-enabled", Type: "bool"}, - }}, -} - -var CallingCallSettingsForMeGetMyPersonalAssistant = &Operation{ - ID: "CallingCallSettingsForMeGetMyPersonalAssistant", Area: "calling", Group: "call-settings-for-me", Command: "get-my-personal-assistant", - Summary: "Get My Personal Assistant", - Description: "Retrieve user's own Personal Assistant details.\n\nPersonal Assistant is used to manage a user's incoming calls when they are away.\n\nRetrieving Personal Assistant details requires a user auth token with `spark:telephony_config_read` scope.", - Method: "GET", Path: "/telephony/config/people/me/settings/personalAssistant", Host: HostWebex, -} - -var CallingCallSettingsForMeUpdateMyPersonalAssistant = &Operation{ - ID: "CallingCallSettingsForMeUpdateMyPersonalAssistant", Area: "calling", Group: "call-settings-for-me", Command: "update-my-personal-assistant", - Summary: "Modify My Personal Assistant", - Description: "Update user's own Personal Assistant details.\n\nPersonal Assistant is used to manage a user's incoming calls when they are away.\n\nUpdating Personal Assistant details requires a user auth token with the `spark:telephony_config_write` scope.", - Method: "PUT", Path: "/telephony/config/people/me/settings/personalAssistant", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "enabled", Flag: "enabled", Type: "bool"}, - {Name: "presence", Flag: "presence", Type: "string"}, - {Name: "untilDateTime", Flag: "until-date-time", Type: "string"}, - {Name: "transferEnabled", Flag: "transfer-enabled", Type: "bool"}, - {Name: "transferNumber", Flag: "transfer-number", Type: "string"}, - {Name: "alerting", Flag: "alerting", Type: "string"}, - {Name: "alertMeFirstNumberOfRings", Flag: "alert-me-first-number-of-rings", Type: "int64"}, - }}, -} - -var CallingCallSettingsForMeListAvailablePreferredEndpoints = &Operation{ - ID: "CallingCallSettingsForMeListAvailablePreferredEndpoints", Area: "calling", Group: "call-settings-for-me", Command: "list-available-preferred-endpoints", - Summary: "Get List Available Preferred Answer Endpoints", - Description: "Get the person's preferred answer endpoint and the list of endpoints available for selection. The list of endpoints is empty if the person has no endpoints assigned which support the preferred answer endpoint functionality.\n\n A Webex Calling user may be associated with multiple endpoints such as Webex App (desktop or mobile), Cisco desk IP phone, Webex Calling-supported analog devices or third-party endpoints. Preferred answering endpoints allow users to specify which of these devices should be prioritized for answering calls, particularly when a person's extension (or a virtual line assigned to them) rings on multiple devices. This helps ensure that calls are answered on the most convenient or appropriate device for the person.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/availablePreferredAnswerEndpoints", Host: HostWebex, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var CallingCallSettingsForMeGetMySecondaryOwnerAvailablePreferredEndpointList = &Operation{ - ID: "CallingCallSettingsForMeGetMySecondaryOwnerAvailablePreferredEndpointList", Area: "calling", Group: "call-settings-for-me", Command: "get-my-secondary-owner-available-preferred-endpoint-list", - Summary: "Get My Secondary Line Owner's Available Preferred Answer Endpoint List", - Description: "Retrieve the list of available preferred answer endpoints for the secondary line owner of the authenticated person. \n\n A Webex Calling user may be associated with multiple endpoints such as Webex App (desktop or mobile), Cisco desk IP phone, Webex Calling-supported analog devices or third-party endpoints. Preferred answering endpoints allow users to specify which of these devices should be prioritized for answering calls, particularly when a person's extension (or a virtual line assigned to them) rings on multiple devices. This helps ensure that calls are answered on the most convenient or appropriate device for the person.\n\n This API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/secondaryLines/{lineOwnerId}/availablePreferredAnswerEndpoints", Host: HostWebex, - Params: []Param{ - {Name: "lineOwnerId", In: InPath, Flag: "line-owner-id", Usage: "Unique identifier for the secondary line owner (applicable only for Virtual Lines)."}, - }, -} - -var CallingCallSettingsForMeGetPreferredEndpoint = &Operation{ - ID: "CallingCallSettingsForMeGetPreferredEndpoint", Area: "calling", Group: "call-settings-for-me", Command: "get-preferred-endpoint", - Summary: "Get Preferred Answer Endpoint", - Description: "Retrieve the selected preferred answering endpoint for the user. If a preferred endpoint is not set for the person, API returns empty \n\n A Webex Calling user may be associated with multiple endpoints such as Webex App (desktop or mobile), Cisco desk IP phone, Webex Calling-supported analog devices or third-party endpoints. Preferred answering endpoints allow users to specify which of these devices should be prioritized for answering calls, particularly when a person's extension (or a virtual line assigned to them) rings on multiple devices. This helps ensure that calls are answered on the most convenient or appropriate device for the person.\n\n This API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/preferredAnswerEndpoint", Host: HostWebex, -} - -var CallingCallSettingsForMeUpdatePreferredEndpoint = &Operation{ - ID: "CallingCallSettingsForMeUpdatePreferredEndpoint", Area: "calling", Group: "call-settings-for-me", Command: "update-preferred-endpoint", - Summary: "Modify Preferred Answer Endpoint", - Description: "Sets or clears the person’s preferred answer endpoint. To clear the preferred answer endpoint the `id` attribute must be set to null.\n\n A Webex Calling user may be associated with multiple endpoints such as Webex App (desktop or mobile), Cisco desk IP phone, Webex Calling-supported analog devices or third-party endpoints. Preferred answering endpoints allow users to specify which of these devices should be prioritized for answering calls, particularly when a person's extension (or a virtual line assigned to them) rings on multiple devices. This helps ensure that calls are answered on the most convenient or appropriate device for the person.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/preferredAnswerEndpoint", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "preferredAnswerEndpointId", Flag: "preferred-answer-endpoint-id", Type: "string"}, - }}, -} - -var CallingCallSettingsForMeGetMySecondaryOwnerPreferredEndpoint = &Operation{ - ID: "CallingCallSettingsForMeGetMySecondaryOwnerPreferredEndpoint", Area: "calling", Group: "call-settings-for-me", Command: "get-my-secondary-owner-preferred-endpoint", - Summary: "Get My Secondary Line Owner's Preferred Answer Endpoint", - Description: "Retrieve the selected preferred answering endpoint for the secondary line owner of the authenticated person. If a preferred endpoint is not set for the person, API returns empty \n\n A Webex Calling user may be associated with multiple endpoints such as Webex App (desktop or mobile), Cisco desk IP phone, Webex Calling-supported analog devices or third-party endpoints. Preferred answering endpoints allow users to specify which of these devices should be prioritized for answering calls, particularly when a person's extension (or a virtual line assigned to them) rings on multiple devices. This helps ensure that calls are answered on the most convenient or appropriate device for the person.\n\n This API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/secondaryLines/{lineOwnerId}/preferredAnswerEndpoint", Host: HostWebex, - Params: []Param{ - {Name: "lineOwnerId", In: InPath, Flag: "line-owner-id", Usage: "Unique identifier for the secondary line owner (applicable only for Virtual Lines)."}, - }, -} - -var CallingCallSettingsForMeUpdateMySecondaryOwnerPreferredEndpoint = &Operation{ - ID: "CallingCallSettingsForMeUpdateMySecondaryOwnerPreferredEndpoint", Area: "calling", Group: "call-settings-for-me", Command: "update-my-secondary-owner-preferred-endpoint", - Summary: "Modify My Secondary Line Owner's Preferred Answer Endpoint", - Description: "Sets or clears the preferred answer endpoint for the secondary line owner of the authenticated person. To clear the preferred answer endpoint the `id` attribute must be set to null.\n\n A Webex Calling user may be associated with multiple endpoints such as Webex App (desktop or mobile), Cisco desk IP phone, Webex Calling-supported analog devices or third-party endpoints. Preferred answering endpoints allow users to specify which of these devices should be prioritized for answering calls, particularly when a person's extension (or a virtual line assigned to them) rings on multiple devices. This helps ensure that calls are answered on the most convenient or appropriate device for the person.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/secondaryLines/{lineOwnerId}/preferredAnswerEndpoint", Host: HostWebex, - Params: []Param{ - {Name: "lineOwnerId", In: InPath, Flag: "line-owner-id", Usage: "Unique identifier for the secondary line owner (applicable only for Virtual Lines)."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "preferredAnswerEndpointId", Flag: "preferred-answer-endpoint-id", Type: "string"}, - }}, -} - -var CallingCallSettingsForMeGetMyWebexgooverride = &Operation{ - ID: "CallingCallSettingsForMeGetMyWebexgooverride", Area: "calling", Group: "call-settings-for-me", Command: "get-my-webexgooverride", - Summary: "Get My WebexGoOverride Settings", - Description: "Retrieve \"Mobile User Aware\" override setting for Do Not Disturb feature.\n\nWhen enabled, a mobile device will still ring even if Do Not Disturb, Quiet Hours, or Presenting Status are enabled.\n\nWhen disabled, a mobile device will return busy for all incoming calls if Do Not Disturb, Quiet Hours, or Presenting Status are enabled.\n\nIt requires a user auth token with `spark:telephony_config_read` scope.", - Method: "GET", Path: "/telephony/config/people/me/settings/webexGoOverride", Host: HostWebex, -} - -var CallingCallSettingsForMeUpdateMyWebexgooverride = &Operation{ - ID: "CallingCallSettingsForMeUpdateMyWebexgooverride", Area: "calling", Group: "call-settings-for-me", Command: "update-my-webexgooverride", - Summary: "Modify My WebexGoOverride Settings", - Description: "Update \"Mobile User Aware\" override setting for Do Not Disturb feature.\n\nWhen enabled, a mobile device will still ring even if Do Not Disturb, Quiet Hours, or Presenting Status are enabled.\n\nWhen disabled, a mobile device will return busy for all incoming calls if Do Not Disturb, Quiet Hours, or Presenting Status are enabled.\n\nIt requires a user auth token with the `spark:telephony_config_write` scope.", - Method: "PUT", Path: "/telephony/config/people/me/settings/webexGoOverride", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "enabled", Flag: "enabled", Type: "bool"}, - }}, -} - -var CallingCallSettingsForMeGetMyCallerId = &Operation{ - ID: "CallingCallSettingsForMeGetMyCallerId", Area: "calling", Group: "call-settings-for-me", Command: "get-my-caller-id", - Summary: "Get My Caller ID Settings", - Description: "Get Caller ID Settings for the authenticated user.\n\nCalling Line ID Delivery Blocking in Webex prevents your name and phone number from being shown to people you call.\nConnected Line Identification Restriction allows you to block your name and phone number from being shown when receiving a call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/callerId", Host: HostWebex, -} - -var CallingCallSettingsForMeUpdateMyCallerId = &Operation{ - ID: "CallingCallSettingsForMeUpdateMyCallerId", Area: "calling", Group: "call-settings-for-me", Command: "update-my-caller-id", - Summary: "Modify My Caller ID Settings", - Description: "Update Caller ID Settings for the authenticated user.\n\nCalling Line ID Delivery Blocking in Webex prevents your name and phone number from being shown to people you call.\nConnected Line Identification Restriction allows you to block your name and phone number from being shown when receiving a call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/callerId", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "callingLineIdDeliveryBlockingEnabled", Flag: "calling-line-id-delivery-blocking-enabled", Type: "bool"}, - {Name: "connectedLineIdentificationRestrictionEnabled", Flag: "connected-line-identification-restriction-enabled", Type: "bool"}, - }}, -} - -var CallingCallSettingsForMeGetMySecondaryOwnerCallerId = &Operation{ - ID: "CallingCallSettingsForMeGetMySecondaryOwnerCallerId", Area: "calling", Group: "call-settings-for-me", Command: "get-my-secondary-owner-caller-id", - Summary: "Get My Secondary Line Owner Caller ID Settings", - Description: "Get Caller ID Settings for the secondary line owner of the authenticated user.\n\nNote that the secondary line information is only available for the authenticated user.\n\nCalling Line ID Delivery Blocking in Webex prevents your name and phone number from being shown to people you call.\nConnected Line Identification Restriction allows you to block your name and phone number from being shown when receiving a call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/secondaryLines/{lineownerId}/callerId", Host: HostWebex, - Params: []Param{ - {Name: "lineownerId", In: InPath, Flag: "lineowner-id", Usage: "Unique identifier for the secondary line owner (applicable only for Virtual Lines)."}, - }, -} - -var CallingCallSettingsForMeUpdateMySecondaryOwnerCallerId = &Operation{ - ID: "CallingCallSettingsForMeUpdateMySecondaryOwnerCallerId", Area: "calling", Group: "call-settings-for-me", Command: "update-my-secondary-owner-caller-id", - Summary: "Modify My Secondary Line Owner Caller ID Settings", - Description: "Update Caller ID Settings for the secondary line owner of the authenticated user.\n\nNote that the secondary line information is only available for the authenticated user.\n\nCalling Line ID Delivery Blocking in Webex prevents your name and phone number from being shown to people you call.\nConnected Line Identification Restriction allows you to block your name and phone number from being shown when receiving a call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/secondaryLines/{lineownerId}/callerId", Host: HostWebex, - Params: []Param{ - {Name: "lineownerId", In: InPath, Flag: "lineowner-id", Usage: "Unique identifier for the secondary line owner (applicable only for Virtual Lines)."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "callingLineIdDeliveryBlockingEnabled", Flag: "calling-line-id-delivery-blocking-enabled", Type: "bool"}, - {Name: "connectedLineIdentificationRestrictionEnabled", Flag: "connected-line-identification-restriction-enabled", Type: "bool"}, - }}, -} - -var CallingCallSettingsForMeGetMySelectedCallerId = &Operation{ - ID: "CallingCallSettingsForMeGetMySelectedCallerId", Area: "calling", Group: "call-settings-for-me", Command: "get-my-selected-caller-id", - Summary: "Read My Selected Caller ID Settings", - Description: "Read selected caller ID settings associated with the authenticated user.\n\nCaller ID settings control how a person's information is displayed when making outgoing calls.\nSelected Caller ID settings allow users to choose which configuration among available caller IDs is selected currently.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/selectedCallerId", Host: HostWebex, -} - -var CallingCallSettingsForMeUpdateMySelectedCallerId = &Operation{ - ID: "CallingCallSettingsForMeUpdateMySelectedCallerId", Area: "calling", Group: "call-settings-for-me", Command: "update-my-selected-caller-id", - Summary: "Configure My Selected Caller ID Settings", - Description: "Update selected caller ID settings associated with the authenticated user.\n\nCaller ID settings control how a person's information is displayed when making outgoing calls.\nSelected Caller ID settings allow users to choose which configuration among available caller IDs is selected currently.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/selectedCallerId", Host: HostWebex, - Body: &Body{}, -} - -var CallingCallSettingsForMeGetMySecondaryOwnerSelectedCallerId = &Operation{ - ID: "CallingCallSettingsForMeGetMySecondaryOwnerSelectedCallerId", Area: "calling", Group: "call-settings-for-me", Command: "get-my-secondary-owner-selected-caller-id", - Summary: "Get My Secondary Line Owner's Selected Caller ID Settings", - Description: "Get details of selected caller ID settings associated with a secondary line of the authenticated user.\n\nNote that an authenticated user can only retrieve information for their configured secondary lines.\n\nCaller ID settings control how a person's information is displayed when making outgoing calls.\nSelected Caller ID settings allow users to choose which configuration among available caller IDs is selected currently.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/secondaryLines/{lineownerId}/selectedCallerId", Host: HostWebex, - Params: []Param{ - {Name: "lineownerId", In: InPath, Flag: "lineowner-id", Usage: "Unique identifier for the secondary line owner (applicable only for Virtual Lines)."}, - }, -} - -var CallingCallSettingsForMeUpdateMySecondaryOwnerSelectedCallerId = &Operation{ - ID: "CallingCallSettingsForMeUpdateMySecondaryOwnerSelectedCallerId", Area: "calling", Group: "call-settings-for-me", Command: "update-my-secondary-owner-selected-caller-id", - Summary: "Modify My Secondary Line Owner's Selected Caller ID Settings", - Description: "Update selected caller ID settings associated with a secondary line owner of the authenticated user.\n\nNote that an authenticated user can only modify information for their configured secondary lines.\n\nCaller ID settings control how a person's information is displayed when making outgoing calls.\nSelected Caller ID settings allow users to choose which configuration among available caller IDs is selected currently.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/secondaryLines/{lineownerId}/selectedCallerId", Host: HostWebex, - Params: []Param{ - {Name: "lineownerId", In: InPath, Flag: "lineowner-id", Usage: "Unique identifier for the secondary line owner (applicable only for Virtual Lines)."}, - }, - Body: &Body{}, -} - -var CallingCallSettingsForMeGetMyAvailableCallerIdList = &Operation{ - ID: "CallingCallSettingsForMeGetMyAvailableCallerIdList", Area: "calling", Group: "call-settings-for-me", Command: "get-my-available-caller-id-list", - Summary: "Get My Available Caller ID List", - Description: "Get details of available caller IDs of the authenticated user.\n\nCaller ID settings control how a person's information is displayed when making outgoing calls.\nThe available caller ID list shows the caller IDs that the user can choose from.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/availableCallerIds", Host: HostWebex, -} - -var CallingCallSettingsForMeGetMySecondaryOwnerAvailableCallerIdList = &Operation{ - ID: "CallingCallSettingsForMeGetMySecondaryOwnerAvailableCallerIdList", Area: "calling", Group: "call-settings-for-me", Command: "get-my-secondary-owner-available-caller-id-list", - Summary: "Get My Secondary Line Owner's Available Caller ID List", - Description: "Get details of available caller IDs for a secondary line of the authenticated user.\n\nNote that an authenticated user can only retrieve information for their configured secondary lines.\n\nCaller ID settings control how a person's information is displayed when making outgoing calls.\nThe available caller ID list shows the caller IDs that the user can choose from.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/secondaryLines/{lineownerId}/availableCallerIds", Host: HostWebex, - Params: []Param{ - {Name: "lineownerId", In: InPath, Flag: "lineowner-id", Usage: "Unique identifier for the secondary line owner (applicable only for Virtual Lines)."}, - }, -} - -var CallingCallSettingsForMeListMyEndpoints = &Operation{ - ID: "CallingCallSettingsForMeListMyEndpoints", Area: "calling", Group: "call-settings-for-me", Command: "list-my-endpoints", - Summary: "Read the List of My Endpoints", - Description: "Retrieve the list of endpoints associated with the authenticated user.\n\nEndpoints are devices, applications, or hotdesking guest profiles. Endpoints can be owned by an authenticated user or have the user as a secondary line.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/endpoints", Host: HostWebex, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var CallingCallSettingsForMeGetMyEndpoints = &Operation{ - ID: "CallingCallSettingsForMeGetMyEndpoints", Area: "calling", Group: "call-settings-for-me", Command: "get-my-endpoints", - Summary: "Get My Endpoints Details", - Description: "Get details of an endpoint associated with the authenticated user.\n\nEndpoints are devices, applications, or hotdesking guest profiles. Endpoints can be owned by an authenticated user or have the user as a secondary line.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/endpoints/{endpointId}", Host: HostWebex, - Params: []Param{ - {Name: "endpointId", In: InPath, Flag: "endpoint-id", Usage: "Unique identifier of the endpoint."}, - }, -} - -var CallingCallSettingsForMeUpdateMyEndpoints = &Operation{ - ID: "CallingCallSettingsForMeUpdateMyEndpoints", Area: "calling", Group: "call-settings-for-me", Command: "update-my-endpoints", - Summary: "Modify My Endpoints Details", - Description: "Update alerting settings of the mobility endpoint associated with the authenticated user.\n\nEndpoints are devices, applications, or hotdesking guest profiles. Endpoints can be owned by an authenticated user or have the user as a secondary line.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/endpoints/{endpointId}", Host: HostWebex, - Params: []Param{ - {Name: "endpointId", In: InPath, Flag: "endpoint-id", Usage: "Unique identifier of the endpoint."}, - }, - Body: &Body{}, -} - -var CallingCallSettingsForMeGetMyRecording = &Operation{ - ID: "CallingCallSettingsForMeGetMyRecording", Area: "calling", Group: "call-settings-for-me", Command: "get-my-recording", - Summary: "Get My Call Recording Settings", - Description: "Get details of call recording settings associated with the authenticated user.\n\nCall recording settings allow you to access and customize options that determine when and how your calls are recorded, providing control over recording modes and notifications.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/callRecording", Host: HostWebex, -} - -var CallingCallSettingsForMeGetMySecondaryOwnerRecording = &Operation{ - ID: "CallingCallSettingsForMeGetMySecondaryOwnerRecording", Area: "calling", Group: "call-settings-for-me", Command: "get-my-secondary-owner-recording", - Summary: "Get My Secondary Line Owner's Call Recording Settings", - Description: "Get details of call recording settings associated with a secondary line of the authenticated user.\n\nNote that an authenticated user can only retrieve information for their configured secondary lines.\n\nCall recording settings allow you to access and customize options that determine when and how your calls are recorded, providing control over recording modes and notifications.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/secondaryLines/{lineownerId}/callRecording", Host: HostWebex, - Params: []Param{ - {Name: "lineownerId", In: InPath, Flag: "lineowner-id", Usage: "Unique identifier for the secondary line owner (applicable only for Virtual Lines)."}, - }, -} - -var CallingCallSettingsForMeGetMyOwn = &Operation{ - ID: "CallingCallSettingsForMeGetMyOwn", Area: "calling", Group: "call-settings-for-me", Command: "get-my-own", - Summary: "Get My Own Details", - Description: "Get profile details for the authenticated user.\n\nProfile details include the user's name, email, location and calling details.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me", Host: HostWebex, -} - -var CallingCallSettingsForMeGetMyAccessCodes = &Operation{ - ID: "CallingCallSettingsForMeGetMyAccessCodes", Area: "calling", Group: "call-settings-for-me", Command: "get-my-access-codes", - Summary: "Get My Feature Access Codes", - Description: "Retrieve all Feature Access Codes configured for services that are assigned to the authenticated user. For each feature access code, the name and code are returned. If an alternate code is defined, it is also returned.\n\nFeature access codes (FACs), also known as star codes, give users access to advanced calling features.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/featureAccessCode", Host: HostWebex, -} - -var CallingCallSettingsForMeGetMyAccessCodesSecondaryOwner = &Operation{ - ID: "CallingCallSettingsForMeGetMyAccessCodesSecondaryOwner", Area: "calling", Group: "call-settings-for-me", Command: "get-my-access-codes-secondary-owner", - Summary: "Get My Feature Access Codes For Secondary Line Owner", - Description: "Retrieve all Feature Access Codes configured for services that are assigned for the secondary line owner. For each feature access code, the name and code are returned. If an alternate code is defined, it is also returned.\n\nFeature access codes (FACs), also known as star codes, give users access to advanced calling features.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/secondaryLines/{lineownerId}/featureAccessCode", Host: HostWebex, - Params: []Param{ - {Name: "lineownerId", In: InPath, Flag: "lineowner-id", Usage: "Unique identifier for the secondary line owner (applicable only for Virtual Lines)."}, - }, -} - -var CallingCallSettingsForMeGetMyExecutiveAssignedAssistants = &Operation{ - ID: "CallingCallSettingsForMeGetMyExecutiveAssignedAssistants", Area: "calling", Group: "call-settings-for-me", Command: "get-my-executive-assigned-assistants", - Summary: "Get My Executive Assigned Assistants", - Description: "Get list of assigned executive assistants for an authenticated user.\n\nAs an executive, you can add assistants to your executive pool to manage calls for you. You can set when and which types of calls they can handle. Assistants can opt in when needed or opt out when not required.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/executive/assignedAssistants", Host: HostWebex, -} - -var CallingCallSettingsForMeUpdateMyExecutiveAssignedAssistants = &Operation{ - ID: "CallingCallSettingsForMeUpdateMyExecutiveAssignedAssistants", Area: "calling", Group: "call-settings-for-me", Command: "update-my-executive-assigned-assistants", - Summary: "Modify My Executive Assigned Assistants", - Description: "Update assigned executive assistants for the authenticated user.\n\nAs an executive, you can add assistants to your executive pool to manage calls for you. You can set when and which types of calls they can handle. Assistants can opt in when needed or opt out when not required.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/executive/assignedAssistants", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "allowOptInOutEnabled", Flag: "allow-opt-in-out-enabled", Type: "bool"}, - {Name: "assistantIds", Flag: "assistant-ids", Type: "[]string"}, - }}, -} - -var CallingCallSettingsForMeGetMyExecutiveAvailableAssistants = &Operation{ - ID: "CallingCallSettingsForMeGetMyExecutiveAvailableAssistants", Area: "calling", Group: "call-settings-for-me", Command: "get-my-executive-available-assistants", - Summary: "Get My Executive Available Assistants", - Description: "Get a list of available executive assistants for the authenticated user.\n\nAs an executive, you can add assistants to your executive pool to manage calls for you. You can set when and which types of calls they can handle. Assistants can opt in when needed or opt out when not required.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/executive/availableAssistants", Host: HostWebex, -} - -var CallingCallSettingsForMeGetMyExecutiveAssistant = &Operation{ - ID: "CallingCallSettingsForMeGetMyExecutiveAssistant", Area: "calling", Group: "call-settings-for-me", Command: "get-my-executive-assistant", - Summary: "Get My Executive Assistant Settings", - Description: "Get settings for an executive assistant.\n\nExecutive assistants can make, answer, intercept, and route calls appropriately on behalf of their executive.\nAssistants can also set the call forwarding destination, and join or leave an executive’s pool.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/executive/assistant", Host: HostWebex, -} - -var CallingCallSettingsForMeUpdateMyExecutiveAssistant = &Operation{ - ID: "CallingCallSettingsForMeUpdateMyExecutiveAssistant", Area: "calling", Group: "call-settings-for-me", Command: "update-my-executive-assistant", - Summary: "Modify My Executive Assistant Settings", - Description: "Update Settings for an executive assistant.\n\nExecutive assistants can make, answer, intercept, and route calls appropriately on behalf of their executive.\nAssistants can also set the call forwarding destination, and join or leave an executive’s pool.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/executive/assistant", Host: HostWebex, - Body: &Body{}, -} - -var CallingCallSettingsForMeGetMyCallingServices = &Operation{ - ID: "CallingCallSettingsForMeGetMyCallingServices", Area: "calling", Group: "call-settings-for-me", Command: "get-my-calling-services", - Summary: "Get My Calling Services List", - Description: "Retrieves the list of enabled calling services for the authenticated user.\n\nThese services are designed to improve call handling and ensure that users can manage their communications effectively. They are commonly found in both personal and business telephony systems.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/services", Host: HostWebex, -} - -var CallingCallSettingsForMeGetMySecondaryOwnerCallingServices = &Operation{ - ID: "CallingCallSettingsForMeGetMySecondaryOwnerCallingServices", Area: "calling", Group: "call-settings-for-me", Command: "get-my-secondary-owner-calling-services", - Summary: "Get My Secondary Line Owner Calling Services List", - Description: "Retrieves the list of enabled calling services for the secondary line owner of the authenticated user.\n\nThese services are designed to improve call handling and ensure that users can manage their communications effectively. They are commonly found in both personal and business telephony systems.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/secondaryLines/{lineownerId}/services", Host: HostWebex, - Params: []Param{ - {Name: "lineownerId", In: InPath, Flag: "lineowner-id", Usage: "Unique identifier for the secondary line owner (applicable only for Virtual Lines)."}, - }, -} - -var CallingCallSettingsForMeGetUserSingleNumberReach = &Operation{ - ID: "CallingCallSettingsForMeGetUserSingleNumberReach", Area: "calling", Group: "call-settings-for-me", Command: "get-user-single-number-reach", - Summary: "Get User's Single Number Reach Settings", - Description: "Retrieves all single number reach settings configured for the authenticated user.\n\nThe \"Single Number Reach\" feature in Webex allows users to access their business phone capabilities from any device, making it easy to make and receive calls as if at their office. This is especially useful for remote or mobile workers needing flexibility.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/singleNumberReach", Host: HostWebex, -} - -var CallingCallSettingsForMeUpdateUserSingleNumberReach = &Operation{ - ID: "CallingCallSettingsForMeUpdateUserSingleNumberReach", Area: "calling", Group: "call-settings-for-me", Command: "update-user-single-number-reach", - Summary: "Modify User's Single Number Reach Settings", - Description: "Updates single number reach settings associated with the authenticated user.\n\nThe \"Single Number Reach\" feature in Webex allows users to access their business phone capabilities from any device, making it easy to make and receive calls as if at their office. This is especially useful for remote or mobile workers needing flexibility.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/singleNumberReach", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "alertAllLocationsForClickToDialCallsEnabled", Flag: "alert-all-locations-for-click-to-dial-calls-enabled", Type: "bool"}, - }}, -} - -var CallingCallSettingsForMeCreatePhoneNumberUserSingleNumberReach = &Operation{ - ID: "CallingCallSettingsForMeCreatePhoneNumberUserSingleNumberReach", Area: "calling", Group: "call-settings-for-me", Command: "create-phone-number-user-single-number-reach", - Summary: "Add phone number as User's Single Number Reach", - Description: "Add a phone number as a single number reach for the authenticated user.\n\nThe \"Single Number Reach\" feature in Webex allows users to access their business phone capabilities from any device, making it easy to make and receive calls as if at their office. This is especially useful for remote or mobile workers needing flexibility.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/people/me/settings/singleNumberReach/numbers", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "phoneNumber", Flag: "phone-number", Type: "string"}, - {Name: "name", Flag: "name", Type: "string"}, - {Name: "enabled", Flag: "enabled", Type: "bool"}, - {Name: "doNotForwardCallsEnabled", Flag: "do-not-forward-calls-enabled", Type: "bool"}, - {Name: "answerConfirmationEnabled", Flag: "answer-confirmation-enabled", Type: "bool"}, - }}, -} - -var CallingCallSettingsForMeUpdateUserSingleNumberReachContact = &Operation{ - ID: "CallingCallSettingsForMeUpdateUserSingleNumberReachContact", Area: "calling", Group: "call-settings-for-me", Command: "update-user-single-number-reach-contact", - Summary: "Modify User's Single Number Reach Contact Settings", - Description: "Update the contact settings of single number reach for the authenticated user.\n\nThe \"Single Number Reach\" feature in Webex allows users to access their business phone capabilities from any device, making it easy to make and receive calls as if at their office. This is especially useful for remote or mobile workers needing flexibility.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/singleNumberReach/numbers/{phoneNumberId}", Host: HostWebex, - Params: []Param{ - {Name: "phoneNumberId", In: InPath, Flag: "phone-number-id", Usage: "Unique identifier of the phone number."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "phoneNumber", Flag: "phone-number", Type: "string"}, - {Name: "name", Flag: "name", Type: "string"}, - {Name: "enabled", Flag: "enabled", Type: "bool"}, - {Name: "doNotForwardCallsEnabled", Flag: "do-not-forward-calls-enabled", Type: "bool"}, - {Name: "answerConfirmationEnabled", Flag: "answer-confirmation-enabled", Type: "bool"}, - }}, -} - -var CallingCallSettingsForMeDeleteUserSingleNumberReachContact = &Operation{ - ID: "CallingCallSettingsForMeDeleteUserSingleNumberReachContact", Area: "calling", Group: "call-settings-for-me", Command: "delete-user-single-number-reach-contact", - Summary: "Delete User's Single Number Reach Contact Settings", - Description: "Delete contact settings associated with the authenticated user.\n\nThe \"Single Number Reach\" feature in Webex allows users to access their business phone capabilities from any device, making it easy to make and receive calls as if at their office. This is especially useful for remote or mobile workers needing flexibility.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/people/me/settings/singleNumberReach/numbers/{phoneNumberId}", Host: HostWebex, - Params: []Param{ - {Name: "phoneNumberId", In: InPath, Flag: "phone-number-id", Usage: "Unique identifier of the phone number."}, - }, -} - -var CallingCallSettingsForMeGetMyForward = &Operation{ - ID: "CallingCallSettingsForMeGetMyForward", Area: "calling", Group: "call-settings-for-me", Command: "get-my-forward", - Summary: "Read My Call Forwarding Settings", - Description: "Read call forwarding settings associated with the authenticated user.\n\nThree types of call forwarding are supported:\n\n+ Always - forwards all incoming calls to the destination you choose.\n\n+ When busy - forwards all incoming calls to the destination you chose while the phone is in use or the person is busy.\n\n+ When no answer - forwarding only occurs when you are away or not answering your phone.\n\nIn addition, the Business Continuity feature will send calls to a destination of your choice if your phone is not connected to the network for any reason, such as a power outage, failed Internet connection, or wiring problem.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/callForwarding", Host: HostWebex, -} - -var CallingCallSettingsForMeUpdateMyForward = &Operation{ - ID: "CallingCallSettingsForMeUpdateMyForward", Area: "calling", Group: "call-settings-for-me", Command: "update-my-forward", - Summary: "Configure My Call Forwarding Settings", - Description: "Update call forwarding settings associated with the authenticated user.\n\nThree types of call forwarding are supported:\n\n+ Always - forwards all incoming calls to the destination you choose.\n\n+ When busy - forwards all incoming calls to the destination you chose while the phone is in use or the person is busy.\n\n+ When no answer - forwarding only occurs when you are away or not answering your phone.\n\nIn addition, the Business Continuity feature will send calls to a destination of your choice if your phone is not connected to the network for any reason, such as a power outage, failed Internet connection, or wiring problem.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/callForwarding", Host: HostWebex, - Body: &Body{}, -} - -var CallingCallSettingsForMeGetMySecondaryOwnerForward = &Operation{ - ID: "CallingCallSettingsForMeGetMySecondaryOwnerForward", Area: "calling", Group: "call-settings-for-me", Command: "get-my-secondary-owner-forward", - Summary: "Get My Secondary Line Owner's Call Forwarding Settings", - Description: "Get details of call forwarding settings associated with a secondary line of the authenticated user.\n\nNote that an authenticated user can only retrieve information for their configured secondary lines.\n\nThree types of call forwarding are supported:\n\n+ Always - forwards all incoming calls to the destination you choose.\n\n+ When busy - forwards all incoming calls to the destination you chose while the phone is in use or the person is busy.\n\n+ When no answer - forwarding only occurs when you are away or not answering your phone.\n\nIn addition, the Business Continuity feature will send calls to a destination of your choice if your phone is not connected to the network for any reason, such as a power outage, failed Internet connection, or wiring problem.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/secondaryLines/{lineownerId}/callForwarding", Host: HostWebex, - Params: []Param{ - {Name: "lineownerId", In: InPath, Flag: "lineowner-id", Usage: "Unique identifier for the secondary line owner (applicable only for Virtual Lines)."}, - }, -} - -var CallingCallSettingsForMeUpdateMySecondaryOwnerForward = &Operation{ - ID: "CallingCallSettingsForMeUpdateMySecondaryOwnerForward", Area: "calling", Group: "call-settings-for-me", Command: "update-my-secondary-owner-forward", - Summary: "Modify My Secondary Line Owner's Call Forwarding Settings", - Description: "Update call forwarding settings associated with a secondary line owner of the authenticated user.\n\nNote that an authenticated user can only modify information for their configured secondary lines.\n\nThree types of call forwarding are supported:\n\n+ Always - forwards all incoming calls to the destination you choose.\n\n+ When busy - forwards all incoming calls to the destination you chose while the phone is in use or the person is busy.\n\n+ When no answer - forwarding only occurs when you are away or not answering your phone.\n\nIn addition, the Business Continuity feature will send calls to a destination of your choice if your phone is not connected to the network for any reason, such as a power outage, failed Internet connection, or wiring problem.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/secondaryLines/{lineownerId}/callForwarding", Host: HostWebex, - Params: []Param{ - {Name: "lineownerId", In: InPath, Flag: "lineowner-id", Usage: "Unique identifier for the secondary line owner (applicable only for Virtual Lines)."}, - }, - Body: &Body{}, -} - -var CallingCallSettingsForMeGetMyPickupGroup = &Operation{ - ID: "CallingCallSettingsForMeGetMyPickupGroup", Area: "calling", Group: "call-settings-for-me", Command: "get-my-pickup-group", - Summary: "Get My Call Pickup Group Settings", - Description: "Get Call Pickup Group Settings for the authenticated user.\n\nCall pickup group enables a user to answer any ringing line within their pickup group. A call pickup group is an administrator-defined set of users within a location, to which the call pickup feature applies.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/callPickupGroup", Host: HostWebex, -} - -var CallingCallSettingsForMeGetMySecondaryOwnerPickupGroup = &Operation{ - ID: "CallingCallSettingsForMeGetMySecondaryOwnerPickupGroup", Area: "calling", Group: "call-settings-for-me", Command: "get-my-secondary-owner-pickup-group", - Summary: "Get My Secondary Line Owner Call Pickup Group Settings", - Description: "Get Call Pickup Group Settings for the secondary line owner of the authenticated user.\n\nNote that the secondary line information is only available for the authenticated user.\n\nCall pickup group enables a user to answer any ringing line within their pickup group. A call pickup group is an administrator-defined set of users within a location, to which the call pickup feature applies.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/secondaryLines/{lineownerId}/callPickupGroup", Host: HostWebex, - Params: []Param{ - {Name: "lineownerId", In: InPath, Flag: "lineowner-id", Usage: "Unique identifier for the secondary line owner (applicable only for Virtual Lines)."}, - }, -} - -var CallingCallSettingsForMeGetMyPark = &Operation{ - ID: "CallingCallSettingsForMeGetMyPark", Area: "calling", Group: "call-settings-for-me", Command: "get-my-park", - Summary: "Get My Call Park Settings", - Description: "Get details of call park settings associated with the authenticated user.\n\nCall Park allows call recipients to place a call on hold so that it can be retrieved from another device.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/callPark", Host: HostWebex, -} - -var CallingCallSettingsForMeGetMySecondaryOwnerPark = &Operation{ - ID: "CallingCallSettingsForMeGetMySecondaryOwnerPark", Area: "calling", Group: "call-settings-for-me", Command: "get-my-secondary-owner-park", - Summary: "Get My Secondary Line Owner Call Park Settings", - Description: "Get details of call park settings for the secondary line owner of the authenticated user.\n\nNote that the secondary line information is only available for the authenticated user.\n\nCall Park allows call recipients to place a call on hold so that it can be retrieved from another device.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/secondaryLines/{lineownerId}/callPark", Host: HostWebex, - Params: []Param{ - {Name: "lineownerId", In: InPath, Flag: "lineowner-id", Usage: "Unique identifier for the secondary line owner (applicable only for Virtual Lines)."}, - }, -} - -var CallingCallSettingsForMeUpdateVoicemailPerson = &Operation{ - ID: "CallingCallSettingsForMeUpdateVoicemailPerson", Area: "calling", Group: "call-settings-for-me", Command: "update-voicemail-person", - Summary: "Configure Voicemail Settings for a Person", - Description: "Configure a person's voicemail settings.\n\nThe voicemail feature transfers callers to voicemail based on your settings. You can then retrieve voice messages via voicemail.\n\nOptionally, notifications can be sent to a mobile phone via text or email. These notifications will not include the voicemail files.\n\nThis API requires a user auth token with a scope of `spark-admin:people_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/voicemail", Host: HostWebex, - Body: &Body{}, -} - -var CallingCallSettingsForMeGetVoicemailPerson = &Operation{ - ID: "CallingCallSettingsForMeGetVoicemailPerson", Area: "calling", Group: "call-settings-for-me", Command: "get-voicemail-person", - Summary: "Read Voicemail Settings for a Person", - Description: "Retrieve a person's voicemail settings.\n\nThe voicemail feature transfers callers to voicemail based on your settings. You can then retrieve voice messages via voicemail.\n\nOptionally, notifications can be sent to a mobile phone via text or email. These notifications will not include the voicemail files.\n\nThis API requires a user auth token with a scope of `spark-admin:people_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/voicemail", Host: HostWebex, -} - -var CallingCallSettingsForMeUpdateMySecondaryOwnerVoicemail = &Operation{ - ID: "CallingCallSettingsForMeUpdateMySecondaryOwnerVoicemail", Area: "calling", Group: "call-settings-for-me", Command: "update-my-secondary-owner-voicemail", - Summary: "Modify My Secondary Line Owner's Voicemail Settings", - Description: "Update voicemail settings associated with a secondary line owner of the authenticated user.\n\nThe voicemail feature transfers callers to voicemail based on your settings. You can then retrieve voice messages via voicemail.\n\nOptionally, notifications can be sent to a mobile phone via text or email. These notifications will not include the voicemail files.\n\nThis API requires a user auth token with a scope of `spark-admin:people_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/secondaryLines/{lineownerId}/voicemail", Host: HostWebex, - Params: []Param{ - {Name: "lineownerId", In: InPath, Flag: "lineowner-id", Usage: "Unique identifier for the secondary line owner (applicable only for Virtual Lines)."}, - }, - Body: &Body{}, -} - -var CallingCallSettingsForMeGetMySecondaryOwnerVoicemail = &Operation{ - ID: "CallingCallSettingsForMeGetMySecondaryOwnerVoicemail", Area: "calling", Group: "call-settings-for-me", Command: "get-my-secondary-owner-voicemail", - Summary: "Get My Secondary Line Owner's Voicemail Settings", - Description: "GET voicemail settings for a secondary line of the authenticated user.\n\nThe voicemail feature transfers callers to voicemail based on your settings. You can then retrieve voice messages via voicemail.\n\nOptionally, notifications can be sent to a mobile phone via text or email. These notifications will not include the voicemail files.\n\nThis API requires a user auth token with a scope of `spark-admin:people_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/secondaryLines/{lineownerId}/voicemail", Host: HostWebex, - Params: []Param{ - {Name: "lineownerId", In: InPath, Flag: "lineowner-id", Usage: "Unique identifier for the secondary line owner (applicable only for Virtual Lines)."}, - }, -} - -var CallingCallSettingsForMeGetMyBlock = &Operation{ - ID: "CallingCallSettingsForMeGetMyBlock", Area: "calling", Group: "call-settings-for-me", Command: "get-my-block", - Summary: "Get My Call Block Settings", - Description: "Get details of call block settings associated with the authenticated user.\n\nCall block settings allow you to get the User Call Block Number List.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/callBlock", Host: HostWebex, -} - -var CallingCallSettingsForMeCreatePhoneNumberUserBlockList = &Operation{ - ID: "CallingCallSettingsForMeCreatePhoneNumberUserBlockList", Area: "calling", Group: "call-settings-for-me", Command: "create-phone-number-user-block-list", - Summary: "Add a phone number to user's Call Block List", - Description: "Add a phone number to the call block list for the authenticated user.\n\nCall block settings allow you to get the User Call Block Number List.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/people/me/settings/callBlock/numbers", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "phoneNumber", Flag: "phone-number", Type: "string"}, - }}, -} - -var CallingCallSettingsForMeGetMyBlockStateNumber = &Operation{ - ID: "CallingCallSettingsForMeGetMyBlockStateNumber", Area: "calling", Group: "call-settings-for-me", Command: "get-my-block-state-number", - Summary: "Get My Call Block State For Specific Number", - Description: "Get call block state details for a specific number associated with the authenticated user.\n\nCall block settings allow you to get the User Call Block Number List.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/callBlock/numbers/{phoneNumberId}", Host: HostWebex, - Params: []Param{ - {Name: "phoneNumberId", In: InPath, Flag: "phone-number-id", Usage: "Unique identifier of the phone number."}, - }, -} - -var CallingCallSettingsForMeDeleteUserBlockNumber = &Operation{ - ID: "CallingCallSettingsForMeDeleteUserBlockNumber", Area: "calling", Group: "call-settings-for-me", Command: "delete-user-block-number", - Summary: "Delete User Call Block Number", - Description: "Delete call block number settings associated with the authenticated user.\n\nCall block settings allow you to delete a number from the User Call Block Number List.\n\nThis API requires a user auth token with a scope of `spark-admin:people_write`.", - Method: "DELETE", Path: "/telephony/config/people/me/settings/callBlock/numbers/{phoneNumberId}", Host: HostWebex, - Params: []Param{ - {Name: "phoneNumberId", In: InPath, Flag: "phone-number-id", Usage: "Unique identifier of the phone number."}, - }, -} - -var CallingCallSettingsForMeGetMyMonitoring = &Operation{ - ID: "CallingCallSettingsForMeGetMyMonitoring", Area: "calling", Group: "call-settings-for-me", Command: "get-my-monitoring", - Summary: "Get My Monitoring Settings", - Description: "Retrieves the monitoring settings of the logged in person, which shows specified people, places, virtual lines or call park extensions that are being monitored.\n\nMonitors the line status which indicates if a person, place or virtual line is on a call and if a call has been parked on that extension.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/monitoring", Host: HostWebex, -} - -var CallingCallSettingsForMeGetMyCenter = &Operation{ - ID: "CallingCallSettingsForMeGetMyCenter", Area: "calling", Group: "call-settings-for-me", Command: "get-my-center", - Summary: "Get My Call Center Settings", - Description: "Retrieves the call center settings and list of all call centers the logged in user belongs to.\n\nCalls from the Call Centers are routed to agents based on configuration. An agent can be assigned to one or more call queues and can be managed by supervisors.\nThe user must have the call center service assigned.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/queues", Host: HostWebex, -} - -var CallingCallSettingsForMeUpdateMyCenter = &Operation{ - ID: "CallingCallSettingsForMeUpdateMyCenter", Area: "calling", Group: "call-settings-for-me", Command: "update-my-center", - Summary: "Modify My Call Center Settings", - Description: "Modify the call center settings and availability for an agent in one or more call centers to which the logged in user belongs.\n\nCalls from the Call Centers are routed to agents based on configuration. An agent can be assigned to one or more call queues and can be managed by supervisors.\nContains a list specifying the desired availability status of one or more call centers.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/queues", Host: HostWebex, - Body: &Body{}, -} - -var CallingCallSettingsForMeGetMySecondaryOwnerCenter = &Operation{ - ID: "CallingCallSettingsForMeGetMySecondaryOwnerCenter", Area: "calling", Group: "call-settings-for-me", Command: "get-my-secondary-owner-center", - Summary: "Get My Secondary Line Owner's Call Center Settings", - Description: "Retrieves the call center settings and list of all call centers associated with a secondary line of the authenticated user.\nNote that an authenticated user can only retrieve information for their configured secondary lines.\n\nCalls from the Call Centers are routed to agents based on configuration. An agent can be assigned to one or more call queues and can be managed by supervisors.\nThe secondary line must have the call center service assigned.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/secondaryLines/{lineownerId}/queues", Host: HostWebex, - Params: []Param{ - {Name: "lineownerId", In: InPath, Flag: "lineowner-id", Usage: "Unique identifier for the secondary line owner (applicable only for Virtual Lines)."}, - }, -} - -var CallingCallSettingsForMeUpdateMySecondaryOwnerCenter = &Operation{ - ID: "CallingCallSettingsForMeUpdateMySecondaryOwnerCenter", Area: "calling", Group: "call-settings-for-me", Command: "update-my-secondary-owner-center", - Summary: "Modify My Secondary Line Owner's Call Center Settings", - Description: "Modify the call center settings and availability for an agent in one or more call centers associated with a secondary line owner of the authenticated user.\nNote that an authenticated user can only modify information for their configured secondary lines.\n\nCalls from the Call Centers are routed to agents based on configuration. An agent can be assigned to one or more call queues and can be managed by supervisors.\nContains a list specifying the desired availability status of one or more call centers.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/secondaryLines/{lineownerId}/queues", Host: HostWebex, - Params: []Param{ - {Name: "lineownerId", In: InPath, Flag: "lineowner-id", Usage: "Unique identifier for the secondary line owner (applicable only for Virtual Lines)."}, - }, - Body: &Body{}, -} - -var CallingCallSettingsForMeGetMyCaptions = &Operation{ - ID: "CallingCallSettingsForMeGetMyCaptions", Area: "calling", Group: "call-settings-for-me", Command: "get-my-captions", - Summary: "Get my call captions settings", - Description: "Retrieve the effective call captions settings of the authenticated user.\n\n**NOTE**: The call captions feature is not supported for Webex Calling Standard users or users assigned to locations in India.\n\nThe call caption feature allows the customer to enable and manage closed captions and transcript functionality (rolling caption panel) in Webex Calling, without requiring the user to escalate the call to a meeting.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/callCaptions", Host: HostWebex, -} - -var CallingCallSettingsForMeGetPoliciesUser = &Operation{ - ID: "CallingCallSettingsForMeGetPoliciesUser", Area: "calling", Group: "call-settings-for-me", Command: "get-policies-user", - Summary: "Get Call Policies Settings for User", - Description: "Get call policies settings for the authenticated user.\n\nCall Policies in Webex allow you to manage how your call information is displayed and handled. You can view privacy settings for your connected line ID on redirected calls and review other call-related preferences.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/callPolicies", Host: HostWebex, -} - -var CallingCallSettingsForMeUpdatePoliciesUser = &Operation{ - ID: "CallingCallSettingsForMeUpdatePoliciesUser", Area: "calling", Group: "call-settings-for-me", Command: "update-policies-user", - Summary: "Modify Call Policies Settings for User", - Description: "Update call policies settings for the authenticated user.\n\nCall Policies in Webex allow you to manage how your call information is displayed and handled. You can configure privacy settings for your connected line ID on redirected calls and control other call-related preferences.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/callPolicies", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "connectedLineIdPrivacyOnRedirectedCalls", Flag: "connected-line-id-privacy-on-redirected-calls", Type: "string"}, - }}, -} - -var CallingCallSettingsForMeGetUserExecutiveScreening = &Operation{ - ID: "CallingCallSettingsForMeGetUserExecutiveScreening", Area: "calling", Group: "call-settings-for-me", Command: "get-user-executive-screening", - Summary: "Get User Executive Screening Settings", - Description: "Get executive screening settings for the authenticated user.\n\nExecutive Screening in Webex allows you to manage how incoming calls are screened and alerted based on your preferences. You can enable or disable executive screening and configure alert types and locations for notifications.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/executive/screening", Host: HostWebex, -} - -var CallingCallSettingsForMeUpdateUserExecutiveScreening = &Operation{ - ID: "CallingCallSettingsForMeUpdateUserExecutiveScreening", Area: "calling", Group: "call-settings-for-me", Command: "update-user-executive-screening", - Summary: "Modify User Executive Screening Settings", - Description: "Update executive screening settings for the authenticated user.\n\nExecutive Screening in Webex allows you to manage how incoming calls are screened and alerted based on your preferences. You can enable or disable executive screening and configure alert types and locations for notifications.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/executive/screening", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "enabled", Flag: "enabled", Type: "bool"}, - {Name: "alertType", Flag: "alert-type", Type: "string"}, - {Name: "alertAnywhereLocationEnabled", Flag: "alert-anywhere-location-enabled", Type: "bool"}, - {Name: "alertMobilityLocationEnabled", Flag: "alert-mobility-location-enabled", Type: "bool"}, - {Name: "alertSharedCallAppearanceLocationEnabled", Flag: "alert-shared-call-appearance-location-enabled", Type: "bool"}, - }}, -} - -var CallingCallSettingsForMeGetUserExecutiveFiltering = &Operation{ - ID: "CallingCallSettingsForMeGetUserExecutiveFiltering", Area: "calling", Group: "call-settings-for-me", Command: "get-user-executive-filtering", - Summary: "Get User Executive Call Filtering Settings", - Description: "Get executive call filtering settings for the authenticated user.\n\nExecutive Call Filtering in Webex allows you to control which calls are allowed to reach the executive assistant based on custom criteria, such as specific phone numbers or call types. You can enable or disable call filtering and configure filter rules to manage incoming calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/executive/callFiltering", Host: HostWebex, -} - -var CallingCallSettingsForMeUpdateUserExecutiveFiltering = &Operation{ - ID: "CallingCallSettingsForMeUpdateUserExecutiveFiltering", Area: "calling", Group: "call-settings-for-me", Command: "update-user-executive-filtering", - Summary: "Modify User Executive Call Filtering Settings", - Description: "Update executive call filtering settings for the authenticated user.\n\nExecutive Call Filtering in Webex allows you to control which calls are allowed to reach the executive assistant based on custom criteria, such as specific phone numbers or call types. You can enable or disable call filtering and configure filter rules to manage incoming calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/executive/callFiltering", Host: HostWebex, - Body: &Body{}, -} - -var CallingCallSettingsForMeGetUserExecutiveFiltering2 = &Operation{ - ID: "CallingCallSettingsForMeGetUserExecutiveFiltering2", Area: "calling", Group: "call-settings-for-me", Command: "get-user-executive-filtering-2", - Summary: "Get User Executive Call Filtering Criteria Settings", - Description: "Get executive call filtering criteria settings for the authenticated user.\n\nExecutive Call Filtering Criteria in Webex allows you to retrieve detailed configuration for a specific filter rule. This includes schedule settings, phone number filters, and call routing preferences for executive call filtering.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/executive/callFiltering/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "The `id` parameter specifies the unique identifier for the executive call filtering criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL2RHVnpkRjltYVd4MFpYST0`."}, - }, -} - -var CallingCallSettingsForMeUpdateUserExecutiveFiltering2 = &Operation{ - ID: "CallingCallSettingsForMeUpdateUserExecutiveFiltering2", Area: "calling", Group: "call-settings-for-me", Command: "update-user-executive-filtering-2", - Summary: "Modify User Executive Call Filtering Criteria Settings", - Description: "Update executive call filtering criteria settings for the authenticated user.\n\nExecutive Call Filtering Criteria in Webex allows you to modify detailed configuration for a specific filter rule. This includes updating schedule settings, phone number filters, and call routing preferences for executive call filtering.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/executive/callFiltering/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "The `id` parameter specifies the unique identifier for the executive call filtering criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL2RHVnpkRjltYVd4MFpYST0`."}, - }, - Body: &Body{}, -} - -var CallingCallSettingsForMeDeleteUserExecutiveFiltering = &Operation{ - ID: "CallingCallSettingsForMeDeleteUserExecutiveFiltering", Area: "calling", Group: "call-settings-for-me", Command: "delete-user-executive-filtering", - Summary: "Delete User Executive Call Filtering Criteria", - Description: "Delete a specific executive call filtering criteria for the authenticated user.\n\nExecutive Call Filtering Criteria in Webex allows you to manage detailed filter rules for incoming calls. This API removes a specific filter rule by its unique identifier.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/people/me/settings/executive/callFiltering/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "The `id` parameter specifies the unique identifier for the executive call filtering criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL2RHVnpkRjltYVd4MFpYST0`."}, - }, -} - -var CallingCallSettingsForMeGetDoNotDisturbUser = &Operation{ - ID: "CallingCallSettingsForMeGetDoNotDisturbUser", Area: "calling", Group: "call-settings-for-me", Command: "get-do-not-disturb-user", - Summary: "Get Do Not Disturb Settings for User", - Description: "Get Do Not Disturb settings for the authenticated user.\n\nDo Not Disturb (DND) enables users to block or silence incoming calls on their phone. When activated, the phone either stops ringing or rejects calls depending on the configured option, but users can still see call information and answer calls if desired.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/doNotDisturb", Host: HostWebex, -} - -var CallingCallSettingsForMeUpdateDoNotDisturbUser = &Operation{ - ID: "CallingCallSettingsForMeUpdateDoNotDisturbUser", Area: "calling", Group: "call-settings-for-me", Command: "update-do-not-disturb-user", - Summary: "Modify Do Not Disturb Settings for User", - Description: "Update Do Not Disturb settings for the authenticated user.\n\nDo Not Disturb (DND) enables users to block or silence incoming calls on their phone. When activated, the phone either stops ringing or rejects calls depending on the configured option, but users can still see call information and answer calls if desired.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/doNotDisturb", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "webexGoOverrideEnabled", Flag: "webex-go-override-enabled", Type: "bool"}, - {Name: "enabled", Flag: "enabled", Type: "bool"}, - {Name: "ringSplashEnabled", Flag: "ring-splash-enabled", Type: "bool"}, - }}, -} - -var CallingCallSettingsForMeCreateUserExecutiveFiltering = &Operation{ - ID: "CallingCallSettingsForMeCreateUserExecutiveFiltering", Area: "calling", Group: "call-settings-for-me", Command: "create-user-executive-filtering", - Summary: "Add User Executive Call Filtering Criteria", - Description: "Create a new executive call filtering criteria for the authenticated user.\n\nExecutive Call Filtering Criteria in Webex allows you to define detailed filter rules for incoming calls. This API creates a new filter rule with the specified configuration, including schedule, phone numbers, and call routing preferences.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/people/me/settings/executive/callFiltering/criteria", Host: HostWebex, - Body: &Body{}, -} - -var CallingCallSettingsForMeGetUserExecutiveAlert = &Operation{ - ID: "CallingCallSettingsForMeGetUserExecutiveAlert", Area: "calling", Group: "call-settings-for-me", Command: "get-user-executive-alert", - Summary: "Get User Executive Alert Settings", - Description: "Get executive alert settings for the authenticated user.\n\nExecutive Alert settings in Webex allow you to control how calls are routed to executive assistants, including alerting mode, rollover options, and caller ID presentation. You can configure settings such as sequential or simultaneous alerting, and specify what happens when calls aren't answered.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/executive/alert", Host: HostWebex, -} - -var CallingCallSettingsForMeUpdateUserExecutiveAlert = &Operation{ - ID: "CallingCallSettingsForMeUpdateUserExecutiveAlert", Area: "calling", Group: "call-settings-for-me", Command: "update-user-executive-alert", - Summary: "Modify User Executive Alert Settings", - Description: "Update executive alert settings for the authenticated user.\n\nExecutive Alert settings in Webex allow you to control how calls are routed to executive assistants, including alerting mode, rollover options, and caller ID presentation. You can configure settings such as sequential or simultaneous alerting, and specify what happens when calls aren't answered.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/executive/alert", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "alertingMode", Flag: "alerting-mode", Type: "string"}, - {Name: "nextAssistantNumberOfRings", Flag: "next-assistant-number-of-rings", Type: "int64"}, - {Name: "rolloverEnabled", Flag: "rollover-enabled", Type: "bool"}, - {Name: "rolloverAction", Flag: "rollover-action", Type: "string"}, - {Name: "rolloverForwardToPhoneNumber", Flag: "rollover-forward-to-phone-number", Type: "string"}, - {Name: "rolloverWaitTimeInSecs", Flag: "rollover-wait-time-in-secs", Type: "int64"}, - {Name: "clidNameMode", Flag: "clid-name-mode", Type: "string"}, - {Name: "customCLIDName", Flag: "custom-clidname", Type: "string"}, - {Name: "customCLIDNameInUnicode", Flag: "custom-clidname-in-unicode", Type: "string"}, - {Name: "clidPhoneNumberMode", Flag: "clid-phone-number-mode", Type: "string"}, - {Name: "customCLIDPhoneNumber", Flag: "custom-clidphone-number", Type: "string"}, - }}, -} - -var CallingCallSettingsForMeGetCountrySpecificTelephonyConfigurationRequirements = &Operation{ - ID: "CallingCallSettingsForMeGetCountrySpecificTelephonyConfigurationRequirements", Area: "calling", Group: "call-settings-for-me", Command: "get-country-specific-telephony-configuration-requirements", - Summary: "Get country-specific telephony configuration requirements", - Description: "Retrieve country-specific telephony configuration requirements for the authenticated user.\n\nWebex Calling supports multiple regions and time zones to validate and present the information using the local date and time, as well as localized dialing rules.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/countries/{countryCode}", Host: HostWebex, - Params: []Param{ - {Name: "countryCode", In: InPath, Flag: "country-code", Usage: "The ISO country code for which configuration requirements are requested."}, - }, -} - -var CallingCallSettingsForMeGetAnnouncementLanguagesAuthenticatedUser = &Operation{ - ID: "CallingCallSettingsForMeGetAnnouncementLanguagesAuthenticatedUser", Area: "calling", Group: "call-settings-for-me", Command: "get-announcement-languages-authenticated-user", - Summary: "Get announcement languages for the authenticated user", - Description: "Retrieve the list of available announcement languages for the authenticated user's telephony configuration.\n\nAnnouncement languages determine the language used for system prompts and announcements during calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/announcementLanguages", Host: HostWebex, -} - -var CallingCallSettingsForMeGetBargeIn = &Operation{ - ID: "CallingCallSettingsForMeGetBargeIn", Area: "calling", Group: "call-settings-for-me", Command: "get-barge-in", - Summary: "Get Barge-In Settings", - Description: "Retrieve Barge-In settings of the user.\n\nThe Barge-In feature enables you to use a Feature Access Code (FAC) to answer a call that was directed to another subscriber, or barge-in on the call if it was already answered. Barge-In can be used across locations.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/bargeIn", Host: HostWebex, -} - -var CallingCallSettingsForMeUpdateBargeIn = &Operation{ - ID: "CallingCallSettingsForMeUpdateBargeIn", Area: "calling", Group: "call-settings-for-me", Command: "update-barge-in", - Summary: "Configure Barge-In Settings", - Description: "Configure person's Barge-In settings.\n\nThe Barge-In feature enables you to use a Feature Access Code (FAC) to answer a call that was directed to another subscriber, or barge-in on the call if it was already answered. Barge-In can be used across locations.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/bargeIn", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "enabled", Flag: "enabled", Type: "bool"}, - {Name: "toneEnabled", Flag: "tone-enabled", Type: "bool"}, - }}, -} - -var CallingCallSettingsForMeGetPriorityAlert = &Operation{ - ID: "CallingCallSettingsForMeGetPriorityAlert", Area: "calling", Group: "call-settings-for-me", Command: "get-priority-alert", - Summary: "Get Priority Alert Settings", - Description: "Get Priority Alert Settings for the authenticated user.\n\nPriority alert allows you to set up a unique ringtone based on predefined criteria. This is helpful, when the user wants to be quickly notified that a specific phone number is calling.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/priorityAlert", Host: HostWebex, -} - -var CallingCallSettingsForMeUpdatePriorityAlertUser = &Operation{ - ID: "CallingCallSettingsForMeUpdatePriorityAlertUser", Area: "calling", Group: "call-settings-for-me", Command: "update-priority-alert-user", - Summary: "Modify Priority Alert Settings for User", - Description: "Update Priority Alert Settings for the authenticated user.\n\nPriority alert allows you to set up a unique ringtone based on predefined criteria. This is helpful, when the user wants to be quickly notified that a specific phone number is calling.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/priorityAlert", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "enabled", Flag: "enabled", Type: "bool"}, - }}, -} - -var CallingCallSettingsForMeCreatePriorityAlert = &Operation{ - ID: "CallingCallSettingsForMeCreatePriorityAlert", Area: "calling", Group: "call-settings-for-me", Command: "create-priority-alert", - Summary: "Add a Priority Alert Criteria", - Description: "Create a Priority Alert Criteria for the authenticated user.\n\nPriority alert allows you to set up a unique ringtone based on predefined criteria. This is helpful, when the user wants to be quickly notified that a specific phone number is calling.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/people/me/settings/priorityAlert/criteria", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "scheduleName", Flag: "schedule-name", Type: "string"}, - {Name: "scheduleType", Flag: "schedule-type", Type: "string"}, - {Name: "scheduleLevel", Flag: "schedule-level", Type: "string"}, - {Name: "callsFrom", Flag: "calls-from", Type: "string"}, - {Name: "anonymousCallersEnabled", Flag: "anonymous-callers-enabled", Type: "bool"}, - {Name: "unavailableCallersEnabled", Flag: "unavailable-callers-enabled", Type: "bool"}, - {Name: "phoneNumbers", Flag: "phone-numbers", Type: "[]string"}, - {Name: "notificationEnabled", Flag: "notification-enabled", Type: "bool"}, - }}, -} - -var CallingCallSettingsForMeGetPriorityAlert2 = &Operation{ - ID: "CallingCallSettingsForMeGetPriorityAlert2", Area: "calling", Group: "call-settings-for-me", Command: "get-priority-alert-2", - Summary: "Get Priority Alert Criteria Settings", - Description: "Get Priority Alert Criteria Settings for the authenticated user.\n\nPriority alert allows you to set up a unique ringtone based on predefined criteria. This is helpful, when the user wants to be quickly notified that a specific phone number is calling.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/priorityAlert/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "The `id` parameter specifies the unique identifier for the priority alert criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`."}, - }, -} - -var CallingCallSettingsForMeUpdatePriorityAlert = &Operation{ - ID: "CallingCallSettingsForMeUpdatePriorityAlert", Area: "calling", Group: "call-settings-for-me", Command: "update-priority-alert", - Summary: "Modify Settings for a Priority Alert Criteria", - Description: "Modify Priority Alert Criteria Settings for the authenticated user.\n\nPriority alert allows you to set up a unique ringtone based on predefined criteria. This API allows modifying attributes such as name, phoneNumbers etc for a particular criteria.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/priorityAlert/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "The `id` parameter specifies the unique identifier for the priority alert criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "scheduleName", Flag: "schedule-name", Type: "string"}, - {Name: "scheduleType", Flag: "schedule-type", Type: "string"}, - {Name: "scheduleLevel", Flag: "schedule-level", Type: "string"}, - {Name: "callsFrom", Flag: "calls-from", Type: "string"}, - {Name: "anonymousCallersEnabled", Flag: "anonymous-callers-enabled", Type: "bool"}, - {Name: "unavailableCallersEnabled", Flag: "unavailable-callers-enabled", Type: "bool"}, - {Name: "phoneNumbers", Flag: "phone-numbers", Type: "[]string"}, - {Name: "notificationEnabled", Flag: "notification-enabled", Type: "bool"}, - }}, -} - -var CallingCallSettingsForMeDeletePriorityAlert = &Operation{ - ID: "CallingCallSettingsForMeDeletePriorityAlert", Area: "calling", Group: "call-settings-for-me", Command: "delete-priority-alert", - Summary: "Delete a Priority Alert Criteria", - Description: "Delete a Priority Alert criteria for the authenticated user.\n\nPriority alert allows you to set up a unique ringtone based on predefined criteria. This API removes a specific criteria rule by its unique identifier.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/people/me/settings/priorityAlert/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "The `id` parameter specifies the unique identifier for the priority alert criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`."}, - }, -} - -var CallingCallSettingsForMeGetUserSchedules = &Operation{ - ID: "CallingCallSettingsForMeGetUserSchedules", Area: "calling", Group: "call-settings-for-me", Command: "get-user-schedules", - Summary: "Get User (and Location) Schedules", - Description: "Get Schedules for Call Settings for the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/schedules", Host: HostWebex, -} - -var CallingCallSettingsForMeCreateUserSchedule = &Operation{ - ID: "CallingCallSettingsForMeCreateUserSchedule", Area: "calling", Group: "call-settings-for-me", Command: "create-user-schedule", - Summary: "Add a User level Schedule for Call Settings", - Description: "Create a new Schedule for the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/people/me/schedules", Host: HostWebex, - Body: &Body{}, -} - -var CallingCallSettingsForMeGetUserSchedule = &Operation{ - ID: "CallingCallSettingsForMeGetUserSchedule", Area: "calling", Group: "call-settings-for-me", Command: "get-user-schedule", - Summary: "Get User Schedule", - Description: "Get a Schedule details for Call Settings of the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/schedules/{scheduleType}/{scheduleId}", Host: HostWebex, - Params: []Param{ - {Name: "scheduleType", In: InPath, Flag: "schedule-type", Usage: "Type of the schedule.\n * `businessHours` - Business hours schedule type.\n * `holidays` - Holidays schedule type.\n"}, - {Name: "scheduleId", In: InPath, Flag: "schedule-id", Usage: "Retrieve the schedule with the matching ID."}, - }, -} - -var CallingCallSettingsForMeUpdateUserSchedule = &Operation{ - ID: "CallingCallSettingsForMeUpdateUserSchedule", Area: "calling", Group: "call-settings-for-me", Command: "update-user-schedule", - Summary: "Modify User Schedule", - Description: "Modify a Schedule details for Call Settings of the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "PUT", Path: "/telephony/config/people/me/schedules/{scheduleType}/{scheduleId}", Host: HostWebex, - Params: []Param{ - {Name: "scheduleType", In: InPath, Flag: "schedule-type", Usage: "Type of the schedule.\n * `businessHours` - Business hours schedule type.\n * `holidays` - Holidays schedule type.\n"}, - {Name: "scheduleId", In: InPath, Flag: "schedule-id", Usage: "Update the schedule with the matching ID."}, - }, - Body: &Body{}, -} - -var CallingCallSettingsForMeDeleteUserSchedule = &Operation{ - ID: "CallingCallSettingsForMeDeleteUserSchedule", Area: "calling", Group: "call-settings-for-me", Command: "delete-user-schedule", - Summary: "Delete a User Schedule", - Description: "Delete a specific schedule for the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/people/me/schedules/{scheduleType}/{scheduleId}", Host: HostWebex, - Params: []Param{ - {Name: "scheduleType", In: InPath, Flag: "schedule-type", Usage: "Type of the schedule.\n * `businessHours` - Business hours schedule type.\n * `holidays` - Holidays schedule type.\n"}, - {Name: "scheduleId", In: InPath, Flag: "schedule-id", Usage: "Delete the schedule with the matching ID."}, - }, -} - -var CallingCallSettingsForMeCreateEventUserSchedule = &Operation{ - ID: "CallingCallSettingsForMeCreateEventUserSchedule", Area: "calling", Group: "call-settings-for-me", Command: "create-event-user-schedule", - Summary: "Add an event for a User Schedule", - Description: "Create a new Event for for the authenticated user's specified schedule.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/people/me/schedules/{scheduleType}/{scheduleId}/events", Host: HostWebex, - Params: []Param{ - {Name: "scheduleType", In: InPath, Flag: "schedule-type", Usage: "Type of the schedule.\n * `businessHours` - Business hours schedule type.\n * `holidays` - Holidays schedule type.\n"}, - {Name: "scheduleId", In: InPath, Flag: "schedule-id", Usage: "add an event for the specified schedule ID."}, - }, - Body: &Body{}, -} - -var CallingCallSettingsForMeGetUserScheduleEvent = &Operation{ - ID: "CallingCallSettingsForMeGetUserScheduleEvent", Area: "calling", Group: "call-settings-for-me", Command: "get-user-schedule-event", - Summary: "Get User Schedule Event", - Description: "Get a Schedule Event details for Call Settings of the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/schedules/{scheduleType}/{scheduleId}/events/{eventId}", Host: HostWebex, - Params: []Param{ - {Name: "scheduleType", In: InPath, Flag: "schedule-type", Usage: "Type of the schedule.\n * `businessHours` - Business hours schedule type.\n * `holidays` - Holidays schedule type.\n"}, - {Name: "scheduleId", In: InPath, Flag: "schedule-id", Usage: "Retrieve the schedule with the matching ID."}, - {Name: "eventId", In: InPath, Flag: "event-id", Usage: "Retrieve the event with the matching ID."}, - }, -} - -var CallingCallSettingsForMeUpdateUserScheduleEvent = &Operation{ - ID: "CallingCallSettingsForMeUpdateUserScheduleEvent", Area: "calling", Group: "call-settings-for-me", Command: "update-user-schedule-event", - Summary: "Modify User Schedule Event", - Description: "Modify a Schedule event details for Call Settings of the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "PUT", Path: "/telephony/config/people/me/schedules/{scheduleType}/{scheduleId}/events/{eventId}", Host: HostWebex, - Params: []Param{ - {Name: "scheduleType", In: InPath, Flag: "schedule-type", Usage: "Type of the schedule.\n * `businessHours` - Business hours schedule type.\n * `holidays` - Holidays schedule type.\n"}, - {Name: "scheduleId", In: InPath, Flag: "schedule-id", Usage: "Update an event for the specified schedule ID."}, - {Name: "eventId", In: InPath, Flag: "event-id", Usage: "Update the event with the matching ID."}, - }, - Body: &Body{}, -} - -var CallingCallSettingsForMeDeleteUserScheduleEvent = &Operation{ - ID: "CallingCallSettingsForMeDeleteUserScheduleEvent", Area: "calling", Group: "call-settings-for-me", Command: "delete-user-schedule-event", - Summary: "Delete User a Schedule Event", - Description: "Delete a specific schedule event for the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/people/me/schedules/{scheduleType}/{scheduleId}/events/{eventId}", Host: HostWebex, - Params: []Param{ - {Name: "scheduleType", In: InPath, Flag: "schedule-type", Usage: "Type of the schedule.\n * `businessHours` - Business hours schedule type.\n * `holidays` - Holidays schedule type.\n"}, - {Name: "scheduleId", In: InPath, Flag: "schedule-id", Usage: "Delete an event for the specified schedule ID."}, - {Name: "eventId", In: InPath, Flag: "event-id", Usage: "Delete the event with the matching ID."}, - }, -} - -var CallingCallSettingsForMeGetUserLocationSchedule = &Operation{ - ID: "CallingCallSettingsForMeGetUserLocationSchedule", Area: "calling", Group: "call-settings-for-me", Command: "get-user-location-schedule", - Summary: "Get User's Location Level Schedule", - Description: "Get Location Schedule for Call Settings of the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/locations/schedules/{scheduleType}/{scheduleId}", Host: HostWebex, - Params: []Param{ - {Name: "scheduleType", In: InPath, Flag: "schedule-type", Usage: "Type of the schedule.\n * `businessHours` - Business hours schedule type.\n * `holidays` - Holidays schedule type.\n"}, - {Name: "scheduleId", In: InPath, Flag: "schedule-id", Usage: "Retrieve the schedule with the matching ID."}, - }, -} - -var CallingCallSettingsForMeGetNotifyUser = &Operation{ - ID: "CallingCallSettingsForMeGetNotifyUser", Area: "calling", Group: "call-settings-for-me", Command: "get-notify-user", - Summary: "Get Call Notify Settings for User", - Description: "Get Call Notify Settings for the authenticated user.\n\nCall Notify allows you to set up a unique ringtone based on predefined criteria. This is helpful, when the user wants to be quickly notified that a specific phone number is calling.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/callNotify", Host: HostWebex, -} - -var CallingCallSettingsForMeUpdateNotifyUser = &Operation{ - ID: "CallingCallSettingsForMeUpdateNotifyUser", Area: "calling", Group: "call-settings-for-me", Command: "update-notify-user", - Summary: "Modify Call Notify Settings for User", - Description: "Update Call Notify Settings for the authenticated user.\n\nCall Notify allows you to set up a unique ringtone based on predefined criteria. This API allows modifying attributes such as name, phoneNumbers etc for a particular criteria.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/callNotify", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "enabled", Flag: "enabled", Type: "bool"}, - {Name: "emailAddress", Flag: "email-address", Type: "string"}, - }}, -} - -var CallingCallSettingsForMeCreateNotify = &Operation{ - ID: "CallingCallSettingsForMeCreateNotify", Area: "calling", Group: "call-settings-for-me", Command: "create-notify", - Summary: "Add a Call Notify Criteria", - Description: "Create a Call Notify Criteria for the authenticated user.\n\nCall Notify allows you to set up a unique ringtone based on predefined criteria. This is helpful, when the user wants to be quickly notified that a specific phone number is calling.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/people/me/settings/callNotify/criteria", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "scheduleName", Flag: "schedule-name", Type: "string"}, - {Name: "scheduleType", Flag: "schedule-type", Type: "string"}, - {Name: "scheduleLevel", Flag: "schedule-level", Type: "string"}, - {Name: "callsFrom", Flag: "calls-from", Type: "string"}, - {Name: "anonymousCallersEnabled", Flag: "anonymous-callers-enabled", Type: "bool"}, - {Name: "unavailableCallersEnabled", Flag: "unavailable-callers-enabled", Type: "bool"}, - {Name: "phoneNumbers", Flag: "phone-numbers", Type: "[]string"}, - {Name: "notificationEnabled", Flag: "notification-enabled", Type: "bool"}, - }}, -} - -var CallingCallSettingsForMeGetNotify = &Operation{ - ID: "CallingCallSettingsForMeGetNotify", Area: "calling", Group: "call-settings-for-me", Command: "get-notify", - Summary: "Get Call Notify Criteria Settings", - Description: "Get Call Notify Criteria Settings for the authenticated user.\n\nCall Notify allows you to set up a unique ringtone based on predefined criteria. This is helpful, when the user wants to be quickly notified that a specific phone number is calling.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/callNotify/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "The `id` parameter specifies the unique identifier for the call notify criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`."}, - }, -} - -var CallingCallSettingsForMeUpdateNotify = &Operation{ - ID: "CallingCallSettingsForMeUpdateNotify", Area: "calling", Group: "call-settings-for-me", Command: "update-notify", - Summary: "Modify a Call Notify Criteria", - Description: "Modify Call Notify Criteria Settings for the authenticated user.\n\nCall Notify allows you to set up a unique ringtone based on predefined criteria. This API allows modifying attributes such as name, phoneNumbers etc for a particular criteria.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/callNotify/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "The `id` parameter specifies the unique identifier for the call notify criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "scheduleName", Flag: "schedule-name", Type: "string"}, - {Name: "scheduleType", Flag: "schedule-type", Type: "string"}, - {Name: "scheduleLevel", Flag: "schedule-level", Type: "string"}, - {Name: "callsFrom", Flag: "calls-from", Type: "string"}, - {Name: "anonymousCallersEnabled", Flag: "anonymous-callers-enabled", Type: "bool"}, - {Name: "unavailableCallersEnabled", Flag: "unavailable-callers-enabled", Type: "bool"}, - {Name: "phoneNumbers", Flag: "phone-numbers", Type: "[]string"}, - {Name: "notificationEnabled", Flag: "notification-enabled", Type: "bool"}, - }}, -} - -var CallingCallSettingsForMeDeleteNotify = &Operation{ - ID: "CallingCallSettingsForMeDeleteNotify", Area: "calling", Group: "call-settings-for-me", Command: "delete-notify", - Summary: "Delete a Call Notify Criteria", - Description: "Delete a Call Notify criteria for the authenticated user.\n\nCall Notify allows you to set up a unique ringtone based on predefined criteria. This API removes a specific criteria rule by its unique identifier.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/people/me/settings/callNotify/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "The `id` parameter specifies the unique identifier for the call notify criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`."}, - }, -} - -var CallingCallSettingsForMeGetSelectiveAcceptUser = &Operation{ - ID: "CallingCallSettingsForMeGetSelectiveAcceptUser", Area: "calling", Group: "call-settings-for-me", Command: "get-selective-accept-user", - Summary: "Get Selective Call Accept Settings for User", - Description: "Get Selective Call Accept Settings for the authenticated user.\n\nSelective Call Accept allows you to create customized rules to accept specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/selectiveAccept", Host: HostWebex, -} - -var CallingCallSettingsForMeUpdateSelectiveAcceptUser = &Operation{ - ID: "CallingCallSettingsForMeUpdateSelectiveAcceptUser", Area: "calling", Group: "call-settings-for-me", Command: "update-selective-accept-user", - Summary: "Modify Selective Call Accept Settings for User", - Description: "Update Selective Call Accept Settings for the authenticated user.\n\nSelective Call Accept allows you to create customized rules to accept specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/selectiveAccept", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "enabled", Flag: "enabled", Type: "bool"}, - }}, -} - -var CallingCallSettingsForMeCreateUserSelectiveAccept = &Operation{ - ID: "CallingCallSettingsForMeCreateUserSelectiveAccept", Area: "calling", Group: "call-settings-for-me", Command: "create-user-selective-accept", - Summary: "Add User Selective Call Accept Criteria", - Description: "Create a new Selective Call Accept Criteria for the authenticated user.\n\nSelective Call Accept allows you to create customized rules to accept specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/people/me/settings/selectiveAccept/criteria", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "callsFrom", Flag: "calls-from", Type: "string"}, - {Name: "acceptEnabled", Flag: "accept-enabled", Type: "bool"}, - {Name: "scheduleName", Flag: "schedule-name", Type: "string"}, - {Name: "scheduleType", Flag: "schedule-type", Type: "string"}, - {Name: "scheduleLevel", Flag: "schedule-level", Type: "string"}, - {Name: "anonymousCallersEnabled", Flag: "anonymous-callers-enabled", Type: "bool"}, - {Name: "unavailableCallersEnabled", Flag: "unavailable-callers-enabled", Type: "bool"}, - {Name: "phoneNumbers", Flag: "phone-numbers", Type: "[]string"}, - }}, -} - -var CallingCallSettingsForMeGetSelectiveAcceptUser2 = &Operation{ - ID: "CallingCallSettingsForMeGetSelectiveAcceptUser2", Area: "calling", Group: "call-settings-for-me", Command: "get-selective-accept-user-2", - Summary: "Get Selective Call Accept Criteria Settings for User", - Description: "Get Selective Call Accept Criteria Settings for the authenticated user.\n\nSelective Call Accept allows you to create customized rules to accept specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/selectiveAccept/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "The `id` parameter specifies the unique identifier for the selective call accept criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`."}, - }, -} - -var CallingCallSettingsForMeUpdateSelectiveAccept = &Operation{ - ID: "CallingCallSettingsForMeUpdateSelectiveAccept", Area: "calling", Group: "call-settings-for-me", Command: "update-selective-accept", - Summary: "Modify a Selective Call Accept Criteria", - Description: "Modify Selective Call Accept Criteria Settings for the authenticated user.\n\n\n\nSelective Call Accept allows you to create customized rules to accept specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/selectiveAccept/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "The `id` parameter specifies the unique identifier for the selective call accept. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "callsFrom", Flag: "calls-from", Type: "string"}, - {Name: "acceptEnabled", Flag: "accept-enabled", Type: "bool"}, - {Name: "scheduleName", Flag: "schedule-name", Type: "string"}, - {Name: "scheduleType", Flag: "schedule-type", Type: "string"}, - {Name: "scheduleLevel", Flag: "schedule-level", Type: "string"}, - {Name: "anonymousCallersEnabled", Flag: "anonymous-callers-enabled", Type: "bool"}, - {Name: "unavailableCallersEnabled", Flag: "unavailable-callers-enabled", Type: "bool"}, - {Name: "phoneNumbers", Flag: "phone-numbers", Type: "[]string"}, - }}, -} - -var CallingCallSettingsForMeDeleteSelectiveAccept = &Operation{ - ID: "CallingCallSettingsForMeDeleteSelectiveAccept", Area: "calling", Group: "call-settings-for-me", Command: "delete-selective-accept", - Summary: "Delete a Selective Call Accept Criteria", - Description: "Delete a Selective Call Accept Criteria for the authenticated user.\n\n\n\nSelective Call Accept allows you to create customized rules to accept specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/people/me/settings/selectiveAccept/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "The `id` parameter specifies the unique identifier for the selective call accept criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`."}, - }, -} - -var CallingCallSettingsForMeGetAvailableNumbersUserLocation = &Operation{ - ID: "CallingCallSettingsForMeGetAvailableNumbersUserLocation", Area: "calling", Group: "call-settings-for-me", Command: "get-available-numbers-user-location", - Summary: "Get Available Numbers for User's Location", - Description: "Get Available Numbers for User's Location.\n\nFetch all the numbers available in User's location.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/location/assignedNumbers", Host: HostWebex, - Params: []Param{ - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the maximum number of numbers in the response."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Specify the offset from the first result that you want to fetch."}, - {Name: "name", In: InQuery, Flag: "name", Usage: "List numbers whose owner name contains this string."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "List numbers whose phoneNumber contains this string."}, - {Name: "extension", In: InQuery, Flag: "extension", Usage: "List numbers whose extension contains this string."}, - {Name: "order", In: InQuery, Flag: "order", Usage: "Sort the list of numbers based on `lastName`, `dn`, `extension` either asc or desc."}, - }, - Paging: &Paging{}, -} - -var CallingCallSettingsForMeCreateSelectiveForward = &Operation{ - ID: "CallingCallSettingsForMeCreateSelectiveForward", Area: "calling", Group: "call-settings-for-me", Command: "create-selective-forward", - Summary: "Add a Selective Call Forwarding Criteria", - Description: "Create a Selective Call Forwarding Criteria for the authenticated user.\n\nSelective Call Forward allows you to define rules that automatically forward incoming calls based on specific criteria, such as the caller’s phone number, caller identity, and the time and day the call is received.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/people/me/settings/selectiveForward/criteria", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "forwardToPhoneNumber", Flag: "forward-to-phone-number", Type: "string"}, - {Name: "destinationVoicemailEnabled", Flag: "destination-voicemail-enabled", Type: "bool"}, - {Name: "scheduleName", Flag: "schedule-name", Type: "string"}, - {Name: "scheduleType", Flag: "schedule-type", Type: "string"}, - {Name: "scheduleLevel", Flag: "schedule-level", Type: "string"}, - {Name: "callsFrom", Flag: "calls-from", Type: "string"}, - {Name: "anonymousCallersEnabled", Flag: "anonymous-callers-enabled", Type: "bool"}, - {Name: "unavailableCallersEnabled", Flag: "unavailable-callers-enabled", Type: "bool"}, - {Name: "phoneNumbers", Flag: "phone-numbers", Type: "[]string"}, - {Name: "forwardEnabled", Flag: "forward-enabled", Type: "bool"}, - }}, -} - -var CallingCallSettingsForMeGetSelectiveForward = &Operation{ - ID: "CallingCallSettingsForMeGetSelectiveForward", Area: "calling", Group: "call-settings-for-me", Command: "get-selective-forward", - Summary: "Get Settings for a Selective Call Forwarding Criteria", - Description: "Get settings for a Selective Call Forwarding Criteria for the authenticated user.\n\nSelective Call Forward allows you to define rules that automatically forward incoming calls based on specific criteria, such as the caller’s phone number, caller identity, and the time and day the call is received.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/selectiveForward/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "The `id` parameter specifies the unique identifier for the selective call forwarding criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`."}, - }, -} - -var CallingCallSettingsForMeUpdateSelectiveForward = &Operation{ - ID: "CallingCallSettingsForMeUpdateSelectiveForward", Area: "calling", Group: "call-settings-for-me", Command: "update-selective-forward", - Summary: "Modify Settings for a Selective Call Forwarding Criteria", - Description: "Modify settings for a Selective Call Forwarding Criteria for the authenticated user.\n\nSelective Call Forward allows you to define rules that automatically forward incoming calls based on specific criteria, such as the caller’s phone number, caller identity, and the time and day the call is received.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/selectiveForward/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "The `id` parameter specifies the unique identifier for the selective call forwarding criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "forwardToPhoneNumber", Flag: "forward-to-phone-number", Type: "string"}, - {Name: "destinationVoicemailEnabled", Flag: "destination-voicemail-enabled", Type: "bool"}, - {Name: "scheduleName", Flag: "schedule-name", Type: "string"}, - {Name: "scheduleType", Flag: "schedule-type", Type: "string"}, - {Name: "scheduleLevel", Flag: "schedule-level", Type: "string"}, - {Name: "callsFrom", Flag: "calls-from", Type: "string"}, - {Name: "anonymousCallersEnabled", Flag: "anonymous-callers-enabled", Type: "bool"}, - {Name: "unavailableCallersEnabled", Flag: "unavailable-callers-enabled", Type: "bool"}, - {Name: "phoneNumbers", Flag: "phone-numbers", Type: "[]string"}, - {Name: "forwardEnabled", Flag: "forward-enabled", Type: "bool"}, - }}, -} - -var CallingCallSettingsForMeDeleteSelectiveForward = &Operation{ - ID: "CallingCallSettingsForMeDeleteSelectiveForward", Area: "calling", Group: "call-settings-for-me", Command: "delete-selective-forward", - Summary: "Delete a Selective Call Forwarding Criteria", - Description: "Delete a Selective Call Forwarding Criteria for the authenticated user.\n\nSelective call forwarding allows you to define rules that automatically forward incoming calls based on specific criteria. This API removes a specific criteria rule by its unique identifier.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/people/me/settings/selectiveForward/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "The `id` parameter specifies the unique identifier for the selective call forwarding criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`."}, - }, -} - -var CallingCallSettingsForMeGetSelectiveForwardUser = &Operation{ - ID: "CallingCallSettingsForMeGetSelectiveForwardUser", Area: "calling", Group: "call-settings-for-me", Command: "get-selective-forward-user", - Summary: "Get Selective Call Forward Settings for User", - Description: "Get Selective Call Forward Settings for the authenticated user.\n\nSelective Call Forward allows you to create customized rules to forward specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/selectiveForward", Host: HostWebex, -} - -var CallingCallSettingsForMeUpdateSelectiveForwardUser = &Operation{ - ID: "CallingCallSettingsForMeUpdateSelectiveForwardUser", Area: "calling", Group: "call-settings-for-me", Command: "update-selective-forward-user", - Summary: "Modify Selective Call Forward Settings for User", - Description: "Update the Selective Call Forward Settings for the authenticated user.\n\nSelective Call Accept allows you to create customized rules to accept specific calls for users based on the phone number, identity, and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/selectiveForward", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "enabled", Flag: "enabled", Type: "bool"}, - {Name: "defaultPhoneNumberToForward", Flag: "default-phone-number-to-forward", Type: "string"}, - {Name: "ringReminderEnabled", Flag: "ring-reminder-enabled", Type: "bool"}, - {Name: "destinationVoicemailEnabled", Flag: "destination-voicemail-enabled", Type: "bool"}, - }}, -} - -var CallingCallSettingsForMeGetSelectiveRejectUser = &Operation{ - ID: "CallingCallSettingsForMeGetSelectiveRejectUser", Area: "calling", Group: "call-settings-for-me", Command: "get-selective-reject-user", - Summary: "Get Selective Call Reject Settings for User", - Description: "Get Selective Call Reject Settings for the authenticated user.\n\nSelective Call Reject allows you to create customized rules to reject specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/selectiveReject", Host: HostWebex, -} - -var CallingCallSettingsForMeUpdateSelectiveRejectUser = &Operation{ - ID: "CallingCallSettingsForMeUpdateSelectiveRejectUser", Area: "calling", Group: "call-settings-for-me", Command: "update-selective-reject-user", - Summary: "Modify Selective Call Reject Settings for User", - Description: "Update Selective Call Reject Settings for the authenticated user.\n\nSelective Call Reject allows you to create customized rules to reject specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/selectiveReject", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "enabled", Flag: "enabled", Type: "bool"}, - }}, -} - -var CallingCallSettingsForMeCreateUserSelectiveReject = &Operation{ - ID: "CallingCallSettingsForMeCreateUserSelectiveReject", Area: "calling", Group: "call-settings-for-me", Command: "create-user-selective-reject", - Summary: "Add User Selective Call Reject Criteria", - Description: "Create a new Selective Call Reject Criteria for the authenticated user.\n\nSelective Call Reject allows you to create customized rules to reject specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/people/me/settings/selectiveReject/criteria", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "callsFrom", Flag: "calls-from", Type: "string"}, - {Name: "rejectEnabled", Flag: "reject-enabled", Type: "bool"}, - {Name: "scheduleName", Flag: "schedule-name", Type: "string"}, - {Name: "scheduleType", Flag: "schedule-type", Type: "string"}, - {Name: "scheduleLevel", Flag: "schedule-level", Type: "string"}, - {Name: "anonymousCallersEnabled", Flag: "anonymous-callers-enabled", Type: "bool"}, - {Name: "unavailableCallersEnabled", Flag: "unavailable-callers-enabled", Type: "bool"}, - {Name: "phoneNumbers", Flag: "phone-numbers", Type: "[]string"}, - }}, -} - -var CallingCallSettingsForMeGetAnonymousRejectionUser = &Operation{ - ID: "CallingCallSettingsForMeGetAnonymousRejectionUser", Area: "calling", Group: "call-settings-for-me", Command: "get-anonymous-rejection-user", - Summary: "Get Anonymous Call Rejection Settings for User", - Description: "Get Anonymous Call Rejection Settings for the authenticated user.\n\nAnonymous Call Rejection allows you to reject calls from anonymous callers.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/anonymousCallReject", Host: HostWebex, -} - -var CallingCallSettingsForMeUpdateAnonymousRejectionUser = &Operation{ - ID: "CallingCallSettingsForMeUpdateAnonymousRejectionUser", Area: "calling", Group: "call-settings-for-me", Command: "update-anonymous-rejection-user", - Summary: "Modify Anonymous Call Rejection Settings for User", - Description: "Update Anonymous Call Rejection Settings for the authenticated user.\n\nAnonymous Call Rejection allows you to reject calls from anonymous callers.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/anonymousCallReject", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "enabled", Flag: "enabled", Type: "bool"}, - }}, -} - -var CallingCallSettingsForMeGetSelectiveRejectUser2 = &Operation{ - ID: "CallingCallSettingsForMeGetSelectiveRejectUser2", Area: "calling", Group: "call-settings-for-me", Command: "get-selective-reject-user-2", - Summary: "Get Selective Call Reject Criteria Settings for User", - Description: "Get Selective Call Reject Criteria Settings for the authenticated user.\n\nSelective Call Reject allows you to create customized rules to reject specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/selectiveReject/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "The `id` parameter specifies the unique identifier for the selective call reject criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`."}, - }, -} - -var CallingCallSettingsForMeUpdateSelectiveReject = &Operation{ - ID: "CallingCallSettingsForMeUpdateSelectiveReject", Area: "calling", Group: "call-settings-for-me", Command: "update-selective-reject", - Summary: "Modify a Selective Call Reject Criteria", - Description: "Modify Selective Call Reject Criteria Settings for the authenticated user.\n\n\n\nSelective Call Reject allows you to create customized rules to reject specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/selectiveReject/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "The `id` parameter specifies the unique identifier for the selective call reject. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "callsFrom", Flag: "calls-from", Type: "string"}, - {Name: "rejectEnabled", Flag: "reject-enabled", Type: "bool"}, - {Name: "scheduleName", Flag: "schedule-name", Type: "string"}, - {Name: "scheduleType", Flag: "schedule-type", Type: "string"}, - {Name: "scheduleLevel", Flag: "schedule-level", Type: "string"}, - {Name: "anonymousCallersEnabled", Flag: "anonymous-callers-enabled", Type: "bool"}, - {Name: "unavailableCallersEnabled", Flag: "unavailable-callers-enabled", Type: "bool"}, - {Name: "phoneNumbers", Flag: "phone-numbers", Type: "[]string"}, - }}, -} - -var CallingCallSettingsForMeDeleteSelectiveReject = &Operation{ - ID: "CallingCallSettingsForMeDeleteSelectiveReject", Area: "calling", Group: "call-settings-for-me", Command: "delete-selective-reject", - Summary: "Delete a Selective Call Reject Criteria", - Description: "Delete a Selective Call Reject Criteria for the authenticated user.\n\n\n\nSelective Call Reject allows you to create customized rules to reject specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/people/me/settings/selectiveReject/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "The `id` parameter specifies the unique identifier for the selective call reject criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`."}, - }, -} - -var CallingCallSettingsForMeGetWaitingUser = &Operation{ - ID: "CallingCallSettingsForMeGetWaitingUser", Area: "calling", Group: "call-settings-for-me", Command: "get-waiting-user", - Summary: "Get Call Waiting Settings for User", - Description: "Get Call Waiting Settings for the authenticated user.\n\nCall Waiting allows a user to receive multiple calls simultaneously. When the user is on an active call, they can receive an incoming call and switch between the two calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/callWaiting", Host: HostWebex, -} - -var CallingCallSettingsForMeUpdateWaitingUser = &Operation{ - ID: "CallingCallSettingsForMeUpdateWaitingUser", Area: "calling", Group: "call-settings-for-me", Command: "update-waiting-user", - Summary: "Modify Call Waiting Settings for User", - Description: "Update Call Waiting Settings for the authenticated user.\n\nCall Waiting allows a user to receive multiple calls simultaneously. When the user is on an active call, they can receive an incoming call and switch between the two calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/callWaiting", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "enabled", Flag: "enabled", Type: "bool"}, - }}, -} - -var CallingCallSettingsForMeGetSequentialRingUser = &Operation{ - ID: "CallingCallSettingsForMeGetSequentialRingUser", Area: "calling", Group: "call-settings-for-me", Command: "get-sequential-ring-user", - Summary: "Get Sequential Ring Settings for User", - Description: "Get Sequential Ring Settings for the authenticated user.\n\nSequential Ring allows calls to ring additional phone numbers in sequence if the initial call is not answered. This can be configured to ring up to five phone numbers with customizable ring patterns.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/sequentialRing", Host: HostWebex, -} - -var CallingCallSettingsForMeUpdateSequentialRingUser = &Operation{ - ID: "CallingCallSettingsForMeUpdateSequentialRingUser", Area: "calling", Group: "call-settings-for-me", Command: "update-sequential-ring-user", - Summary: "Modify Sequential Ring Settings for User", - Description: "Update Sequential Ring Settings for the authenticated user.\n\nSequential Ring allows calls to ring additional phone numbers in sequence if the initial call is not answered. This can be configured to ring up to five phone numbers with customizable ring patterns.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/sequentialRing", Host: HostWebex, - Body: &Body{}, -} - -var CallingCallSettingsForMeCreateUserSequentialRing = &Operation{ - ID: "CallingCallSettingsForMeCreateUserSequentialRing", Area: "calling", Group: "call-settings-for-me", Command: "create-user-sequential-ring", - Summary: "Add User Sequential Ring Criteria", - Description: "Create a new Sequential Ring Criteria for the authenticated user.\n\nSequential Ring criteria defines rules for when sequential ring should activate based on the caller and schedule.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/people/me/settings/sequentialRing/criteria", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "callsFrom", Flag: "calls-from", Type: "string"}, - {Name: "ringEnabled", Flag: "ring-enabled", Type: "bool"}, - {Name: "scheduleName", Flag: "schedule-name", Type: "string"}, - {Name: "scheduleType", Flag: "schedule-type", Type: "string"}, - {Name: "scheduleLevel", Flag: "schedule-level", Type: "string"}, - {Name: "anonymousCallersEnabled", Flag: "anonymous-callers-enabled", Type: "bool"}, - {Name: "unavailableCallersEnabled", Flag: "unavailable-callers-enabled", Type: "bool"}, - {Name: "phoneNumbers", Flag: "phone-numbers", Type: "[]string"}, - }}, -} - -var CallingCallSettingsForMeGetSequentialRingUser2 = &Operation{ - ID: "CallingCallSettingsForMeGetSequentialRingUser2", Area: "calling", Group: "call-settings-for-me", Command: "get-sequential-ring-user-2", - Summary: "Get Sequential Ring Criteria Settings for User", - Description: "Get Sequential Ring Criteria Settings for the authenticated user.\n\nSequential Ring criteria defines rules for when sequential ring should activate based on the caller and schedule.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/sequentialRing/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "The `id` parameter specifies the unique identifier for the sequential ring criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`."}, - }, -} - -var CallingCallSettingsForMeUpdateSequentialRingUser2 = &Operation{ - ID: "CallingCallSettingsForMeUpdateSequentialRingUser2", Area: "calling", Group: "call-settings-for-me", Command: "update-sequential-ring-user-2", - Summary: "Modify Sequential Ring Criteria Settings for User", - Description: "Update Sequential Ring Criteria Settings for the authenticated user.\n\nSequential Ring criteria defines rules for when sequential ring should activate based on the caller and schedule.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/sequentialRing/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "The `id` parameter specifies the unique identifier for the sequential ring criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "scheduleName", Flag: "schedule-name", Type: "string"}, - {Name: "scheduleType", Flag: "schedule-type", Type: "string"}, - {Name: "scheduleLevel", Flag: "schedule-level", Type: "string"}, - {Name: "callsFrom", Flag: "calls-from", Type: "string"}, - {Name: "anonymousCallersEnabled", Flag: "anonymous-callers-enabled", Type: "bool"}, - {Name: "unavailableCallersEnabled", Flag: "unavailable-callers-enabled", Type: "bool"}, - {Name: "phoneNumbers", Flag: "phone-numbers", Type: "[]string"}, - {Name: "ringEnabled", Flag: "ring-enabled", Type: "bool"}, - }}, -} - -var CallingCallSettingsForMeDeleteSequentialRing = &Operation{ - ID: "CallingCallSettingsForMeDeleteSequentialRing", Area: "calling", Group: "call-settings-for-me", Command: "delete-sequential-ring", - Summary: "Delete Sequential Ring Criteria", - Description: "Delete a Sequential Ring Criteria for the authenticated user.\n\nSequential Ring criteria defines rules for when sequential ring should activate based on the caller and schedule.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/people/me/settings/sequentialRing/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "The `id` parameter specifies the unique identifier for the sequential ring criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`."}, - }, -} - -var CallingCallSettingsForMeGetPriorityAlert2Dup = &Operation{ - ID: "CallingCallSettingsForMeGetPriorityAlert2Dup", Area: "calling", Group: "call-settings-for-me", Command: "get-priority-alert-2", - Summary: "Get Priority Alert Settings", - Description: "Get Priority Alert Settings for the authenticated user.\n\nPriority alert allows you to set up a unique ringtone based on predefined criteria. This is helpful, when the user wants to be quickly notified that a specific phone number is calling.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/priorityAlert", Host: HostWebex, -} - -var CallingCallSettingsForMeUpdatePriorityAlertUser2 = &Operation{ - ID: "CallingCallSettingsForMeUpdatePriorityAlertUser2", Area: "calling", Group: "call-settings-for-me", Command: "update-priority-alert-user-2", - Summary: "Modify Priority Alert Settings for User", - Description: "Update Priority Alert Settings for the authenticated user.\n\nPriority alert allows you to set up a unique ringtone based on predefined criteria. This is helpful, when the user wants to be quickly notified that a specific phone number is calling.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/priorityAlert", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "enabled", Flag: "enabled", Type: "bool"}, - }}, -} - -var CallingCallSettingsForMeCreatePriorityAlert2 = &Operation{ - ID: "CallingCallSettingsForMeCreatePriorityAlert2", Area: "calling", Group: "call-settings-for-me", Command: "create-priority-alert-2", - Summary: "Add a Priority Alert Criteria", - Description: "Create a Priority Alert Criteria for the authenticated user.\n\nPriority alert allows you to set up a unique ringtone based on predefined criteria. This is helpful, when the user wants to be quickly notified that a specific phone number is calling.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/people/me/settings/priorityAlert/criteria", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "scheduleName", Flag: "schedule-name", Type: "string"}, - {Name: "scheduleType", Flag: "schedule-type", Type: "string"}, - {Name: "scheduleLevel", Flag: "schedule-level", Type: "string"}, - {Name: "callsFrom", Flag: "calls-from", Type: "string"}, - {Name: "anonymousCallersEnabled", Flag: "anonymous-callers-enabled", Type: "bool"}, - {Name: "unavailableCallersEnabled", Flag: "unavailable-callers-enabled", Type: "bool"}, - {Name: "phoneNumbers", Flag: "phone-numbers", Type: "[]string"}, - {Name: "notificationEnabled", Flag: "notification-enabled", Type: "bool"}, - }}, -} - -var CallingCallSettingsForMeGetPriorityAlert22 = &Operation{ - ID: "CallingCallSettingsForMeGetPriorityAlert22", Area: "calling", Group: "call-settings-for-me", Command: "get-priority-alert-2-2", - Summary: "Get Priority Alert Criteria Settings", - Description: "Get Priority Alert Criteria Settings for the authenticated user.\n\nPriority alert allows you to set up a unique ringtone based on predefined criteria. This is helpful, when the user wants to be quickly notified that a specific phone number is calling.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/priorityAlert/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "The `id` parameter specifies the unique identifier for the priority alert criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`."}, - }, -} - -var CallingCallSettingsForMeUpdatePriorityAlert2 = &Operation{ - ID: "CallingCallSettingsForMeUpdatePriorityAlert2", Area: "calling", Group: "call-settings-for-me", Command: "update-priority-alert-2", - Summary: "Modify Settings for a Priority Alert Criteria", - Description: "Modify Priority Alert Criteria Settings for the authenticated user.\n\nPriority alert allows you to set up a unique ringtone based on predefined criteria. This API allows modifying attributes such as name, phoneNumbers etc for a particular criteria.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/priorityAlert/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "The `id` parameter specifies the unique identifier for the priority alert criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "scheduleName", Flag: "schedule-name", Type: "string"}, - {Name: "scheduleType", Flag: "schedule-type", Type: "string"}, - {Name: "scheduleLevel", Flag: "schedule-level", Type: "string"}, - {Name: "callsFrom", Flag: "calls-from", Type: "string"}, - {Name: "anonymousCallersEnabled", Flag: "anonymous-callers-enabled", Type: "bool"}, - {Name: "unavailableCallersEnabled", Flag: "unavailable-callers-enabled", Type: "bool"}, - {Name: "phoneNumbers", Flag: "phone-numbers", Type: "[]string"}, - {Name: "notificationEnabled", Flag: "notification-enabled", Type: "bool"}, - }}, -} - -var CallingCallSettingsForMeDeletePriorityAlert2 = &Operation{ - ID: "CallingCallSettingsForMeDeletePriorityAlert2", Area: "calling", Group: "call-settings-for-me", Command: "delete-priority-alert-2", - Summary: "Delete a Priority Alert Criteria", - Description: "Delete a Priority Alert criteria for the authenticated user.\n\nPriority alert allows you to set up a unique ringtone based on predefined criteria. This API removes a specific criteria rule by its unique identifier.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/people/me/settings/priorityAlert/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "The `id` parameter specifies the unique identifier for the priority alert criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`."}, - }, -} - -var CallingCallSettingsForMeGetUserSchedules2 = &Operation{ - ID: "CallingCallSettingsForMeGetUserSchedules2", Area: "calling", Group: "call-settings-for-me", Command: "get-user-schedules-2", - Summary: "Get User (and Location) Schedules", - Description: "Get Schedules for Call Settings for the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/schedules", Host: HostWebex, -} - -var CallingCallSettingsForMeCreateUserSchedule2 = &Operation{ - ID: "CallingCallSettingsForMeCreateUserSchedule2", Area: "calling", Group: "call-settings-for-me", Command: "create-user-schedule-2", - Summary: "Add a User level Schedule for Call Settings", - Description: "Create a new Schedule for the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/people/me/schedules", Host: HostWebex, - Body: &Body{}, -} - -var CallingCallSettingsForMeGetUserSchedule2 = &Operation{ - ID: "CallingCallSettingsForMeGetUserSchedule2", Area: "calling", Group: "call-settings-for-me", Command: "get-user-schedule-2", - Summary: "Get User Schedule", - Description: "Get a Schedule details for Call Settings of the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/schedules/{scheduleType}/{scheduleId}", Host: HostWebex, - Params: []Param{ - {Name: "scheduleType", In: InPath, Flag: "schedule-type", Usage: "Type of the schedule.\n * `businessHours` - Business hours schedule type.\n * `holidays` - Holidays schedule type.\n"}, - {Name: "scheduleId", In: InPath, Flag: "schedule-id", Usage: "Retrieve the schedule with the matching ID."}, - }, -} - -var CallingCallSettingsForMeUpdateUserSchedule2 = &Operation{ - ID: "CallingCallSettingsForMeUpdateUserSchedule2", Area: "calling", Group: "call-settings-for-me", Command: "update-user-schedule-2", - Summary: "Modify User Schedule", - Description: "Modify a Schedule details for Call Settings of the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "PUT", Path: "/telephony/config/people/me/schedules/{scheduleType}/{scheduleId}", Host: HostWebex, - Params: []Param{ - {Name: "scheduleType", In: InPath, Flag: "schedule-type", Usage: "Type of the schedule.\n * `businessHours` - Business hours schedule type.\n * `holidays` - Holidays schedule type.\n"}, - {Name: "scheduleId", In: InPath, Flag: "schedule-id", Usage: "Update the schedule with the matching ID."}, - }, - Body: &Body{}, -} - -var CallingCallSettingsForMeDeleteUserSchedule2 = &Operation{ - ID: "CallingCallSettingsForMeDeleteUserSchedule2", Area: "calling", Group: "call-settings-for-me", Command: "delete-user-schedule-2", - Summary: "Delete a User Schedule", - Description: "Delete a specific schedule for the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/people/me/schedules/{scheduleType}/{scheduleId}", Host: HostWebex, - Params: []Param{ - {Name: "scheduleType", In: InPath, Flag: "schedule-type", Usage: "Type of the schedule.\n * `businessHours` - Business hours schedule type.\n * `holidays` - Holidays schedule type.\n"}, - {Name: "scheduleId", In: InPath, Flag: "schedule-id", Usage: "Delete the schedule with the matching ID."}, - }, -} - -var CallingCallSettingsForMeCreateEventUserSchedule2 = &Operation{ - ID: "CallingCallSettingsForMeCreateEventUserSchedule2", Area: "calling", Group: "call-settings-for-me", Command: "create-event-user-schedule-2", - Summary: "Add an event for a User Schedule", - Description: "Create a new Event for for the authenticated user's specified schedule.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/people/me/schedules/{scheduleType}/{scheduleId}/events", Host: HostWebex, - Params: []Param{ - {Name: "scheduleType", In: InPath, Flag: "schedule-type", Usage: "Type of the schedule.\n * `businessHours` - Business hours schedule type.\n * `holidays` - Holidays schedule type.\n"}, - {Name: "scheduleId", In: InPath, Flag: "schedule-id", Usage: "add an event for the specified schedule ID."}, - }, - Body: &Body{}, -} - -var CallingCallSettingsForMeGetUserScheduleEvent2 = &Operation{ - ID: "CallingCallSettingsForMeGetUserScheduleEvent2", Area: "calling", Group: "call-settings-for-me", Command: "get-user-schedule-event-2", - Summary: "Get User Schedule Event", - Description: "Get a Schedule Event details for Call Settings of the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/schedules/{scheduleType}/{scheduleId}/events/{eventId}", Host: HostWebex, - Params: []Param{ - {Name: "scheduleType", In: InPath, Flag: "schedule-type", Usage: "Type of the schedule.\n * `businessHours` - Business hours schedule type.\n * `holidays` - Holidays schedule type.\n"}, - {Name: "scheduleId", In: InPath, Flag: "schedule-id", Usage: "Retrieve the schedule with the matching ID."}, - {Name: "eventId", In: InPath, Flag: "event-id", Usage: "Retrieve the event with the matching ID."}, - }, -} - -var CallingCallSettingsForMeUpdateUserScheduleEvent2 = &Operation{ - ID: "CallingCallSettingsForMeUpdateUserScheduleEvent2", Area: "calling", Group: "call-settings-for-me", Command: "update-user-schedule-event-2", - Summary: "Modify User Schedule Event", - Description: "Modify a Schedule event details for Call Settings of the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "PUT", Path: "/telephony/config/people/me/schedules/{scheduleType}/{scheduleId}/events/{eventId}", Host: HostWebex, - Params: []Param{ - {Name: "scheduleType", In: InPath, Flag: "schedule-type", Usage: "Type of the schedule.\n * `businessHours` - Business hours schedule type.\n * `holidays` - Holidays schedule type.\n"}, - {Name: "scheduleId", In: InPath, Flag: "schedule-id", Usage: "Update an event for the specified schedule ID."}, - {Name: "eventId", In: InPath, Flag: "event-id", Usage: "Update the event with the matching ID."}, - }, - Body: &Body{}, -} - -var CallingCallSettingsForMeDeleteUserScheduleEvent2 = &Operation{ - ID: "CallingCallSettingsForMeDeleteUserScheduleEvent2", Area: "calling", Group: "call-settings-for-me", Command: "delete-user-schedule-event-2", - Summary: "Delete User a Schedule Event", - Description: "Delete a specific schedule event for the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/people/me/schedules/{scheduleType}/{scheduleId}/events/{eventId}", Host: HostWebex, - Params: []Param{ - {Name: "scheduleType", In: InPath, Flag: "schedule-type", Usage: "Type of the schedule.\n * `businessHours` - Business hours schedule type.\n * `holidays` - Holidays schedule type.\n"}, - {Name: "scheduleId", In: InPath, Flag: "schedule-id", Usage: "Delete an event for the specified schedule ID."}, - {Name: "eventId", In: InPath, Flag: "event-id", Usage: "Delete the event with the matching ID."}, - }, -} - -var CallingCallSettingsForMeGetUserLocationSchedule2 = &Operation{ - ID: "CallingCallSettingsForMeGetUserLocationSchedule2", Area: "calling", Group: "call-settings-for-me", Command: "get-user-location-schedule-2", - Summary: "Get User's Location Level Schedule", - Description: "Get Location Schedule for Call Settings of the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/locations/schedules/{scheduleType}/{scheduleId}", Host: HostWebex, - Params: []Param{ - {Name: "scheduleType", In: InPath, Flag: "schedule-type", Usage: "Type of the schedule.\n * `businessHours` - Business hours schedule type.\n * `holidays` - Holidays schedule type.\n"}, - {Name: "scheduleId", In: InPath, Flag: "schedule-id", Usage: "Retrieve the schedule with the matching ID."}, - }, -} - -var CallingCallSettingsForMeGetNotifyUser2 = &Operation{ - ID: "CallingCallSettingsForMeGetNotifyUser2", Area: "calling", Group: "call-settings-for-me", Command: "get-notify-user-2", - Summary: "Get Call Notify Settings for User", - Description: "Get Call Notify Settings for the authenticated user.\n\nCall Notify allows you to set up a unique ringtone based on predefined criteria. This is helpful, when the user wants to be quickly notified that a specific phone number is calling.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/callNotify", Host: HostWebex, -} - -var CallingCallSettingsForMeUpdateNotifyUser2 = &Operation{ - ID: "CallingCallSettingsForMeUpdateNotifyUser2", Area: "calling", Group: "call-settings-for-me", Command: "update-notify-user-2", - Summary: "Modify Call Notify Settings for User", - Description: "Update Call Notify Settings for the authenticated user.\n\nCall Notify allows you to set up a unique ringtone based on predefined criteria. This API allows modifying attributes such as name, phoneNumbers etc for a particular criteria.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/callNotify", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "enabled", Flag: "enabled", Type: "bool"}, - {Name: "emailAddress", Flag: "email-address", Type: "string"}, - }}, -} - -var CallingCallSettingsForMeCreateNotify2 = &Operation{ - ID: "CallingCallSettingsForMeCreateNotify2", Area: "calling", Group: "call-settings-for-me", Command: "create-notify-2", - Summary: "Add a Call Notify Criteria", - Description: "Create a Call Notify Criteria for the authenticated user.\n\nCall Notify allows you to set up a unique ringtone based on predefined criteria. This is helpful, when the user wants to be quickly notified that a specific phone number is calling.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/people/me/settings/callNotify/criteria", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "scheduleName", Flag: "schedule-name", Type: "string"}, - {Name: "scheduleType", Flag: "schedule-type", Type: "string"}, - {Name: "scheduleLevel", Flag: "schedule-level", Type: "string"}, - {Name: "callsFrom", Flag: "calls-from", Type: "string"}, - {Name: "anonymousCallersEnabled", Flag: "anonymous-callers-enabled", Type: "bool"}, - {Name: "unavailableCallersEnabled", Flag: "unavailable-callers-enabled", Type: "bool"}, - {Name: "phoneNumbers", Flag: "phone-numbers", Type: "[]string"}, - {Name: "notificationEnabled", Flag: "notification-enabled", Type: "bool"}, - }}, -} - -var CallingCallSettingsForMeGetNotify2 = &Operation{ - ID: "CallingCallSettingsForMeGetNotify2", Area: "calling", Group: "call-settings-for-me", Command: "get-notify-2", - Summary: "Get Call Notify Criteria Settings", - Description: "Get Call Notify Criteria Settings for the authenticated user.\n\nCall Notify allows you to set up a unique ringtone based on predefined criteria. This is helpful, when the user wants to be quickly notified that a specific phone number is calling.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/callNotify/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "The `id` parameter specifies the unique identifier for the call notify criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`."}, - }, -} - -var CallingCallSettingsForMeUpdateNotify2 = &Operation{ - ID: "CallingCallSettingsForMeUpdateNotify2", Area: "calling", Group: "call-settings-for-me", Command: "update-notify-2", - Summary: "Modify a Call Notify Criteria", - Description: "Modify Call Notify Criteria Settings for the authenticated user.\n\nCall Notify allows you to set up a unique ringtone based on predefined criteria. This API allows modifying attributes such as name, phoneNumbers etc for a particular criteria.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/callNotify/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "The `id` parameter specifies the unique identifier for the call notify criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "scheduleName", Flag: "schedule-name", Type: "string"}, - {Name: "scheduleType", Flag: "schedule-type", Type: "string"}, - {Name: "scheduleLevel", Flag: "schedule-level", Type: "string"}, - {Name: "callsFrom", Flag: "calls-from", Type: "string"}, - {Name: "anonymousCallersEnabled", Flag: "anonymous-callers-enabled", Type: "bool"}, - {Name: "unavailableCallersEnabled", Flag: "unavailable-callers-enabled", Type: "bool"}, - {Name: "phoneNumbers", Flag: "phone-numbers", Type: "[]string"}, - {Name: "notificationEnabled", Flag: "notification-enabled", Type: "bool"}, - }}, -} - -var CallingCallSettingsForMeDeleteNotify2 = &Operation{ - ID: "CallingCallSettingsForMeDeleteNotify2", Area: "calling", Group: "call-settings-for-me", Command: "delete-notify-2", - Summary: "Delete a Call Notify Criteria", - Description: "Delete a Call Notify criteria for the authenticated user.\n\nCall Notify allows you to set up a unique ringtone based on predefined criteria. This API removes a specific criteria rule by its unique identifier.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/people/me/settings/callNotify/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "The `id` parameter specifies the unique identifier for the call notify criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`."}, - }, -} - -var CallingCallSettingsForMeGetSelectiveAcceptUser2Dup = &Operation{ - ID: "CallingCallSettingsForMeGetSelectiveAcceptUser2Dup", Area: "calling", Group: "call-settings-for-me", Command: "get-selective-accept-user-2", - Summary: "Get Selective Call Accept Settings for User", - Description: "Get Selective Call Accept Settings for the authenticated user.\n\nSelective Call Accept allows you to create customized rules to accept specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/selectiveAccept", Host: HostWebex, -} - -var CallingCallSettingsForMeUpdateSelectiveAcceptUser2 = &Operation{ - ID: "CallingCallSettingsForMeUpdateSelectiveAcceptUser2", Area: "calling", Group: "call-settings-for-me", Command: "update-selective-accept-user-2", - Summary: "Modify Selective Call Accept Settings for User", - Description: "Update Selective Call Accept Settings for the authenticated user.\n\nSelective Call Accept allows you to create customized rules to accept specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/selectiveAccept", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "enabled", Flag: "enabled", Type: "bool"}, - }}, -} - -var CallingCallSettingsForMeCreateUserSelectiveAccept2 = &Operation{ - ID: "CallingCallSettingsForMeCreateUserSelectiveAccept2", Area: "calling", Group: "call-settings-for-me", Command: "create-user-selective-accept-2", - Summary: "Add User Selective Call Accept Criteria", - Description: "Create a new Selective Call Accept Criteria for the authenticated user.\n\nSelective Call Accept allows you to create customized rules to accept specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/people/me/settings/selectiveAccept/criteria", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "callsFrom", Flag: "calls-from", Type: "string"}, - {Name: "acceptEnabled", Flag: "accept-enabled", Type: "bool"}, - {Name: "scheduleName", Flag: "schedule-name", Type: "string"}, - {Name: "scheduleType", Flag: "schedule-type", Type: "string"}, - {Name: "scheduleLevel", Flag: "schedule-level", Type: "string"}, - {Name: "anonymousCallersEnabled", Flag: "anonymous-callers-enabled", Type: "bool"}, - {Name: "unavailableCallersEnabled", Flag: "unavailable-callers-enabled", Type: "bool"}, - {Name: "phoneNumbers", Flag: "phone-numbers", Type: "[]string"}, - }}, -} - -var CallingCallSettingsForMeGetSelectiveAcceptUser22 = &Operation{ - ID: "CallingCallSettingsForMeGetSelectiveAcceptUser22", Area: "calling", Group: "call-settings-for-me", Command: "get-selective-accept-user-2-2", - Summary: "Get Selective Call Accept Criteria Settings for User", - Description: "Get Selective Call Accept Criteria Settings for the authenticated user.\n\nSelective Call Accept allows you to create customized rules to accept specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/selectiveAccept/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "The `id` parameter specifies the unique identifier for the selective call accept criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`."}, - }, -} - -var CallingCallSettingsForMeUpdateSelectiveAccept2 = &Operation{ - ID: "CallingCallSettingsForMeUpdateSelectiveAccept2", Area: "calling", Group: "call-settings-for-me", Command: "update-selective-accept-2", - Summary: "Modify a Selective Call Accept Criteria", - Description: "Modify Selective Call Accept Criteria Settings for the authenticated user.\n\n\n\nSelective Call Accept allows you to create customized rules to accept specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/selectiveAccept/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "The `id` parameter specifies the unique identifier for the selective call accept. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "callsFrom", Flag: "calls-from", Type: "string"}, - {Name: "acceptEnabled", Flag: "accept-enabled", Type: "bool"}, - {Name: "scheduleName", Flag: "schedule-name", Type: "string"}, - {Name: "scheduleType", Flag: "schedule-type", Type: "string"}, - {Name: "scheduleLevel", Flag: "schedule-level", Type: "string"}, - {Name: "anonymousCallersEnabled", Flag: "anonymous-callers-enabled", Type: "bool"}, - {Name: "unavailableCallersEnabled", Flag: "unavailable-callers-enabled", Type: "bool"}, - {Name: "phoneNumbers", Flag: "phone-numbers", Type: "[]string"}, - }}, -} - -var CallingCallSettingsForMeDeleteSelectiveAccept2 = &Operation{ - ID: "CallingCallSettingsForMeDeleteSelectiveAccept2", Area: "calling", Group: "call-settings-for-me", Command: "delete-selective-accept-2", - Summary: "Delete a Selective Call Accept Criteria", - Description: "Delete a Selective Call Accept Criteria for the authenticated user.\n\n\n\nSelective Call Accept allows you to create customized rules to accept specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/people/me/settings/selectiveAccept/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "The `id` parameter specifies the unique identifier for the selective call accept criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`."}, - }, -} - -var CallingCallSettingsForMeGetAvailableNumbersUserLocation2 = &Operation{ - ID: "CallingCallSettingsForMeGetAvailableNumbersUserLocation2", Area: "calling", Group: "call-settings-for-me", Command: "get-available-numbers-user-location-2", - Summary: "Get Available Numbers for User's Location", - Description: "Get Available Numbers for User's Location.\n\nFetch all the numbers available in User's location.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/location/assignedNumbers", Host: HostWebex, - Params: []Param{ - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the maximum number of numbers in the response."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Specify the offset from the first result that you want to fetch."}, - {Name: "name", In: InQuery, Flag: "name", Usage: "List numbers whose owner name contains this string."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "List numbers whose phoneNumber contains this string."}, - {Name: "extension", In: InQuery, Flag: "extension", Usage: "List numbers whose extension contains this string."}, - {Name: "order", In: InQuery, Flag: "order", Usage: "Sort the list of numbers based on `lastName`, `dn`, `extension` either asc or desc."}, - }, - Paging: &Paging{}, -} - -var CallingCallSettingsForMeCreateSelectiveForward2 = &Operation{ - ID: "CallingCallSettingsForMeCreateSelectiveForward2", Area: "calling", Group: "call-settings-for-me", Command: "create-selective-forward-2", - Summary: "Add a Selective Call Forwarding Criteria", - Description: "Create a Selective Call Forwarding Criteria for the authenticated user.\n\nSelective Call Forward allows you to define rules that automatically forward incoming calls based on specific criteria, such as the caller’s phone number, caller identity, and the time and day the call is received.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/people/me/settings/selectiveForward/criteria", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "forwardToPhoneNumber", Flag: "forward-to-phone-number", Type: "string"}, - {Name: "destinationVoicemailEnabled", Flag: "destination-voicemail-enabled", Type: "bool"}, - {Name: "scheduleName", Flag: "schedule-name", Type: "string"}, - {Name: "scheduleType", Flag: "schedule-type", Type: "string"}, - {Name: "scheduleLevel", Flag: "schedule-level", Type: "string"}, - {Name: "callsFrom", Flag: "calls-from", Type: "string"}, - {Name: "anonymousCallersEnabled", Flag: "anonymous-callers-enabled", Type: "bool"}, - {Name: "unavailableCallersEnabled", Flag: "unavailable-callers-enabled", Type: "bool"}, - {Name: "phoneNumbers", Flag: "phone-numbers", Type: "[]string"}, - {Name: "forwardEnabled", Flag: "forward-enabled", Type: "bool"}, - }}, -} - -var CallingCallSettingsForMeGetSelectiveForward2 = &Operation{ - ID: "CallingCallSettingsForMeGetSelectiveForward2", Area: "calling", Group: "call-settings-for-me", Command: "get-selective-forward-2", - Summary: "Get Settings for a Selective Call Forwarding Criteria", - Description: "Get settings for a Selective Call Forwarding Criteria for the authenticated user.\n\nSelective Call Forward allows you to define rules that automatically forward incoming calls based on specific criteria, such as the caller’s phone number, caller identity, and the time and day the call is received.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/selectiveForward/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "The `id` parameter specifies the unique identifier for the selective call forwarding criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`."}, - }, -} - -var CallingCallSettingsForMeUpdateSelectiveForward2 = &Operation{ - ID: "CallingCallSettingsForMeUpdateSelectiveForward2", Area: "calling", Group: "call-settings-for-me", Command: "update-selective-forward-2", - Summary: "Modify Settings for a Selective Call Forwarding Criteria", - Description: "Modify settings for a Selective Call Forwarding Criteria for the authenticated user.\n\nSelective Call Forward allows you to define rules that automatically forward incoming calls based on specific criteria, such as the caller’s phone number, caller identity, and the time and day the call is received.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/selectiveForward/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "The `id` parameter specifies the unique identifier for the selective call forwarding criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "forwardToPhoneNumber", Flag: "forward-to-phone-number", Type: "string"}, - {Name: "destinationVoicemailEnabled", Flag: "destination-voicemail-enabled", Type: "bool"}, - {Name: "scheduleName", Flag: "schedule-name", Type: "string"}, - {Name: "scheduleType", Flag: "schedule-type", Type: "string"}, - {Name: "scheduleLevel", Flag: "schedule-level", Type: "string"}, - {Name: "callsFrom", Flag: "calls-from", Type: "string"}, - {Name: "anonymousCallersEnabled", Flag: "anonymous-callers-enabled", Type: "bool"}, - {Name: "unavailableCallersEnabled", Flag: "unavailable-callers-enabled", Type: "bool"}, - {Name: "phoneNumbers", Flag: "phone-numbers", Type: "[]string"}, - {Name: "forwardEnabled", Flag: "forward-enabled", Type: "bool"}, - }}, -} - -var CallingCallSettingsForMeDeleteSelectiveForward2 = &Operation{ - ID: "CallingCallSettingsForMeDeleteSelectiveForward2", Area: "calling", Group: "call-settings-for-me", Command: "delete-selective-forward-2", - Summary: "Delete a Selective Call Forwarding Criteria", - Description: "Delete a Selective Call Forwarding Criteria for the authenticated user.\n\nSelective call forwarding allows you to define rules that automatically forward incoming calls based on specific criteria. This API removes a specific criteria rule by its unique identifier.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/people/me/settings/selectiveForward/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "The `id` parameter specifies the unique identifier for the selective call forwarding criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`."}, - }, -} - -var CallingCallSettingsForMeGetSelectiveForwardUser2 = &Operation{ - ID: "CallingCallSettingsForMeGetSelectiveForwardUser2", Area: "calling", Group: "call-settings-for-me", Command: "get-selective-forward-user-2", - Summary: "Get Selective Call Forward Settings for User", - Description: "Get Selective Call Forward Settings for the authenticated user.\n\nSelective Call Forward allows you to create customized rules to forward specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/selectiveForward", Host: HostWebex, -} - -var CallingCallSettingsForMeUpdateSelectiveForwardUser2 = &Operation{ - ID: "CallingCallSettingsForMeUpdateSelectiveForwardUser2", Area: "calling", Group: "call-settings-for-me", Command: "update-selective-forward-user-2", - Summary: "Modify Selective Call Forward Settings for User", - Description: "Update the Selective Call Forward Settings for the authenticated user.\n\nSelective Call Accept allows you to create customized rules to accept specific calls for users based on the phone number, identity, and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/selectiveForward", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "enabled", Flag: "enabled", Type: "bool"}, - {Name: "defaultPhoneNumberToForward", Flag: "default-phone-number-to-forward", Type: "string"}, - {Name: "ringReminderEnabled", Flag: "ring-reminder-enabled", Type: "bool"}, - {Name: "destinationVoicemailEnabled", Flag: "destination-voicemail-enabled", Type: "bool"}, - }}, -} - -var CallingCallSettingsForMeGetSelectiveRejectUser2Dup = &Operation{ - ID: "CallingCallSettingsForMeGetSelectiveRejectUser2Dup", Area: "calling", Group: "call-settings-for-me", Command: "get-selective-reject-user-2", - Summary: "Get Selective Call Reject Settings for User", - Description: "Get Selective Call Reject Settings for the authenticated user.\n\nSelective Call Reject allows you to create customized rules to reject specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/selectiveReject", Host: HostWebex, -} - -var CallingCallSettingsForMeUpdateSelectiveRejectUser2 = &Operation{ - ID: "CallingCallSettingsForMeUpdateSelectiveRejectUser2", Area: "calling", Group: "call-settings-for-me", Command: "update-selective-reject-user-2", - Summary: "Modify Selective Call Reject Settings for User", - Description: "Update Selective Call Reject Settings for the authenticated user.\n\nSelective Call Reject allows you to create customized rules to reject specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/selectiveReject", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "enabled", Flag: "enabled", Type: "bool"}, - }}, -} - -var CallingCallSettingsForMeCreateUserSelectiveReject2 = &Operation{ - ID: "CallingCallSettingsForMeCreateUserSelectiveReject2", Area: "calling", Group: "call-settings-for-me", Command: "create-user-selective-reject-2", - Summary: "Add User Selective Call Reject Criteria", - Description: "Create a new Selective Call Reject Criteria for the authenticated user.\n\nSelective Call Reject allows you to create customized rules to reject specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/people/me/settings/selectiveReject/criteria", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "callsFrom", Flag: "calls-from", Type: "string"}, - {Name: "rejectEnabled", Flag: "reject-enabled", Type: "bool"}, - {Name: "scheduleName", Flag: "schedule-name", Type: "string"}, - {Name: "scheduleType", Flag: "schedule-type", Type: "string"}, - {Name: "scheduleLevel", Flag: "schedule-level", Type: "string"}, - {Name: "anonymousCallersEnabled", Flag: "anonymous-callers-enabled", Type: "bool"}, - {Name: "unavailableCallersEnabled", Flag: "unavailable-callers-enabled", Type: "bool"}, - {Name: "phoneNumbers", Flag: "phone-numbers", Type: "[]string"}, - }}, -} - -var CallingCallSettingsForMeGetAnonymousRejectionUser2 = &Operation{ - ID: "CallingCallSettingsForMeGetAnonymousRejectionUser2", Area: "calling", Group: "call-settings-for-me", Command: "get-anonymous-rejection-user-2", - Summary: "Get Anonymous Call Rejection Settings for User", - Description: "Get Anonymous Call Rejection Settings for the authenticated user.\n\nAnonymous Call Rejection allows you to reject calls from anonymous callers.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/anonymousCallReject", Host: HostWebex, -} - -var CallingCallSettingsForMeUpdateAnonymousRejectionUser2 = &Operation{ - ID: "CallingCallSettingsForMeUpdateAnonymousRejectionUser2", Area: "calling", Group: "call-settings-for-me", Command: "update-anonymous-rejection-user-2", - Summary: "Modify Anonymous Call Rejection Settings for User", - Description: "Update Anonymous Call Rejection Settings for the authenticated user.\n\nAnonymous Call Rejection allows you to reject calls from anonymous callers.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/anonymousCallReject", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "enabled", Flag: "enabled", Type: "bool"}, - }}, -} - -var CallingCallSettingsForMeGetSelectiveRejectUser22 = &Operation{ - ID: "CallingCallSettingsForMeGetSelectiveRejectUser22", Area: "calling", Group: "call-settings-for-me", Command: "get-selective-reject-user-2-2", - Summary: "Get Selective Call Reject Criteria Settings for User", - Description: "Get Selective Call Reject Criteria Settings for the authenticated user.\n\nSelective Call Reject allows you to create customized rules to reject specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/selectiveReject/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "The `id` parameter specifies the unique identifier for the selective call reject criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`."}, - }, -} - -var CallingCallSettingsForMeUpdateSelectiveReject2 = &Operation{ - ID: "CallingCallSettingsForMeUpdateSelectiveReject2", Area: "calling", Group: "call-settings-for-me", Command: "update-selective-reject-2", - Summary: "Modify a Selective Call Reject Criteria", - Description: "Modify Selective Call Reject Criteria Settings for the authenticated user.\n\n\n\nSelective Call Reject allows you to create customized rules to reject specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/selectiveReject/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "The `id` parameter specifies the unique identifier for the selective call reject. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "callsFrom", Flag: "calls-from", Type: "string"}, - {Name: "rejectEnabled", Flag: "reject-enabled", Type: "bool"}, - {Name: "scheduleName", Flag: "schedule-name", Type: "string"}, - {Name: "scheduleType", Flag: "schedule-type", Type: "string"}, - {Name: "scheduleLevel", Flag: "schedule-level", Type: "string"}, - {Name: "anonymousCallersEnabled", Flag: "anonymous-callers-enabled", Type: "bool"}, - {Name: "unavailableCallersEnabled", Flag: "unavailable-callers-enabled", Type: "bool"}, - {Name: "phoneNumbers", Flag: "phone-numbers", Type: "[]string"}, - }}, -} - -var CallingCallSettingsForMeDeleteSelectiveReject2 = &Operation{ - ID: "CallingCallSettingsForMeDeleteSelectiveReject2", Area: "calling", Group: "call-settings-for-me", Command: "delete-selective-reject-2", - Summary: "Delete a Selective Call Reject Criteria", - Description: "Delete a Selective Call Reject Criteria for the authenticated user.\n\n\n\nSelective Call Reject allows you to create customized rules to reject specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/people/me/settings/selectiveReject/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "The `id` parameter specifies the unique identifier for the selective call reject criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`."}, - }, -} - -var CallingCallSettingsForMeGetWaitingUser2 = &Operation{ - ID: "CallingCallSettingsForMeGetWaitingUser2", Area: "calling", Group: "call-settings-for-me", Command: "get-waiting-user-2", - Summary: "Get Call Waiting Settings for User", - Description: "Get Call Waiting Settings for the authenticated user.\n\nCall Waiting allows a user to receive multiple calls simultaneously. When the user is on an active call, they can receive an incoming call and switch between the two calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/callWaiting", Host: HostWebex, -} - -var CallingCallSettingsForMeUpdateWaitingUser2 = &Operation{ - ID: "CallingCallSettingsForMeUpdateWaitingUser2", Area: "calling", Group: "call-settings-for-me", Command: "update-waiting-user-2", - Summary: "Modify Call Waiting Settings for User", - Description: "Update Call Waiting Settings for the authenticated user.\n\nCall Waiting allows a user to receive multiple calls simultaneously. When the user is on an active call, they can receive an incoming call and switch between the two calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/callWaiting", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "enabled", Flag: "enabled", Type: "bool"}, - }}, -} - -var CallingCallSettingsForMeGetSequentialRingUser2Dup = &Operation{ - ID: "CallingCallSettingsForMeGetSequentialRingUser2Dup", Area: "calling", Group: "call-settings-for-me", Command: "get-sequential-ring-user-2", - Summary: "Get Sequential Ring Settings for User", - Description: "Get Sequential Ring Settings for the authenticated user.\n\nSequential Ring allows calls to ring additional phone numbers in sequence if the initial call is not answered. This can be configured to ring up to five phone numbers with customizable ring patterns.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/sequentialRing", Host: HostWebex, -} - -var CallingCallSettingsForMeUpdateSequentialRingUser2Dup = &Operation{ - ID: "CallingCallSettingsForMeUpdateSequentialRingUser2Dup", Area: "calling", Group: "call-settings-for-me", Command: "update-sequential-ring-user-2", - Summary: "Modify Sequential Ring Settings for User", - Description: "Update Sequential Ring Settings for the authenticated user.\n\nSequential Ring allows calls to ring additional phone numbers in sequence if the initial call is not answered. This can be configured to ring up to five phone numbers with customizable ring patterns.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/sequentialRing", Host: HostWebex, - Body: &Body{}, -} - -var CallingCallSettingsForMeCreateUserSequentialRing2 = &Operation{ - ID: "CallingCallSettingsForMeCreateUserSequentialRing2", Area: "calling", Group: "call-settings-for-me", Command: "create-user-sequential-ring-2", - Summary: "Add User Sequential Ring Criteria", - Description: "Create a new Sequential Ring Criteria for the authenticated user.\n\nSequential Ring criteria defines rules for when sequential ring should activate based on the caller and schedule.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/people/me/settings/sequentialRing/criteria", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "callsFrom", Flag: "calls-from", Type: "string"}, - {Name: "ringEnabled", Flag: "ring-enabled", Type: "bool"}, - {Name: "scheduleName", Flag: "schedule-name", Type: "string"}, - {Name: "scheduleType", Flag: "schedule-type", Type: "string"}, - {Name: "scheduleLevel", Flag: "schedule-level", Type: "string"}, - {Name: "anonymousCallersEnabled", Flag: "anonymous-callers-enabled", Type: "bool"}, - {Name: "unavailableCallersEnabled", Flag: "unavailable-callers-enabled", Type: "bool"}, - {Name: "phoneNumbers", Flag: "phone-numbers", Type: "[]string"}, - }}, -} - -var CallingCallSettingsForMeGetSequentialRingUser22 = &Operation{ - ID: "CallingCallSettingsForMeGetSequentialRingUser22", Area: "calling", Group: "call-settings-for-me", Command: "get-sequential-ring-user-2-2", - Summary: "Get Sequential Ring Criteria Settings for User", - Description: "Get Sequential Ring Criteria Settings for the authenticated user.\n\nSequential Ring criteria defines rules for when sequential ring should activate based on the caller and schedule.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/sequentialRing/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "The `id` parameter specifies the unique identifier for the sequential ring criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`."}, - }, -} - -var CallingCallSettingsForMeUpdateSequentialRingUser22 = &Operation{ - ID: "CallingCallSettingsForMeUpdateSequentialRingUser22", Area: "calling", Group: "call-settings-for-me", Command: "update-sequential-ring-user-2-2", - Summary: "Modify Sequential Ring Criteria Settings for User", - Description: "Update Sequential Ring Criteria Settings for the authenticated user.\n\nSequential Ring criteria defines rules for when sequential ring should activate based on the caller and schedule.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/sequentialRing/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "The `id` parameter specifies the unique identifier for the sequential ring criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "scheduleName", Flag: "schedule-name", Type: "string"}, - {Name: "scheduleType", Flag: "schedule-type", Type: "string"}, - {Name: "scheduleLevel", Flag: "schedule-level", Type: "string"}, - {Name: "callsFrom", Flag: "calls-from", Type: "string"}, - {Name: "anonymousCallersEnabled", Flag: "anonymous-callers-enabled", Type: "bool"}, - {Name: "unavailableCallersEnabled", Flag: "unavailable-callers-enabled", Type: "bool"}, - {Name: "phoneNumbers", Flag: "phone-numbers", Type: "[]string"}, - {Name: "ringEnabled", Flag: "ring-enabled", Type: "bool"}, - }}, -} - -var CallingCallSettingsForMeDeleteSequentialRing2 = &Operation{ - ID: "CallingCallSettingsForMeDeleteSequentialRing2", Area: "calling", Group: "call-settings-for-me", Command: "delete-sequential-ring-2", - Summary: "Delete Sequential Ring Criteria", - Description: "Delete a Sequential Ring Criteria for the authenticated user.\n\nSequential Ring criteria defines rules for when sequential ring should activate based on the caller and schedule.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/people/me/settings/sequentialRing/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "The `id` parameter specifies the unique identifier for the sequential ring criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`."}, - }, -} - -var CallingCallSettingsForMeUploadVoicemailBusyGreeting = &Operation{ - ID: "CallingCallSettingsForMeUploadVoicemailBusyGreeting", Area: "calling", Group: "call-settings-for-me", Command: "upload-voicemail-busy-greeting", - Summary: "Upload Voicemail Busy Greeting", - Description: "Uploads a new busy greeting audio file for the authenticated user's voicemail.\n\nThis endpoint is part of the voicemail greeting management capabilities provided by the Webex Calling platform and is available when the `wxc-csg-hydra-call-184017-phase4` feature is enabled. The greeting must be in WAV format and not exceed 5000 kilobytes.\n\nRequires a user auth token with the `spark:telephony_config_write` scope. Only the authenticated user may upload greetings for their own voicemail.", - Method: "POST", Path: "/telephony/config/people/me/settings/voicemail/actions/busyGreetingUpload/invoke", Host: HostWebex, - Handwritten: true, -} - -var CallingCallSettingsForMeUploadVoicemailNoAnswerGreeting = &Operation{ - ID: "CallingCallSettingsForMeUploadVoicemailNoAnswerGreeting", Area: "calling", Group: "call-settings-for-me", Command: "upload-voicemail-no-answer-greeting", - Summary: "Upload Voicemail No Answer Greeting", - Description: "Uploads a new no answer greeting audio file for the authenticated user's voicemail.\n\nThis endpoint is part of the voicemail greeting management capabilities provided by the Webex Calling platform and is available when the `wxc-csg-hydra-call-184017-phase4` feature is enabled. The greeting must be in WAV format and not exceed 5000 kilobytes.\n\nRequires a user auth token with the `spark:telephony_config_write` scope. Only the authenticated user may upload greetings for their own voicemail.", - Method: "POST", Path: "/telephony/config/people/me/settings/voicemail/actions/noAnswerGreetingUpload/invoke", Host: HostWebex, - Handwritten: true, -} - -var CallingCallSettingsForMeGetMySimultaneousRing = &Operation{ - ID: "CallingCallSettingsForMeGetMySimultaneousRing", Area: "calling", Group: "call-settings-for-me", Command: "get-my-simultaneous-ring", - Summary: "Retrieve My Simultaneous Ring Settings", - Description: "Retrieve simultaneous ring settings for the authenticated user.\n\nThe Simultaneous Ring feature allows you to configure your office phone and other phones of your choice to ring simultaneously. Schedules can also be set up to ring these phones during certain times of the day or days of the week.\n\nRetrieving settings requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/simultaneousRing", Host: HostWebex, -} - -var CallingCallSettingsForMeUpdateMySimultaneousRing = &Operation{ - ID: "CallingCallSettingsForMeUpdateMySimultaneousRing", Area: "calling", Group: "call-settings-for-me", Command: "update-my-simultaneous-ring", - Summary: "Modify My Simultaneous Ring Settings", - Description: "Modify simultaneous ring settings for the authenticated user.\n\nThe Simultaneous Ring feature allows you to configure your office phone and other phones of your choice to ring simultaneously. Schedules can also be set up to ring these phones during certain times of the day or days of the week.\n\nModifying settings requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/simultaneousRing", Host: HostWebex, - Body: &Body{}, -} - -var CallingCallSettingsForMeGetMySimultaneousRing2 = &Operation{ - ID: "CallingCallSettingsForMeGetMySimultaneousRing2", Area: "calling", Group: "call-settings-for-me", Command: "get-my-simultaneous-ring-2", - Summary: "Retrieve My Simultaneous Ring Criteria", - Description: "Retrieve simultaneous ring criteria settings for the authenticated user.\n\nThe Simultaneous Ring feature allows you to configure your office phone and other phones of your choice to ring simultaneously. Simultaneous Ring Criteria (Schedules) can also be set up to ring these phones during certain times of the day or days of the week.\n\nRetrieving criteria requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/simultaneousRing/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "Unique identifier for the criteria."}, - }, -} - -var CallingCallSettingsForMeUpdateMySimultaneousRing2 = &Operation{ - ID: "CallingCallSettingsForMeUpdateMySimultaneousRing2", Area: "calling", Group: "call-settings-for-me", Command: "update-my-simultaneous-ring-2", - Summary: "Modify My Simultaneous Ring Criteria", - Description: "Modify simultaneous ring criteria settings for the authenticated user.\n\nThe Simultaneous Ring feature allows you to configure your office phone and other phones of your choice to ring simultaneously. Simultaneous Ring Criteria (Schedules) can also be set up to ring these phones during certain times of the day or days of the week.\n\nModifying criteria requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/simultaneousRing/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "Unique identifier for the criteria."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "scheduleName", Flag: "schedule-name", Type: "string"}, - {Name: "scheduleType", Flag: "schedule-type", Type: "string"}, - {Name: "scheduleLevel", Flag: "schedule-level", Type: "string"}, - {Name: "callsFrom", Flag: "calls-from", Type: "string"}, - {Name: "anonymousCallersEnabled", Flag: "anonymous-callers-enabled", Type: "bool"}, - {Name: "unavailableCallersEnabled", Flag: "unavailable-callers-enabled", Type: "bool"}, - {Name: "phoneNumbers", Flag: "phone-numbers", Type: "[]string"}, - {Name: "ringEnabled", Flag: "ring-enabled", Type: "bool"}, - }}, -} - -var CallingCallSettingsForMeDeleteMySimultaneousRing = &Operation{ - ID: "CallingCallSettingsForMeDeleteMySimultaneousRing", Area: "calling", Group: "call-settings-for-me", Command: "delete-my-simultaneous-ring", - Summary: "Delete My Simultaneous Ring Criteria", - Description: "Delete simultaneous ring criteria settings for the authenticated user.\n\nThe Simultaneous Ring feature allows you to configure your office phone and other phones of your choice to ring simultaneously. Simultaneous Ring Criteria (Schedules) can also be set up to ring these phones during certain times of the day or days of the week.\n\nDeleting criteria requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/people/me/settings/simultaneousRing/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "Unique identifier for the criteria."}, - }, -} - -var CallingCallSettingsForMeCreateMySimultaneousRing = &Operation{ - ID: "CallingCallSettingsForMeCreateMySimultaneousRing", Area: "calling", Group: "call-settings-for-me", Command: "create-my-simultaneous-ring", - Summary: "Create My Simultaneous Ring Criteria", - Description: "Create simultaneous ring criteria settings for the authenticated user.\n\nThe Simultaneous Ring feature allows you to configure your office phone and other phones of your choice to ring simultaneously. Simultaneous Ring Criteria (Schedules) can also be set up to ring these phones during certain times of the day or days of the week.\n\nCreating criteria requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/people/me/settings/simultaneousRing/criteria", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "scheduleName", Flag: "schedule-name", Type: "string"}, - {Name: "scheduleType", Flag: "schedule-type", Type: "string"}, - {Name: "scheduleLevel", Flag: "schedule-level", Type: "string"}, - {Name: "callsFrom", Flag: "calls-from", Type: "string"}, - {Name: "ringEnabled", Flag: "ring-enabled", Type: "bool"}, - {Name: "anonymousCallersEnabled", Flag: "anonymous-callers-enabled", Type: "bool"}, - {Name: "unavailableCallersEnabled", Flag: "unavailable-callers-enabled", Type: "bool"}, - {Name: "phoneNumbers", Flag: "phone-numbers", Type: "[]string"}, - }}, -} - -var CallingCallSettingsForMeGetMyGuestCallingNumbers = &Operation{ - ID: "CallingCallSettingsForMeGetMyGuestCallingNumbers", Area: "calling", Group: "call-settings-for-me", Command: "get-my-guest-calling-numbers", - Summary: "Retrieve My Guest Calling Numbers", - Description: "Retrieve available guest calling numbers for the authenticated user.\n\nThis API returns a list of phone numbers that can be used for guest calling purposes.\n\nRetrieving guest calling numbers requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/guestCalling/numbers", Host: HostWebex, -} - -var CallingCallSettingsForMeGetPersonalAssistant = &Operation{ - ID: "CallingCallSettingsForMeGetPersonalAssistant", Area: "calling", Group: "call-settings-for-me", Command: "get-personal-assistant", - Summary: "Get Personal Assistant Settings", - Description: "Retrieve personal assistant settings for a person. The personal assistant feature allows users to configure an automated attendant that can handle incoming calls when they are unavailable, including presence-based routing and call transfer options.\n\nPersonal Assistant is a feature of Webex Calling that helps manage incoming calls based on the user's availability status.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/personalAssistant", Host: HostWebex, -} - -var CallingCallSettingsForMeUpdatePersonalAssistant = &Operation{ - ID: "CallingCallSettingsForMeUpdatePersonalAssistant", Area: "calling", Group: "call-settings-for-me", Command: "update-personal-assistant", - Summary: "Update Personal Assistant Settings", - Description: "Update personal assistant settings for a person. Allows configuring the personal assistant feature including enabling/disabling it, setting presence status, configuring call transfer options, and alerting preferences.\n\nPersonal Assistant is a feature of Webex Calling that helps manage incoming calls based on the user's availability status.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/personalAssistant", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "enabled", Flag: "enabled", Type: "bool"}, - {Name: "presence", Flag: "presence", Type: "string"}, - {Name: "untilDateTime", Flag: "until-date-time", Type: "string"}, - {Name: "transferEnabled", Flag: "transfer-enabled", Type: "bool"}, - {Name: "transferNumber", Flag: "transfer-number", Type: "string"}, - {Name: "alerting", Flag: "alerting", Type: "string"}, - {Name: "alertMeFirstNumberOfRings", Flag: "alert-me-first-number-of-rings", Type: "int64"}, - }}, -} - -var CallingCallSettingsForMeGetPersonVoicemailRules = &Operation{ - ID: "CallingCallSettingsForMeGetPersonVoicemailRules", Area: "calling", Group: "call-settings-for-me", Command: "get-person-voicemail-rules", - Summary: "Get Person's Voicemail Rules", - Description: "Get person's voicemail passcode rules. Voicemail rules specify the default passcode requirements. They are provided for informational purposes only and cannot be modified.\n\nThe voicemail feature allows users to manage their voicemail settings as part of Webex Calling. Voicemail rules help ensure secure access to voice messages by defining passcode complexity requirements.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/voicemail/rules", Host: HostWebex, -} - -var CallingCallSettingsForMeUpdateVoicemailPin = &Operation{ - ID: "CallingCallSettingsForMeUpdateVoicemailPin", Area: "calling", Group: "call-settings-for-me", Command: "update-voicemail-pin", - Summary: "Update Voicemail PIN", - Description: "Set the voicemail PIN for a person. Updates the PIN used to access voicemail messages. The PIN must comply with the passcode rules defined for the organization.\n\nThe voicemail feature is part of Webex Calling, allowing users to secure their voicemail access with a PIN. The PIN is required to retrieve voice messages via phone.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/voicemail/pin", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "passcode", Flag: "passcode", Type: "string"}, - }}, -} - -var CallingCallSettingsForMeGetHotelingGuest = &Operation{ - ID: "CallingCallSettingsForMeGetHotelingGuest", Area: "calling", Group: "call-settings-for-me", Command: "get-hoteling-guest", - Summary: "Get Hoteling Guest Settings", - Description: "Retrieve hoteling guest settings for a person. Hoteling allows a person to temporarily use a device as a guest, associating their extension and configuration with that device for a limited time. This API returns the current hoteling guest configuration including any active host association details.\n\nHoteling is a feature of Webex Calling that enables flexible workspace solutions by allowing users to log into shared devices.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/hoteling/guest", Host: HostWebex, -} - -var CallingCallSettingsForMeUpdateHotelingGuest = &Operation{ - ID: "CallingCallSettingsForMeUpdateHotelingGuest", Area: "calling", Group: "call-settings-for-me", Command: "update-hoteling-guest", - Summary: "Update Hoteling Guest Settings", - Description: "Update hoteling guest settings for a person. Allows enabling or disabling the ability to use hoteling as a guest, configuring whether an association will be removed automatically after a specified time period, and associating with a hoteling host.\n\nHoteling is a feature of Webex Calling that enables flexible workspace solutions by allowing users to log into shared devices.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/me/settings/hoteling/guest", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "enabled", Flag: "enabled", Type: "bool"}, - {Name: "associationLimitEnabled", Flag: "association-limit-enabled", Type: "bool"}, - {Name: "associationLimitHours", Flag: "association-limit-hours", Type: "int64"}, - {Name: "hostId", Flag: "host-id", Type: "string"}, - }}, -} - -var CallingCallSettingsForMeGetAvailableHotelingHosts = &Operation{ - ID: "CallingCallSettingsForMeGetAvailableHotelingHosts", Area: "calling", Group: "call-settings-for-me", Command: "get-available-hoteling-hosts", - Summary: "Get Available Hoteling Hosts", - Description: "Retrieve a list of available hoteling hosts that a person can associate with as a guest. Returns hosts that have hoteling enabled on their devices and are available for guest associations. The list can be filtered by name or phone number and supports pagination.\n\nHoteling is a feature of Webex Calling that enables flexible workspace solutions by allowing users to log into shared devices.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/me/settings/hoteling/availableHosts", Host: HostWebex, - Params: []Param{ - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the maximum number of hosts in the response. Default is 100."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start index for pagination. Default is 0."}, - {Name: "name", In: InQuery, Flag: "name", Usage: "Filter hosts by name (first name or last name). Partial match is supported."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter hosts by phone number. Partial match is supported."}, - }, - Paging: &Paging{}, -} - -var CallingCallingServiceListAnnouncementLanguages = &Operation{ - ID: "CallingCallingServiceListAnnouncementLanguages", Area: "calling", Group: "calling-service", Command: "list-announcement-languages", - Summary: "Read the List of Announcement Languages", - Description: "List all languages supported by Webex Calling for announcements and voice prompts.\n\nRetrieving announcement languages requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/announcementLanguages", Host: HostWebex, - Params: []Param{ - {Name: "ttsLanguage", In: InQuery, Flag: "tts-language", Usage: "Filter languages by TTS support."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var CallingCallingServiceGetVoicemail = &Operation{ - ID: "CallingCallingServiceGetVoicemail", Area: "calling", Group: "calling-service", Command: "get-voicemail", - Summary: "Get Voicemail Settings", - Description: "Retrieve the organization's voicemail settings.\n\nOrganizational voicemail settings determines what voicemail features a person can configure and automatic message expiration.\n\nRetrieving organization's voicemail settings requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/voicemail/settings", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve voicemail settings for this organization."}, - }, -} - -var CallingCallingServiceUpdateVoicemail = &Operation{ - ID: "CallingCallingServiceUpdateVoicemail", Area: "calling", Group: "calling-service", Command: "update-voicemail", - Summary: "Update Voicemail Settings", - Description: "Update the organization's voicemail settings.\n\nOrganizational voicemail settings determines what voicemail features a person can configure and automatic message expiration.\n\nUpdating an organization's voicemail settings requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/voicemail/settings", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Update voicemail settings for this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "messageExpiryEnabled", Flag: "message-expiry-enabled", Type: "bool"}, - {Name: "numberOfDaysForMessageExpiry", Flag: "number-of-days-for-message-expiry", Type: "int64"}, - {Name: "strictDeletionEnabled", Flag: "strict-deletion-enabled", Type: "bool"}, - {Name: "voiceMessageForwardingEnabled", Flag: "voice-message-forwarding-enabled", Type: "bool"}, - }}, -} - -var CallingCallingServiceGetVoicemailRules = &Operation{ - ID: "CallingCallingServiceGetVoicemailRules", Area: "calling", Group: "calling-service", Command: "get-voicemail-rules", - Summary: "Get Voicemail Rules", - Description: "Retrieve the organization's voicemail rules.\n\nOrganizational voicemail rules specify the default passcode requirements. They are provided for informational purposes only and cannot be modified.\n\nRetrieving the organization's voicemail rules requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/voicemail/rules", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve voicemail rules for this organization."}, - }, -} - -var CallingCallingServiceUpdateVoicemailRules = &Operation{ - ID: "CallingCallingServiceUpdateVoicemailRules", Area: "calling", Group: "calling-service", Command: "update-voicemail-rules", - Summary: "Update Voicemail Rules", - Description: "Update the organization's default voicemail passcode and/or rules.\n\nOrganizational voicemail rules specify the default passcode requirements.\n\nIf you choose to set a default passcode for new people added to your organization, communicate to your people what that passcode is, and that it must be reset before they can access their voicemail. If this feature is not turned on, each new person must initially set their own passcode.\n\nUpdating an organization's voicemail passcode and/or rules requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/voicemail/rules", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Update voicemail rules for this organization."}, - }, - Body: &Body{}, -} - -var CallingCallingServiceGetOrgMusicHoldConfiguration = &Operation{ - ID: "CallingCallingServiceGetOrgMusicHoldConfiguration", Area: "calling", Group: "calling-service", Command: "get-org-music-hold-configuration", - Summary: "Get the organization Music on Hold configuration", - Description: "Retrieve the organization's Music on Hold settings.", - Method: "GET", Path: "/telephony/config/moh/settings", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve Music on Hold settings for this organization."}, - }, -} - -var CallingCallingServiceUpdateOrgMusicHoldConfiguration = &Operation{ - ID: "CallingCallingServiceUpdateOrgMusicHoldConfiguration", Area: "calling", Group: "calling-service", Command: "update-org-music-hold-configuration", - Summary: "Update the organization Music on Hold configuration", - Description: "Update the organization's Music on Hold settings.", - Method: "PUT", Path: "/telephony/config/moh/settings", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Patch Music on Hold for this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "defaultOrgMoh", Flag: "default-org-moh", Type: "string"}, - }}, -} - -var CallingCallingServiceGetOrgCallCaptionsSettings = &Operation{ - ID: "CallingCallingServiceGetOrgCallCaptionsSettings", Area: "calling", Group: "calling-service", Command: "get-org-call-captions-settings", - Summary: "Get the organization call captions settings", - Description: "Retrieve the organization's call captions settings.\n\nThe call caption feature allows the customer to enable and manage closed captions and transcript functionality (rolling caption panel) in Webex Calling, without requiring the user to escalate the call to a meeting.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/callCaptions", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Unique identifier for the organization."}, - }, -} - -var CallingCallingServiceUpdateOrgCallCaptionsSettings = &Operation{ - ID: "CallingCallingServiceUpdateOrgCallCaptionsSettings", Area: "calling", Group: "calling-service", Command: "update-org-call-captions-settings", - Summary: "Update the organization call captions settings", - Description: "Update the organization's call captions settings.\n\nThe call caption feature allows the customer to enable and manage closed captions and transcript functionality (rolling caption panel) in Webex Calling, without requiring the user to escalate the call to a meeting.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/callCaptions", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Unique identifier for the organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "orgClosedCaptionsEnabled", Flag: "org-closed-captions-enabled", Type: "bool"}, - {Name: "orgTranscriptsEnabled", Flag: "org-transcripts-enabled", Type: "bool"}, - }}, -} - -var CallingCallingServiceGetLargeOrgStatus = &Operation{ - ID: "CallingCallingServiceGetLargeOrgStatus", Area: "calling", Group: "calling-service", Command: "get-large-org-status", - Summary: "Get Large Organization Status", - Description: "Get the large organization status for a customer.\n\nLarge organization status indicates whether an organization is categorized as a large organization based on the threshold percentage.\n\nThis API requires a full or read-only administrator auth token with the `spark-admin:telephony_config_read` scope.", - Method: "GET", Path: "/telephony/config/largeOrgStatus", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieves large organization status for this organization."}, - }, -} - -var CallingClientCallGetOrgMsTeamsSettings = &Operation{ - ID: "CallingClientCallGetOrgMsTeamsSettings", Area: "calling", Group: "client-call", Command: "get-org-ms-teams-settings", - Summary: "Get an Organization's MS Teams Settings", - Description: "
Not supported for Webex for Government (FedRAMP)
\n\nGet organization MS Teams settings.\n\nAt an organization level, MS Teams settings allow access to viewing the `HIDE WEBEX APP` and `PRESENCE SYNC` settings.\n\nTo retrieve an organization's MS Teams settings requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/settings/msTeams", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve MS Teams settings for the organization."}, - }, -} - -var CallingClientCallUpdateOrgMsTeamsSetting = &Operation{ - ID: "CallingClientCallUpdateOrgMsTeamsSetting", Area: "calling", Group: "client-call", Command: "update-org-ms-teams-setting", - Summary: "Update an Organization's MS Teams Setting", - Description: "
Not supported for Webex for Government (FedRAMP)
\n\nUpdate an MS Teams setting.\n\nMS Teams setting can be updated at the organization level.\n\nRequires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/settings/msTeams", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Update MS Teams setting value for the organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "settingName", Flag: "setting-name", Type: "string"}, - {Name: "value", Flag: "value", Type: "bool"}, - }}, -} - -var CallingConferenceControlsStart = &Operation{ - ID: "CallingConferenceControlsStart", Area: "calling", Group: "conference-controls", Command: "start", - Summary: "Start Conference", - Description: "Join the user's calls into a conference. A minimum of two call IDs are required. Each call ID identifies an existing call between the user\nand a participant to be added to the conference.", - Method: "POST", Path: "/telephony/conference", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "callIds", Flag: "call-ids", Type: "[]string"}, - {Name: "lineOwnerId", Flag: "line-owner-id", Type: "string"}, - }}, -} - -var CallingConferenceControlsRelease = &Operation{ - ID: "CallingConferenceControlsRelease", Area: "calling", Group: "conference-controls", Command: "release", - Summary: "Release Conference", - Description: "Release the conference (the host and all participants). Note that for a 3WC (three-way call) the [Transfer API](/docs/api/v1/call-controls/transfer) can be used to perform an attended transfer so that the participants remain connected.", - Method: "DELETE", Path: "/telephony/conference", Host: HostWebex, - Params: []Param{ - {Name: "lineOwnerId", In: InQuery, Flag: "line-owner-id", Usage: "The ID of a user, workspace, or virtual line for which there is a secondary line on a device owned by the user invoking the API."}, - }, -} - -var CallingConferenceControlsGet = &Operation{ - ID: "CallingConferenceControlsGet", Area: "calling", Group: "conference-controls", Command: "get", - Summary: "Get Conference Details", - Description: "Get the details of the conference. An empty JSON object body is returned if there is no conference.", - Method: "GET", Path: "/telephony/conference", Host: HostWebex, - Params: []Param{ - {Name: "lineOwnerId", In: InQuery, Flag: "line-owner-id", Usage: "The ID of a user, workspace, or virtual line for which there is a secondary line on a device owned by the user invoking the API."}, - }, -} - -var CallingConferenceControlsCreateParticipant = &Operation{ - ID: "CallingConferenceControlsCreateParticipant", Area: "calling", Group: "conference-controls", Command: "create-participant", - Summary: "Add Participant", - Description: "Adds a participant to an existing conference. The request body contains the participant's call ID.", - Method: "POST", Path: "/telephony/conference/addParticipant", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "callId", Flag: "call-id", Type: "string"}, - {Name: "lineOwnerId", Flag: "line-owner-id", Type: "string"}, - }}, -} - -var CallingConferenceControlsMute = &Operation{ - ID: "CallingConferenceControlsMute", Area: "calling", Group: "conference-controls", Command: "mute", - Summary: "Mute", - Description: "Mutes the host or a participant. Mutes the host when no request body is provided (i.e. media stream from the host will not be transmitted to the conference). Mutes a participant when the request body contains the participant's call ID (i.e. media stream from the participant will not be transmitted to the conference).", - Method: "POST", Path: "/telephony/conference/mute", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "callId", Flag: "call-id", Type: "string"}, - }}, -} - -var CallingConferenceControlsUnmute = &Operation{ - ID: "CallingConferenceControlsUnmute", Area: "calling", Group: "conference-controls", Command: "unmute", - Summary: "Unmute", - Description: "Unmutes the host or a participant. Unmutes the host when no request body is provided (i.e. media stream from the host will be transmitted to the conference). Unmutes a participant when the request body contains the participant's call ID (i.e. media stream from the participant will be transmitted to the conference).", - Method: "POST", Path: "/telephony/conference/unmute", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "callId", Flag: "call-id", Type: "string"}, - }}, -} - -var CallingConferenceControlsDeafenParticipant = &Operation{ - ID: "CallingConferenceControlsDeafenParticipant", Area: "calling", Group: "conference-controls", Command: "deafen-participant", - Summary: "Deafen Participant", - Description: "Deafens a participant (i.e. media stream will not be transmitted to the participant).\nThe request body contains the call ID of the participant to deafen", - Method: "POST", Path: "/telephony/conference/deafen", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "callId", Flag: "call-id", Type: "string"}, - }}, -} - -var CallingConferenceControlsUndeafenParticipant = &Operation{ - ID: "CallingConferenceControlsUndeafenParticipant", Area: "calling", Group: "conference-controls", Command: "undeafen-participant", - Summary: "Undeafen Participant", - Description: "Undeafens a participant (i.e. resume transmitting the conference media stream to the participant). \nThe request body contains the call ID of the participant to undeafen.", - Method: "POST", Path: "/telephony/conference/undeafen", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "callId", Flag: "call-id", Type: "string"}, - }}, -} - -var CallingConferenceControlsHold = &Operation{ - ID: "CallingConferenceControlsHold", Area: "calling", Group: "conference-controls", Command: "hold", - Summary: "Hold", - Description: "Hold the conference host. There is no request body.", - Method: "POST", Path: "/telephony/conference/hold", Host: HostWebex, - Params: []Param{ - {Name: "lineOwnerId", In: InQuery, Flag: "line-owner-id", Usage: "The ID of a user, workspace, or virtual line for which there is a secondary line on a device owned by the user invoking the API."}, - }, -} - -var CallingConferenceControlsResume = &Operation{ - ID: "CallingConferenceControlsResume", Area: "calling", Group: "conference-controls", Command: "resume", - Summary: "Resume", - Description: "Resumes the held conference host. There is no request body.", - Method: "POST", Path: "/telephony/conference/resume", Host: HostWebex, - Params: []Param{ - {Name: "lineOwnerId", In: InQuery, Flag: "line-owner-id", Usage: "The ID of a user, workspace, or virtual line for which there is a secondary line on a device owned by the user invoking the API."}, - }, -} - -var CallingConvergedRecordingsList = &Operation{ - ID: "CallingConvergedRecordingsList", Area: "calling", Group: "converged-recordings", Command: "list", - Summary: "List Recordings", - Description: "List recordings. You can specify a date range, and the maximum number of recordings to return.\n\nThe list returned is sorted in descending order by the date and time that the recordings were created.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\nList recordings requires the `spark:recordings_read` scope.\n\nPlease use `List Recordings for Admin or Compliance Officer` API to list all recordings for a user with the role Compliance officer or Admin\n\nRequest Header\n\n* `timezone`: *[Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.*", - Method: "GET", Path: "/convergedRecordings", Host: HostWebex, - Params: []Param{ - {Name: "max", In: InQuery, Flag: "max", Usage: "Maximum number of recordings to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`."}, - {Name: "from", In: InQuery, Flag: "from", Usage: "Starting date and time (inclusive) for recordings to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "Ending date and time (exclusive) for List recordings to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`."}, - {Name: "status", In: InQuery, Flag: "status", Usage: "Recording's status. If not specified or `available`, retrieves recordings that are available. Otherwise, if specified as `deleted`, retrieves recordings that have been moved into the recycle bin."}, - {Name: "serviceType", In: InQuery, Flag: "service-type", Usage: "Recording's service-type. If specified, the API filters recordings by service-type. Valid values are `calling` and `customerAssist`."}, - {Name: "format", In: InQuery, Flag: "format", Usage: "Recording's file format. If specified, the API filters recordings by format. Valid values are `MP3`."}, - {Name: "ownerType", In: InQuery, Flag: "owner-type", Usage: "Recording based on type of user."}, - {Name: "storageRegion", In: InQuery, Flag: "storage-region", Usage: "Recording stored in certain Webex locations."}, - {Name: "locationId", In: InQuery, Flag: "location-id", Usage: "Fetch recordings for users in a particular Webex Calling location (as configured in Control Hub)."}, - {Name: "topic", In: InQuery, Flag: "topic", Usage: "Recording's topic. If specified, the API filters recordings by topic in a case-insensitive manner."}, - {Name: "timezone", In: InHeader, Flag: "timezone", Usage: "e.g. UTC"}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, - TimeRange: TimeISO, -} - -var CallingConvergedRecordingsListAdminComplianceOfficer = &Operation{ - ID: "CallingConvergedRecordingsListAdminComplianceOfficer", Area: "calling", Group: "converged-recordings", Command: "list-admin-compliance-officer", - Summary: "List Recordings for Admin or Compliance officer", - Description: "List recordings for an admin or compliance officer. You can specify a date range, and the maximum number of recordings to return.\n\nThe list returned is sorted in descending order by the date and time that the recordings were created.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\nList recordings requires the `spark-compliance:recordings_read` scope for compliance officer and `spark-admin:recordings_read` scope for admin.\n\n#### Request Header\n\n* `timezone`: *[Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.*", - Method: "GET", Path: "/admin/convergedRecordings", Host: HostWebex, - Params: []Param{ - {Name: "max", In: InQuery, Flag: "max", Usage: "Maximum number of recordings to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`."}, - {Name: "from", In: InQuery, Flag: "from", Usage: "Starting date and time (inclusive) for recordings to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`. The interval between `from` and `to` must be within 30 days."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "Ending date and time (exclusive) for List recordings to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`. The interval between `from` and `to` must be within 30 days."}, - {Name: "status", In: InQuery, Flag: "status", Usage: "Recording's status. If not specified or `available`, retrieves recordings that are available. if specified as `purged`, retrieves recordings those are deleted but available to a compliance officer. Otherwise, if specified as `deleted`, retrieves recordings that have been moved into the recycle bin."}, - {Name: "serviceType", In: InQuery, Flag: "service-type", Usage: "Recording's service-type. If specified, the API filters recordings by service-type. Valid values are `calling` and `customerAssist`."}, - {Name: "format", In: InQuery, Flag: "format", Usage: "Recording's file format. If specified, the API filters recordings by format. Valid values are `MP3`."}, - {Name: "ownerId", In: InQuery, Flag: "owner-id", Usage: "Webex user Id to fetch recordings for a particular user."}, - {Name: "ownerEmail", In: InQuery, Flag: "owner-email", Usage: "Webex email address to fetch recordings for a particular user."}, - {Name: "ownerType", In: InQuery, Flag: "owner-type", Usage: "Recording based on type of user."}, - {Name: "storageRegion", In: InQuery, Flag: "storage-region", Usage: "Recording stored in certain Webex locations."}, - {Name: "locationId", In: InQuery, Flag: "location-id", Usage: "Fetch recordings for users in a particular Webex Calling location (as configured in Control Hub)."}, - {Name: "topic", In: InQuery, Flag: "topic", Usage: "Recording's topic. If specified, the API filters recordings by topic in a case-insensitive manner."}, - {Name: "timezone", In: InHeader, Flag: "timezone", Usage: "e.g. UTC"}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, - TimeRange: TimeISO, -} - -var CallingConvergedRecordingsGet = &Operation{ - ID: "CallingConvergedRecordingsGet", Area: "calling", Group: "converged-recordings", Command: "get", - Summary: "Get Recording Details", - Description: "Retrieves details for a recording with a specified recording ID.\n\nOnly recordings of owner with the authenticated user may be retrieved.\n\nGet Recording Details requires the `spark-compliance:recordings_read` scope for compliance officer, `spark-admin:recordings_read` scope for admin and `spark:recordings_read` scope for user.\n\n#### Request Header\n\n* `timezone`: *[Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.*", - Method: "GET", Path: "/convergedRecordings/{recordingId}", Host: HostWebex, - Params: []Param{ - {Name: "recordingId", In: InPath, Flag: "recording-id", Usage: "A unique identifier for the recording."}, - {Name: "timezone", In: InHeader, Flag: "timezone", Usage: "e.g. UTC"}, - }, -} - -var CallingConvergedRecordingsDelete = &Operation{ - ID: "CallingConvergedRecordingsDelete", Area: "calling", Group: "converged-recordings", Command: "delete", - Summary: "Delete a Recording", - Description: "Removes a recording with a specified recording ID. The deleted recording cannot be recovered.\n\nIf a Compliance Officer deletes another user's recording, the recording will be inaccessible to regular users (host, attendees and shared), and to the Compliance officer as well. This action purges the recordings from Webex.\n\nDelete a Recording requires the `spark-compliance:recordings_write` scope.", - Method: "DELETE", Path: "/convergedRecordings/{recordingId}", Host: HostWebex, - Params: []Param{ - {Name: "recordingId", In: InPath, Flag: "recording-id", Usage: "A unique identifier for the recording."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "reason", Flag: "reason", Type: "string"}, - {Name: "comment", Flag: "comment", Type: "string"}, - }}, -} - -var CallingConvergedRecordingsGetMetadata = &Operation{ - ID: "CallingConvergedRecordingsGetMetadata", Area: "calling", Group: "converged-recordings", Command: "get-metadata", - Summary: "Get Recording metadata", - Description: "Retrieves metadata details for a recording with a specified recording ID. The recording must be owned by the authenticated user.\n\nFor information on the metadata fields, refer to [Metadata Guide](https://developer.webex.com/docs/api/guides/consolidated-metadata-documentation-and-samples-guide)\n\nGet Recording metadata requires the `spark-compliance:recordings_read` scope for compliance officer, `spark-admin:recordings_read` for admin and `spark:recordings_read` for user.", - Method: "GET", Path: "/convergedRecordings/{recordingId}/metadata", Host: HostWebex, - Params: []Param{ - {Name: "recordingId", In: InPath, Flag: "recording-id", Usage: "A unique identifier for the recording."}, - {Name: "showAllTypes", In: InQuery, Flag: "show-all-types", Usage: "If `showAllTypes` is `true`, all attributes will be shown. If it's `false` or not specified, the following attributes of the metadata will be hidden.\n serviceData.callActivity.mediaStreams\n serviceData.callActivity.participants\n serviceData.callActivity.redirectInfo\n serviceData.callActivity.redirectedCall\n"}, - }, -} - -var CallingConvergedRecordingsReassign = &Operation{ - ID: "CallingConvergedRecordingsReassign", Area: "calling", Group: "converged-recordings", Command: "reassign", - Summary: "Reassign Recordings", - Description: "Reassigns recordings to a new user. As an administrator, you can reassign a list of recordings or all recordings of a particular user to a new user.\nThe recordings can belong to an org user, a virtual line, or a workspace, but the destination user should only be a valid org user.\n\n* For a org user either `ownerEmail` or `recordingIds` or both must be provided.\n\n* For a virtual line or a workspace, `ownerID` or `recordingIds` or both must be provided.\n\n* If `recordingIds` and `ownerID` is empty but `ownerEmail` is provided, all recordings owned by the `ownerEmail` are reassigned to `reassignOwnerEmail`.\n\n* If `recordingIds` is provided and `ownerEmail` or `ownerID` is also provided, only the recordings specified by `recordingIds` that are owned by `ownerEmail` or `ownerID` are reassigned to `reassignOwnerEmail`.\n\n* If `ownerEmail` and `ownerID` is empty but `recordingIds` is provided, the recordings specified by `recordingIds` are reassigned to `reassignOwnerEmail` regardless of the current owner.\n\n* If both `ownerId` and `ownerEmail` are passed along with `recordingIds`, only the recordings specified by `recordingIds` that are owned by `ownerEmail` are reassigned to `reassignOwnerEmail`.\n\n* If `recordingIds` is empty but both `ownerId` and `ownerEmail` is provided, all recordings owned by the `ownerEmail` are reassigned to `reassignOwnerEmail`.\n\nThe `spark-admin:recordings_write` scope is required to reassign recordings.", - Method: "POST", Path: "/convergedRecordings/reassign", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "reassignOwnerEmail", Flag: "reassign-owner-email", Type: "string"}, - {Name: "ownerEmail", Flag: "owner-email", Type: "string"}, - {Name: "ownerID", Flag: "owner-id", Type: "string"}, - {Name: "recordingIds", Flag: "recording-ids", Type: "[]string"}, - }}, -} - -var CallingConvergedRecordingsMoveRecycleBin = &Operation{ - ID: "CallingConvergedRecordingsMoveRecycleBin", Area: "calling", Group: "converged-recordings", Command: "move-recycle-bin", - Summary: "Move Recordings into the Recycle Bin", - Description: "Move recordings into the recycle bin with recording IDs or move all the recordings to the recycle bin.\n\nOnly the following two entities can use this API\n\n* Administrator: A user or an application with the scope `spark-admin:recordings_write`.\n\n* User: An authenticated user who does not have the scope `spark-admin:recordings_write` but has `spark:recordings_write`.\n\nAs an `administrator`, you can move a list of recordings or all recordings of a particular user within the org you manage to the recycle bin.\n\nAs a `user`, you can move a list of your own recordings or all your recordings to the recycle bin.\n\nRecordings in the recycle bin can be recovered by [Restore Recordings from Recycle Bin](/docs/api/v1/converged-recordings/restore-recordings-from-recycle-bin) API. If you'd like to empty recordings from the recycle bin, you can use [Purge Recordings from Recycle Bin](/docs/api/v1/converged-recordings/purge-recordings-from-recycle-bin) API to purge all or some of them.\n\n* If `trashAll` is `true`:\n * `recordingIds` should be empty.\n * If the caller of this API is an `administrator`, `ownerEmail` should not be empty and all recordings owned by the `ownerEmail` will be moved to the recycle bin.\n * If the caller of this API is a `user`, `ownerEmail` should be empty and all recordings owned by the caller will be moved to the recycle bin.\n\n* If `trashAll` is `false`:\n * `ownerEmail` should be empty.\n * `recordingIds` should not be empty and its maximum size is `100`.", - Method: "POST", Path: "/convergedRecordings/softDelete", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "trashAll", Flag: "trash-all", Type: "bool"}, - {Name: "ownerEmail", Flag: "owner-email", Type: "string"}, - {Name: "recordingIds", Flag: "recording-ids", Type: "[]string"}, - }}, -} - -var CallingConvergedRecordingsRestoreRecycleBin = &Operation{ - ID: "CallingConvergedRecordingsRestoreRecycleBin", Area: "calling", Group: "converged-recordings", Command: "restore-recycle-bin", - Summary: "Restore Recordings from Recycle Bin", - Description: "Restore recordings from the recycle bin with recording IDs or restore all the recordings that are in the recycle bin.\n\nOnly the following two entities can use this API\n\n* Administrator: A user or an application with the scope `spark-admin:recordings_write`.\n\n* User: An authenticated user who does not have the scope `spark-admin:recordings_write` but has `spark:recordings_write`.\n\nAs an `administrator`, you can restore a list of recordings or all recordings of a particular user within the org you manage from the recycle bin.\n\nAs a `user`, you can restore a list of your own recordings or all your recordings from the recycle bin.\n\n* If `restoreAll` is `true`:\n * `recordingIds` should be empty.\n * If the caller of this API is an `administrator`, `ownerEmail` should not be empty and all recordings owned by the `ownerEmail` will be restored from the recycle bin.\n * If the caller of this API is a `user`, `ownerEmail` should be empty and all recordings owned by the caller will be restored from the recycle bin.\n\n* If `restoreAll` is `false`:\n * `ownerEmail` should be empty.\n * `recordingIds` should not be empty and its maximum size is `100`.", - Method: "POST", Path: "/convergedRecordings/restore", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "restoreAll", Flag: "restore-all", Type: "bool"}, - {Name: "ownerEmail", Flag: "owner-email", Type: "string"}, - {Name: "recordingIds", Flag: "recording-ids", Type: "[]string"}, - }}, -} - -var CallingConvergedRecordingsPurgeRecycleBin = &Operation{ - ID: "CallingConvergedRecordingsPurgeRecycleBin", Area: "calling", Group: "converged-recordings", Command: "purge-recycle-bin", - Summary: "Purge Recordings from Recycle Bin", - Description: "Purge recordings from the recycle bin matching the supplied recording IDs, or purge all the recordings that are in the recycle bin. A recording, once purged, cannot be restored.\n\nOnly the following two entities can use this API\n\n* Administrator: A user or an application with the scope `spark-admin:recordings_write`.\n\n* User: An authenticated user who does not have the scope `spark-admin:recordings_write` but has `spark:recordings_write`.\n\nAs an `administrator`, you can purge a list of recordings or all recordings of a particular user within the org you manage from the recycle bin.\n\nAs a `user`, you can purge a list of your own recordings or all your recordings from the recycle bin.\n\n* If `purgeAll` is `true`:\n * `recordingIds` should be empty.\n * If the caller of this API is an `administrator`, `ownerEmail` should not be empty and all recordings owned the `ownerEmail` will be purged from the recycle bin.\n * If the caller of this API is a `user`, `ownerEmail` should be empty and all recordings owned by the caller will be purged from the recycle bin.\n\n* If `purgeAll` is `false`:\n * `ownerEmail` should be empty.\n * `recordingIds` should not be empty and its maximum size is `100`.", - Method: "POST", Path: "/convergedRecordings/purge", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "purgeAll", Flag: "purge-all", Type: "bool"}, - {Name: "ownerEmail", Flag: "owner-email", Type: "string"}, - {Name: "recordingIds", Flag: "recording-ids", Type: "[]string"}, - }}, -} - -var CallingDeviceCallGetMembers = &Operation{ - ID: "CallingDeviceCallGetMembers", Area: "calling", Group: "device-call", Command: "get-members", - Summary: "Get Device Members", - Description: "Get the list of all the members of the device including primary and secondary users.\n\nA device member can be either a person or a workspace. An admin can access the list of member details, modify member details and\nsearch for available members on a device.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/devices/{deviceId}/members", Host: HostWebex, - Params: []Param{ - {Name: "deviceId", In: InPath, Flag: "device-id", Usage: "Unique identifier for the device."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieves the list of all members of the device in this organization."}, - }, -} - -var CallingDeviceCallUpdateMembers = &Operation{ - ID: "CallingDeviceCallUpdateMembers", Area: "calling", Group: "device-call", Command: "update-members", - Summary: "Update Members on the device", - Description: "Modify member details on the device.\n\nA device member can be either a person, virtual line or a workspace. An admin can access the list of member details, modify member details and\nsearch for available members on a device.\n\nModifying members on the device requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/devices/{deviceId}/members", Host: HostWebex, - Params: []Param{ - {Name: "deviceId", In: InPath, Flag: "device-id", Usage: "Unique identifier for the device."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Modify members on the device in this organization."}, - }, - Body: &Body{}, -} - -var CallingDeviceCallSearchMembers = &Operation{ - ID: "CallingDeviceCallSearchMembers", Area: "calling", Group: "device-call", Command: "search-members", - Summary: "Search Members", - Description: "Search members that can be assigned to the device.\n\nA device member can be either a person or a workspace. A admin can access the list of member details, modify member details and\nsearch for available members on a device.\n\nThis requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/devices/{deviceId}/availableMembers", Host: HostWebex, - Params: []Param{ - {Name: "deviceId", In: InPath, Flag: "device-id", Usage: "Unique identifier for the device."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieves the list of available members on the device in this organization."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Specifies the offset from the first result that you want to fetch."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Specifies the maximum number of records that you want to fetch."}, - {Name: "memberName", In: InQuery, Flag: "member-name", Usage: "Search (Contains) numbers based on member name."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Search (Contains) based on number."}, - {Name: "locationId", In: InQuery, Flag: "location-id", Usage: "Unique identifier for the location."}, - {Name: "extension", In: InQuery, Flag: "extension", Usage: "Search (Contains) based on extension."}, - {Name: "usageType", In: InQuery, Flag: "usage-type", Usage: "Search for members eligible to become the owner of the device, or share line on the device."}, - {Name: "order", In: InQuery, Flag: "order", Usage: "Sort the list of available members on the device in ascending order by name, use either last name `lname` or first name `fname`. Default: last name in ascending order."}, - }, - Paging: &Paging{}, -} - -var CallingDeviceCallApplyChanges = &Operation{ - ID: "CallingDeviceCallApplyChanges", Area: "calling", Group: "device-call", Command: "apply-changes", - Summary: "Apply Changes for a specific device", - Description: "Issues request to the device to download and apply changes to the configuration.\n\nApplying changes for a specific device requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/devices/{deviceId}/actions/applyChanges/invoke", Host: HostWebex, - Params: []Param{ - {Name: "deviceId", In: InPath, Flag: "device-id", Usage: "Unique identifier for the device."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Apply changes for a device in this organization."}, - }, -} - -var CallingDeviceCallGetSettings = &Operation{ - ID: "CallingDeviceCallGetSettings", Area: "calling", Group: "device-call", Command: "get-settings", - Summary: "Get Device Settings", - Description: "Get override settings for a device.\n\nDevice settings lists all the applicable settings for MPP, ATA and Wifi devices at the device level. An admin can also modify the settings. DECT devices do not support settings at the device level.\n\nThis requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/devices/{deviceId}/settings", Host: HostWebex, - Params: []Param{ - {Name: "deviceId", In: InPath, Flag: "device-id", Usage: "Unique identifier for the device."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Settings on the device in this organization."}, - {Name: "deviceModel", In: InQuery, Flag: "device-model", Usage: "The model type of the device. The corresponding device model display name sometimes called the product name, can also be used to specify the model."}, - }, -} - -var CallingDeviceCallUpdateSettings = &Operation{ - ID: "CallingDeviceCallUpdateSettings", Area: "calling", Group: "device-call", Command: "update-settings", - Summary: "Update device settings", - Description: "Modify override settings for a device.\n\nDevice settings list all the applicable settings for an MPP and an ATA devices at the device level. Admins can also modify the settings. NOTE: DECT devices do not support settings at the device level.\n\nUpdating settings on the device requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/devices/{deviceId}/settings", Host: HostWebex, - Params: []Param{ - {Name: "deviceId", In: InPath, Flag: "device-id", Usage: "Unique identifier for the device."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization in which the device resides.."}, - {Name: "deviceModel", In: InQuery, Flag: "device-model", Usage: "The model type of the device. The corresponding device model display name sometimes called the product name, can also be used to specify the model."}, - }, - Body: &Body{}, -} - -var CallingDeviceCallGetLocationSettings = &Operation{ - ID: "CallingDeviceCallGetLocationSettings", Area: "calling", Group: "device-call", Command: "get-location-settings", - Summary: "Get Location Device Settings", - Description: "Get device override settings for a location.\n\nThis requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/devices/settings", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Unique identifier for the location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization in which the device resides."}, - }, -} - -var CallingDeviceCallGetWebexCalling = &Operation{ - ID: "CallingDeviceCallGetWebexCalling", Area: "calling", Group: "device-call", Command: "get-webex-calling", - Summary: "Get Webex Calling Device Details", - Description: "
Not supported for Webex for Government (FedRAMP)
\n\nRetrieves Webex Calling device details that include information needed for third-party device management.\n\nWebex calling devices are associated with a specific user Workspace or Virtual Line. Webex Calling devices share the location with the entity that owns them.\n\nPerson or workspace to which the device is assigned. Its fields point to a primary line/port of the device.\n\nRequires a full, location, user, or read-only admin auth token with the scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/devices/{deviceId}", Host: HostWebex, - Params: []Param{ - {Name: "deviceId", In: InPath, Flag: "device-id", Usage: "Unique identifier for the device."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the device resides."}, - }, -} - -var CallingDeviceCallUpdateThirdParty = &Operation{ - ID: "CallingDeviceCallUpdateThirdParty", Area: "calling", Group: "device-call", Command: "update-third-party", - Summary: "Update Third Party Device", - Description: "
Not supported for Webex for Government (FedRAMP)
\n\nModify a device's `sipPassword`.\n\nUpdating `sipPassword` on the device requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/devices/{deviceId}", Host: HostWebex, - Params: []Param{ - {Name: "deviceId", In: InPath, Flag: "device-id", Usage: "Unique identifier for the device."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the device resides."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "sipPassword", Flag: "sip-password", Type: "string"}, - }}, -} - -var CallingDeviceCallGetPerson = &Operation{ - ID: "CallingDeviceCallGetPerson", Area: "calling", Group: "device-call", Command: "get-person", - Summary: "Get Person Devices", - Description: "Get all devices for a person.\n\nThis requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/{personId}/devices", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Person for whom to retrieve devices."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization to which the person belongs."}, - }, -} - -var CallingDeviceCallUpdateHotelingSettingsPersonPrimary = &Operation{ - ID: "CallingDeviceCallUpdateHotelingSettingsPersonPrimary", Area: "calling", Group: "device-call", Command: "update-hoteling-settings-person-primary", - Summary: "Modify Hoteling Settings for a Person's Primary Devices", - Description: "Modify hoteling login configuration on a person's Webex Calling Devices which are in effect when the device is the user's primary device and device type is PRIMARY. To view the current hoteling login settings, see the `hoteling` field in [Get Person Devices](/docs/api/v1/device-call-settings/get-person-devices).\n\nModifying devices for a person requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/{personId}/devices/settings/hoteling", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "ID of the person associated with the device."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization to which the person belongs."}, - }, - Body: &Body{}, -} - -var CallingDeviceCallGetWorkspace = &Operation{ - ID: "CallingDeviceCallGetWorkspace", Area: "calling", Group: "device-call", Command: "get-workspace", - Summary: "Get Workspace Devices", - Description: "Get all devices for a workspace.\n\nThis requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/workspaces/{workspaceId}/devices", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "ID of the workspace for which to retrieve devices."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization to which the workspace belongs."}, - }, -} - -var CallingDeviceCallUpdateWorkspace = &Operation{ - ID: "CallingDeviceCallUpdateWorkspace", Area: "calling", Group: "device-call", Command: "update-workspace", - Summary: "Modify Workspace Devices", - Description: "Modify devices for a workspace.\n\nModifying devices for a workspace requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/workspaces/{workspaceId}/devices", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "ID of the workspace for which to modify devices."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization to which the workspace belongs."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "enabled", Flag: "enabled", Type: "bool"}, - {Name: "limitGuestUse", Flag: "limit-guest-use", Type: "bool"}, - {Name: "guestHoursLimit", Flag: "guest-hours-limit", Type: "int64"}, - }}, -} - -var CallingDeviceCallListSupported = &Operation{ - ID: "CallingDeviceCallListSupported", Area: "calling", Group: "device-call", Command: "list-supported", - Summary: "Read the List of Supported Devices", - Description: "Gets the list of supported devices for an organization.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/supportedDevices", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List supported devices for an organization."}, - {Name: "allowConfigureLayoutEnabled", In: InQuery, Flag: "allow-configure-layout-enabled", Usage: "List supported devices that allow the user to configure the layout."}, - {Name: "type", In: InQuery, Flag: "type", Usage: "List supported devices of a specific type. To excluded device types from a request or query, add `type=not:DEVICE_TYPE`. For example, `type=not:MPP`."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var CallingDeviceCallGetOverrideSettings = &Operation{ - ID: "CallingDeviceCallGetOverrideSettings", Area: "calling", Group: "device-call", Command: "get-override-settings", - Summary: "Read the device override settings for a organization", - Description: "Get device override settings for an organization.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/devices/settings", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List supported devices for an organization."}, - }, -} - -var CallingDeviceCallCreateLineKeyTemplate = &Operation{ - ID: "CallingDeviceCallCreateLineKeyTemplate", Area: "calling", Group: "device-call", Command: "create-line-key-template", - Summary: "Create a Line Key Template", - Description: "Create a Line Key Template in this organization.\n\nLine Keys, also known as Programmable Line Keys (PLK), are the keys found on either side of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows customers to create a `Line Key Template` for a device model.\n\nCreating a Line Key Template requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/devices/lineKeyTemplates", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization to which the line key template belongs."}, - }, - Body: &Body{}, -} - -var CallingDeviceCallListLineKeyTemplates = &Operation{ - ID: "CallingDeviceCallListLineKeyTemplates", Area: "calling", Group: "device-call", Command: "list-line-key-templates", - Summary: "Read the list of Line Key Templates", - Description: "List all Line Key Templates available for this organization.\n\nLine Keys also known as Programmable Line Keys (PLK) are the keys found on either sides of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to retrieve the list of Line Key Templates that are available for the organization.\n\nRetrieving this list requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/devices/lineKeyTemplates", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List line key templates for this organization."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var CallingDeviceCallGetLineKeyTemplate = &Operation{ - ID: "CallingDeviceCallGetLineKeyTemplate", Area: "calling", Group: "device-call", Command: "get-line-key-template", - Summary: "Get details of a Line Key Template", - Description: "Get detailed information about a Line Key Template by template ID in an organization.\n\nLine Keys, also known as Programmable Line Keys (PLK), are the keys found on either side of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to retrieve a line key template by its ID in an organization.\n\nRetrieving a line key template requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/devices/lineKeyTemplates/{templateId}", Host: HostWebex, - Params: []Param{ - {Name: "templateId", In: InPath, Flag: "template-id", Usage: "Get line key template for this template ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve a line key template for this organization."}, - }, -} - -var CallingDeviceCallUpdateLineKeyTemplate = &Operation{ - ID: "CallingDeviceCallUpdateLineKeyTemplate", Area: "calling", Group: "device-call", Command: "update-line-key-template", - Summary: "Modify a Line Key Template", - Description: "Modify a Line Key Template by its template ID in an organization.\n\nLine Keys, also known as Programmable Line Keys (PLK), are the keys found on either side of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to modify an existing Line Key Template by its ID in an organization.\n\nModifying an existing Line Key Template requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/devices/lineKeyTemplates/{templateId}", Host: HostWebex, - Params: []Param{ - {Name: "templateId", In: InPath, Flag: "template-id", Usage: "Modify line key template with this template ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Modify a line key template for this organization."}, - }, - Body: &Body{}, -} - -var CallingDeviceCallDeleteLineKeyTemplate = &Operation{ - ID: "CallingDeviceCallDeleteLineKeyTemplate", Area: "calling", Group: "device-call", Command: "delete-line-key-template", - Summary: "Delete a Line Key Template", - Description: "Delete a Line Key Template by its template ID in an organization.\n\nLine Keys also known as Programmable Line Keys (PLK) are the keys found on either sides of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to delete an existing Line Key Templates by its ID in an organization.\n\nDeleting an existing line key template requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/devices/lineKeyTemplates/{templateId}", Host: HostWebex, - Params: []Param{ - {Name: "templateId", In: InPath, Flag: "template-id", Usage: "Delete line key template with this template ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Delete a line key template for this organization."}, - }, -} - -var CallingDeviceCallPreviewApplyLineKeyTemplate = &Operation{ - ID: "CallingDeviceCallPreviewApplyLineKeyTemplate", Area: "calling", Group: "device-call", Command: "preview-apply-line-key-template", - Summary: "Preview Apply Line Key Template", - Description: "Preview the number of devices that will be affected by the application of a Line Key Template or when resetting devices to their factory Line Key settings.\n\nLine Keys, also known as Programmable Line Keys (PLK), are the keys found on either side of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to preview the number of devices that will be affected if a customer were to apply a Line Key Template or apply factory default Line Key settings to devices.\n\nRetrieving the number of devices affected requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/devices/actions/previewApplyLineKeyTemplate/invoke", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Preview Line Key Template for this organization."}, - }, - Body: &Body{}, -} - -var CallingDeviceCallApplyLineKeyTemplate = &Operation{ - ID: "CallingDeviceCallApplyLineKeyTemplate", Area: "calling", Group: "device-call", Command: "apply-line-key-template", - Summary: "Apply a Line Key Template", - Description: "Apply a Line Key Template or reset devices to their factory Line Key settings.\n\nLine Keys, also known as Programmable Line Keys (PLK), are the keys found on either side of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to apply a line key template or apply factory default Line Key settings to devices in a set of locations or across all locations in the organization.\n\nApplying a Line Key Template or resetting devices to their default Line Key configuration requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/jobs/devices/applyLineKeyTemplate", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Apply Line Key Template for this organization."}, - }, - Body: &Body{}, -} - -var CallingDeviceCallListApplyLineKeyTemplateJobs = &Operation{ - ID: "CallingDeviceCallListApplyLineKeyTemplateJobs", Area: "calling", Group: "device-call", Command: "list-apply-line-key-template-jobs", - Summary: "Get List of Apply Line Key Template jobs", - Description: "Get the list of all apply line key templates jobs in an organization.\n\nLine Keys also known as Programmable Line Keys (PLK) are the keys found on either sides of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to retrieve all the apply line key templates jobs in an organization.\n\nRetrieving the list of apply line key templates jobs in an organization requires a full, user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/jobs/devices/applyLineKeyTemplate", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve list of line key templates jobs in this organization."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var CallingDeviceCallGetJobStatusApplyLineKeyTemplateJob = &Operation{ - ID: "CallingDeviceCallGetJobStatusApplyLineKeyTemplateJob", Area: "calling", Group: "device-call", Command: "get-job-status-apply-line-key-template-job", - Summary: "Get the job status of an Apply Line Key Template job", - Description: "Get the status of an apply line key template job by its job ID.\n\nLine Keys also known as Programmable Line Keys (PLK) are the keys found on either sides of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to check the status of an apply line key templates job by job ID in an organization.\n\nChecking the the status of an apply line key templates job in an organization requires a full, user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/jobs/devices/applyLineKeyTemplate/{jobId}", Host: HostWebex, - Params: []Param{ - {Name: "jobId", In: InPath, Flag: "job-id", Usage: "Retrieve job status for this `jobId`."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Check a line key template job status in this organization."}, - }, -} - -var CallingDeviceCallGetJobErrorsApplyLineKeyTemplateJob = &Operation{ - ID: "CallingDeviceCallGetJobErrorsApplyLineKeyTemplateJob", Area: "calling", Group: "device-call", Command: "get-job-errors-apply-line-key-template-job", - Summary: "Get job errors for an Apply Line Key Template job", - Description: "GET job errors for an apply Line Key Template job in an organization.\n\nLine Keys also known as Programmable Line Keys (PLK) are the keys found on either sides of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to retrieve all the errors of an apply line key templates job by job ID in an organization.\n\nRetrieving all the errors of an apply line key templates job in an organization requires a full, user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/jobs/devices/applyLineKeyTemplate/{jobId}/errors", Host: HostWebex, - Params: []Param{ - {Name: "jobId", In: InPath, Flag: "job-id", Usage: "Retrieve job errors for this `jobId`."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve list of errors for an apply line key template job in this organization."}, - }, -} - -var CallingDeviceCallGetDectTypeListDeprecated = &Operation{ - ID: "CallingDeviceCallGetDectTypeListDeprecated", Area: "calling", Group: "device-call", Command: "get-dect-type-list-deprecated", - Summary: "Read the DECT device type list - Deprecated", - Description: "
Not supported for Webex for Government (FedRAMP).
\n\n
The REST path for this API has changed to [GET /telephony/config/devices/dectNetworks/supportedDevices{?orgId}]. The use of this old REST path is deprecated and will be decommissioned on October 10, 2024. Please start using it for all future projects.
\n\nGet DECT device type list with base stations and line ports supported count. This is a static list.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/devices/dects/supportedDevices", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id"}, - }, -} - -var CallingDeviceCallGetDectTypeList = &Operation{ - ID: "CallingDeviceCallGetDectTypeList", Area: "calling", Group: "device-call", Command: "get-dect-type-list", - Summary: "Read the DECT device type list", - Description: "
Not supported for Webex for Government (FedRAMP).
\n\nGet DECT device type list with base stations and line ports supported count. This is a static list.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/devices/dectNetworks/supportedDevices", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id"}, - }, -} - -var CallingDeviceCallValidateListMacAddress = &Operation{ - ID: "CallingDeviceCallValidateListMacAddress", Area: "calling", Group: "device-call", Command: "validate-list-mac-address", - Summary: "Validate a list of MAC address", - Description: "Validate a list of MAC addresses.\n\nValidating this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/devices/actions/validateMacs/invoke", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Validate the mac address(es) for this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "macs", Flag: "macs", Type: "[]string"}, - }}, -} - -var CallingDeviceCallUpdateSettingsAcrossOrgLocationJob = &Operation{ - ID: "CallingDeviceCallUpdateSettingsAcrossOrgLocationJob", Area: "calling", Group: "device-call", Command: "update-settings-across-org-location-job", - Summary: "Change Device Settings Across Organization Or Location Job", - Description: "Change device settings across organization or locations jobs.\n\nPerforms bulk and asynchronous processing for all types of device settings initiated by organization and system admins in a stateful persistent manner. This job will modify the requested device settings across all the devices. Whenever a location ID is specified in the request, it will modify the requested device settings only for the devices that are part of the provided location within an organization.\n\nReturns a unique job ID which can then be utilized further to retrieve status and errors for the same.\n\nOnly one job per customer can be running at any given time within the same organization. An attempt to run multiple jobs at the same time will result in a 409 error response.\n\nRunning a job requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/jobs/devices/callDeviceSettings", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Apply change device settings for all the devices under this organization."}, - }, - Body: &Body{}, -} - -var CallingDeviceCallListChangeSettingsJobs = &Operation{ - ID: "CallingDeviceCallListChangeSettingsJobs", Area: "calling", Group: "device-call", Command: "list-change-settings-jobs", - Summary: "List Change Device Settings Jobs", - Description: "List change device settings jobs.\n\nLists all the jobs for jobType `calldevicesettings` for the given organization in order of most recent one to oldest one irrespective of its status.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/jobs/devices/callDeviceSettings", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve list of 'calldevicesettings' jobs for this organization."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of jobs. Default is 0."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of jobs returned to this maximum count. Default is 2000."}, - }, - Paging: &Paging{}, -} - -var CallingDeviceCallGetChangeSettingsJobStatus = &Operation{ - ID: "CallingDeviceCallGetChangeSettingsJobStatus", Area: "calling", Group: "device-call", Command: "get-change-settings-job-status", - Summary: "Get Change Device Settings Job Status", - Description: "Get change device settings job status.\n\nProvides details of the job with `jobId` of `jobType` `calldevicesettings`.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/jobs/devices/callDeviceSettings/{jobId}", Host: HostWebex, - Params: []Param{ - {Name: "jobId", In: InPath, Flag: "job-id", Usage: "Retrieve job details for this `jobId`."}, - }, -} - -var CallingDeviceCallListChangeSettingsJobErrors = &Operation{ - ID: "CallingDeviceCallListChangeSettingsJobErrors", Area: "calling", Group: "device-call", Command: "list-change-settings-job-errors", - Summary: "List Change Device Settings Job Errors", - Description: "List change device settings job errors.\n\nLists all error details of the job with `jobId` of `jobType` `calldevicesettings`.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/jobs/devices/callDeviceSettings/{jobId}/errors", Host: HostWebex, - Params: []Param{ - {Name: "jobId", In: InPath, Flag: "job-id", Usage: "Retrieve job details for this `jobId`."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve list of jobs for this organization."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Specifies the offset from the first result that you want to fetch. Default is 0."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Specifies the maximum number of records that you want to fetch. Default is 2000"}, - }, - Paging: &Paging{}, -} - -var CallingDeviceCallGetLayoutId = &Operation{ - ID: "CallingDeviceCallGetLayoutId", Area: "calling", Group: "device-call", Command: "get-layout-id", - Summary: "Get Device Layout by Device ID", - Description: "Get layout information of a device by device ID in an organization.\n\nDevice layout customizes a user’s programmable line keys (PLK) on the phone and any attached Key Expansion Modules (KEM) with the existing configured line members and the user’s monitoring list.\n\nThis API requires a full or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/devices/{deviceId}/layout", Host: HostWebex, - Params: []Param{ - {Name: "deviceId", In: InPath, Flag: "device-id", Usage: "Get device layout for this device ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve a device layout for the device in this organization."}, - }, -} - -var CallingDeviceCallUpdateLayoutId = &Operation{ - ID: "CallingDeviceCallUpdateLayoutId", Area: "calling", Group: "device-call", Command: "update-layout-id", - Summary: "Modify Device Layout by Device ID", - Description: "Modify the layout of a device by device ID in an organization.\n\nDevice layout customizes a user’s programmable line keys (PLK) on the phone and any attached Key Expansion Modules (KEM) with the existing configured line members and the user’s monitoring list.\n\nThis API requires a full or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/devices/{deviceId}/layout", Host: HostWebex, - Params: []Param{ - {Name: "deviceId", In: InPath, Flag: "device-id", Usage: "Modify device layout for this device ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Modify a device layout for the device in this organization."}, - }, - Body: &Body{}, -} - -var CallingDeviceCallRebuildPhonesConfiguration = &Operation{ - ID: "CallingDeviceCallRebuildPhonesConfiguration", Area: "calling", Group: "device-call", Command: "rebuild-phones-configuration", - Summary: "Rebuild Phones Configuration", - Description: "
Not supported for Webex for Government (FedRAMP)
.\n\nRebuild all phone configurations for the specified location.\n\nRebuild phones jobs are used when there is a change in the network configuration of phones in a location, i.e. a change in the network configuration of devices in a location from public to private and vice-versa.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/jobs/devices/rebuildPhones", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Rebuild phones for this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "locationId", Flag: "location-id", Type: "string"}, - }}, -} - -var CallingDeviceCallListRebuildPhonesJobs = &Operation{ - ID: "CallingDeviceCallListRebuildPhonesJobs", Area: "calling", Group: "device-call", Command: "list-rebuild-phones-jobs", - Summary: "List Rebuild Phones Jobs", - Description: "
Not supported for Webex for Government (FedRAMP)
.\n\nGet the list of all Rebuild Phones jobs in an organization.\n\nRebuild phones jobs are used when there is a change in the network configuration of phones in a location, i.e. a change in the network configuration of devices in a location from public to private and vice-versa.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/jobs/devices/rebuildPhones", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List of rebuild phones jobs in this organization."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var CallingDeviceCallGetJobStatusRebuildPhonesJob = &Operation{ - ID: "CallingDeviceCallGetJobStatusRebuildPhonesJob", Area: "calling", Group: "device-call", Command: "get-job-status-rebuild-phones-job", - Summary: "Get the Job Status of a Rebuild Phones Job", - Description: "
Not supported for Webex for Government (FedRAMP)
.\n\nGet the details of a rebuild phones job by its job ID.\n\nRebuild phones jobs are used when there is a change in the network configuration of phones in a location, i.e. a change in the network configuration of devices in a location from public to private and vice-versa.\n\nThis API requires requires a full administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/jobs/devices/rebuildPhones/{jobId}", Host: HostWebex, - Params: []Param{ - {Name: "jobId", In: InPath, Flag: "job-id", Usage: "Retrieve job status for this `jobId`."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Check a rebuild phones job status in this organization."}, - }, -} - -var CallingDeviceCallGetJobErrorsRebuildPhonesJob = &Operation{ - ID: "CallingDeviceCallGetJobErrorsRebuildPhonesJob", Area: "calling", Group: "device-call", Command: "get-job-errors-rebuild-phones-job", - Summary: "Get Job Errors for a Rebuild Phones Job", - Description: "
Not supported for Webex for Government (FedRAMP)
.\n\nGet errors for a rebuild phones job in an organization.\n\nRebuild phones jobs are used when there is a change in the network configuration of phones in a location, i.e. a change in the network configuration of devices in a location from public to private and vice-versa.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/jobs/devices/rebuildPhones/{jobId}/errors", Host: HostWebex, - Params: []Param{ - {Name: "jobId", In: InPath, Flag: "job-id", Usage: "Retrieve job errors for this `jobId`."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve list of errors for a rebuild phones job in this organization."}, - }, -} - -var CallingDeviceCallGetSettingsPerson = &Operation{ - ID: "CallingDeviceCallGetSettingsPerson", Area: "calling", Group: "device-call", Command: "get-settings-person", - Summary: "Get Device Settings for a Person", - Description: "Device settings list the compression settings for a person.\n\nDevice settings customize a device's behavior and performance. The compression field optimizes call quality for inbound and outbound calls.\n\nThis API requires a full, location, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/{personId}/devices/settings", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "ID of the person for whom to retrieve device settings."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieves the device settings for a person in this organization."}, - }, -} - -var CallingDeviceCallUpdateSettingsPerson = &Operation{ - ID: "CallingDeviceCallUpdateSettingsPerson", Area: "calling", Group: "device-call", Command: "update-settings-person", - Summary: "Update Device Settings for a Person", - Description: "Update device settings modifies the compression settings for a person.\n\nDevice settings customize a device's behavior and performance. The compression field optimizes call quality for inbound and outbound calls.\n\nThis API requires a full, location, or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/{personId}/devices/settings", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "ID of the person for whom to update device settings."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Modify device settings for a person in this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "compression", Flag: "compression", Type: "string"}, - }}, -} - -var CallingDeviceCallGetSettingsWorkspace = &Operation{ - ID: "CallingDeviceCallGetSettingsWorkspace", Area: "calling", Group: "device-call", Command: "get-settings-workspace", - Summary: "Get Device Settings for a Workspace", - Description: "Device settings list the compression settings for a workspace.\n\nDevice settings customize a device's behavior and performance. The compression field optimizes call quality for inbound and outbound calls.\n\nThis API requires a full, location, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/workspaces/{workspaceId}/devices/settings", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "ID of the workspace for which to retrieve device settings."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieves the device settings for a workspace in this organization."}, - }, -} - -var CallingDeviceCallUpdateSettingsWorkspace = &Operation{ - ID: "CallingDeviceCallUpdateSettingsWorkspace", Area: "calling", Group: "device-call", Command: "update-settings-workspace", - Summary: "Update Device Settings for a Workspace", - Description: "Update device settings modifies the compression settings for a workspace.\n\nDevice settings customize a device's behavior and performance. The compression field optimizes call quality for inbound and outbound calls.\n\nThis API requires a full, location, or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/workspaces/{workspaceId}/devices/settings", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "ID of the workspace for which to update device settings."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Modify the device settings for a workspace in this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "compression", Flag: "compression", Type: "string"}, - }}, -} - -var CallingDeviceCallListBackgroundImages = &Operation{ - ID: "CallingDeviceCallListBackgroundImages", Area: "calling", Group: "device-call", Command: "list-background-images", - Summary: "Read the List of Background Images", - Description: "Gets the list of device background images for an organization.\n\nWebex Calling supports the upload of up to 100 background image files for each org. These image files can then be referenced by MPP phones in that org for use as their background image.\n\nRetrieving this list requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/devices/backgroundImages", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieves the list of images in this organization."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var CallingDeviceCallDeleteBackgroundImages = &Operation{ - ID: "CallingDeviceCallDeleteBackgroundImages", Area: "calling", Group: "device-call", Command: "delete-background-images", - Summary: "Delete Device Background Images", - Description: "Delete the list of designated device background images for an organization. Maximum is 10 images per request.\n\nDeleting a device background image requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/devices/backgroundImages", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Deletes the list of images in this organization."}, - }, - Body: &Body{}, -} - -var CallingDeviceCallUploadBackgroundImage = &Operation{ - ID: "CallingDeviceCallUploadBackgroundImage", Area: "calling", Group: "device-call", Command: "upload-background-image", - Summary: "Upload a Device Background Image", - Description: "Configure a device's background image by uploading an image with file format, `.jpeg` or `.png`, encoded image file. Maximum image file size allowed to upload is 625 KB.\n\nThe request must be a multipart/form-data request rather than JSON, using the image/jpeg or image/png content-type.\n\nWebex Calling supports the upload of up to 100 background image files for each org. These image files can then be referenced by MPP phones in that org for use as their background image.\n\nUploading a device background image requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**WARNING:** This API is not callable using the developer portal web interface due to the lack of support for multipart POST. This API can be utilized using other tools that support multipart POST, such as Postman.", - Method: "POST", Path: "/telephony/config/devices/{deviceId}/actions/backgroundImageUpload/invoke", Host: HostWebex, - Params: []Param{ - {Name: "deviceId", In: InPath, Flag: "device-id", Usage: "Unique identifier for the device."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Uploads the image in this organization."}, - }, -} - -var CallingDeviceCallGetUserCount = &Operation{ - ID: "CallingDeviceCallGetUserCount", Area: "calling", Group: "device-call", Command: "get-user-count", - Summary: "Get User Devices Count", - Description: "Get the total device and application count for a person.\n\nThe device count can be used to determine if more devices can be added for users with a device count limit. For example, users with standard calling licenses can only have one physical device.\n\nThis requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/{personId}/devices/count", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Person for whom to retrieve the device count."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization to which the person belongs."}, - }, -} - -var CallingDeviceCallGetCountMembers = &Operation{ - ID: "CallingDeviceCallGetCountMembers", Area: "calling", Group: "device-call", Command: "get-count-members", - Summary: "Get Count of Members", - Description: "Get the count of members that can be assigned to the device.\n\nA device member can be either a person or a workspace.\n\nThis requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/devices/{deviceId}/availableMembers/count", Host: HostWebex, - Params: []Param{ - {Name: "deviceId", In: InPath, Flag: "device-id", Usage: "Unique identifier for the device."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieves the count of available members on the device in this organization."}, - {Name: "memberName", In: InQuery, Flag: "member-name", Usage: "Search (Contains) numbers based on member name."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Search (Contains) based on number."}, - {Name: "locationId", In: InQuery, Flag: "location-id", Usage: "Unique identifier for the location."}, - {Name: "extension", In: InQuery, Flag: "extension", Usage: "Search (Contains) based on extension."}, - {Name: "usageType", In: InQuery, Flag: "usage-type", Usage: "Search for members eligible to become the owner of the device, or share line on the device.\n * `DEVICE_OWNER` - Search for members eligible to become the owner of the device.\n * `SHARED_LINE` - Search for members eligible to share line on the device."}, - }, -} - -var CallingDeviceCallGetCountAvailableMembers = &Operation{ - ID: "CallingDeviceCallGetCountAvailableMembers", Area: "calling", Group: "device-call", Command: "get-count-available-members", - Summary: "Get Count of Available Members", - Description: "Get the count of members that can be assigned to devices.\n\nA device member can be either a person or a workspace.\n\nThis requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/devices/availableMembers/count", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieves the count of available members in this organization."}, - {Name: "memberName", In: InQuery, Flag: "member-name", Usage: "Search (Contains) numbers based on member name."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Search (Contains) based on number."}, - {Name: "locationId", In: InQuery, Flag: "location-id", Usage: "Unique identifier for the location."}, - {Name: "extension", In: InQuery, Flag: "extension", Usage: "Search (Contains) based on extension."}, - {Name: "usageType", In: InQuery, Flag: "usage-type", Usage: "Search for members eligible to become the owner of the device, or share line on the device.\n * `DEVICE_OWNER` - Search for members eligible to become the owner of the device.\n * `SHARED_LINE` - Search for members eligible to share line on the device."}, - {Name: "excludeVirtualLine", In: InQuery, Flag: "exclude-virtual-line", Usage: "If true, filters out virtual lines from the available members list."}, - {Name: "deviceLocationId", In: InQuery, Flag: "device-location-id", Usage: "Unique identifier for the device's location. When specified, filters available members to those in the same location as the device."}, - }, -} - -var CallingDeviceCallListSupported2 = &Operation{ - ID: "CallingDeviceCallListSupported2", Area: "calling", Group: "device-call", Command: "list-supported-2", - Summary: "Read the List of Supported Devices", - Description: "Gets the list of supported devices for an organization.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/supportedDevices", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List supported devices for an organization."}, - {Name: "allowConfigureLayoutEnabled", In: InQuery, Flag: "allow-configure-layout-enabled", Usage: "List supported devices that allow the user to configure the layout."}, - {Name: "type", In: InQuery, Flag: "type", Usage: "List supported devices of a specific type. To excluded device types from a request or query, add `type=not:DEVICE_TYPE`. For example, `type=not:MPP`."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var CallingDeviceCallGetValidationSchema = &Operation{ - ID: "CallingDeviceCallGetValidationSchema", Area: "calling", Group: "device-call", Command: "get-validation-schema", - Summary: "Get Validation Schema", - Description: "This API returns the validation schema for `tags` of all or specific `familyOrModelDisplayName`.\n\nThe schema is used to validate the `tag` for devices in the `Webex Calling` platform. The schema includes information about the required fields, data types, and validation rules for each setting.", - Method: "GET", Path: "/telephony/config/devices/dynamicSettings/validationSchema", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Validation schema for devices in this organization."}, - {Name: "familyOrModelDisplayName", In: InQuery, Flag: "family-or-model-display-name", Usage: "Device family or model display name to filter the schema."}, - }, -} - -var CallingDeviceCallGetSettingsGroups = &Operation{ - ID: "CallingDeviceCallGetSettingsGroups", Area: "calling", Group: "device-call", Command: "get-settings-groups", - Summary: "Get Settings Groups", - Description: "This API returns the `settingsGroups` that define the structure and association of tags for dynamic device settings.\n\n The `settingsGroups` are used to organize the tags into logical groups, making it easier to manage and configure dynamic device settings.", - Method: "GET", Path: "/telephony/config/devices/dynamicSettings/settingsGroups", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Settings groups for devices in this organization."}, - {Name: "familyOrModelDisplayName", In: InQuery, Flag: "family-or-model-display-name", Usage: "Device family or model display name to filter the `settingsGroups`."}, - {Name: "includeSettingsType", In: InQuery, Flag: "include-settings-type", Usage: "To show groups or tabs or both. Query param is case insensitive. Default is `ALL`."}, - }, -} - -var CallingDeviceCallGetCustomerDynamicSettings = &Operation{ - ID: "CallingDeviceCallGetCustomerDynamicSettings", Area: "calling", Group: "device-call", Command: "get-customer-dynamic-settings", - Summary: "Get Customer Device Dynamic Settings", - Description: "Retrieve dynamic settings for specific device tags at customer level, allowing filters by `familyOrModelDisplayName` and `tag` identifier.\n\nThis API lets you request the values of multiple `Device Settings` at once by specifying a list of `familyOrModelDisplayName` and tag combinations.\n\nThis requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "POST", Path: "/telephony/config/lists/devices/dynamicSettings/actions/getSettings/invoke", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List of device dynamic settings in this organization."}, - {Name: "familyOrModelDisplayName", In: InQuery, Flag: "family-or-model-display-name", Usage: "(Required) The family or model name for the device. If no tag is specified, all tags related to `familyOrModelDisplayName` are returned."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "tags", Flag: "tags", Type: "[]string"}, - }}, -} - -var CallingDeviceCallGetLocationDynamicSettings = &Operation{ - ID: "CallingDeviceCallGetLocationDynamicSettings", Area: "calling", Group: "device-call", Command: "get-location-dynamic-settings", - Summary: "Get Location Device Dynamic Settings", - Description: "Retrieve dynamic settings for specific device tags at the specified location level, allowing filters by `familyOrModelDisplayName` and `tag` identifier.\n\nThis API lets you request the values of multiple `Device Settings` at once by specifying a list of `familyOrModelDisplayName` and tag combinations for a specific location.\n\nThis requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "POST", Path: "/telephony/config/lists/locations/{locationId}/devices/dynamicSettings/actions/getSettings/invoke", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "(Required) Unique identifier for the `location`."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Unique identifier for the `organization` to which this location belongs."}, - {Name: "familyOrModelDisplayName", In: InQuery, Flag: "family-or-model-display-name", Usage: "(Required) The family or model name for the device. If no tag is specified, all tags related to `familyOrModelDisplayName` are returned."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "tags", Flag: "tags", Type: "[]string"}, - }}, -} - -var CallingDeviceCallGetDynamicSettings = &Operation{ - ID: "CallingDeviceCallGetDynamicSettings", Area: "calling", Group: "device-call", Command: "get-dynamic-settings", - Summary: "Get Device Dynamic Settings", - Description: "Retrieve settings for a specified device.\n\nThis API retrieves device settings based on the specified `tags`; if the `tags` field is empty or missing, all settings for the device are returned.\n\nThis requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "POST", Path: "/telephony/config/lists/devices/{deviceId}/dynamicSettings/actions/getSettings/invoke", Host: HostWebex, - Params: []Param{ - {Name: "deviceId", In: InPath, Flag: "device-id", Usage: "(Required) Device for which to retrieve settings."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization to which the `device` belongs."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "tags", Flag: "tags", Type: "[]string"}, - }}, -} - -var CallingDeviceCallUpdateSpecifiedSettings = &Operation{ - ID: "CallingDeviceCallUpdateSpecifiedSettings", Area: "calling", Group: "device-call", Command: "update-specified-settings", - Summary: "Update specified settings for the device.", - Description: "Modify dynamic settings for a specified device.\n\nThis API updates device settings based on the specified `tags`. If the `tags` field is empty, the request has no effect.\n\nThis requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/devices/{deviceId}/dynamicSettings", Host: HostWebex, - Params: []Param{ - {Name: "deviceId", In: InPath, Flag: "device-id", Usage: "(Required) Device for which to update settings."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization to which the device belongs."}, - }, - Body: &Body{}, -} - -var CallingDeviceCallUpdatesDynamicSettingsAcrossOrgLocation = &Operation{ - ID: "CallingDeviceCallUpdatesDynamicSettingsAcrossOrgLocation", Area: "calling", Group: "device-call", Command: "updates-dynamic-settings-across-org-location", - Summary: "Updates dynamic Device Settings Across Organization Or Location", - Description: "Creates a job to update device settings at location or organization level.\n\nThe job runs asynchronously and persistently, applying the requested settings in bulk to all relevant devices, which may belong to multiple families as specified in the request. If a `locationId` is provided, only devices in that location are affected.\n\nA unique job ID is returned to track status and errors.\n\nOnly one job can run per customer per organization at a time. Additionally, this job cannot run in parallel with other device jobs such as [Call device settings](/docs/api/v1/device-call-settings/change-device-settings-across-organization-or-location-job) and [Rebuild Phones](/docs/api/v1/device-call-settings/rebuild-phones-configuration).\n\nRunning a job requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/jobs/devices/dynamicDeviceSettings", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Apply update dynamic device settings for all the devices under this organization."}, - }, - Body: &Body{}, -} - -var CallingDeviceCallListDynamicSettingsJobs = &Operation{ - ID: "CallingDeviceCallListDynamicSettingsJobs", Area: "calling", Group: "device-call", Command: "list-dynamic-settings-jobs", - Summary: "List dynamic device Settings Jobs", - Description: "List dynamic device settings jobs.\n\nLists all the jobs for job type `dynamicdevicesettings` for the given organization in order of most recent one to oldest one irrespective of its status.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/jobs/devices/dynamicDeviceSettings", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve list of dynamic device settings jobs for this organization."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of jobs. Default is 0."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of jobs returned to this maximum count. Default is 2000."}, - }, - Paging: &Paging{}, -} - -var CallingDeviceCallGetDynamicSettingsJobStatus = &Operation{ - ID: "CallingDeviceCallGetDynamicSettingsJobStatus", Area: "calling", Group: "device-call", Command: "get-dynamic-settings-job-status", - Summary: "Get Device Dynamic Settings Job Status", - Description: "Get dynamic device settings job status.\n\nProvides details of the job with `jobId` of `jobType` `dynamicdevicesettings`.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/jobs/devices/dynamicDeviceSettings/{jobId}", Host: HostWebex, - Params: []Param{ - {Name: "jobId", In: InPath, Flag: "job-id", Usage: "(Required) Retrieve job details for this `jobId`."}, - }, -} - -var CallingDeviceCallListDynamicSettingsJobErrors = &Operation{ - ID: "CallingDeviceCallListDynamicSettingsJobErrors", Area: "calling", Group: "device-call", Command: "list-dynamic-settings-job-errors", - Summary: "List Dynamic Device Settings Job Errors", - Description: "List Update dynamic device settings job errors.\n\nLists all error details of the job with `jobId` of `jobType` `dynamicdevicesettings`.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/jobs/devices/dynamicDeviceSettings/{jobId}/errors", Host: HostWebex, - Params: []Param{ - {Name: "jobId", In: InPath, Flag: "job-id", Usage: "(Required) Retrieve job details for this `jobId`."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve the status of job for this organization."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Specifies the offset from the first result that you want to fetch. Default is 0."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Specifies the maximum number of records that you want to fetch. Default is 2000"}, - }, - Paging: &Paging{}, -} - -var CallingDeviceCallListSupported3 = &Operation{ - ID: "CallingDeviceCallListSupported3", Area: "calling", Group: "device-call", Command: "list-supported-3", - Summary: "Read the List of Supported Devices", - Description: "Gets the list of supported devices for an organization.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/supportedDevices", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List supported devices for an organization."}, - {Name: "allowConfigureLayoutEnabled", In: InQuery, Flag: "allow-configure-layout-enabled", Usage: "List supported devices that allow the user to configure the layout."}, - {Name: "type", In: InQuery, Flag: "type", Usage: "List supported devices of a specific type. To excluded device types from a request or query, add `type=not:DEVICE_TYPE`. For example, `type=not:MPP`."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var CallingDeviceCallGetSettingsGroups2 = &Operation{ - ID: "CallingDeviceCallGetSettingsGroups2", Area: "calling", Group: "device-call", Command: "get-settings-groups-2", - Summary: "Get Settings Groups", - Description: "This API returns the `settingsGroups` that define the structure and association of tags for device dynamic settings.\n\n The `settingsGroups` are used to organize the tags into logical groups, making it easier to manage and configure device dynamic settings.", - Method: "GET", Path: "/telephony/config/devices/dynamicSettings/settingsGroups", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Settings groups for devices in this organization."}, - {Name: "familyOrModelDisplayName", In: InQuery, Flag: "family-or-model-display-name", Usage: "Device family or model display name to filter the `settingsGroups`."}, - {Name: "includeSettingsType", In: InQuery, Flag: "include-settings-type", Usage: "To show groups or tabs or both. Query param is case insensitive. Default is `ALL`."}, - }, -} - -var CallingDeviceCallGetCustomerDynamicSettings2 = &Operation{ - ID: "CallingDeviceCallGetCustomerDynamicSettings2", Area: "calling", Group: "device-call", Command: "get-customer-dynamic-settings-2", - Summary: "Get Customer Device Dynamic Settings", - Description: "Retrieve dynamic settings for specific device tags at customer level, allowing filters by `familyOrModelDisplayName` and `tag` identifier.\n\nThis API lets you request the values of multiple `Device Settings` at once by specifying a list of `familyOrModelDisplayName` and tag combinations.\n\nThis requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "POST", Path: "/telephony/config/lists/devices/dynamicSettings/actions/getSettings/invoke", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List of device dynamic settings in this organization."}, - {Name: "familyOrModelDisplayName", In: InQuery, Flag: "family-or-model-display-name", Usage: "The family or model name for the device. If no tag is specified, all tags related to `familyOrModelDisplayName` are returned."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "tags", Flag: "tags", Type: "[]string"}, - }}, -} - -var CallingDeviceCallGetLocationDynamicSettings2 = &Operation{ - ID: "CallingDeviceCallGetLocationDynamicSettings2", Area: "calling", Group: "device-call", Command: "get-location-dynamic-settings-2", - Summary: "Get Location Device Dynamic Settings", - Description: "Retrieve dynamic settings for specific device tags at the specified location level, allowing filters by `familyOrModelDisplayName` and `tag` identifier.\n\nThis API lets you request the values of multiple `Device Settings` at once by specifying a list of `familyOrModelDisplayName` and tag combinations for a specific location.\n\nThis requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "POST", Path: "/telephony/config/lists/locations/{locationId}/devices/dynamicSettings/actions/getSettings/invoke", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Unique identifier for the `location`."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Unique identifier for the `organization` to which this location belongs."}, - {Name: "familyOrModelDisplayName", In: InQuery, Flag: "family-or-model-display-name", Usage: "The family or model name for the device. If no tag is specified, all tags related to `familyOrModelDisplayName` are returned."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "tags", Flag: "tags", Type: "[]string"}, - }}, -} - -var CallingDeviceCallGetDynamicSettings2 = &Operation{ - ID: "CallingDeviceCallGetDynamicSettings2", Area: "calling", Group: "device-call", Command: "get-dynamic-settings-2", - Summary: "Get Device Dynamic Settings", - Description: "Retrieve settings for a specified device.\n\nThis API retrieves device settings based on the specified `tags`; if the `tags` field is empty or missing, all settings for the device are returned.\n\nThis requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "POST", Path: "/telephony/config/lists/devices/{deviceId}/dynamicSettings/actions/getSettings/invoke", Host: HostWebex, - Params: []Param{ - {Name: "deviceId", In: InPath, Flag: "device-id", Usage: "Device for which to retrieve settings."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization to which the `device` belongs."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "tags", Flag: "tags", Type: "[]string"}, - }}, -} - -var CallingDeviceCallUpdateDynamicSettings = &Operation{ - ID: "CallingDeviceCallUpdateDynamicSettings", Area: "calling", Group: "device-call", Command: "update-dynamic-settings", - Summary: "Update Device Dynamic Settings", - Description: "Modify dynamic settings for a specified device.\n\nThis API updates device settings based on the specified `tags`. If the `tags` field is empty, the request has no effect.\n\nThis requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/devices/{deviceId}/dynamicSettings", Host: HostWebex, - Params: []Param{ - {Name: "deviceId", In: InPath, Flag: "device-id", Usage: "Device for which to update settings."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization to which the device belongs."}, - }, - Body: &Body{}, -} - -var CallingDeviceCallUpdateDynamicSettingsAcrossOrgLocation = &Operation{ - ID: "CallingDeviceCallUpdateDynamicSettingsAcrossOrgLocation", Area: "calling", Group: "device-call", Command: "update-dynamic-settings-across-org-location", - Summary: "Update Device Dynamic Settings Across Organization or Location", - Description: "Creates a job to update device settings at location or organization level.\n\nThe job runs asynchronously and persistently, applying the requested settings in bulk to all relevant devices, which may belong to multiple families as specified in the request. If a `locationId` is provided, only devices in that location are affected.\n\nA unique job ID is returned to track status and errors.\n\nOnly one job can run per customer per organization at a time. Additionally, this job cannot run in parallel with other device jobs such as [Call device settings](/docs/api/v1/device-call-settings/change-device-settings-across-organization-or-location-job) and [Rebuild Phones](/docs/api/v1/device-call-settings/rebuild-phones-configuration).\n\nRunning a job requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/jobs/devices/dynamicDeviceSettings", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Apply update device dynamic settings for all the devices under this organization."}, - }, - Body: &Body{}, -} - -var CallingDeviceCallListDynamicSettingsJobs2 = &Operation{ - ID: "CallingDeviceCallListDynamicSettingsJobs2", Area: "calling", Group: "device-call", Command: "list-dynamic-settings-jobs-2", - Summary: "List Device Dynamic Settings Jobs", - Description: "List device dynamic settings jobs.\n\nLists all the jobs for job type `dynamicdevicesettings` for the given organization in order of most recent one to oldest one irrespective of its status.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/jobs/devices/dynamicDeviceSettings", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve list of device dynamic settings jobs for this organization."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of jobs. Default is 0."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of jobs returned to this maximum count. Default is 2000."}, - }, - Paging: &Paging{}, -} - -var CallingDeviceCallGetDynamicSettingsJobStatus2 = &Operation{ - ID: "CallingDeviceCallGetDynamicSettingsJobStatus2", Area: "calling", Group: "device-call", Command: "get-dynamic-settings-job-status-2", - Summary: "Get Device Dynamic Settings Job Status", - Description: "Get device dynamic settings job status.\n\nProvides details of the job with `jobId` of `jobType` `dynamicdevicesettings`.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/jobs/devices/dynamicDeviceSettings/{jobId}", Host: HostWebex, - Params: []Param{ - {Name: "jobId", In: InPath, Flag: "job-id", Usage: "Retrieve job details for this `jobId`."}, - }, -} - -var CallingDeviceCallListDynamicSettingsJobErrors2 = &Operation{ - ID: "CallingDeviceCallListDynamicSettingsJobErrors2", Area: "calling", Group: "device-call", Command: "list-dynamic-settings-job-errors-2", - Summary: "List Device Dynamic Settings Job Errors", - Description: "List Update device dynamic settings job errors.\n\nLists all error details of the job with `jobId` of `jobType` `dynamicdevicesettings`.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/jobs/devices/dynamicDeviceSettings/{jobId}/errors", Host: HostWebex, - Params: []Param{ - {Name: "jobId", In: InPath, Flag: "job-id", Usage: "Retrieve job details for this `jobId`."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve the status of job for this organization."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Specifies the offset from the first result that you want to fetch. Default is 0."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Specifies the maximum number of records that you want to fetch. Default is 2000"}, - }, - Paging: &Paging{}, -} - -var CallingDevicesList = &Operation{ - ID: "CallingDevicesList", Area: "calling", Group: "devices", Command: "list", - Summary: "List Devices", - Description: "Lists all active Webex devices associated with the authenticated user, such as devices activated in personal mode. This requires the `spark:devices_read` scope. Administrators can list all devices within their organization. This requires an administrator auth token with the `spark-admin:devices_read` scope.", - Method: "GET", Path: "/devices", Host: HostWebex, - Params: []Param{ - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the maximum number of devices in the response."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "\nOffset. Default is 0.\n"}, - {Name: "displayName", In: InQuery, Flag: "display-name", Usage: "\nList devices with this display name.\n"}, - {Name: "personId", In: InQuery, Flag: "person-id", Usage: "\nList devices by person ID.\n"}, - {Name: "workspaceId", In: InQuery, Flag: "workspace-id", Usage: "\nList devices by workspace ID.\n"}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "\nList devices in this organization. Only admin users of another organization (such as partners) may use this parameter.\n"}, - {Name: "connectionStatus", In: InQuery, Flag: "connection-status", Usage: "\nList devices with this connection status.\n"}, - {Name: "product", In: InQuery, Flag: "product", Usage: "\nList devices with this product name.\n"}, - {Name: "type", In: InQuery, Flag: "type", Usage: "\nList devices with this type.\n"}, - {Name: "serial", In: InQuery, Flag: "serial", Usage: "\nList devices with this serial number.\n"}, - {Name: "tag", In: InQuery, Flag: "tag", Usage: "\nList devices which have a tag. Searching for multiple tags (logical AND) can be done by comma separating the `tag` values or adding several `tag` parameters.\n"}, - {Name: "software", In: InQuery, Flag: "software", Usage: "\nList devices with this software version.\n"}, - {Name: "upgradeChannel", In: InQuery, Flag: "upgrade-channel", Usage: "\nList devices with this upgrade channel.\n"}, - {Name: "errorCode", In: InQuery, Flag: "error-code", Usage: "\nList devices with this error code.\n"}, - {Name: "capability", In: InQuery, Flag: "capability", Usage: "\nList devices with this capability.\n"}, - {Name: "permission", In: InQuery, Flag: "permission", Usage: "\nList devices with this permission.\n"}, - {Name: "locationId", In: InQuery, Flag: "location-id", Usage: "\nList devices by location ID.\n"}, - {Name: "workspaceLocationId", In: InQuery, Flag: "workspace-location-id", Usage: "\nList devices by workspace location ID. Deprecated, prefer `locationId`.\n"}, - {Name: "mac", In: InQuery, Flag: "mac", Usage: "\nList devices with this MAC address.\n"}, - {Name: "devicePlatform", In: InQuery, Flag: "device-platform", Usage: "\nList devices with this device platform.\n"}, - {Name: "plannedMaintenance", In: InQuery, Flag: "planned-maintenance", Usage: "\nList devices with this planned maintenance.\n"}, - }, - Paging: &Paging{}, -} - -var CallingDevicesCreateMacAddress = &Operation{ - ID: "CallingDevicesCreateMacAddress", Area: "calling", Group: "devices", Command: "create-mac-address", - Summary: "Create a Device by MAC Address", - Description: "Create a phone by its MAC address in a specific workspace or for a person.\n\nSpecify the `mac`, `model` and either `workspaceId` or `personId`.\n\n* You can get the `model` from the [supported devices](/docs/api/v1/device-call-settings/read-the-list-of-supported-devices) API.\n\n* Either `workspaceId` or `personId` should be provided. If both are supplied, the request will be invalid.\n\n* The `password` field is only required for third party devices. You can obtain the required third party phone configuration from [here](/docs/api/v1/beta-device-call-settings-with-third-party-device-support/get-third-party-device).\n\n
Adding a device to a person with a Webex Calling Standard license will disable Webex Calling across their Webex mobile, tablet, desktop, and browser applications.

When adding devices to a Webex Calling Professional licensed person or workspace, wait for each API call to finish before starting the next. This prevents race conditions that can cause errors when assigning primary versus secondary device status.
", - Method: "POST", Path: "/devices", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "The organization associated with the device. If left empty, the organization associated with the caller will be used."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "mac", Flag: "mac", Type: "string"}, - {Name: "model", Flag: "model", Type: "string"}, - {Name: "workspaceId", Flag: "workspace-id", Type: "string"}, - {Name: "personId", Flag: "person-id", Type: "string"}, - {Name: "password", Flag: "password", Type: "string"}, - }}, -} - -var CallingDevicesGet = &Operation{ - ID: "CallingDevicesGet", Area: "calling", Group: "devices", Command: "get", - Summary: "Get Device Details", - Description: "Shows details for a device, by ID. This requires an auth token with the `spark:devices_read` scope to see your own device, or `spark-admin:devices_read` to see any other device in your organization.\n\nSpecify the device ID in the `deviceId` parameter in the URI.", - Method: "GET", Path: "/devices/{deviceId}", Host: HostWebex, - Params: []Param{ - {Name: "deviceId", In: InPath, Flag: "device-id", Usage: "\nA unique identifier for the device.\n"}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "The organization associated with the device. If left empty, the organization associated with the caller will be used."}, - }, -} - -var CallingDevicesDelete = &Operation{ - ID: "CallingDevicesDelete", Area: "calling", Group: "devices", Command: "delete", - Summary: "Delete a Device", - Description: "Deletes a device, by ID. Deleting your own device requires an auth token with the `spark:devices_write` scope. Deleting any other device in the organization will require an administrator auth token with the `spark-admin:devices_write` scope.\n\nSpecify the device ID in the `deviceId` parameter in the URI.\n\n
Deleting a device from a person with a Webex Calling Standard license will enable Webex Calling across their Webex mobile, tablet, desktop, and browser applications.
", - Method: "DELETE", Path: "/devices/{deviceId}", Host: HostWebex, - Params: []Param{ - {Name: "deviceId", In: InPath, Flag: "device-id", Usage: "A unique identifier for the device."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "The organization associated with the device. If left empty, the organization associated with the caller will be used."}, - }, -} - -var CallingDevicesUpdateTags = &Operation{ - ID: "CallingDevicesUpdateTags", Area: "calling", Group: "devices", Command: "update-tags", - Summary: "Modify Device Tags", - Description: "Create, delete or update tags on a device. For your own device, this requires an auth token with the `spark:devices_write` scope. An auth token with the `spark-admin:devices_write` scope is required to operate on other devices within the organization.\n\nSpecify the device ID in the `deviceId` parameter in the URI.\n\nInclude only the tag array in the request body, no other device attributes can be changed. This action will overwrite any previous tags. A common approach is to first [GET the devices's details](/docs/api/v1/devices/get-device-details), make changes to the `tags` array, and then PATCH the new complete array with this endpoint.", - Method: "PATCH", Path: "/devices/{deviceId}", Host: HostWebex, - Params: []Param{ - {Name: "deviceId", In: InPath, Flag: "device-id", Usage: "Unique identifier for the device."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "The organization associated with the device. If left empty, the organization associated with the caller will be used."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "op", Flag: "op", Type: "string"}, - {Name: "path", Flag: "path", Type: "string"}, - {Name: "value", Flag: "value", Type: "[]string"}, - }}, -} - -var CallingDevicesCreateActivationCode = &Operation{ - ID: "CallingDevicesCreateActivationCode", Area: "calling", Group: "devices", Command: "create-activation-code", - Summary: "Create a Device Activation Code", - Description: "Generate an activation code for a device in a specific workspace by `workspaceId` or for a person by `personId`. This requires an auth token with the `spark-admin:devices_write` scope, and either `identity:placeonetimepassword_create` (allows creating activation codes for workspaces only) or `identity:one_time_password` (allows creating activation codes for workspaces or persons).\n\n* Adding a device to a workspace with calling type `none` or `thirdPartySipCalling` will reset the workspace calling type to `freeCalling`.\n\n* Either `workspaceId` or `personId` should be provided. If both are supplied, the request will be invalid.\n\n* If no `model` is supplied, the `code` returned will only be accepted on RoomOS devices.\n\n* If your device is a phone, you must provide the `model` as a field. You can get the `model` from the [supported devices](/docs/api/v1/device-call-settings/read-the-list-of-supported-devices) API.\n\n
Adding a device to a person with a Webex Calling Standard license will disable Webex Calling across their Webex mobile, tablet, desktop, and browser applications.

When adding devices to a Webex Calling Professional licensed person or workspace, wait for each API call to finish before starting the next. This prevents race conditions that can cause errors when assigning primary versus secondary device status.
", - Method: "POST", Path: "/devices/activationCode", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "The organization associated with the activation code generated. If left empty, the organization associated with the caller will be used."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "workspaceId", Flag: "workspace-id", Type: "string"}, - {Name: "personId", Flag: "person-id", Type: "string"}, - {Name: "model", Flag: "model", Type: "string"}, - }}, -} - -var CallingEmergencyServicesUpdateRedskySettings = &Operation{ - ID: "CallingEmergencyServicesUpdateRedskySettings", Area: "calling", Group: "emergency-services", Command: "update-redsky-settings", - Summary: "Update RedSky Service Settings", - Description: "Update the RedSky service settings.\n\nThe Enhanced Emergency (E911) Service for Webex Calling provides dynamic location support and a network that routes emergency calls to Public Safety Answering Points (PSAP) around the US, its territories, and Canada. E911 services are provided in conjunction with a RedSky account.\n\nUpdating the RedSky service settings requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/redSky/serviceSettings", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Update E911 settings for the organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "enabled", Flag: "enabled", Type: "bool"}, - {Name: "companyId", Flag: "company-id", Type: "string"}, - {Name: "secret", Flag: "secret", Type: "string"}, - {Name: "externalTenantEnabled", Flag: "external-tenant-enabled", Type: "bool"}, - {Name: "email", Flag: "email", Type: "string"}, - {Name: "password", Flag: "password", Type: "string"}, - }}, -} - -var CallingEmergencyServicesCreateAccountAdminRedsky = &Operation{ - ID: "CallingEmergencyServicesCreateAccountAdminRedsky", Area: "calling", Group: "emergency-services", Command: "create-account-admin-redsky", - Summary: "Create an Account and Admin in RedSky", - Description: "Create an account and admin in RedSky.\n\nThe Enhanced Emergency (E911) Service for Webex Calling provides dynamic location support and a network that routes emergency calls to Public Safety Answering Points (PSAP) around the US, its territories, and Canada. E911 services are provided in conjunction with a RedSky account.\n\nCreating a RedSky account requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/redSky", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Create RedSky account for the organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "email", Flag: "email", Type: "string"}, - {Name: "orgPrefix", Flag: "org-prefix", Type: "string"}, - {Name: "partnerRedskyOrgId", Flag: "partner-redsky-org-id", Type: "string"}, - }}, -} - -var CallingEmergencyServicesGetRedskyAccount = &Operation{ - ID: "CallingEmergencyServicesGetRedskyAccount", Area: "calling", Group: "emergency-services", Command: "get-redsky-account", - Summary: "Retrieve RedSky Account Details for an Organization", - Description: "Retrieve RedSky account details for an organization.\n\nThe Enhanced Emergency (E911) Service for Webex Calling provides dynamic location support and a network that routes emergency calls to Public Safety Answering Points (PSAP) around the US, its territories, and Canada. E911 services are provided in conjunction with a RedSky account.\n\nTo retrieve the RedSky account details requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/redSky", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve RedSky account for the organization."}, - }, -} - -var CallingEmergencyServicesUpdateOrgRedskyAccountComplianceStatus = &Operation{ - ID: "CallingEmergencyServicesUpdateOrgRedskyAccountComplianceStatus", Area: "calling", Group: "emergency-services", Command: "update-org-redsky-account-compliance-status", - Summary: "Update the Organization RedSky Account's Compliance Status", - Description: "Update the compliance status for the customer's RedSky account.\n\nThe Enhanced Emergency (E911) Service for Webex Calling provides dynamic location support and a network that routes emergency calls to Public Safety Answering Points (PSAP) around the US, its territories, and Canada. E911 services are provided in conjunction with a RedSky account.\n\nUpdating the RedSky account's compliance status requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/redSky/status", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Update E911 compliance status for the organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "complianceStatus", Flag: "compliance-status", Type: "string"}, - }}, -} - -var CallingEmergencyServicesGetOrgComplianceStatusRedskyAccount = &Operation{ - ID: "CallingEmergencyServicesGetOrgComplianceStatusRedskyAccount", Area: "calling", Group: "emergency-services", Command: "get-org-compliance-status-redsky-account", - Summary: "Get the Organization Compliance Status for a RedSky Account", - Description: "Get the organization compliance status for a RedSky account. The `locationStatus.state` in the response will show the state for the location that is in the earliest stage of configuration.\n\nThe enhanced emergency (E911) service for Webex Calling provides an emergency service designed for organizations with a hybrid or nomadic workforce. It provides dynamic location support and a network that routes emergency calls to Public Safety Answering Points (PSAP) around the US, its territories, and Canada.\n\nTo retrieve organization compliance status requires a full, user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/redSky/status", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve the compliance status for the organization."}, - }, -} - -var CallingEmergencyServicesGetOrgComplianceStatusLocationStatusList = &Operation{ - ID: "CallingEmergencyServicesGetOrgComplianceStatusLocationStatusList", Area: "calling", Group: "emergency-services", Command: "get-org-compliance-status-location-status-list", - Summary: "Get the Organization Compliance Status and the Location Status List", - Description: "Get the organization compliance status and the location status list for a RedSky account.\n\nThe enhanced emergency (E911) service for Webex Calling provides an emergency service designed for organizations with a hybrid or nomadic workforce. It provides dynamic location support and a network that routes emergency calls to Public Safety Answering Points (PSAP) around the US, its territories, and Canada.\n\nTo retrieve organization compliance status requires a full, user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/redSky/complianceStatus", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve the compliance status and the list of location statuses for the organization."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Specifies the offset from the first result that you want to fetch."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Specifies the maximum number of records that you want to fetch."}, - {Name: "order", In: InQuery, Flag: "order", Usage: "Sort the list of locations in ascending or descending order. To sort in descending order append `-desc` to possible sort order values. Possible sort order values are `locationName` and `locationState`."}, - }, - Paging: &Paging{}, -} - -var CallingEmergencyServicesLoginRedskyAdminAccount = &Operation{ - ID: "CallingEmergencyServicesLoginRedskyAdminAccount", Area: "calling", Group: "emergency-services", Command: "login-redsky-admin-account", - Summary: "Login to a RedSky Admin Account", - Description: "Login to Redsky for an existing account admin user to retrieve the `companyId` and verify the status of `externalTenantEnabled`. The password provided will not be stored.\n\nThe enhanced emergency (E911) service for Webex Calling provides an emergency service designed for organizations with a hybrid or nomadic workforce. It provides dynamic location support and a network that routes emergency calls to Public Safety Answering Points (PSAP) around the US, its territories, and Canada.\n\nLogging in requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/redSky/actions/login/invoke", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Login to a RedSky account for the organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "email", Flag: "email", Type: "string"}, - {Name: "password", Flag: "password", Type: "string"}, - {Name: "redSkyOrgId", Flag: "red-sky-org-id", Type: "string"}, - }}, -} - -var CallingEmergencyServicesGetLocationRedskyCallingParameters = &Operation{ - ID: "CallingEmergencyServicesGetLocationRedskyCallingParameters", Area: "calling", Group: "emergency-services", Command: "get-location-redsky-calling-parameters", - Summary: "Get a Location's RedSky Emergency Calling Parameters", - Description: "Get the Emergency Calling Parameters for a specific location.\n\nThe enhanced emergency (E911) service for Webex Calling provides an emergency service designed for organizations with a hybrid or nomadic workforce. It provides dynamic location support and a network that routes emergency calls to Public Safety Answering Points (PSAP) around the US, its territories, and Canada.\n\nTo retrieve location calling parameters requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/redSky", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Retrieve Calling Parameters for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve Calling Parameters for the location in this organization."}, - }, -} - -var CallingEmergencyServicesGetLocationRedskyComplianceStatus = &Operation{ - ID: "CallingEmergencyServicesGetLocationRedskyComplianceStatus", Area: "calling", Group: "emergency-services", Command: "get-location-redsky-compliance-status", - Summary: "Get a Location's RedSky Compliance Status", - Description: "Get RedSky compliance status for a specific location.\n\nThe enhanced emergency (E911) service for Webex Calling provides an emergency service designed for organizations with a hybrid or nomadic workforce. It provides dynamic location support and a network that routes emergency calls to Public Safety Answering Points (PSAP) around the US, its territories, and Canada.\n\nRetrieving the location's compliance status requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/redSky/status", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Retrieve the compliance status for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve compliance status for the location in this organization."}, - }, -} - -var CallingEmergencyServicesUpdateLocationRedskyComplianceStatus = &Operation{ - ID: "CallingEmergencyServicesUpdateLocationRedskyComplianceStatus", Area: "calling", Group: "emergency-services", Command: "update-location-redsky-compliance-status", - Summary: "Update a Location's RedSky Compliance Status", - Description: "Update the compliance status for a specific location.\n\nThe Enhanced Emergency (E911) Service for Webex Calling provides dynamic location support and a network that routes emergency calls to Public Safety Answering Points (PSAP) around the US, its territories, and Canada. E911 services are provided in conjunction with a RedSky account.\n\nUpdating the RedSky account's compliance status requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/locations/{locationId}/redSky/status", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Update the E911 compliance status for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Update the E911 compliance status for the location in this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "complianceStatus", Flag: "compliance-status", Type: "string"}, - }}, -} - -var CallingEmergencyServicesCreateRedskyBuildingAddressLocation = &Operation{ - ID: "CallingEmergencyServicesCreateRedskyBuildingAddressLocation", Area: "calling", Group: "emergency-services", Command: "create-redsky-building-address-location", - Summary: "Create a RedSky Building Address and Alert Email for a Location", - Description: "Add a RedSky building address and alert email for a specified location.\n\nThe Enhanced Emergency (E911) Service for Webex Calling provides dynamic location support and a network that routes emergency calls to Public Safety Answering Points (PSAP) around the US, its territories, and Canada. E911 services are provided in conjunction with a RedSky account.\n\nCreating a building address and alert email requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/locations/{locationId}/redSky/building", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Create the building address and alert email for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "The organization in which the location exists."}, - }, - Body: &Body{}, -} - -var CallingEmergencyServicesUpdateRedskyBuildingAddressLocation = &Operation{ - ID: "CallingEmergencyServicesUpdateRedskyBuildingAddressLocation", Area: "calling", Group: "emergency-services", Command: "update-redsky-building-address-location", - Summary: "Update a RedSky Building Address for a Location", - Description: "Update a RedSky building address for a specified location.\n\nThe Enhanced Emergency (E911) Service for Webex Calling provides dynamic location support and a network that routes emergency calls to Public Safety Answering Points (PSAP) around the US, its territories, and Canada. E911 services are provided in conjunction with a RedSky account.\n\nUpdating a building address requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/locations/{locationId}/redSky/building", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Update the building address for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "The organization in which the location exists."}, - }, - Body: &Body{}, -} - -var CallingEmergencyServicesGetOrgCallNotification = &Operation{ - ID: "CallingEmergencyServicesGetOrgCallNotification", Area: "calling", Group: "emergency-services", Command: "get-org-call-notification", - Summary: "Get an Organization Emergency Call Notification", - Description: "Get organization emergency call notification.\n\nEmergency Call Notifications can be enabled at the organization level, allowing specified email addresses to receive email notifications when an emergency call is made. To comply with U.S. Public Law 115-127, also known as Kari’s Law, any call that's made from within your organization to emergency services must generate an email notification.\n\nTo retrieve organization call notifications requires a full, user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/emergencyCallNotification", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve Emergency Call Notification attributes for the organization."}, - }, -} - -var CallingEmergencyServicesUpdateOrgCallNotification = &Operation{ - ID: "CallingEmergencyServicesUpdateOrgCallNotification", Area: "calling", Group: "emergency-services", Command: "update-org-call-notification", - Summary: "Update an Organization Emergency Call Notification", - Description: "Update an organization emergency call notification.\n\nOnce settings are enabled at the organization level, the configured email address will receive emergency call notifications for all locations.\n\nEmergency Call Notifications can be enabled at the organization level, allowing specified email addresses to receive email notifications when an emergency call is made. To comply with U.S. Public Law 115-127, also known as Kari’s Law, any call that's made from within your organization to emergency services must generate an email notification.\n\nTo update organization call notification requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/emergencyCallNotification", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Update Emergency Call Notification attributes for the organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "emergencyCallNotificationEnabled", Flag: "emergency-call-notification-enabled", Type: "bool"}, - {Name: "allowEmailNotificationAllLocationEnabled", Flag: "allow-email-notification-all-location-enabled", Type: "bool"}, - {Name: "emailAddress", Flag: "email-address", Type: "string"}, - }}, -} - -var CallingEmergencyServicesGetLocationCallNotification = &Operation{ - ID: "CallingEmergencyServicesGetLocationCallNotification", Area: "calling", Group: "emergency-services", Command: "get-location-call-notification", - Summary: "Get a Location Emergency Call Notification", - Description: "Get location emergency call notification.\n\nEmergency Call Notifications can be enabled at the organization level, allowing specified email addresses to receive email notifications when an emergency call is made. Once activated at the organization level, individual locations can configure this setting to direct notifications to specific email addresses. To comply with U.S. Public Law 115-127, also known as Kari’s Law, any call that's made from within your organization to emergency services must generate an email notification.\n\nTo retrieve location call notifications requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/emergencyCallNotification", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Retrieve Emergency Call Notification attributes for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve Emergency Call Notification attributes for the location in this organization."}, - }, -} - -var CallingEmergencyServicesUpdateLocationCallNotification = &Operation{ - ID: "CallingEmergencyServicesUpdateLocationCallNotification", Area: "calling", Group: "emergency-services", Command: "update-location-call-notification", - Summary: "Update a Location Emergency Call Notification", - Description: "Update a location emergency call notification.\n\nOnce settings enabled at the organization level, the configured email address will receive emergency call notifications for all locations; for specific location customization, users can navigate to Management > Locations, select the Calling tab, and update the Emergency Call Notification settings.\n\nEmergency Call Notifications can be enabled at the organization level, allowing specified email addresses to receive email notifications when an emergency call is made. Once activated at the organization level, individual locations can configure this setting to direct notifications to specific email addresses. To comply with U.S. Public Law 115-127, also known as Kari’s Law, any call that's made from within your organization to emergency services must generate an email notification.\n\nTo update location call notification requires a full, user or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/locations/{locationId}/emergencyCallNotification", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Update Emergency Call Notification attributes for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Update Emergency Call Notification attributes for a location in this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "emergencyCallNotificationEnabled", Flag: "emergency-call-notification-enabled", Type: "bool"}, - {Name: "emailAddress", Flag: "email-address", Type: "string"}, - }}, -} - -var CallingEmergencyServicesGetDependenciesHuntGroupCallback = &Operation{ - ID: "CallingEmergencyServicesGetDependenciesHuntGroupCallback", Area: "calling", Group: "emergency-services", Command: "get-dependencies-hunt-group-callback", - Summary: "Get Dependencies for a Hunt Group Emergency Callback Number", - Description: "Retrieves the emergency callback number dependencies for a specific hunt group.\n\nHunt groups can route incoming calls to a group of people, workspaces or virtual lines. You can even configure a pattern to route to a whole group.\n\nRetrieving the dependencies requires a full, user, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/huntGroups/{huntGroupId}/emergencyCallbackNumber/dependencies", Host: HostWebex, - Params: []Param{ - {Name: "huntGroupId", In: InPath, Flag: "hunt-group-id", Usage: "Unique identifier for the hunt group."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve Emergency Callback Number attributes for the hunt group under this organization."}, - }, -} - -var CallingEmergencyServicesGetPersonCallback = &Operation{ - ID: "CallingEmergencyServicesGetPersonCallback", Area: "calling", Group: "emergency-services", Command: "get-person-callback", - Summary: "Get a Person's Emergency Callback Number", - Description: "Retrieve a person's emergency callback number settings.\n\nEmergency Callback Configurations can be enabled at the organization level, Users without individual telephone numbers, such as extension-only users, must be set up with accurate Emergency Callback Numbers (ECBN) and Emergency Service Addresses to enable them to make emergency calls. These users can either utilize the default ECBN for their location or be assigned another specific telephone number from that location for emergency purposes.\n\nTo retrieve a person's callback number requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/{personId}/emergencyCallbackNumber", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, -} - -var CallingEmergencyServicesUpdatePersonCallback = &Operation{ - ID: "CallingEmergencyServicesUpdatePersonCallback", Area: "calling", Group: "emergency-services", Command: "update-person-callback", - Summary: "Update a Person's Emergency Callback Number", - Description: "Update a person's emergency callback number settings.\n\nEmergency Callback Configurations can be enabled at the organization level, Users without individual telephone numbers, such as extension-only users, must be set up with accurate Emergency Callback Numbers (ECBN) to enable them to make emergency calls. These users can either utilize the default ECBN for their location or be assigned another specific telephone number from that location for emergency purposes.\n\nTo update an emergency callback number requires a full, location, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/{personId}/emergencyCallbackNumber", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "selected", Flag: "selected", Type: "string"}, - {Name: "locationMemberId", Flag: "location-member-id", Type: "string"}, - {Name: "elinEnabled", Flag: "elin-enabled", Type: "bool"}, - {Name: "elinForWebexAppEnabled", Flag: "elin-for-webex-app-enabled", Type: "bool"}, - }}, -} - -var CallingEmergencyServicesGetPersonCallbackDependencies = &Operation{ - ID: "CallingEmergencyServicesGetPersonCallbackDependencies", Area: "calling", Group: "emergency-services", Command: "get-person-callback-dependencies", - Summary: "Retrieve A Person's Emergency Callback Number Dependencies", - Description: "Retrieve Emergency Callback Number dependencies for a person.\n\nEmergency Callback Configurations can be enabled at the organization level, Users without individual telephone numbers, such as extension-only users, must be set up with accurate Emergency Call Back Numbers (ECBN) to enable them to make emergency calls. These users can either utilize the default ECBN for their location or be assigned another specific telephone number from that location for emergency purposes.\n\nRetrieving the dependencies requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/{personId}/emergencyCallbackNumber/dependencies", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve Emergency Callback Number attributes for this organization."}, - }, -} - -var CallingEmergencyServicesGetWorkspaceCallback = &Operation{ - ID: "CallingEmergencyServicesGetWorkspaceCallback", Area: "calling", Group: "emergency-services", Command: "get-workspace-callback", - Summary: "Get a Workspace Emergency Callback Number", - Description: "Retrieve the emergency callback number setting associated with a specific workspace.\n\nEmergency Callback Configurations can be enabled at the organization level, Users without individual telephone numbers, such as extension-only users, must be set up with accurate Emergency Callback Numbers (ECBN) and Emergency Service Addresses to enable them to make emergency calls. These users can either utilize the default ECBN for their location or be assigned another specific telephone number from that location for emergency purposes.\n\nTo retrieve an emergency callback number, it requires a full, location, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/workspaces/{workspaceId}/emergencyCallbackNumber", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Retrieve Emergency Callback Number attributes for this workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve Emergency Callback Number attributes for this organization."}, - }, -} - -var CallingEmergencyServicesUpdateWorkspaceCallback = &Operation{ - ID: "CallingEmergencyServicesUpdateWorkspaceCallback", Area: "calling", Group: "emergency-services", Command: "update-workspace-callback", - Summary: "Update a Workspace Emergency Callback Number", - Description: "Update the emergency callback number settings for a workspace.\n\nEmergency Callback Configurations can be enabled at the organization level, Users without individual telephone numbers, such as extension-only users, must be set up with accurate Emergency Call Back Numbers (ECBN) to enable them to make emergency calls. These users can either utilize the default ECBN for their location or be assigned another specific telephone number from that location for emergency purposes.\n\nTo update an emergency callback number requires a full, location, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/workspaces/{workspaceId}/emergencyCallbackNumber", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Updating Emergency Callback Number attributes for this workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Updating Emergency Callback Number attributes for this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "selected", Flag: "selected", Type: "string"}, - {Name: "locationMemberId", Flag: "location-member-id", Type: "string"}, - {Name: "elinEnabled", Flag: "elin-enabled", Type: "bool"}, - }}, -} - -var CallingEmergencyServicesGetWorkspaceCallbackDependencies = &Operation{ - ID: "CallingEmergencyServicesGetWorkspaceCallbackDependencies", Area: "calling", Group: "emergency-services", Command: "get-workspace-callback-dependencies", - Summary: "Retrieve Workspace Emergency Callback Number Dependencies", - Description: "Retrieve Emergency Callback Number dependencies for a workspace.\n\nEmergency Callback Configurations can be enabled at the organization level, Users without individual telephone numbers, such as extension-only users, must be set up with accurate Emergency Call Back Numbers (ECBN) to enable them to make emergency calls. These users can either utilize the default ECBN for their location or be assigned another specific telephone number from that location for emergency purposes.\n\nRetrieving the dependencies requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/workspaces/{workspaceId}/emergencyCallbackNumber/dependencies", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Retrieve Emergency Callback Number attributes for this workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve Emergency Callback Number attributes for this organization."}, - }, -} - -var CallingEmergencyServicesGetDependenciesVlineCallback = &Operation{ - ID: "CallingEmergencyServicesGetDependenciesVlineCallback", Area: "calling", Group: "emergency-services", Command: "get-dependencies-vline-callback", - Summary: "Get Dependencies for a Virtual Line Emergency Callback Number", - Description: "Retrieves the emergency callback number dependencies for a specific virtual line.\n\nVirtual line is a capability in Webex Calling that allows administrators to configure multiple lines for Webex Calling users.\n\nRetrieving the dependencies requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/virtualLines/{virtualLineId}/emergencyCallbackNumber/dependencies", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Unique identifier for the virtual line."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List virtual lines for this organization."}, - }, -} - -var CallingEmergencyServicesGetVlineCallbackSettings = &Operation{ - ID: "CallingEmergencyServicesGetVlineCallbackSettings", Area: "calling", Group: "emergency-services", Command: "get-vline-callback-settings", - Summary: "Get the Virtual Line's Emergency Callback settings", - Description: "Retrieves the emergency callback number settings for a specific virtual line.\n\nVirtual line is a capability in Webex Calling that allows administrators to configure multiple lines for Webex Calling users.\n\nRetrieving the dependencies requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/virtualLines/{virtualLineId}/emergencyCallbackNumber", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Unique identifier for the virtual line."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List virtual lines for this organization."}, - }, -} - -var CallingEmergencyServicesUpdateVlineCallbackSettings = &Operation{ - ID: "CallingEmergencyServicesUpdateVlineCallbackSettings", Area: "calling", Group: "emergency-services", Command: "update-vline-callback-settings", - Summary: "Update a Virtual Line's Emergency Callback settings", - Description: "Update the emergency callback number settings for a specific virtual line.\n\nVirtual line is a capability in Webex Calling that allows administrators to configure multiple lines for Webex Calling users.\n\nTo update virtual line callback number requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/virtualLines/{virtualLineId}/emergencyCallbackNumber", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Unique identifier for the virtual line."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List virtual lines for this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "selected", Flag: "selected", Type: "string"}, - {Name: "locationMemberId", Flag: "location-member-id", Type: "string"}, - }}, -} - -var CallingAnnouncementPlaylistList = &Operation{ - ID: "CallingAnnouncementPlaylistList", Area: "calling", Group: "announcement-playlist", Command: "list", - Summary: "List Announcement Playlists", - Description: "Fetch a list of announcement playlist at an organization.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/announcements/playlists", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Get announcements playlist in this organization."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var CallingAnnouncementPlaylistCreate = &Operation{ - ID: "CallingAnnouncementPlaylistCreate", Area: "calling", Group: "announcement-playlist", Command: "create", - Summary: "Create Announcement Playlist", - Description: "Create announcement Playlist at an organization level. A maximum of 25 announcement files can be included in a single playlist.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/announcements/playlists", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Create an announcement playlist in this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "name", Flag: "name", Type: "string"}, - {Name: "announcementIds", Flag: "announcement-ids", Type: "[]string"}, - }}, -} - -var CallingAnnouncementPlaylistGet = &Operation{ - ID: "CallingAnnouncementPlaylistGet", Area: "calling", Group: "announcement-playlist", Command: "get", - Summary: "Get Announcement Playlist", - Description: "Fetch details of announcement playlist by its ID at an organization level.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/announcements/playlists/{playlistId}", Host: HostWebex, - Params: []Param{ - {Name: "playlistId", In: InPath, Flag: "playlist-id", Usage: "Unique identifier of an announcement playlist."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Get an announcement playlist in this organization."}, - }, -} - -var CallingAnnouncementPlaylistUpdate = &Operation{ - ID: "CallingAnnouncementPlaylistUpdate", Area: "calling", Group: "announcement-playlist", Command: "update", - Summary: "Update Announcement Playlist", - Description: "Modify an existing announcement playlist at an organization level.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/announcements/playlists/{playlistId}", Host: HostWebex, - Params: []Param{ - {Name: "playlistId", In: InPath, Flag: "playlist-id", Usage: "Unique identifier of an announcement playlist."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Modify an announcement playlist in this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "name", Flag: "name", Type: "string"}, - {Name: "announcementIds", Flag: "announcement-ids", Type: "[]string"}, - }}, -} - -var CallingAnnouncementPlaylistDelete = &Operation{ - ID: "CallingAnnouncementPlaylistDelete", Area: "calling", Group: "announcement-playlist", Command: "delete", - Summary: "Delete Announcement Playlist", - Description: "Delete an announcement playlist for an organization.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/announcements/playlists/{playlistId}", Host: HostWebex, - Params: []Param{ - {Name: "playlistId", In: InPath, Flag: "playlist-id", Usage: "Unique identifier of an announcement playlist."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Delete an announcement playlist in this organization."}, - }, -} - -var CallingAnnouncementPlaylistListLocations = &Operation{ - ID: "CallingAnnouncementPlaylistListLocations", Area: "calling", Group: "announcement-playlist", Command: "list-locations", - Summary: "List Playlist Locations", - Description: "Fetch list of locations which are assigned to the given announcement playlist\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/announcements/playlists/{playlistId}/locations", Host: HostWebex, - Params: []Param{ - {Name: "playlistId", In: InPath, Flag: "playlist-id", Usage: "Unique identifier of playlist."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Get location associated to a playlist in this organization."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var CallingAnnouncementPlaylistUpdateLocations = &Operation{ - ID: "CallingAnnouncementPlaylistUpdateLocations", Area: "calling", Group: "announcement-playlist", Command: "update-locations", - Summary: "Update Playlist Locations", - Description: "Modify list of assigned locations or add new locations to the announcement playlist. This will assing the playlist to the location's music on hold.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/announcements/playlists/{playlistId}/locations", Host: HostWebex, - Params: []Param{ - {Name: "playlistId", In: InPath, Flag: "playlist-id", Usage: "Unique identifier of an announcement playlist."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Modify an assign location for announcement playlist for organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "locationIds", Flag: "location-ids", Type: "[]string"}, - }}, -} - -var CallingAnnouncementRepositoryListGreetings = &Operation{ - ID: "CallingAnnouncementRepositoryListGreetings", Area: "calling", Group: "announcement-repository", Command: "list-greetings", - Summary: "Fetch list of announcement greetings on location and organization level", - Description: "Fetch a list of binary announcement greetings at an organization as well as location level.\n\nAn admin can upload a file at an organization level. This file will be uploaded to the announcement repository.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/announcements", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Get announcements in this organization."}, - {Name: "locationId", In: InQuery, Flag: "location-id", Usage: "Return the list of enterprise or Location announcement files. Without this parameter, the Enterprise level announcements are returned."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of objects returned to this maximum count."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching objects."}, - {Name: "order", In: InQuery, Flag: "order", Usage: "Sort the list according to fileName or fileSize. The default sort will be in Ascending order."}, - {Name: "fileName", In: InQuery, Flag: "file-name", Usage: "Return the list of announcements with the given fileName."}, - {Name: "fileType", In: InQuery, Flag: "file-type", Usage: "Return the list of announcement files for this fileType."}, - {Name: "mediaFileType", In: InQuery, Flag: "media-file-type", Usage: "Return the list of announcement files for this mediaFileType."}, - {Name: "name", In: InQuery, Flag: "name", Usage: "Return the list of announcement files for this announcement label."}, - }, - Paging: &Paging{}, -} - -var CallingAnnouncementRepositoryUploadBinaryGreeting = &Operation{ - ID: "CallingAnnouncementRepositoryUploadBinaryGreeting", Area: "calling", Group: "announcement-repository", Command: "upload-binary-greeting", - Summary: "Upload a binary announcement greeting at organization level", - Description: "Upload a binary file to the announcement repository at an organization level.\n\nAn admin can upload a file at an organization level. This file will be uploaded to the announcement repository.\n\nYour request will need to be an `application/json` request with the announcement details including name, fileUri, fileName, and isTextToSpeech fields.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/announcements", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Create an announcement in this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "name", Flag: "name", Type: "string"}, - {Name: "fileUri", Flag: "file-uri", Type: "string"}, - {Name: "fileName", Flag: "file-name", Type: "string"}, - {Name: "isTextToSpeech", Flag: "is-text-to-speech", Type: "bool"}, - }}, - Handwritten: true, -} - -var CallingAnnouncementRepositoryGetUsage = &Operation{ - ID: "CallingAnnouncementRepositoryGetUsage", Area: "calling", Group: "announcement-repository", Command: "get-usage", - Summary: "Fetch repository usage for announcements for an organization", - Description: "Retrieves repository usage for announcements for an organization.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/announcements/usage", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Get announcement usage in this organization."}, - }, -} - -var CallingAnnouncementRepositoryDeleteGreetingOrg = &Operation{ - ID: "CallingAnnouncementRepositoryDeleteGreetingOrg", Area: "calling", Group: "announcement-repository", Command: "delete-greeting-org", - Summary: "Delete an announcement greeting of the organization", - Description: "Delete an announcement greeting for an organization.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/announcements/{announcementId}", Host: HostWebex, - Params: []Param{ - {Name: "announcementId", In: InPath, Flag: "announcement-id", Usage: "Unique identifier of an announcement."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Delete an announcement in this organization."}, - }, -} - -var CallingAnnouncementRepositoryGetBinaryGreeting = &Operation{ - ID: "CallingAnnouncementRepositoryGetBinaryGreeting", Area: "calling", Group: "announcement-repository", Command: "get-binary-greeting", - Summary: "Fetch details of a binary announcement greeting at the organization level", - Description: "Fetch details of a binary announcement greeting by its ID at an organization level.\n\nAn admin can upload a file at an organization level. This file will be uploaded to the announcement repository.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/announcements/{announcementId}", Host: HostWebex, - Params: []Param{ - {Name: "announcementId", In: InPath, Flag: "announcement-id", Usage: "Unique identifier of an announcement."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Get an announcement in this organization."}, - }, -} - -var CallingAnnouncementRepositoryUpdateBinaryGreeting = &Operation{ - ID: "CallingAnnouncementRepositoryUpdateBinaryGreeting", Area: "calling", Group: "announcement-repository", Command: "update-binary-greeting", - Summary: "Modify a binary announcement greeting at organization level", - Description: "Modify an existing announcement greeting at an organization level.\n\nAn admin can upload a file or modify an existing file at an organization level. This file will be uploaded to the announcement repository.\n\nYour request will need to be an `application/json` request with the announcement details including name, fileUri, fileName, and isTextToSpeech fields.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/announcements/{announcementId}", Host: HostWebex, - Params: []Param{ - {Name: "announcementId", In: InPath, Flag: "announcement-id", Usage: "Unique identifier of an announcement."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Modify an announcement in this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "name", Flag: "name", Type: "string"}, - {Name: "fileUri", Flag: "file-uri", Type: "string"}, - {Name: "fileName", Flag: "file-name", Type: "string"}, - {Name: "isTextToSpeech", Flag: "is-text-to-speech", Type: "bool"}, - }}, - Handwritten: true, -} - -var CallingAnnouncementRepositoryUploadBinaryGreeting2 = &Operation{ - ID: "CallingAnnouncementRepositoryUploadBinaryGreeting2", Area: "calling", Group: "announcement-repository", Command: "upload-binary-greeting-2", - Summary: "Upload a binary announcement greeting at the location level", - Description: "Upload a binary file to the announcement repository at a location level.\n\nAn admin can upload a file at a location level. This file will be uploaded to the announcement repository.\n\nYour request will need to be an `application/json` request with the announcement details including name, fileUri, fileName, and isTextToSpeech fields.\n\nThis API requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/locations/{locationId}/announcements", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Unique identifier of a location where an announcement is being created."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Create an announcement for location in this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "name", Flag: "name", Type: "string"}, - {Name: "fileUri", Flag: "file-uri", Type: "string"}, - {Name: "fileName", Flag: "file-name", Type: "string"}, - {Name: "isTextToSpeech", Flag: "is-text-to-speech", Type: "bool"}, - }}, - Handwritten: true, -} - -var CallingAnnouncementRepositoryGetUsageLocation = &Operation{ - ID: "CallingAnnouncementRepositoryGetUsageLocation", Area: "calling", Group: "announcement-repository", Command: "get-usage-location", - Summary: "Fetch repository usage for announcements in a location", - Description: "Retrieves repository usage for announcements in a location.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/announcements/usage", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Unique identifier of a location where an announcement is being created."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Get announcement usage for location in this organization."}, - }, -} - -var CallingAnnouncementRepositoryDeleteGreetingLocation = &Operation{ - ID: "CallingAnnouncementRepositoryDeleteGreetingLocation", Area: "calling", Group: "announcement-repository", Command: "delete-greeting-location", - Summary: "Delete an announcement greeting in a location", - Description: "Delete an announcement greeting in a location.\n\nThis API requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/locations/{locationId}/announcements/{announcementId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Unique identifier of a location where announcement is being created."}, - {Name: "announcementId", In: InPath, Flag: "announcement-id", Usage: "Unique identifier of an announcement."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Delete an announcement for location in this organization."}, - }, -} - -var CallingAnnouncementRepositoryGetBinaryGreeting2 = &Operation{ - ID: "CallingAnnouncementRepositoryGetBinaryGreeting2", Area: "calling", Group: "announcement-repository", Command: "get-binary-greeting-2", - Summary: "Fetch details of a binary announcement greeting at location level", - Description: "Fetch details of a binary announcement greeting by its ID at a location level.\n\nAn admin can upload a file at a location level. This file will be uploaded to the announcement repository.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/announcements/{announcementId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Unique identifier of a location where an announcement is being created."}, - {Name: "announcementId", In: InPath, Flag: "announcement-id", Usage: "Unique identifier of an announcement."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Fetch an announcement for location in this organization."}, - }, -} - -var CallingAnnouncementRepositoryUpdateBinaryGreeting2 = &Operation{ - ID: "CallingAnnouncementRepositoryUpdateBinaryGreeting2", Area: "calling", Group: "announcement-repository", Command: "update-binary-greeting-2", - Summary: "Modify a binary announcement greeting at location level", - Description: "Modify an existing announcement greeting at a location level.\n\nAn admin can upload a file or modify an existing file at a location level. This file will be uploaded to the announcement repository.\n\nYour request will need to be an `application/json` request with the announcement details including name, fileUri, fileName, and isTextToSpeech fields.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/locations/{locationId}/announcements/{announcementId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Unique identifier of a location where an announcement is being created."}, - {Name: "announcementId", In: InPath, Flag: "announcement-id", Usage: "Unique identifier of an announcement."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Modify an announcement for location in this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "name", Flag: "name", Type: "string"}, - {Name: "fileUri", Flag: "file-uri", Type: "string"}, - {Name: "fileName", Flag: "file-name", Type: "string"}, - {Name: "isTextToSpeech", Flag: "is-text-to-speech", Type: "bool"}, - }}, - Handwritten: true, -} - -var CallingAnnouncementRepositoryGenerateTextToSpeechPrompt = &Operation{ - ID: "CallingAnnouncementRepositoryGenerateTextToSpeechPrompt", Area: "calling", Group: "announcement-repository", Command: "generate-text-to-speech-prompt", - Summary: "Generate a Text-to-Speech Prompt", - Description: "Generate a text-to-speech prompt from the provided text, voice, and language.\n\nText-to-speech (TTS) efficiently generates prompts, greetings, and announcements by converting written text into synthesized audio using the specified voice. The generated audio functions like a recorded WAV file, eliminating the need for manual recording.\n\nThis API requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/textToSpeech/actions/generate/invoke", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Generate text-to-speech for this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "voice", Flag: "voice", Type: "string"}, - {Name: "text", Flag: "text", Type: "string"}, - {Name: "languageCode", Flag: "language-code", Type: "string"}, - }}, -} - -var CallingAnnouncementRepositoryGetTextToSpeechUsage = &Operation{ - ID: "CallingAnnouncementRepositoryGetTextToSpeechUsage", Area: "calling", Group: "announcement-repository", Command: "get-text-to-speech-usage", - Summary: "Get Text-to-Speech Usage", - Description: "Retrieve text-to-speech usage information, including the number of API calls made, the maximum allowed within the time window, and the timestamp indicating when the usage will reset.\n\nText-to-speech (TTS) efficiently generates prompts, greetings, and announcements by converting written text into synthesized audio using the specified voice. The generated audio functions like a recorded WAV file, eliminating the need for manual recording.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/textToSpeech/usage", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Get text-to-speech usage for this organization."}, - }, -} - -var CallingAnnouncementRepositoryGetTextToSpeechGenerationStatus = &Operation{ - ID: "CallingAnnouncementRepositoryGetTextToSpeechGenerationStatus", Area: "calling", Group: "announcement-repository", Command: "get-text-to-speech-generation-status", - Summary: "Get Text-to-Speech Generation Status", - Description: "Get the status of a text-to-speech generation request by its ID. If the status is SUCCESS, the response includes `promptUrl`, `kmsKeyUri`, and `fileUri` to preview or use the audio prompt.\n\nTo preview the audio prompt:\n\n1. Download the KMS key - use the Webex Node.js SDK and provide `kmsKeyUri` to download the key from KMS.\n\n2. Download the encrypted audio - The encrypted audio file content is stored in cloud and can be retrieved using `promptURL`.\n\n3. Decrypt the audio content - Use the jose library to decrypt the content downloaded from `promptUrl` using the downloaded key.\n\nText-to-speech (TTS) efficiently generates prompts, greetings, and announcements by converting written text into synthesized audio using the specified voice. The generated audio functions like a recorded WAV file, eliminating the need for manual recording.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/textToSpeech/{ttsId}", Host: HostWebex, - Params: []Param{ - {Name: "ttsId", In: InPath, Flag: "tts-id", Usage: "Unique identifier of the text-to-speech generation request."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Get text-to-speech status for this organization."}, - }, -} - -var CallingAnnouncementRepositoryListTextToSpeechVoices = &Operation{ - ID: "CallingAnnouncementRepositoryListTextToSpeechVoices", Area: "calling", Group: "announcement-repository", Command: "list-text-to-speech-voices", - Summary: "List Text-to-Speech Voices", - Description: "Fetch a list of available text-to-speech voices. Use the returned voice ID in the generation request.\n\nText-to-speech (TTS) efficiently generates prompts, greetings, and announcements by converting written text into synthesized audio using the specified voice. The generated audio functions like a recorded WAV file, eliminating the need for manual recording.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/textToSpeech/voices", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List text-to-speech voices supported for this organization."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var CallingAutoAttendantList = &Operation{ - ID: "CallingAutoAttendantList", Area: "calling", Group: "auto-attendant", Command: "list", - Summary: "Read the List of Auto Attendants", - Description: "List all Auto Attendants for the organization.\n\nAuto attendants play customized prompts and provide callers with menu options for routing their calls through your system.\n\nRetrieving this list requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/autoAttendants", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List auto attendants for this organization."}, - {Name: "locationId", In: InQuery, Flag: "location-id", Usage: "Return the list of auto attendants for this location."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of objects returned to this maximum count."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching objects."}, - {Name: "name", In: InQuery, Flag: "name", Usage: "Only return auto attendants with the matching name."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Only return auto attendants with the matching phone number."}, - }, - Paging: &Paging{}, -} - -var CallingAutoAttendantGet = &Operation{ - ID: "CallingAutoAttendantGet", Area: "calling", Group: "auto-attendant", Command: "get", - Summary: "Get Details for an Auto Attendant", - Description: "Retrieve an Auto Attendant details.\n\nAuto attendants play customized prompts and provide callers with menu options for routing their calls through your system.\n\nRetrieving an auto attendant details requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/autoAttendants/{autoAttendantId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Retrieve an auto attendant details in this location."}, - {Name: "autoAttendantId", In: InPath, Flag: "auto-attendant-id", Usage: "Retrieve the auto attendant with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve auto attendant details from this organization."}, - }, -} - -var CallingAutoAttendantUpdate = &Operation{ - ID: "CallingAutoAttendantUpdate", Area: "calling", Group: "auto-attendant", Command: "update", - Summary: "Update an Auto Attendant", - Description: "Update the designated Auto Attendant.\n\nAuto attendants play customized prompts and provide callers with menu options for routing their calls through your system.\n\nUpdating an auto attendant requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/locations/{locationId}/autoAttendants/{autoAttendantId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location in which this auto attendant exists."}, - {Name: "autoAttendantId", In: InPath, Flag: "auto-attendant-id", Usage: "Update an auto attendant with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Update an auto attendant from this organization."}, - }, - Body: &Body{}, -} - -var CallingAutoAttendantDelete = &Operation{ - ID: "CallingAutoAttendantDelete", Area: "calling", Group: "auto-attendant", Command: "delete", - Summary: "Delete an Auto Attendant", - Description: "Delete the designated Auto Attendant.\n\nAuto attendants play customized prompts and provide callers with menu options for routing their calls through your system.\n\nDeleting an auto attendant requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/locations/{locationId}/autoAttendants/{autoAttendantId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location from which to delete an auto attendant."}, - {Name: "autoAttendantId", In: InPath, Flag: "auto-attendant-id", Usage: "Delete the auto attendant with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Delete the auto attendant from this organization."}, - }, -} - -var CallingAutoAttendantCreate = &Operation{ - ID: "CallingAutoAttendantCreate", Area: "calling", Group: "auto-attendant", Command: "create", - Summary: "Create an Auto Attendant", - Description: "Create new Auto Attendant for the given location.\n\nAuto attendants play customized prompts and provide callers with menu options for routing their calls through your system.\n\nCreating an auto attendant requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/locations/{locationId}/autoAttendants", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Create the auto attendant for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Create the auto attendant for this organization."}, - }, - Body: &Body{}, -} - -var CallingAutoAttendantGetCallForward = &Operation{ - ID: "CallingAutoAttendantGetCallForward", Area: "calling", Group: "auto-attendant", Command: "get-call-forward", - Summary: "Get Call Forwarding Settings for an Auto Attendant", - Description: "Retrieve Call Forwarding settings for the designated Auto Attendant including the list of call forwarding rules.\n\nThe call forwarding feature allows you to direct all incoming calls based on specific criteria that you define.\nBelow are the available options for configuring your call forwarding:\n1. Always forward calls to a designated number.\n2. Forward calls to a designated number based on certain criteria.\n3. Forward calls using different modes.\n\nRetrieving call forwarding settings for an auto attendant requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/autoAttendants/{autoAttendantId}/callForwarding", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location in which this auto attendant exists."}, - {Name: "autoAttendantId", In: InPath, Flag: "auto-attendant-id", Usage: "Retrieve the call forwarding settings for this auto attendant."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve auto attendant forwarding settings from this organization."}, - }, -} - -var CallingAutoAttendantUpdateCallForward = &Operation{ - ID: "CallingAutoAttendantUpdateCallForward", Area: "calling", Group: "auto-attendant", Command: "update-call-forward", - Summary: "Update Call Forwarding Settings for an Auto Attendant", - Description: "Update Call Forwarding settings for the designated Auto Attendant.\n\nThe call forwarding feature allows you to direct all incoming calls based on specific criteria that you define.\nBelow are the available options for configuring your call forwarding:\n1. Always forward calls to a designated number.\n2. Forward calls to a designated number based on certain criteria.\n3. Forward calls using different modes.\n\nUpdating call forwarding settings for an auto attendant requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/locations/{locationId}/autoAttendants/{autoAttendantId}/callForwarding", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location in which this auto attendant exists."}, - {Name: "autoAttendantId", In: InPath, Flag: "auto-attendant-id", Usage: "Update call forwarding settings for this auto attendant."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Update auto attendant forwarding settings from this organization."}, - }, - Body: &Body{}, -} - -var CallingAutoAttendantCreateSelectiveForwardRule = &Operation{ - ID: "CallingAutoAttendantCreateSelectiveForwardRule", Area: "calling", Group: "auto-attendant", Command: "create-selective-forward-rule", - Summary: "Create a Selective Call Forwarding Rule for an Auto Attendant", - Description: "Create a Selective Call Forwarding Rule for the designated Auto Attendant.\n\nA selective call forwarding rule for an auto attendant allows calls to be forwarded or not forwarded to the designated number, based on the defined criteria.\n\nNote that the list of existing call forward rules is available in the auto attendant's call forwarding settings.\n\nCreating a selective call forwarding rule for an auto attendant requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: The Call Forwarding Rule ID will change upon modification of the Call Forwarding Rule name.", - Method: "POST", Path: "/telephony/config/locations/{locationId}/autoAttendants/{autoAttendantId}/callForwarding/selectiveRules", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location in which the auto attendant exists."}, - {Name: "autoAttendantId", In: InPath, Flag: "auto-attendant-id", Usage: "Create the rule for this auto attendant."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Create the auto attendant rule for this organization."}, - }, - Body: &Body{}, -} - -var CallingAutoAttendantGetSelectiveForwardRule = &Operation{ - ID: "CallingAutoAttendantGetSelectiveForwardRule", Area: "calling", Group: "auto-attendant", Command: "get-selective-forward-rule", - Summary: "Get Selective Call Forwarding Rule for an Auto Attendant", - Description: "Retrieve a Selective Call Forwarding Rule's settings for the designated Auto Attendant.\n\nA selective call forwarding rule for an auto attendant allows calls to be forwarded or not forwarded to the designated number, based on the defined criteria.\n\nNote that the list of existing call forward rules is available in the auto attendant's call forwarding settings.\n\nRetrieving a selective call forwarding rule's settings for an auto attendant requires a full or read-only administrator or location administrator\n\n**NOTE**: The Call Forwarding Rule ID will change upon modification of the Call Forwarding Rule name.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/autoAttendants/{autoAttendantId}/callForwarding/selectiveRules/{ruleId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location in which this auto attendant exists."}, - {Name: "autoAttendantId", In: InPath, Flag: "auto-attendant-id", Usage: "Retrieve settings for a rule for this auto attendant."}, - {Name: "ruleId", In: InPath, Flag: "rule-id", Usage: "Auto attendant rule you are retrieving settings for."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve auto attendant rule settings for this organization."}, - }, -} - -var CallingAutoAttendantUpdateSelectiveForwardRule = &Operation{ - ID: "CallingAutoAttendantUpdateSelectiveForwardRule", Area: "calling", Group: "auto-attendant", Command: "update-selective-forward-rule", - Summary: "Update Selective Call Forwarding Rule for an Auto Attendant", - Description: "Update a Selective Call Forwarding Rule's settings for the designated Auto Attendant.\n\nA selective call forwarding rule for an auto attendant allows calls to be forwarded or not forwarded to the designated number, based on the defined criteria.\n\nNote that the list of existing call forward rules is available in the auto attendant's call forwarding settings.\n\nUpdating a selective call forwarding rule's settings for an auto attendant requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: The Call Forwarding Rule ID will change upon modification of the Call Forwarding Rule name.", - Method: "PUT", Path: "/telephony/config/locations/{locationId}/autoAttendants/{autoAttendantId}/callForwarding/selectiveRules/{ruleId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location in which this auto attendant exists."}, - {Name: "autoAttendantId", In: InPath, Flag: "auto-attendant-id", Usage: "Update settings for a rule for this auto attendant."}, - {Name: "ruleId", In: InPath, Flag: "rule-id", Usage: "Auto attendant rule you are updating settings for."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Update auto attendant rule settings for this organization."}, - }, - Body: &Body{}, -} - -var CallingAutoAttendantDeleteSelectiveForwardRule = &Operation{ - ID: "CallingAutoAttendantDeleteSelectiveForwardRule", Area: "calling", Group: "auto-attendant", Command: "delete-selective-forward-rule", - Summary: "Delete a Selective Call Forwarding Rule for an Auto Attendant", - Description: "Delete a Selective Call Forwarding Rule for the designated Auto Attendant.\n\nA selective call forwarding rule for an auto attendant allows calls to be forwarded or not forwarded to the designated number, based on the defined criteria.\n\nNote that the list of existing call forward rules is available in the auto attendant's call forwarding settings.\n\nDeleting a selective call forwarding rule for an auto attendant requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: The Call Forwarding Rule ID will change upon modification of the Call Forwarding Rule name.", - Method: "DELETE", Path: "/telephony/config/locations/{locationId}/autoAttendants/{autoAttendantId}/callForwarding/selectiveRules/{ruleId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location in which this auto attendant exists."}, - {Name: "autoAttendantId", In: InPath, Flag: "auto-attendant-id", Usage: "Delete the rule for this auto attendant."}, - {Name: "ruleId", In: InPath, Flag: "rule-id", Usage: "Auto attendant rule you are deleting."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Delete auto attendant rule from this organization."}, - }, -} - -var CallingAutoAttendantGetPrimaryNumbers = &Operation{ - ID: "CallingAutoAttendantGetPrimaryNumbers", Area: "calling", Group: "auto-attendant", Command: "get-primary-numbers", - Summary: "Get Auto Attendant Primary Available Phone Numbers", - Description: "List the service and standard PSTN numbers that are available to be assigned as the auto attendant's primary phone number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/autoAttendants/availableNumbers", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Return the list of phone numbers for this location within the given organization. The maximum length is 36."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List numbers for this organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of phone numbers returned to this maximum count. The default is 2000."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching phone numbers. The default is 0."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - }, - Paging: &Paging{}, -} - -var CallingAutoAttendantGetAlternateNumbers = &Operation{ - ID: "CallingAutoAttendantGetAlternateNumbers", Area: "calling", Group: "auto-attendant", Command: "get-alternate-numbers", - Summary: "Get Auto Attendant Alternate Available Phone Numbers", - Description: "List the service and standard PSTN numbers that are available to be assigned as the auto attendant's alternate number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/autoAttendants/alternate/availableNumbers", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Return the list of phone numbers for this location within the given organization. The maximum length is 36."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List numbers for this organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of phone numbers returned to this maximum count. The default is 2000."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching phone numbers. The default is 0."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - }, - Paging: &Paging{}, -} - -var CallingAutoAttendantGetForwardAvailableNumbers = &Operation{ - ID: "CallingAutoAttendantGetForwardAvailableNumbers", Area: "calling", Group: "auto-attendant", Command: "get-forward-available-numbers", - Summary: "Get Auto Attendant Call Forward Available Phone Numbers", - Description: "List the service and standard PSTN numbers that are available to be assigned as the auto attendant's call forward number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are assigned to an owning entity.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/autoAttendants/callForwarding/availableNumbers", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Return the list of phone numbers for this location within the given organization. The maximum length is 36."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List numbers for this organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of phone numbers returned to this maximum count. The default is 2000."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching phone numbers. The default is 0."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "ownerName", In: InQuery, Flag: "owner-name", Usage: "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255."}, - {Name: "extension", In: InQuery, Flag: "extension", Usage: "Returns the list of PSTN phone numbers with the given `extension`."}, - }, - Paging: &Paging{}, -} - -var CallingAutoAttendantSwitchModeCallForward = &Operation{ - ID: "CallingAutoAttendantSwitchModeCallForward", Area: "calling", Group: "auto-attendant", Command: "switch-mode-call-forward", - Summary: "Switch Mode for Call Forwarding Settings for an Auto Attendant", - Description: "Switches the current operating mode of the `Auto Attendant` to the mode as per normal operations.\n\nOperating modes allow call forwarding to be configured based on predefined schedules, enabling different routing behaviors during business hours, after hours, or holidays.\n\nSwitching operating mode for an `auto attendant` requires a full, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/locations/{locationId}/autoAttendants/{autoAttendantId}/callForwarding/actions/switchMode/invoke", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "`Location` in which this `auto attendant` exists."}, - {Name: "autoAttendantId", In: InPath, Flag: "auto-attendant-id", Usage: "Switch operating mode to normal operations for this `auto attendant`."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Switch operating mode as per normal operations for the `auto attendant` from this organization."}, - }, - Body: &Body{}, -} - -var CallingAutoAttendantDeleteAnnouncementFile = &Operation{ - ID: "CallingAutoAttendantDeleteAnnouncementFile", Area: "calling", Group: "auto-attendant", Command: "delete-announcement-file", - Summary: "Delete a Auto Attendant Announcement File", - Description: "Delete an announcement file for the designated auto attendant.\n\nAuto Attendant announcement files contain messages and music that callers hear while waiting in the queue. A auto attendant can be configured to play whatever subset of these announcement files is desired.\n\nDeleting an announcement file for a auto attendant requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/locations/{locationId}/autoAttendants/{autoAttendantId}/announcements/{fileName}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Delete an announcement for a auto attendant in this location."}, - {Name: "autoAttendantId", In: InPath, Flag: "auto-attendant-id", Usage: "Delete an announcement for the auto attendant with this identifier."}, - {Name: "fileName", In: InPath, Flag: "file-name"}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Delete auto attendant announcement from this organization."}, - }, -} - -var CallingAutoAttendantListAnnouncementFiles = &Operation{ - ID: "CallingAutoAttendantListAnnouncementFiles", Area: "calling", Group: "auto-attendant", Command: "list-announcement-files", - Summary: "Read the List of Auto Attendant Announcement Files", - Description: "List file info for all auto attendant announcement files associated with this auto attendant.\n\nAuto attendant announcement files contain messages and music that callers hear while waiting in the queue. A auto attendant can be configured to play whatever subset of these announcement files is desired.\n\nRetrieving this list of files requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.\n\nNote that uploading of announcement files via API is not currently supported, but is available via Webex Control Hub.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/autoAttendants/{autoAttendantId}/announcements", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location in which this auto attendant exists."}, - {Name: "autoAttendantId", In: InPath, Flag: "auto-attendant-id", Usage: "Retrieve announcement files for the auto attendant with this identifier."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve announcement files for a auto attendant from this organization."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var CallingCallParkList = &Operation{ - ID: "CallingCallParkList", Area: "calling", Group: "call-park", Command: "list", - Summary: "Read the List of Call Parks", - Description: "List all Call Parks for the organization.\n\nCall Park allows call recipients to place a call on hold so that it can be retrieved from another device.\n\nRetrieving this list requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.\n\n**NOTE**: The Call Park ID will change upon modification of the Call Park name.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/callParks", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Return the list of call parks for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List call parks for this organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of call parks returned to this maximum count. Default is 2000."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching call parks. Default is 0."}, - {Name: "order", In: InQuery, Flag: "order", Usage: "Sort the list of call parks by name, either ASC or DSC. Default is ASC."}, - {Name: "name", In: InQuery, Flag: "name", Usage: "Return the list of call parks that contains the given name. The maximum length is 80."}, - }, - Paging: &Paging{}, -} - -var CallingCallParkCreate = &Operation{ - ID: "CallingCallParkCreate", Area: "calling", Group: "call-park", Command: "create", - Summary: "Create a Call Park", - Description: "Create new Call Parks for the given location.\n\nCall Park allows call recipients to place a call on hold so that it can be retrieved from another device.\n\nCreating a call park requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: The Call Park ID will change upon modification of the Call Park name.", - Method: "POST", Path: "/telephony/config/locations/{locationId}/callParks", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Create the call park for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Create the call park for this organization."}, - }, - Body: &Body{}, -} - -var CallingCallParkDelete = &Operation{ - ID: "CallingCallParkDelete", Area: "calling", Group: "call-park", Command: "delete", - Summary: "Delete a Call Park", - Description: "Delete the designated Call Park.\n\nCall Park allows call recipients to place a call on hold so that it can be retrieved from another device.\n\nDeleting a call park requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: The Call Park ID will change upon modification of the Call Park name.", - Method: "DELETE", Path: "/telephony/config/locations/{locationId}/callParks/{callParkId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location from which to delete a call park."}, - {Name: "callParkId", In: InPath, Flag: "call-park-id", Usage: "Delete the call park with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Delete the call park from this organization."}, - }, -} - -var CallingCallParkGet = &Operation{ - ID: "CallingCallParkGet", Area: "calling", Group: "call-park", Command: "get", - Summary: "Get Details for a Call Park", - Description: "Retrieve Call Park details.\n\nCall Park allows call recipients to place a call on hold so that it can be retrieved from another device.\n\nRetrieving call park details requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.\n\n**NOTE**: The Call Park ID will change upon modification of the Call Park name.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/callParks/{callParkId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Retrieve settings for a call park in this location."}, - {Name: "callParkId", In: InPath, Flag: "call-park-id", Usage: "Retrieve settings for a call park with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve call park settings from this organization."}, - }, -} - -var CallingCallParkUpdate = &Operation{ - ID: "CallingCallParkUpdate", Area: "calling", Group: "call-park", Command: "update", - Summary: "Update a Call Park", - Description: "Update the designated Call Park.\n\nCall Park allows call recipients to place a call on hold so that it can be retrieved from another device.\n\nUpdating a call park requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: The Call Park ID will change upon modification of the Call Park name.", - Method: "PUT", Path: "/telephony/config/locations/{locationId}/callParks/{callParkId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location in which this call park exists."}, - {Name: "callParkId", In: InPath, Flag: "call-park-id", Usage: "Update settings for a call park with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Update call park settings from this organization."}, - }, - Body: &Body{}, -} - -var CallingCallParkGetAvailableAgents = &Operation{ - ID: "CallingCallParkGetAvailableAgents", Area: "calling", Group: "call-park", Command: "get-available-agents", - Summary: "Get available agents from Call Parks", - Description: "Retrieve available agents from call parks for a given location.\n\nCall Park allows call recipients to place a call on hold so that it can be retrieved from another device.\n\nRetrieving available agents from call parks requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/callParks/availableUsers", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Return the available agents for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Return the available agents for this organization."}, - {Name: "callParkName", In: InQuery, Flag: "call-park-name", Usage: "Only return available agents from call parks with the matching name."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of available agents returned to this maximum count."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching available agents."}, - {Name: "name", In: InQuery, Flag: "name", Usage: "Only return available agents with the matching name."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Only return available agents with the matching primary number."}, - {Name: "order", In: InQuery, Flag: "order", Usage: "Order the available agents according to the designated fields. Up to three vertical bar (|) separated sort order fields may be specified. Available sort fields: fname, lname, number and extension. The maximum supported sort order value is 3."}, - }, - Paging: &Paging{}, -} - -var CallingCallParkGetAvailableRecallHuntGroups = &Operation{ - ID: "CallingCallParkGetAvailableRecallHuntGroups", Area: "calling", Group: "call-park", Command: "get-available-recall-hunt-groups", - Summary: "Get available recall hunt groups from Call Parks", - Description: "Retrieve available recall hunt groups from call parks for a given location.\n\nCall Park allows call recipients to place a call on hold so that it can be retrieved from another device.\n\nRetrieving available recall hunt groups from call parks requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/callParks/availableRecallHuntGroups", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Return the available recall hunt groups for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Return the available recall hunt groups for this organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of available recall hunt groups returned to this maximum count."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching available recall hunt groups."}, - {Name: "name", In: InQuery, Flag: "name", Usage: "Only return available recall hunt groups with the matching name."}, - {Name: "order", In: InQuery, Flag: "order", Usage: "Order the available recall hunt groups according to the designated fields. Available sort fields: lname."}, - }, - Paging: &Paging{}, -} - -var CallingCallParkGet2 = &Operation{ - ID: "CallingCallParkGet2", Area: "calling", Group: "call-park", Command: "get-2", - Summary: "Get Call Park Settings", - Description: "Retrieve Call Park Settings from call parks for a given location.\n\nCall Park allows call recipients to place a call on hold so that it can be retrieved from another device.\n\nRetrieving settings from call parks requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/callParks/settings", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Return the call park settings for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Return the call park settings for this organization."}, - }, -} - -var CallingCallParkUpdate2 = &Operation{ - ID: "CallingCallParkUpdate2", Area: "calling", Group: "call-park", Command: "update-2", - Summary: "Update Call Park settings", - Description: "Update Call Park settings for the designated location.\n\nCall Park allows call recipients to place a call on hold so that it can be retrieved from another device.\n\nUpdating call park settings requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/locations/{locationId}/callParks/settings", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location for which call park settings will be updated."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Update call park settings from this organization."}, - }, - Body: &Body{}, -} - -var CallingCallParkListExtensions = &Operation{ - ID: "CallingCallParkListExtensions", Area: "calling", Group: "call-park", Command: "list-extensions", - Summary: "Read the List of Call Park Extensions", - Description: "List all Call Park Extensions for the organization.\n\nThe Call Park service, enabled for all users by default, allows a user to park a call against an available user's extension or to a Call Park Extension. Call Park Extensions are extensions defined within the Call Park service for holding parked calls.\n\nRetrieving this list requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/callParkExtensions", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List call park extensions for this organization."}, - {Name: "locationId", In: InQuery, Flag: "location-id", Usage: "Only return call park extensions with matching location ID."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of objects returned to this maximum count."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching objects."}, - {Name: "extension", In: InQuery, Flag: "extension", Usage: "Only return call park extensions with the matching extension."}, - {Name: "locationName", In: InQuery, Flag: "location-name", Usage: "Only return call park extensions with the matching extension."}, - {Name: "name", In: InQuery, Flag: "name", Usage: "Only return call park extensions with the matching name."}, - {Name: "order", In: InQuery, Flag: "order", Usage: "Order the available agents according to the designated fields. Available sort fields: `groupName`, `callParkExtension`, `callParkExtensionName`, `callParkExtensionExternalId`."}, - }, - Paging: &Paging{}, -} - -var CallingCallParkGetExtension = &Operation{ - ID: "CallingCallParkGetExtension", Area: "calling", Group: "call-park", Command: "get-extension", - Summary: "Get Details for a Call Park Extension", - Description: "Retrieve Call Park Extension details.\n\nThe Call Park service, enabled for all users by default, allows a user to park a call against an available user's extension or to a Call Park Extension. Call Park Extensions are extensions defined within the Call Park service for holding parked calls.\n\nRetrieving call park extension details requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/callParkExtensions/{callParkExtensionId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Retrieve details for a call park extension in this location."}, - {Name: "callParkExtensionId", In: InPath, Flag: "call-park-extension-id", Usage: "Retrieve details for a call park extension with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve call park extension details from this organization."}, - }, -} - -var CallingCallParkDeleteExtension = &Operation{ - ID: "CallingCallParkDeleteExtension", Area: "calling", Group: "call-park", Command: "delete-extension", - Summary: "Delete a Call Park Extension", - Description: "Delete the designated Call Park Extension.\n\nCall Park Extension enables a call recipient to park a call to an extension, so someone else within the same Organization can retrieve the parked call by dialing that extension. Call Park Extensions can be added as monitored lines by users' Cisco phones, so users can park and retrieve calls by pressing the associated phone line key.\n\nDeleting a call park extension requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/locations/{locationId}/callParkExtensions/{callParkExtensionId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location from which to delete a call park extension."}, - {Name: "callParkExtensionId", In: InPath, Flag: "call-park-extension-id", Usage: "Delete the call park extension with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Delete the call park extension from this organization."}, - }, -} - -var CallingCallParkUpdateExtension = &Operation{ - ID: "CallingCallParkUpdateExtension", Area: "calling", Group: "call-park", Command: "update-extension", - Summary: "Update a Call Park Extension", - Description: "Update the designated Call Park Extension.\n\nCall Park Extension enables a call recipient to park a call to an extension, so someone else within the same Organization can retrieve the parked call by dialing that extension. Call Park Extensions can be added as monitored lines by users' Cisco phones, so users can park and retrieve calls by pressing the associated phone line key.\n\nUpdating a call park extension requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/locations/{locationId}/callParkExtensions/{callParkExtensionId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location in which this call park extension exists."}, - {Name: "callParkExtensionId", In: InPath, Flag: "call-park-extension-id", Usage: "Update a call park extension with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Update a call park extension from this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "name", Flag: "name", Type: "string"}, - {Name: "extension", Flag: "extension", Type: "string"}, - }}, -} - -var CallingCallParkCreateExtension = &Operation{ - ID: "CallingCallParkCreateExtension", Area: "calling", Group: "call-park", Command: "create-extension", - Summary: "Create a Call Park Extension", - Description: "Create new Call Park Extensions for the given location.\n\nCall Park Extension enables a call recipient to park a call to an extension, so someone else within the same Organization can retrieve the parked call by dialing that extension. Call Park Extensions can be added as monitored lines by users' Cisco phones, so users can park and retrieve calls by pressing the associated phone line key.\n\nCreating a call park extension requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/locations/{locationId}/callParkExtensions", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Create the call park extension for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Create the call park extension for this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "name", Flag: "name", Type: "string"}, - {Name: "extension", Flag: "extension", Type: "string"}, - }}, -} - -var CallingCallPickupList = &Operation{ - ID: "CallingCallPickupList", Area: "calling", Group: "call-pickup", Command: "list", - Summary: "Read the List of Call Pickups", - Description: "List all Call Pickups for the organization.\n\nCall Pickup enables a user (agent) to answer any ringing line within their pickup group.\n\nRetrieving this list requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.\n\n**NOTE**: The Call Pickup ID will change upon modification of the Call Pickup name.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/callPickups", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Return the list of call pickups for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List call pickups for this organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of call pickups returned to this maximum count. Default is 2000."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching call pickups. Default is 0."}, - {Name: "order", In: InQuery, Flag: "order", Usage: "Sort the list of call pickups by name, either ASC or DSC. Default is ASC."}, - {Name: "name", In: InQuery, Flag: "name", Usage: "Return the list of call pickups that contains the given name. The maximum length is 80."}, - }, - Paging: &Paging{}, -} - -var CallingCallPickupCreate = &Operation{ - ID: "CallingCallPickupCreate", Area: "calling", Group: "call-pickup", Command: "create", - Summary: "Create a Call Pickup", - Description: "Create new Call Pickups for the given location.\n\nCall Pickup enables a user (agent) to answer any ringing line within their pickup group.\n\nCreating a call pickup requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: The Call Pickup ID will change upon modification of the Call Pickup name.", - Method: "POST", Path: "/telephony/config/locations/{locationId}/callPickups", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Create the call pickup for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Create the call pickup for this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "name", Flag: "name", Type: "string"}, - {Name: "notificationType", Flag: "notification-type", Type: "string"}, - {Name: "notificationDelayTimerSeconds", Flag: "notification-delay-timer-seconds", Type: "int64"}, - {Name: "agents", Flag: "agents", Type: "[]string"}, - }}, -} - -var CallingCallPickupDelete = &Operation{ - ID: "CallingCallPickupDelete", Area: "calling", Group: "call-pickup", Command: "delete", - Summary: "Delete a Call Pickup", - Description: "Delete the designated Call Pickup.\n\nCall Pickup enables a user (agent) to answer any ringing line within their pickup group.\n\nDeleting a call pickup requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: The Call Pickup ID will change upon modification of the Call Pickup name.", - Method: "DELETE", Path: "/telephony/config/locations/{locationId}/callPickups/{callPickupId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location from which to delete a call pickup."}, - {Name: "callPickupId", In: InPath, Flag: "call-pickup-id", Usage: "Delete the call pickup with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Delete the call pickup from this organization."}, - }, -} - -var CallingCallPickupGet = &Operation{ - ID: "CallingCallPickupGet", Area: "calling", Group: "call-pickup", Command: "get", - Summary: "Get Details for a Call Pickup", - Description: "Retrieve the designated Call Pickup details.\n\nCall Pickup enables a user (agent) to answer any ringing line within their pickup group.\n\nRetrieving call pickup details requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.\n\n**NOTE**: The Call Pickup ID will change upon modification of the Call Pickup name.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/callPickups/{callPickupId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Retrieve settings for a call pickup in this location."}, - {Name: "callPickupId", In: InPath, Flag: "call-pickup-id", Usage: "Retrieve settings for a call pickup with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve call pickup settings from this organization."}, - }, -} - -var CallingCallPickupUpdate = &Operation{ - ID: "CallingCallPickupUpdate", Area: "calling", Group: "call-pickup", Command: "update", - Summary: "Update a Call Pickup", - Description: "Update the designated Call Pickup.\n\nCall Pickup enables a user (agent) to answer any ringing line within their pickup group.\n\nUpdating a call pickup requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: The Call Pickup ID will change upon modification of the Call Pickup name.", - Method: "PUT", Path: "/telephony/config/locations/{locationId}/callPickups/{callPickupId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location in which this call pickup exists."}, - {Name: "callPickupId", In: InPath, Flag: "call-pickup-id", Usage: "Update settings for a call pickup with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Update call pickup settings from this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "name", Flag: "name", Type: "string"}, - {Name: "notificationType", Flag: "notification-type", Type: "string"}, - {Name: "notificationDelayTimerSeconds", Flag: "notification-delay-timer-seconds", Type: "int64"}, - {Name: "agents", Flag: "agents", Type: "[]string"}, - }}, -} - -var CallingCallPickupGetAvailableAgents = &Operation{ - ID: "CallingCallPickupGetAvailableAgents", Area: "calling", Group: "call-pickup", Command: "get-available-agents", - Summary: "Get available agents from Call Pickups", - Description: "Retrieve available agents from call pickups for a given location.\n\nCall Pickup enables a user (agent) to answer any ringing line within their pickup group.\n\nRetrieving available agents from call pickups requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/callPickups/availableUsers", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Return the available agents for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Return the available agents for this organization."}, - {Name: "callPickupName", In: InQuery, Flag: "call-pickup-name", Usage: "Only return available agents from call pickups with the matching name."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of available agents returned to this maximum count."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching available agents."}, - {Name: "name", In: InQuery, Flag: "name", Usage: "Only return available agents with the matching name."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Only return available agents with the matching primary number."}, - {Name: "order", In: InQuery, Flag: "order", Usage: "Order the available agents according to the designated fields. Up to three vertical bar (|) separated sort order fields may be specified. Available sort fields: `fname`, `lname`, `extension`, `number`."}, - }, - Paging: &Paging{}, -} - -var CallingCallQueueListCustomerAssist = &Operation{ - ID: "CallingCallQueueListCustomerAssist", Area: "calling", Group: "call-queue", Command: "list-customer-assist", - Summary: "Read the List of Call Queues with Customer Assist", - Description: "List all Call Queues for the organization.\n\nCall queues temporarily hold calls in the cloud, when all agents\nassigned to receive calls from the queue are unavailable. Queued calls are routed to \nan available agent, when not on an active call. Each call queue is assigned a lead number, which is a telephone\nnumber that external callers can dial to reach the users assigned to the call queue.\nCall queues are also assigned an internal extension, which can be dialed\ninternally to reach the users assigned to the call queue.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/queues", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Returns the list of call queues in this organization."}, - {Name: "locationId", In: InQuery, Flag: "location-id", Usage: "Returns the list of call queues in this location."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of objects returned to this maximum count."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching objects."}, - {Name: "name", In: InQuery, Flag: "name", Usage: "Returns only the call queues matching the given name."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Returns only the call queues matching the given primary phone number or extension."}, - {Name: "departmentId", In: InQuery, Flag: "department-id", Usage: "Returns only call queues matching the given department ID."}, - {Name: "departmentName", In: InQuery, Flag: "department-name", Usage: "Returns only call queues matching the given department name."}, - {Name: "hasCxEssentials", In: InQuery, Flag: "has-cx-essentials", Usage: "Returns only the list of call queues with Customer Assist license when `true`, otherwise returns the list of Customer Experience Basic call queues."}, - }, - Paging: &Paging{}, -} - -var CallingCallQueueCreateCustomerAssist = &Operation{ - ID: "CallingCallQueueCreateCustomerAssist", Area: "calling", Group: "call-queue", Command: "create-customer-assist", - Summary: "Create a Call Queue with Customer Assist", - Description: "Create new Call Queues for the given location.\n\nCall queues temporarily hold calls in the cloud, when all agents assigned to receive calls from the queue are unavailable.\nQueued calls are routed to an available agent, when not on an active call. Each call queue is assigned a lead number, which is a telephone\nnumber that external callers can dial to reach the users assigned to the call queue. Call queues are also assigned an internal extension,\nwhich can be dialed internally to reach the users assigned to the call queue.\n\nCreating a call queue requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/locations/{locationId}/queues", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "The location ID where the call queue needs to be created."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "The organization ID where the call queue needs to be created."}, - {Name: "hasCxEssentials", In: InQuery, Flag: "has-cx-essentials", Usage: "Creates a Customer Assist call queue, when `true`. This requires Customer Assist licensed agents."}, - }, - Body: &Body{}, -} - -var CallingCallQueueDelete = &Operation{ - ID: "CallingCallQueueDelete", Area: "calling", Group: "call-queue", Command: "delete", - Summary: "Delete a Call Queue", - Description: "Delete the designated Call Queue.\n\nCall queues temporarily hold calls in the cloud when all agents, which\ncan be users or agents, assigned to receive calls from the queue are\nunavailable. Queued calls are routed to an available agent when not on an\nactive call. Each call queue is assigned a Lead Number, which is a telephone\nnumber outside callers can dial to reach users assigned to the call queue.\nCall queues are also assigned an internal extension, which can be dialed\ninternally to reach users assigned to the call queue.\n\nDeleting a call queue requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/locations/{locationId}/queues/{queueId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location from which to delete a call queue."}, - {Name: "queueId", In: InPath, Flag: "queue-id", Usage: "Delete the call queue with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Delete the call queue from this organization."}, - }, -} - -var CallingCallQueueGetCustomerAssist = &Operation{ - ID: "CallingCallQueueGetCustomerAssist", Area: "calling", Group: "call-queue", Command: "get-customer-assist", - Summary: "Get Details for a Call Queue with Customer Assist", - Description: "Retrieve Call Queue details.\n\nCall queues temporarily hold calls in the cloud, when all agents assigned to receive calls from the queue are unavailable.\nQueued calls are routed to an available agent, when not on an active call. Each call queue is assigned a lead number, which is a telephone\nnumber that external callers can dial to reach the users assigned to the call queue. Call queues are also assigned an internal extension,\nwhich can be dialed internally to reach the users assigned to the call queue.\n\nRetrieving call queue details requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/queues/{queueId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Retrieves the details of a call queue in this location."}, - {Name: "queueId", In: InPath, Flag: "queue-id", Usage: "Retrieves the details of call queue with this identifier."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieves the details of a call queue in this organization."}, - {Name: "hasCxEssentials", In: InQuery, Flag: "has-cx-essentials", Usage: "Must be set to `true`, to view the details of a call queue with Customer Assist license. This can otherwise be ommited or set to `false`."}, - }, -} - -var CallingCallQueueUpdate = &Operation{ - ID: "CallingCallQueueUpdate", Area: "calling", Group: "call-queue", Command: "update", - Summary: "Update a Call Queue", - Description: "Update the designated Call Queue.\n\nCall queues temporarily hold calls in the cloud when all agents, which\ncan be users or agents, assigned to receive calls from the queue are\nunavailable. Queued calls are routed to an available agent when not on an\nactive call. Each call queue is assigned a Lead Number, which is a telephone\nnumber outside callers can dial to reach users assigned to the call queue.\nCall queues are also assigned an internal extension, which can be dialed\ninternally to reach users assigned to the call queue.\n\nUpdating a call queue requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/locations/{locationId}/queues/{queueId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location in which this call queue exists."}, - {Name: "queueId", In: InPath, Flag: "queue-id", Usage: "Update setting for the call queue with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Update call queue settings from this organization."}, - }, - Body: &Body{}, -} - -var CallingCallQueueListAnnouncementFiles = &Operation{ - ID: "CallingCallQueueListAnnouncementFiles", Area: "calling", Group: "call-queue", Command: "list-announcement-files", - Summary: "Read the List of Call Queue Announcement Files", - Description: "List file info for all Call Queue announcement files associated with this Call Queue.\n\nCall Queue announcement files contain messages and music that callers hear while waiting in the queue. A call queue can be configured to play whatever subset of these announcement files is desired.\n\nRetrieving this list of files requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.\n\nNote that uploading of announcement files via API is not currently supported, but is available via Webex Control Hub.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/queues/{queueId}/announcements", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location in which this call queue exists."}, - {Name: "queueId", In: InPath, Flag: "queue-id", Usage: "Retrieve anouncement files for the call queue with this identifier."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve announcement files for a call queue from this organization."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var CallingCallQueueDeleteAnnouncementFile = &Operation{ - ID: "CallingCallQueueDeleteAnnouncementFile", Area: "calling", Group: "call-queue", Command: "delete-announcement-file", - Summary: "Delete a Call Queue Announcement File", - Description: "Delete an announcement file for the designated Call Queue.\n\nCall Queue announcement files contain messages and music that callers hear while waiting in the queue. A call queue can be configured to play whatever subset of these announcement files is desired.\n\nDeleting an announcement file for a call queue requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/locations/{locationId}/queues/{queueId}/announcements/{fileName}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Delete an announcement for a call queue in this location."}, - {Name: "queueId", In: InPath, Flag: "queue-id", Usage: "Delete an announcement for the call queue with this identifier."}, - {Name: "fileName", In: InPath, Flag: "file-name"}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Delete call queue announcement from this organization."}, - }, -} - -var CallingCallQueueGetForward = &Operation{ - ID: "CallingCallQueueGetForward", Area: "calling", Group: "call-queue", Command: "get-forward", - Summary: "Get Call Forwarding Settings for a Call Queue", - Description: "Retrieve Call Forwarding settings for the specified Call Queue, including the list of call forwarding rules.\n\nThe call forwarding feature allows you to direct all incoming calls based on specific criteria that you define.\nBelow are the available options for configuring your call forwarding:\n1. Always forward calls to a designated number.\n2. Forward calls to a designated number based on certain criteria.\n3. Forward calls using different modes.\n\nRetrieving call forwarding settings for a call queue requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/queues/{queueId}/callForwarding", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location in which this call queue exists."}, - {Name: "queueId", In: InPath, Flag: "queue-id", Usage: "Retrieve the call forwarding settings for this call queue."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve call queue forwarding settings from this organization."}, - }, -} - -var CallingCallQueueUpdateForward = &Operation{ - ID: "CallingCallQueueUpdateForward", Area: "calling", Group: "call-queue", Command: "update-forward", - Summary: "Update Call Forwarding Settings for a Call Queue", - Description: "Update Call Forwarding settings for the designated Call Queue.\n\nThe call forwarding feature allows you to direct all incoming calls based on specific criteria that you define.\nBelow are the available options for configuring your call forwarding:\n1. Always forward calls to a designated number.\n2. Forward calls to a designated number based on certain criteria.\n3. Forward calls using different modes.\n\nUpdating call forwarding settings for a call queue requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/locations/{locationId}/queues/{queueId}/callForwarding", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location in which this call queue exists."}, - {Name: "queueId", In: InPath, Flag: "queue-id", Usage: "Update call forwarding settings for this call queue."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Update call queue forwarding settings from this organization."}, - }, - Body: &Body{}, -} - -var CallingCallQueueCreateSelectiveForwardRule = &Operation{ - ID: "CallingCallQueueCreateSelectiveForwardRule", Area: "calling", Group: "call-queue", Command: "create-selective-forward-rule", - Summary: "Create a Selective Call Forwarding Rule for a Call Queue", - Description: "Create a Selective Call Forwarding Rule for the designated Call Queue.\n\nA selective call forwarding rule for a call queue allows calls to be forwarded or not forwarded to the designated number, based on the defined criteria.\n\nNote that the list of existing call forward rules is available in the call queue's call forwarding settings.\n\nCreating a selective call forwarding rule for a call queue requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: The Call Forwarding Rule ID will change upon modification of the Call Forwarding Rule name.", - Method: "POST", Path: "/telephony/config/locations/{locationId}/queues/{queueId}/callForwarding/selectiveRules", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location in which the call queue exists."}, - {Name: "queueId", In: InPath, Flag: "queue-id", Usage: "Create the rule for this call queue."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Create the call queue rule for this organization."}, - }, - Body: &Body{}, -} - -var CallingCallQueueGetSelectiveForwardRule = &Operation{ - ID: "CallingCallQueueGetSelectiveForwardRule", Area: "calling", Group: "call-queue", Command: "get-selective-forward-rule", - Summary: "Get Selective Call Forwarding Rule for a Call Queue", - Description: "Retrieve a Selective Call Forwarding Rule's settings for the designated Call Queue.\n\nA selective call forwarding rule for a call queue allows calls to be forwarded or not forwarded to the designated number, based on the defined criteria.\n\nNote that the list of existing call forward rules is available in the call queue's call forwarding settings.\n\nRetrieving a selective call forwarding rule's settings for a call queue requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.\n\n**NOTE**: The Call Forwarding Rule ID will change upon modification of the Call Forwarding Rule name.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/queues/{queueId}/callForwarding/selectiveRules/{ruleId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location in which to call queue exists."}, - {Name: "queueId", In: InPath, Flag: "queue-id", Usage: "Retrieve setting for a rule for this call queue."}, - {Name: "ruleId", In: InPath, Flag: "rule-id", Usage: "Call queue rule you are retrieving settings for."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve call queue rule settings for this organization."}, - }, -} - -var CallingCallQueueUpdateSelectiveForwardRule = &Operation{ - ID: "CallingCallQueueUpdateSelectiveForwardRule", Area: "calling", Group: "call-queue", Command: "update-selective-forward-rule", - Summary: "Update a Selective Call Forwarding Rule for a Call Queue", - Description: "Update a Selective Call Forwarding Rule's settings for the designated Call Queue.\n\nA selective call forwarding rule for a call queue allows calls to be forwarded or not forwarded to the designated number, based on the defined criteria.\n\nNote that the list of existing call forward rules is available in the call queue's call forwarding settings.\n\nUpdating a selective call forwarding rule's settings for a call queue requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: The Call Forwarding Rule ID will change upon modification of the Call Forwarding Rule name.", - Method: "PUT", Path: "/telephony/config/locations/{locationId}/queues/{queueId}/callForwarding/selectiveRules/{ruleId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location in which this call queue exists."}, - {Name: "queueId", In: InPath, Flag: "queue-id", Usage: "Update settings for a rule for this call queue."}, - {Name: "ruleId", In: InPath, Flag: "rule-id", Usage: "Call queue rule you are updating settings for."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Update call queue rule settings for this organization."}, - }, - Body: &Body{}, -} - -var CallingCallQueueDeleteSelectiveForwardRule = &Operation{ - ID: "CallingCallQueueDeleteSelectiveForwardRule", Area: "calling", Group: "call-queue", Command: "delete-selective-forward-rule", - Summary: "Delete a Selective Call Forwarding Rule for a Call Queue", - Description: "Delete a Selective Call Forwarding Rule for the designated Call Queue.\n\nA selective call forwarding rule for a call queue allows calls to be forwarded or not forwarded to the designated number, based on the defined criteria.\n\nNote that the list of existing call forward rules is available in the call queue's call forwarding settings.\n\nDeleting a selective call forwarding rule for a call queue requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: The Call Forwarding Rule ID will change upon modification of the Call Forwarding Rule name.", - Method: "DELETE", Path: "/telephony/config/locations/{locationId}/queues/{queueId}/callForwarding/selectiveRules/{ruleId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location in which this call queue exists."}, - {Name: "queueId", In: InPath, Flag: "queue-id", Usage: "Delete the rule for this call queue."}, - {Name: "ruleId", In: InPath, Flag: "rule-id", Usage: "Call queue rule you are deleting."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Delete call queue rule from this organization."}, - }, -} - -var CallingCallQueueGetHolidayService = &Operation{ - ID: "CallingCallQueueGetHolidayService", Area: "calling", Group: "call-queue", Command: "get-holiday-service", - Summary: "Get Details for a Call Queue Holiday Service", - Description: "Retrieve Call Queue Holiday Service details.\n\nConfigure the call queue to route calls differently during the holidays.\n\nRetrieving call queue holiday service details requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/queues/{queueId}/holidayService", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Retrieve settings for a call queue in this location."}, - {Name: "queueId", In: InPath, Flag: "queue-id", Usage: "Retrieve settings for the call queue with this identifier."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve call queue settings from this organization."}, - }, -} - -var CallingCallQueueUpdateHolidayService = &Operation{ - ID: "CallingCallQueueUpdateHolidayService", Area: "calling", Group: "call-queue", Command: "update-holiday-service", - Summary: "Update a Call Queue Holiday Service", - Description: "Update the designated Call Queue Holiday Service.\n\nConfigure the call queue to route calls differently during the holidays.\n\nUpdating a call queue holiday service requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/locations/{locationId}/queues/{queueId}/holidayService", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location in which this call queue exists."}, - {Name: "queueId", In: InPath, Flag: "queue-id", Usage: "Update setting for the call queue with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Update call queue settings from this organization."}, - }, - Body: &Body{}, -} - -var CallingCallQueueGetNightService = &Operation{ - ID: "CallingCallQueueGetNightService", Area: "calling", Group: "call-queue", Command: "get-night-service", - Summary: "Get Details for a Call Queue Night Service", - Description: "Retrieve Call Queue Night service details.\n\nConfigure the call queue to route calls differently during the hours when the queue is not in service. This is\ndetermined by a schedule that defines the business hours of the queue.\n\nRetrieving call queue details requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/queues/{queueId}/nightService", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Retrieve settings for a call queue in this location."}, - {Name: "queueId", In: InPath, Flag: "queue-id", Usage: "Retrieve settings for the call queue night service with this identifier."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve call queue night service settings from this organization."}, - }, -} - -var CallingCallQueueUpdateNightService = &Operation{ - ID: "CallingCallQueueUpdateNightService", Area: "calling", Group: "call-queue", Command: "update-night-service", - Summary: "Update a Call Queue Night Service", - Description: "Update Call Queue Night Service details.\n\nConfigure the call queue to route calls differently during the hours when the queue is not in service. This is\ndetermined by a schedule that defines the business hours of the queue.\n\nUpdating call queue night service details requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/locations/{locationId}/queues/{queueId}/nightService", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Update settings for a call queue in this location."}, - {Name: "queueId", In: InPath, Flag: "queue-id", Usage: "Update settings for the call queue night service with this identifier."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Update call queue night service settings from this organization."}, - }, - Body: &Body{}, -} - -var CallingCallQueueGetForcedForward = &Operation{ - ID: "CallingCallQueueGetForcedForward", Area: "calling", Group: "call-queue", Command: "get-forced-forward", - Summary: "Get Details for a Call Queue Forced Forward", - Description: "Retrieve Call Queue policy Forced Forward details.\n\nThis policy allows calls to be temporarily diverted to a configured destination.\n\nRetrieving call queue Forced Forward details requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/queues/{queueId}/forcedForward", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Retrieve settings for a call queue in this location."}, - {Name: "queueId", In: InPath, Flag: "queue-id", Usage: "Retrieve settings for the call queue with this identifier."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve call queue settings from this organization."}, - }, -} - -var CallingCallQueueUpdateForcedForwardService = &Operation{ - ID: "CallingCallQueueUpdateForcedForwardService", Area: "calling", Group: "call-queue", Command: "update-forced-forward-service", - Summary: "Update a Call Queue Forced Forward Service", - Description: "Update the designated Forced Forward Service.\n\nIf the option is enabled, then incoming calls to the queue are forwarded to the configured destination. Calls that are already in the queue remain queued.\nThe policy can be configured to play an announcement prior to proceeding with the forward.\n\nUpdating a call queue Forced Forward service requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/locations/{locationId}/queues/{queueId}/forcedForward", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location in which this call queue exists."}, - {Name: "queueId", In: InPath, Flag: "queue-id", Usage: "Update setting for the call queue with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Update call queue settings from this organization."}, - }, - Body: &Body{}, -} - -var CallingCallQueueGetStranded = &Operation{ - ID: "CallingCallQueueGetStranded", Area: "calling", Group: "call-queue", Command: "get-stranded", - Summary: "Get Details for a Call Queue Stranded Calls", - Description: "Allow admin to view default/configured Stranded Calls settings.\n\nStranded-All agents logoff Policy: If the last agent staffing a queue “unjoins” the queue or signs out, then all calls in the queue become stranded.\nStranded-Unavailable Policy: This policy allows for the configuration of the processing of calls that are in a staffed queue when all agents are unavailable.\n\nRetrieving call queue Stranded Calls details requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/queues/{queueId}/strandedCalls", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Retrieve settings for a call queue in this location."}, - {Name: "queueId", In: InPath, Flag: "queue-id", Usage: "Retrieve settings for the call queue with this identifier."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve call queue settings from this organization."}, - }, -} - -var CallingCallQueueUpdateStrandedService = &Operation{ - ID: "CallingCallQueueUpdateStrandedService", Area: "calling", Group: "call-queue", Command: "update-stranded-service", - Summary: "Update a Call Queue Stranded Calls Service", - Description: "Update the designated Call Stranded Calls Service.\n\nAllow admin to modify configured Stranded Calls settings.\n\nUpdating a call queue stranded calls requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/locations/{locationId}/queues/{queueId}/strandedCalls", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location in which this call queue exists."}, - {Name: "queueId", In: InPath, Flag: "queue-id", Usage: "Update setting for the call queue with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Update call queue settings from this organization."}, - }, - Body: &Body{}, -} - -var CallingCallQueueGetPrimaryNumbers = &Operation{ - ID: "CallingCallQueueGetPrimaryNumbers", Area: "calling", Group: "call-queue", Command: "get-primary-numbers", - Summary: "Get Call Queue Primary Available Phone Numbers", - Description: "List the service and standard PSTN numbers that are available to be assigned as the call queue's primary phone number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/queues/availableNumbers", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Return the list of phone numbers for this location within the given organization. The maximum length is 36."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List numbers for this organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of phone numbers returned to this maximum count. The default is 2000."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching phone numbers. The default is 0."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - }, - Paging: &Paging{}, -} - -var CallingCallQueueGetAlternateNumbers = &Operation{ - ID: "CallingCallQueueGetAlternateNumbers", Area: "calling", Group: "call-queue", Command: "get-alternate-numbers", - Summary: "Get Call Queue Alternate Available Phone Numbers", - Description: "List the service and standard PSTN numbers that are available to be assigned as the call queue's alternate phone number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/queues/alternate/availableNumbers", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Return the list of phone numbers for this location within the given organization. The maximum length is 36."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List numbers for this organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of phone numbers returned to this maximum count. The default is 2000."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching phone numbers. The default is 0."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - }, - Paging: &Paging{}, -} - -var CallingCallQueueGetForwardAvailableNumbers = &Operation{ - ID: "CallingCallQueueGetForwardAvailableNumbers", Area: "calling", Group: "call-queue", Command: "get-forward-available-numbers", - Summary: "Get Call Queue Call Forward Available Phone Numbers", - Description: "List the service and standard PSTN numbers that are available to be assigned as the call queue's call forward number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are assigned to an owning entity.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/queues/callForwarding/availableNumbers", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Return the list of phone numbers for this location within the given organization. The maximum length is 36."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List numbers for this organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of phone numbers returned to this maximum count. The default is 2000."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching phone numbers. The default is 0."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "ownerName", In: InQuery, Flag: "owner-name", Usage: "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255."}, - {Name: "extension", In: InQuery, Flag: "extension", Usage: "Returns the list of PSTN phone numbers with the given `extension`."}, - }, - Paging: &Paging{}, -} - -var CallingCallQueueGetAvailableAgents = &Operation{ - ID: "CallingCallQueueGetAvailableAgents", Area: "calling", Group: "call-queue", Command: "get-available-agents", - Summary: "Get Call Queue Available Agents", - Description: "List all available users, workspaces, or virtual lines that can be assigned as call queue agents.\n\nAvailable agents are users (excluding users with Webex Calling Standard license), workspaces, or virtual lines that can be assigned to a call queue. \nCalls from the call queue are routed to assigned agents based on configuration. \nAn agent can be assigned to one or more call queues and can be managed by supervisors.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/queues/agents/availableAgents", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InQuery, Flag: "location-id", Usage: "The location ID of the call queue. Temporary mandatory query parameter, used for performance reasons only and not a filter."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List available agents for this organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of objects returned to this maximum count."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching objects."}, - {Name: "name", In: InQuery, Flag: "name", Usage: "Search based on name (user first and last name combination)."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Search based on number or extension."}, - {Name: "order", In: InQuery, Flag: "order", Usage: "Order the available agents according to the designated fields. Up to three comma-separated sort order fields may be specified. Available sort fields are: `userId`, `fname`, `firstname`, `lname`, `lastname`, `dn`, and `extension`. Sort order can be added together with each field using a hyphen, `-`. Available sort orders are: `asc`, and `desc`."}, - }, - Paging: &Paging{}, -} - -var CallingCallQueueListSupervisorsCustomerAssist = &Operation{ - ID: "CallingCallQueueListSupervisorsCustomerAssist", Area: "calling", Group: "call-queue", Command: "list-supervisors-customer-assist", - Summary: "Get List of Supervisors with Customer Assist", - Description: "Get list of supervisors for an organization.\n\nAgents in a call queue can be associated with a supervisor who can silently monitor, coach, barge in or to take over calls that their assigned agents are currently handling.\n\nRequires a full, location, user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/supervisors", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List the supervisors in this organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of objects returned to this maximum count."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching objects."}, - {Name: "name", In: InQuery, Flag: "name", Usage: "Only return the supervisors that match the given name."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Only return the supervisors that match the given phone number, extension, or ESN."}, - {Name: "order", In: InQuery, Flag: "order", Usage: "Sort results alphabetically by supervisor name, in ascending or descending order."}, - {Name: "hasCxEssentials", In: InQuery, Flag: "has-cx-essentials", Usage: "Returns only the list of supervisors with Customer Assist license, when `true`. Otherwise returns the list of supervisors with Customer Experience Basic license."}, - }, - Paging: &Paging{}, -} - -var CallingCallQueueCreateSupervisorCustomerAssist = &Operation{ - ID: "CallingCallQueueCreateSupervisorCustomerAssist", Area: "calling", Group: "call-queue", Command: "create-supervisor-customer-assist", - Summary: "Create a Supervisor with Customer Assist", - Description: "Create a new supervisor. The supervisor must be created with at least one agent.\n\nAgents in a call queue can be associated with a supervisor who can silently monitor, coach, barge in or to take over calls that their assigned agents are currently handling.\n\nThis operation requires a full or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/supervisors", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "The organization ID where the supervisor needs to be created."}, - {Name: "hasCxEssentials", In: InQuery, Flag: "has-cx-essentials", Usage: "Creates a Customer Assist queue supervisor, when `true`. Customer Assist queue supervisors must have a Customer Assist license."}, - }, - Body: &Body{}, -} - -var CallingCallQueueDeleteBulkSupervisors = &Operation{ - ID: "CallingCallQueueDeleteBulkSupervisors", Area: "calling", Group: "call-queue", Command: "delete-bulk-supervisors", - Summary: "Delete Bulk Supervisors", - Description: "Deletes supervisors in bulk from an organization.\n\nSupervisors are users who manage agents and who perform functions including monitoring, coaching, and more.\n\nRequires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/supervisors", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Delete supervisors in bulk for this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "supervisorIds", Flag: "supervisor-ids", Type: "[]string"}, - {Name: "deleteAll", Flag: "delete-all", Type: "bool"}, - }}, -} - -var CallingCallQueueDeleteSupervisor = &Operation{ - ID: "CallingCallQueueDeleteSupervisor", Area: "calling", Group: "call-queue", Command: "delete-supervisor", - Summary: "Delete a Supervisor", - Description: "Deletes the supervisor from an organization.\n\nSupervisors are users who manage agents and who perform functions including monitoring, coaching, and more.\n\nRequires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/supervisors/{supervisorId}", Host: HostWebex, - Params: []Param{ - {Name: "supervisorId", In: InPath, Flag: "supervisor-id", Usage: "Delete the specified supervisor."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Delete the supervisor in the specified organization."}, - }, -} - -var CallingCallQueueGetSupervisorDetailCustomerAssist = &Operation{ - ID: "CallingCallQueueGetSupervisorDetailCustomerAssist", Area: "calling", Group: "call-queue", Command: "get-supervisor-detail-customer-assist", - Summary: "Get Supervisor Detail with Customer Assist", - Description: "Get details of a specific supervisor, which includes the agents associated agents with the supervisor, in an organization.\n\nAgents in a call queue can be associated with a supervisor who can silently monitor, coach, barge in or to take over calls that their assigned agents are currently handling.\n\nThis operation requires a full, user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/supervisors/{supervisorId}", Host: HostWebex, - Params: []Param{ - {Name: "supervisorId", In: InPath, Flag: "supervisor-id", Usage: "List the agents assigned to this supervisor."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List the agents assigned to a supervisor in this organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of objects returned to this maximum count."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching objects."}, - {Name: "name", In: InQuery, Flag: "name", Usage: "Only return the agents that match the given name."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Only return agents that match the given phone number, extension, or ESN."}, - {Name: "order", In: InQuery, Flag: "order", Usage: "Sort results alphabetically by supervisor name, in ascending or descending order."}, - {Name: "hasCxEssentials", In: InQuery, Flag: "has-cx-essentials", Usage: "Must be set to `true`, to view the details of a supervisor with Customer Assist license. This can otherwise be ommited or set to `false`."}, - }, - Paging: &Paging{}, -} - -var CallingCallQueueAssignUnassignAgentsSupervisorCustomerAssist = &Operation{ - ID: "CallingCallQueueAssignUnassignAgentsSupervisorCustomerAssist", Area: "calling", Group: "call-queue", Command: "assign-unassign-agents-supervisor-customer-assist", - Summary: "Assign or Unassign Agents to Supervisor with Customer Assist", - Description: "Assign or unassign agents to the supervisor for an organization.\n\nAgents in a call queue can be associated with a supervisor who can silently monitor, coach, barge in or to take over calls that their assigned agents are currently handling.\n\nThis operation requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/supervisors/{supervisorId}", Host: HostWebex, - Params: []Param{ - {Name: "supervisorId", In: InPath, Flag: "supervisor-id", Usage: "Identifier of the supervisor to be updated."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Assign or unassign agents to a supervisor in this organization."}, - {Name: "hasCxEssentials", In: InQuery, Flag: "has-cx-essentials", Usage: "Must be set to `true` to modify a supervisor with Customer Assist license. This can otherwise be ommited or set to `false`."}, - }, - Body: &Body{}, -} - -var CallingCallQueueListAvailableSupervisorsCustomerAssist = &Operation{ - ID: "CallingCallQueueListAvailableSupervisorsCustomerAssist", Area: "calling", Group: "call-queue", Command: "list-available-supervisors-customer-assist", - Summary: "List Available Supervisors with Customer Assist", - Description: "Get list of available supervisors for an organization.\n\nAgents in a call queue can be associated with a supervisor who can silently monitor, coach, barge in or to take over calls that their assigned agents are currently handling.\n\nThis operation requires a full, user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/supervisors/availableSupervisors", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List the available supervisors in this organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of objects returned to this maximum count."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching objects."}, - {Name: "name", In: InQuery, Flag: "name", Usage: "Only return the supervisors that match the given name."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Only return the supervisors that match the given phone number, extension, or ESN."}, - {Name: "order", In: InQuery, Flag: "order", Usage: "Sort results alphabetically by supervisor name, in ascending or descending order."}, - {Name: "hasCxEssentials", In: InQuery, Flag: "has-cx-essentials", Usage: "Returns only the list of available supervisors with Customer Assist license, when `true`. When ommited or set to 'false', will return the list of available supervisors with Customer Experience Basic license."}, - }, - Paging: &Paging{}, -} - -var CallingCallQueueListAvailableAgentsCustomerAssist = &Operation{ - ID: "CallingCallQueueListAvailableAgentsCustomerAssist", Area: "calling", Group: "call-queue", Command: "list-available-agents-customer-assist", - Summary: "List Available Agents with Customer Assist", - Description: "Get list of available agents for an organization.\n\nAgents in a call queue can be associated with a supervisor who can silently monitor, coach, barge in or to take over calls that their assigned agents are currently handling.\n\nThis operation requires a full, user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/supervisors/availableAgents", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List of available agents in a supervisor's list for this organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of objects returned to this maximum count."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching objects."}, - {Name: "name", In: InQuery, Flag: "name", Usage: "Returns only the agents that match the given name."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Returns only the agents that match the phone number, extension, or ESN."}, - {Name: "order", In: InQuery, Flag: "order", Usage: "Sort results alphabetically by supervisor name, in ascending or descending order."}, - {Name: "hasCxEssentials", In: InQuery, Flag: "has-cx-essentials", Usage: "Returns only the list of available agents with Customer Assist license, when `true`. When ommited or set to `false`, will return the list of available agents with Customer Experience Basic license."}, - }, - Paging: &Paging{}, -} - -var CallingCallQueueListAgentsCustomerAssist = &Operation{ - ID: "CallingCallQueueListAgentsCustomerAssist", Area: "calling", Group: "call-queue", Command: "list-agents-customer-assist", - Summary: "Read the List of Call Queue Agents with Customer Assist", - Description: "List all Call Queues Agents for the organization.\n\nAgents can be users, workplace or virtual lines assigned to a call queue. Calls from the call queue are routed to agents based on configuration. \nAn agent can be assigned to one or more call queues and can be managed by supervisors.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.\n\n**Note**: The decoded value of the agent's `id`, and the `type` returned in the response, are always returned as `PEOPLE`, even when the agent is a workspace or virtual line. This will be addressed in a future release.", - Method: "GET", Path: "/telephony/config/queues/agents", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List call queues agents in this organization."}, - {Name: "locationId", In: InQuery, Flag: "location-id", Usage: "Return only the call queue agents in this location."}, - {Name: "queueId", In: InQuery, Flag: "queue-id", Usage: "Only return call queue agents with the matching queue ID."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of objects returned to this maximum count."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching objects."}, - {Name: "name", In: InQuery, Flag: "name", Usage: "Returns only the list of call queue agents that match the given name."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Returns only the list of call queue agents that match the given phone number or extension."}, - {Name: "joinEnabled", In: InQuery, Flag: "join-enabled", Usage: "Returns only the list of call queue agents that match the given `joinEnabled` value."}, - {Name: "hasCxEssentials", In: InQuery, Flag: "has-cx-essentials", Usage: "Returns only the list of call queues with Customer Assist license when `true`, otherwise returns the list of Customer Experience Basic call queues."}, - {Name: "order", In: InQuery, Flag: "order", Usage: "Sort results alphabetically by call queue agent's name, in ascending or descending order."}, - }, - Paging: &Paging{}, -} - -var CallingCallQueueGetAgentCustomerAssist = &Operation{ - ID: "CallingCallQueueGetAgentCustomerAssist", Area: "calling", Group: "call-queue", Command: "get-agent-customer-assist", - Summary: "Get Details for a Call Queue Agent with Customer Assist", - Description: "Retrieve details of a particular Call queue agent based on the agent ID.\n\nAgents can be users, workplace or virtual lines assigned to a call queue. Calls from the call queue are routed to agents based on configuration. \nAn agent can be assigned to one or more call queues and can be managed by supervisors.\n\nRetrieving a call queue agent's details require a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.\n\n**Note**: The agent's `type` returned in the response and in the decoded value of the agent's `id`, is always of type `PEOPLE`, even if the agent is a workspace or virtual line. This` will be corrected in a future release.", - Method: "GET", Path: "/telephony/config/queues/agents/{id}", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "Retrieve call queue agents with this identifier."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve call queue agents from this organization."}, - {Name: "hasCxEssentials", In: InQuery, Flag: "has-cx-essentials", Usage: "Must be set to `true` to view the details of an agent with Customer Assist license. This can otherwise be ommited or set to `false`."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of objects returned to this maximum count."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching objects."}, - }, - Paging: &Paging{}, -} - -var CallingCallQueueUpdateAgentSettingsOneMoreCustomerAssist = &Operation{ - ID: "CallingCallQueueUpdateAgentSettingsOneMoreCustomerAssist", Area: "calling", Group: "call-queue", Command: "update-agent-settings-one-more-customer-assist", - Summary: "Update an Agent's Settings of One or More Call Queues with Customer Assist", - Description: "Modify an agent's call queue settings for an organization.\n\nCalls from the call queue are routed to agents based on configuration. \nAn agent can be assigned to one or more call queues and can be managed by supervisors.\n\nThis operation requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/queues/agents/{id}/settings", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "Identifier of the agent to be updated."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Update the settings of an agent in this organization."}, - {Name: "hasCxEssentials", In: InQuery, Flag: "has-cx-essentials", Usage: "Must be set to `true` to modify an agent that has Customer Assist license. This can otherwise be ommited or set to `false`."}, - }, - Body: &Body{}, -} - -var CallingCallQueueSwitchModeForward = &Operation{ - ID: "CallingCallQueueSwitchModeForward", Area: "calling", Group: "call-queue", Command: "switch-mode-forward", - Summary: "Switch Mode for Call Forwarding Settings for a Call Queue", - Description: "Switches the current operating mode of the `Call Queue` to the mode as per normal operations.\n\nOperating modes allow call forwarding to be configured based on predefined schedules, enabling different routing behaviors during business hours, after hours, or holidays.\n\nSwitching operating mode for a `call queue` requires a full, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/locations/{locationId}/queues/{queueId}/callForwarding/actions/switchMode/invoke", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "`Location` in which this `call queue` exists."}, - {Name: "queueId", In: InPath, Flag: "queue-id", Usage: "Switch operating mode to normal operations for this `call queue`."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Switch operating mode as per normal operations for the `call queue` from this organization."}, - }, - Body: &Body{}, -} - -var CallingCallQueueGetPlaylistUsage = &Operation{ - ID: "CallingCallQueueGetPlaylistUsage", Area: "calling", Group: "call-queue", Command: "get-playlist-usage", - Summary: "Get Playlist Usage", - Method: "GET", Path: "/telephony/config/announcements/playlists/{playListId}/usage", Host: HostWebex, - Params: []Param{ - {Name: "playListId", In: InPath, Flag: "play-list-id", Usage: "Unique identifier of the playlist."}, - {Name: "playlistUsageType", In: InQuery, Flag: "playlist-usage-type", Usage: "Filter usage by type."}, - }, -} - -var CallingCallRecordingGet = &Operation{ - ID: "CallingCallRecordingGet", Area: "calling", Group: "call-recording", Command: "get", - Summary: "Get Call Recording Settings", - Description: "Retrieve call recording settings for the organization.\n\nThe Call Recording feature enables authorized agents to record any active call that Webex Contact Center manages.\n\nRetrieving call recording settings requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/callRecording", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve call recording settings from this organization."}, - }, -} - -var CallingCallRecordingUpdate = &Operation{ - ID: "CallingCallRecordingUpdate", Area: "calling", Group: "call-recording", Command: "update", - Summary: "Update Call Recording Settings", - Description: "Update call recording settings for the organization.\n\nThe Call Recording feature enables authorized agents to record any active call that Webex Contact Center manages.\n\nUpdating call recording settings requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: This API is for Cisco partners only.", - Method: "PUT", Path: "/telephony/config/callRecording", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve call recording settings from this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "enabled", Flag: "enabled", Type: "bool"}, - }}, -} - -var CallingCallRecordingGetTermsSettings = &Operation{ - ID: "CallingCallRecordingGetTermsSettings", Area: "calling", Group: "call-recording", Command: "get-terms-settings", - Summary: "Get Call Recording Terms Of Service Settings", - Description: "Retrieve call recording terms of service settings for the organization.\n\nThe Call Recording feature enables authorized agents to record any active call that Webex Contact Center manages.\n\nRetrieving call recording terms of service settings requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/callRecording/vendors/{vendorId}/termsOfService", Host: HostWebex, - Params: []Param{ - {Name: "vendorId", In: InPath, Flag: "vendor-id", Usage: "Retrieve call recording terms of service details for the given vendor."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve call recording terms of service details from this organization."}, - }, -} - -var CallingCallRecordingUpdateTermsSettings = &Operation{ - ID: "CallingCallRecordingUpdateTermsSettings", Area: "calling", Group: "call-recording", Command: "update-terms-settings", - Summary: "Update Call Recording Terms Of Service Settings", - Description: "Update call recording terms of service settings for the given vendor.\n\nThe Call Recording feature enables authorized agents to record any active call that Webex Contact Center manages.\n\nUpdating call recording terms of service settings requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/callRecording/vendors/{vendorId}/termsOfService", Host: HostWebex, - Params: []Param{ - {Name: "vendorId", In: InPath, Flag: "vendor-id", Usage: "Update call recording terms of service settings for the given vendor."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Update call recording terms of service settings from this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "termsOfServiceEnabled", Flag: "terms-of-service-enabled", Type: "bool"}, - }}, -} - -var CallingCallRecordingGetOrgComplianceAnnouncement = &Operation{ - ID: "CallingCallRecordingGetOrgComplianceAnnouncement", Area: "calling", Group: "call-recording", Command: "get-org-compliance-announcement", - Summary: "Get details for the organization Compliance Announcement Setting", - Description: "Retrieve the organization compliance announcement settings.\n\nThe Compliance Announcement feature interacts with the Call Recording feature, specifically with the playback of the start/stop announcement. When the compliance announcement is played to the PSTN party, and the PSTN party is connected to a party with call recording enabled, then the start/stop announcement is inhibited.\n\nRetrieving organization compliance announcement setting requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/callRecording/complianceAnnouncement", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve compliance announcement setting from this organization."}, - }, -} - -var CallingCallRecordingUpdateOrgComplianceAnnouncement = &Operation{ - ID: "CallingCallRecordingUpdateOrgComplianceAnnouncement", Area: "calling", Group: "call-recording", Command: "update-org-compliance-announcement", - Summary: "Update the organization Compliance Announcement", - Description: "Update the organization compliance announcement.\n\nThe Compliance Announcement feature interacts with the Call Recording feature, specifically with the playback of the start/stop announcement. When the compliance announcement is played to the PSTN party, and the PSTN party is connected to a party with call recording enabled, then the start/stop announcement is inhibited.\n\nUpdating the organization compliance announcement requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/callRecording/complianceAnnouncement", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Update the compliance announcement setting from this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "inboundPSTNCallsEnabled", Flag: "inbound-pstncalls-enabled", Type: "bool"}, - {Name: "outboundPSTNCallsEnabled", Flag: "outbound-pstncalls-enabled", Type: "bool"}, - {Name: "outboundPSTNCallsDelayEnabled", Flag: "outbound-pstncalls-delay-enabled", Type: "bool"}, - {Name: "delayInSeconds", Flag: "delay-in-seconds", Type: "int64"}, - }}, -} - -var CallingCallRecordingGetLocationComplianceAnnouncement = &Operation{ - ID: "CallingCallRecordingGetLocationComplianceAnnouncement", Area: "calling", Group: "call-recording", Command: "get-location-compliance-announcement", - Summary: "Get details for the Location Compliance Announcement Setting", - Description: "Retrieve the location compliance announcement settings.\n\nThe Compliance Announcement feature interacts with the Call Recording feature, specifically with the playback of the start/stop announcement. When the compliance announcement is played to the PSTN party, and the PSTN party is connected to a party with call recording enabled, then the start/stop announcement is inhibited.\n\nRetrieving location compliance announcement setting requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/callRecording/complianceAnnouncement", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Retrieve compliance announcement settings for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve compliance announcement setting from this organization."}, - }, -} - -var CallingCallRecordingUpdateLocationComplianceAnnouncement = &Operation{ - ID: "CallingCallRecordingUpdateLocationComplianceAnnouncement", Area: "calling", Group: "call-recording", Command: "update-location-compliance-announcement", - Summary: "Update the Location Compliance Announcement", - Description: "Update the location compliance announcement.\n\nThe Compliance Announcement feature interacts with the Call Recording feature, specifically with the playback of the start/stop announcement. When the compliance announcement is played to the PSTN party, and the PSTN party is connected to a party with call recording enabled, then the start/stop announcement is inhibited.\n\nUpdating the location compliance announcement requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/locations/{locationId}/callRecording/complianceAnnouncement", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Update the compliance announcement settings for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Update the compliance announcement setting from this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "inboundPSTNCallsEnabled", Flag: "inbound-pstncalls-enabled", Type: "bool"}, - {Name: "useOrgSettingsEnabled", Flag: "use-org-settings-enabled", Type: "bool"}, - {Name: "outboundPSTNCallsEnabled", Flag: "outbound-pstncalls-enabled", Type: "bool"}, - {Name: "outboundPSTNCallsDelayEnabled", Flag: "outbound-pstncalls-delay-enabled", Type: "bool"}, - {Name: "delayInSeconds", Flag: "delay-in-seconds", Type: "int64"}, - }}, -} - -var CallingCallRecordingGetRegions = &Operation{ - ID: "CallingCallRecordingGetRegions", Area: "calling", Group: "call-recording", Command: "get-regions", - Summary: "Get Call Recording Regions", - Description: "Retrieve all the call recording regions that are available for an organization.\n\nThe Call Recording feature supports multiple third-party call recording providers, or vendors, to capture and manage call recordings. An organization is configured with an overall provider, but locations can be configured to use a different vendor than the overall organization default.\n\nRequires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/callRecording/regions", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve call recording regions for this organization."}, - }, -} - -var CallingCallRecordingGetVendorUsers = &Operation{ - ID: "CallingCallRecordingGetVendorUsers", Area: "calling", Group: "call-recording", Command: "get-vendor-users", - Summary: "Get Call Recording Vendor Users", - Description: "Retrieve call recording vendor users of an organization. This API is used to get the list of users who are assigned to the default call-recording vendor of the organization.\n\nThe Call Recording feature supports multiple third-party call recording providers, or vendors, to capture and manage call recordings. An organization is configured with an overall provider, but locations can be configured to use a different vendor than the overall organization default.\n\nRequires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/callRecording/vendorUsers", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve call recording vendor users for this organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of vendor users returned to this maximum count. The default is 2000."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching objects. The default is 0."}, - {Name: "standardUserOnly", In: InQuery, Flag: "standard-user-only", Usage: "If true, results only include Webex Calling standard users."}, - }, - Paging: &Paging{}, -} - -var CallingCallRecordingUpdateVendorLocation = &Operation{ - ID: "CallingCallRecordingUpdateVendorLocation", Area: "calling", Group: "call-recording", Command: "update-vendor-location", - Summary: "Set Call Recording Vendor for a Location", - Description: "Assign a call recording vendor to a location of an organization. Response will be `204` if the changes can be applied immediatley otherwise `200` with a job ID is returned.\n\nThe Call Recording feature supports multiple third-party call recording providers, or vendors, to capture and manage call recordings. An organization is configured with an overall provider, but locations can be configured to use a different vendor than the overall organization default.\n\nRequires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/locations/{locationId}/callRecording/vendor", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Update the call recording vendor for this location"}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Update the call recording vendor for this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "id", Flag: "id", Type: "string"}, - {Name: "orgDefaultEnabled", Flag: "org-default-enabled", Type: "bool"}, - {Name: "storageRegion", Flag: "storage-region", Type: "string"}, - {Name: "orgStorageRegionEnabled", Flag: "org-storage-region-enabled", Type: "bool"}, - {Name: "failureBehavior", Flag: "failure-behavior", Type: "string"}, - {Name: "orgFailureBehaviorEnabled", Flag: "org-failure-behavior-enabled", Type: "bool"}, - }}, -} - -var CallingCallRecordingGetLocationVendors = &Operation{ - ID: "CallingCallRecordingGetLocationVendors", Area: "calling", Group: "call-recording", Command: "get-location-vendors", - Summary: "Get Location Call Recording Vendors", - Description: "Retrieve details of the call recording vendor that the location is assigned and also a list of vendors.\n\nThe Call Recording feature supports multiple third-party call recording providers, or vendors, to capture and manage call recordings. An organization is configured with an overall provider, but locations can be configured to use a different vendor than the overall organization default.\n\nRequires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/callRecording/vendors", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Retrieve vendor details for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve vendor details for this organization."}, - }, -} - -var CallingCallRecordingGetVendorUsersLocation = &Operation{ - ID: "CallingCallRecordingGetVendorUsersLocation", Area: "calling", Group: "call-recording", Command: "get-vendor-users-location", - Summary: "Get Call Recording Vendor Users for a Location", - Description: "Retrieve call recording vendor users of a location. This API is used to get the list of users assigned to the call recording vendor of the location.\n\nThe Call Recording feature supports multiple third-party call recording providers, or vendors, to capture and manage call recordings. An organization is configured with an overall provider, but locations can be configured to use a different vendor than the overall organization default.\n\nRequires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/callRecording/vendorUsers", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Retrieve vendor users for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve vendor users for this organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of vendor users returned to this maximum count. The default is 2000."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching objects. The default is 0."}, - {Name: "standardUserOnly", In: InQuery, Flag: "standard-user-only", Usage: "If true, results only include Webex Calling standard users."}, - }, - Paging: &Paging{}, -} - -var CallingCallRecordingListJobs = &Operation{ - ID: "CallingCallRecordingListJobs", Area: "calling", Group: "call-recording", Command: "list-jobs", - Summary: "List Call Recording Jobs", - Description: "Get the list of all call recording jobs in an organization.\n\nThe Call Recording feature supports multiple third-party call recording providers, or vendors, to capture and manage call recordings. An organization is configured with an overall provider, but locations can be configured to use a different vendor than the overall organization default.\n\nRequires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/jobs/callRecording", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List call recording jobs in this organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of jobs returned to this maximum count. The default is 50."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching objects. The default is 0."}, - }, - Paging: &Paging{}, -} - -var CallingCallRecordingGetJobStatusJob = &Operation{ - ID: "CallingCallRecordingGetJobStatusJob", Area: "calling", Group: "call-recording", Command: "get-job-status-job", - Summary: "Get the Job Status of a Call Recording Job", - Description: "Get the details of a call recording job by its job ID.\n\nThe Call Recording feature supports multiple third-party call recording providers, or vendors, to capture and manage call recordings. An organization is configured with an overall provider, but locations can be configured to use a different vendor than the overall organization default.\n\nRequires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/jobs/callRecording/{jobId}", Host: HostWebex, - Params: []Param{ - {Name: "jobId", In: InPath, Flag: "job-id", Usage: "Retrieve job status for this `jobId`."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve job status in this organization."}, - }, -} - -var CallingCallRecordingGetJobErrorsJob = &Operation{ - ID: "CallingCallRecordingGetJobErrorsJob", Area: "calling", Group: "call-recording", Command: "get-job-errors-job", - Summary: "Get Job Errors for a Call Recording Job", - Description: "Get errors for a call recording job in an organization.\n\nThe Call Recording feature supports multiple third-party call recording providers, or vendors, to capture and manage call recordings. An organization is configured with an overall provider, but locations can be configured to use a different vendor than the overall organization default.\n\nRequires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/jobs/callRecording/{jobId}/errors", Host: HostWebex, - Params: []Param{ - {Name: "jobId", In: InPath, Flag: "job-id", Usage: "Retrieve job errors for this job."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve job errors for a call recording job in this organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of errors returned to this maximum count. The default is 50."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, -} - -var CallingCallRecordingGetOrgVendors = &Operation{ - ID: "CallingCallRecordingGetOrgVendors", Area: "calling", Group: "call-recording", Command: "get-org-vendors", - Summary: "Get Organization Call Recording Vendors", - Description: "Returns what the current vendor is as well as a list of all the available vendors.\n\nThe Call Recording feature supports multiple third-party call recording providers, or vendors, to capture and manage call recordings. An organization is configured with an overall provider, but locations can be configured to use a different vendor than the overall organization default.\n\nRequires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/callRecording/vendors", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve call recording settings from this organization."}, - }, -} - -var CallingCallRecordingUpdateOrgVendor = &Operation{ - ID: "CallingCallRecordingUpdateOrgVendor", Area: "calling", Group: "call-recording", Command: "update-org-vendor", - Summary: "Set Organization Call Recording Vendor", - Description: "Returns a Job ID that you can use to get the status of the job.\n\nThe Call Recording feature supports multiple third-party call recording providers, or vendors, to capture and manage call recordings. An organization is configured with an overall provider, but locations can be configured to use a different vendor than the overall organization default.\n\nRequires a full administrator auth token with a scope of `spark-admin:telephony_config_write`, `spark-admin:telephony_config_read`, and `spark-admin:people_write`.", - Method: "PUT", Path: "/telephony/config/callRecording/vendor", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Modify call recording settings from this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "vendorId", Flag: "vendor-id", Type: "string"}, - {Name: "storageRegion", Flag: "storage-region", Type: "string"}, - {Name: "failureBehavior", Flag: "failure-behavior", Type: "string"}, - }}, -} - -var CallingCustomerExperienceEssentialsListWrapUpReasons = &Operation{ - ID: "CallingCustomerExperienceEssentialsListWrapUpReasons", Area: "calling", Group: "customer-experience-essentials", Command: "list-wrap-up-reasons", - Summary: "List Wrap Up Reasons", - Description: "Return the list of wrap-up reasons configured for a customer.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues. Upon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue. Admins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nRetrieving the list of wrap-up reasons requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/cxEssentials/wrapup/reasons", Host: HostWebex, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var CallingCustomerExperienceEssentialsCreateWrapUpReason = &Operation{ - ID: "CallingCustomerExperienceEssentialsCreateWrapUpReason", Area: "calling", Group: "customer-experience-essentials", Command: "create-wrap-up-reason", - Summary: "Create Wrap Up Reason", - Description: "Create a wrap-up reason.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues.\nUpon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue.\nAdmins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nCreating a wrap-up reason requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/cxEssentials/wrapup/reasons", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "name", Flag: "name", Type: "string"}, - {Name: "description", Flag: "description", Type: "string"}, - {Name: "queues", Flag: "queues", Type: "[]string"}, - {Name: "assignAllQueuesEnabled", Flag: "assign-all-queues-enabled", Type: "bool"}, - }}, -} - -var CallingCustomerExperienceEssentialsGetWrapUpReason = &Operation{ - ID: "CallingCustomerExperienceEssentialsGetWrapUpReason", Area: "calling", Group: "customer-experience-essentials", Command: "get-wrap-up-reason", - Summary: "Read Wrap Up Reason", - Description: "Return the wrap-up reason by ID.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues.\nUpon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue.\nAdmins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nRetrieving the wrap-up reason by ID requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/cxEssentials/wrapup/reasons/{wrapupReasonId}", Host: HostWebex, - Params: []Param{ - {Name: "wrapupReasonId", In: InPath, Flag: "wrapup-reason-id", Usage: "Wrap-up reason ID."}, - }, -} - -var CallingCustomerExperienceEssentialsUpdateWrapUpReason = &Operation{ - ID: "CallingCustomerExperienceEssentialsUpdateWrapUpReason", Area: "calling", Group: "customer-experience-essentials", Command: "update-wrap-up-reason", - Summary: "Update Wrap Up Reason", - Description: "Modify a wrap-up reason.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues.\nUpon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue.\nAdmins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nModifying a wrap-up reason requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/cxEssentials/wrapup/reasons/{wrapupReasonId}", Host: HostWebex, - Params: []Param{ - {Name: "wrapupReasonId", In: InPath, Flag: "wrapup-reason-id", Usage: "Wrap-up reason ID."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "name", Flag: "name", Type: "string"}, - {Name: "description", Flag: "description", Type: "string"}, - {Name: "queuesToAssign", Flag: "queues-to-assign", Type: "[]string"}, - {Name: "queuesToUnassign", Flag: "queues-to-unassign", Type: "[]string"}, - {Name: "assignAllQueuesEnabled", Flag: "assign-all-queues-enabled", Type: "bool"}, - {Name: "unassignAllQueuesEnabled", Flag: "unassign-all-queues-enabled", Type: "bool"}, - }}, -} - -var CallingCustomerExperienceEssentialsDeleteWrapUpReason = &Operation{ - ID: "CallingCustomerExperienceEssentialsDeleteWrapUpReason", Area: "calling", Group: "customer-experience-essentials", Command: "delete-wrap-up-reason", - Summary: "Delete Wrap Up Reason", - Description: "Delete a wrap-up reason.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues.\nUpon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue.\nAdmins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nDeleting the wrap-up reason requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/cxEssentials/wrapup/reasons/{wrapupReasonId}", Host: HostWebex, - Params: []Param{ - {Name: "wrapupReasonId", In: InPath, Flag: "wrapup-reason-id", Usage: "Wrap-up reason ID."}, - }, -} - -var CallingCustomerExperienceEssentialsValidateWrapUpReason = &Operation{ - ID: "CallingCustomerExperienceEssentialsValidateWrapUpReason", Area: "calling", Group: "customer-experience-essentials", Command: "validate-wrap-up-reason", - Summary: "Validate Wrap Up Reason", - Description: "Validate the wrap-up reason name.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues.\nUpon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue.\nAdmins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nValidating the wrap-up reason name requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/cxEssentials/wrapup/reasons/actions/validateName/invoke", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "name", Flag: "name", Type: "string"}, - }}, -} - -var CallingCustomerExperienceEssentialsGetAvailableQueues = &Operation{ - ID: "CallingCustomerExperienceEssentialsGetAvailableQueues", Area: "calling", Group: "customer-experience-essentials", Command: "get-available-queues", - Summary: "Read Available Queues", - Description: "Return the available queues for a wrap-up reason.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues.\nUpon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue.\nAdmins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nRetrieving the available queues for a wrap-up reason requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/cxEssentials/wrapup/reasons/{wrapupReasonId}/availableQueues", Host: HostWebex, - Params: []Param{ - {Name: "wrapupReasonId", In: InPath, Flag: "wrapup-reason-id", Usage: "Wrap-up reason ID."}, - }, -} - -var CallingCustomerExperienceEssentialsGetWrapUpReasonSettings = &Operation{ - ID: "CallingCustomerExperienceEssentialsGetWrapUpReasonSettings", Area: "calling", Group: "customer-experience-essentials", Command: "get-wrap-up-reason-settings", - Summary: "Read Wrap Up Reason Settings", - Description: "Return a wrap-up reason by location ID and queue ID.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues.\nUpon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue.\nAdmins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nRetrieving the wrap-up reason by location ID and queue ID requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/cxEssentials/locations/{locationId}/queues/{queueId}/wrapup/settings", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "The location ID."}, - {Name: "queueId", In: InPath, Flag: "queue-id", Usage: "The queue ID."}, - }, -} - -var CallingCustomerExperienceEssentialsUpdateWrapUpReasonSettings = &Operation{ - ID: "CallingCustomerExperienceEssentialsUpdateWrapUpReasonSettings", Area: "calling", Group: "customer-experience-essentials", Command: "update-wrap-up-reason-settings", - Summary: "Update Wrap Up Reason Settings", - Description: "Modify a wrap-up reason by location ID and queue ID.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues.\nUpon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue.\nAdmins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nModifying a wrap-up reason by location ID and queue ID requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/cxEssentials/locations/{locationId}/queues/{queueId}/wrapup/settings", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "The location ID."}, - {Name: "queueId", In: InPath, Flag: "queue-id", Usage: "The queue ID."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "wrapupReasons", Flag: "wrapup-reasons", Type: "[]string"}, - {Name: "defaultWrapupReasonId", Flag: "default-wrapup-reason-id", Type: "string"}, - {Name: "wrapupTimerEnabled", Flag: "wrapup-timer-enabled", Type: "bool"}, - {Name: "wrapupTimer", Flag: "wrapup-timer", Type: "int64"}, - }}, -} - -var CallingCustomerExperienceEssentialsGetScreenPopConfiguration = &Operation{ - ID: "CallingCustomerExperienceEssentialsGetScreenPopConfiguration", Area: "calling", Group: "customer-experience-essentials", Command: "get-screen-pop-configuration", - Summary: "Read Screen Pop Configuration", - Description: "Returns the screen pop configuration for a call queue in a location.\n\nScreen pop lets agents view customer-related info in a pop-up window.\n\nRetrieving the screen pop configuration requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/queues/{queueId}/cxEssentials/screenPop", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "The location ID where the call queue resides."}, - {Name: "queueId", In: InPath, Flag: "queue-id", Usage: "The call queue ID for which screen pop configuration is modified."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "The organization ID of the customer or partner's organization."}, - }, -} - -var CallingCustomerExperienceEssentialsUpdateScreenPopConfiguration = &Operation{ - ID: "CallingCustomerExperienceEssentialsUpdateScreenPopConfiguration", Area: "calling", Group: "customer-experience-essentials", Command: "update-screen-pop-configuration", - Summary: "Update Screen Pop Configuration", - Description: "Modifies the screen pop configuration for a call queue in a location.\n\nScreen pop lets agents view customer-related info in a pop-up window.\n\nModifying the screen pop configuration requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/locations/{locationId}/queues/{queueId}/cxEssentials/screenPop", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "The location ID where the call queue resides."}, - {Name: "queueId", In: InPath, Flag: "queue-id", Usage: "The call queue ID for which screen pop configuration is modified."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "The organization ID of the customer or partner's organization."}, - }, - Body: &Body{}, -} - -var CallingCustomerExperienceEssentialsListAvailableAgents = &Operation{ - ID: "CallingCustomerExperienceEssentialsListAvailableAgents", Area: "calling", Group: "customer-experience-essentials", Command: "list-available-agents", - Summary: "List Available Agents", - Description: "Return a list of available agents with Customer Experience Essentials license in a location.\n\nRetrieving the list of available agents requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/cxEssentials/agents/availableAgents", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Retrieve the list of avaiilable agents in this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "The organization ID of the customer or partner's organization."}, - {Name: "hasCxEssentials", In: InQuery, Flag: "has-cx-essentials", Usage: "Returns only the list of available agents with Customer Experience Essentials license when `true`, otherwise returns the list of available agents with Customer Experience Basic license."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var CallingHotDeskingSignInViaVoicePortalLocation = &Operation{ - ID: "CallingHotDeskingSignInViaVoicePortalLocation", Area: "calling", Group: "hot-desking-sign-in-via-voice-portal", Command: "location", - Summary: "Voice Portal Hot desking sign in details for a location", - Description: "Get the Hot desking sign in details for a location.\n\nThis requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/features/hotDesking", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location in which the hot desking sign in resides."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingHotDeskingSignInViaVoicePortalUpdateLocation = &Operation{ - ID: "CallingHotDeskingSignInViaVoicePortalUpdateLocation", Area: "calling", Group: "hot-desking-sign-in-via-voice-portal", Command: "update-location", - Summary: "Update Voice Portal Hot desking sign in details for a location", - Description: "Update the Hot desking sign in details for a location.\n\nThis requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/locations/{locationId}/features/hotDesking", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location in which the hot desking sign in resides."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "voicePortalHotDeskSignInEnabled", Flag: "voice-portal-hot-desk-sign-in-enabled", Type: "bool"}, - }}, -} - -var CallingHotDeskingSignInViaVoicePortalUser = &Operation{ - ID: "CallingHotDeskingSignInViaVoicePortalUser", Area: "calling", Group: "hot-desking-sign-in-via-voice-portal", Command: "user", - Summary: "Voice Portal Hot desking sign in details for a user", - Description: "Get the Hot desking sign in details for a user.\n\nThis requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/{personId}/features/hotDesking/guest", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "ID of the person associated with the hot desking details."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingHotDeskingSignInViaVoicePortalUpdateUser = &Operation{ - ID: "CallingHotDeskingSignInViaVoicePortalUpdateUser", Area: "calling", Group: "hot-desking-sign-in-via-voice-portal", Command: "update-user", - Summary: "Update Voice Portal Hot desking sign in details for a user", - Description: "Update the Hot desking sign in details for a user.\n\nThis requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/{personId}/features/hotDesking/guest", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "ID of the person associated with the hot desking details."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "voicePortalHotDeskSignInEnabled", Flag: "voice-portal-hot-desk-sign-in-enabled", Type: "bool"}, - }}, -} - -var CallingHuntGroupList = &Operation{ - ID: "CallingHuntGroupList", Area: "calling", Group: "hunt-group", Command: "list", - Summary: "Read the List of Hunt Groups", - Description: "List all calling Hunt Groups for the organization.\n\nHunt groups can route incoming calls to a group of people or workspaces. You can even configure a pattern to route to a whole group.\n\nRetrieving this list requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/huntGroups", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List hunt groups for this organization."}, - {Name: "locationId", In: InQuery, Flag: "location-id", Usage: "Only return hunt groups with matching location ID."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of objects returned to this maximum count."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching objects."}, - {Name: "name", In: InQuery, Flag: "name", Usage: "Only return hunt groups with the matching name."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Only return hunt groups with the matching primary phone number or extension."}, - }, - Paging: &Paging{}, -} - -var CallingHuntGroupCreate = &Operation{ - ID: "CallingHuntGroupCreate", Area: "calling", Group: "hunt-group", Command: "create", - Summary: "Create a Hunt Group", - Description: "Create new Hunt Groups for the given location.\n\nHunt groups can route incoming calls to a group of people, workspaces or virtual lines. You can even configure a pattern to route to a whole group.\n\nCreating a hunt group requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/locations/{locationId}/huntGroups", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Create the hunt group for the given location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Create the hunt group for this organization."}, - }, - Body: &Body{}, -} - -var CallingHuntGroupDelete = &Operation{ - ID: "CallingHuntGroupDelete", Area: "calling", Group: "hunt-group", Command: "delete", - Summary: "Delete a Hunt Group", - Description: "Delete the designated Hunt Group.\n\nHunt groups can route incoming calls to a group of people or workspaces. You can even configure a pattern to route to a whole group.\n\nDeleting a hunt group requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/locations/{locationId}/huntGroups/{huntGroupId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location from which to delete a hunt group."}, - {Name: "huntGroupId", In: InPath, Flag: "hunt-group-id", Usage: "Delete the hunt group with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Delete the hunt group from this organization."}, - }, -} - -var CallingHuntGroupGet = &Operation{ - ID: "CallingHuntGroupGet", Area: "calling", Group: "hunt-group", Command: "get", - Summary: "Get Details for a Hunt Group", - Description: "Retrieve Hunt Group details.\n\nHunt groups can route incoming calls to a group of people, workspaces or virtual lines. You can even configure a pattern to route to a whole group.\n\nRetrieving hunt group details requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/huntGroups/{huntGroupId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Retrieve settings for a hunt group in this location."}, - {Name: "huntGroupId", In: InPath, Flag: "hunt-group-id", Usage: "Retrieve settings for the hunt group with this identifier."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve hunt group settings from this organization."}, - }, -} - -var CallingHuntGroupUpdate = &Operation{ - ID: "CallingHuntGroupUpdate", Area: "calling", Group: "hunt-group", Command: "update", - Summary: "Update a Hunt Group", - Description: "Update the designated Hunt Group.\n\nHunt groups can route incoming calls to a group of people, workspaces or virtual lines. You can even configure a pattern to route to a whole group.\n\nUpdating a hunt group requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/locations/{locationId}/huntGroups/{huntGroupId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Update the hunt group for this location."}, - {Name: "huntGroupId", In: InPath, Flag: "hunt-group-id", Usage: "Update settings for the hunt group with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Update hunt group settings from this organization."}, - }, - Body: &Body{}, -} - -var CallingHuntGroupGetCallForward = &Operation{ - ID: "CallingHuntGroupGetCallForward", Area: "calling", Group: "hunt-group", Command: "get-call-forward", - Summary: "Get Call Forwarding Settings for a Hunt Group", - Description: "Retrieve Call Forwarding settings for the specified Hunt Group including the list of call forwarding rules.\n\nThe call forwarding feature allows you to direct all incoming calls based on specific criteria that you define.\nBelow are the available options for configuring your call forwarding:\n1. Always forward calls to a designated number.\n2. Forward calls to a designated number based on certain criteria.\n3. Forward calls using different modes.\n\nRetrieving call forwarding settings for a hunt group requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/huntGroups/{huntGroupId}/callForwarding", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location in which this hunt group exists."}, - {Name: "huntGroupId", In: InPath, Flag: "hunt-group-id", Usage: "Read the call forwarding settings for this hunt group."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve hunt group forwarding settings from this organization."}, - }, -} - -var CallingHuntGroupUpdateCallForward = &Operation{ - ID: "CallingHuntGroupUpdateCallForward", Area: "calling", Group: "hunt-group", Command: "update-call-forward", - Summary: "Update Call Forwarding Settings for a Hunt Group", - Description: "Update Call Forwarding settings for the specified Hunt Group.\n\nThe call forwarding feature allows you to direct all incoming calls based on specific criteria that you define.\nBelow are the available options for configuring your call forwarding:\n1. Always forward calls to a designated number.\n2. Forward calls to a designated number based on certain criteria.\n3. Forward calls using different modes.\n\nUpdating call forwarding settings for a hunt group requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/locations/{locationId}/huntGroups/{huntGroupId}/callForwarding", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location from which this hunt group exists."}, - {Name: "huntGroupId", In: InPath, Flag: "hunt-group-id", Usage: "Update call forwarding settings for this hunt group."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Update hunt group forwarding settings from this organization."}, - }, - Body: &Body{}, -} - -var CallingHuntGroupCreateSelectiveForwardRule = &Operation{ - ID: "CallingHuntGroupCreateSelectiveForwardRule", Area: "calling", Group: "hunt-group", Command: "create-selective-forward-rule", - Summary: "Create a Selective Call Forwarding Rule for a Hunt Group", - Description: "Create a Selective Call Forwarding Rule for the designated Hunt Group.\n\nA selective call forwarding rule for a hunt group allows calls to be forwarded or not forwarded to the designated number, based on the defined criteria.\n\nNote that the list of existing call forward rules is available in the hunt group's call forwarding settings.\n\nCreating a selective call forwarding rule for a hunt group requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: The Call Forwarding Rule ID will change upon modification of the Call Forwarding Rule name.", - Method: "POST", Path: "/telephony/config/locations/{locationId}/huntGroups/{huntGroupId}/callForwarding/selectiveRules", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location in which this hunt group exists."}, - {Name: "huntGroupId", In: InPath, Flag: "hunt-group-id", Usage: "Create the rule for this hunt group."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Create the hunt group rule for this organization."}, - }, - Body: &Body{}, -} - -var CallingHuntGroupGetSelectiveForwardRule = &Operation{ - ID: "CallingHuntGroupGetSelectiveForwardRule", Area: "calling", Group: "hunt-group", Command: "get-selective-forward-rule", - Summary: "Get Selective Call Forwarding Rule for a Hunt Group", - Description: "Retrieve a Selective Call Forwarding Rule's settings for the designated Hunt Group.\n\nA selective call forwarding rule for a hunt group allows calls to be forwarded or not forwarded to the designated number, based on the defined criteria.\n\nNote that the list of existing call forward rules is available in the hunt group's call forwarding settings.\n\nRetrieving a selective call forwarding rule's settings for a hunt group requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.\n\n**NOTE**: The Call Forwarding Rule ID will change upon modification of the Call Forwarding Rule name.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/huntGroups/{huntGroupId}/callForwarding/selectiveRules/{ruleId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location in which this hunt group exists."}, - {Name: "huntGroupId", In: InPath, Flag: "hunt-group-id", Usage: "Retrieve settings for a rule for this hunt group."}, - {Name: "ruleId", In: InPath, Flag: "rule-id", Usage: "Hunt group rule you are retrieving settings for."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve hunt group rule settings for this organization."}, - }, -} - -var CallingHuntGroupUpdateSelectiveForwardRule = &Operation{ - ID: "CallingHuntGroupUpdateSelectiveForwardRule", Area: "calling", Group: "hunt-group", Command: "update-selective-forward-rule", - Summary: "Update a Selective Call Forwarding Rule for a Hunt Group", - Description: "Update a Selective Call Forwarding Rule's settings for the designated Hunt Group.\n\nA selective call forwarding rule for a hunt group allows calls to be forwarded or not forwarded to the designated number, based on the defined criteria.\n\nNote that the list of existing call forward rules is available in the hunt group's call forwarding settings.\n\nUpdating a selective call forwarding rule's settings for a hunt group requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: The Call Forwarding Rule ID will change upon modification of the Call Forwarding Rule name.", - Method: "PUT", Path: "/telephony/config/locations/{locationId}/huntGroups/{huntGroupId}/callForwarding/selectiveRules/{ruleId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location in which this hunt group exists."}, - {Name: "huntGroupId", In: InPath, Flag: "hunt-group-id", Usage: "Update settings for a rule for this hunt group."}, - {Name: "ruleId", In: InPath, Flag: "rule-id", Usage: "Hunt group rule you are updating settings for."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Update hunt group rule settings for this organization."}, - }, - Body: &Body{}, -} - -var CallingHuntGroupDeleteSelectiveForwardRule = &Operation{ - ID: "CallingHuntGroupDeleteSelectiveForwardRule", Area: "calling", Group: "hunt-group", Command: "delete-selective-forward-rule", - Summary: "Delete a Selective Call Forwarding Rule for a Hunt Group", - Description: "Delete a Selective Call Forwarding Rule for the designated Hunt Group.\n\nA selective call forwarding rule for a hunt group allows calls to be forwarded or not forwarded to the designated number, based on the defined criteria.\n\nNote that the list of existing call forward rules is available in the hunt group's call forwarding settings.\n\nDeleting a selective call forwarding rule for a hunt group requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: The Call Forwarding Rule ID will change upon modification of the Call Forwarding Rule name.", - Method: "DELETE", Path: "/telephony/config/locations/{locationId}/huntGroups/{huntGroupId}/callForwarding/selectiveRules/{ruleId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location in which this hunt group exists."}, - {Name: "huntGroupId", In: InPath, Flag: "hunt-group-id", Usage: "Delete the rule for this hunt group."}, - {Name: "ruleId", In: InPath, Flag: "rule-id", Usage: "Hunt group rule you are deleting."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Delete hunt group rule from this organization."}, - }, -} - -var CallingHuntGroupGetPrimaryNumbers = &Operation{ - ID: "CallingHuntGroupGetPrimaryNumbers", Area: "calling", Group: "hunt-group", Command: "get-primary-numbers", - Summary: "Get Hunt Group Primary Available Phone Numbers", - Description: "List the service and standard PSTN numbers that are available to be assigned as the hunt group's primary phone number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/huntGroups/availableNumbers", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Return the list of phone numbers for this location within the given organization. The maximum length is 36."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List numbers for this organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of phone numbers returned to this maximum count. The default is 2000."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching phone numbers. The default is 0."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - }, - Paging: &Paging{}, -} - -var CallingHuntGroupGetAlternateNumbers = &Operation{ - ID: "CallingHuntGroupGetAlternateNumbers", Area: "calling", Group: "hunt-group", Command: "get-alternate-numbers", - Summary: "Get Hunt Group Alternate Available Phone Numbers", - Description: "List the service and standard PSTN numbers that are available to be assigned as the hunt group's alternate phone number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/huntGroups/alternate/availableNumbers", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Return the list of phone numbers for this location within the given organization. The maximum length is 36."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List numbers for this organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of phone numbers returned to this maximum count. The default is 2000."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching phone numbers. The default is 0."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - }, - Paging: &Paging{}, -} - -var CallingHuntGroupGetForwardAvailableNumbers = &Operation{ - ID: "CallingHuntGroupGetForwardAvailableNumbers", Area: "calling", Group: "hunt-group", Command: "get-forward-available-numbers", - Summary: "Get Hunt Group Call Forward Available Phone Numbers", - Description: "List the service and standard PSTN numbers that are available to be assigned as the hunt group's call forward number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are assigned to an owning entity.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/huntGroups/callForwarding/availableNumbers", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Return the list of phone numbers for this location within the given organization. The maximum length is 36."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List numbers for this organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of phone numbers returned to this maximum count. The default is 2000."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching phone numbers. The default is 0."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "ownerName", In: InQuery, Flag: "owner-name", Usage: "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255."}, - {Name: "extension", In: InQuery, Flag: "extension", Usage: "Returns the list of PSTN phone numbers with the given `extension`."}, - }, - Paging: &Paging{}, -} - -var CallingHuntGroupSwitchModeCallForward = &Operation{ - ID: "CallingHuntGroupSwitchModeCallForward", Area: "calling", Group: "hunt-group", Command: "switch-mode-call-forward", - Summary: "Switch Mode for Call Forwarding Settings for a Hunt Group", - Description: "Switches the current operating mode of the `Hunt Group` to the mode as per normal operations.\n\nOperating modes allow call forwarding to be configured based on predefined schedules, enabling different routing behaviors during business hours, after hours, or holidays.\n\nSwitching operating mode for a `hunt group` requires a full, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/locations/{locationId}/huntGroups/{huntGroupId}/callForwarding/actions/switchMode/invoke", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "`Location` in which this `hunt group` exists."}, - {Name: "huntGroupId", In: InPath, Flag: "hunt-group-id", Usage: "Switch operating mode to normal operations for this `hunt group`."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Switch operating mode as per normal operations for the `hunt group` from this organization."}, - }, - Body: &Body{}, -} - -var CallingOperatingModesList = &Operation{ - ID: "CallingOperatingModesList", Area: "calling", Group: "operating-modes", Command: "list", - Summary: "Read the List of Operating Modes", - Description: "Retrieve `Operating Modes` list defined at location, or organization level. Use query parameters to filter the result set by location or level. The list returned is sorted in ascending order by operating mode name. Long result sets are split into [pages](/docs/basics#pagination).\n\n`Operating modes` help manage calls more efficiently by routing them based on predefined settings.\n\nRetrieving this list requires a full, read-only, or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/operatingModes", Host: HostWebex, - Params: []Param{ - {Name: "name", In: InQuery, Flag: "name", Usage: "List `operating modes` whose name contains this string."}, - {Name: "limitToLocationId", In: InQuery, Flag: "limit-to-location-id", Usage: "Location query parameter to filter the `operating modes` from that location only."}, - {Name: "limitToOrgLevelEnabled", In: InQuery, Flag: "limit-to-org-level-enabled", Usage: "If true, only return `operating modes` defined at the organization level."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Maximum number of `operating modes` to return in a single page. `max` must be equal to, or greater than `1`, and equal to or less than `100`."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching objects."}, - {Name: "order", In: InQuery, Flag: "order", Usage: "Sort the list of `operating modes` based on `name`, either asc, or desc."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve `operating modes` list from this organization."}, - }, - Paging: &Paging{}, -} - -var CallingOperatingModesGet = &Operation{ - ID: "CallingOperatingModesGet", Area: "calling", Group: "operating-modes", Command: "get", - Summary: "Get Details for an Operating Mode", - Description: "Retrieve an `Operating Mode` by `Operating Mode ID`.\n\n`Operating modes` can be used to define call routing rules for different scenarios like business hours, after hours, holidays, etc.\n\nRetrieving an `operating mode` requires a full, read-only, or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/operatingModes/{modeId}", Host: HostWebex, - Params: []Param{ - {Name: "modeId", In: InPath, Flag: "mode-id", Usage: "Get the `operating mode` with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Get the `operating mode` from this organization."}, - }, -} - -var CallingOperatingModesUpdate = &Operation{ - ID: "CallingOperatingModesUpdate", Area: "calling", Group: "operating-modes", Command: "update", - Summary: "Modify an Operating Mode", - Description: "Modify the designated `Operating Mode's` configuration.\n\n`Operating modes` can be used to define call routing rules for different scenarios like business hours, after hours, holidays, etc.\n\nModifying an `Operating Mode` requires a full, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/operatingModes/{modeId}", Host: HostWebex, - Params: []Param{ - {Name: "modeId", In: InPath, Flag: "mode-id", Usage: "Modify the `operating mode` with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Modify the `operating mode` from this organization."}, - }, - Body: &Body{}, -} - -var CallingOperatingModesDelete = &Operation{ - ID: "CallingOperatingModesDelete", Area: "calling", Group: "operating-modes", Command: "delete", - Summary: "Delete an Operating Mode", - Description: "Delete the designated `Operating Mode`.\n\nDeleting an `Operating Mode` requires a full, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/operatingModes/{modeId}", Host: HostWebex, - Params: []Param{ - {Name: "modeId", In: InPath, Flag: "mode-id", Usage: "Delete the `operating mode` with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Delete the `operating mode` from this organization."}, - }, -} - -var CallingOperatingModesCreate = &Operation{ - ID: "CallingOperatingModesCreate", Area: "calling", Group: "operating-modes", Command: "create", - Summary: "Create an Operating Mode", - Description: "Create an `Operating Mode` at an organization, or a location level.\n\n`Operating modes` can be used to define call routing rules for different scenarios like business hours, after hours, holidays, etc.\n\nCreating an `Operating Mode` requires a full, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/operatingModes", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Create the `operating mode` for this organization."}, - }, - Body: &Body{}, -} - -var CallingOperatingModesGetHoliday = &Operation{ - ID: "CallingOperatingModesGetHoliday", Area: "calling", Group: "operating-modes", Command: "get-holiday", - Summary: "Get details for an Operating Mode Holiday", - Description: "Retrieve an `Operating Mode Holiday` by ID.\n\nHolidays define a recurring schedule for the `Operating Modes`.\n\nRetrieving an `Operating Mode Holiday` requires a full, read-only, or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/operatingModes/{modeId}/holidays/{holidayId}", Host: HostWebex, - Params: []Param{ - {Name: "modeId", In: InPath, Flag: "mode-id", Usage: "Get the holiday from this `operating mode` matching ID."}, - {Name: "holidayId", In: InPath, Flag: "holiday-id", Usage: "Get the `operating mode Holiday` with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Get the `operating mode` from this organization."}, - }, -} - -var CallingOperatingModesUpdateHoliday = &Operation{ - ID: "CallingOperatingModesUpdateHoliday", Area: "calling", Group: "operating-modes", Command: "update-holiday", - Summary: "Modify an Operating Mode Holiday", - Description: "Modify the designated `Operating Mode Holiday's` configuration.\n\nModifying an `Operating Mode Holiday` requires a full, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/operatingModes/{modeId}/holidays/{holidayId}", Host: HostWebex, - Params: []Param{ - {Name: "modeId", In: InPath, Flag: "mode-id", Usage: "Modify the holiday from this `operating mode` matching ID."}, - {Name: "holidayId", In: InPath, Flag: "holiday-id", Usage: "Modify the `Holiday` with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Modify the `operating mode` from this organization."}, - }, - Body: &Body{}, -} - -var CallingOperatingModesDeleteHoliday = &Operation{ - ID: "CallingOperatingModesDeleteHoliday", Area: "calling", Group: "operating-modes", Command: "delete-holiday", - Summary: "Delete an Operating Mode Holiday", - Description: "Delete the designated `Operating Mode Holiday`.\n\nDeleting an `Operating Mode Holiday` requires a full, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/operatingModes/{modeId}/holidays/{holidayId}", Host: HostWebex, - Params: []Param{ - {Name: "modeId", In: InPath, Flag: "mode-id", Usage: "Delete the holiday from this `operating mode` matching ID."}, - {Name: "holidayId", In: InPath, Flag: "holiday-id", Usage: "Delete the holiday with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Delete the `operating mode` from this organization."}, - }, -} - -var CallingOperatingModesCreateHoliday = &Operation{ - ID: "CallingOperatingModesCreateHoliday", Area: "calling", Group: "operating-modes", Command: "create-holiday", - Summary: "Create an Operating Mode Holiday", - Description: "Create a holiday schedule event for the designated `Operating Mode`.\n\nHolidays define a recurring schedule for the `Operating Modes`. An `Operating Mode` can have a max of 150 holidays.\n\nCreating an `Operating Mode Holiday` requires a full, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/operatingModes/{modeId}/holidays", Host: HostWebex, - Params: []Param{ - {Name: "modeId", In: InPath, Flag: "mode-id", Usage: "Create the holiday for this `operating mode`."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Create the `operating mode holiday` for this organization."}, - }, - Body: &Body{}, -} - -var CallingOperatingModesListAvailableLocation = &Operation{ - ID: "CallingOperatingModesListAvailableLocation", Area: "calling", Group: "operating-modes", Command: "list-available-location", - Summary: "Retrieve the List of Available Operating Modes in a Location", - Description: "Retrieve list of `Operating Modes` which are available to be assigned to a location level feature (`Auto Attendant`, `Call Queue`, or `Hunt Group`). Since each location and an org can have a max of 100 `Operating Modes` defined. The max number of `operating modes` that can be returned is 200.\n\n`Operating modes` can be used to define call routing rules for different scenarios like business hours, after hours, holidays, etc. for the `Auto Attendant`, `Call Queue`, and `Hunt Group` features.\n\nRetrieving this list requires a full, read-only, or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/operatingModes/availableOperatingModes", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Retrieve `operating modes` list from this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve `operating modes` list from this organization."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var CallingOperatingModesGetForwardAvailableNumbers = &Operation{ - ID: "CallingOperatingModesGetForwardAvailableNumbers", Area: "calling", Group: "operating-modes", Command: "get-forward-available-numbers", - Summary: "Get Operating Mode Call Forward Available Phone Numbers", - Description: "List the service and standard PSTN numbers that are available to be assigned as a operating mode's call forward number.\n\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are assigned to an owning entity.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/operatingModes/callForwarding/availableNumbers", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Return the list of phone numbers for this location within the given organization. The maximum length is 36."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List numbers for this organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of phone numbers returned to this maximum count. The default is 2000."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching phone numbers. The default is 0."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "ownerName", In: InQuery, Flag: "owner-name", Usage: "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255."}, - {Name: "extension", In: InQuery, Flag: "extension", Usage: "Returns the list of PSTN phone numbers with the given `extension`."}, - }, - Paging: &Paging{}, -} - -var CallingPagingGroupList = &Operation{ - ID: "CallingPagingGroupList", Area: "calling", Group: "paging-group", Command: "list", - Summary: "Read the List of Paging Groups", - Description: "List all Paging Groups for the organization.\n\nGroup Paging allows a person to place a one-way call or group page to up to 75 people and/or workspaces by\ndialing a number or extension assigned to a specific paging group. The Group Paging service makes a simultaneous call to all the assigned targets.\n\nRetrieving this list requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/paging", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List paging groups for this organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of objects returned to this maximum count. Default is 2000"}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching objects. Default is 0"}, - {Name: "locationId", In: InQuery, Flag: "location-id", Usage: "Return only paging groups with matching location ID. Default is all locations"}, - {Name: "name", In: InQuery, Flag: "name", Usage: "Return only paging groups with the matching name."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Return only paging groups with matching primary phone number or extension."}, - }, - Paging: &Paging{}, -} - -var CallingPagingGroupCreate = &Operation{ - ID: "CallingPagingGroupCreate", Area: "calling", Group: "paging-group", Command: "create", - Summary: "Create a new Paging Group", - Description: "Create a new Paging Group for the given location.\n\nGroup Paging allows a one-way call or group page to up to 75 people, workspaces and virtual lines by\ndialing a number or extension assigned to a specific paging group. The Group Paging service makes a simultaneous call to all the assigned targets.\n\nCreating a paging group requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/locations/{locationId}/paging", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Create the paging group for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Create the paging group for this organization."}, - }, - Body: &Body{}, -} - -var CallingPagingGroupDelete = &Operation{ - ID: "CallingPagingGroupDelete", Area: "calling", Group: "paging-group", Command: "delete", - Summary: "Delete a Paging Group", - Description: "Delete the designated Paging Group.\n\nGroup Paging allows a person to place a one-way call or group page to up to 75 people and/or workspaces by\ndialing a number or extension assigned to a specific paging group. The Group Paging service makes a simultaneous call to all the assigned targets.\n\nDeleting a paging group requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/locations/{locationId}/paging/{pagingId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location from which to delete a paging group."}, - {Name: "pagingId", In: InPath, Flag: "paging-id", Usage: "Delete the paging group with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Delete the paging group from this organization."}, - }, -} - -var CallingPagingGroupGet = &Operation{ - ID: "CallingPagingGroupGet", Area: "calling", Group: "paging-group", Command: "get", - Summary: "Get Details for a Paging Group", - Description: "Retrieve Paging Group details.\n\nGroup Paging allows a person, place or virtual line a one-way call or group page to up to 75 people and/or workspaces and/or virtual line by\ndialing a number or extension assigned to a specific paging group. The Group Paging service makes a simultaneous call to all the assigned targets.\n\nRetrieving paging group details requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/paging/{pagingId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Retrieve settings for a paging group in this location."}, - {Name: "pagingId", In: InPath, Flag: "paging-id", Usage: "Retrieve settings for the paging group with this identifier."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve paging group settings from this organization."}, - }, -} - -var CallingPagingGroupUpdate = &Operation{ - ID: "CallingPagingGroupUpdate", Area: "calling", Group: "paging-group", Command: "update", - Summary: "Update a Paging Group", - Description: "Update the designated Paging Group.\n\nGroup Paging allows a person to place a one-way call or group page to up to 75 people, workspaces and virtual lines by\ndialing a number or extension assigned to a specific paging group. The Group Paging service makes a simultaneous call to all the assigned targets.\n\nUpdating a paging group requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/locations/{locationId}/paging/{pagingId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Update settings for a paging group in this location."}, - {Name: "pagingId", In: InPath, Flag: "paging-id", Usage: "Update settings for the paging group with this identifier."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Update paging group settings from this organization."}, - }, - Body: &Body{}, -} - -var CallingPagingGroupGetPrimaryNumbers = &Operation{ - ID: "CallingPagingGroupGetPrimaryNumbers", Area: "calling", Group: "paging-group", Command: "get-primary-numbers", - Summary: "Get Paging Group Primary Available Phone Numbers", - Description: "List the service and standard PSTN numbers that are available to be assigned as the paging group's primary phone number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/paging/availableNumbers", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Return the list of phone numbers for this location within the given organization. The maximum length is 36."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List numbers for this organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of phone numbers returned to this maximum count. The default is 2000."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching phone numbers. The default is 0."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - }, - Paging: &Paging{}, -} - -var CallingSingleNumberReachGetPrimary = &Operation{ - ID: "CallingSingleNumberReachGetPrimary", Area: "calling", Group: "single-number-reach", Command: "get-primary", - Summary: "Get Single Number Reach Primary Available Phone Numbers", - Description: "List the service and standard PSTN numbers that are available to be assigned as the single number reach's primary phone number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/singleNumberReach/availableNumbers", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Return the list of phone numbers for this location within the given organization. The maximum length is 36."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List numbers for this organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of phone numbers returned to this maximum count. The default is 2000."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching phone numbers. The default is 0."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - }, - Paging: &Paging{}, -} - -var CallingSingleNumberReachCreatePerson = &Operation{ - ID: "CallingSingleNumberReachCreatePerson", Area: "calling", Group: "single-number-reach", Command: "create-person", - Summary: "Create Single Number Reach For a Person", - Description: "Create a single number reach for a person in an organization.\n\nSingle number reach allows you to setup your work calls ring any phone number. This means that your office phone, mobile phone, or any other designated devices can ring at the same time, ensuring you don't miss important calls.\n\nCreating a single number reach for a person requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/people/{personId}/singleNumberReach/numbers", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "phoneNumber", Flag: "phone-number", Type: "string"}, - {Name: "enabled", Flag: "enabled", Type: "bool"}, - {Name: "name", Flag: "name", Type: "string"}, - {Name: "doNotForwardCallsEnabled", Flag: "do-not-forward-calls-enabled", Type: "bool"}, - {Name: "answerConfirmationEnabled", Flag: "answer-confirmation-enabled", Type: "bool"}, - }}, -} - -var CallingSingleNumberReachGetSettingsPerson = &Operation{ - ID: "CallingSingleNumberReachGetSettingsPerson", Area: "calling", Group: "single-number-reach", Command: "get-settings-person", - Summary: "Get Single Number Reach Settings For A Person", - Description: "Retrieve Single Number Reach settings for the given person.\n\nSingle number reach allows you to setup your work calls ring any phone number. This means that your office phone, mobile phone, or any other designated devices can ring at the same time, ensuring you don't miss important calls.\n\nRetrieving Single number reach settings requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/{personId}/singleNumberReach", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - }, -} - -var CallingSingleNumberReachUpdateSettingsPerson = &Operation{ - ID: "CallingSingleNumberReachUpdateSettingsPerson", Area: "calling", Group: "single-number-reach", Command: "update-settings-person", - Summary: "Update Single Number Reach Settings For A Person", - Description: "Update Single number reach settings for a person.\n\nSingle number reach allows you to setup your work calls ring any phone number. This means that your office phone, mobile phone, or any other designated devices can ring at the same time, ensuring you don't miss important calls.\n\nUpdating a single number reach settings for a person requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/{personId}/singleNumberReach", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "alertAllNumbersForClickToDialCallsEnabled", Flag: "alert-all-numbers-for-click-to-dial-calls-enabled", Type: "bool"}, - }}, -} - -var CallingSingleNumberReachUpdateSettings = &Operation{ - ID: "CallingSingleNumberReachUpdateSettings", Area: "calling", Group: "single-number-reach", Command: "update-settings", - Summary: "Update Single Number Reach Settings For A Number", - Description: "Update Single number reach settings for a number.\n\nSingle number reach allows you to setup your work calls ring any phone number. This means that your office phone, mobile phone, or any other designated devices can ring at the same time, ensuring you don't miss important calls.\n\nThe response returns an ID that can change if the phoneNumber is modified, as the ID contains base64 encoded phone number data.\n\nUpdating a single number reach settings for a number requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/{personId}/singleNumberReach/numbers/{id}", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Unique identifier for single number reach."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "phoneNumber", Flag: "phone-number", Type: "string"}, - {Name: "enabled", Flag: "enabled", Type: "bool"}, - {Name: "name", Flag: "name", Type: "string"}, - {Name: "doNotForwardCallsEnabled", Flag: "do-not-forward-calls-enabled", Type: "bool"}, - {Name: "answerConfirmationEnabled", Flag: "answer-confirmation-enabled", Type: "bool"}, - }}, -} - -var CallingSingleNumberReachDelete = &Operation{ - ID: "CallingSingleNumberReachDelete", Area: "calling", Group: "single-number-reach", Command: "delete", - Summary: "Delete A Single Number Reach Number", - Description: "Delete Single number reach number for a person.\n\nSingle number reach allows you to setup your work calls ring any phone number. This means that your office phone, mobile phone, or any other designated devices can ring at the same time, ensuring you don't miss important calls.\n\nDeleting a Single number reach number requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/people/{personId}/singleNumberReach/numbers/{id}", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Unique identifier for single number reach."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Unique identifier for the organization."}, - }, -} - -var CallingVirtualExtensionsCreate = &Operation{ - ID: "CallingVirtualExtensionsCreate", Area: "calling", Group: "virtual-extensions", Command: "create", - Summary: "Create a Virtual Extension", - Description: "Create new Virtual Extension for the given organization or location.\n\nYou can set up virtual extensions at the organization or location level. The organization level enables everyone across your organization to dial the same extension number to reach someone.\nYou can use the location level virtual extension like any other extension assigned to the specific location.\nUsers at the specific location can dial the extension. However, users at other locations can reach the virtual extension by dialing the ESN.\n\nCreating a virtual extension requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write` and `identity:contacts_rw`.", - Method: "POST", Path: "/telephony/config/virtualExtensions", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Unique identifier for the organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "displayName", Flag: "display-name", Type: "string"}, - {Name: "phoneNumber", Flag: "phone-number", Type: "string"}, - {Name: "extension", Flag: "extension", Type: "string"}, - {Name: "firstName", Flag: "first-name", Type: "string"}, - {Name: "lastName", Flag: "last-name", Type: "string"}, - {Name: "locationId", Flag: "location-id", Type: "string"}, - }}, -} - -var CallingVirtualExtensionsList = &Operation{ - ID: "CallingVirtualExtensionsList", Area: "calling", Group: "virtual-extensions", Command: "list", - Summary: "Read the List of Virtual Extensions", - Description: "Retrieve virtual extensions associated with a specific customer.\n\nThe GET Virtual Extensions API allows administrators to retrieve a list of virtual extensions configured within their organization. Virtual extensions enable users to dial extension numbers that route to external phone numbers, such as those of remote workers or frequently contacted clients.\nThis API returns key information including the extension, associated phone number (in E.164 format), display name, and the location to which the virtual extension belongs\nThe API supports filtering by various parameters, such as extension number, phone number, and location name. The results can be paginated using the `max` and `start` parameters, and the order of the results can be specified using the `order` parameter.\n\nRetrieving a Virtual Extension requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/virtualExtensions", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Unique identifier for the organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of virtual extensions returned to this maximum count. Default is 10."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching virtual extensions. Default is 0."}, - {Name: "order", In: InQuery, Flag: "order", Usage: "Order the list of virtual extensions in ascending or descending order. Default is ascending."}, - {Name: "extension", In: InQuery, Flag: "extension", Usage: "Filter the list of virtual extensions by extension number."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter the list of virtual extensions by phone number."}, - {Name: "name", In: InQuery, Flag: "name", Usage: "Filter the list of virtual extensions by name. This can be either first name or last name."}, - {Name: "locationName", In: InQuery, Flag: "location-name", Usage: "Filter the list of virtual extensions by location name.(Only one of the locationName, locationId, and OrgLevelOnly query parameters is allowed at the same time.)"}, - {Name: "locationId", In: InQuery, Flag: "location-id", Usage: "Filter the list of virtual extensions by location ID."}, - {Name: "orgLevelOnly", In: InQuery, Flag: "org-level-only", Usage: "Filter the list of virtual extensions by organization level. If orgLevelOnly is true, return only the organization level virtual extensions."}, - }, - Paging: &Paging{}, -} - -var CallingVirtualExtensionsGet = &Operation{ - ID: "CallingVirtualExtensionsGet", Area: "calling", Group: "virtual-extensions", Command: "get", - Summary: "Get a Virtual Extension", - Description: "Retrieve Virtual Extension details for the given extension ID.\n\nVirtual extensions integrate remote workers on separate telephony systems into Webex Calling, enabling users to reach them via extension dialing.\nThis endpoint allows administrators to retrieve configuration details for a specific virtual extension, ensuring visibility into the mapping between extensions and external phone numbers.\n\nRetrieving a Virtual Extension requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/virtualExtensions/{extensionId}", Host: HostWebex, - Params: []Param{ - {Name: "extensionId", In: InPath, Flag: "extension-id", Usage: "ID of the virtual extension."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Unique identifier for the organization."}, - }, -} - -var CallingVirtualExtensionsUpdate = &Operation{ - ID: "CallingVirtualExtensionsUpdate", Area: "calling", Group: "virtual-extensions", Command: "update", - Summary: "Update a Virtual Extension", - Description: "Update Virtual Extension details for the given extension ID.\n\nThis API updates the configuration of an existing virtual extension identified by its unique extension ID. Administrators can modify fields such as the extension, associated phone number (in E.164 format), display name, and location etc.\n\nUpdating a Virtual Extension requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write` and `identity:contacts_rw`.", - Method: "PUT", Path: "/telephony/config/virtualExtensions/{extensionId}", Host: HostWebex, - Params: []Param{ - {Name: "extensionId", In: InPath, Flag: "extension-id", Usage: "ID of the virtual extension."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Unique identifier for the organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "firstName", Flag: "first-name", Type: "string"}, - {Name: "lastName", Flag: "last-name", Type: "string"}, - {Name: "displayName", Flag: "display-name", Type: "string"}, - {Name: "phoneNumber", Flag: "phone-number", Type: "string"}, - {Name: "extension", Flag: "extension", Type: "string"}, - }}, -} - -var CallingVirtualExtensionsDelete = &Operation{ - ID: "CallingVirtualExtensionsDelete", Area: "calling", Group: "virtual-extensions", Command: "delete", - Summary: "Delete a Virtual Extension", - Description: "Delete Virtual Extension using the extension ID.\n\nThis API permanently deletes a virtual extension from the organization. Once deleted, the extension will no longer route calls to the external phone number, and users won’t be able to reach it via the assigned extension.\n\nDeleting a Virtual Extension requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write` and `identity:contacts_rw`.", - Method: "DELETE", Path: "/telephony/config/virtualExtensions/{extensionId}", Host: HostWebex, - Params: []Param{ - {Name: "extensionId", In: InPath, Flag: "extension-id", Usage: "ID of the virtual extension."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Unique identifier for the organization."}, - }, -} - -var CallingVirtualExtensionsGetSettings = &Operation{ - ID: "CallingVirtualExtensionsGetSettings", Area: "calling", Group: "virtual-extensions", Command: "get-settings", - Summary: "Get Virtual extension settings", - Description: "Retrieve Virtual Extension settings for the given Org.\n\nThis API retrieves the virtual extension mode settings configured for a given organization. Virtual extensions can operate in two modes: STANDARD and ENHANCED. The selected mode determines how the system handles routing and signaling for virtual extensions.\nBy default, the virtual extensions that you create use the Standard mode. Another mode, enhanced signaling mode, is available to all customers, however, virtual extensions won't function properly in this mode unless your PSTN provider supports special network signaling extensions and there aren't many PSTN providers that do.\n\nRetrieving a Virtual Extension settings requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/virtualExtensions/settings", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Unique identifier for the organization."}, - }, -} - -var CallingVirtualExtensionsUpdateSettings = &Operation{ - ID: "CallingVirtualExtensionsUpdateSettings", Area: "calling", Group: "virtual-extensions", Command: "update-settings", - Summary: "Modify Virtual Extension Settings", - Description: "Update Virtual Extension details for the given extension ID.\n\nThis endpoint updates the virtual extension settings for an organization. It is primarily used to configure the operating mode for virtual extensions.\nModes determine how virtual extensions are assigned or managed within the system.\n\nUpdating a Virtual Extension requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/virtualExtensions/settings", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Unique identifier for the organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "mode", Flag: "mode", Type: "string"}, - }}, -} - -var CallingVirtualExtensionsValidateExternalPhoneNumber = &Operation{ - ID: "CallingVirtualExtensionsValidateExternalPhoneNumber", Area: "calling", Group: "virtual-extensions", Command: "validate-external-phone-number", - Summary: "Validate an external phone number", - Description: "Validate external phone number for the given organization.\n\nThis API is designed to validate external phone numbers before they are assigned as virtual extensions for a customer.\nIt ensures that the provided numbers are properly formatted, eligible for use, and not already in use within the system.\nThis validation is typically part of a pre-check process during provisioning or number assignment workflows, helping administrators or systems prevent conflicts or errors related to number reuse or format issues.\n\nCreating a virtual extension requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/virtualExtensions/actions/validateNumbers/invoke", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Unique identifier for the organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "phoneNumbers", Flag: "phone-numbers", Type: "[]string"}, - }}, -} - -var CallingVirtualExtensionsCreateRange = &Operation{ - ID: "CallingVirtualExtensionsCreateRange", Area: "calling", Group: "virtual-extensions", Command: "create-range", - Summary: "Create a Virtual Extension Range", - Description: "Create a new Virtual Extension Range for the given organization or location.\n\nVirtual extension ranges integrate remote workers on a separate telephony system into Webex Calling and enable extension dialing. Using these ranges, you can define patterns that can be used to route calls at a location level or an organization level. You are allowed to define virtual extensions ranges in addition to individual virtual extensions.\nThis works in both Standard and Enhanced modes\n\nVirtual extension range can be set up at the organization or location level.\n\nCreating a virtual extension range requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/virtualExtensionRanges", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Unique identifier for the organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "name", Flag: "name", Type: "string"}, - {Name: "prefix", Flag: "prefix", Type: "string"}, - {Name: "patterns", Flag: "patterns", Type: "[]string"}, - {Name: "locationId", Flag: "location-id", Type: "string"}, - }}, -} - -var CallingVirtualExtensionsListRange = &Operation{ - ID: "CallingVirtualExtensionsListRange", Area: "calling", Group: "virtual-extensions", Command: "list-range", - Summary: "Get a list of a Virtual Extension Range", - Description: "Retrieves the list of Virtual Extension Ranges.\n\nVirtual extension ranges integrate remote workers on a separate telephony system into Webex Calling and enable extension dialing. Using these ranges, you can define patterns that can be used to route calls at a location level or an organization level. You are allowed to define virtual extensions ranges in addition to individual virtual extensions.\nThis works in both Standard and Enhanced modes\n\nRetrieving a virtual extension range requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/virtualExtensionRanges", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Unique identifier for the organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Maximum number of results to return."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "The starting index of the results to return."}, - {Name: "order", In: InQuery, Flag: "order", Usage: "Sort the list of virtual extension ranges by name or prefix, either ASC or DSC. Default sort order is ASC."}, - {Name: "name", In: InQuery, Flag: "name", Usage: "Filter the list of virtual extension ranges by name."}, - {Name: "prefix", In: InQuery, Flag: "prefix", Usage: "Filter the list of virtual extension ranges by prefix."}, - {Name: "locationId", In: InQuery, Flag: "location-id", Usage: "Filter the list of virtual extension ranges by location ID. Only one of the `locationId` and `OrgLevelOnly` query parameters is allowed at the same time."}, - {Name: "orgLevelOnly", In: InQuery, Flag: "org-level-only", Usage: "Filter the list of virtual extension ranges by organization level. If `orgLevelOnly` is true, return only the organization level virtual extension ranges."}, - }, - Paging: &Paging{}, -} - -var CallingVirtualExtensionsGetRange = &Operation{ - ID: "CallingVirtualExtensionsGetRange", Area: "calling", Group: "virtual-extensions", Command: "get-range", - Summary: "Get details of a Virtual Extension Range", - Description: "Retrieve virtual extension range details for the given extension range ID.\n\nVirtual extension ranges integrate remote workers on a separate telephony system into Webex Calling and enable extension dialing. Using these ranges, you can define patterns that can be used to route calls at a location level or an organization level. You are allowed to define virtual extensions ranges in addition to individual virtual extensions.\nThis works in both Standard and Enhanced modes\n\nRetrieving a virtual extension range requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/virtualExtensionRanges/{extensionRangeId}", Host: HostWebex, - Params: []Param{ - {Name: "extensionRangeId", In: InPath, Flag: "extension-range-id", Usage: "ID of the virtual extension range."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Unique identifier for the organization."}, - }, -} - -var CallingVirtualExtensionsDeleteRange = &Operation{ - ID: "CallingVirtualExtensionsDeleteRange", Area: "calling", Group: "virtual-extensions", Command: "delete-range", - Summary: "Delete a Virtual Extension Range", - Description: "Delete a virtual extension range for the given extension range ID.\n\nVirtual extension ranges integrate remote workers on a separate telephony system into Webex Calling and enable extension dialing. Using these ranges, you can define patterns that can be used to route calls at a location level or an organization level. You are allowed to define virtual extensions ranges in addition to individual virtual extensions.\nThis works in both Standard and Enhanced modes\n\nDeleting a virtual extension range requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/virtualExtensionRanges/{extensionRangeId}", Host: HostWebex, - Params: []Param{ - {Name: "extensionRangeId", In: InPath, Flag: "extension-range-id", Usage: "ID of the virtual extension range."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Unique identifier for the organization."}, - }, -} - -var CallingVirtualExtensionsUpdateRange = &Operation{ - ID: "CallingVirtualExtensionsUpdateRange", Area: "calling", Group: "virtual-extensions", Command: "update-range", - Summary: "Modify Virtual Extension Range", - Description: "Modify virtual extension range for the given extension range ID.\n\nVirtual extension ranges integrate remote workers on a separate telephony system into Webex Calling and enable extension dialing. Using these ranges, you can define patterns that can be used to route calls at a location level or an organization level. You are allowed to define virtual extensions ranges in addition to individual virtual extensions.\nThis works in both Standard and Enhanced modes\n\nModifying a virtual extension range requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/virtualExtensionRanges/{extensionRangeId}", Host: HostWebex, - Params: []Param{ - {Name: "extensionRangeId", In: InPath, Flag: "extension-range-id", Usage: "ID of the virtual extension range."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Unique identifier for the organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "name", Flag: "name", Type: "string"}, - {Name: "prefix", Flag: "prefix", Type: "string"}, - {Name: "patterns", Flag: "patterns", Type: "[]string"}, - {Name: "action", Flag: "action", Type: "string"}, - }}, -} - -var CallingVirtualExtensionsValidatePrefixPatternRange = &Operation{ - ID: "CallingVirtualExtensionsValidatePrefixPatternRange", Area: "calling", Group: "virtual-extensions", Command: "validate-prefix-pattern-range", - Summary: "Validate the prefix and extension pattern for a Virtual Extension Range", - Description: "Validate the prefix and extension pattern for a Virtual Extension Range.\n\nVirtual extension ranges integrate remote workers on a separate telephony system into Webex Calling and enable extension dialing. Using these ranges, you can define patterns that can be used to route calls at a location level or an organization level. You are allowed to define virtual extensions ranges in addition to individual virtual extensions.\nThis works in both Standard and Enhanced modes\n\nValidating a prefix and extension pattern for a Virtual Extension Range requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/virtualExtensionRanges/actions/validate/invoke", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Unique identifier for the organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "locationId", Flag: "location-id", Type: "string"}, - {Name: "name", Flag: "name", Type: "string"}, - {Name: "prefix", Flag: "prefix", Type: "string"}, - {Name: "patterns", Flag: "patterns", Type: "[]string"}, - {Name: "rangeId", Flag: "range-id", Type: "string"}, - }}, -} - -var CallingHotDeskListSessions = &Operation{ - ID: "CallingHotDeskListSessions", Area: "calling", Group: "hot-desk", Command: "list-sessions", - Summary: "List Sessions", - Description: "List hot desk sessions.\n\nUse query parameters to filter the response.\nThe `orgId` parameter is for use by partner administrators acting on a managed organization.\nThe `personId` and `workspaceId` parameters are optional and are used to filter the response to only include sessions for a specific person or workspace.\nWhen used together they are used as an AND filter.", - Method: "GET", Path: "/hotdesk/sessions", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List sessions in this organization. Only admin users of another organization (such as partners) may use this parameter."}, - {Name: "personId", In: InQuery, Flag: "person-id", Usage: "List sessions for this person."}, - {Name: "workspaceId", In: InQuery, Flag: "workspace-id", Usage: "List sessions for this workspace."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var CallingHotDeskDeleteSession = &Operation{ - ID: "CallingHotDeskDeleteSession", Area: "calling", Group: "hot-desk", Command: "delete-session", - Summary: "Delete Session", - Description: "Delete a hot desk session.", - Method: "DELETE", Path: "/hotdesk/sessions/{sessionId}", Host: HostWebex, - Params: []Param{ - {Name: "sessionId", In: InPath, Flag: "session-id", Usage: "The unique identifier for the hot desk session."}, - }, -} - -var CallingLocationCallHandlingGenerateExamplePassword = &Operation{ - ID: "CallingLocationCallHandlingGenerateExamplePassword", Area: "calling", Group: "location-call-handling", Command: "generate-example-password", - Summary: "Generate example password for Location", - Description: "Generates an example password using the effective password settings for the location. If you don't specify anything in the `generate` field or don't provide a request body, then you will receive a SIP password by default.\n\nUsed while creating a trunk and shouldn't be used anywhere else.\n\nGenerating an example password requires a full or write-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/locations/{locationId}/actions/generatePassword/invoke", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location for which example password has to be generated."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization to which the location belongs."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "generate", Flag: "generate", Type: "[]string"}, - }}, -} - -var CallingLocationCallHandlingGetInternalDialingConfiguration = &Operation{ - ID: "CallingLocationCallHandlingGetInternalDialingConfiguration", Area: "calling", Group: "location-call-handling", Command: "get-internal-dialing-configuration", - Summary: "Read the Internal Dialing configuration for a location", - Description: "Get current configuration for routing unknown extensions to the Premises as internal calls\n\nIf some users in a location are registered to a PBX, retrieve the setting to route unknown extensions (digits that match the extension length) to the PBX.\n\nRetrieving the internal dialing configuration requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/internalDialing", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "location for which internal calling configuration is being requested"}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List route identities for this organization."}, - }, -} - -var CallingLocationCallHandlingUpdateInternalDialingConfiguration = &Operation{ - ID: "CallingLocationCallHandlingUpdateInternalDialingConfiguration", Area: "calling", Group: "location-call-handling", Command: "update-internal-dialing-configuration", - Summary: "Modify the Internal Dialing configuration for a location", - Description: "Modify current configuration for routing unknown extensions to the premise as internal calls\n\nIf some users in a location are registered to a PBX, enable the setting to route unknown extensions (digits that match the extension length) to the PBX.\n\nEditing the internal dialing configuration requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/locations/{locationId}/internalDialing", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "location for which internal calling configuration is being requested"}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List route identities for this organization."}, - }, - Body: &Body{}, -} - -var CallingLocationCallHandlingGetIntercept = &Operation{ - ID: "CallingLocationCallHandlingGetIntercept", Area: "calling", Group: "location-call-handling", Command: "get-intercept", - Summary: "Get Location Intercept", - Description: "Retrieve intercept location details for a customer location.\n\nIntercept incoming or outgoing calls for persons in your organization. If this is enabled, calls are either routed to a designated number the person chooses, or to the person's voicemail.\n\nRetrieving intercept location details requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/intercept", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Retrieve intercept details for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve intercept location details for a customer location."}, - }, -} - -var CallingLocationCallHandlingUpdateIntercept = &Operation{ - ID: "CallingLocationCallHandlingUpdateIntercept", Area: "calling", Group: "location-call-handling", Command: "update-intercept", - Summary: "Put Location Intercept", - Description: "Modifies the intercept location details for a customer location.\n\nIntercept incoming or outgoing calls for users in your organization. If this is enabled, calls are either routed to a designated number the user chooses, or to the user's voicemail.\n\nModifying the intercept location details requires a full, user administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/locations/{locationId}/intercept", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Modifies the intercept details for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Modifies the intercept location details for a customer location."}, - }, - Body: &Body{}, -} - -var CallingLocationCallHandlingGetOutgoingPermission = &Operation{ - ID: "CallingLocationCallHandlingGetOutgoingPermission", Area: "calling", Group: "location-call-handling", Command: "get-outgoing-permission", - Summary: "Get Location Outgoing Permission", - Description: "Retrieve the location's outgoing call settings.\n\nA location's outgoing call settings allow you to determine the types of calls the people/workspaces at the location are allowed to make, as well as configure the default calling permission for each call type at the location.\n\nRetrieving a location's outgoing call settings requires a full, user or read-only administrator or location administrator auth token with a scope of spark-admin:telephony_config_read.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/outgoingPermission", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Retrieve outgoing call settings for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve outgoing call settings for this organization."}, - }, -} - -var CallingLocationCallHandlingUpdateOutgoingPermission = &Operation{ - ID: "CallingLocationCallHandlingUpdateOutgoingPermission", Area: "calling", Group: "location-call-handling", Command: "update-outgoing-permission", - Summary: "Update Location Outgoing Permission", - Description: "Update the location's outgoing call settings.\n\nLocation's outgoing call settings allows you to determine the types of calls the people/workspaces at this location are allowed to make and configure the default calling permission for each call type at a location.\n\nUpdating a location's outgoing call settings requires a full administrator or location administrator auth token with a scope of spark-admin:telephony_config_write.", - Method: "PUT", Path: "/telephony/config/locations/{locationId}/outgoingPermission", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Update outgoing call settings for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Update outgoing call settings for this organization."}, - }, - Body: &Body{}, -} - -var CallingLocationCallHandlingGetOutgoingAutoTransfer = &Operation{ - ID: "CallingLocationCallHandlingGetOutgoingAutoTransfer", Area: "calling", Group: "location-call-handling", Command: "get-outgoing-auto-transfer", - Summary: "Get Outgoing Permission Auto Transfer Number", - Description: "Get the transfer numbers for the outbound permission in a location.\n\nOutbound permissions can specify which transfer number an outbound call should transfer to via the `action` field.\n\nRetrieving an auto transfer number requires a full, user or read-only administrator or location administrator auth token with a scope of spark-admin:telephony_config_read.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/outgoingPermission/autoTransferNumbers", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Retrieve auto transfer number for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve auto transfer number for this organization."}, - }, -} - -var CallingLocationCallHandlingUpdateOutgoingAutoTransfer = &Operation{ - ID: "CallingLocationCallHandlingUpdateOutgoingAutoTransfer", Area: "calling", Group: "location-call-handling", Command: "update-outgoing-auto-transfer", - Summary: "Put Outgoing Permission Auto Transfer Number", - Description: "Modifies the transfer numbers for the outbound permission in a location.\n\nOutbound permissions can specify which transfer number an outbound call should transfer to via the `action` field.\n\nUpdating auto transfer number requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/locations/{locationId}/outgoingPermission/autoTransferNumbers", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Updating auto transfer number for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Updating auto transfer number for this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "autoTransferNumber1", Flag: "auto-transfer-number1", Type: "string"}, - {Name: "autoTransferNumber2", Flag: "auto-transfer-number2", Type: "string"}, - {Name: "autoTransferNumber3", Flag: "auto-transfer-number3", Type: "string"}, - }}, -} - -var CallingLocationCallHandlingGetOutgoingPermissionAccessCode = &Operation{ - ID: "CallingLocationCallHandlingGetOutgoingPermissionAccessCode", Area: "calling", Group: "location-call-handling", Command: "get-outgoing-permission-access-code", - Summary: "Get Outgoing Permission Location Access Code", - Description: "Retrieve access codes details for a customer location.\n\nUse Access Codes to bypass the set permissions for all persons/workspaces at this location.\n\nRetrieving access codes details requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/outgoingPermission/accessCodes", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Retrieve access codes details for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve access codes details for a customer location."}, - }, -} - -var CallingLocationCallHandlingCreateOutgoingPermissionAccessCodeCustomer = &Operation{ - ID: "CallingLocationCallHandlingCreateOutgoingPermissionAccessCodeCustomer", Area: "calling", Group: "location-call-handling", Command: "create-outgoing-permission-access-code-customer", - Summary: "Create Outgoing Permission a new access code for a customer location", - Description: "Add a new access code for the given location for a customer.\n\nUse Access Codes to bypass the set permissions for all persons/workspaces at this location.\n\nCreating an access code for the given location requires a full or user administrator or location administrator auth token with a scope of spark-admin:telephony_config_write.", - Method: "POST", Path: "/telephony/config/locations/{locationId}/outgoingPermission/accessCodes", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Add new access code for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Add new access code for this organization."}, - }, - Body: &Body{}, -} - -var CallingLocationCallHandlingDeleteOutgoingAccessCode = &Operation{ - ID: "CallingLocationCallHandlingDeleteOutgoingAccessCode", Area: "calling", Group: "location-call-handling", Command: "delete-outgoing-access-code", - Summary: "Delete Outgoing Permission Access Code Location", - Description: "Deletes the access code details for a particular location for a customer.\n\nUse Access Codes to bypass the set permissions for all persons/workspaces at this location.\n\nModifying the access code location details requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/locations/{locationId}/outgoingPermission/accessCodes", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Deletes the access code details for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Deletes the access code details for a customer location."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "deleteCodes", Flag: "delete-codes", Type: "[]string"}, - }}, -} - -var CallingLocationCallHandlingDeleteAllOutgoingAccessCode = &Operation{ - ID: "CallingLocationCallHandlingDeleteAllOutgoingAccessCode", Area: "calling", Group: "location-call-handling", Command: "delete-all-outgoing-access-code", - Summary: "Delete all Outgoing Permission Access Code for a Location", - Description: "Deletes all the access codes for a particular location for a customer.\n\nUse Access Codes to bypass the set permissions for all persons/workspaces at this location.\n\nDeleting the access codes requires a full or user administrator or location administrator auth token with the `spark-admin:telephony_config_write` scope.", - Method: "DELETE", Path: "/telephony/config/locations/{locationId}/outgoingPermission/accessCodes", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Deletes all the access codes for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Deletes the access codes for a customer location."}, - }, -} - -var CallingLocationCallHandlingGetOutgoingDigitPattern = &Operation{ - ID: "CallingLocationCallHandlingGetOutgoingDigitPattern", Area: "calling", Group: "location-call-handling", Command: "get-outgoing-digit-pattern", - Summary: "Get Outgoing Permission Digit Pattern for a Location", - Description: "Get the digit patterns for the outbound permission in a location.\n\nUse Digit Patterns to bypass the set permissions for all persons/workspaces at this location.\n\nRetrieving digit patterns requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/outgoingPermission/digitPatterns", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Retrieve the digit patterns for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve the digit patterns for this organization."}, - }, -} - -var CallingLocationCallHandlingCreateOutgoingPermissionDigitPattern = &Operation{ - ID: "CallingLocationCallHandlingCreateOutgoingPermissionDigitPattern", Area: "calling", Group: "location-call-handling", Command: "create-outgoing-permission-digit-pattern", - Summary: "Create Outgoing Permission a new Digit Pattern for a location", - Description: "Add a new digit pattern for the given location for a customer.\n\nUse Digit Patterns to bypass the set permissions for all persons/workspaces at this location.\n\nCreating a digit pattern requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/locations/{locationId}/outgoingPermission/digitPatterns", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Add a new digit pattern for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Add a new digit pattern for this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "name", Flag: "name", Type: "string"}, - {Name: "pattern", Flag: "pattern", Type: "string"}, - {Name: "action", Flag: "action", Type: "string"}, - {Name: "transferEnabled", Flag: "transfer-enabled", Type: "bool"}, - }}, -} - -var CallingLocationCallHandlingDeleteAllOutgoingDigitPatterns = &Operation{ - ID: "CallingLocationCallHandlingDeleteAllOutgoingDigitPatterns", Area: "calling", Group: "location-call-handling", Command: "delete-all-outgoing-digit-patterns", - Summary: "Delete all Outgoing Permission Digit Patterns for a Location", - Description: "Deletes all the digit patterns for a particular location for a customer.\n\nUse Digit Patterns to bypass the set permissions for all persons/workspaces at this location.\n\nDeleting the digit patterns requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/locations/{locationId}/outgoingPermission/digitPatterns", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Delete the digit patterns for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Delete the digit patterns for this organization."}, - }, -} - -var CallingLocationCallHandlingGetOutgoingDigitPattern2 = &Operation{ - ID: "CallingLocationCallHandlingGetOutgoingDigitPattern2", Area: "calling", Group: "location-call-handling", Command: "get-outgoing-digit-pattern-2", - Summary: "Get Details for a Outgoing Permission Digit Pattern for a Location", - Description: "Get the digit pattern details.\n\nUse Digit Patterns to bypass the set permissions for all persons/workspaces at this location.\n\nRetrieving digit pattern details requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/outgoingPermission/digitPatterns/{digitPatternId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Retrieve the digit pattern details for this location."}, - {Name: "digitPatternId", In: InPath, Flag: "digit-pattern-id", Usage: "Retrieve the digit pattern with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve the digit pattern details for this organization."}, - }, -} - -var CallingLocationCallHandlingUpdateOutgoingDigitPattern = &Operation{ - ID: "CallingLocationCallHandlingUpdateOutgoingDigitPattern", Area: "calling", Group: "location-call-handling", Command: "update-outgoing-digit-pattern", - Summary: "Update a Outgoing Permission Digit Pattern for a Location", - Description: "Update the designated digit pattern.\n\nUse Digit Patterns to bypass the set permissions for all persons/workspaces at this location.\n\nUpdating a digit pattern requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/locations/{locationId}/outgoingPermission/digitPatterns/{digitPatternId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Update the digit pattern for this location."}, - {Name: "digitPatternId", In: InPath, Flag: "digit-pattern-id", Usage: "Update the digit pattern with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Update the digit pattern for this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "name", Flag: "name", Type: "string"}, - {Name: "pattern", Flag: "pattern", Type: "string"}, - {Name: "action", Flag: "action", Type: "string"}, - {Name: "transferEnabled", Flag: "transfer-enabled", Type: "bool"}, - }}, -} - -var CallingLocationCallHandlingDeleteOutgoingDigitPattern = &Operation{ - ID: "CallingLocationCallHandlingDeleteOutgoingDigitPattern", Area: "calling", Group: "location-call-handling", Command: "delete-outgoing-digit-pattern", - Summary: "Delete a Outgoing Permission Digit Pattern for a Location", - Description: "Delete the designated digit pattern.\n\nUse Digit Patterns to bypass the set permissions for all persons/workspaces at this location.\n\nDeleting a digit pattern requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/locations/{locationId}/outgoingPermission/digitPatterns/{digitPatternId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Delete the digit pattern for this location."}, - {Name: "digitPatternId", In: InPath, Flag: "digit-pattern-id", Usage: "Delete the digit pattern with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Delete the digit pattern for this organization."}, - }, -} - -var CallingLocationSchedulesList = &Operation{ - ID: "CallingLocationSchedulesList", Area: "calling", Group: "location-schedules", Command: "list", - Summary: "Read the List of Schedules", - Description: "List all schedules for the given location of the organization.\n\nA time schedule establishes a set of times during the day or holidays in the year in which a feature, for example auto attendants, can perform a specific action.\n\nRetrieving this list requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/schedules", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Return the list of schedules for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List schedules for this organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of objects returned to this maximum count."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching objects."}, - {Name: "name", In: InQuery, Flag: "name", Usage: "Only return schedules with the matching name."}, - {Name: "type", In: InQuery, Flag: "type", Usage: "Type of the schedule."}, - }, - Paging: &Paging{}, -} - -var CallingLocationSchedulesCreate = &Operation{ - ID: "CallingLocationSchedulesCreate", Area: "calling", Group: "location-schedules", Command: "create", - Summary: "Create a Schedule", - Description: "Create new Schedule for the given location.\n\nA time schedule establishes a set of times during the day or holidays in the year in which a feature, for example auto attendants, can perform a specific action.\n\nCreating a schedule requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/locations/{locationId}/schedules", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Create the schedule for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Create the schedule for this organization."}, - }, - Body: &Body{}, -} - -var CallingLocationSchedulesGet = &Operation{ - ID: "CallingLocationSchedulesGet", Area: "calling", Group: "location-schedules", Command: "get", - Summary: "Get Details for a Schedule", - Description: "Retrieve Schedule details.\n\nA time schedule establishes a set of times during the day or holidays in the year in which a feature, for example auto attendants, can perform a specific action.\n\nRetrieving schedule details requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/schedules/{type}/{scheduleId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Retrieve schedule details in this location."}, - {Name: "type", In: InPath, Flag: "type", Usage: "Type of the schedule."}, - {Name: "scheduleId", In: InPath, Flag: "schedule-id", Usage: "Retrieve the schedule with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve schedule details from this organization."}, - }, -} - -var CallingLocationSchedulesUpdate = &Operation{ - ID: "CallingLocationSchedulesUpdate", Area: "calling", Group: "location-schedules", Command: "update", - Summary: "Update a Schedule", - Description: "Update the designated schedule.\n\nA time schedule establishes a set of times during the day or holidays in the year in which a feature, for example auto attendants, can perform a specific action.\n\nUpdating a schedule requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: The Schedule ID will change upon modification of the Schedule name.", - Method: "PUT", Path: "/telephony/config/locations/{locationId}/schedules/{type}/{scheduleId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location in which this schedule exists."}, - {Name: "type", In: InPath, Flag: "type", Usage: "Type of schedule."}, - {Name: "scheduleId", In: InPath, Flag: "schedule-id", Usage: "Update schedule with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Update schedule from this organization."}, - }, - Body: &Body{}, -} - -var CallingLocationSchedulesDelete = &Operation{ - ID: "CallingLocationSchedulesDelete", Area: "calling", Group: "location-schedules", Command: "delete", - Summary: "Delete a Schedule", - Description: "Delete the designated Schedule.\n\nA time schedule establishes a set of times during the day or holidays in the year in which a feature, for example auto attendants, can perform a specific action.\n\nDeleting a schedule requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/locations/{locationId}/schedules/{type}/{scheduleId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location from which to delete a schedule."}, - {Name: "type", In: InPath, Flag: "type", Usage: "Type of the schedule."}, - {Name: "scheduleId", In: InPath, Flag: "schedule-id", Usage: "Delete the schedule with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Delete the schedule from this organization."}, - }, -} - -var CallingLocationSchedulesGetEvent = &Operation{ - ID: "CallingLocationSchedulesGetEvent", Area: "calling", Group: "location-schedules", Command: "get-event", - Summary: "Get Details for a Schedule Event", - Description: "Retrieve Schedule Event details.\n\nA time schedule establishes a set of times during the day or holidays in the year in which a feature, for example auto attendants, can perform a specific action.\n\nRetrieving a schedule event's details requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/schedules/{type}/{scheduleId}/events/{eventId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Retrieve schedule event details in this location."}, - {Name: "type", In: InPath, Flag: "type", Usage: "Type of schedule."}, - {Name: "scheduleId", In: InPath, Flag: "schedule-id", Usage: "Retrieve the schedule event with the matching schedule ID."}, - {Name: "eventId", In: InPath, Flag: "event-id", Usage: "Retrieve the schedule event with the matching schedule event ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve schedule event details from this organization."}, - }, -} - -var CallingLocationSchedulesUpdateEvent = &Operation{ - ID: "CallingLocationSchedulesUpdateEvent", Area: "calling", Group: "location-schedules", Command: "update-event", - Summary: "Update a Schedule Event", - Description: "Update the designated Schedule Event.\n\nA time schedule establishes a set of times during the day or holidays in the year in which a feature, for example auto attendants, can perform a specific action.\n\nUpdating a schedule event requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: The schedule event ID will change upon modification of the schedule event name.", - Method: "PUT", Path: "/telephony/config/locations/{locationId}/schedules/{type}/{scheduleId}/events/{eventId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location in which this schedule event exists."}, - {Name: "type", In: InPath, Flag: "type", Usage: "Type of schedule.\n\n+ `businessHours` - Business hours schedule type.\n\n+ `holidays` - Holidays schedule type."}, - {Name: "scheduleId", In: InPath, Flag: "schedule-id", Usage: "Update schedule event with the matching schedule ID."}, - {Name: "eventId", In: InPath, Flag: "event-id", Usage: "Update the schedule event with the matching schedule event ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Update schedule from this organization."}, - }, - Body: &Body{}, -} - -var CallingLocationSchedulesDeleteEvent = &Operation{ - ID: "CallingLocationSchedulesDeleteEvent", Area: "calling", Group: "location-schedules", Command: "delete-event", - Summary: "Delete a Schedule Event", - Description: "Delete the designated Schedule Event.\n\nA time schedule establishes a set of times during the day or holidays in the year in which a feature, for example auto attendants, can perform a specific action.\n\nDeleting a schedule event requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/locations/{locationId}/schedules/{type}/{scheduleId}/events/{eventId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location from which to delete a schedule."}, - {Name: "type", In: InPath, Flag: "type", Usage: "Type of schedule."}, - {Name: "scheduleId", In: InPath, Flag: "schedule-id", Usage: "Delete the schedule with the matching ID."}, - {Name: "eventId", In: InPath, Flag: "event-id", Usage: "Delete the schedule event with the matching schedule event ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Delete the schedule from this organization."}, - }, -} - -var CallingLocationSchedulesCreateEvent = &Operation{ - ID: "CallingLocationSchedulesCreateEvent", Area: "calling", Group: "location-schedules", Command: "create-event", - Summary: "Create a Schedule Event", - Description: "Create new Event for the given location Schedule.\n\nA time schedule establishes a set of times during the day or holidays in the year in which a feature, for example auto attendants, can perform a specific action.\n\nCreating a schedule event requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/locations/{locationId}/schedules/{type}/{scheduleId}/events", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Create the schedule for this location."}, - {Name: "type", In: InPath, Flag: "type", Usage: "Type of schedule."}, - {Name: "scheduleId", In: InPath, Flag: "schedule-id", Usage: "Create event for a given schedule ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Create the schedule for this organization."}, - }, - Body: &Body{}, -} - -var CallingLocationVoicemailGet = &Operation{ - ID: "CallingLocationVoicemailGet", Area: "calling", Group: "location-voicemail", Command: "get", - Summary: "Get Location Voicemail", - Description: "Retrieve voicemail settings for a specific location.\n\nLocation voicemail settings allows you to enable voicemail transcription for a specific location.\n\nRetrieving a location's voicemail settings requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/voicemail", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Retrieve voicemail settings for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve voicemail settings for this organization."}, - }, -} - -var CallingLocationVoicemailUpdate = &Operation{ - ID: "CallingLocationVoicemailUpdate", Area: "calling", Group: "location-voicemail", Command: "update", - Summary: "Update Location Voicemail", - Description: "Update the voicemail settings for a specific location.\n\nLocation voicemail settings allows you to enable voicemail transcription for a specific location.\n\nUpdating a location's voicemail settings requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/locations/{locationId}/voicemail", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Update voicemail settings for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Update voicemail settings for this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "voicemailTranscriptionEnabled", Flag: "voicemail-transcription-enabled", Type: "bool"}, - }}, -} - -var CallingLocationVoicemailGetVoiceportal = &Operation{ - ID: "CallingLocationVoicemailGetVoiceportal", Area: "calling", Group: "location-voicemail", Command: "get-voiceportal", - Summary: "Get VoicePortal", - Description: "Retrieve Voice portal information for the location.\n\nVoice portals provide an interactive voice response (IVR)\nsystem so administrators can manage auto attendant announcements.\n\nRetrieving voice portal information for an organization requires a full read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/voicePortal", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location to which the voice portal belongs."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization to which the voice portal belongs."}, - }, -} - -var CallingLocationVoicemailUpdateVoiceportal = &Operation{ - ID: "CallingLocationVoicemailUpdateVoiceportal", Area: "calling", Group: "location-voicemail", Command: "update-voiceportal", - Summary: "Update VoicePortal", - Description: "Update Voice portal information for the location.\n\nVoice portals provide an interactive voice response (IVR)\nsystem so administrators can manage auto attendant anouncements.\n\nUpdating voice portal information for an organization and/or rules requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/locations/{locationId}/voicePortal", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location to which the voice portal belongs."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Update voicemail rules for this organization."}, - }, - Body: &Body{}, -} - -var CallingLocationVoicemailGetVoiceportalPasscodeRule = &Operation{ - ID: "CallingLocationVoicemailGetVoiceportalPasscodeRule", Area: "calling", Group: "location-voicemail", Command: "get-voiceportal-passcode-rule", - Summary: "Get VoicePortal Passcode Rule", - Description: "Retrieve the voice portal passcode rule for a location.\n\nVoice portals provide an interactive voice response (IVR) system so administrators can manage auto attendant anouncements\n\nRetrieving the voice portal passcode rule requires a full read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/voicePortal/passcodeRules", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Retrieve voice portal passcode rules for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve voice portal passcode rules for this organization."}, - }, -} - -var CallingLocationVoicemailListVoicemailgroup = &Operation{ - ID: "CallingLocationVoicemailListVoicemailgroup", Area: "calling", Group: "location-voicemail", Command: "list-voicemailgroup", - Summary: "List VoicemailGroup", - Description: "List the voicemail group information for the organization.\n\nYou can create a shared voicemail box and inbound FAX box to\nassign to users or call routing features like an auto attendant, call queue, or hunt group.\n\nRetrieving a voicemail group for the organization requires a full read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/voicemailGroups", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization to which the voicemail group belongs."}, - {Name: "locationId", In: InQuery, Flag: "location-id", Usage: "Location to which the voicemail group belongs."}, - {Name: "name", In: InQuery, Flag: "name", Usage: "Search (Contains) based on voicemail group name"}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Search (Contains) based on number or extension"}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the maximum number of events in the response. The maximum value is `200`."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Offset from the first result that you want to fetch."}, - }, - Paging: &Paging{}, -} - -var CallingLocationVoicemailGetGroup = &Operation{ - ID: "CallingLocationVoicemailGetGroup", Area: "calling", Group: "location-voicemail", Command: "get-group", - Summary: "Get Location Voicemail Group", - Description: "Retrieve voicemail group details for a location.\n\nManage your voicemail group settings for a specific location, like when you want your voicemail to be active, message storage settings, and how you would like to be notified of new voicemail messages.\n\nRetrieving voicemail group details requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/voicemailGroups/{voicemailGroupId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Retrieve voicemail group details for this location."}, - {Name: "voicemailGroupId", In: InPath, Flag: "voicemail-group-id", Usage: "Retrieve voicemail group details for this voicemail group ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve voicemail group details for a customer location."}, - }, -} - -var CallingLocationVoicemailUpdateGroup = &Operation{ - ID: "CallingLocationVoicemailUpdateGroup", Area: "calling", Group: "location-voicemail", Command: "update-group", - Summary: "Modify Location Voicemail Group", - Description: "Modifies the voicemail group location details for a particular location for a customer.\n\nManage your voicemail settings, like when you want your voicemail to be active, message storage settings, and how you would like to be notified of new voicemail messages.\n\nModifying the voicemail group location details requires a full, user administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/locations/{locationId}/voicemailGroups/{voicemailGroupId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Modifies the voicemail group details for this location."}, - {Name: "voicemailGroupId", In: InPath, Flag: "voicemail-group-id", Usage: "Modifies the voicemail group details for this voicemail group ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Modifies the voicemail group details for a customer location."}, - }, - Body: &Body{}, -} - -var CallingLocationVoicemailDeleteGroup = &Operation{ - ID: "CallingLocationVoicemailDeleteGroup", Area: "calling", Group: "location-voicemail", Command: "delete-group", - Summary: "Delete a Voicemail Group for a Location", - Description: "Delete the designated voicemail group.\n\nDeleting a voicemail group requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/locations/{locationId}/voicemailGroups/{voicemailGroupId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location from which to delete a voicemail group."}, - {Name: "voicemailGroupId", In: InPath, Flag: "voicemail-group-id", Usage: "Delete the voicemail group with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Delete the voicemail group from this organization."}, - }, -} - -var CallingLocationVoicemailCreateGroup = &Operation{ - ID: "CallingLocationVoicemailCreateGroup", Area: "calling", Group: "location-voicemail", Command: "create-group", - Summary: "Create a new Voicemail Group for a Location", - Description: "Create a new voicemail group for the given location for a customer.\n\nA voicemail group can be created for given location for a customer.\n\nCreating a voicemail group for the given location requires a full or user administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/locations/{locationId}/voicemailGroups", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Create a new voice mail group for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Create a new voice mail group for this organization."}, - }, - Body: &Body{}, -} - -var CallingLocationVoicemailGetGroupFaxAvailableNumbers = &Operation{ - ID: "CallingLocationVoicemailGetGroupFaxAvailableNumbers", Area: "calling", Group: "location-voicemail", Command: "get-group-fax-available-numbers", - Summary: "Get Voicemail Group Fax Message Available Phone Numbers", - Description: "List the standard and service PSTN numbers that are available to be assigned as a voicemail group's FAX message phone number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/voicemailGroups/faxMessage/availableNumbers", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Return the list of phone numbers for this location within the given organization. The maximum length is 36."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List numbers for this organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of phone numbers returned to this maximum count. The default is 2000."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching phone numbers. The default is 0."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - }, - Paging: &Paging{}, -} - -var CallingLocationVoicemailGetGroupAvailableNumbers = &Operation{ - ID: "CallingLocationVoicemailGetGroupAvailableNumbers", Area: "calling", Group: "location-voicemail", Command: "get-group-available-numbers", - Summary: "Get Voicemail Group Available Phone Numbers", - Description: "List the service and standard PSTN numbers that are available to be assigned as a voicemail group's phone number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/voicemailGroups/availableNumbers", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Return the list of phone numbers for this location within the given organization. The maximum length is 36."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List numbers for this organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of phone numbers returned to this maximum count. The default is 2000."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching phone numbers. The default is 0."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - }, - Paging: &Paging{}, -} - -var CallingLocationVoicemailGetVoiceportalAvailableNumbers = &Operation{ - ID: "CallingLocationVoicemailGetVoiceportalAvailableNumbers", Area: "calling", Group: "location-voicemail", Command: "get-voiceportal-available-numbers", - Summary: "Get VoicePortal Available Phone Numbers", - Description: "List the service and standard PSTN numbers that are available to be assigned as the location voice portal's phone number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/voicePortal/availableNumbers", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Return the list of phone numbers for this location within the given organization. The maximum length is 36."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List numbers for this organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of phone numbers returned to this maximum count. The default is 2000."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching phone numbers. The default is 0."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - }, - Paging: &Paging{}, -} - -var CallingLocationsList = &Operation{ - ID: "CallingLocationsList", Area: "calling", Group: "locations", Command: "list", - Summary: "List Locations", - Description: "List locations for an organization.\n\n* Use query parameters to filter the result set by location name, ID, or organization.\n\n* Long result sets will be split into [pages](/docs/basics#pagination).\n\n* Searching and viewing locations in your organization requires an administrator or location administrator auth token with any of the following scopes: `spark-admin:locations_read`, `spark-admin:people_read` or `spark-admin:device_read`.", - Method: "GET", Path: "/locations", Host: HostWebex, - Params: []Param{ - {Name: "name", In: InQuery, Flag: "name", Usage: "List locations whose name contains this string (case-insensitive)."}, - {Name: "id", In: InQuery, Flag: "id", Usage: "List locations by ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List locations in this organization. Only admin users of another organization (such as partners) may use this parameter."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the maximum number of location in the response."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, -} - -var CallingLocationsCreate = &Operation{ - ID: "CallingLocationsCreate", Area: "calling", Group: "locations", Command: "create", - Summary: "Create a Location", - Description: "Create a new Location for a given organization. Only an admin in the organization can create a new Location.\n\n* Creating a location in your organization requires a full administrator auth token with a scope of `spark-admin:locations_write`.\n\n* Partners may specify `orgId` query parameter to create location in managed organization.\n\n* The following body parameters are required to create a new location: \n * `name`\n * `timeZone`\n * `preferredLanguage`\n * `address`\n * `announcementLanguage`.\n\n* `latitude`, `longitude` and `notes` are optional parameters to create a new location.\n\n* **Important:** While the `name` field supports up to 256 characters, locations that will be enabled for Webex Calling must have names with a maximum of 80 characters. If you plan to enable calling for this location, ensure the name does not exceed 80 characters to maintain compatibility with Control Hub and calling features.", - Method: "POST", Path: "/locations", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Create a location common attribute for this organization."}, - }, - Body: &Body{}, -} - -var CallingLocationsGet = &Operation{ - ID: "CallingLocationsGet", Area: "calling", Group: "locations", Command: "get", - Summary: "Get Location Details", - Description: "Shows details for a location, by ID.\n\n* Specify the location ID in the `locationId` parameter in the URI.\n\n* Use query parameter `orgId` to filter the result set by organization(optional).\n\n* Searching and viewing location in your organization requires an administrator or location administrator auth token with any of the following scopes:\n\n * `spark-admin:locations_read`\n * `spark-admin:people_read`\n * `spark-admin:device_read`", - Method: "GET", Path: "/locations/{locationId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "A unique identifier for the location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Get location common attributes for this organization."}, - }, -} - -var CallingLocationsUpdate = &Operation{ - ID: "CallingLocationsUpdate", Area: "calling", Group: "locations", Command: "update", - Summary: "Update a Location", - Description: "Update details for a location, by ID.\n\n* Updating a location in your organization requires a full administrator or location administrator auth token with a scope of `spark-admin:locations_write`.\n\n* Specify the location ID in the `locationId` parameter in the URI.\n\n* Partners may specify `orgId` query parameter to update location in managed organization.\n\n* **Important:** While the `name` field supports up to 256 characters, locations that are enabled for Webex Calling must have names with a maximum of 80 characters. If the location is enabled for calling, ensure the name does not exceed 80 characters to maintain compatibility with Control Hub and calling features.", - Method: "PUT", Path: "/locations/{locationId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Update location common attributes for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Update location common attributes for this organization."}, - }, - Body: &Body{}, -} - -var CallingLocationsListFloors = &Operation{ - ID: "CallingLocationsListFloors", Area: "calling", Group: "locations", Command: "list-floors", - Summary: "List Location Floors", - Description: "List location floors.\nRequires an administrator auth token with the `spark-admin:locations_read` scope.", - Method: "GET", Path: "/locations/{locationId}/floors", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "A unique identifier for the location."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var CallingLocationsCreateFloor = &Operation{ - ID: "CallingLocationsCreateFloor", Area: "calling", Group: "locations", Command: "create-floor", - Summary: "Create a Location Floor", - Description: "Create a new floor in the given location. The `displayName` parameter is optional, and omitting it will result in the creation of a floor without that value set.\nRequires an administrator auth token with the `spark-admin:locations_write` scope.", - Method: "POST", Path: "/locations/{locationId}/floors", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "A unique identifier for the location."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "floorNumber", Flag: "floor-number", Type: "int64"}, - {Name: "displayName", Flag: "display-name", Type: "string"}, - }}, -} - -var CallingLocationsGetFloor = &Operation{ - ID: "CallingLocationsGetFloor", Area: "calling", Group: "locations", Command: "get-floor", - Summary: "Get Location Floor Details", - Description: "Shows details for a floor, by ID. Specify the floor ID in the `floorId` parameter in the URI.\nRequires an administrator auth token with the `spark-admin:locations_read` scope.", - Method: "GET", Path: "/locations/{locationId}/floors/{floorId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "A unique identifier for the location."}, - {Name: "floorId", In: InPath, Flag: "floor-id", Usage: "A unique identifier for the floor."}, - }, -} - -var CallingLocationsUpdateFloor = &Operation{ - ID: "CallingLocationsUpdateFloor", Area: "calling", Group: "locations", Command: "update-floor", - Summary: "Update a Location Floor", - Description: "Updates details for a floor, by ID. Specify the floor ID in the `floorId` parameter in the URI. Include all details for the floor returned by a previous call to [Get Location Floor Details](/docs/api/v1/locations/get-location-floor-details). Omitting the optional `displayName` field will result in that field no longer being defined for the floor.\nRequires an administrator auth token with the `spark-admin:locations_write` scope.", - Method: "PUT", Path: "/locations/{locationId}/floors/{floorId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "A unique identifier for the location."}, - {Name: "floorId", In: InPath, Flag: "floor-id", Usage: "A unique identifier for the floor."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "floorNumber", Flag: "floor-number", Type: "int64"}, - {Name: "displayName", Flag: "display-name", Type: "string"}, - }}, -} - -var CallingLocationsDeleteFloor = &Operation{ - ID: "CallingLocationsDeleteFloor", Area: "calling", Group: "locations", Command: "delete-floor", - Summary: "Delete a Location Floor", - Description: "Deletes a floor, by ID.\nRequires an administrator auth token with the `spark-admin:locations_write` scope.", - Method: "DELETE", Path: "/locations/{locationId}/floors/{floorId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "A unique identifier for the location."}, - {Name: "floorId", In: InPath, Flag: "floor-id", Usage: "A unique identifier for the floor."}, - }, -} - -var CallingLocationsDelete = &Operation{ - ID: "CallingLocationsDelete", Area: "calling", Group: "locations", Command: "delete", - Summary: "Delete Location", - Description: "Delete a location, by ID.\n\n* Specify the location ID in the `locationId` parameter in the URI.\n\n* Deleting a location in your organization requires a full administrator auth token with a scope of `spark-admin:locations_write`.\n\n* NOTE: Disabling Webex Calling for a Webex Calling enabled location is required prior to deleting a location.", - Method: "DELETE", Path: "/locations/{locationId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "A unique identifier for the location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Specify the organization for the location to be deleted."}, - }, -} - -var CallingNumbersCreatePhoneLocation = &Operation{ - ID: "CallingNumbersCreatePhoneLocation", Area: "calling", Group: "numbers", Command: "create-phone-location", - Summary: "Add Phone Numbers to a location", - Description: "Adds a specified set of phone numbers to a location for an organization. Phone numbers must follow the E.164 format.\n\nEach location has a set of phone numbers that can be assigned to people, workspaces, or features. Active phone numbers are in service.\n\nAdding a phone number to a location requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\nPhone numbers included in the request that already exist in the location will simply be ignored.\n\n
\n\n
This API is only supported for adding DID and Toll-free numbers to non-integrated PSTN connection types such as Local Gateway (LGW) and Non-integrated CPP. It should never be used for locations with integrated PSTN connection types like Cisco Calling Plans or Integrated CCP because backend data issues may occur.\n
\n
Mobile numbers can be added to any location that has PSTN connection setup. Only 20 mobile numbers can be added per request.\n
", - Method: "POST", Path: "/telephony/config/locations/{locationId}/numbers", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "LocationId to which numbers should be added."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization of the Route Group."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "phoneNumbers", Flag: "phone-numbers", Type: "[]string"}, - {Name: "numberType", Flag: "number-type", Type: "string"}, - {Name: "numberUsageType", Flag: "number-usage-type", Type: "string"}, - {Name: "state", Flag: "state", Type: "string"}, - {Name: "subscriptionId", Flag: "subscription-id", Type: "string"}, - {Name: "carrierId", Flag: "carrier-id", Type: "string"}, - }}, -} - -var CallingNumbersManageStateLocation = &Operation{ - ID: "CallingNumbersManageStateLocation", Area: "calling", Group: "numbers", Command: "manage-state-location", - Summary: "Manage Number State in a location", - Description: "Activate or deactivate the specified set of phone numbers in a location for an organization.\n\nEach location has a set of phone numbers that can be assigned to people, workspaces, or features. Phone numbers must follow the E.164 format.\n\nActive phone numbers are in service. A mobile number is activated when assigned to a user. This API will not activate or deactivate mobile numbers.\n\nManaging phone number state in a location requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n
\n\n
This API is only supported for non-integrated PSTN connection types of Local Gateway (LGW) and Non-integrated CCP.
", - Method: "PUT", Path: "/telephony/config/locations/{locationId}/numbers", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "`LocationId` to which numbers should be added."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization of the Route Group."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "phoneNumbers", Flag: "phone-numbers", Type: "[]string"}, - {Name: "action", Flag: "action", Type: "string"}, - }}, -} - -var CallingNumbersDeletePhoneLocation = &Operation{ - ID: "CallingNumbersDeletePhoneLocation", Area: "calling", Group: "numbers", Command: "delete-phone-location", - Summary: "Remove phone numbers from a location", - Description: "Remove the specified set of phone numbers from a location for an organization.\n\nPhone numbers must follow the E.164 format.\n\nRemoving a mobile number may require more time depending on mobile carrier capabilities.\n\nRemoving a phone number from a location requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\nA location's main number cannot be removed.\n\n
\n\n
This API is only supported for non-integrated PSTN connection types of Local Gateway (LGW) and Non-integrated CPP. It should never be used for locations with integrated PSTN connection types like Cisco Calling Plans or Integrated CCP because backend data issues may occur.
", - Method: "DELETE", Path: "/telephony/config/locations/{locationId}/numbers", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "`LocationId` to which numbers should be added."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization of the Route Group."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "phoneNumbers", Flag: "phone-numbers", Type: "[]string"}, - }}, -} - -var CallingNumbersValidatePhone = &Operation{ - ID: "CallingNumbersValidatePhone", Area: "calling", Group: "numbers", Command: "validate-phone", - Summary: "Validate phone numbers", - Description: "Validate the list of phone numbers in an organization. Each phone number's availability is indicated in the response.\n\nEach location has a set of phone numbers that can be assigned to people, workspaces, or features. Phone numbers must follow the E.164 format for all countries, except for the United States, which can also follow the National format. Active phone numbers are in service.\n\nValidating a phone number in an organization requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/actions/validateNumbers/invoke", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization of the Route Group."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "phoneNumbers", Flag: "phone-numbers", Type: "[]string"}, - }}, -} - -var CallingNumbersGetPhoneOrg = &Operation{ - ID: "CallingNumbersGetPhoneOrg", Area: "calling", Group: "numbers", Command: "get-phone-org", - Summary: "Get Phone Numbers for an Organization with Given Criteria", - Description: "List all the phone numbers for the given organization along with the status and owner (if any).\n\nNumbers can be standard, service, or mobile. Both standard and service numbers are PSTN numbers.\nService numbers are considered high-utilization or high-concurrency phone numbers and can be assigned to features like auto-attendants, call queues, and hunt groups.\nPhone numbers can be linked to a specific location, be active or inactive, and be assigned or unassigned.\nThe owner of a number is the person, workspace, or feature to which the number is assigned.\nOnly a person can own a mobile number.\n\nRetrieving this list requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/numbers", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List numbers for this organization."}, - {Name: "locationId", In: InQuery, Flag: "location-id", Usage: "Return the list of phone numbers for this location within the given organization. The maximum length is 36."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of phone numbers returned to this maximum count. The default is 2000."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching phone numbers. The default is 0."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Search for this `phoneNumber`."}, - {Name: "available", In: InQuery, Flag: "available", Usage: "Search among the available phone numbers. This parameter cannot be used along with `ownerType` parameter when set to `true`."}, - {Name: "order", In: InQuery, Flag: "order", Usage: "Sort the list of phone numbers based on the following:`lastName`,`dn`,`extension`. Sorted by number and extension in ascending order."}, - {Name: "ownerName", In: InQuery, Flag: "owner-name", Usage: "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255."}, - {Name: "ownerId", In: InQuery, Flag: "owner-id", Usage: "Returns only the matched number/extension entries assigned to the feature with the specified UUID or `broadsoftId`."}, - {Name: "ownerType", In: InQuery, Flag: "owner-type", Usage: "Returns the list of phone numbers of the given `ownerType`. Possible input values:"}, - {Name: "extension", In: InQuery, Flag: "extension", Usage: "Returns the list of phone numbers with the given extension."}, - {Name: "numberType", In: InQuery, Flag: "number-type", Usage: "Returns the filtered list of phone numbers that contain a given type of number. `available` or `state` query parameters cannot be used when `numberType=EXTENSION`. Possible input values:"}, - {Name: "phoneNumberType", In: InQuery, Flag: "phone-number-type", Usage: "Returns the filtered list of phone numbers of the given `phoneNumberType`. Response excludes any extensions without numbers. Possible input values:"}, - {Name: "state", In: InQuery, Flag: "state", Usage: "Returns the list of phone numbers with the matching state. Response excludes any extensions without numbers. Possible input values:"}, - {Name: "details", In: InQuery, Flag: "details", Usage: "Returns the overall count of the phone numbers along with other details for a given organization."}, - {Name: "tollFreeNumbers", In: InQuery, Flag: "toll-free-numbers", Usage: "Returns the list of toll-free phone numbers."}, - {Name: "restrictedNonGeoNumbers", In: InQuery, Flag: "restricted-non-geo-numbers", Usage: "Returns the list of restricted non-geographical numbers."}, - {Name: "includedTelephonyTypes", In: InQuery, Flag: "included-telephony-types", Usage: "Returns the list of phone numbers that are of given `includedTelephonyTypes`. By default, if this query parameter is not provided, it will list both PSTN and Mobile Numbers. Possible input values are PSTN_NUMBER or MOBILE_NUMBER."}, - {Name: "serviceNumber", In: InQuery, Flag: "service-number", Usage: "Returns the list of service phone numbers."}, - }, - Paging: &Paging{}, -} - -var CallingNumbersListManageJobs = &Operation{ - ID: "CallingNumbersListManageJobs", Area: "calling", Group: "numbers", Command: "list-manage-jobs", - Summary: "List Manage Numbers Jobs", - Description: "Lists all Manage Numbers jobs for the given organization in order of most recent one to oldest one irrespective of its status.\n\nThe public API only supports initiating jobs which move numbers between locations.\n\nVia Control Hub they can initiate both the move and delete, so this listing can show both.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/jobs/numbers/manageNumbers", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve list of Manage Number jobs for this organization."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of jobs. Default is 0."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of jobs returned to this maximum count. Default is 2000."}, - }, - Paging: &Paging{}, -} - -var CallingNumbersInitiateJobs = &Operation{ - ID: "CallingNumbersInitiateJobs", Area: "calling", Group: "numbers", Command: "initiate-jobs", - Summary: "Initiate Number Jobs", - Description: "Starts the execution of an operation on a set of numbers. Supported operations are: `MOVE`, `NUMBER_USAGE_CHANGE`.\n\nUp to 1000 numbers can be given in `MOVE` operation type and `NUMBER_USAGE_CHANGE` operation type per request.\nIf another move number job request is initiated while a move job is in progress, the API call will receive a `409` HTTP status code.\n\nIn order to move a number the following is required:\n\n* The number must be unassigned.\n\n* Both locations must have the same PSTN Connection Type.\n\n* Both locations must have the same PSTN Provider.\n\n* Both locations have to be in the same country.\n\nFor example, you can move from Cisco Calling Plan to Cisco Calling Plan, but you cannot move from Cisco Calling Plan to a location with Cloud Connected PSTN.\n\nIn order to change the number usage the following is required:\n\n* The number must be unassigned.\n\n* Number Usage Type can be set to `NONE` if carrier has the PSTN service `GEOGRAPHIC_NUMBERS`.\n\n* Number Usage Type can be set to `SERVICE` if carrier has the PSTN service `SERVICE_NUMBERS`.\n\nFor example, you can initiate a `NUMBER_USAGE_CHANGE` job to change the number type from Standard number to Service number, or the other way around.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/jobs/numbers/manageNumbers", Host: HostWebex, - Body: &Body{}, -} - -var CallingNumbersGetManageJobStatus = &Operation{ - ID: "CallingNumbersGetManageJobStatus", Area: "calling", Group: "numbers", Command: "get-manage-job-status", - Summary: "Get Manage Numbers Job Status", - Description: "Returns the status and other details of the job.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/jobs/numbers/manageNumbers/{jobId}", Host: HostWebex, - Params: []Param{ - {Name: "jobId", In: InPath, Flag: "job-id", Usage: "Retrieve job details for this `jobId`."}, - }, -} - -var CallingNumbersPauseManageJob = &Operation{ - ID: "CallingNumbersPauseManageJob", Area: "calling", Group: "numbers", Command: "pause-manage-job", - Summary: "Pause the Manage Numbers Job", - Description: "Pause the running Manage Numbers Job. A paused job can be resumed.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/jobs/numbers/manageNumbers/{jobId}/actions/pause/invoke", Host: HostWebex, - Params: []Param{ - {Name: "jobId", In: InPath, Flag: "job-id", Usage: "Pause the Manage Numbers job for this `jobId`."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Pause the Manage Numbers job for this organization."}, - }, -} - -var CallingNumbersResumeManageJob = &Operation{ - ID: "CallingNumbersResumeManageJob", Area: "calling", Group: "numbers", Command: "resume-manage-job", - Summary: "Resume the Manage Numbers Job", - Description: "Resume the paused Manage Numbers Job. A paused job can be resumed.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/jobs/numbers/manageNumbers/{jobId}/actions/resume/invoke", Host: HostWebex, - Params: []Param{ - {Name: "jobId", In: InPath, Flag: "job-id", Usage: "Resume the Manage Numbers job for this `jobId`."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Resume the Manage Numbers job for this organization."}, - }, -} - -var CallingNumbersListManageJobErrors = &Operation{ - ID: "CallingNumbersListManageJobErrors", Area: "calling", Group: "numbers", Command: "list-manage-job-errors", - Summary: "List Manage Numbers Job errors", - Description: "Lists all error details of Manage Numbers job. This will not list any errors if `exitCode` is `COMPLETED`. If the status is `COMPLETED_WITH_ERRORS` then this lists the cause of failures.\n\nList of possible Errors:\n\n+ BATCH-1017021 - Failed to move because it is an inactive number.\n\n+ BATCH-1017022 - Failed to move because the source location and target location have different CCP providers.\n\n+ BATCH-1017023 - Failed because it is not an unassigned number.\n\n+ BATCH-1017024 - Failed because it is a main number.\n\n+ BATCH-1017027 - Manage Numbers Move Operation is not supported.\n\n+ BATCH-1017031 - Hydra request is supported only for single number move job.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/jobs/numbers/manageNumbers/{jobId}/errors", Host: HostWebex, - Params: []Param{ - {Name: "jobId", In: InPath, Flag: "job-id", Usage: "Retrieve the error details for this `jobId`."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve list of jobs for this organization."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Specifies the error offset from the first result that you want to fetch."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Specifies the maximum number of records that you want to fetch."}, - }, - Paging: &Paging{}, -} - -var CallingPartnerReportsTemplatesList = &Operation{ - ID: "CallingPartnerReportsTemplatesList", Area: "calling", Group: "partner-reports-templates", Command: "list", - Summary: "List Reports", - Description: "Lists all reports previously generated from a given region. Use query parameters to filter the response. The parameters are optional.\n\nTo access this endpoint, you must use an administrator token with `spark-admin:reports_read` and `identity:people_read` scopes.\n\n
CSV reports for Webex suite services are only supported for organizations based in one region per API request. Organizations based in a different region will require a separate request with region specified.
\n\n
When no region is specified, the request defaults to Partner organization's home region.
\n\n
Reports are usually provided in zip format. A content-header application/zip or application/octet-stream does indicate the zip format. There is usually no .zip file extension.
", - Method: "GET", Path: "/partner/reports", Host: HostWebex, - Params: []Param{ - {Name: "service", In: InQuery, Flag: "service", Usage: "List reports which use this service."}, - {Name: "templateId", In: InQuery, Flag: "template-id", Usage: "List reports with this report template ID."}, - {Name: "from", In: InQuery, Flag: "from", Usage: "List reports that were created on or after this date."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "List reports that were created before this date."}, - {Name: "regionId", In: InQuery, Flag: "region-id", Usage: "Data in the report will be from organizations in this region, for example, US, CA, or EU."}, - {Name: "onBehalfOfSubPartnerOrgId", In: InQuery, Flag: "on-behalf-of-sub-partner-org-id", Usage: "The encoded organization ID for the sub partner."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, - TimeRange: TimeISO, -} - -var CallingPartnerReportsTemplatesCreate = &Operation{ - ID: "CallingPartnerReportsTemplatesCreate", Area: "calling", Group: "partner-reports-templates", Command: "create", - Summary: "Create a Report", - Description: "Create a new report. A new report can be created using `templateId` available from the _List Report Templates_ API. For each `templateId`, there are a set of validation rules that need to be followed.\n\nThe `templateId` parameter is a number. However, it is a limitation of developer.webex.com platform that it is passed as a string when you try to test the API from here.\n\nTo access this endpoint, you must use an administrator token with `spark-admin:reports_write` and `identity:people_read` scopes.\n\n**Notes**:\n\n
CSV reports for Webex suite services are only created for organizations in the specified region. Organizations based in a different region will require a separate request with region specified.
\n\n
When no region is specified, the request defaults to Partner organization's home region. A request against a region where there are no organizations will return blank CSV files.
", - Method: "POST", Path: "/partner/reports", Host: HostWebex, - Params: []Param{ - {Name: "onBehalfOfSubPartnerOrgId", In: InQuery, Flag: "on-behalf-of-sub-partner-org-id", Usage: "The encoded organization ID for the sub partner."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "templateId", Flag: "template-id", Type: "int64"}, - {Name: "startDate", Flag: "start-date", Type: "string"}, - {Name: "endDate", Flag: "end-date", Type: "string"}, - {Name: "regionId", Flag: "region-id", Type: "string"}, - }}, -} - -var CallingPartnerReportsTemplatesGet = &Operation{ - ID: "CallingPartnerReportsTemplatesGet", Area: "calling", Group: "partner-reports-templates", Command: "get", - Summary: "Get Report Details", - Description: "Shows details for a report by report ID.\n\nSpecify the report ID in the `reportId` parameter in the URI.\n\nTo access this endpoint, you must use an administrator token with `spark-admin:reports_read` and `identity:people_read` scopes.\n\n**Notes**:\n\n
Reports are usually provided in zip format. A content-header application/zip or application/octet-stream does indicate the zip format. There is usually no .zip file extension.
", - Method: "GET", Path: "/partner/reports/{reportId}", Host: HostWebex, - Params: []Param{ - {Name: "reportId", In: InPath, Flag: "report-id", Usage: "The unique identifier for the report."}, - {Name: "onBehalfOfSubPartnerOrgId", In: InQuery, Flag: "on-behalf-of-sub-partner-org-id", Usage: "The encoded organization ID for the sub partner."}, - }, -} - -var CallingPartnerReportsTemplatesDelete = &Operation{ - ID: "CallingPartnerReportsTemplatesDelete", Area: "calling", Group: "partner-reports-templates", Command: "delete", - Summary: "Delete a Report", - Description: "Remove a report from the system.\n\nSpecify the report ID in the `reportId` parameter in the URI\n\nTo access this endpoint, you must use an administrator token with `spark-admin:reports_write` scope.", - Method: "DELETE", Path: "/partner/reports/{reportId}", Host: HostWebex, - Params: []Param{ - {Name: "reportId", In: InPath, Flag: "report-id", Usage: "The unique identifier for the report."}, - {Name: "onBehalfOfSubPartnerOrgId", In: InQuery, Flag: "on-behalf-of-sub-partner-org-id", Usage: "The encoded organization ID for the sub partner."}, - }, -} - -var CallingPartnerReportsTemplatesList2 = &Operation{ - ID: "CallingPartnerReportsTemplatesList2", Area: "calling", Group: "partner-reports-templates", Command: "list-2", - Summary: "List Report Templates", - Description: "List report templates. Report templates are available for use with the Partner Reports API.\n\nTo access this endpoint, you must use an administrator token with `spark-admin:reports_read` and `identity:people_read` [scopes](/docs/integrations#scopes). The authenticated user must be a Partner full administrator or Partner read-only administrator of the organization.", - Method: "GET", Path: "/partner/reports/templates", Host: HostWebex, - Params: []Param{ - {Name: "onBehalfOfSubPartnerOrgId", In: InQuery, Flag: "on-behalf-of-sub-partner-org-id", Usage: "The encoded organization ID for the sub partner."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var CallingPeopleList = &Operation{ - ID: "CallingPeopleList", Area: "calling", Group: "people", Command: "list", - Summary: "List People", - Description: "List people in your organization. For most users, either the `email` or `displayName` parameter is required. Admin users can omit these fields and list all users in their organization.\n\nResponse properties associated with a user's presence status, such as `status` or `lastActivity`, will only be returned for people within your organization or an organization you manage. Presence information will not be returned if the authenticated user has [disabled status sharing](https://help.webex.com/nkzs6wl/). Calling /people frequently to poll `status` information for a large set of users will quickly lead to `429` errors and throttling of such requests and is therefore discouraged.\n\nAdmin users can include `Webex Calling` (BroadCloud) user details in the response by specifying `callingData` parameter as `true`. Admin users can list all users in a location. Admin users will receive an enriched payload with additional administrative fields like `licenses`,`roles`, `locations` etc. These fields are shown when accessing a user via GET /people/{id}, not when doing a GET /people?id=\n\nLookup by `email` is only supported for people within the same org or where a partner admin relationship is in place.\n\nLookup by `roles` is only supported for Admin users for the people within the same org.\n\nLong result sets will be split into [pages](/docs/basics#pagination).", - Method: "GET", Path: "/people", Host: HostWebex, - Params: []Param{ - {Name: "email", In: InQuery, Flag: "email", Usage: "List people with this email address. For non-admin requests, either this or `displayName` are required. With the exception of partner admins and a managed org relationship, people lookup by email is only available for users in the same org."}, - {Name: "displayName", In: InQuery, Flag: "display-name", Usage: "List people whose name starts with this string. For non-admin requests, either this or email are required."}, - {Name: "id", In: InQuery, Flag: "id", Usage: "List people by ID. Accepts up to 85 person IDs separated by commas. If this parameter is provided then presence information (such as the `lastActivity` or `status` properties) will not be included in the response."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List people in this organization. Only admin users of another organization (such as partners) may use this parameter."}, - {Name: "roles", In: InQuery, Flag: "roles", Usage: "List of roleIds separated by commas."}, - {Name: "callingData", In: InQuery, Flag: "calling-data", Usage: "Include Webex Calling user details in the response."}, - {Name: "locationId", In: InQuery, Flag: "location-id", Usage: "List people present in this location."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the maximum number of people in the response. If `callingData`=true, then `max` will not be more than 100. If `locationId` is specified then `max` will not be more than 50."}, - {Name: "excludeStatus", In: InQuery, Flag: "exclude-status", Usage: "Omit people status/availability to enhance query performance."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, -} - -var CallingPeopleCreatePerson = &Operation{ - ID: "CallingPeopleCreatePerson", Area: "calling", Group: "people", Command: "create-person", - Summary: "Create a Person", - Description: "Create a new user account for a given organization. Only an admin can create a new user account.\n\nAt least one of the following body parameters is required to create a new user: `displayName`, `firstName`, `lastName`.\n\nCurrently, users may have only one email address associated with their account. The `emails` parameter is an array, which accepts multiple values to allow for future expansion, but currently only one email address will be used for the new user.\n\nAdmin users can include `Webex calling` (BroadCloud) user details in the response by specifying `callingData` parameter as true. It may happen that the POST request with calling data returns a 400 status, but the person was created still. One way to get into this state is if an invalid phone number is assigned to a user. The people API aggregates calls to several other microservices, and one may have failed. A best practice is to check if the user exists before retrying. This can be done with the user's email address and a GET /people.\n\nWhen doing attendee management, append `#attendee` to the `siteUrl` parameter (e.g. `mysite.webex.com#attendee`) to make the new user an attendee for a site.\n\n**NOTES**:\n\n* For creating a `Webex Calling` user, you must provide `phoneNumbers` or `extension`, `locationId`, and `licenses` string in the same request.\n\n* `SipAddresses` are asigned via an asynchronous process. This means that the POST response may not show the SIPAddresses immediately. Instead you can verify them with a separate GET to /people, after they were newly configured.\n\n* When assigning multiple licenses in a single request, the system will assign all valid and available licenses. If any requested licenses cannot be assigned, the operation will continue with the remaining licenses. As a result, it is possible that not all requested licenses are assigned to the user.", - Method: "POST", Path: "/people", Host: HostWebex, - Params: []Param{ - {Name: "callingData", In: InQuery, Flag: "calling-data", Usage: "Include Webex Calling user details in the response."}, - {Name: "minResponse", In: InQuery, Flag: "min-response", Usage: "Set to `true` to improve performance by omitting person details and returning only the ID in the response when successful. If unsuccessful the response will have optional error details."}, - }, - Body: &Body{}, -} - -var CallingPeopleGetPerson = &Operation{ - ID: "CallingPeopleGetPerson", Area: "calling", Group: "people", Command: "get-person", - Summary: "Get Person Details", - Description: "Shows details for a person, by ID.\n\nResponse properties associated with a user's presence status, such as `status` or `lastActivity`, will only be displayed for people within your organization or an organization you manage. Presence information will not be shown if the authenticated user has [disabled status sharing](https://help.webex.com/nkzs6wl/).\n\nAdmin users can include `Webex Calling` (BroadCloud) user details in the response by specifying `callingData` parameter as `true`.\n\nSpecify the person ID in the `personId` parameter in the URI.", - Method: "GET", Path: "/people/{personId}", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - {Name: "callingData", In: InQuery, Flag: "calling-data", Usage: "Include Webex Calling user details in the response."}, - }, -} - -var CallingPeopleUpdatePerson = &Operation{ - ID: "CallingPeopleUpdatePerson", Area: "calling", Group: "people", Command: "update-person", - Summary: "Update a Person", - Description: "Update details for a person, by ID.\n\nSpecify the person ID in the `personId` parameter in the URI. Only an admin can update a person details.\n\nInclude all details for the person. This action expects all user details to be present in the request. A common approach is to first [GET the person's details](/docs/api/v1/people/get-person-details), make changes, then PUT both the changed and unchanged values.\n\nAdmin users can include `Webex Calling` (BroadCloud) user details in the response by specifying `callingData` parameter as true.\n\nWhen doing attendee management, to update a user from host role to an attendee for a site append `#attendee` to the respective `siteUrl` and remove the meeting host license for this site from the license array.\nTo update a person from an attendee role to a host for a site, add the meeting license for this site in the meeting array, and remove that site from the `siteurl` parameter.\n\nTo remove the attendee privilege for a user on a meeting site, remove the `sitename#attendee` from the `siteUrl`s array. The `showAllTypes` parameter must be set to `true`.\n\n**NOTE**:\n\n* The `locationId` can only be set when assigning a calling license to a user. It cannot be changed if a user is already an existing calling user.\n\n* The `extension` field should be used to update the Webex Calling extension for a person. The extension value should not include the location routing prefix. The `work_extension` type in the `phoneNumbers` object as seen in the response payload of [List People](/docs/api/v1/people/list-people) or [Get Person Details](/docs/api/v1/people/get-person-details), cannot be used to set the Webex Calling extension for a person.\n\n* When updating a user with multiple email addresses using a PUT request, ensure that the primary email address is listed first in the array. Note that the order of email addresses returned by a GET request is not guaranteed..\n\n* The People API is a combination of several microservices, each responsible for specific attributes of a person. As a result, a PUT request that returns an error response code may still have altered some values of the person's data. Therefore, it is recommended to perform a GET request after encountering an error to verify the current state of the resource. \n\n* Some licenses are implicitly assigned by the system and cannot be admin controlled. They are necessary for the baseline function of the Webex system. If you get an error about implicitly assigned licensed that cannot be removed, please ensure you have the corresponding license in your PUT request.\n\n* When assigning multiple licenses in a single request, the system will assign all valid and available licenses. If any requested licenses cannot be assigned, the operation will continue with the remaining licenses. As a result, it is possible that not all requested licenses are assigned to the user.", - Method: "PUT", Path: "/people/{personId}", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - {Name: "callingData", In: InQuery, Flag: "calling-data", Usage: "Include Webex Calling user details in the response."}, - {Name: "showAllTypes", In: InQuery, Flag: "show-all-types", Usage: "Include additional user data like `#attendee` role."}, - {Name: "minResponse", In: InQuery, Flag: "min-response", Usage: "Set to `true` to improve performance by omitting person details in the response. If unsuccessful the response will have optional error details."}, - }, - Body: &Body{}, -} - -var CallingPeopleDeletePerson = &Operation{ - ID: "CallingPeopleDeletePerson", Area: "calling", Group: "people", Command: "delete-person", - Summary: "Delete a Person", - Description: "Remove a person from the system.\n\n**Required Administrator Roles:**\n\nThe following administrators have permission to use this API:\n\n**Customer Organization:**\n- Full administrator\n- User administrator\n\n**Partner/External Access:**\n- External full administrator\n\n**Note:** External read-only administrators, provisioning administrators, and device administrators cannot delete users.\n\nSpecify the person ID in the `personId` parameter in the URI.", - Method: "DELETE", Path: "/people/{personId}", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - }, -} - -var CallingPeopleGetMyOwn = &Operation{ - ID: "CallingPeopleGetMyOwn", Area: "calling", Group: "people", Command: "get-my-own", - Summary: "Get My Own Details", - Description: "Get profile details for the authenticated user. This is the same as GET `/people/{personId}` using the Person ID associated with your Auth token.\n\nAdmin users can include `Webex Calling` (BroadCloud) user details in the response by specifying `callingData` parameter as true.", - Method: "GET", Path: "/people/me", Host: HostWebex, - Params: []Param{ - {Name: "callingData", In: InQuery, Flag: "calling-data", Usage: "Include Webex Calling user details in the response."}, - }, -} - -var CallingPstnGetConnectionOptionsLocation = &Operation{ - ID: "CallingPstnGetConnectionOptionsLocation", Area: "calling", Group: "pstn", Command: "get-connection-options-location", - Summary: "Retrieve PSTN Connection Options for a Location", - Description: "Retrieve the list of PSTN connection options available for a location.\n\nPSTN location connection settings enables the admin to configure or change the PSTN provider for a location.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_pstn_read`.", - Method: "GET", Path: "/telephony/pstn/locations/{locationId}/connectionOptions", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Return the list of List PSTN location connection options for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List PSTN location connection options for this organization."}, - {Name: "serviceTypes", In: InQuery, Flag: "service-types", Usage: "Use the `serviceTypes` parameter to fetch connections for the following services\n* `MOBILE_NUMBERS`"}, - {Name: "serviceTypes", In: InQuery, Flag: "service-types", Usage: "Use the `serviceTypes` parameter to fetch connections for the following services\n* `MOBILE_NUMBERS`"}, - }, -} - -var CallingPstnSetupConnectionLocation = &Operation{ - ID: "CallingPstnSetupConnectionLocation", Area: "calling", Group: "pstn", Command: "setup-connection-location", - Summary: "Setup PSTN Connection for a Location", - Description: "Set up or update the PSTN connection details for a location.\n\nPSTN location connection settings enables the admin to configure or change the PSTN provider for a location.\n\nSetting up PSTN connection on a location requires a full administrator auth token with scopes of `spark-admin:telephony_pstn_write` and `spark-admin:telephony_pstn_read`.", - Method: "PUT", Path: "/telephony/pstn/locations/{locationId}/connection", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Setup PSTN location connection options for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Setup PSTN location connection for this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "id", Flag: "id", Type: "string"}, - {Name: "premiseRouteType", Flag: "premise-route-type", Type: "string"}, - {Name: "premiseRouteId", Flag: "premise-route-id", Type: "string"}, - }}, -} - -var CallingPstnGetConnectionLocation = &Operation{ - ID: "CallingPstnGetConnectionLocation", Area: "calling", Group: "pstn", Command: "get-connection-location", - Summary: "Retrieve PSTN Connection for a Location", - Description: "Retrieves the current configured PSTN connection details for a location.\n\nPSTN location connection settings enables the admin to configure or change the PSTN provider for a location.\n\nRetrieving the PSTN connection details for a location requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_pstn_read`.", - Method: "GET", Path: "/telephony/pstn/locations/{locationId}/connection", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Retrieve PSTN location connection details for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve PSTN location connection details for this organization."}, - }, -} - -var CallingPstnUpdateEmergencyAddressPhoneNumber = &Operation{ - ID: "CallingPstnUpdateEmergencyAddressPhoneNumber", Area: "calling", Group: "pstn", Command: "update-emergency-address-phone-number", - Summary: "Update the Emergency Address for a Phone Number", - Description: "Update the emergency address for a phone number.\n\nEmergency address settings allow the admin to configure or update the physical address associated with a phone number or a location.\n\nUpdating the emergency address for a phone number requires a full administrator auth token with scope of `spark-admin:telephony_pstn_write`.", - Method: "PUT", Path: "/telephony/pstn/numbers/{phoneNumber}/emergencyAddress", Host: HostWebex, - Params: []Param{ - {Name: "phoneNumber", In: InPath, Flag: "phone-number", Usage: "Update the emergency address for this phone number."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Update the emergency address of phone number in this organization."}, - }, - Body: &Body{}, -} - -var CallingPstnEmergencyAddressLookupVerifyAddressIsValid = &Operation{ - ID: "CallingPstnEmergencyAddressLookupVerifyAddressIsValid", Area: "calling", Group: "pstn", Command: "emergency-address-lookup-verify-address-is-valid", - Summary: "Emergency Address Lookup to Verify if Address is Valid", - Description: "Returns a suggested address. If the input address is valid and unchanged, no errors are returned. If the input address requires corrections, the response includes a suggested address along with error details.\n\nEmergency address settings allow the admin to configure or update the physical address associated with a phone number or a location.\n\nEmergency address lookup to verify if address is valid requires a full administrator auth token with scope of `spark-admin:telephony_pstn_read`.", - Method: "POST", Path: "/telephony/pstn/locations/{locationId}/emergencyAddress/lookup", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Emergency address lookup for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Emergency address lookup for this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "address1", Flag: "address1", Type: "string"}, - {Name: "address2", Flag: "address2", Type: "string"}, - {Name: "city", Flag: "city", Type: "string"}, - {Name: "state", Flag: "state", Type: "string"}, - {Name: "postalCode", Flag: "postal-code", Type: "string"}, - {Name: "country", Flag: "country", Type: "string"}, - }}, -} - -var CallingPstnCreateEmergencyAddressLocation = &Operation{ - ID: "CallingPstnCreateEmergencyAddressLocation", Area: "calling", Group: "pstn", Command: "create-emergency-address-location", - Summary: "Add an Emergency Address to a Location", - Description: "Adds a new emergency address to the specified location. On success, returns the unique identifier of the newly created emergency address.\n\nEmergency address settings allow the admin to configure or update the physical address associated with a phone number or a location.\n\nAdding emergency address to a location requires a full administrator auth token with scope of `spark-admin:telephony_pstn_write`.", - Method: "POST", Path: "/telephony/pstn/locations/{locationId}/emergencyAddress", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location to which the emergency address will be added."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Adding emergency address for a location in this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "address1", Flag: "address1", Type: "string"}, - {Name: "address2", Flag: "address2", Type: "string"}, - {Name: "city", Flag: "city", Type: "string"}, - {Name: "state", Flag: "state", Type: "string"}, - {Name: "postalCode", Flag: "postal-code", Type: "string"}, - {Name: "country", Flag: "country", Type: "string"}, - }}, -} - -var CallingPstnUpdateEmergencyAddressLocation = &Operation{ - ID: "CallingPstnUpdateEmergencyAddressLocation", Area: "calling", Group: "pstn", Command: "update-emergency-address-location", - Summary: "Update the Emergency Address of a Location", - Description: "Updates the emergency address of the specified location.\n\nEmergency address settings allow the admin to configure or update the physical address associated with a phone number or a location.\n\nUpdating the emergency address of a location requires a full administrator auth token with scope of `spark-admin:telephony_pstn_write`.", - Method: "PUT", Path: "/telephony/pstn/locations/{locationId}/emergencyAddresses/{addressId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Location for which the emergency address will be updated."}, - {Name: "addressId", In: InPath, Flag: "address-id", Usage: "Unique identifier for the emergency address that will be updated."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Updating the emergency address of a location in this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "address1", Flag: "address1", Type: "string"}, - {Name: "address2", Flag: "address2", Type: "string"}, - {Name: "city", Flag: "city", Type: "string"}, - {Name: "state", Flag: "state", Type: "string"}, - {Name: "postalCode", Flag: "postal-code", Type: "string"}, - {Name: "country", Flag: "country", Type: "string"}, - }}, -} - -var CallingRecordingReportListAuditSummaries = &Operation{ - ID: "CallingRecordingReportListAuditSummaries", Area: "calling", Group: "recording-report", Command: "list-audit-summaries", - Summary: "List of Recording Audit Report Summaries", - Description: "Lists of recording audit report summaries. You can specify a date range and the maximum number of recording audit report summaries to return.\n\nOnly recording audit report summaries of meetings hosted by or shared with the authenticated user will be listed.\n\nThe list returned is sorted in descending order by the date and time that the recordings were created.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n* If `siteUrl` is specified, the recording audit report summaries of the specified site will be listed; otherwise, recording audit report summaries of the user's preferred site will be listed. All available Webex sites and the preferred site of the user can be retrieved by the `Get Site List` API.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.", - Method: "GET", Path: "/recordingReport/accessSummary", Host: HostWebex, - Params: []Param{ - {Name: "max", In: InQuery, Flag: "max", Usage: "Maximum number of recording audit report summaries to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`."}, - {Name: "from", In: InQuery, Flag: "from", Usage: "Starting date and time (inclusive) for recording audit report summaries to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`. Please note that the interval between `to` and `from` cannot exceed 90 days and the interval between the current time and `from` cannot exceed 365 days."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "Ending date and time (exclusive) for recording audit report summaries to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`. Please note that the interval between `to` and `from` cannot exceed 90 days and the interval between the current time and `from` cannot exceed 365 days."}, - {Name: "hostEmail", In: InQuery, Flag: "host-email", Usage: "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin on-behalf-of scopes. If set, the admin may specify the email of a user in a site they manage and the API will return recording audit report summaries of that user. If a special value of `all` is set for `hostEmail`, the admin can list recording audit report summaries of all users on the target site, not of a single user."}, - {Name: "siteUrl", In: InQuery, Flag: "site-url", Usage: "URL of the Webex site which the API lists recording audit report summaries from. If not specified, the API lists summary audit report for recordings from the user's preferred site. All available Webex sites and the preferred site of the user can be retrieved by `Get Site List` API."}, - {Name: "timezone", In: InHeader, Flag: "timezone", Usage: "e.g. UTC"}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, - TimeRange: TimeISO, -} - -var CallingRecordingReportGetAudit = &Operation{ - ID: "CallingRecordingReportGetAudit", Area: "calling", Group: "recording-report", Command: "get-audit", - Summary: "Get Recording Audit Report Details", - Description: "Retrieves details for a recording audit report with a specified recording ID.\n\nOnly recording audit report details of meetings hosted by or shared with the authenticated user may be retrieved.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.", - Method: "GET", Path: "/recordingReport/accessDetail", Host: HostWebex, - Params: []Param{ - {Name: "recordingId", In: InQuery, Flag: "recording-id", Usage: "A unique identifier for the recording."}, - {Name: "hostEmail", In: InQuery, Flag: "host-email", Usage: "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin on-behalf-of scopes. If set, the admin may specify the email of a user in a site they manage and the API will return recording details of that user."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Maximum number of recording audit report details to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`."}, - {Name: "timezone", In: InHeader, Flag: "timezone", Usage: "e.g. UTC"}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, -} - -var CallingRecordingReportListMeetingArchiveSummaries = &Operation{ - ID: "CallingRecordingReportListMeetingArchiveSummaries", Area: "calling", Group: "recording-report", Command: "list-meeting-archive-summaries", - Summary: "List Meeting Archive Summaries", - Description: "Lists of meeting archive summaries. You can specify a date range and the maximum number of meeting archive summaries to return.\n\nMeeting archive summaries are only available to full administrators, not even the meeting host.\n\nThe list returned is sorted in descending order by the date and time that the archives were created.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n* If `siteUrl` is specified, the meeting archive summaries of the specified site will be listed; otherwise, meeting archive summaries of the user's preferred site will be listed. All available Webex sites and the preferred site of the user can be retrieved by the `Get Site List` API.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.", - Method: "GET", Path: "/recordingReport/meetingArchiveSummaries", Host: HostWebex, - Params: []Param{ - {Name: "max", In: InQuery, Flag: "max", Usage: "Maximum number of meeting archive summaries to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`."}, - {Name: "from", In: InQuery, Flag: "from", Usage: "Starting date and time (inclusive) for meeting archive summaries to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`. Please note that the interval between `to` and `from` cannot exceed 30 days."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "Ending date and time (exclusive) for meeting archive summaries to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`. Please note that the interval between `to` and `from` cannot exceed 30 days."}, - {Name: "siteUrl", In: InQuery, Flag: "site-url", Usage: "URL of the Webex site which the API lists meeting archive summaries from. If not specified, the API lists meeting archive summaries for recordings from the user's preferred site. All available Webex sites and the preferred site of the user can be retrieved by `Get Site List` API."}, - {Name: "timezone", In: InHeader, Flag: "timezone", Usage: "e.g. UTC"}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, - TimeRange: TimeISO, -} - -var CallingRecordingReportGetMeetingArchive = &Operation{ - ID: "CallingRecordingReportGetMeetingArchive", Area: "calling", Group: "recording-report", Command: "get-meeting-archive", - Summary: "Get Meeting Archive Details", - Description: "Retrieves details for a meeting archive report with a specified archive ID, which contains recording metadata.\n\nMeeting archive details are only available to full administrators, not even the meeting host.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.", - Method: "GET", Path: "/recordingReport/meetingArchives/{archiveId}", Host: HostWebex, - Params: []Param{ - {Name: "archiveId", In: InPath, Flag: "archive-id", Usage: "A unique identifier for the meeting archive summary."}, - {Name: "timezone", In: InHeader, Flag: "timezone", Usage: "e.g. UTC"}, - }, -} - -var CallingReportsList = &Operation{ - ID: "CallingReportsList", Area: "calling", Group: "reports", Command: "list", - Summary: "List Reports", - Description: "Lists all reports. Use query parameters to filter the response. The parameters are optional. However, `from` and `to` parameters should be provided together.\n\n**Notes**:\nCSV reports for Webex suite services are only supported for organizations based in the North American region. Organizations based in a different region will return blank CSV files for any Teams reports.\n\nReports are usually provided in zip format. A Content-header `application/zip` or `application/octet-stream` does indicate the zip format. There is usually no .zip file extension.", - Method: "GET", Path: "/reports", Host: HostWebex, - Params: []Param{ - {Name: "reportId", In: InQuery, Flag: "report-id", Usage: "List reports by ID."}, - {Name: "service", In: InQuery, Flag: "service", Usage: "List reports which use this service."}, - {Name: "templateId", In: InQuery, Flag: "template-id", Usage: "List reports with this report template ID."}, - {Name: "from", In: InQuery, Flag: "from", Usage: "List reports that were created on or after this date."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "List reports that were created before this date."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, - TimeRange: TimeISO, -} - -var CallingReportsCreate = &Operation{ - ID: "CallingReportsCreate", Area: "calling", Group: "reports", Command: "create", - Summary: "Create a Report", - Description: "Create a new report. For each `templateId`, there are a set of validation rules that need to be followed. For example, for templates belonging to Webex, the user needs to provide `siteUrl`. These validation rules can be retrieved via the [Report Templates API](/docs/api/v1/report-templates).\n\nThe 'templateId' parameter is a number. However, it is a limitation of developer.webex.com platform that it is passed as a string when you try to test the API from here.\n\nCSV reports for Webex suite services are only supported for organizations based in the North American region. Organizations based in a different region will return blank CSV files for any Teams reports.", - Method: "POST", Path: "/reports", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "templateId", Flag: "template-id", Type: "int64"}, - {Name: "startDate", Flag: "start-date", Type: "string"}, - {Name: "endDate", Flag: "end-date", Type: "string"}, - {Name: "siteList", Flag: "site-list", Type: "string"}, - }}, -} - -var CallingReportsGet = &Operation{ - ID: "CallingReportsGet", Area: "calling", Group: "reports", Command: "get", - Summary: "Get Report Details", - Description: "Shows details for a report, by report ID.\n\nSpecify the report ID in the `reportId` parameter in the URI.\n\n**Notes**:\nCSV reports for Webex suite services are only supported for organizations based in the North American region. Organizations based in a different region will return blank CSV files for any Teams reports.\n\nReports are usually provided in zip format. A Content-header `application/zip` or `application/octet-stream` does indicate the zip format. There is usually no .zip file extension.", - Method: "GET", Path: "/reports/{reportId}", Host: HostWebex, - Params: []Param{ - {Name: "reportId", In: InPath, Flag: "report-id", Usage: "The unique identifier for the report."}, - }, -} - -var CallingReportsDelete = &Operation{ - ID: "CallingReportsDelete", Area: "calling", Group: "reports", Command: "delete", - Summary: "Delete a Report", - Description: "Remove a report from the system.\n\nSpecify the report ID in the `reportId` parameter in the URI\n\nCSV reports for Webex suite services are only supported for organizations based in the North American region. Organizations based in a different region will return blank CSV files for any Teams reports.", - Method: "DELETE", Path: "/reports/{reportId}", Host: HostWebex, - Params: []Param{ - {Name: "reportId", In: InPath, Flag: "report-id", Usage: "The unique identifier for the report."}, - }, -} - -var CallingReportsDetailedCallHistoryGet = &Operation{ - ID: "CallingReportsDetailedCallHistoryGet", Area: "calling", Group: "reports-detailed-call-history", Command: "get", - Summary: "Get Detailed Call History", - Description: "Provides Webex Calling Detailed Call History data for your organization.\n\nResults can be filtered with the `startTime`, `endTime` and `locations` request parameters. The `startTime` and `endTime` parameters specify the start and end of the time period for the Detailed Call History reports you wish to collect. The API will return all reports that were created between `startTime` and `endTime`.\n\n

\nResponse entries may be added as more information is made available for the reports.\nValues in response items may be extended as more capabilities are added to Webex Calling.", - Method: "GET", Path: "/cdr_feed", Host: HostAnalyticsCalling, - Params: []Param{ - {Name: "startTime", In: InQuery, Flag: "start-time", Usage: "Time of the first report you wish to collect. (Report time is the time the call finished). **Note:** The specified time must be between 5 minutes ago and 48 hours ago, and formatted as `YYYY-MM-DDTHH:MM:SS.mmmZ`."}, - {Name: "endTime", In: InQuery, Flag: "end-time", Usage: "Time of the last report you wish to collect. (Report time is the time the call finished). **Note:** The specified time should be later than `startTime` but no later than 48 hours, and formatted as `YYYY-MM-DDTHH:MM:SS.mmmZ`."}, - {Name: "locations", In: InQuery, Flag: "locations", Usage: "Name of the location (as shown in Control Hub). Up to 10 comma-separated locations can be provided. Allows you to query reports by location."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the maximum number of reports per page of the response. The range is 500 to 5000. Values below 500 are automatically adjusted up to 500, and values above 5000 are automatically adjusted down to 5000. When the API has more reports to return than the max value, the API response will be paginated. Follow the next link contained in the “Link” header within a response to request the next page of results. If there is no next link, all reports for the selected time range have been collected.\n\nFor instance, let's say the initial API request is\n\nhttps://analytics-calling.webexapis.com/v1/cdr_feed?endTime=2025-08-15T10:00:00.000Z&startTime=2025-08-15T08:00:00.000Z&max=5000\n\nThe link header in the response would look something like\n\n<;rel=\"next\">"}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, -} - -var CallingReportsDetailedCallHistoryGetLiveStream = &Operation{ - ID: "CallingReportsDetailedCallHistoryGetLiveStream", Area: "calling", Group: "reports-detailed-call-history", Command: "get-live-stream", - Summary: "Get Live Stream Detailed Call History", - Description: "Provides Webex Calling Detailed Call History data for your organization.\n\nResults can be filtered with the `startTime`, `endTime` and `locations` request parameters. The `startTime` and `endTime` parameters specify the time window during which Detailed Call History data was inserted into the Webex Calling cloud. The API will return all reports whose insertion time into the Webex Calling cloud falls between `startTime` and `endTime`.\n\n

\nResponse entries may be added as more information is made available for the reports.\nValues in response items may be extended as more capabilities are added to Webex Calling.", - Method: "GET", Path: "/cdr_stream", Host: HostAnalyticsCalling, - Params: []Param{ - {Name: "startTime", In: InQuery, Flag: "start-time", Usage: "The start date-time of the first record you wish to collect in UTC time. It would be the earliest time at which the data was inserted into the Webex Calling cloud for the records you wish to collect. Format must be as `YYYY-MM-DDTHH:MM:SS.mmmZ`. `startTime` can't be older than 12 hours from your current UTC time. The window period between `startTime` and `endTime` must not exceed 2 hours in a single API request."}, - {Name: "endTime", In: InQuery, Flag: "end-time", Usage: "The end date-time of the last record you wish to collect in UTC time. It would be the latest time at which the data was inserted into the Webex Calling cloud for the records you wish to collect. Format must be as `YYYY-MM-DDTHH:MM:SS.mmmZ`. `endTime` must be 1 minute ago from your current UTC time and can’t be older than 12 hours. `endTime` must be greater than `startTime`. The window period between `startTime` and `endTime` must not exceed 2 hours in a single API request."}, - {Name: "locations", In: InQuery, Flag: "locations", Usage: "Name of the location (as shown in Control Hub). Up to 10 comma-separated locations can be provided. Allows you to query reports by location."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the maximum number of reports per page of the response. The range is 500 to 5000. Values below 500 are automatically adjusted up to 500, and values above 5000 are automatically adjusted down to 5000. When the API has more reports to return than the max value, the API response will be paginated. Follow the next link contained in the “Link” header within a response to request the next page of results. If there is no next link, all reports for the selected time range have been collected.\n\nFor instance, let's say the initial API request is\n\nhttps://analytics-calling.webexapis.com/v1/cdr_stream?endTime=2025-08-15T10:00:00.000Z&startTime=2025-08-15T08:00:00.000Z&max=5000\n\nThe link header in the response would look something like\n\n<;rel=\"next\">"}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, -} - -var CallingSendActivationEmailInitiateBulkResendJob = &Operation{ - ID: "CallingSendActivationEmailInitiateBulkResendJob", Area: "calling", Group: "send-activation-email", Command: "initiate-bulk-resend-job", - Summary: "Initiate Bulk Activation Email Resend Job", - Description: "Initiate a bulk activation email resend job that sends an activation email to all eligible users in an organization. Only a single instance of the job can be running for an organization.\n\nRequires a full or user administrator auth token with a scope of `spark-admin:people_write`.", - Method: "POST", Path: "/identity/organizations/{orgId}/jobs/sendActivationEmails", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InPath, Flag: "org-id", Usage: "Initiate job for this organization."}, - }, -} - -var CallingSendActivationEmailGetBulkResendJobStatus = &Operation{ - ID: "CallingSendActivationEmailGetBulkResendJobStatus", Area: "calling", Group: "send-activation-email", Command: "get-bulk-resend-job-status", - Summary: "Get Bulk Activation Email Resend Job Status", - Description: "Get the details of an activation email resend job by its job ID.\n\nRequires a full or user administrator auth token with a scope of `spark-admin:people_write` or read-only administrator auth token with a scope of `spark-admin:people_read`.", - Method: "GET", Path: "/identity/organizations/{orgId}/jobs/sendActivationEmails/{jobId}/status", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InPath, Flag: "org-id", Usage: "Check job status for this organization."}, - {Name: "jobId", In: InPath, Flag: "job-id", Usage: "Retrieve job status for this `jobId`."}, - }, -} - -var CallingSendActivationEmailGetBulkResendJobErrors = &Operation{ - ID: "CallingSendActivationEmailGetBulkResendJobErrors", Area: "calling", Group: "send-activation-email", Command: "get-bulk-resend-job-errors", - Summary: "Get Bulk Activation Email Resend Job Errors", - Description: "Get errors of an activation email resend job by its job ID.\n\nRequires a full or user administrator auth token with a scope of `spark-admin:people_write` or read-only administrator auth token with a scope of `spark-admin:people_read`.", - Method: "GET", Path: "/identity/organizations/{orgId}/jobs/sendActivationEmails/{jobId}/errors", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InPath, Flag: "org-id", Usage: "Check job status for this organization."}, - {Name: "jobId", In: InPath, Flag: "job-id", Usage: "Retrieve job status for this `jobId`."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the maximum number of errors in the response."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, -} - -var CallingUserCallGetPersonApplicationServicesSettings = &Operation{ - ID: "CallingUserCallGetPersonApplicationServicesSettings", Area: "calling", Group: "user-call", Command: "get-person-application-services-settings", - Summary: "Retrieve a person's Application Services Settings", - Description: "Application services let you determine the ringing behavior for calls made to people in certain scenarios. You can also specify which devices can download the Webex Calling app.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of spark-admin:people_read.", - Method: "GET", Path: "/people/{personId}/features/applications", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "(Required) Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, -} - -var CallingUserCallUpdatePersonApplicationServicesSettings = &Operation{ - ID: "CallingUserCallUpdatePersonApplicationServicesSettings", Area: "calling", Group: "user-call", Command: "update-person-application-services-settings", - Summary: "Modify a person's Application Services Settings", - Description: "Application services let you determine the ringing behavior for calls made to users in certain scenarios. You can also specify which devices users can download the Webex Calling app on.\n\nThis API requires a full or user administrator or location administrator auth token with the spark-admin:people_write scope.", - Method: "PUT", Path: "/people/{personId}/features/applications", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "ringDevicesForClickToDialCallsEnabled", Flag: "ring-devices-for-click-to-dial-calls-enabled", Type: "bool"}, - {Name: "ringDevicesForGroupPageEnabled", Flag: "ring-devices-for-group-page-enabled", Type: "bool"}, - {Name: "ringDevicesForCallParkEnabled", Flag: "ring-devices-for-call-park-enabled", Type: "bool"}, - {Name: "browserClientEnabled", Flag: "browser-client-enabled", Type: "bool"}, - {Name: "desktopClientEnabled", Flag: "desktop-client-enabled", Type: "bool"}, - {Name: "tabletClientEnabled", Flag: "tablet-client-enabled", Type: "bool"}, - {Name: "mobileClientEnabled", Flag: "mobile-client-enabled", Type: "bool"}, - }}, -} - -var CallingUserCallGetBargeSettingsPerson = &Operation{ - ID: "CallingUserCallGetBargeSettingsPerson", Area: "calling", Group: "user-call", Command: "get-barge-settings-person", - Summary: "Read Barge In Settings for a Person", - Description: "Retrieve a person's Barge In settings.\n\nThe Barge In feature enables you to use a Feature Access Code (FAC) to answer a call that was directed to another subscriber, or barge-in on the call if it was already answered. Barge In can be used across locations.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:people_read` or a user auth token with `spark:people_read` scope can be used by a person to read their own settings.", - Method: "GET", Path: "/people/{personId}/features/bargeIn", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, -} - -var CallingUserCallUpdateBargeSettingsPerson = &Operation{ - ID: "CallingUserCallUpdateBargeSettingsPerson", Area: "calling", Group: "user-call", Command: "update-barge-settings-person", - Summary: "Configure Barge In Settings for a Person", - Description: "Configure a person's Barge In settings.\n\nThe Barge In feature enables you to use a Feature Access Code (FAC) to answer a call that was directed to another subscriber, or barge-in on the call if it was already answered. Barge In can be used across locations.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope or a user auth token with `spark:people_write` scope can be used by a person to update their own settings.", - Method: "PUT", Path: "/people/{personId}/features/bargeIn", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "enabled", Flag: "enabled", Type: "bool"}, - {Name: "toneEnabled", Flag: "tone-enabled", Type: "bool"}, - }}, -} - -var CallingUserCallGetForwardingSettingsPerson = &Operation{ - ID: "CallingUserCallGetForwardingSettingsPerson", Area: "calling", Group: "user-call", Command: "get-forwarding-settings-person", - Summary: "Read Forwarding Settings for a Person", - Description: "Retrieve a person's Call Forwarding settings.\n\nThree types of call forwarding are supported:\n\n+ Always - forwards all incoming calls to the destination you choose.\n\n+ When busy - forwards all incoming calls to the destination you chose while the phone is in use or the person is busy.\n\n+ When no answer - forwarding only occurs when you are away or not answering your phone.\n\nIn addition, the Business Continuity feature will send calls to a destination of your choice if your phone is not connected to the network for any reason, such as a power outage, failed Internet connection, or wiring problem.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:people_read` or a user auth token with `spark:people_read` scope can be used by a person to read their own settings.", - Method: "GET", Path: "/people/{personId}/features/callForwarding", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, -} - -var CallingUserCallUpdateForwardPerson = &Operation{ - ID: "CallingUserCallUpdateForwardPerson", Area: "calling", Group: "user-call", Command: "update-forward-person", - Summary: "Configure Call Forwarding Settings for a Person", - Description: "Configure a person's Call Forwarding settings.\n\nThree types of call forwarding are supported:\n\n+ Always - forwards all incoming calls to the destination you choose.\n\n+ When busy - forwards all incoming calls to the destination you chose while the phone is in use or the person is busy.\n\n+ When no answer - forwarding only occurs when you are away or not answering your phone.\n\nIn addition, the Business Continuity feature will send calls to a destination of your choice if your phone is not connected to the network for any reason, such as a power outage, failed Internet connection, or wiring problem.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope or a user auth token with `spark:people_write` scope can be used by a person to update their settings.", - Method: "PUT", Path: "/people/{personId}/features/callForwarding", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, - Body: &Body{}, -} - -var CallingUserCallGetInterceptSettingsPerson = &Operation{ - ID: "CallingUserCallGetInterceptSettingsPerson", Area: "calling", Group: "user-call", Command: "get-intercept-settings-person", - Summary: "Read Call Intercept Settings for a Person", - Description: "Retrieves Person's Call Intercept settings.\n\nThe intercept feature gracefully takes a person's phone out of service, while providing callers with informative announcements and alternative routing options. Depending on the service configuration, none, some, or all incoming calls to the specified person are intercepted. Also depending on the service configuration, outgoing calls are intercepted or rerouted to another location.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:people_read`.", - Method: "GET", Path: "/people/{personId}/features/intercept", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, -} - -var CallingUserCallUpdateInterceptSettingsPerson = &Operation{ - ID: "CallingUserCallUpdateInterceptSettingsPerson", Area: "calling", Group: "user-call", Command: "update-intercept-settings-person", - Summary: "Configure Call Intercept Settings for a Person", - Description: "Configures a person's Call Intercept settings.\n\nThe intercept feature gracefully takes a person's phone out of service, while providing callers with informative announcements and alternative routing options. Depending on the service configuration, none, some, or all incoming calls to the specified person are intercepted. Also depending on the service configuration, outgoing calls are intercepted or rerouted to another location.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope.", - Method: "PUT", Path: "/people/{personId}/features/intercept", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, - Body: &Body{}, -} - -var CallingUserCallUpdateInterceptGreetingPerson = &Operation{ - ID: "CallingUserCallUpdateInterceptGreetingPerson", Area: "calling", Group: "user-call", Command: "update-intercept-greeting-person", - Summary: "Configure Call Intercept Greeting for a Person", - Description: "Configure a person's Call Intercept Greeting by uploading a Waveform Audio File Format, `.wav`, encoded audio file.\n\nYour request will need to be a `multipart/form-data` request rather than JSON, using the `audio/wav` Content-Type.\n\nThis API requires a full or user administrator auth token with the `spark-admin:people_write` scope or a user auth token with `spark:people_write` scope can be used by a person to update their settings.", - Method: "POST", Path: "/people/{personId}/features/intercept/actions/announcementUpload/invoke", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, - Handwritten: true, -} - -var CallingUserCallGetRecordingPerson = &Operation{ - ID: "CallingUserCallGetRecordingPerson", Area: "calling", Group: "user-call", Command: "get-recording-person", - Summary: "Read Call Recording Settings for a Person", - Description: "Retrieve a person's Call Recording settings.\n\nThe Call Recording feature provides a hosted mechanism to record the calls placed and received on the Carrier platform for replay and archival. This feature is helpful for quality assurance, security, training, and more.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_read` scope.\n\n
A person with a Webex Calling Standard license is eligible for the Call Recording feature only when the Call Recording vendor is Webex.
", - Method: "GET", Path: "/people/{personId}/features/callRecording", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, -} - -var CallingUserCallUpdateRecordingPerson = &Operation{ - ID: "CallingUserCallUpdateRecordingPerson", Area: "calling", Group: "user-call", Command: "update-recording-person", - Summary: "Configure Call Recording Settings for a Person", - Description: "Configure a person's Call Recording settings.\n\nThe Call Recording feature provides a hosted mechanism to record the calls placed and received on the Carrier platform for replay and archival. This feature is helpful for quality assurance, security, training, and more.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope.\n\n
A person with a Webex Calling Standard license is eligible for the Call Recording feature only when the Call Recording vendor is Webex.
", - Method: "PUT", Path: "/people/{personId}/features/callRecording", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, - Body: &Body{}, -} - -var CallingUserCallGetWaitingSettingsPerson = &Operation{ - ID: "CallingUserCallGetWaitingSettingsPerson", Area: "calling", Group: "user-call", Command: "get-waiting-settings-person", - Summary: "Read Call Waiting Settings for a Person", - Description: "Retrieve a person's Call Waiting settings.\n\nWith this feature, a person can place an active call on hold and answer an incoming call. When enabled, while you are on an active call, a tone alerts you of an incoming call and you can choose to answer or ignore the call.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:people_read`.", - Method: "GET", Path: "/people/{personId}/features/callWaiting", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, -} - -var CallingUserCallUpdateWaitingSettingsPerson = &Operation{ - ID: "CallingUserCallUpdateWaitingSettingsPerson", Area: "calling", Group: "user-call", Command: "update-waiting-settings-person", - Summary: "Configure Call Waiting Settings for a Person", - Description: "Configure a person's Call Waiting settings.\n\nWith this feature, a person can place an active call on hold and answer an incoming call. When enabled, while you are on an active call, a tone alerts you of an incoming call and you can choose to answer or ignore the call.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope.", - Method: "PUT", Path: "/people/{personId}/features/callWaiting", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "enabled", Flag: "enabled", Type: "bool"}, - }}, -} - -var CallingUserCallGetCallerIdPerson = &Operation{ - ID: "CallingUserCallGetCallerIdPerson", Area: "calling", Group: "user-call", Command: "get-caller-id-person", - Summary: "Read Caller ID Settings for a Person", - Description: "Retrieve a person's Caller ID settings.\n\nCaller ID settings control how a person's information is displayed when making outgoing calls.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:people_read`.", - Method: "GET", Path: "/people/{personId}/features/callerId", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, -} - -var CallingUserCallUpdateCallerIdPerson = &Operation{ - ID: "CallingUserCallUpdateCallerIdPerson", Area: "calling", Group: "user-call", Command: "update-caller-id-person", - Summary: "Configure Caller ID Settings for a Person", - Description: "Configure a person's Caller ID settings.\n\nCaller ID settings control how a person's information is displayed when making outgoing calls.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope.", - Method: "PUT", Path: "/people/{personId}/features/callerId", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, - Body: &Body{}, -} - -var CallingUserCallGetPersonCallingBehavior = &Operation{ - ID: "CallingUserCallGetPersonCallingBehavior", Area: "calling", Group: "user-call", Command: "get-person-calling-behavior", - Summary: "Read Person's Calling Behavior", - Description: "Retrieves the calling behavior and UC Manager Profile settings for the person which includes overall calling behavior and calling UC Manager Profile ID.\n\nWebex Calling Behavior controls which Webex telephony application and which UC Manager Profile is to be used for a person.\n\nAn organization has an organization-wide default Calling Behavior that may be overridden for individual persons.\n\nUC Manager Profiles are applicable if your organization uses Jabber in Team Messaging mode or Calling in Webex (Unified CM).\n\nThe UC Manager Profile also has an organization-wide default and may be overridden for individual persons.\n\nThis API requires a full, user, or read-only administrator auth token with a scope of `spark-admin:people_read`.", - Method: "GET", Path: "/people/{personId}/features/callingBehavior", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, -} - -var CallingUserCallUpdatePersonCallingBehavior = &Operation{ - ID: "CallingUserCallUpdatePersonCallingBehavior", Area: "calling", Group: "user-call", Command: "update-person-calling-behavior", - Summary: "Configure a person's Calling Behavior", - Description: "Modifies the calling behavior settings for the person which includes calling behavior and UC Manager Profile ID.\n\nWebex Calling Behavior controls which Webex telephony application and which UC Manager Profile is to be used for a person.\n\nAn organization has an organization-wide default Calling Behavior that may be overridden for individual persons.\n\nUC Manager Profiles are applicable if your organization uses Jabber in Team Messaging mode or Calling in Webex (Unified CM).\n\nThe UC Manager Profile also has an organization-wide default and may be overridden for individual persons.\n\nThis API requires a full or user administrator auth token with the `spark-admin:people_write` scope.", - Method: "PUT", Path: "/people/{personId}/features/callingBehavior", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "behaviorType", Flag: "behavior-type", Type: "string"}, - {Name: "profileId", Flag: "profile-id", Type: "string"}, - }}, -} - -var CallingUserCallGetDoNotDisturbSettingsPerson = &Operation{ - ID: "CallingUserCallGetDoNotDisturbSettingsPerson", Area: "calling", Group: "user-call", Command: "get-do-not-disturb-settings-person", - Summary: "Read Do Not Disturb Settings for a Person", - Description: "Retrieve a person's Do Not Disturb settings.\n\nWhen enabled, this feature will give all incoming calls the busy treatment. Optionally, you can enable a Ring Reminder to play a brief tone on your desktop phone when you receive incoming calls.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:people_read` or a user auth token with `spark:people_read` scope can be used by a person to read their settings.", - Method: "GET", Path: "/people/{personId}/features/doNotDisturb", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, -} - -var CallingUserCallUpdateDoNotDisturbSettingsPerson = &Operation{ - ID: "CallingUserCallUpdateDoNotDisturbSettingsPerson", Area: "calling", Group: "user-call", Command: "update-do-not-disturb-settings-person", - Summary: "Configure Do Not Disturb Settings for a Person", - Description: "Configure a person's Do Not Disturb settings.\n\nWhen enabled, this feature will give all incoming calls the busy treatment. Optionally, you can enable a Ring Reminder to play a brief tone on your desktop phone when you receive incoming calls.\n\nThis API requires a full or user administrator auth token with the `spark-admin:people_write` scope or a user auth token with `spark:people_write` scope can be used by a person to update their settings.", - Method: "PUT", Path: "/people/{personId}/features/doNotDisturb", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "webexGoOverrideEnabled", Flag: "webex-go-override-enabled", Type: "bool"}, - {Name: "enabled", Flag: "enabled", Type: "bool"}, - {Name: "ringSplashEnabled", Flag: "ring-splash-enabled", Type: "bool"}, - }}, -} - -var CallingUserCallGetExecutiveAssistantSettingsPerson = &Operation{ - ID: "CallingUserCallGetExecutiveAssistantSettingsPerson", Area: "calling", Group: "user-call", Command: "get-executive-assistant-settings-person", - Summary: "Retrieve Executive Assistant Settings for a Person", - Description: "Retrieve the executive assistant settings for the specified `personId`.\n\nPeople with the executive service enabled, can select from a pool of assistants who have been assigned the executive assistant service and who can answer or place calls on their behalf. Executive assistants can set the call forward destination and join or leave an executive's pool.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:people_read`.", - Method: "GET", Path: "/people/{personId}/features/executiveAssistant", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, -} - -var CallingUserCallUpdateExecutiveAssistantSettingsPerson = &Operation{ - ID: "CallingUserCallUpdateExecutiveAssistantSettingsPerson", Area: "calling", Group: "user-call", Command: "update-executive-assistant-settings-person", - Summary: "Modify Executive Assistant Settings for a Person", - Description: "Modify the executive assistant settings for the specified personId.\n\nPeople with the executive service enabled, can select from a pool of assistants who have been assigned the executive assistant service and who can answer or place calls on their behalf. Executive assistants can set the call forward destination and join or leave an executive's pool.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope.", - Method: "PUT", Path: "/people/{personId}/features/executiveAssistant", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "type", Flag: "type", Type: "string"}, - }}, -} - -var CallingUserCallGetHotelingSettingsPerson = &Operation{ - ID: "CallingUserCallGetHotelingSettingsPerson", Area: "calling", Group: "user-call", Command: "get-hoteling-settings-person", - Summary: "Read Hoteling Settings for a Person", - Description: "Retrieve a person's hoteling settings.\n\nAs an administrator, you can enable hoteling for people so that their phone profile (phone number, features, and calling plan) is temporarily loaded onto a shared (host) phone.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:people_read`.", - Method: "GET", Path: "/people/{personId}/features/hoteling", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, -} - -var CallingUserCallUpdateHotelingSettingsPerson = &Operation{ - ID: "CallingUserCallUpdateHotelingSettingsPerson", Area: "calling", Group: "user-call", Command: "update-hoteling-settings-person", - Summary: "Configure Hoteling Settings for a Person", - Description: "Configure a person's hoteling settings.\n\nAs an administrator, you can enable hoteling for people so that their phone profile (phone number, features, and calling plan) is temporarily loaded onto a shared (host) phone.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope.", - Method: "PUT", Path: "/people/{personId}/features/hoteling", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "enabled", Flag: "enabled", Type: "bool"}, - }}, -} - -var CallingUserCallGetPersonMonitoringSettings = &Operation{ - ID: "CallingUserCallGetPersonMonitoringSettings", Area: "calling", Group: "user-call", Command: "get-person-monitoring-settings", - Summary: "Retrieve a person's Monitoring Settings", - Description: "Retrieves the monitoring settings of the person, which shows specified people, places, virtual lines or call park extenions that are being monitored.\nMonitors the line status which indicates if a person, place or virtual line is on a call and if a call has been parked on that extension.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:people_read`.", - Method: "GET", Path: "/people/{personId}/features/monitoring", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, -} - -var CallingUserCallUpdatePersonMonitoringSettings = &Operation{ - ID: "CallingUserCallUpdatePersonMonitoringSettings", Area: "calling", Group: "user-call", Command: "update-person-monitoring-settings", - Summary: "Modify a person's Monitoring Settings", - Description: "Modifies the monitoring settings of the person.\nMonitors the line status of specified people, places, virtual lines or call park extension. The line status indicates if a person, place or virtual line is on a call and if a call has been parked on that extension.\n\nThe number of monitored elements is limited to 50.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope.", - Method: "PUT", Path: "/people/{personId}/features/monitoring", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "enableCallParkNotification", Flag: "enable-call-park-notification", Type: "bool"}, - {Name: "monitoredElements", Flag: "monitored-elements", Type: "[]string"}, - }}, -} - -var CallingUserCallGetIncomingPermissionSettingsPerson = &Operation{ - ID: "CallingUserCallGetIncomingPermissionSettingsPerson", Area: "calling", Group: "user-call", Command: "get-incoming-permission-settings-person", - Summary: "Read Incoming Permission Settings for a Person", - Description: "Retrieve a person's Incoming Permission settings.\n\nYou can change the incoming calling permissions for a person if you want them to be different from your organization's default.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:people_read`.", - Method: "GET", Path: "/people/{personId}/features/incomingPermission", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, -} - -var CallingUserCallUpdateIncomingPermissionSettingsPerson = &Operation{ - ID: "CallingUserCallUpdateIncomingPermissionSettingsPerson", Area: "calling", Group: "user-call", Command: "update-incoming-permission-settings-person", - Summary: "Configure Incoming Permission Settings for a Person", - Description: "Configure a person's Incoming Permission settings.\n\nYou can change the incoming calling permissions for a person if you want them to be different from your organization's default.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope.", - Method: "PUT", Path: "/people/{personId}/features/incomingPermission", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "useCustomEnabled", Flag: "use-custom-enabled", Type: "bool"}, - {Name: "externalTransfer", Flag: "external-transfer", Type: "string"}, - {Name: "internalCallsEnabled", Flag: "internal-calls-enabled", Type: "bool"}, - {Name: "collectCallsEnabled", Flag: "collect-calls-enabled", Type: "bool"}, - }}, -} - -var CallingUserCallGetPersonOutgoingPermissionsSettings = &Operation{ - ID: "CallingUserCallGetPersonOutgoingPermissionsSettings", Area: "calling", Group: "user-call", Command: "get-person-outgoing-permissions-settings", - Summary: "Retrieve a person's Outgoing Calling Permissions Settings", - Description: "Retrieve a person's Outgoing Calling Permissions settings.\n\nOutgoing calling permissions regulate behavior for calls placed to various destinations and default to the local level settings. You can change the outgoing calling permissions for a person if you want them to be different from your organization's default.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:people_read`.", - Method: "GET", Path: "/people/{personId}/features/outgoingPermission", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingUserCallUpdatePersonOutgoingPermissionsSettings = &Operation{ - ID: "CallingUserCallUpdatePersonOutgoingPermissionsSettings", Area: "calling", Group: "user-call", Command: "update-person-outgoing-permissions-settings", - Summary: "Modify a person's Outgoing Calling Permissions Settings", - Description: "Modify a person's Outgoing Calling Permissions settings.\n\nOutgoing calling permissions regulate behavior for calls placed to various destinations and default to the local level settings. You can change the outgoing calling permissions for a person if you want them to be different from your organization's default.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope.", - Method: "PUT", Path: "/people/{personId}/features/outgoingPermission", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{}, -} - -var CallingUserCallListPhoneNumbersPerson = &Operation{ - ID: "CallingUserCallListPhoneNumbersPerson", Area: "calling", Group: "user-call", Command: "list-phone-numbers-person", - Summary: "Get a List of Phone Numbers for a Person", - Description: "Get a person's phone numbers including alternate numbers.\n\nA person can have one or more phone numbers and/or extensions via which they can be called.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_read` scope.\n\n
\n\n
The `preferE164Format` query parameter can be used to get phone numbers either in E.164 format or in their legacy format. The support for getting phone numbers in non-E.164 format in some geographies will be removed in the future.
", - Method: "GET", Path: "/people/{personId}/features/numbers", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - {Name: "preferE164Format", In: InQuery, Flag: "prefer-e164-format", Usage: "Return phone numbers in E.164 format."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var CallingUserCallGetPersonPrivacySettings = &Operation{ - ID: "CallingUserCallGetPersonPrivacySettings", Area: "calling", Group: "user-call", Command: "get-person-privacy-settings", - Summary: "Get a person's Privacy Settings", - Description: "Get a person's privacy settings for the specified person ID.\n\nThe privacy feature enables the person's line to be monitored by others and determine if they can be reached by Auto Attendant services.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of spark-admin:people_read.", - Method: "GET", Path: "/people/{personId}/features/privacy", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, -} - -var CallingUserCallUpdatePersonPrivacySettings = &Operation{ - ID: "CallingUserCallUpdatePersonPrivacySettings", Area: "calling", Group: "user-call", Command: "update-person-privacy-settings", - Summary: "Configure a person's Privacy Settings", - Description: "Configure a person's privacy settings for the specified person ID.\n\nThe privacy feature enables the person's line to be monitored by others and determine if they can be reached by Auto Attendant services.\n\nThis API requires a full or user administrator or location administrator auth token with the spark-admin:people_write scope.", - Method: "PUT", Path: "/people/{personId}/features/privacy", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "aaExtensionDialingEnabled", Flag: "aa-extension-dialing-enabled", Type: "bool"}, - {Name: "aaNamingDialingEnabled", Flag: "aa-naming-dialing-enabled", Type: "bool"}, - {Name: "enablePhoneStatusDirectoryPrivacy", Flag: "enable-phone-status-directory-privacy", Type: "bool"}, - {Name: "enablePhoneStatusPickupBargeInPrivacy", Flag: "enable-phone-status-pickup-barge-in-privacy", Type: "bool"}, - {Name: "monitoringAgents", Flag: "monitoring-agents", Type: "[]string"}, - }}, -} - -var CallingUserCallGetPushToTalkSettingsPerson = &Operation{ - ID: "CallingUserCallGetPushToTalkSettingsPerson", Area: "calling", Group: "user-call", Command: "get-push-to-talk-settings-person", - Summary: "Read Push-to-Talk Settings for a Person", - Description: "Retrieve a person's Push-to-Talk settings.\n\nPush-to-Talk allows the use of desk phones as either a one-way or two-way intercom that connects people in different parts of your organization.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:people_read`.", - Method: "GET", Path: "/people/{personId}/features/pushToTalk", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, -} - -var CallingUserCallUpdatePushToTalkSettingsPerson = &Operation{ - ID: "CallingUserCallUpdatePushToTalkSettingsPerson", Area: "calling", Group: "user-call", Command: "update-push-to-talk-settings-person", - Summary: "Configure Push-to-Talk Settings for a Person", - Description: "Configure a person's Push-to-Talk settings.\n\nPush-to-Talk allows the use of desk phones as either a one-way or two-way intercom that connects people in different parts of your organization.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope.", - Method: "PUT", Path: "/people/{personId}/features/pushToTalk", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "allowAutoAnswer", Flag: "allow-auto-answer", Type: "bool"}, - {Name: "connectionType", Flag: "connection-type", Type: "string"}, - {Name: "accessType", Flag: "access-type", Type: "string"}, - {Name: "members", Flag: "members", Type: "[]string"}, - }}, -} - -var CallingUserCallGetReceptionistClientSettingsPerson = &Operation{ - ID: "CallingUserCallGetReceptionistClientSettingsPerson", Area: "calling", Group: "user-call", Command: "get-receptionist-client-settings-person", - Summary: "Read Receptionist Client Settings for a Person", - Description: "Retrieve a person's Receptionist Client settings.\n\nTo help support the needs of your front-office personnel, you can set up people, workspaces or virtual lines as telephone attendants so that they can screen all incoming calls to certain numbers within your organization.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:people_read`.", - Method: "GET", Path: "/people/{personId}/features/reception", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, -} - -var CallingUserCallUpdateReceptionistClientSettingsPerson = &Operation{ - ID: "CallingUserCallUpdateReceptionistClientSettingsPerson", Area: "calling", Group: "user-call", Command: "update-receptionist-client-settings-person", - Summary: "Configure Receptionist Client Settings for a Person", - Description: "Configure a person's Receptionist Client settings.\n\nTo help support the needs of your front-office personnel, you can set up people, workspaces or virtual lines as telephone attendants so that they can screen all incoming calls to certain numbers within your organization.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope.", - Method: "PUT", Path: "/people/{personId}/features/reception", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "receptionEnabled", Flag: "reception-enabled", Type: "bool"}, - {Name: "monitoredMembers", Flag: "monitored-members", Type: "[]string"}, - }}, -} - -var CallingUserCallListSchedulesPerson = &Operation{ - ID: "CallingUserCallListSchedulesPerson", Area: "calling", Group: "user-call", Command: "list-schedules-person", - Summary: "List of Schedules for a Person", - Description: "List schedules for a person in an organization.\n\nSchedules are used to support calling features and can be defined at the location or person level. `businessHours` schedules allow you to apply specific call settings at different times of the day or week by defining one or more events. `holidays` schedules define exceptions to normal business hours by defining one or more events.\n\nThis API requires a full, user, or read-only administrator auth token with a scope of `spark-admin:people_read`.", - Method: "GET", Path: "/people/{personId}/features/schedules", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Specifies the offset from the first result that you want to fetch."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Specifies the maximum number of records that you want to fetch."}, - {Name: "name", In: InQuery, Flag: "name", Usage: "Specifies the case insensitive substring to be matched against the schedule names. The maximum length is 40."}, - {Name: "type", In: InQuery, Flag: "type", Usage: "Specifies the schedule event type to be matched on the given type."}, - }, - Paging: &Paging{}, -} - -var CallingUserCallCreateSchedulePerson = &Operation{ - ID: "CallingUserCallCreateSchedulePerson", Area: "calling", Group: "user-call", Command: "create-schedule-person", - Summary: "Create Schedule for a Person", - Description: "Create a new schedule for a person.\n\nSchedules are used to support calling features and can be defined at the location or person level. `businessHours` schedules allow you to apply specific call settings at different times of the day or week by defining one or more events. `holidays` schedules define exceptions to normal business hours by defining one or more events.\n\nThis API requires a full or user administrator auth token with the `spark-admin:people_write` scope.", - Method: "POST", Path: "/people/{personId}/features/schedules", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, - Body: &Body{}, -} - -var CallingUserCallGetSchedule = &Operation{ - ID: "CallingUserCallGetSchedule", Area: "calling", Group: "user-call", Command: "get-schedule", - Summary: "Get a Schedule Details", - Description: "Retrieve a schedule by its schedule ID.\n\nSchedules are used to support calling features and can be defined at the location or person level. `businessHours` schedules allow you to apply specific call settings at different times of the day or week by defining one or more events. `holidays` schedules define exceptions to normal business hours by defining one or more events.\n\nThis API requires a full, user, or read-only administrator auth token with a scope of `spark-admin:people_read`.", - Method: "GET", Path: "/people/{personId}/features/schedules/{scheduleType}/{scheduleId}", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "scheduleType", In: InPath, Flag: "schedule-type", Usage: "Type of schedule, either `businessHours` or `holidays`."}, - {Name: "scheduleId", In: InPath, Flag: "schedule-id", Usage: "Unique identifier for the schedule."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, -} - -var CallingUserCallUpdateSchedule = &Operation{ - ID: "CallingUserCallUpdateSchedule", Area: "calling", Group: "user-call", Command: "update-schedule", - Summary: "Update a Schedule", - Description: "Modify a schedule by its schedule ID.\n\nSchedules are used to support calling features and can be defined at the location or person level. `businessHours` schedules allow you to apply specific call settings at different times of the day or week by defining one or more events. `holidays` schedules define exceptions to normal business hours by defining one or more events.\n\nThis API requires a full or user administrator auth token with the `spark-admin:people_write` scope.", - Method: "PUT", Path: "/people/{personId}/features/schedules/{scheduleType}/{scheduleId}", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "scheduleType", In: InPath, Flag: "schedule-type", Usage: "Type of schedule, either `businessHours` or `holidays`."}, - {Name: "scheduleId", In: InPath, Flag: "schedule-id", Usage: "Unique identifier for the schedule."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, - Body: &Body{}, -} - -var CallingUserCallDeleteSchedule = &Operation{ - ID: "CallingUserCallDeleteSchedule", Area: "calling", Group: "user-call", Command: "delete-schedule", - Summary: "Delete a Schedule", - Description: "Delete a schedule by its schedule ID.\n\nSchedules are used to support calling features and can be defined at the location or person level. `businessHours` schedules allow you to apply specific call settings at different times of the day or week by defining one or more events. `holidays` schedules define exceptions to normal business hours by defining one or more events.\n\nThis API requires a full or user administrator auth token with the `spark-admin:people_write` scope.", - Method: "DELETE", Path: "/people/{personId}/features/schedules/{scheduleType}/{scheduleId}", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "scheduleType", In: InPath, Flag: "schedule-type", Usage: "Type of schedule, either `businessHours` or `holidays`."}, - {Name: "scheduleId", In: InPath, Flag: "schedule-id", Usage: "Unique identifier for the schedule."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, -} - -var CallingUserCallGetEventPersonSchedule = &Operation{ - ID: "CallingUserCallGetEventPersonSchedule", Area: "calling", Group: "user-call", Command: "get-event-person-schedule", - Summary: "Fetch Event for a person's Schedule", - Description: "People can use shared location schedules or define personal schedules containing events.\n\n`businessHours` schedules allow you to apply specific call settings at different times of the day or week by defining one or more events. `holidays` schedules define exceptions to normal business hours by defining one or more events.\n\nThis API requires a full, user, or read-only administrator auth token with a scope of `spark-admin:people_read`.", - Method: "GET", Path: "/people/{personId}/features/schedules/{scheduleType}/{scheduleId}/events/{eventId}", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "scheduleType", In: InPath, Flag: "schedule-type", Usage: "Type of schedule, either `businessHours` or `holidays`."}, - {Name: "scheduleId", In: InPath, Flag: "schedule-id", Usage: "Unique identifier for the schedule."}, - {Name: "eventId", In: InPath, Flag: "event-id", Usage: "Unique identifier for the event."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, -} - -var CallingUserCallUpdateEventPersonSchedule = &Operation{ - ID: "CallingUserCallUpdateEventPersonSchedule", Area: "calling", Group: "user-call", Command: "update-event-person-schedule", - Summary: "Update an Event for a person's Schedule", - Description: "People can use shared location schedules or define personal schedules containing events.\n\n`businessHours` schedules allow you to apply specific call settings at different times of the day or week by defining one or more events. `holidays` schedules define exceptions to normal business hours by defining one or more events.\n\nThis API requires a full or user administrator auth token with the `spark-admin:people_write` scope.", - Method: "PUT", Path: "/people/{personId}/features/schedules/{scheduleType}/{scheduleId}/events/{eventId}", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "scheduleType", In: InPath, Flag: "schedule-type", Usage: "Type of schedule, either `businessHours` or `holidays`."}, - {Name: "scheduleId", In: InPath, Flag: "schedule-id", Usage: "Unique identifier for the schedule."}, - {Name: "eventId", In: InPath, Flag: "event-id", Usage: "Unique identifier for the event."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, - Body: &Body{}, -} - -var CallingUserCallDeleteEventPersonSchedule = &Operation{ - ID: "CallingUserCallDeleteEventPersonSchedule", Area: "calling", Group: "user-call", Command: "delete-event-person-schedule", - Summary: "Delete an Event for a person's Schedule", - Description: "People can use shared location schedules or define personal schedules containing events.\n\n`businessHours` schedules allow you to apply specific call settings at different times of the day or week by defining one or more events. `holidays` schedules define exceptions to normal business hours by defining one or more events.\n\nThis API requires a full or user administrator auth token with the `spark-admin:people_write` scope.", - Method: "DELETE", Path: "/people/{personId}/features/schedules/{scheduleType}/{scheduleId}/events/{eventId}", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "scheduleType", In: InPath, Flag: "schedule-type", Usage: "Type of schedule, either `businessHours` or `holidays`."}, - {Name: "scheduleId", In: InPath, Flag: "schedule-id", Usage: "Unique identifier for the schedule."}, - {Name: "eventId", In: InPath, Flag: "event-id", Usage: "Unique identifier for the event."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, -} - -var CallingUserCallCreateEventPersonSchedule = &Operation{ - ID: "CallingUserCallCreateEventPersonSchedule", Area: "calling", Group: "user-call", Command: "create-event-person-schedule", - Summary: "Add a New Event for Person's Schedule", - Description: "People can use shared location schedules or define personal schedules containing events.\n\n`businessHours` schedules allow you to apply specific call settings at different times of the day or week by defining one or more events. `holidays` schedules define exceptions to normal business hours by defining one or more events.\n\nThis API requires a full or user administrator auth token with the `spark-admin:people_write` scope.", - Method: "POST", Path: "/people/{personId}/features/schedules/{scheduleType}/{scheduleId}/events", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "scheduleType", In: InPath, Flag: "schedule-type", Usage: "Type of schedule, either `businessHours` or `holidays`."}, - {Name: "scheduleId", In: InPath, Flag: "schedule-id", Usage: "Unique identifier for the schedule."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, - Body: &Body{}, -} - -var CallingUserCallGetVoicemailPerson = &Operation{ - ID: "CallingUserCallGetVoicemailPerson", Area: "calling", Group: "user-call", Command: "get-voicemail-person", - Summary: "Read Voicemail Settings for a Person", - Description: "Retrieve a person's Voicemail settings.\n\nThe voicemail feature transfers callers to voicemail based on your settings. You can then retrieve voice messages via Voicemail. Voicemail audio is sent in Waveform Audio File Format, `.wav`, format.\n\nOptionally, notifications can be sent to a mobile phone via text or email. These notifications will not include the voicemail files.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:people_read` or a user auth token with `spark:people_read` scope can be used by a person to read their settings.", - Method: "GET", Path: "/people/{personId}/features/voicemail", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, -} - -var CallingUserCallUpdateVoicemailPerson = &Operation{ - ID: "CallingUserCallUpdateVoicemailPerson", Area: "calling", Group: "user-call", Command: "update-voicemail-person", - Summary: "Configure Voicemail Settings for a Person", - Description: "Configure a person's Voicemail settings.\n\nThe voicemail feature transfers callers to voicemail based on your settings. You can then retrieve voice messages via Voicemail. Voicemail audio is sent in Waveform Audio File Format, `.wav`, format.\n\nOptionally, notifications can be sent to a mobile phone via text or email. These notifications will not include the voicemail files.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope or a user auth token with `spark:people_write` scope can be used by a person to update their settings.", - Method: "PUT", Path: "/people/{personId}/features/voicemail", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, - Body: &Body{}, -} - -var CallingUserCallUpdateBusyVoicemailGreetingPerson = &Operation{ - ID: "CallingUserCallUpdateBusyVoicemailGreetingPerson", Area: "calling", Group: "user-call", Command: "update-busy-voicemail-greeting-person", - Summary: "Configure Busy Voicemail Greeting for a Person", - Description: "Configure a person's Busy Voicemail Greeting by uploading a Waveform Audio File Format, `.wav`, encoded audio file.\n\nYour request will need to be a `multipart/form-data` request rather than JSON, using the `audio/wav` Content-Type.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope or a user auth token with `spark:people_write` scope can be used by a person to update their settings.", - Method: "POST", Path: "/people/{personId}/features/voicemail/actions/uploadBusyGreeting/invoke", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, - Handwritten: true, -} - -var CallingUserCallUpdateNoAnswerVoicemailGreetingPerson = &Operation{ - ID: "CallingUserCallUpdateNoAnswerVoicemailGreetingPerson", Area: "calling", Group: "user-call", Command: "update-no-answer-voicemail-greeting-person", - Summary: "Configure No Answer Voicemail Greeting for a Person", - Description: "Configure a person's No Answer Voicemail Greeting by uploading a Waveform Audio File Format, `.wav`, encoded audio file.\n\nYour request will need to be a `multipart/form-data` request rather than JSON, using the `audio/wav` Content-Type.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope or a user auth token with `spark:people_write` scope can be used by a person to update their settings.", - Method: "POST", Path: "/people/{personId}/features/voicemail/actions/uploadNoAnswerGreeting/invoke", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, - Handwritten: true, -} - -var CallingUserCallResetVoicemailPin = &Operation{ - ID: "CallingUserCallResetVoicemailPin", Area: "calling", Group: "user-call", Command: "reset-voicemail-pin", - Summary: "Reset Voicemail PIN", - Description: "Reset a voicemail PIN for a person.\n\nThe voicemail feature transfers callers to voicemail based on your settings. You can then retrieve voice messages via Voicemail. A voicemail PIN is used to retrieve your voicemail messages.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope.\n\n**NOTE**: This API is expected to have an empty request body and Content-Type header should be set to `application/json`.", - Method: "POST", Path: "/people/{personId}/features/voicemail/actions/resetPin/invoke", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, - Body: &Body{}, -} - -var CallingUserCallValidateInitiateMoveJob = &Operation{ - ID: "CallingUserCallValidateInitiateMoveJob", Area: "calling", Group: "user-call", Command: "validate-initiate-move-job", - Summary: "Validate or Initiate Move Users Job", - Description: "This API allows the user to perform one of the following operations:\n\n* Setting the `validate` attribute to `true` validates the user move.\n\n* Setting the `validate` attribute to `false` performs the user move.\n\n
\n\nNotes:\n\n* A maximum of `100` users can be moved at a time.\n\n* Setting the `validate` attribute to `true` only allowed for calling user.\n\n* When a single non calling user is moved, it will be moved synchronously without creating any job.\n\n
\n\nErrors occurring during the initial API request validation are captured directly in the error response, along with the appropriate HTTP status code.\n\n
\n\nBelow is a list of possible error `code` values and their associated `message`, which can be found in the `errors` array during initial API request validation, regardless of the `validate` attribute value:\n\n* BATCH-400 - Attribute 'User ID' is required.\n\n* BATCH-400 - Users list should not be empty.\n\n* BATCH-400 - Users should not be empty.\n\n* 1026006 - Attribute 'Validate' is required.\n\n* 1026010 - User is not a valid Calling User.\n\n* 1026011 - Users list should not be empty.\n\n* 1026012 - Users should not be empty.\n\n* 1026013 - The source and the target location cannot be the same.\n\n* 1026014 - Error occurred while processing the move users request.\n\n* 1026015 - Error occurred while moving user number to target location.\n\n* 1026016 - User should have either phone number or extension.\n\n* 1026017 - Phone number is not in e164 format.\n\n* 1026018 - Selected Users list exceeds the maximum limit.\n\n* 1026019 - Duplicate entry for user is not allowed.\n\n* 1026020 - Validate 'true' is supported only for single user.\n\n* 1026021 - Attribute location id is required for Calling user.\n\n* 1026022 - Validate 'true' is supported for calling users only.\n\n* 1026023 - Extension and phone number is supported for calling users only.\n\n* 2150012 - User was not found\n\n
\n\nWhen the `validate` attribute is set to true, the API identifies and returns the `errors` and `impacts` associated with the user move in the response.\n\n
\n\nBelow is a list of possible error `code` values and their associated `message`, which can be found in the `errors` array, when `validate` attribute is set to be true:\n\n* 4003 - `User Not Found`\n\n* 4007 - `User Not Found`\n\n* 4152 - `Location Not Found`\n\n* 5620 - `Location Not Found`\n\n* 4202 - `The extension is not available. It is already assigned to a user : {0}`\n\n* 8264 - `Routing profile is different with new group: {0}`\n\n* 19600 - `User has to be within an enterprise to be moved.`\n\n* 19601 - `User can only be moved to a different group within the same enterprise.`\n\n* 19602 - `Only regular end user can be moved. Service instance virtual user cannot be moved.`\n\n* 19603 - `New group already reaches maximum number of user limits.`\n\n* 19604 - `The {0} number of the user is the same as the calling line ID of the group.`\n\n* 19605 - `User is assigned services not authorized to the new group: {0}.`\n\n* 19606 - `User is in an active hoteling/flexible seating association.`\n\n* 19607 - `User is pilot user of a trunk group.`\n\n* 19608 - `User is using group level device profiles which is used by other users in current group. Following are the device profiles shared with other users: {0}.`\n\n* 19609 - `Following device profiles cannot be moved to the new group because there are already devices with the same name defined in the new group: {0}.`\n\n* 19610 - `The extension of the user is used as transfer to operator number for following Auto Attendent : {0}.`\n\n* 19611 - `Fail to move announcement file from {0} to {1}.`\n\n* 19612 - `Fail to move device management file from {0} to {1}.`\n\n* 19613 - `User is assigned service packs not authorized to the new group: {0}.`\n\n* 25008 - `Missing Mandatory field name: {0}`\n\n* 25110 - `{fieldName} cannot be less than {0} or greater than {1} characters.`\n\n* 25378 - `Target location is same as user's current location.`\n\n* 25379 - `Error Occurred while Fetching User's Current Location Id.`\n\n* 25381 - `Error Occurred while rolling back to Old Location Call recording Settings`\n\n* 25382 - `Error Occurred while Disabling Call Recording for user which is required Before User can be Moved`\n\n* 25383 - `OCI Error while moving user`\n\n* 25384 - `Error Occurred while checking for Possible Call Recording Impact.`\n\n* 25385 - `Error Occurred while getting Call Recording Settings`\n\n* 27559 - `The groupExternalId search criteria contains groups with different calling zone.`\n\n* 27960 - `Parameter isWebexCalling, newPhoneNumber, or newExtension can only be set in Webex Calling deployment mode.`\n\n* 27961 - `Parameter isWebexCalling shall be set if newPhoneNumber or newExtension is set.`\n\n* 27962 - `Work space cannot be moved.`\n\n* 27963 - `Virtual profile user cannot be moved.`\n\n* 27965 - `The user's phone number: {0}, is same as the current group charge number.`\n\n* 27966 - `The phone number, {0}, is not available in the new group.`\n\n* 27967 - `User is configured as the ECBN user for another user in the current group.`\n\n* 27968 - `User is configured as the ECBN user for the current group.`\n\n* 27969 - `User is associated with DECT handset(s): {0}`\n\n* 27970 - `User is using a customer managed device: {0}`\n\n* 27971 - `User is using an ATA device: {0}`\n\n* 27972 - `User is in an active hotdesking association.`\n\n* 27975 - `Need to unassign CLID number from group before moving the number to the new group. Phone number: {0}`\n\n* 27976 - `Local Gateway configuration is different with new group. Phone number: {0}`\n\n* 1026015 - `Error occurred while moving user number to target location`\n\n* 10010000 - `Total numbers exceeded maximum limit allowed`\n\n* 10010001 - `to-location and from-location cannot be same`\n\n* 10010002 - `to-location and from-location should belong to same customer`\n\n* 10010003 - `to-location must have a carrier`\n\n* 10010004 - `from-location must have a carrier`\n\n* 10010005 - `Different Carrier move is not supported for non-Cisco PSTN carriers.`\n\n* 10010006 - `Number move not supported for WEBEX_DIRECT carriers.`\n\n* 10010007 - `Numbers out of sync, missing on CPAPI`\n\n* 10010008 - `from-location not found or pstn connection missing in CPAPI`\n\n* 10010010 - `from-location is in transition`\n\n* 10010009 - `to-location not found or pstn connection missing in CPAPI`\n\n* 10010011 - `to-location is in transition`\n\n* 10010012 - `Numbers don't have a carrier Id`\n\n* 10010013 - `Location less numbers don't have a carrier Id`\n\n* 10010014 - `Different Carrier move is not supported for numbers with different country or region.`\n\n* 10010015 - `Numbers contain mobile and non-mobile types.`\n\n* 10010016 - `To/From location carriers must be same for mobile numbers.`\n\n* 10010017 - `Move request for location less number not supported`\n\n* 10010200 - `Move request for more than one block number is not supported`\n\n* 10010201 - `Cannot move block number as few numbers not from the block starting %s to %s`\n\n* 10010202 - `Cannot move block number as few numbers failed VERIFICATION from the block %s to %s`\n\n* 10010203 - `Cannot move block number as few numbers missing from the block %s to %s`\n\n* 10010204 - `Cannot move number as it is NOT a part of the block %s to %s`\n\n* 10010205 - `Move request for Cisco PSTN block order not supported.`\n\n* 10010299 - `Move order couldn't be created as no valid number to move`\n\n* 10030000 - `Number not found`\n\n* 10030001 - `Number does not belong to from-location`\n\n* 10030002 - `Number is not present in CPAPI`\n\n* 10030003 - `Number assigned to an user or device`\n\n* 10030004 - `Number not in Active status`\n\n* 10030005 - `Number is set as main number of the location`\n\n* 10030006 - `Number has pending order associated with it`\n\n* 10030007 - `Number belongs to a location but a from-location was not set`\n\n* 10030008 - `Numbers from multiple carrier ids are not supported`\n\n* 10030009 - `Location less number belongs to a location. from-location value is set to null or no location id`\n\n* 10030010 - `One or more numbers are not portable.`\n\n* 10030011 - `Mobile number carrier was not set`\n\n* 10030012 - `Number must be assigned for assigned move`\n\n* 10050000 - `Failed to update customer reference for phone numbers on carrier`\n\n* 10050001 - `Failed to update customer reference`\n\n* 10050002 - `Order is not of operation type MOVE`\n\n* 10050003 - `CPAPI delete call failed`\n\n* 10050004 - `Not found in database`\n\n* 10050005 - `Error sending notification to WxcBillingService`\n\n* 10050006 - `CPAPI provision number as active call failed with status %s ,reason %s`\n\n* 10050007 - `Failed to update E911 Service`\n\n* 10050008 - `Target location does not have Inbound Toll Free license`\n\n* 10050009 - `Source location or Target location subscription found cancelled or suspended`\n\n* 10050010 - `Moving On Premises or Non Integrated CCP numbers from one location to another is not supported.`\n\n* 10099999 - `{Error Code} - {Error Message}`\n\n
\n\nBelow is a list of possible impact `code` values and their associated `message`, which can be found in the `impacts` array, when `validate` attribute is set to be true:\n\n* 19701 - `The identity/device profile the user is using is moved to the new group: {0}.`\n\n* 19702 - `The user level customized incoming digit string setting is removed from the user. User is set to use the new group setting.`\n\n* 19703 - `The user level customized outgoing digit plan setting is removed from the user. User is set to use the new group setting.`\n\n* 19704 - `The user level customized enhanced outgoing calling plan setting is removed from the user. User is set to use the new group setting.`\n\n* 19705 - `User is removed from following group services: {0}.`\n\n* 19706 - `The current group schedule used in any criteria is removed from the service settings.`\n\n* 19707 - `User is removed from the department of the old group.`\n\n* 19708 - `User is changed to use the default communication barring profile of the new group.`\n\n* 19709 - `The communication barring profile of the user is assigned to the new group: {0}.`\n\n* 19710 - `The charge number for the user is removed.`\n\n* 19711 - `The disabled FACs for the user are removed because they are not available in the new group.`\n\n* 19712 - `User is removed from trunk group.`\n\n* 19713 - `The extension of the user is reset to empty due to either the length is out of bounds of the new group, or the extension is already taken in new group.`\n\n* 19714 - `The extension of the following alternate number is reset to empty due to either the length out of bounds of the new group or the extension is already taken in new group: {0}.`\n\n* 19715 - `The collaborate room using current group default collaborate bridge is moved to the default collaborate bridge of the new group.`\n\n* 19716 - `Previously stored voice messages of the user are no longer available. The new voice message will be stored on the mail server of the new group.`\n\n* 19717 - `The primary number, alternate numbers or fax messaging number of the user are assigned to the new group: {0}.`\n\n* 19718 - `Following domains are assigned to the new group: {0}.`\n\n* 19719 - `The NCOS of the user is assigned to the new group: {0}.`\n\n* 19720 - `The office zone of the user is assigned to the new group: {0}.`\n\n* 19721 - `The announcement media files are relocated to the new group directory.`\n\n* 19722 - `User CLID number is set to use the new group CLID number: {0}.`\n\n* 19723 - `New group CLID number is not configured.`\n\n* 19724 - `The group level announcement file(s) are removed from the user's music on hold settings.`\n\n* 25388 - `Target Location Does not Have Vendor Configured. Call Recording for user will be disabled`\n\n* 25389 - `Call Recording Vendor for user will be changed from:{0} to:{1}`\n\n* 25390 - `Dub point of user is moved to new external group`\n\n* 25391 - `Error Occurred while moving Call recording Settings to new location`\n\n* 25392 - `Error Occurred while checking for Possible Call Recording Impact.`\n\n* 25393 - `Sending Billing Notification Failed`\n\nThis API requires a full administrator auth token with the scopes `spark-admin:telephony_config_write`, `spark-admin:people_write`, and `identity:groups_rw`.", - Method: "POST", Path: "/telephony/config/jobs/person/moveLocation", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Create Move Users job for this organization."}, - }, - Body: &Body{}, -} - -var CallingUserCallListMoveJobs = &Operation{ - ID: "CallingUserCallListMoveJobs", Area: "calling", Group: "user-call", Command: "list-move-jobs", - Summary: "List Move Users Jobs", - Description: "Lists all the Move Users jobs for the given organization in order of most recent job to oldest job irrespective of its status.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/jobs/person/moveLocation", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve list of Move Users jobs for this organization."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of jobs. Default is 0."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of jobs returned to this maximum count. Default is 2000."}, - }, - Paging: &Paging{}, -} - -var CallingUserCallGetMoveJobStatus = &Operation{ - ID: "CallingUserCallGetMoveJobStatus", Area: "calling", Group: "user-call", Command: "get-move-job-status", - Summary: "Get Move Users Job Status", - Description: "Returns the status and other details of the job.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/jobs/person/moveLocation/{jobId}", Host: HostWebex, - Params: []Param{ - {Name: "jobId", In: InPath, Flag: "job-id", Usage: "Retrieve job details for this `jobId`."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve job details for this organization."}, - }, -} - -var CallingUserCallPauseMoveJob = &Operation{ - ID: "CallingUserCallPauseMoveJob", Area: "calling", Group: "user-call", Command: "pause-move-job", - Summary: "Pause the Move Users Job", - Description: "Pause the running Move Users Job. A paused job can be resumed.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/jobs/person/moveLocation/{jobId}/actions/pause/invoke", Host: HostWebex, - Params: []Param{ - {Name: "jobId", In: InPath, Flag: "job-id", Usage: "Pause the Move Users job for this `jobId`."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Pause the Move Users job for this organization."}, - }, -} - -var CallingUserCallResumeMoveJob = &Operation{ - ID: "CallingUserCallResumeMoveJob", Area: "calling", Group: "user-call", Command: "resume-move-job", - Summary: "Resume the Move Users Job", - Description: "Resume the paused Move Users Job that is in paused status.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/jobs/person/moveLocation/{jobId}/actions/resume/invoke", Host: HostWebex, - Params: []Param{ - {Name: "jobId", In: InPath, Flag: "job-id", Usage: "Resume the Move Users job for this `jobId`."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Resume the Move Users job for this organization."}, - }, -} - -var CallingUserCallListMoveJobErrors = &Operation{ - ID: "CallingUserCallListMoveJobErrors", Area: "calling", Group: "user-call", Command: "list-move-job-errors", - Summary: "List Move Users Job errors", - Description: "Lists all error details of Move Users job. This will not list any errors if `exitCode` is `COMPLETED`. If the status is `COMPLETED_WITH_ERRORS` then this lists the cause of failures.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/jobs/person/moveLocation/{jobId}/errors", Host: HostWebex, - Params: []Param{ - {Name: "jobId", In: InPath, Flag: "job-id", Usage: "Retrieve the error details for this `jobId`."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve list of jobs for this organization."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Specifies the error offset from the first result that you want to fetch."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Specifies the maximum number of records that you want to fetch."}, - }, - Paging: &Paging{}, -} - -var CallingUserCallGetMusicHoldSettingsPerson = &Operation{ - ID: "CallingUserCallGetMusicHoldSettingsPerson", Area: "calling", Group: "user-call", Command: "get-music-hold-settings-person", - Summary: "Retrieve Music On Hold Settings for a Person", - Description: "Retrieve the person's music on hold settings.\n\nMusic on hold is played when a caller is put on hold, or the call is parked.\n\nRetrieving a person's music on hold settings requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/{personId}/musicOnHold", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, -} - -var CallingUserCallUpdateMusicHoldSettingsPerson = &Operation{ - ID: "CallingUserCallUpdateMusicHoldSettingsPerson", Area: "calling", Group: "user-call", Command: "update-music-hold-settings-person", - Summary: "Configure Music On Hold Settings for a Person", - Description: "Configure a person's music on hold settings.\n\nMusic on hold is played when a caller is put on hold, or the call is parked.\n\nTo configure music on hold settings for a person, music on hold setting must be enabled for this location.\n\nUpdating a person's music on hold settings requires a full or user administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/{personId}/musicOnHold", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, - Body: &Body{}, -} - -var CallingUserCallGetAccessCodesPerson = &Operation{ - ID: "CallingUserCallGetAccessCodesPerson", Area: "calling", Group: "user-call", Command: "get-access-codes-person", - Summary: "Retrieve Access Codes for a Person", - Description: "Retrieve the person's access codes.\n\nAccess codes are used to bypass permissions.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/{personId}/outgoingPermission/accessCodes", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingUserCallUpdateAccessCodesPerson = &Operation{ - ID: "CallingUserCallUpdateAccessCodesPerson", Area: "calling", Group: "user-call", Command: "update-access-codes-person", - Summary: "Modify Access Codes for a Person", - Description: "Modify a person's access codes.\n\nAccess codes are used to bypass permissions.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:telephony_config_write` scope.", - Method: "PUT", Path: "/telephony/config/people/{personId}/outgoingPermission/accessCodes", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "deleteCodes", Flag: "delete-codes", Type: "[]string"}, - }}, -} - -var CallingUserCallCreateAccessCodesPerson = &Operation{ - ID: "CallingUserCallCreateAccessCodesPerson", Area: "calling", Group: "user-call", Command: "create-access-codes-person", - Summary: "Create Access Codes for a Person", - Description: "Create new Access codes for the person.\n\nAccess codes are used to bypass permissions.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:telephony_config_write` scope.", - Method: "POST", Path: "/telephony/config/people/{personId}/outgoingPermission/accessCodes", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "code", Flag: "code", Type: "string"}, - {Name: "description", Flag: "description", Type: "string"}, - }}, -} - -var CallingUserCallDeleteAccessCodesPerson = &Operation{ - ID: "CallingUserCallDeleteAccessCodesPerson", Area: "calling", Group: "user-call", Command: "delete-access-codes-person", - Summary: "Delete Access Codes for a Person", - Description: "Deletes all Access codes for the person.\n\nAccess codes are used to bypass permissions.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:telephony_config_write` scope.", - Method: "DELETE", Path: "/telephony/config/people/{personId}/outgoingPermission/accessCodes", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingUserCallGetTransferNumbersPerson = &Operation{ - ID: "CallingUserCallGetTransferNumbersPerson", Area: "calling", Group: "user-call", Command: "get-transfer-numbers-person", - Summary: "Retrieve Transfer Numbers for a Person", - Description: "Retrieve the person's transfer numbers.\n\nWhen calling a specific call type, this person will be automatically transferred to another number. The person assigned the Auto Transfer Number can then approve the call and send it through or reject the call type. You can add up to 3 numbers.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/{personId}/outgoingPermission/autoTransferNumbers", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingUserCallUpdateTransferNumbersPerson = &Operation{ - ID: "CallingUserCallUpdateTransferNumbersPerson", Area: "calling", Group: "user-call", Command: "update-transfer-numbers-person", - Summary: "Modify Transfer Numbers for a Person", - Description: "Modify a person's transfer numbers.\n\nWhen calling a specific call type, this person will be automatically transferred to another number. The person assigned the Auto Transfer Number can then approve the call and send it through or reject the call type. You can add up to 3 numbers.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:telephony_config_write` scope.", - Method: "PUT", Path: "/telephony/config/people/{personId}/outgoingPermission/autoTransferNumbers", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "useCustomTransferNumbers", Flag: "use-custom-transfer-numbers", Type: "bool"}, - {Name: "autoTransferNumber1", Flag: "auto-transfer-number1", Type: "string"}, - {Name: "autoTransferNumber2", Flag: "auto-transfer-number2", Type: "string"}, - {Name: "autoTransferNumber3", Flag: "auto-transfer-number3", Type: "string"}, - }}, -} - -var CallingUserCallGetDigitPatternsPerson = &Operation{ - ID: "CallingUserCallGetDigitPatternsPerson", Area: "calling", Group: "user-call", Command: "get-digit-patterns-person", - Summary: "Retrieve Digit Patterns for a Person", - Description: "Retrieve the person's digit patterns.\n\nDigit patterns are used to bypass permissions.\n\nRetrieving digit patterns requires a full or user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/{personId}/outgoingPermission/digitPatterns", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingUserCallCreateDigitPatternsPerson = &Operation{ - ID: "CallingUserCallCreateDigitPatternsPerson", Area: "calling", Group: "user-call", Command: "create-digit-patterns-person", - Summary: "Create Digit Patterns for a Person", - Description: "Create a new digit pattern for the given person.\n\nDigit patterns are used to bypass permissions.\n\nCreating the digit pattern requires a full or user or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/people/{personId}/outgoingPermission/digitPatterns", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "name", Flag: "name", Type: "string"}, - {Name: "pattern", Flag: "pattern", Type: "string"}, - {Name: "action", Flag: "action", Type: "string"}, - {Name: "transferEnabled", Flag: "transfer-enabled", Type: "bool"}, - }}, -} - -var CallingUserCallUpdateDigitPatternControlPerson = &Operation{ - ID: "CallingUserCallUpdateDigitPatternControlPerson", Area: "calling", Group: "user-call", Command: "update-digit-pattern-control-person", - Summary: "Modify the Digit Pattern Category Control Settings for a Person", - Description: "Modifies whether this user uses the specified digit patterns when placing outbound calls or not.\n\nUpdating the digit pattern category control settings requires a full or user or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/{personId}/outgoingPermission/digitPatterns", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "useCustomDigitPatterns", Flag: "use-custom-digit-patterns", Type: "bool"}, - }}, -} - -var CallingUserCallDeleteAllDigitPatternsPerson = &Operation{ - ID: "CallingUserCallDeleteAllDigitPatternsPerson", Area: "calling", Group: "user-call", Command: "delete-all-digit-patterns-person", - Summary: "Delete all Digit Patterns for a Person", - Description: "Delete all digit patterns for a Person.\n\nDigit patterns are used to bypass permissions.\n\nDeleting the digit patterns requires a full or user or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/people/{personId}/outgoingPermission/digitPatterns", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingUserCallGetDigitPatternPerson = &Operation{ - ID: "CallingUserCallGetDigitPatternPerson", Area: "calling", Group: "user-call", Command: "get-digit-pattern-person", - Summary: "Retrieve Digit Pattern Details for a Person", - Description: "Retrieve the digit pattern details for a person.\n\nDigit patterns are used to bypass permissions.\n\nRetrieving the digit pattern details requires a full or user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/{personId}/outgoingPermission/digitPatterns/{digitPatternId}", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "digitPatternId", In: InPath, Flag: "digit-pattern-id", Usage: "Unique identifier for the digit pattern."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingUserCallUpdateDigitPatternPerson = &Operation{ - ID: "CallingUserCallUpdateDigitPatternPerson", Area: "calling", Group: "user-call", Command: "update-digit-pattern-person", - Summary: "Modify a Digit Pattern for a Person", - Description: "Modify a digit pattern for a Person.\n\nDigit patterns are used to bypass permissions.\n\nUpdating the digit pattern requires a full or user or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/{personId}/outgoingPermission/digitPatterns/{digitPatternId}", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "digitPatternId", In: InPath, Flag: "digit-pattern-id", Usage: "Unique identifier for the digit pattern."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "name", Flag: "name", Type: "string"}, - {Name: "pattern", Flag: "pattern", Type: "string"}, - {Name: "action", Flag: "action", Type: "string"}, - {Name: "transferEnabled", Flag: "transfer-enabled", Type: "bool"}, - }}, -} - -var CallingUserCallDeleteDigitPatternPerson = &Operation{ - ID: "CallingUserCallDeleteDigitPatternPerson", Area: "calling", Group: "user-call", Command: "delete-digit-pattern-person", - Summary: "Delete a Digit Pattern for a Person", - Description: "Delete a digit pattern for a Person.\n\nDigit patterns are used to bypass permissions.\n\nDeleting the digit pattern requires a full or user or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/people/{personId}/outgoingPermission/digitPatterns/{digitPatternId}", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "digitPatternId", In: InPath, Flag: "digit-pattern-id", Usage: "Unique identifier for the digit pattern."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingUserCallAssignUnassignNumbersPerson = &Operation{ - ID: "CallingUserCallAssignUnassignNumbersPerson", Area: "calling", Group: "user-call", Command: "assign-unassign-numbers-person", - Summary: "Assign or Unassign numbers to a person", - Description: "Assign or unassign alternate phone numbers to a person.\n\nEach location has a set of phone numbers that can be assigned to people, workspaces, or features. Phone numbers must follow the E.164 format for all countries, except for the United States, which can also follow the National format. Active phone numbers are in service.\n\nAssigning or unassigning an alternate phone number to a person requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/{personId}/numbers", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identitfier of the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization of the Route Group."}, - }, - Body: &Body{}, -} - -var CallingUserCallGetPreferredEndpoint = &Operation{ - ID: "CallingUserCallGetPreferredEndpoint", Area: "calling", Group: "user-call", Command: "get-preferred-endpoint", - Summary: "Get Preferred Answer Endpoint", - Description: "Get the person's preferred answer endpoint and the list of endpoints available for selection. The preferred answer endpoint is null if one has not been selected. The list of endpoints is empty if the person has no endpoints assigned which support the preferred answer endpoint functionality. These endpoints can be used by the following Call Control API's that allow the person to specify an endpointId to use for the call:
\n\n+ [/v1/telephony/calls/dial](/docs/api/v1/call-controls/dial)
\n\n+ [/v1/telephony/calls/retrieve](/docs/api/v1/call-controls/retrieve)
\n\n+ [/v1/telephony/calls/pickup](/docs/api/v1/call-controls/pickup)
\n\n+ [/v1/telephony/calls/barge-in](/docs/api/v1/call-controls/barge-in)
\n\n+ [/v1/telephony/calls/answer](/docs/api/v1/call-controls/answer)
\n\nThis API requires `spark:telephony_config_read` or `spark-admin:telephony_config_read` scope.", - Method: "GET", Path: "/telephony/config/people/{personId}/preferredAnswerEndpoint", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, -} - -var CallingUserCallUpdatePreferredEndpoint = &Operation{ - ID: "CallingUserCallUpdatePreferredEndpoint", Area: "calling", Group: "user-call", Command: "update-preferred-endpoint", - Summary: "Modify Preferred Answer Endpoint", - Description: "Sets or clears the person’s preferred answer endpoint. To clear the preferred answer endpoint the `preferredAnswerEndpointId` attribute must be set to null.
\nThis API requires `spark:telephony_config_write` or `spark-admin:telephony_config_write` scope.", - Method: "PUT", Path: "/telephony/config/people/{personId}/preferredAnswerEndpoint", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "preferredAnswerEndpointId", Flag: "preferred-answer-endpoint-id", Type: "string"}, - }}, -} - -var CallingUserCallSearchSharedLineAppearanceMembers = &Operation{ - ID: "CallingUserCallSearchSharedLineAppearanceMembers", Area: "calling", Group: "user-call", Command: "search-shared-line-appearance-members", - Summary: "Search Shared-Line Appearance Members", - Description: "Get members available for shared-line assignment to a Webex Calling Apps Desktop device.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_read` scope.", - Method: "GET", Path: "/telephony/config/people/{personId}/applications/{applicationId}/availableMembers", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - {Name: "applicationId", In: InPath, Flag: "application-id", Usage: "A unique identifier for the application."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Number of records per page."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Page number."}, - {Name: "location", In: InQuery, Flag: "location", Usage: "Location ID for the user."}, - {Name: "name", In: InQuery, Flag: "name", Usage: "Search for users with names that match the query."}, - {Name: "number", In: InQuery, Flag: "number", Usage: "Search for users with numbers that match the query."}, - {Name: "order", In: InQuery, Flag: "order", Usage: "Sort by first name (`fname`) or last name (`lname`)."}, - {Name: "extension", In: InQuery, Flag: "extension", Usage: "Search for users with extensions that match the query."}, - }, - Paging: &Paging{}, -} - -var CallingUserCallGetSharedLineAppearanceMembers = &Operation{ - ID: "CallingUserCallGetSharedLineAppearanceMembers", Area: "calling", Group: "user-call", Command: "get-shared-line-appearance-members", - Summary: "Get Shared-Line Appearance Members", - Description: "Get primary and secondary members assigned to a shared line on a Webex Calling Apps Desktop device.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_read` scope.", - Method: "GET", Path: "/telephony/config/people/{personId}/applications/{applicationId}/members", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - {Name: "applicationId", In: InPath, Flag: "application-id", Usage: "A unique identifier for the application."}, - }, -} - -var CallingUserCallUpdateSharedLineAppearanceMembers = &Operation{ - ID: "CallingUserCallUpdateSharedLineAppearanceMembers", Area: "calling", Group: "user-call", Command: "update-shared-line-appearance-members", - Summary: "Put Shared-Line Appearance Members", - Description: "Add or modify primary and secondary users assigned to shared-lines on a Webex Calling Apps Desktop device.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope.", - Method: "PUT", Path: "/telephony/config/people/{personId}/applications/{applicationId}/members", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - {Name: "applicationId", In: InPath, Flag: "application-id", Usage: "A unique identifier for the application."}, - }, - Body: &Body{}, -} - -var CallingUserCallUpdatePersonVoicemailPasscode = &Operation{ - ID: "CallingUserCallUpdatePersonVoicemailPasscode", Area: "calling", Group: "user-call", Command: "update-person-voicemail-passcode", - Summary: "Modify a person's voicemail passcode", - Description: "Modify a person's voicemail passcode.\n\nModifying a person's voicemail passcode requires a full administrator, user administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/{personId}/voicemail/passcode", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Modify voicemail passcode for this person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Modify voicemail passcode for a person in this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "passcode", Flag: "passcode", Type: "string"}, - }}, -} - -var CallingUserCallGetMessageSummary = &Operation{ - ID: "CallingUserCallGetMessageSummary", Area: "calling", Group: "user-call", Command: "get-message-summary", - Summary: "Get Message Summary", - Description: "Get a summary of the voicemail messages for the user.", - Method: "GET", Path: "/telephony/voiceMessages/summary", Host: HostWebex, -} - -var CallingUserCallListMessages = &Operation{ - ID: "CallingUserCallListMessages", Area: "calling", Group: "user-call", Command: "list-messages", - Summary: "List Messages", - Description: "Get the list of all voicemail messages for the user.", - Method: "GET", Path: "/telephony/voiceMessages", Host: HostWebex, - Params: []Param{ - {Name: "lineOwnerId", In: InQuery, Flag: "line-owner-id", Usage: "The ID of a user, workspace, or virtual line for which there is a secondary line on a device owned by the user invoking the API."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var CallingUserCallDeleteMessage = &Operation{ - ID: "CallingUserCallDeleteMessage", Area: "calling", Group: "user-call", Command: "delete-message", - Summary: "Delete Message", - Description: "Delete a specfic voicemail message for the user.", - Method: "DELETE", Path: "/telephony/voiceMessages/{messageId}", Host: HostWebex, - Params: []Param{ - {Name: "messageId", In: InPath, Flag: "message-id", Usage: "The message identifer of the voicemail message to delete"}, - }, -} - -var CallingUserCallMarkRead = &Operation{ - ID: "CallingUserCallMarkRead", Area: "calling", Group: "user-call", Command: "mark-read", - Summary: "Mark As Read", - Description: "Update the voicemail message(s) as read for the user.\n\nIf the `messageId` is provided, then only mark that message as read. Otherwise, all messages for the user are marked as read.", - Method: "POST", Path: "/telephony/voiceMessages/markAsRead", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "messageId", Flag: "message-id", Type: "string"}, - {Name: "lineOwnerId", Flag: "line-owner-id", Type: "string"}, - }}, -} - -var CallingUserCallMarkUnread = &Operation{ - ID: "CallingUserCallMarkUnread", Area: "calling", Group: "user-call", Command: "mark-unread", - Summary: "Mark As Unread", - Description: "Update the voicemail message(s) as unread for the user.\n\nIf the `messageId` is provided, then only mark that message as unread. Otherwise, all messages for the user are marked as unread.", - Method: "POST", Path: "/telephony/voiceMessages/markAsUnread", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "messageId", Flag: "message-id", Type: "string"}, - {Name: "lineOwnerId", Flag: "line-owner-id", Type: "string"}, - }}, -} - -var CallingUserCallGetAgentListAvailableCallerIds = &Operation{ - ID: "CallingUserCallGetAgentListAvailableCallerIds", Area: "calling", Group: "user-call", Command: "get-agent-list-available-caller-ids", - Summary: "Retrieve Agent's List of Available Caller IDs", - Description: "Get the list of call queues and hunt groups available for caller ID use by this person as an agent.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:people_read`.", - Method: "GET", Path: "/telephony/config/people/{personId}/agent/availableCallerIds", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, -} - -var CallingUserCallGetAgentCallerId = &Operation{ - ID: "CallingUserCallGetAgentCallerId", Area: "calling", Group: "user-call", Command: "get-agent-caller-id", - Summary: "Retrieve Agent's Caller ID Information", - Description: "Retrieve the Agent's Caller ID Information.\n\nEach agent will be able to set their outgoing Caller ID as either the Call Queue's Caller ID, Hunt Group's Caller ID or their own configured Caller ID.\n\nThis API requires a full admin or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/{personId}/agent/callerId", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - }, -} - -var CallingUserCallUpdateAgentCallerId = &Operation{ - ID: "CallingUserCallUpdateAgentCallerId", Area: "calling", Group: "user-call", Command: "update-agent-caller-id", - Summary: "Modify Agent's Caller ID Information", - Description: "Modify Agent's Caller ID Information.\n\nEach Agent will be able to set their outgoing Caller ID as either the designated Call Queue's Caller ID or Hunt Group's Caller ID or their own configured Caller ID\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:telephony_config_write` scope.", - Method: "PUT", Path: "/telephony/config/people/{personId}/agent/callerId", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "selectedCallerId", Flag: "selected-caller-id", Type: "string"}, - }}, -} - -var CallingUserCallGetBridgeSettingsPerson = &Operation{ - ID: "CallingUserCallGetBridgeSettingsPerson", Area: "calling", Group: "user-call", Command: "get-bridge-settings-person", - Summary: "Read Call Bridge Settings for a Person", - Description: "Retrieve a person's Call Bridge settings.\n\nThis API requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:people_read`.", - Method: "GET", Path: "/telephony/config/people/{personId}/features/callBridge", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, -} - -var CallingUserCallUpdateBridgeSettingsPerson = &Operation{ - ID: "CallingUserCallUpdateBridgeSettingsPerson", Area: "calling", Group: "user-call", Command: "update-bridge-settings-person", - Summary: "Configure Call Bridge Settings for a Person", - Description: "Configure a person's Call Bridge settings.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope.", - Method: "PUT", Path: "/telephony/config/people/{personId}/features/callBridge", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "warningToneEnabled", Flag: "warning-tone-enabled", Type: "bool"}, - }}, -} - -var CallingUserCallGetPersonSecondaryAvailableNumbers = &Operation{ - ID: "CallingUserCallGetPersonSecondaryAvailableNumbers", Area: "calling", Group: "user-call", Command: "get-person-secondary-available-numbers", - Summary: "Get Person Secondary Available Phone Numbers", - Description: "List standard numbers that are available to be assigned as a person's secondary phone number.\nThese numbers are associated with the location of the person specified in the request URL, can be active or inactive, and are unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/{personId}/secondary/availableNumbers", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List numbers for this organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of phone numbers returned to this maximum count. The default is 2000."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching phone numbers. The default is 0."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - }, - Paging: &Paging{}, -} - -var CallingUserCallGetPersonFaxAvailableNumbers = &Operation{ - ID: "CallingUserCallGetPersonFaxAvailableNumbers", Area: "calling", Group: "user-call", Command: "get-person-fax-available-numbers", - Summary: "Get Person Fax Message Available Phone Numbers", - Description: "List standard numbers that are available to be assigned as a person's FAX message number.\nThese numbers are associated with the location of the person specified in the request URL, can be active or inactive, and are unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/{personId}/faxMessage/availableNumbers", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List numbers for this organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of phone numbers returned to this maximum count. The default is 2000."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching phone numbers. The default is 0."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - }, - Paging: &Paging{}, -} - -var CallingUserCallGetPersonForwardAvailableNumbers = &Operation{ - ID: "CallingUserCallGetPersonForwardAvailableNumbers", Area: "calling", Group: "user-call", Command: "get-person-forward-available-numbers", - Summary: "Get Person Call Forward Available Phone Numbers", - Description: "List the service and standard PSTN numbers that are available to be assigned as a person's call forward number.\nThese numbers are associated with the location of the person specified in the request URL, can be active or inactive, and are assigned to an owning entity.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/{personId}/callForwarding/availableNumbers", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List numbers for this organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of phone numbers returned to this maximum count. The default is 2000."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching phone numbers. The default is 0."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "ownerName", In: InQuery, Flag: "owner-name", Usage: "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255."}, - {Name: "extension", In: InQuery, Flag: "extension", Usage: "Returns the list of PSTN phone numbers with the given `extension`."}, - }, - Paging: &Paging{}, -} - -var CallingUserCallGetPersonPrimaryNumbers = &Operation{ - ID: "CallingUserCallGetPersonPrimaryNumbers", Area: "calling", Group: "user-call", Command: "get-person-primary-numbers", - Summary: "Get Person Primary Available Phone Numbers", - Description: "List numbers that are available to be assigned as a person's primary phone number.\nBy default, this API returns standard and mobile numbers from all locations that are unassigned. The parameters `licenseType` and `locationId` must align with the person's settings to determine the appropriate number for assignment.\nFailure to provide these parameters may result in the unsuccessful assignment of the returned number.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/primary/availableNumbers", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List numbers for this organization."}, - {Name: "locationId", In: InQuery, Flag: "location-id", Usage: "Return the list of phone numbers for this location within the given organization. The maximum length is 36."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of phone numbers returned to this maximum count. The default is 2000."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching phone numbers. The default is 0."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "licenseType", In: InQuery, Flag: "license-type", Usage: "Used to search numbers according to the person's `licenseType` to which the number will be assigned."}, - }, - Paging: &Paging{}, -} - -var CallingUserCallGetPersonEcbnAvailableNumbers = &Operation{ - ID: "CallingUserCallGetPersonEcbnAvailableNumbers", Area: "calling", Group: "user-call", Command: "get-person-ecbn-available-numbers", - Summary: "Get Person ECBN Available Phone Numbers", - Description: "List standard numbers that are available to be assigned as a person's emergency callback number.\nThese numbers are associated with the location of the person specified in the request URL, can be active or inactive, and are assigned to an owning entity.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/{personId}/emergencyCallbackNumber/availableNumbers", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List numbers for this organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of phone numbers returned to this maximum count. The default is 2000."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching phone numbers. The default is 0."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "ownerName", In: InQuery, Flag: "owner-name", Usage: "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255."}, - }, - Paging: &Paging{}, -} - -var CallingUserCallGetPersonInterceptAvailableNumbers = &Operation{ - ID: "CallingUserCallGetPersonInterceptAvailableNumbers", Area: "calling", Group: "user-call", Command: "get-person-intercept-available-numbers", - Summary: "Get Person Call Intercept Available Phone Numbers", - Description: "List the service and standard PSTN numbers that are available to be assigned as a person's call intercept number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are assigned to an owning entity.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/{personId}/callIntercept/availableNumbers", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List numbers for this organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of phone numbers returned to this maximum count. The default is 2000."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching phone numbers. The default is 0."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "ownerName", In: InQuery, Flag: "owner-name", Usage: "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255."}, - {Name: "extension", In: InQuery, Flag: "extension", Usage: "Returns the list of PSTN phone numbers with the given `extension`."}, - }, - Paging: &Paging{}, -} - -var CallingUserCallGetPersonMsTeamsSettings = &Operation{ - ID: "CallingUserCallGetPersonMsTeamsSettings", Area: "calling", Group: "user-call", Command: "get-person-ms-teams-settings", - Summary: "Retrieve a Person's MS Teams Settings", - Description: "
Not supported for Webex for Government (FedRAMP)
\n\nRetrieve a person's MS Teams settings.\n\nAt a person level, MS Teams settings allow access to retrieving the `HIDE WEBEX APP` and `PRESENCE SYNC` settings.\n\nTo retrieve a person's MS Teams settings requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/{personId}/settings/msTeams", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter since the default is the same organization as the token used to access the API."}, - }, -} - -var CallingUserCallUpdatePersonMsTeamsSetting = &Operation{ - ID: "CallingUserCallUpdatePersonMsTeamsSetting", Area: "calling", Group: "user-call", Command: "update-person-ms-teams-setting", - Summary: "Configure a Person's MS Teams Setting", - Description: "
Not supported for Webex for Government (FedRAMP)
\n\nConfigure a Person's MS Teams setting.\n\nMS Teams settings can be configured at the person level.\n\nRequires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/{personId}/settings/msTeams", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter since the default is the same organization as the token used to access the API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "settingName", Flag: "setting-name", Type: "string"}, - {Name: "value", Flag: "value", Type: "bool"}, - }}, -} - -var CallingUserCallGetPersonalAssistant = &Operation{ - ID: "CallingUserCallGetPersonalAssistant", Area: "calling", Group: "user-call", Command: "get-personal-assistant", - Summary: "Get Personal Assistant", - Description: "Retrieve Personal Assistant details for a specific user.\n\nPersonal Assistant is used to manage a user's incoming calls when they are away.\n\nRetrieving Personal Assistant details requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/{personId}/features/personalAssistant", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Get Personal Assistant details for the organization."}, - }, -} - -var CallingUserCallUpdatePersonalAssistant = &Operation{ - ID: "CallingUserCallUpdatePersonalAssistant", Area: "calling", Group: "user-call", Command: "update-personal-assistant", - Summary: "Update Personal Assistant", - Description: "Update Personal Assistant details for a specific user.\n\nPersonal Assistant is used to manage a user's incoming calls when they are away.\n\nUpdating Personal Assistant details requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/{personId}/features/personalAssistant", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Update Personal Assistant details for the organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "enabled", Flag: "enabled", Type: "bool"}, - {Name: "presence", Flag: "presence", Type: "string"}, - {Name: "untilDateTime", Flag: "until-date-time", Type: "string"}, - {Name: "transferEnabled", Flag: "transfer-enabled", Type: "bool"}, - {Name: "transferNumber", Flag: "transfer-number", Type: "string"}, - {Name: "alerting", Flag: "alerting", Type: "string"}, - {Name: "alertMeFirstNumberOfRings", Flag: "alert-me-first-number-of-rings", Type: "int64"}, - }}, -} - -var CallingUserCallListAvailableFeatures = &Operation{ - ID: "CallingUserCallListAvailableFeatures", Area: "calling", Group: "user-call", Command: "list-available-features", - Summary: "Retrieve the List of Available Features", - Description: "Retrieve a list of feature identifiers that can be assigned to a user for `Mode Management`. Feature identifiers reference feature instances like `Auto Attendants`, `Call Queues`, and `Hunt Groups`.\n\nFeatures with mode-based call forwarding enabled can be assigned to a user for `Mode Management`.\n\nRetrieving this list requires a full, read-only, or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/{personId}/modeManagement/availableFeatures", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the user."}, - {Name: "name", In: InQuery, Flag: "name", Usage: "List features whose `name` contains this string."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "List features whose phoneNumber contains this matching string."}, - {Name: "extension", In: InQuery, Flag: "extension", Usage: "List features whose `extension` contains this matching string."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Maximum number of features to return in a single page."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching objects."}, - {Name: "order", In: InQuery, Flag: "order", Usage: "Sort the list of features based on `name`, `phoneNumber`, or `extension`, either `asc`, or `desc`."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve features list from this organization."}, - }, - Paging: &Paging{}, -} - -var CallingUserCallListFeaturesAssignedModeManagement = &Operation{ - ID: "CallingUserCallListFeaturesAssignedModeManagement", Area: "calling", Group: "user-call", Command: "list-features-assigned-mode-management", - Summary: "Retrieve the List of Features Assigned to a User for Mode Management", - Description: "Retrieve a list of feature identifiers that are already assigned to a user for `Mode Management`. Feature identifiers reference feature instances like `Auto Attendants`, `Call Queues`, and `Hunt Groups`.\nA maximum of 50 features can be assigned to a user for `Mode Management`.\n\nFeatures with mode-based call forwarding enabled can be assigned to a user for `Mode Management`.\n\nRetrieving this list requires a full, read-only, or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/{personId}/modeManagement/features", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the user."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve features list from this organization."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var CallingUserCallAssignListFeaturesModeManagement = &Operation{ - ID: "CallingUserCallAssignListFeaturesModeManagement", Area: "calling", Group: "user-call", Command: "assign-list-features-mode-management", - Summary: "Assign a List of Features to a User for Mode Management", - Description: "Assign a user a list of feature identifiers for `Mode Management`. Feature identifiers reference feature instances like `Auto Attendants`, `Call Queues`, and `Hunt Groups`.\nA maximum of 50 features can be assigned to a user for `Mode Management`.\n\nUpdating mode management settings for a user requires a full, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/{personId}/modeManagement/features", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the user."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve features list from this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "featureIds", Flag: "feature-ids", Type: "[]string"}, - }}, -} - -var CallingUserCallGetUsersSelectiveAcceptList = &Operation{ - ID: "CallingUserCallGetUsersSelectiveAcceptList", Area: "calling", Group: "user-call", Command: "get-users-selective-accept-list", - Summary: "Get the User’s Selective Call Accept Criteria List", - Description: "Retrieve selective call accept criteria list for a user.\n\nWith the selective call accept feature, you can create different rules to accept specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, read-only, or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/{personId}/selectiveAccept", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization in which the user resides."}, - }, -} - -var CallingUserCallUpdateUsersSelectiveAccept = &Operation{ - ID: "CallingUserCallUpdateUsersSelectiveAccept", Area: "calling", Group: "user-call", Command: "update-users-selective-accept", - Summary: "Update User’s Selective Call Accept Criteria", - Description: "Modify selective call accept setting for a user.\n\nWith the Selective Call accept feature, you can create different rules to accept specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/{personId}/selectiveAccept", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization in which the user resides."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "enabled", Flag: "enabled", Type: "bool"}, - }}, -} - -var CallingUserCallCreateUsersSelectiveAcceptService = &Operation{ - ID: "CallingUserCallCreateUsersSelectiveAcceptService", Area: "calling", Group: "user-call", Command: "create-users-selective-accept-service", - Summary: "Create a Criteria to the User’s Selective Call Accept Service", - Description: "Add a criteria to the user's selective call accept service.\n\nWith the Selective Call accept feature, you can create different rules to accept specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/people/{personId}/selectiveAccept/criteria", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization in which the user resides."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "callsFrom", Flag: "calls-from", Type: "string"}, - {Name: "acceptEnabled", Flag: "accept-enabled", Type: "bool"}, - {Name: "scheduleName", Flag: "schedule-name", Type: "string"}, - {Name: "scheduleType", Flag: "schedule-type", Type: "string"}, - {Name: "scheduleLevel", Flag: "schedule-level", Type: "string"}, - {Name: "anonymousCallersEnabled", Flag: "anonymous-callers-enabled", Type: "bool"}, - {Name: "unavailableCallersEnabled", Flag: "unavailable-callers-enabled", Type: "bool"}, - {Name: "phoneNumbers", Flag: "phone-numbers", Type: "[]string"}, - }}, -} - -var CallingUserCallGetUsersSelectiveAcceptService = &Operation{ - ID: "CallingUserCallGetUsersSelectiveAcceptService", Area: "calling", Group: "user-call", Command: "get-users-selective-accept-service", - Summary: "Get a Criteria for the User’s Selective Call Accept Service", - Description: "Get the criteria details for the user's selective call accept service.\n\nWith the Selective Call accept feature, you can create different rules to accept specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, read-only, or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/{personId}/selectiveAccept/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Criteria ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization in which the user resides."}, - }, -} - -var CallingUserCallUpdateUsersSelectiveAcceptService = &Operation{ - ID: "CallingUserCallUpdateUsersSelectiveAcceptService", Area: "calling", Group: "user-call", Command: "update-users-selective-accept-service", - Summary: "Modify a Criteria From the User’s Selective Call Accept Service", - Description: "Modify a criteria for the user's selective call accept service.\n\nWith the Selective Call Accept feature, you can create different rules to accept specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/{personId}/selectiveAccept/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Criteria ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization in which the user resides."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "callsFrom", Flag: "calls-from", Type: "string"}, - {Name: "acceptEnabled", Flag: "accept-enabled", Type: "bool"}, - {Name: "scheduleName", Flag: "schedule-name", Type: "string"}, - {Name: "scheduleType", Flag: "schedule-type", Type: "string"}, - {Name: "scheduleLevel", Flag: "schedule-level", Type: "string"}, - {Name: "anonymousCallersEnabled", Flag: "anonymous-callers-enabled", Type: "bool"}, - {Name: "unavailableCallersEnabled", Flag: "unavailable-callers-enabled", Type: "bool"}, - {Name: "phoneNumbers", Flag: "phone-numbers", Type: "[]string"}, - }}, -} - -var CallingUserCallDeleteUsersSelectiveAcceptService = &Operation{ - ID: "CallingUserCallDeleteUsersSelectiveAcceptService", Area: "calling", Group: "user-call", Command: "delete-users-selective-accept-service", - Summary: "Delete a Criteria From the User’s Selective Call Accept service", - Description: "Delete a criteria from the user's selective call accept criteria list.\n\nWith the Selective Call Accept feature, you can create different rules to accept specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/people/{personId}/selectiveAccept/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Criteria ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization in which the user resides."}, - }, -} - -var CallingUserCallGetUsersSelectiveRejectListing = &Operation{ - ID: "CallingUserCallGetUsersSelectiveRejectListing", Area: "calling", Group: "user-call", Command: "get-users-selective-reject-listing", - Summary: "Get the User’s Selective Call Rejection Criteria Listing", - Description: "Retrieve selective call rejection criteria for a user.\n\nWith the Selective Call Rejection feature, you can create different rules to reject specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, read-only, or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/{personId}/selectiveReject", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization in which the user resides."}, - }, -} - -var CallingUserCallUpdateUsersSelectiveRejectList = &Operation{ - ID: "CallingUserCallUpdateUsersSelectiveRejectList", Area: "calling", Group: "user-call", Command: "update-users-selective-reject-list", - Summary: "Update User’s Selective Call Rejection Criteria List", - Description: "Modify selective call rejection setting for a user.\n\nWith the Selective Call Rejection feature, you can create different rules to reject specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/{personId}/selectiveReject", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization in which the user resides."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "enabled", Flag: "enabled", Type: "bool"}, - }}, -} - -var CallingUserCallCreateUsersSelectiveRejectService = &Operation{ - ID: "CallingUserCallCreateUsersSelectiveRejectService", Area: "calling", Group: "user-call", Command: "create-users-selective-reject-service", - Summary: "Create a Criteria to the User’s Selective Call Rejection Service", - Description: "Add a criteria to the user's selective call rejection service.\n\nWith the Selective Call Rejection feature, you can create different rules to reject specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/people/{personId}/selectiveReject/criteria", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization in which the user resides."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "callsFrom", Flag: "calls-from", Type: "string"}, - {Name: "rejectEnabled", Flag: "reject-enabled", Type: "bool"}, - {Name: "scheduleName", Flag: "schedule-name", Type: "string"}, - {Name: "scheduleType", Flag: "schedule-type", Type: "string"}, - {Name: "scheduleLevel", Flag: "schedule-level", Type: "string"}, - {Name: "anonymousCallersEnabled", Flag: "anonymous-callers-enabled", Type: "bool"}, - {Name: "unavailableCallersEnabled", Flag: "unavailable-callers-enabled", Type: "bool"}, - {Name: "phoneNumbers", Flag: "phone-numbers", Type: "[]string"}, - }}, -} - -var CallingUserCallGetUsersSelectiveRejectService = &Operation{ - ID: "CallingUserCallGetUsersSelectiveRejectService", Area: "calling", Group: "user-call", Command: "get-users-selective-reject-service", - Summary: "Get a Criteria for the User’s Selective Call Rejection Service", - Description: "Get a criteria for the user's selective call rejection service.\n\nWith the Selective Call Rejection feature, you can create different rules to reject specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, read-only, or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/{personId}/selectiveReject/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Criteria ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization in which the user resides."}, - }, -} - -var CallingUserCallUpdateUsersSelectiveRejectService = &Operation{ - ID: "CallingUserCallUpdateUsersSelectiveRejectService", Area: "calling", Group: "user-call", Command: "update-users-selective-reject-service", - Summary: "Modify a Criteria for the User’s Selective Call Rejection Service", - Description: "Modify a criteria for the user's selective call rejection service.\n\nWith the Selective Call Rejection feature, you can create different rules to reject specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/{personId}/selectiveReject/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Criteria ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization in which the user resides."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "callsFrom", Flag: "calls-from", Type: "string"}, - {Name: "rejectEnabled", Flag: "reject-enabled", Type: "bool"}, - {Name: "scheduleName", Flag: "schedule-name", Type: "string"}, - {Name: "scheduleType", Flag: "schedule-type", Type: "string"}, - {Name: "scheduleLevel", Flag: "schedule-level", Type: "string"}, - {Name: "anonymousCallersEnabled", Flag: "anonymous-callers-enabled", Type: "bool"}, - {Name: "unavailableCallersEnabled", Flag: "unavailable-callers-enabled", Type: "bool"}, - {Name: "phoneNumbers", Flag: "phone-numbers", Type: "[]string"}, - }}, -} - -var CallingUserCallDeleteUsersSelectiveRejectService = &Operation{ - ID: "CallingUserCallDeleteUsersSelectiveRejectService", Area: "calling", Group: "user-call", Command: "delete-users-selective-reject-service", - Summary: "Delete a Criteria From the User’s Selective Call Rejection Service", - Description: "Delete a criteria from the user's selective call rejection service.\n\nWith the Selective Call Rejection feature, you can create different rules to reject specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/people/{personId}/selectiveReject/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Criteria ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization in which the user resides."}, - }, -} - -var CallingUserCallGetUsersSelectiveForward = &Operation{ - ID: "CallingUserCallGetUsersSelectiveForward", Area: "calling", Group: "user-call", Command: "get-users-selective-forward", - Summary: "Get the User’s Selective Call Forwarding", - Description: "Retrieve selective call forwarding criteria for a user.\n\nWith the Selective Call Forwarding feature, you can create different rules to forward specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, read-only, or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/{personId}/selectiveForward", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization in which the user resides."}, - }, -} - -var CallingUserCallUpdateUsersSelectiveForwardList = &Operation{ - ID: "CallingUserCallUpdateUsersSelectiveForwardList", Area: "calling", Group: "user-call", Command: "update-users-selective-forward-list", - Summary: "Update User’s Selective Call Forwarding Criteria List", - Description: "Modify selective call forwarding setting for a user.\n\nWith the Selective Call Forwarding feature, you can create different rules to forward specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/{personId}/selectiveForward", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization in which the user resides."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "enabled", Flag: "enabled", Type: "bool"}, - {Name: "defaultPhoneNumberToForward", Flag: "default-phone-number-to-forward", Type: "string"}, - {Name: "ringReminderEnabled", Flag: "ring-reminder-enabled", Type: "bool"}, - {Name: "destinationVoicemailEnabled", Flag: "destination-voicemail-enabled", Type: "bool"}, - }}, -} - -var CallingUserCallCreateUsersSelectiveForwardService = &Operation{ - ID: "CallingUserCallCreateUsersSelectiveForwardService", Area: "calling", Group: "user-call", Command: "create-users-selective-forward-service", - Summary: "Create a Criteria to the User’s Selective Call Forwarding Service", - Description: "Add a criteria to the user's selective call forwarding service.\n\nWith the Selective Call Forwarding feature, you can create different rules to forward specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/people/{personId}/selectiveForward/criteria", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization in which the user resides."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "forwardToPhoneNumber", Flag: "forward-to-phone-number", Type: "string"}, - {Name: "sendToVoicemailEnabled", Flag: "send-to-voicemail-enabled", Type: "bool"}, - {Name: "callsFrom", Flag: "calls-from", Type: "string"}, - {Name: "scheduleName", Flag: "schedule-name", Type: "string"}, - {Name: "scheduleType", Flag: "schedule-type", Type: "string"}, - {Name: "scheduleLevel", Flag: "schedule-level", Type: "string"}, - {Name: "anonymousCallersEnabled", Flag: "anonymous-callers-enabled", Type: "bool"}, - {Name: "unavailableCallersEnabled", Flag: "unavailable-callers-enabled", Type: "bool"}, - {Name: "phoneNumbers", Flag: "phone-numbers", Type: "[]string"}, - {Name: "forwardEnabled", Flag: "forward-enabled", Type: "bool"}, - }}, -} - -var CallingUserCallGetUsersSelectiveForwardService = &Operation{ - ID: "CallingUserCallGetUsersSelectiveForwardService", Area: "calling", Group: "user-call", Command: "get-users-selective-forward-service", - Summary: "Get a Criteria for the User’s Selective Call Forwarding Service", - Description: "Get the criteria details for the user's selective call forwarding service.\n\nWith the Selective Call Forwarding feature, you can create different rules to forward specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, read-only, or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/{personId}/selectiveForward/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Criteria ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization in which the user resides."}, - }, -} - -var CallingUserCallUpdateUsersSelectiveForwardService = &Operation{ - ID: "CallingUserCallUpdateUsersSelectiveForwardService", Area: "calling", Group: "user-call", Command: "update-users-selective-forward-service", - Summary: "Modify a Criteria for the User’s Selective Call Forwarding Service", - Description: "Modify a criteria for the user's selective call forwarding service.\n\nWith the Selective Call Forwarding feature, you can create different rules to forward specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/{personId}/selectiveForward/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Criteria ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization in which the user resides."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "forwardToPhoneNumber", Flag: "forward-to-phone-number", Type: "string"}, - {Name: "sendToVoicemailEnabled", Flag: "send-to-voicemail-enabled", Type: "bool"}, - {Name: "callsFrom", Flag: "calls-from", Type: "string"}, - {Name: "scheduleName", Flag: "schedule-name", Type: "string"}, - {Name: "scheduleType", Flag: "schedule-type", Type: "string"}, - {Name: "scheduleLevel", Flag: "schedule-level", Type: "string"}, - {Name: "anonymousCallersEnabled", Flag: "anonymous-callers-enabled", Type: "bool"}, - {Name: "unavailableCallersEnabled", Flag: "unavailable-callers-enabled", Type: "bool"}, - {Name: "phoneNumbers", Flag: "phone-numbers", Type: "[]string"}, - {Name: "forwardEnabled", Flag: "forward-enabled", Type: "bool"}, - }}, -} - -var CallingUserCallDeleteUsersSelectiveForwardService = &Operation{ - ID: "CallingUserCallDeleteUsersSelectiveForwardService", Area: "calling", Group: "user-call", Command: "delete-users-selective-forward-service", - Summary: "Delete a Criteria From the User’s Selective Call Forwarding Service", - Description: "Delete a criteria from the user's selective call forwarding service.\n\nWith the Selective Call Forwarding feature, you can create different rules to forward specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/people/{personId}/selectiveForward/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Criteria ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization in which the user resides."}, - }, -} - -var CallingUserCallGetPersonApplicationServicesSettings2 = &Operation{ - ID: "CallingUserCallGetPersonApplicationServicesSettings2", Area: "calling", Group: "user-call", Command: "get-person-application-services-settings-2", - Summary: "Retrieve a person's Application Services Settings New", - Description: "Gets mobile and PC applications settings for a user.\n\nApplication services let you determine the ringing behavior for calls made to people in certain scenarios. You can also specify which devices can download the Webex Calling app.\n\nRequires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/people/{personId}/features/applications", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, -} - -var CallingUserCallSearchSharedLineAppearanceMembers2 = &Operation{ - ID: "CallingUserCallSearchSharedLineAppearanceMembers2", Area: "calling", Group: "user-call", Command: "search-shared-line-appearance-members-2", - Summary: "Search Shared-Line Appearance Members New", - Description: "Get members available for shared-line assignment to a Webex Calling Apps.\n\nLike most hardware devices, applications support assigning additional shared lines which can monitored and utilized by the application.\n\nThis API requires a full, user, or location administrator auth token with the `spark-admin:telephony_config_read` scope.", - Method: "GET", Path: "/telephony/config/people/{personId}/applications/availableMembers", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of objects returned to this maximum count."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching objects."}, - {Name: "order", In: InQuery, Flag: "order", Usage: "Order the Route Lists according to number, ascending or descending."}, - {Name: "location", In: InQuery, Flag: "location", Usage: "Location ID for the user."}, - {Name: "name", In: InQuery, Flag: "name", Usage: "Search for users with names that match the query."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Search for users with numbers that match the query."}, - {Name: "extension", In: InQuery, Flag: "extension", Usage: "Search for users with extensions that match the query."}, - }, - Paging: &Paging{}, -} - -var CallingUserCallGetSharedLineAppearanceMembers2 = &Operation{ - ID: "CallingUserCallGetSharedLineAppearanceMembers2", Area: "calling", Group: "user-call", Command: "get-shared-line-appearance-members-2", - Summary: "Get Shared-Line Appearance Members New", - Description: "Get primary and secondary members assigned to a shared line on a Webex Calling Apps.\n\nLike most hardware devices, applications support assigning additional shared lines which can monitored and utilized by the application.\n\nThis API requires a full, user, or location administrator auth token with the `spark-admin:telephony_config_read` scope.", - Method: "GET", Path: "/telephony/config/people/{personId}/applications/members", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - }, -} - -var CallingUserCallUpdateSharedLineAppearanceMembers2 = &Operation{ - ID: "CallingUserCallUpdateSharedLineAppearanceMembers2", Area: "calling", Group: "user-call", Command: "update-shared-line-appearance-members-2", - Summary: "Put Shared-Line Appearance Members New", - Description: "Add or modify primary and secondary users assigned to shared-lines on a Webex Calling Apps.\n\nLike most hardware devices, applications support assigning additional shared lines which can monitored and utilized by the application.\n\nThis API requires a full, user, or location administrator auth token with the `spark-admin:telephony_config_write` scope.", - Method: "PUT", Path: "/telephony/config/people/{personId}/applications/members", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - }, - Body: &Body{}, -} - -var CallingUserCallGetCaptionsSettings = &Operation{ - ID: "CallingUserCallGetCaptionsSettings", Area: "calling", Group: "user-call", Command: "get-captions-settings", - Summary: "Get the user call captions settings", - Description: "Retrieve the user's call captions settings.\n\n**NOTE**: The call captions feature is not supported for Webex Calling Standard users or users assigned to locations in India.\n\nThe call caption feature allows the customer to enable and manage closed captions and transcript functionality (rolling caption panel) in Webex Calling, without requiring the user to escalate the call to a meeting.\n\nThis API requires a full, user, read-only, or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/{personId}/callCaptions", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Unique identifier for the organization."}, - }, -} - -var CallingUserCallUpdateCaptionsSettings = &Operation{ - ID: "CallingUserCallUpdateCaptionsSettings", Area: "calling", Group: "user-call", Command: "update-captions-settings", - Summary: "Update the user call captions settings", - Description: "Update the user's call captions settings.\n\n**NOTE**: The call captions feature is not supported for Webex Calling Standard users or users assigned to locations in India.\n\nThe call caption feature allows the customer to enable and manage closed captions and transcript functionality (rolling caption panel) in Webex Calling, without requiring the user to escalate the call to a meeting.\n\nThis API requires a full, user or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/{personId}/callCaptions", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Unique identifier for the organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "userClosedCaptionsEnabled", Flag: "user-closed-captions-enabled", Type: "bool"}, - {Name: "userTranscriptsEnabled", Flag: "user-transcripts-enabled", Type: "bool"}, - {Name: "useLocationSettingsEnabled", Flag: "use-location-settings-enabled", Type: "bool"}, - }}, -} - -var CallingUserCallGetPersonExecutiveFilteringSettings = &Operation{ - ID: "CallingUserCallGetPersonExecutiveFilteringSettings", Area: "calling", Group: "user-call", Command: "get-person-executive-filtering-settings", - Summary: "Get Person Executive Call Filtering Settings", - Description: "Retrieve the executive call filtering settings for the specified person.\n\nExecutive Call Filtering in Webex allows you to control which calls are allowed to reach the executive assistant based on custom criteria, such as specific phone numbers or call types. You can enable or disable call filtering and configure filter rules to manage incoming calls.\n\nThis API requires a full, user, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`", - Method: "GET", Path: "/telephony/config/people/{personId}/executive/callFiltering", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization ID for the user."}, - }, -} - -var CallingUserCallUpdatePersonExecutiveFilteringSettings = &Operation{ - ID: "CallingUserCallUpdatePersonExecutiveFilteringSettings", Area: "calling", Group: "user-call", Command: "update-person-executive-filtering-settings", - Summary: "Modify Person Executive Call Filtering Settings", - Description: "Update the executive call filtering settings for the specified person.\n\nExecutive Call Filtering in Webex allows you to control which calls are allowed to reach the executive assistant based on custom criteria, such as specific phone numbers or call types. You can enable or disable call filtering and configure filter rules to manage incoming calls.\n\nThis API requires a full, user, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/{personId}/executive/callFiltering", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization ID for the user."}, - }, - Body: &Body{}, -} - -var CallingUserCallGetPersonExecutiveFilteringSettings2 = &Operation{ - ID: "CallingUserCallGetPersonExecutiveFilteringSettings2", Area: "calling", Group: "user-call", Command: "get-person-executive-filtering-settings-2", - Summary: "Get Person Executive Call Filtering Criteria Settings", - Description: "Retrieve the executive call filtering criteria settings for the specified person.\n\nExecutive Call Filtering Criteria in Webex allows you to retrieve the detailed configuration for a specific filter rule. This includes schedule settings, phone number filters, and call routing preferences for executive call filtering.\n\nThis API requires a full, user, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/{personId}/executive/callFiltering/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Unique identifier for the person."}, - {Name: "id", In: InPath, Flag: "id", Usage: "The `id` parameter specifies the unique identifier for the executive call filtering criteria."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization ID for the user."}, - }, -} - -var CallingUserCallUpdatePersonExecutiveFilteringSettings2 = &Operation{ - ID: "CallingUserCallUpdatePersonExecutiveFilteringSettings2", Area: "calling", Group: "user-call", Command: "update-person-executive-filtering-settings-2", - Summary: "Modify Person Executive Call Filtering Criteria Settings", - Description: "Update the executive call filtering settings for the specified person.\n\nExecutive Call Filtering in Webex allows you to control which calls are allowed to reach the executive assistant based on custom criteria, such as specific phone numbers or call types. You can enable or disable call filtering and configure filter rules to manage incoming calls.\n\nThis API requires a full, user or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/{personId}/executive/callFiltering/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - {Name: "id", In: InPath, Flag: "id", Usage: "The `id` parameter specifies the unique identifier for the executive call filtering criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL2RHVnpkRjltYVd4MFpYST0`."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization ID for the user."}, - }, - Body: &Body{}, -} - -var CallingUserCallDeletePersonExecutiveFiltering = &Operation{ - ID: "CallingUserCallDeletePersonExecutiveFiltering", Area: "calling", Group: "user-call", Command: "delete-person-executive-filtering", - Summary: "Delete Person Executive Call Filtering Criteria", - Description: "Delete a specific executive call filtering criteria configuration for the specified person.\n\nExecutive Call Filtering Criteria in Webex allows you to manage detailed filter rules for incoming calls. This API removes a specific filter rule by its unique identifier.\n\nThis API requires a full, user or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/people/{personId}/executive/callFiltering/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - {Name: "id", In: InPath, Flag: "id", Usage: "The `id` parameter specifies the unique identifier for the executive call filtering criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL2RHVnpkRjltYVd4MFpYST0`."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization ID for the user."}, - }, -} - -var CallingUserCallCreatePersonExecutiveFiltering = &Operation{ - ID: "CallingUserCallCreatePersonExecutiveFiltering", Area: "calling", Group: "user-call", Command: "create-person-executive-filtering", - Summary: "Add Person Executive Call Filtering Criteria", - Description: "Create a new executive call filtering criteria configuration for the specified person.\n\nExecutive Call Filtering Criteria in Webex allows you to define detailed filter rules for incoming calls. This API creates a new filter rule with the specified configuration, including schedule, phone numbers, and call routing preferences.\n\nThis API requires a full, user or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/people/{personId}/executive/callFiltering/criteria", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization ID for the user."}, - }, - Body: &Body{}, -} - -var CallingUserCallGetPersonExecutiveAlertSettings = &Operation{ - ID: "CallingUserCallGetPersonExecutiveAlertSettings", Area: "calling", Group: "user-call", Command: "get-person-executive-alert-settings", - Summary: "Get Person Executive Alert Settings", - Description: "Get executive alert settings for the specified person.\n\nExecutive Alert settings in Webex allow you to control how calls are routed to executive assistants, including alerting mode, rollover options, and caller ID presentation. You can configure settings such as sequential or simultaneous alerting, and specify what happens when calls aren't answered.\n\nThis API requires a full, user, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/{personId}/executive/alert", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization ID for the person."}, - }, -} - -var CallingUserCallUpdatePersonExecutiveAlertSettings = &Operation{ - ID: "CallingUserCallUpdatePersonExecutiveAlertSettings", Area: "calling", Group: "user-call", Command: "update-person-executive-alert-settings", - Summary: "Modify Person Executive Alert Settings", - Description: "Update executive alert settings for the specified person.\n\nExecutive Alert settings in Webex allow you to control how calls are routed to executive assistants, including alerting mode, rollover options, and caller ID presentation. You can configure settings such as sequential or simultaneous alerting, and specify what happens when calls aren't answered.\n\nThis API requires a full, user, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/{personId}/executive/alert", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization ID for the person."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "alertingMode", Flag: "alerting-mode", Type: "string"}, - {Name: "nextAssistantNumberOfRings", Flag: "next-assistant-number-of-rings", Type: "int64"}, - {Name: "rolloverEnabled", Flag: "rollover-enabled", Type: "bool"}, - {Name: "rolloverAction", Flag: "rollover-action", Type: "string"}, - {Name: "rolloverForwardToPhoneNumber", Flag: "rollover-forward-to-phone-number", Type: "string"}, - {Name: "rolloverWaitTimeInSecs", Flag: "rollover-wait-time-in-secs", Type: "int64"}, - {Name: "clidNameMode", Flag: "clid-name-mode", Type: "string"}, - {Name: "customCLIDName", Flag: "custom-clidname", Type: "string"}, - {Name: "customCLIDNameInUnicode", Flag: "custom-clidname-in-unicode", Type: "string"}, - {Name: "clidPhoneNumberMode", Flag: "clid-phone-number-mode", Type: "string"}, - {Name: "customCLIDPhoneNumber", Flag: "custom-clidphone-number", Type: "string"}, - }}, -} - -var CallingUserCallGetPersonExecutiveAssignedAssistants = &Operation{ - ID: "CallingUserCallGetPersonExecutiveAssignedAssistants", Area: "calling", Group: "user-call", Command: "get-person-executive-assigned-assistants", - Summary: "Get Person Executive Assigned Assistants", - Description: "Get list of assigned executive assistants for the specified person.\n\nAs an executive, you can add assistants to your executive pool to manage calls for you. You can set when and which types of calls they can handle. Assistants can opt in when needed or opt out when not required.\n\nThis API requires a full, user, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/{personId}/executive/assignedAssistants", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization ID for the person."}, - }, -} - -var CallingUserCallUpdatePersonExecutiveAssignedAssistants = &Operation{ - ID: "CallingUserCallUpdatePersonExecutiveAssignedAssistants", Area: "calling", Group: "user-call", Command: "update-person-executive-assigned-assistants", - Summary: "Modify Person Executive Assigned Assistants", - Description: "Update assigned executive assistants for the specified person.\n\nAs an executive, you can add assistants to your executive pool to manage calls for you. You can set when and which types of calls they can handle. Assistants can opt in when needed or opt out when not required.\n\nThis API requires a full, user, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/{personId}/executive/assignedAssistants", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization ID for the person."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "assistantIds", Flag: "assistant-ids", Type: "[]string"}, - }}, -} - -var CallingUserCallGetPersonExecutiveAvailableAssistants = &Operation{ - ID: "CallingUserCallGetPersonExecutiveAvailableAssistants", Area: "calling", Group: "user-call", Command: "get-person-executive-available-assistants", - Summary: "Get Person Executive Available Assistants", - Description: "Retrieves a list of people available for assignment as executive assistants to the specified person.\n\nAs an executive, you can add assistants to your executive pool to manage calls for you. You can set when and which types of calls they can handle. Assistants can opt in when needed or opt out when not required.\n\nThis API requires a full, user, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/{personId}/executive/availableAssistants", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization ID for the person."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of objects returned to this maximum count."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching objects."}, - {Name: "name", In: InQuery, Flag: "name", Usage: "Only return people with the matching name (person's first and last name combination)."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Only return people with the matching phone number or extension."}, - }, - Paging: &Paging{}, -} - -var CallingUserCallGetPersonExecutiveAssistantSettings = &Operation{ - ID: "CallingUserCallGetPersonExecutiveAssistantSettings", Area: "calling", Group: "user-call", Command: "get-person-executive-assistant-settings", - Summary: "Get Person Executive Assistant Settings", - Description: "Get executive assistant settings for the specified person when person is configured as executive assistant.\n\nExecutive assistants can make, answer, intercept, and route calls appropriately on behalf of their executive.\nAssistants can also set the call forwarding destination, and join or leave an executive’s pool.\n\nThis API requires a full, user, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/{personId}/executive/assistant", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization ID for the person."}, - }, -} - -var CallingUserCallUpdatePersonExecutiveAssistantSettings = &Operation{ - ID: "CallingUserCallUpdatePersonExecutiveAssistantSettings", Area: "calling", Group: "user-call", Command: "update-person-executive-assistant-settings", - Summary: "Modify Person Executive Assistant Settings", - Description: "Update executive assistant settings for the specified person when person is configured as executive assistant.\n\nExecutive assistants can make, answer, intercept, and route calls appropriately on behalf of their executive.\nAssistants can also set the call forwarding destination, and join or leave an executive’s pool.\n\nThis API requires a full, user, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/{personId}/executive/assistant", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization ID for the person."}, - }, - Body: &Body{}, -} - -var CallingUserCallGetPersonExecutiveScreeningSettings = &Operation{ - ID: "CallingUserCallGetPersonExecutiveScreeningSettings", Area: "calling", Group: "user-call", Command: "get-person-executive-screening-settings", - Summary: "Get Person Executive Screening Settings", - Description: "Get executive screening settings for the specified person.\n\nExecutive Screening in Webex allows you to manage how incoming calls are screened and alerted based on your preferences. You can enable or disable executive screening and configure alert types and locations for notifications.\n\nThis API requires a full, user, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/{personId}/executive/screening", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization ID for the person."}, - }, -} - -var CallingUserCallUpdatePersonExecutiveScreeningSettings = &Operation{ - ID: "CallingUserCallUpdatePersonExecutiveScreeningSettings", Area: "calling", Group: "user-call", Command: "update-person-executive-screening-settings", - Summary: "Modify Person Executive Screening Settings", - Description: "Update executive screening settings for the specified person.\n\nExecutive Screening in Webex allows you to manage how incoming calls are screened and alerted based on your preferences. You can enable or disable executive screening and configure alert types and locations for notifications.\n\nThis API requires a full, user, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/{personId}/executive/screening", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization ID for the person."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "enabled", Flag: "enabled", Type: "bool"}, - {Name: "alertType", Flag: "alert-type", Type: "string"}, - {Name: "alertAnywhereLocationEnabled", Flag: "alert-anywhere-location-enabled", Type: "bool"}, - {Name: "alertMobilityLocationEnabled", Flag: "alert-mobility-location-enabled", Type: "bool"}, - {Name: "alertSharedCallAppearanceLocationEnabled", Flag: "alert-shared-call-appearance-location-enabled", Type: "bool"}, - }}, -} - -var CallingUserCallGetCountSharedLineAppearanceMembers = &Operation{ - ID: "CallingUserCallGetCountSharedLineAppearanceMembers", Area: "calling", Group: "user-call", Command: "get-count-shared-line-appearance-members", - Summary: "Get Count of Shared-Line Appearance Members", - Description: "Get the count of members available for shared-line assignment to Webex Calling Apps.\n\nShared-line appearance allows multiple devices or applications to share a single line for call handling.\n\nThis API requires a full, user, or location administrator auth token with the `spark-admin:telephony_config_read` scope.", - Method: "GET", Path: "/telephony/config/people/{personId}/applications/availableMembers/count", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization ID for the person."}, - {Name: "locationId", In: InQuery, Flag: "location-id", Usage: "Location ID for the person."}, - {Name: "memberName", In: InQuery, Flag: "member-name", Usage: "Search for people with names that match the query."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Search for people with numbers that match the query."}, - {Name: "extension", In: InQuery, Flag: "extension", Usage: "Search for people with extensions that match the query."}, - }, -} - -var CallingUserCallGetTimezoneAnnouncementLanguageSettingsPerson = &Operation{ - ID: "CallingUserCallGetTimezoneAnnouncementLanguageSettingsPerson", Area: "calling", Group: "user-call", Command: "get-timezone-announcement-language-settings-person", - Summary: "Get Timezone and Announcement Language Settings of a Person", - Description: "Retrieve a person's timezone and announcement language settings.\n\nWebex Calling supports configuring timezone and announcement language preferences, allowing personalized call experience based on their location and language preferences.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/{personId}", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Retrieve timezone and announcement language settings of this person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization ID. If not specified, uses the organization from the OAuth token."}, - }, -} - -var CallingUserCallUpdateTimezoneAnnouncementLanguageSettingsPerson = &Operation{ - ID: "CallingUserCallUpdateTimezoneAnnouncementLanguageSettingsPerson", Area: "calling", Group: "user-call", Command: "update-timezone-announcement-language-settings-person", - Summary: "Update Timezone and Announcement Language Settings of a Person", - Description: "Modify a person's timezone and announcement language settings.\n\nWebex Calling supports configuring timezone and announcement language preferences, allowing personalized call experience based on their location and language preferences.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/{personId}", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Modify timezone and announcement language settings of this person."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization ID. If not specified, uses the organization from the OAuth token."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "announcementLanguage", Flag: "announcement-language", Type: "string"}, - {Name: "timeZone", Flag: "time-zone", Type: "string"}, - }}, -} - -var CallingUserCallGetCountryCallingConfiguration = &Operation{ - ID: "CallingUserCallGetCountryCallingConfiguration", Area: "calling", Group: "user-call", Command: "get-country-calling-configuration", - Summary: "Get Country Calling Configuration", - Description: "Retrieve country-specific configuration details including state requirements, zip code requirements, available states, and supported time zones.\n\nThis information helps administrators configure user settings with valid timezone and location data for a specific country.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/countries/{countryCode}", Host: HostWebex, - Params: []Param{ - {Name: "countryCode", In: InPath, Flag: "country-code", Usage: "The ISO country code to retrieve configuration for."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization ID. If not specified, uses the organization from the OAuth token."}, - }, -} - -var CallingVirtualLineCallList = &Operation{ - ID: "CallingVirtualLineCallList", Area: "calling", Group: "virtual-line-call", Command: "list", - Summary: "Read the List of Virtual Lines", - Description: "List all Virtual Lines for the organization.\n\nVirtual line is a capability in Webex Calling that allows administrators to configure multiple lines to Webex Calling users.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/virtualLines", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List virtual lines for this organization."}, - {Name: "locationId", In: InQuery, Flag: "location-id", Usage: "Return the list of virtual lines matching these location ids. Example for multiple values - `?locationId=locId1&locationId=locId2`."}, - {Name: "locationId", In: InQuery, Flag: "location-id", Usage: "Return the list of virtual lines matching these location ids. Example for multiple values - `?locationId=locId1&locationId=locId2`."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of objects returned to this maximum count."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching objects."}, - {Name: "id", In: InQuery, Flag: "id", Usage: "Return the list of virtual lines matching these virtualLineIds. Example for multiple values - `?id=id1&id=id2`."}, - {Name: "id", In: InQuery, Flag: "id", Usage: "Return the list of virtual lines matching these virtualLineIds. Example for multiple values - `?id=id1&id=id2`."}, - {Name: "ownerName", In: InQuery, Flag: "owner-name", Usage: "Return the list of virtual lines matching these owner names. Example for multiple values - `?ownerName=name1&ownerName=name2`."}, - {Name: "ownerName", In: InQuery, Flag: "owner-name", Usage: "Return the list of virtual lines matching these owner names. Example for multiple values - `?ownerName=name1&ownerName=name2`."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Return the list of virtual lines matching these phone numbers. Example for multiple values - `?phoneNumber=number1&phoneNumber=number2`."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Return the list of virtual lines matching these phone numbers. Example for multiple values - `?phoneNumber=number1&phoneNumber=number2`."}, - {Name: "locationName", In: InQuery, Flag: "location-name", Usage: "Return the list of virtual lines matching the location names. Example for multiple values - `?locationName=loc1&locationName=loc2`."}, - {Name: "locationName", In: InQuery, Flag: "location-name", Usage: "Return the list of virtual lines matching the location names. Example for multiple values - `?locationName=loc1&locationName=loc2`."}, - {Name: "order", In: InQuery, Flag: "order", Usage: "Return the list of virtual lines based on the order. Default sort will be in an Ascending order. Maximum 3 orders allowed at a time. Example for multiple values - `?order=order1&order=order2`."}, - {Name: "order", In: InQuery, Flag: "order", Usage: "Return the list of virtual lines based on the order. Default sort will be in an Ascending order. Maximum 3 orders allowed at a time. Example for multiple values - `?order=order1&order=order2`."}, - {Name: "hasDeviceAssigned", In: InQuery, Flag: "has-device-assigned", Usage: "If `true`, includes only virtual lines with devices assigned. When not explicitly specified, the default includes both virtual lines with devices assigned and not assigned."}, - {Name: "hasExtensionAssigned", In: InQuery, Flag: "has-extension-assigned", Usage: "If `true`, includes only virtual lines with an extension assigned. When not explicitly specified, the default includes both virtual lines with extension assigned and not assigned."}, - {Name: "hasDnAssigned", In: InQuery, Flag: "has-dn-assigned", Usage: "If `true`, includes only virtual lines with an assigned directory number, also known as a Dn. When not explicitly specified, the default includes both virtual lines with a Dn assigned and not assigned."}, - }, - Paging: &Paging{}, -} - -var CallingVirtualLineCallCreate = &Operation{ - ID: "CallingVirtualLineCallCreate", Area: "calling", Group: "virtual-line-call", Command: "create", - Summary: "Create a Virtual Line", - Description: "Create new Virtual Line for the given location.\n\nVirtual line is a capability in Webex Calling that allows administrators to configure multiple lines to Webex Calling users.\n\nCreating a virtual line requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/virtualLines", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Create the virtual line for this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "firstName", Flag: "first-name", Type: "string"}, - {Name: "lastName", Flag: "last-name", Type: "string"}, - {Name: "locationId", Flag: "location-id", Type: "string"}, - {Name: "displayName", Flag: "display-name", Type: "string"}, - {Name: "phoneNumber", Flag: "phone-number", Type: "string"}, - {Name: "extension", Flag: "extension", Type: "string"}, - {Name: "callerIdLastName", Flag: "caller-id-last-name", Type: "string"}, - {Name: "callerIdFirstName", Flag: "caller-id-first-name", Type: "string"}, - {Name: "callerIdNumber", Flag: "caller-id-number", Type: "string"}, - }}, -} - -var CallingVirtualLineCallGetRecording = &Operation{ - ID: "CallingVirtualLineCallGetRecording", Area: "calling", Group: "virtual-line-call", Command: "get-recording", - Summary: "Read Call Recording Settings for a Virtual Line", - Description: "Retrieve Virtual Line's Call Recording settings.\n\nThe Call Recording feature provides a hosted mechanism to record the calls placed and received on the Carrier platform for replay and archival. This feature is helpful for quality assurance, security, training, and more.\n\nThis API requires a full or user administrator auth token with the `spark-admin:telephony_config_read` scope.", - Method: "GET", Path: "/telephony/config/virtualLines/{virtualLineId}/callRecording", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Unique identifier for the virtual line."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, -} - -var CallingVirtualLineCallUpdateRecording = &Operation{ - ID: "CallingVirtualLineCallUpdateRecording", Area: "calling", Group: "virtual-line-call", Command: "update-recording", - Summary: "Configure Call Recording Settings for a Virtual Line", - Description: "Configure virtual line's Call Recording settings.\n\nThe Call Recording feature provides a hosted mechanism to record the calls placed and received on the Carrier platform for replay and archival. This feature is helpful for quality assurance, security, training, and more.\n\nThis API requires a full or user administrator auth token with the `spark-admin:telephony_config_write` scope.", - Method: "PUT", Path: "/telephony/config/virtualLines/{virtualLineId}/callRecording", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Unique identifier for the virtual line."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the virtual profile resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, - Body: &Body{}, -} - -var CallingVirtualLineCallDelete = &Operation{ - ID: "CallingVirtualLineCallDelete", Area: "calling", Group: "virtual-line-call", Command: "delete", - Summary: "Delete a Virtual Line", - Description: "Delete the designated Virtual Line.\n\nVirtual line is a capability in Webex Calling that allows administrators to configure multiple lines to Webex Calling users.\n\nDeleting a virtual line requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write` and `identity:contacts_rw`.", - Method: "DELETE", Path: "/telephony/config/virtualLines/{virtualLineId}", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Delete the virtual line with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Delete the virtual line from this organization."}, - }, -} - -var CallingVirtualLineCallGet = &Operation{ - ID: "CallingVirtualLineCallGet", Area: "calling", Group: "virtual-line-call", Command: "get", - Summary: "Get Details for a Virtual Line", - Description: "Retrieve Virtual Line details.\n\nVirtual line is a capability in Webex Calling that allows administrators to configure multiple lines to Webex Calling users.\n\nRetrieving virtual line details requires a full or user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/virtualLines/{virtualLineId}", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Retrieve settings for a virtual line with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve virtual line settings from this organization."}, - }, -} - -var CallingVirtualLineCallUpdate = &Operation{ - ID: "CallingVirtualLineCallUpdate", Area: "calling", Group: "virtual-line-call", Command: "update", - Summary: "Update a Virtual Line", - Description: "Update the designated Virtual Line.\n\nVirtual line is a capability in Webex Calling that allows administrators to configure multiple lines to Webex Calling users.\n\nUpdating a virtual line requires a full or user or location administrator auth token with a scope of `spark-admin:telephony_config_write` and `identity:contacts_rw`.", - Method: "PUT", Path: "/telephony/config/virtualLines/{virtualLineId}", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Update settings for a virtual line with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Update virtual line settings from this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "firstName", Flag: "first-name", Type: "string"}, - {Name: "lastName", Flag: "last-name", Type: "string"}, - {Name: "displayName", Flag: "display-name", Type: "string"}, - {Name: "phoneNumber", Flag: "phone-number", Type: "string"}, - {Name: "extension", Flag: "extension", Type: "string"}, - {Name: "announcementLanguage", Flag: "announcement-language", Type: "string"}, - {Name: "callerIdLastName", Flag: "caller-id-last-name", Type: "string"}, - {Name: "callerIdFirstName", Flag: "caller-id-first-name", Type: "string"}, - {Name: "callerIdNumber", Flag: "caller-id-number", Type: "string"}, - {Name: "timeZone", Flag: "time-zone", Type: "string"}, - }}, -} - -var CallingVirtualLineCallGetPhoneNumberAssigned = &Operation{ - ID: "CallingVirtualLineCallGetPhoneNumberAssigned", Area: "calling", Group: "virtual-line-call", Command: "get-phone-number-assigned", - Summary: "Get Phone Number assigned for a Virtual Line", - Description: "Get details on the assigned phone number and extension for the virtual line.\n\nRetrieving virtual line phone number details requires a full or user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/virtualLines/{virtualLineId}/number", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Retrieve settings for a virtual line with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve virtual line settings from this organization."}, - }, -} - -var CallingVirtualLineCallUpdateDirectorySearch = &Operation{ - ID: "CallingVirtualLineCallUpdateDirectorySearch", Area: "calling", Group: "virtual-line-call", Command: "update-directory-search", - Summary: "Update Directory search for a Virtual Line", - Description: "Update the directory search for a designated Virtual Line.\n\nVirtual line is a capability in Webex Calling that allows administrators to configure multiple lines to Webex Calling users.\n\nUpdating Directory search for a virtual line requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write` and `identity:contacts_rw`.", - Method: "PUT", Path: "/telephony/config/virtualLines/{virtualLineId}/directorySearch", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Update settings for a virtual line with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Update virtual line settings from this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "enabled", Flag: "enabled", Type: "bool"}, - }}, -} - -var CallingVirtualLineCallListDevicesAssigned = &Operation{ - ID: "CallingVirtualLineCallListDevicesAssigned", Area: "calling", Group: "virtual-line-call", Command: "list-devices-assigned", - Summary: "Get List of Devices assigned for a Virtual Line", - Description: "Retrieve Device details assigned for a virtual line.\n\nVirtual line is a capability in Webex Calling that allows administrators to configure multiple lines to Webex Calling users.\n\nRetrieving the assigned device detials for a virtual line requires a full or user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/virtualLines/{virtualLineId}/devices", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Retrieve settings for a virtual line with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve virtual line settings from this organization."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var CallingVirtualLineCallListNetworksHandsets = &Operation{ - ID: "CallingVirtualLineCallListNetworksHandsets", Area: "calling", Group: "virtual-line-call", Command: "list-networks-handsets", - Summary: "Get List of DECT Networks Handsets for a Virtual Line", - Description: "
Not supported for Webex for Government (FedRAMP)
\n\nRetrieve DECT Network details assigned for a virtual line.\n\nVirtual line is a capability in Webex Calling that allows administrators to configure multiple lines to Webex Calling users.\n\nRetrieving the assigned device detials for a virtual line requires a full or user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/virtualLines/{virtualLineId}/dectNetworks", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Retrieve settings for a virtual line with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve virtual line settings from this organization."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var CallingVirtualLineCallGetCallerId = &Operation{ - ID: "CallingVirtualLineCallGetCallerId", Area: "calling", Group: "virtual-line-call", Command: "get-caller-id", - Summary: "Read Caller ID Settings for a Virtual Line", - Description: "Retrieve a virtual line's Caller ID settings.\n\nCaller ID settings control how a virtual line's information is displayed when making outgoing calls.\n\nRetrieving the caller ID settings for a virtual line requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/virtualLines/{virtualLineId}/callerId", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Retrieve settings for a virtual line with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter, as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingVirtualLineCallUpdateCallerId = &Operation{ - ID: "CallingVirtualLineCallUpdateCallerId", Area: "calling", Group: "virtual-line-call", Command: "update-caller-id", - Summary: "Configure Caller ID Settings for a Virtual Line", - Description: "Configure a virtual line's Caller ID settings.\n\nCaller ID settings control how a virtual line's information is displayed when making outgoing calls.\n\nUpdating the caller ID settings for a virtual line requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/virtualLines/{virtualLineId}/callerId", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Update settings for a virtual line with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter, as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{}, -} - -var CallingVirtualLineCallGetWaitingSettings = &Operation{ - ID: "CallingVirtualLineCallGetWaitingSettings", Area: "calling", Group: "virtual-line-call", Command: "get-waiting-settings", - Summary: "Read Call Waiting Settings for a Virtual Line", - Description: "Retrieve a virtual line's Call Waiting settings.\n\nWith this feature, a virtual line can place an active call on hold and answer an incoming call. When enabled, while you are on an active call, a tone alerts you of an incoming call and you can choose to answer or ignore the call.\n\nRetrieving the call waiting settings for a virtual line requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/virtualLines/{virtualLineId}/callWaiting", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Retrieve settings for a virtual line with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, -} - -var CallingVirtualLineCallUpdateWaitingSettings = &Operation{ - ID: "CallingVirtualLineCallUpdateWaitingSettings", Area: "calling", Group: "virtual-line-call", Command: "update-waiting-settings", - Summary: "Configure Call Waiting Settings for a Virtual Line", - Description: "Configure a virtual line's Call Waiting settings.\n\nWith this feature, a virtual line can place an active call on hold and answer an incoming call. When enabled, while you are on an active call, a tone alerts you of an incoming call and you can choose to answer or ignore the call.\n\nUpdating the call waiting settings for a virtual line requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/virtualLines/{virtualLineId}/callWaiting", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Update settings for a virtual line with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "enabled", Flag: "enabled", Type: "bool"}, - }}, -} - -var CallingVirtualLineCallGetForward = &Operation{ - ID: "CallingVirtualLineCallGetForward", Area: "calling", Group: "virtual-line-call", Command: "get-forward", - Summary: "Read Call Forwarding Settings for a Virtual Line", - Description: "Retrieve a virtual line's Call Forwarding settings.\n\nThree types of call forwarding are supported:\n\n+ Always - forwards all incoming calls to the destination you choose.\n\n+ When busy - forwards all incoming calls to the destination you chose while the phone is in use or the virtual line is busy.\n\n+ When no answer - forwarding only occurs when you are away or not answering your phone.\n\nIn addition, the Business Continuity feature will send calls to a destination of your choice if your phone is not connected to the network for any reason, such as a power outage, failed Internet connection, or wiring problem.\n\nRetrieving the call forwarding settings for a virtual line requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/virtualLines/{virtualLineId}/callForwarding", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Retrieve settings for a virtual line with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, -} - -var CallingVirtualLineCallUpdateForward = &Operation{ - ID: "CallingVirtualLineCallUpdateForward", Area: "calling", Group: "virtual-line-call", Command: "update-forward", - Summary: "Configure Call Forwarding Settings for a Virtual Line", - Description: "Configure a virtual line's Call Forwarding settings.\n\nThree types of call forwarding are supported:\n\n+ Always - forwards all incoming calls to the destination you choose.\n\n+ When busy - forwards all incoming calls to the destination you chose while the phone is in use or the virtual line is busy.\n\n+ When no answer - forwarding only occurs when you are away or not answering your phone.\n\nIn addition, the Business Continuity feature will send calls to a destination of your choice if your phone is not connected to the network for any reason, such as a power outage, failed Internet connection, or wiring problem.\n\nUpdating the call forwarding settings for a virtual line requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/virtualLines/{virtualLineId}/callForwarding", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Update settings for a virtual line with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, - Body: &Body{}, -} - -var CallingVirtualLineCallGetIncomingPermissionSettings = &Operation{ - ID: "CallingVirtualLineCallGetIncomingPermissionSettings", Area: "calling", Group: "virtual-line-call", Command: "get-incoming-permission-settings", - Summary: "Read Incoming Permission Settings for a Virtual Line", - Description: "Retrieve a virtual line's Incoming Permission settings.\n\nYou can change the incoming calling permissions for a virtual line if you want them to be different from your organization's default.\n\nRetrieving the incoming permission settings for a virtual line requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/virtualLines/{virtualLineId}/incomingPermission", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Retrieve settings for a virtual line with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, -} - -var CallingVirtualLineCallUpdateIncomingPermissionSettings = &Operation{ - ID: "CallingVirtualLineCallUpdateIncomingPermissionSettings", Area: "calling", Group: "virtual-line-call", Command: "update-incoming-permission-settings", - Summary: "Configure Incoming Permission Settings for a Virtual Line", - Description: "Configure a virtual line's Incoming Permission settings.\n\nYou can change the incoming calling permissions for a virtual line if you want them to be different from your organization's default.\n\nUpdating the incoming permission settings for a virtual line requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/virtualLines/{virtualLineId}/incomingPermission", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Update settings for a virtual line with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "useCustomEnabled", Flag: "use-custom-enabled", Type: "bool"}, - {Name: "externalTransfer", Flag: "external-transfer", Type: "string"}, - {Name: "internalCallsEnabled", Flag: "internal-calls-enabled", Type: "bool"}, - {Name: "collectCallsEnabled", Flag: "collect-calls-enabled", Type: "bool"}, - }}, -} - -var CallingVirtualLineCallGetOutgoingPermissionsSettings = &Operation{ - ID: "CallingVirtualLineCallGetOutgoingPermissionsSettings", Area: "calling", Group: "virtual-line-call", Command: "get-outgoing-permissions-settings", - Summary: "Retrieve a virtual line's Outgoing Calling Permissions Settings", - Description: "Retrieve a virtual line's Outgoing Calling Permissions settings.\n\nOutgoing calling permissions regulate behavior for calls placed to various destinations and default to the local level settings. You can change the outgoing calling permissions for a virtual line if you want them to be different from your organization's default.\n\nRetrieving the outgoing permission settings for a virtual line requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/virtualLines/{virtualLineId}/outgoingPermission", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Retrieve settings for a virtual line with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, -} - -var CallingVirtualLineCallUpdateOutgoingPermissionsSettings = &Operation{ - ID: "CallingVirtualLineCallUpdateOutgoingPermissionsSettings", Area: "calling", Group: "virtual-line-call", Command: "update-outgoing-permissions-settings", - Summary: "Modify a virtual line's Outgoing Calling Permissions Settings", - Description: "Modify a virtual line's Outgoing Calling Permissions settings.\n\nOutgoing calling permissions regulate behavior for calls placed to various destinations and default to the local level settings. You can change the outgoing calling permissions for a virtual line if you want them to be different from your organization's default.\n\nUpdating the outgoing permission settings for a virtual line requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/virtualLines/{virtualLineId}/outgoingPermission", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Update settings for a virtual line with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, - Body: &Body{}, -} - -var CallingVirtualLineCallGetAccessCodes = &Operation{ - ID: "CallingVirtualLineCallGetAccessCodes", Area: "calling", Group: "virtual-line-call", Command: "get-access-codes", - Summary: "Retrieve Access Codes for a Virtual Line", - Description: "Retrieve the virtual line's access codes.\n\nAccess codes are used to bypass permissions.\n\nThis API requires a full, user or read-only administrator auth token with a scope of spark-admin:telephony_config_read", - Method: "GET", Path: "/telephony/config/virtualLines/{virtualLineId}/outgoingPermission/accessCodes", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Unique identifier for the virtual line."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingVirtualLineCallUpdateAccessCodes = &Operation{ - ID: "CallingVirtualLineCallUpdateAccessCodes", Area: "calling", Group: "virtual-line-call", Command: "update-access-codes", - Summary: "Modify Access Codes for a Virtual Line", - Description: "Modify a virtual line's access codes.\n\nAccess codes are used to bypass permissions.\n\nThis API requires a full or user administrator auth token with the `spark-admin:telephony_config_write` scope.", - Method: "PUT", Path: "/telephony/config/virtualLines/{virtualLineId}/outgoingPermission/accessCodes", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Unique identifier for the virtual line."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "deleteCodes", Flag: "delete-codes", Type: "[]string"}, - }}, -} - -var CallingVirtualLineCallCreateAccessCodes = &Operation{ - ID: "CallingVirtualLineCallCreateAccessCodes", Area: "calling", Group: "virtual-line-call", Command: "create-access-codes", - Summary: "Create Access Codes for a Virtual Line", - Description: "Create a new access codes for the virtual line.\n\nAccess codes are used to bypass permissions.\n\nThis API requires a full or user administrator auth token with the `spark-admin:telephony_config_write` scope.", - Method: "POST", Path: "/telephony/config/virtualLines/{virtualLineId}/outgoingPermission/accessCodes", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Unique identifier for the virtual line."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "code", Flag: "code", Type: "string"}, - {Name: "description", Flag: "description", Type: "string"}, - }}, -} - -var CallingVirtualLineCallDeleteAccessCodes = &Operation{ - ID: "CallingVirtualLineCallDeleteAccessCodes", Area: "calling", Group: "virtual-line-call", Command: "delete-access-codes", - Summary: "Delete Access Codes for a Virtual Line", - Description: "Deletes all access codes for the virtual line.\n\nAccess codes are used to bypass permissions.\n\nThis API requires a full or user administrator auth token with the `spark-admin:telephony_config_write` scope.", - Method: "DELETE", Path: "/telephony/config/virtualLines/{virtualLineId}/outgoingPermission/accessCodes", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Unique identifier for the virtual line."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingVirtualLineCallGetTransferNumbers = &Operation{ - ID: "CallingVirtualLineCallGetTransferNumbers", Area: "calling", Group: "virtual-line-call", Command: "get-transfer-numbers", - Summary: "Retrieve Transfer Numbers for a Virtual Line", - Description: "Retrieve the virtual line's transfer numbers.\n\nWhen calling a specific call type, this virtual line will be automatically transferred to another number. The virtual line assigned to the Auto Transfer Number can then approve the call and send it through or reject the call type. You can add up to 3 numbers.\n\nThis API requires a full, user or read-only administrator auth token with a scope of spark-admin:telephony_config_read", - Method: "GET", Path: "/telephony/config/virtualLines/{virtualLineId}/outgoingPermission/autoTransferNumbers", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Unique identifier for the virtual line."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingVirtualLineCallUpdateTransferNumbers = &Operation{ - ID: "CallingVirtualLineCallUpdateTransferNumbers", Area: "calling", Group: "virtual-line-call", Command: "update-transfer-numbers", - Summary: "Modify Transfer Numbers for a Virtual Line", - Description: "Modify a virtual line's transfer numbers.\n\nWhen calling a specific call type, this virtual line will be automatically transferred to another number. The virtual line assigned the Auto Transfer Number can then approve the call and send it through or reject the call type. You can add up to 3 numbers.\n\nThis API requires a full or user administrator auth token with the `spark-admin:telephony_config_write` scope.", - Method: "PUT", Path: "/telephony/config/virtualLines/{virtualLineId}/outgoingPermission/autoTransferNumbers", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Unique identifier for the virtual line."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "useCustomTransferNumbers", Flag: "use-custom-transfer-numbers", Type: "bool"}, - {Name: "autoTransferNumber1", Flag: "auto-transfer-number1", Type: "string"}, - {Name: "autoTransferNumber2", Flag: "auto-transfer-number2", Type: "string"}, - {Name: "autoTransferNumber3", Flag: "auto-transfer-number3", Type: "string"}, - }}, -} - -var CallingVirtualLineCallGetDigitPatternsProfile = &Operation{ - ID: "CallingVirtualLineCallGetDigitPatternsProfile", Area: "calling", Group: "virtual-line-call", Command: "get-digit-patterns-profile", - Summary: "Retrieve Digit Patterns for a Virtual Profile", - Description: "Get list of digit patterns for the virtual profile.\n\nDigit patterns are used to bypass permissions.\n\nRetrieving this list requires a full, user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/virtualLines/{virtualLineId}/outgoingPermission/digitPatterns", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Unique identifier for the virtual line."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, -} - -var CallingVirtualLineCallCreateDigitPatternProfile = &Operation{ - ID: "CallingVirtualLineCallCreateDigitPatternProfile", Area: "calling", Group: "virtual-line-call", Command: "create-digit-pattern-profile", - Summary: "Create Digit Pattern for a Virtual Profile", - Description: "Create a new digit pattern for a virtual profile.\n\nDigit patterns are used to bypass permissions.\n\nCreating the digit pattern requires a full or user or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/virtualLines/{virtualLineId}/outgoingPermission/digitPatterns", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Unique identifier for the virtual line."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "name", Flag: "name", Type: "string"}, - {Name: "pattern", Flag: "pattern", Type: "string"}, - {Name: "action", Flag: "action", Type: "string"}, - {Name: "transferEnabled", Flag: "transfer-enabled", Type: "bool"}, - }}, -} - -var CallingVirtualLineCallUpdateDigitPatternControlProfile = &Operation{ - ID: "CallingVirtualLineCallUpdateDigitPatternControlProfile", Area: "calling", Group: "virtual-line-call", Command: "update-digit-pattern-control-profile", - Summary: "Modify the Digit Pattern Category Control Settings for a Virtual Profile", - Description: "Modifies whether this virtual profile uses the specified digit patterns when placing outbound calls or not.\n\nUpdating the digit pattern category control settings requires a full or user or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/virtualLines/{virtualLineId}/outgoingPermission/digitPatterns", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Unique identifier for the virtual line."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "useCustomDigitPatterns", Flag: "use-custom-digit-patterns", Type: "bool"}, - }}, -} - -var CallingVirtualLineCallDeleteAllDigitPatternsProfile = &Operation{ - ID: "CallingVirtualLineCallDeleteAllDigitPatternsProfile", Area: "calling", Group: "virtual-line-call", Command: "delete-all-digit-patterns-profile", - Summary: "Delete all Digit Patterns for a Virtual Profile", - Description: "Delete all digit patterns for a virtual profile.\n\nDigit patterns are used to bypass permissions.\n\nDeleting the digit patterns requires a full or user or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/virtualLines/{virtualLineId}/outgoingPermission/digitPatterns", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Unique identifier for the virtual line."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, -} - -var CallingVirtualLineCallGetSpecifiedDigitPatternProfile = &Operation{ - ID: "CallingVirtualLineCallGetSpecifiedDigitPatternProfile", Area: "calling", Group: "virtual-line-call", Command: "get-specified-digit-pattern-profile", - Summary: "Retrieve Specified Digit Pattern Details for a Virtual Profile", - Description: "Get the specified digit pattern for the virtual profile​.\n\nDigit patterns are used to bypass permissions.\n\nRetrieving the digit pattern details requires a full, user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/virtualLines/{virtualLineId}/outgoingPermission/digitPatterns/{digitPatternId}", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Unique identifier for the virtual line."}, - {Name: "digitPatternId", In: InPath, Flag: "digit-pattern-id", Usage: "Unique identifier for the digit pattern."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, -} - -var CallingVirtualLineCallUpdateDigitPatternProfile = &Operation{ - ID: "CallingVirtualLineCallUpdateDigitPatternProfile", Area: "calling", Group: "virtual-line-call", Command: "update-digit-pattern-profile", - Summary: "Modify a Digit Pattern for a Virtual Profile", - Description: "Modify a digit patterns for a virtual profile.\n\nDigit patterns are used to bypass permissions.\n\nUpdating the digit pattern requires a full or user or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/virtualLines/{virtualLineId}/outgoingPermission/digitPatterns/{digitPatternId}", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Unique identifier for the virtual line."}, - {Name: "digitPatternId", In: InPath, Flag: "digit-pattern-id", Usage: "Unique identifier for the digit pattern."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "name", Flag: "name", Type: "string"}, - {Name: "pattern", Flag: "pattern", Type: "string"}, - {Name: "action", Flag: "action", Type: "string"}, - {Name: "transferEnabled", Flag: "transfer-enabled", Type: "bool"}, - }}, -} - -var CallingVirtualLineCallDeleteDigitPatternProfile = &Operation{ - ID: "CallingVirtualLineCallDeleteDigitPatternProfile", Area: "calling", Group: "virtual-line-call", Command: "delete-digit-pattern-profile", - Summary: "Delete a Digit Pattern for a Virtual Profile", - Description: "Delete a digit pattern for a virtual profile.\n\nDigit patterns are used to bypass permissions.\n\nDeleting the digit pattern requires a full or user or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/virtualLines/{virtualLineId}/outgoingPermission/digitPatterns/{digitPatternId}", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Unique identifier for the virtual line."}, - {Name: "digitPatternId", In: InPath, Flag: "digit-pattern-id", Usage: "Unique identifier for the digit pattern."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, -} - -var CallingVirtualLineCallGetInterceptSettings = &Operation{ - ID: "CallingVirtualLineCallGetInterceptSettings", Area: "calling", Group: "virtual-line-call", Command: "get-intercept-settings", - Summary: "Read Call Intercept Settings for a Virtual Line", - Description: "Retrieves Virtual Line's Call Intercept settings.\n\nThe intercept feature gracefully takes a virtual line's phone out of service, while providing callers with informative announcements and alternative routing options. Depending on the service configuration, none, some, or all incoming calls to the specified virtual line are intercepted. Also depending on the service configuration, outgoing calls are intercepted or rerouted to another location.\n\nRetrieving the intercept settings for a virtual line requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/virtualLines/{virtualLineId}/intercept", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Retrieve settings for a virtual line with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, -} - -var CallingVirtualLineCallUpdateInterceptSettings = &Operation{ - ID: "CallingVirtualLineCallUpdateInterceptSettings", Area: "calling", Group: "virtual-line-call", Command: "update-intercept-settings", - Summary: "Configure Call Intercept Settings for a Virtual Line", - Description: "Configures a virtual line's Call Intercept settings.\n\nThe intercept feature gracefully takes a virtual line's phone out of service, while providing callers with informative announcements and alternative routing options. Depending on the service configuration, none, some, or all incoming calls to the specified virtual line are intercepted. Also depending on the service configuration, outgoing calls are intercepted or rerouted to another location.\n\nUpdating the intercept settings for a virtual line requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/virtualLines/{virtualLineId}/intercept", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Update settings for a virtual line with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, - Body: &Body{}, -} - -var CallingVirtualLineCallUpdateInterceptGreeting = &Operation{ - ID: "CallingVirtualLineCallUpdateInterceptGreeting", Area: "calling", Group: "virtual-line-call", Command: "update-intercept-greeting", - Summary: "Configure Call Intercept Greeting for a Virtual Line", - Description: "Configure a virtual line's Call Intercept Greeting by uploading a Waveform Audio File Format, `.wav`, encoded audio file.\n\nYour request will need to be a `multipart/form-data` request rather than JSON, using the `audio/wav` Content-Type.\n\nUploading the intercept greeting announcement for a virtual line requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**WARNING:** This API is not callable using the developer portal web interface due to the lack of support for multipart POST. This API can be utilized using other tools that support multipart POST, such as Postman.", - Method: "POST", Path: "/telephony/config/virtualLines/{virtualLineId}/intercept/actions/announcementUpload/invoke", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Update settings for a virtual line with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, - Handwritten: true, -} - -var CallingVirtualLineCallGetAgentListAvailableCallerIds = &Operation{ - ID: "CallingVirtualLineCallGetAgentListAvailableCallerIds", Area: "calling", Group: "virtual-line-call", Command: "get-agent-list-available-caller-ids", - Summary: "Retrieve Agent's List of Available Caller IDs", - Description: "Get the list of call queues and hunt groups available for caller ID use by this virtual line as an agent.\n\nThis API requires a full, user, or read-only administrator auth token with a scope of `spark-admin:people_read`.", - Method: "GET", Path: "/telephony/config/virtualLines/{virtualLineId}/agent/availableCallerIds", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Unique identifier for the Virtual Line."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the Virtual Line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, -} - -var CallingVirtualLineCallGetAgentCallerId = &Operation{ - ID: "CallingVirtualLineCallGetAgentCallerId", Area: "calling", Group: "virtual-line-call", Command: "get-agent-caller-id", - Summary: "Retrieve Agent's Caller ID Information", - Description: "Retrieve the Agent's Caller ID Information.\n\nEach agent will be able to set their outgoing Caller ID as either the Call Queue's Caller ID, Hunt Group's Caller ID or their own configured Caller ID.\n\nThis API requires a full admin or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/virtualLines/{virtualLineId}/agent/callerId", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Unique identifier for the Virtual Line."}, - }, -} - -var CallingVirtualLineCallUpdateAgentCallerId = &Operation{ - ID: "CallingVirtualLineCallUpdateAgentCallerId", Area: "calling", Group: "virtual-line-call", Command: "update-agent-caller-id", - Summary: "Modify Agent's Caller ID Information", - Description: "Modify Agent's Caller ID Information.\n\nEach Agent is able to set their outgoing Caller ID as either the designated Call Queue's Caller ID or the Hunt Group's Caller ID or their own configured Caller ID.\nThis API requires a full or user administrator auth token with the `spark-admin:telephony_config_write` scope.", - Method: "PUT", Path: "/telephony/config/virtualLines/{virtualLineId}/agent/callerId", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Unique identifier for the Virtual Line."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "selectedCallerId", Flag: "selected-caller-id", Type: "string"}, - }}, -} - -var CallingVirtualLineCallGetVoicemail = &Operation{ - ID: "CallingVirtualLineCallGetVoicemail", Area: "calling", Group: "virtual-line-call", Command: "get-voicemail", - Summary: "Read Voicemail Settings for a Virtual Line", - Description: "Retrieve a virtual line's voicemail settings.\n\nThe voicemail feature transfers callers to voicemail based on your settings. You can then retrieve voice messages via voicemail.\n\nOptionally, notifications can be sent to a mobile phone via text or email. These notifications will not include the voicemail files.\n\nRetrieving the voicemail settings for a virtual line requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/virtualLines/{virtualLineId}/voicemail", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Retrieve settings for a virtual line with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, -} - -var CallingVirtualLineCallUpdateVoicemail = &Operation{ - ID: "CallingVirtualLineCallUpdateVoicemail", Area: "calling", Group: "virtual-line-call", Command: "update-voicemail", - Summary: "Configure Voicemail Settings for a Virtual Line", - Description: "Configure a virtual line's voicemail settings.\n\nThe voicemail feature transfers callers to voicemail based on your settings. You can then retrieve voice messages via voicemail.\n\nOptionally, notifications can be sent to a mobile phone via text or email. These notifications will not include the voicemail files.\n\nUpdating the voicemail settings for a virtual line requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/virtualLines/{virtualLineId}/voicemail", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Retrieve settings for a virtual line with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, - Body: &Body{}, -} - -var CallingVirtualLineCallUpdateBusyVoicemailGreeting = &Operation{ - ID: "CallingVirtualLineCallUpdateBusyVoicemailGreeting", Area: "calling", Group: "virtual-line-call", Command: "update-busy-voicemail-greeting", - Summary: "Configure Busy Voicemail Greeting for a Virtual Line", - Description: "Configure a virtual line's Busy Voicemail Greeting by uploading a Waveform Audio File Format, `.wav`, encoded audio file.\n\nYour request will need to be a `multipart/form-data` request rather than JSON, using the `audio/wav` Content-Type.\n\nUploading the voicemail busy greeting announcement for a virtual line requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**WARNING:** This API is not callable using the developer portal web interface due to the lack of support for multipart POST. This API can be utilized using other tools that support multipart POST, such as Postman.", - Method: "POST", Path: "/telephony/config/virtualLines/{virtualLineId}/voicemail/actions/uploadBusyGreeting/invoke", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Retrieve settings for a virtual line with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, - Handwritten: true, -} - -var CallingVirtualLineCallUpdateNoAnswerVoicemailGreeting = &Operation{ - ID: "CallingVirtualLineCallUpdateNoAnswerVoicemailGreeting", Area: "calling", Group: "virtual-line-call", Command: "update-no-answer-voicemail-greeting", - Summary: "Configure No Answer Voicemail Greeting for a Virtual Line", - Description: "Configure a virtual line's No Answer Voicemail Greeting by uploading a Waveform Audio File Format, `.wav`, encoded audio file.\n\nYour request will need to be a `multipart/form-data` request rather than JSON, using the `audio/wav` Content-Type.\n\nUploading the voicemail no answer greeting announcement for a virtual line requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**WARNING:** This API is not callable using the developer portal web interface due to the lack of support for multipart POST. This API can be utilized using other tools that support multipart POST, such as Postman.", - Method: "POST", Path: "/telephony/config/virtualLines/{virtualLineId}/voicemail/actions/uploadNoAnswerGreeting/invoke", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Retrieve settings for a virtual line with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, - Handwritten: true, -} - -var CallingVirtualLineCallResetVoicemailPin = &Operation{ - ID: "CallingVirtualLineCallResetVoicemailPin", Area: "calling", Group: "virtual-line-call", Command: "reset-voicemail-pin", - Summary: "Reset Voicemail PIN for a Virtual Line", - Description: "Reset a voicemail PIN for a virtual line.\n\nThe voicemail feature transfers callers to voicemail based on your settings. You can then retrieve voice messages via Voicemail. A voicemail PIN is used to retrieve your voicemail messages.\n\nUpdating the voicemail pin for a virtual line requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: This API is expected to have an empty request body and Content-Type header should be set to `application/json`.", - Method: "POST", Path: "/telephony/config/virtualLines/{virtualLineId}/voicemail/actions/resetPin/invoke", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Retrieve settings for a virtual line with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, - Body: &Body{}, -} - -var CallingVirtualLineCallUpdateVoicemailPasscode = &Operation{ - ID: "CallingVirtualLineCallUpdateVoicemailPasscode", Area: "calling", Group: "virtual-line-call", Command: "update-voicemail-passcode", - Summary: "Modify a virtual line's voicemail passcode", - Description: "Modify a virtual line's voicemail passcode.\n\nModifying a virtual line's voicemail passcode requires a full administrator, user administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/virtualLines/{virtualLineId}/voicemail/passcode", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Modify voicemail passcode for this virtual line."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Modify voicemail passcode for a virtual line in this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "passcode", Flag: "passcode", Type: "string"}, - }}, -} - -var CallingVirtualLineCallGetMusicHoldSettings = &Operation{ - ID: "CallingVirtualLineCallGetMusicHoldSettings", Area: "calling", Group: "virtual-line-call", Command: "get-music-hold-settings", - Summary: "Retrieve Music On Hold Settings for a Virtual Line", - Description: "Retrieve the virtual line's music on hold settings.\n\nMusic on hold is played when a caller is put on hold, or the call is parked.\n\nRetrieving the music on hold settings for a virtual line requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/virtualLines/{virtualLineId}/musicOnHold", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Retrieve settings for a virtual line with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, -} - -var CallingVirtualLineCallUpdateMusicHoldSettings = &Operation{ - ID: "CallingVirtualLineCallUpdateMusicHoldSettings", Area: "calling", Group: "virtual-line-call", Command: "update-music-hold-settings", - Summary: "Configure Music On Hold Settings for a Virtual Line", - Description: "Configure a virtual line's music on hold settings.\n\nMusic on hold is played when a caller is put on hold, or the call is parked.\n\nTo configure music on hold settings for a virtual line, music on hold setting must be enabled for this location.\n\nUpdating the music on hold settings for a virtual line requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/virtualLines/{virtualLineId}/musicOnHold", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Retrieve settings for a virtual line with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, - Body: &Body{}, -} - -var CallingVirtualLineCallGetPushToTalkSettings = &Operation{ - ID: "CallingVirtualLineCallGetPushToTalkSettings", Area: "calling", Group: "virtual-line-call", Command: "get-push-to-talk-settings", - Summary: "Read Push-to-Talk Settings for a Virtual Line", - Description: "Retrieve a virtual line's Push-to-Talk settings.\n\nPush-to-Talk allows the use of desk phones as either a one-way or two-way intercom that connects people in different parts of your organization.\n\nRetrieving the Push-to-Talk settings for a virtual line requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/virtualLines/{virtualLineId}/pushToTalk", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Retrieve settings for a virtual line with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, -} - -var CallingVirtualLineCallUpdatePushToTalkSettings = &Operation{ - ID: "CallingVirtualLineCallUpdatePushToTalkSettings", Area: "calling", Group: "virtual-line-call", Command: "update-push-to-talk-settings", - Summary: "Configure Push-to-Talk Settings for a Virtual Line", - Description: "Configure a virtual line's Push-to-Talk settings.\n\nPush-to-Talk allows the use of desk phones as either a one-way or two-way intercom that connects people in different parts of your organization.\n\nUpdating the Push-to-Talk settings for a virtual line requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/virtualLines/{virtualLineId}/pushToTalk", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Retrieve settings for a virtual line with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "allowAutoAnswer", Flag: "allow-auto-answer", Type: "bool"}, - {Name: "connectionType", Flag: "connection-type", Type: "string"}, - {Name: "accessType", Flag: "access-type", Type: "string"}, - {Name: "members", Flag: "members", Type: "[]string"}, - }}, -} - -var CallingVirtualLineCallGetBridgeSettings = &Operation{ - ID: "CallingVirtualLineCallGetBridgeSettings", Area: "calling", Group: "virtual-line-call", Command: "get-bridge-settings", - Summary: "Read Call Bridge Settings for a Virtual Line", - Description: "Retrieve a virtual line's call bridge settings.\n\nRetrieving the call bridge settings for a virtual line requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/virtualLines/{virtualLineId}/callBridge", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Retrieve settings for a virtual line with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, -} - -var CallingVirtualLineCallUpdateBridgeSettings = &Operation{ - ID: "CallingVirtualLineCallUpdateBridgeSettings", Area: "calling", Group: "virtual-line-call", Command: "update-bridge-settings", - Summary: "Configure Call Bridge Settings for a Virtual Line", - Description: "Configure a virtual line's call bridge settings.\n\nUpdating the call bridge settings for a virtual line requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/virtualLines/{virtualLineId}/callBridge", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Retrieve settings for a virtual line with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "warningToneEnabled", Flag: "warning-tone-enabled", Type: "bool"}, - }}, -} - -var CallingVirtualLineCallGetBargeSettings = &Operation{ - ID: "CallingVirtualLineCallGetBargeSettings", Area: "calling", Group: "virtual-line-call", Command: "get-barge-settings", - Summary: "Read Barge In Settings for a Virtual Line", - Description: "Retrieve a virtual line's barge in settings.\n\nThe Barge In feature enables you to use a Feature Access Code (FAC) to answer a call that was directed to another subscriber, or barge-in on the call if it was already answered. Barge In can be used across locations.\n\nRetrieving the barge in settings for a virtual line requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/virtualLines/{virtualLineId}/bargeIn", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Retrieve settings for a virtual line with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, -} - -var CallingVirtualLineCallUpdateBargeSettings = &Operation{ - ID: "CallingVirtualLineCallUpdateBargeSettings", Area: "calling", Group: "virtual-line-call", Command: "update-barge-settings", - Summary: "Configure Barge In Settings for a Virtual Line", - Description: "Configure a virtual line's barge in settings.\n\nThe Barge In feature enables you to use a Feature Access Code (FAC) to answer a call that was directed to another subscriber, or barge-in on the call if it was already answered. Barge In can be used across locations.\n\nUpdating the barge in settings for a virtual line requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/virtualLines/{virtualLineId}/bargeIn", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Retrieve settings for a virtual line with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "enabled", Flag: "enabled", Type: "bool"}, - {Name: "toneEnabled", Flag: "tone-enabled", Type: "bool"}, - }}, -} - -var CallingVirtualLineCallGetPrivacySettings = &Operation{ - ID: "CallingVirtualLineCallGetPrivacySettings", Area: "calling", Group: "virtual-line-call", Command: "get-privacy-settings", - Summary: "Get a Virtual Line's Privacy Settings", - Description: "Get a virtual line's privacy settings for the specified virtual line ID.\n\nThe privacy feature enables the virtual line's line to be monitored by others and determine if they can be reached by Auto Attendant services.\n\nRetrieving the privacy settings for a virtual line requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/virtualLines/{virtualLineId}/privacy", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Retrieve settings for a virtual line with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, -} - -var CallingVirtualLineCallUpdatePrivacySettings = &Operation{ - ID: "CallingVirtualLineCallUpdatePrivacySettings", Area: "calling", Group: "virtual-line-call", Command: "update-privacy-settings", - Summary: "Configure a Virtual Line's Privacy Settings", - Description: "Configure a virtual line's privacy settings for the specified virtual line ID.\n\nThe privacy feature enables the virtual line's line to be monitored by others and determine if they can be reached by Auto Attendant services.\n\nUpdating the privacy settings for a virtual line requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/virtualLines/{virtualLineId}/privacy", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Retrieve settings for a virtual line with the matching ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "aaExtensionDialingEnabled", Flag: "aa-extension-dialing-enabled", Type: "bool"}, - {Name: "aaNamingDialingEnabled", Flag: "aa-naming-dialing-enabled", Type: "bool"}, - {Name: "enablePhoneStatusDirectoryPrivacy", Flag: "enable-phone-status-directory-privacy", Type: "bool"}, - {Name: "enablePhoneStatusPickupBargeInPrivacy", Flag: "enable-phone-status-pickup-barge-in-privacy", Type: "bool"}, - {Name: "monitoringAgents", Flag: "monitoring-agents", Type: "[]string"}, - }}, -} - -var CallingVirtualLineCallGetFaxAvailableNumbers = &Operation{ - ID: "CallingVirtualLineCallGetFaxAvailableNumbers", Area: "calling", Group: "virtual-line-call", Command: "get-fax-available-numbers", - Summary: "Get Virtual Line Fax Message Available Phone Numbers", - Description: "List standard numbers that are available to be assigned as a virtual line's FAX message number.\nThese numbers are associated with the location of the virtual line specified in the request URL, can be active or inactive, and are unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/virtualLines/{virtualLineId}/faxMessage/availableNumbers", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Unique identifier for the virtual line."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List numbers for this organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of phone numbers returned to this maximum count. The default is 2000."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching phone numbers. The default is 0."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - }, - Paging: &Paging{}, -} - -var CallingVirtualLineCallGetForwardAvailableNumbers = &Operation{ - ID: "CallingVirtualLineCallGetForwardAvailableNumbers", Area: "calling", Group: "virtual-line-call", Command: "get-forward-available-numbers", - Summary: "Get Virtual Line Call Forward Available Phone Numbers", - Description: "List the service and standard PSTN numbers that are available to be assigned as a virtual line's call forward number.\nThese numbers are associated with the location of the virtual line specified in the request URL, can be active or inactive, and are assigned to an owning entity.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/virtualLines/{virtualLineId}/callForwarding/availableNumbers", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Unique identifier for the virtual line."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List numbers for this organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of phone numbers returned to this maximum count. The default is 2000."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching phone numbers. The default is 0."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "ownerName", In: InQuery, Flag: "owner-name", Usage: "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255."}, - {Name: "extension", In: InQuery, Flag: "extension", Usage: "Returns the list of PSTN phone numbers with the given `extension`."}, - }, - Paging: &Paging{}, -} - -var CallingVirtualLineCallGetAvailableNumbers = &Operation{ - ID: "CallingVirtualLineCallGetAvailableNumbers", Area: "calling", Group: "virtual-line-call", Command: "get-available-numbers", - Summary: "Get Virtual Line Available Phone Numbers", - Description: "List standard numbers that are available to be assigned as a virtual line's phone number.\nBy default, this API returns unassigned numbers from all locations. To select the suitable number for assignment, ensure the virtual line's location ID is provided as the `locationId` request parameter.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/virtualLines/availableNumbers", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List numbers for this organization."}, - {Name: "locationId", In: InQuery, Flag: "location-id", Usage: "Return the list of phone numbers for this location within the given organization. The maximum length is 36."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of phone numbers returned to this maximum count. The default is 2000."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching phone numbers. The default is 0."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - }, - Paging: &Paging{}, -} - -var CallingVirtualLineCallGetEcbnAvailableNumbers = &Operation{ - ID: "CallingVirtualLineCallGetEcbnAvailableNumbers", Area: "calling", Group: "virtual-line-call", Command: "get-ecbn-available-numbers", - Summary: "Get Virtual Line ECBN Available Phone Numbers", - Description: "List standard numbers that can be assigned as a virtual line's call forward number.\nThese numbers are associated with the location of the virtual line specified in the request URL, can be active or inactive, and are assigned to an owning entity.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/virtualLines/{virtualLineId}/emergencyCallbackNumber/availableNumbers", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Unique identifier for the virtual line."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List numbers for this organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of phone numbers returned to this maximum count. The default is 2000."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching phone numbers. The default is 0."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "ownerName", In: InQuery, Flag: "owner-name", Usage: "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255."}, - }, - Paging: &Paging{}, -} - -var CallingVirtualLineCallGetInterceptAvailableNumbers = &Operation{ - ID: "CallingVirtualLineCallGetInterceptAvailableNumbers", Area: "calling", Group: "virtual-line-call", Command: "get-intercept-available-numbers", - Summary: "Get Virtual Line Call Intercept Available Phone Numbers", - Description: "List the service and standard PSTN numbers that are available to be assigned as a virtual line's call intercept number.\nThese numbers are associated with the location of the virtual line specified in the request URL, can be active or inactive, and are assigned to an owning entity.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/virtualLines/{virtualLineId}/callIntercept/availableNumbers", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Unique identifier for the virtual line."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List numbers for this organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of phone numbers returned to this maximum count. The default is 2000."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching phone numbers. The default is 0."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "ownerName", In: InQuery, Flag: "owner-name", Usage: "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255."}, - {Name: "extension", In: InQuery, Flag: "extension", Usage: "Returns the list of PSTN phone numbers with the given `extension`."}, - }, - Paging: &Paging{}, -} - -var CallingVirtualLineCallGetDonotdisturbSettings = &Operation{ - ID: "CallingVirtualLineCallGetDonotdisturbSettings", Area: "calling", Group: "virtual-line-call", Command: "get-donotdisturb-settings", - Summary: "Retrieve DoNotDisturb Settings for a Virtual Line", - Description: "Retrieve DoNotDisturb Settings for a Virtual Line.\n\nSilence incoming calls with the Do Not Disturb feature.\nWhen enabled, callers hear the busy signal.\n\nThis API requires a full, read-only or location administrator auth token with a scope of `telephony_config_read`.", - Method: "GET", Path: "/telephony/config/virtualLines/{virtualLineId}/doNotDisturb", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Unique identifier for the virtual line."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the virtual line resides."}, - }, -} - -var CallingVirtualLineCallUpdateDonotdisturbSettings = &Operation{ - ID: "CallingVirtualLineCallUpdateDonotdisturbSettings", Area: "calling", Group: "virtual-line-call", Command: "update-donotdisturb-settings", - Summary: "Modify DoNotDisturb Settings for a Virtual Line", - Description: "Modify DoNotDisturb Settings for a Virtual Line.\n\nSilence incoming calls with the Do Not Disturb feature.\nWhen enabled, callers hear the busy signal.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:telephony_config_write` scope.", - Method: "PUT", Path: "/telephony/config/virtualLines/{virtualLineId}/doNotDisturb", Host: HostWebex, - Params: []Param{ - {Name: "virtualLineId", In: InPath, Flag: "virtual-line-id", Usage: "Unique identifier for the virtual line."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the virtual line resides."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "enabled", Flag: "enabled", Type: "bool"}, - {Name: "ringSplashEnabled", Flag: "ring-splash-enabled", Type: "bool"}, - }}, -} - -var CallingWorkspaceCallGetForward = &Operation{ - ID: "CallingWorkspaceCallGetForward", Area: "calling", Group: "workspace-call", Command: "get-forward", - Summary: "Retrieve Call Forwarding Settings for a Workspace", - Description: "Retrieve Call Forwarding Settings for a Workspace.\n\nThree types of call forwarding are supported:\n\n+ Always - forwards all incoming calls to the destination you choose.\n\n+ When busy, forwards all incoming calls to the destination you chose while the phone is in use or the person is busy.\n\n+ When no answer, forwarding only occurs when you are away or not answering your phone.\n\nIn addition, the Business Continuity feature will send calls to a destination of your choice if your phone is not connected to the network for any reason, such as a power outage, failed Internet connection, or wiring problem.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with `spark:workspaces_read` scope can be used to read workspace settings.", - Method: "GET", Path: "/workspaces/{workspaceId}/features/callForwarding", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingWorkspaceCallUpdateForward = &Operation{ - ID: "CallingWorkspaceCallUpdateForward", Area: "calling", Group: "workspace-call", Command: "update-forward", - Summary: "Modify Call Forwarding Settings for a Workspace", - Description: "Modify call forwarding settings for a Workspace.\n\nThree types of call forwarding are supported:\n\n+ Always - forwards all incoming calls to the destination you choose.\n\n+ When busy, forwards all incoming calls to the destination you chose while the phone is in use or the person is busy.\n\n+ When no answer, forwarding only occurs when you are away or not answering your phone.\n\nIn addition, the Business Continuity feature will send calls to a destination of your choice if your phone is not connected to the network for any reason, such as a power outage, failed Internet connection, or wiring problem.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with `spark:workspaces_write` scope can be used to update workspace settings.", - Method: "PUT", Path: "/workspaces/{workspaceId}/features/callForwarding", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{}, -} - -var CallingWorkspaceCallGetWaitingSettings = &Operation{ - ID: "CallingWorkspaceCallGetWaitingSettings", Area: "calling", Group: "workspace-call", Command: "get-waiting-settings", - Summary: "Retrieve Call Waiting Settings for a Workspace", - Description: "Retrieve Call Waiting Settings for a Workspace.\n\nCall Waiting allows workspaces to handle multiple simultaneous calls. Workspaces with Call Waiting enabled can place a call on hold to answer or initiate another call.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with `spark:workspaces_read` scope can be used to read workspace settings.", - Method: "GET", Path: "/workspaces/{workspaceId}/features/callWaiting", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingWorkspaceCallUpdateWaitingSettings = &Operation{ - ID: "CallingWorkspaceCallUpdateWaitingSettings", Area: "calling", Group: "workspace-call", Command: "update-waiting-settings", - Summary: "Modify Call Waiting Settings for a Workspace", - Description: "Modify Call Waiting Settings for a Workspace.\n\nCall Waiting allows workspaces to handle multiple simultaneous calls. Workspaces with Call Waiting enabled can place a call on hold to answer or initiate another call.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with `spark:workspaces_write` scope can be used to update workspace settings.", - Method: "PUT", Path: "/workspaces/{workspaceId}/features/callWaiting", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "enabled", Flag: "enabled", Type: "bool"}, - }}, -} - -var CallingWorkspaceCallGetCallerId = &Operation{ - ID: "CallingWorkspaceCallGetCallerId", Area: "calling", Group: "workspace-call", Command: "get-caller-id", - Summary: "Read Caller ID Settings for a Workspace", - Description: "Retrieve a workspace's Caller ID settings.\n\nCaller ID settings control how a workspace's information is displayed when making outgoing calls.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with `spark:workspaces_read` scope can be used to read workspace settings.", - Method: "GET", Path: "/workspaces/{workspaceId}/features/callerId", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingWorkspaceCallUpdateCallerId = &Operation{ - ID: "CallingWorkspaceCallUpdateCallerId", Area: "calling", Group: "workspace-call", Command: "update-caller-id", - Summary: "Configure Caller ID Settings for a Workspace", - Description: "Configure workspace's Caller ID settings.\n\nCaller ID settings control how a workspace's information is displayed when making outgoing calls.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with `spark:workspaces_write` scope can be used to update workspace settings.", - Method: "PUT", Path: "/workspaces/{workspaceId}/features/callerId", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{}, -} - -var CallingWorkspaceCallGetMonitoringSettings = &Operation{ - ID: "CallingWorkspaceCallGetMonitoringSettings", Area: "calling", Group: "workspace-call", Command: "get-monitoring-settings", - Summary: "Retrieve Monitoring Settings for a Workspace", - Description: "Retrieves Monitoring settings for a Workspace.\n\nAllow workspaces to monitor the line status of specified agents, workspaces, or call park extensions. The line status indicates if a monitored agent or a workspace is on a call, or if a call has been parked on the monitored call park extension.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with `spark:workspaces_read` scope can be used to read workspace settings.", - Method: "GET", Path: "/workspaces/{workspaceId}/features/monitoring", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingWorkspaceCallUpdateMonitoringSettings = &Operation{ - ID: "CallingWorkspaceCallUpdateMonitoringSettings", Area: "calling", Group: "workspace-call", Command: "update-monitoring-settings", - Summary: "Modify Monitoring Settings for a Workspace", - Description: "Modify Monitoring settings for a Workspace.\n\nAllow workspaces to monitor the line status of specified agents, workspaces, or call park extensions. The line status indicates if a monitored agent or a workspace is on a call, or if a call has been parked on the monitored call park extension.\n\nThe number of monitored elements is limited to 50.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with `spark:workspaces_write` scope can be used to update workspace settings.", - Method: "PUT", Path: "/workspaces/{workspaceId}/features/monitoring", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "enableCallParkNotification", Flag: "enable-call-park-notification", Type: "bool"}, - {Name: "monitoredElements", Flag: "monitored-elements", Type: "[]string"}, - }}, -} - -var CallingWorkspaceCallListNumbersAssociated = &Operation{ - ID: "CallingWorkspaceCallListNumbersAssociated", Area: "calling", Group: "workspace-call", Command: "list-numbers-associated", - Summary: "List numbers associated with a specific workspace", - Description: "List the PSTN phone numbers associated with a specific workspace, by ID, within the organization. Also shows the location and organization associated with the workspace.\n\nRetrieving this list requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:workspaces_read`.", - Method: "GET", Path: "/workspaces/{workspaceId}/features/numbers", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "List numbers for this workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Workspace is in this organization. Only admin users of another organization (such as partners) can use this parameter as the default is the same organization as the token used to access the API."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var CallingWorkspaceCallGetIncomingPermissionSettings = &Operation{ - ID: "CallingWorkspaceCallGetIncomingPermissionSettings", Area: "calling", Group: "workspace-call", Command: "get-incoming-permission-settings", - Summary: "Retrieve Incoming Permission Settings for a Workspace", - Description: "Retrieve Incoming Permission settings for a Workspace.\n\nIncoming permission settings allow modifying permissions for a workspace that can be different from the organization's default to manage different call types.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with `spark:workspaces_read` scope can be used to read workspace settings.", - Method: "GET", Path: "/workspaces/{workspaceId}/features/incomingPermission", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingWorkspaceCallUpdateIncomingPermissionSettings = &Operation{ - ID: "CallingWorkspaceCallUpdateIncomingPermissionSettings", Area: "calling", Group: "workspace-call", Command: "update-incoming-permission-settings", - Summary: "Modify Incoming Permission Settings for a Workspace", - Description: "Modify Incoming Permission settings for a Workspace.\n\nIncoming permission settings allow modifying permissions for a workspace that can be different from the organization's default to manage different call types.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with `spark:workspaces_write` scope can be used to update workspace settings.", - Method: "PUT", Path: "/workspaces/{workspaceId}/features/incomingPermission", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "useCustomEnabled", Flag: "use-custom-enabled", Type: "bool"}, - {Name: "externalTransfer", Flag: "external-transfer", Type: "string"}, - {Name: "internalCallsEnabled", Flag: "internal-calls-enabled", Type: "bool"}, - {Name: "collectCallsEnabled", Flag: "collect-calls-enabled", Type: "bool"}, - }}, -} - -var CallingWorkspaceCallGetOutgoingPermissionSettings = &Operation{ - ID: "CallingWorkspaceCallGetOutgoingPermissionSettings", Area: "calling", Group: "workspace-call", Command: "get-outgoing-permission-settings", - Summary: "Retrieve Outgoing Permission Settings for a Workspace", - Description: "Retrieve Outgoing Permission settings for a Workspace.\n\nTurn on outgoing call settings for this workspace to override the calling settings from the location that are used by default.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with `spark:workspaces_read` scope can be used to read workspace settings.", - Method: "GET", Path: "/workspaces/{workspaceId}/features/outgoingPermission", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingWorkspaceCallUpdateOutgoingPermissionSettings = &Operation{ - ID: "CallingWorkspaceCallUpdateOutgoingPermissionSettings", Area: "calling", Group: "workspace-call", Command: "update-outgoing-permission-settings", - Summary: "Modify Outgoing Permission Settings for a Workspace", - Description: "Modify Outgoing Permission settings for a Place.\n\nTurn on outgoing call settings for this workspace to override the calling settings from the location that are used by default.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with `spark:workspaces_write` scope can be used to update workspace settings.", - Method: "PUT", Path: "/workspaces/{workspaceId}/features/outgoingPermission", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{}, -} - -var CallingWorkspaceCallGetAccessCodes = &Operation{ - ID: "CallingWorkspaceCallGetAccessCodes", Area: "calling", Group: "workspace-call", Command: "get-access-codes", - Summary: "Retrieve Access Codes for a Workspace", - Description: "Retrieve Access codes for a Workspace.\n\nAccess codes are used to bypass permissions.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with `spark:workspaces_read` scope can be used to read workspace settings.", - Method: "GET", Path: "/workspaces/{workspaceId}/features/outgoingPermission/accessCodes", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingWorkspaceCallUpdateAccessCodes = &Operation{ - ID: "CallingWorkspaceCallUpdateAccessCodes", Area: "calling", Group: "workspace-call", Command: "update-access-codes", - Summary: "Modify Access Codes for a Workspace", - Description: "Modify Access codes for a workspace.\n\nAccess codes are used to bypass permissions.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with `spark:workspaces_write` scope can be used to update workspace settings.", - Method: "PUT", Path: "/workspaces/{workspaceId}/features/outgoingPermission/accessCodes", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "deleteCodes", Flag: "delete-codes", Type: "[]string"}, - }}, -} - -var CallingWorkspaceCallCreateAccessCodes = &Operation{ - ID: "CallingWorkspaceCallCreateAccessCodes", Area: "calling", Group: "workspace-call", Command: "create-access-codes", - Summary: "Create Access Codes for a Workspace", - Description: "Create new Access codes for the given workspace.\n\nAccess codes are used to bypass permissions.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with `spark:workspaces_write` scope can be used to update workspace settings.", - Method: "POST", Path: "/workspaces/{workspaceId}/features/outgoingPermission/accessCodes", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "code", Flag: "code", Type: "string"}, - {Name: "description", Flag: "description", Type: "string"}, - }}, -} - -var CallingWorkspaceCallDeleteAllAccessCodes = &Operation{ - ID: "CallingWorkspaceCallDeleteAllAccessCodes", Area: "calling", Group: "workspace-call", Command: "delete-all-access-codes", - Summary: "Delete all Access Codes for a Workspace", - Description: "Deletes all Access codes for the given workspace.\n\nAccess codes are used to bypass permissions.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with `spark:workspaces_write` scope can be used to update workspace settings.", - Method: "DELETE", Path: "/workspaces/{workspaceId}/features/outgoingPermission/accessCodes", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingWorkspaceCallGetInterceptSettings = &Operation{ - ID: "CallingWorkspaceCallGetInterceptSettings", Area: "calling", Group: "workspace-call", Command: "get-intercept-settings", - Summary: "Read Call Intercept Settings for a Workspace", - Description: "Retrieves Workspace's Call Intercept Settings\n\nThe intercept feature gracefully takes a workspace's phone out of service, while providing callers with informative announcements and alternative routing options. Depending on the service configuration, none, some, or all incoming calls to the specified workspace are intercepted. Also depending on the service configuration, outgoing calls are intercepted or rerouted to another location.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with `spark:workspaces_read` scope can be used to read workspace settings.", - Method: "GET", Path: "/workspaces/{workspaceId}/features/intercept", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingWorkspaceCallUpdateInterceptSettings = &Operation{ - ID: "CallingWorkspaceCallUpdateInterceptSettings", Area: "calling", Group: "workspace-call", Command: "update-intercept-settings", - Summary: "Configure Call Intercept Settings for a Workspace", - Description: "Configures a Workspace's Call Intercept Settings\n\nThe intercept feature gracefully takes a workspace's phone out of service, while providing callers with informative announcements and alternative routing options. Depending on the service configuration, none, some, or all incoming calls to the specified person are intercepted. Also depending on the service configuration, outgoing calls are intercepted or rerouted to another location.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:workspaces_write` or a user auth token with `spark:workspaces_read` scope can be used by a person to read their settings.", - Method: "PUT", Path: "/workspaces/{workspaceId}/features/intercept", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{}, -} - -var CallingWorkspaceCallGetTransferNumbersSettings = &Operation{ - ID: "CallingWorkspaceCallGetTransferNumbersSettings", Area: "calling", Group: "workspace-call", Command: "get-transfer-numbers-settings", - Summary: "Retrieve Transfer Numbers Settings for a Workspace", - Description: "Retrieve Transfer Numbers Settings for a Workspace.\n\nWhen calling a specific call type, this workspace will be automatically transferred to another number. The person assigned the Auto Transfer Number can then approve the call and send it through or reject the call type. You can add up to 3 numbers.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with `spark:workspaces_read` scope can be used to read workspace settings.", - Method: "GET", Path: "/workspaces/{workspaceId}/features/outgoingPermission/autoTransferNumbers", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingWorkspaceCallUpdateTransferNumbersSettings = &Operation{ - ID: "CallingWorkspaceCallUpdateTransferNumbersSettings", Area: "calling", Group: "workspace-call", Command: "update-transfer-numbers-settings", - Summary: "Modify Transfer Numbers Settings for a Workspace", - Description: "Modify Transfer Numbers Settings for a place.\n\nWhen calling a specific call type, this workspace will be automatically transferred to another number. The person assigned the Auto Transfer Number can then approve the call and send it through or reject the call type. You can add up to 3 numbers.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with `spark:workspaces_write` scope can be used to update workspace settings.", - Method: "PUT", Path: "/workspaces/{workspaceId}/features/outgoingPermission/autoTransferNumbers", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "useCustomTransferNumbers", Flag: "use-custom-transfer-numbers", Type: "bool"}, - {Name: "autoTransferNumber1", Flag: "auto-transfer-number1", Type: "string"}, - {Name: "autoTransferNumber2", Flag: "auto-transfer-number2", Type: "string"}, - {Name: "autoTransferNumber3", Flag: "auto-transfer-number3", Type: "string"}, - }}, -} - -var CallingWorkspaceCallGetMusicHoldSettings = &Operation{ - ID: "CallingWorkspaceCallGetMusicHoldSettings", Area: "calling", Group: "workspace-call", Command: "get-music-hold-settings", - Summary: "Retrieve Music On Hold Settings for a Workspace", - Description: "Retrieve Music On Hold Settings for a Workspace.\n\nMusic on hold is played when a caller is put on hold, or the call is parked.\n\nRetrieving a workspace's music on hold settings requires a full, device or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/workspaces/{workspaceId}/musicOnHold", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingWorkspaceCallUpdateMusicHoldSettings = &Operation{ - ID: "CallingWorkspaceCallUpdateMusicHoldSettings", Area: "calling", Group: "workspace-call", Command: "update-music-hold-settings", - Summary: "Modify Music On Hold Settings for a Workspace", - Description: "Modify music on hold settings for a Workspace.\n\nMusic on hold is played when a caller is put on hold, or the call is parked.\n\nTo configure music on hold setting for a workspace, music on hold setting must be enabled for this location.\n\nThis API requires a full or device administrator or location administrator auth token with the `spark-admin:telephony_config_write` scope.", - Method: "PUT", Path: "/telephony/config/workspaces/{workspaceId}/musicOnHold", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{}, -} - -var CallingWorkspaceCallDeleteAccessCode = &Operation{ - ID: "CallingWorkspaceCallDeleteAccessCode", Area: "calling", Group: "workspace-call", Command: "delete-access-code", - Summary: "Delete a Specific Access Code for a Workspace", - Description: "Deletes a specific access code for the given workspace.\n\nAccess codes are used to bypass permissions.\n\nThis API requires a full, device or location administrator auth token with the scope of `spark-admin:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/workspaces/{workspaceId}/features/accessCodes/{accessCode}", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "accessCode", In: InPath, Flag: "access-code", Usage: "Access code for outgoing calls."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingWorkspaceCallGetAllDigitPatterns = &Operation{ - ID: "CallingWorkspaceCallGetAllDigitPatterns", Area: "calling", Group: "workspace-call", Command: "get-all-digit-patterns", - Summary: "Retrieve all Digit Patterns for a Workspace", - Description: "Retrieve all digit patterns for a Workspace.\n\nDigit patterns are used to bypass permissions.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/workspaces/{workspaceId}/outgoingPermission/digitPatterns", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingWorkspaceCallCreateDigitPattern = &Operation{ - ID: "CallingWorkspaceCallCreateDigitPattern", Area: "calling", Group: "workspace-call", Command: "create-digit-pattern", - Summary: "Create Digit Pattern for a Workspace", - Description: "Create a new digit pattern for the given workspace.\n\nDigit patterns are used to bypass permissions.\n\nThis API requires a full or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/workspaces/{workspaceId}/outgoingPermission/digitPatterns", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "name", Flag: "name", Type: "string"}, - {Name: "pattern", Flag: "pattern", Type: "string"}, - {Name: "action", Flag: "action", Type: "string"}, - {Name: "transferEnabled", Flag: "transfer-enabled", Type: "bool"}, - }}, -} - -var CallingWorkspaceCallUpdateDigitPatternControl = &Operation{ - ID: "CallingWorkspaceCallUpdateDigitPatternControl", Area: "calling", Group: "workspace-call", Command: "update-digit-pattern-control", - Summary: "Modify the Digit Pattern Category Control Settings for the Workspace", - Description: "Modifies whether this workspace uses the specified digit patterns when placing outbound calls or not.\n\nUpdating the digit pattern category control settings requires a full or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/workspaces/{workspaceId}/outgoingPermission/digitPatterns", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "useCustomDigitPatterns", Flag: "use-custom-digit-patterns", Type: "bool"}, - }}, -} - -var CallingWorkspaceCallDeleteAllDigitPatterns = &Operation{ - ID: "CallingWorkspaceCallDeleteAllDigitPatterns", Area: "calling", Group: "workspace-call", Command: "delete-all-digit-patterns", - Summary: "Delete all Digit Patterns for a Workspace", - Description: "Delete all digit patterns for a Workspace.\n\nDigit patterns are used to bypass permissions.\n\nThis API requires a full or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/workspaces/{workspaceId}/outgoingPermission/digitPatterns", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingWorkspaceCallGetDigitPattern = &Operation{ - ID: "CallingWorkspaceCallGetDigitPattern", Area: "calling", Group: "workspace-call", Command: "get-digit-pattern", - Summary: "Retrieve a Digit Pattern details for the Workspace", - Description: "Retrieve the designated digit pattern.\n\nDigit patterns are used to bypass permissions.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/workspaces/{workspaceId}/outgoingPermission/digitPatterns/{digitPatternId}", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "digitPatternId", In: InPath, Flag: "digit-pattern-id", Usage: "Unique identifier for the digit pattern."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingWorkspaceCallUpdateDigitPattern = &Operation{ - ID: "CallingWorkspaceCallUpdateDigitPattern", Area: "calling", Group: "workspace-call", Command: "update-digit-pattern", - Summary: "Modify a Digit Pattern for the Workspace", - Description: "Modify the designated digit pattern.\n\nDigit patterns are used to bypass permissions.\n\nThis API requires a full or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/workspaces/{workspaceId}/outgoingPermission/digitPatterns/{digitPatternId}", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "digitPatternId", In: InPath, Flag: "digit-pattern-id", Usage: "Unique identifier for the digit pattern."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "name", Flag: "name", Type: "string"}, - {Name: "pattern", Flag: "pattern", Type: "string"}, - {Name: "action", Flag: "action", Type: "string"}, - {Name: "transferEnabled", Flag: "transfer-enabled", Type: "bool"}, - }}, -} - -var CallingWorkspaceCallDeleteDigitPattern = &Operation{ - ID: "CallingWorkspaceCallDeleteDigitPattern", Area: "calling", Group: "workspace-call", Command: "delete-digit-pattern", - Summary: "Delete a Digit Pattern for the Workspace", - Description: "Delete a digit pattern for a Workspace.\n\nDigit patterns are used to bypass permissions.\n\nThis API requires a full or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/workspaces/{workspaceId}/outgoingPermission/digitPatterns/{digitPatternId}", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "digitPatternId", In: InPath, Flag: "digit-pattern-id", Usage: "Unique identifier for the digit pattern."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingWorkspaceCallUploadInterceptAnnouncementFile = &Operation{ - ID: "CallingWorkspaceCallUploadInterceptAnnouncementFile", Area: "calling", Group: "workspace-call", Command: "upload-intercept-announcement-file", - Summary: "Upload Call Intercept Announcement file for a Workspace", - Description: "Upload call intercept announcement file for a workspace.\n\nThe upload announcement feature for a call intercept is used to play custom announcements for a workspace.\n\nYour request will need to be a `multipart/form-data` request rather than JSON, using the `audio/wav` Content-Type.\n\nThis API requires a full, device or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/workspaces/{workspaceId}/features/intercept/actions/announcementUpload/invoke", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Create an announcement in this organization."}, - }, - Handwritten: true, -} - -var CallingWorkspaceCallGetRecording = &Operation{ - ID: "CallingWorkspaceCallGetRecording", Area: "calling", Group: "workspace-call", Command: "get-recording", - Summary: "Retrieve Call Recording Settings for a Workspace", - Description: "Retrieve call recording settings for a workspace.\n\nThe Call Recording feature provides a hosted mechanism to record the calls placed and received on the Carrier platform for replay and archival. This feature is helpful for quality assurance, security, training, and more.\n\nThis API requires a full, read-only, device or location administrator auth token with the `spark-admin:telephony_config_read` scope.", - Method: "GET", Path: "/telephony/config/workspaces/{workspaceId}/features/callRecordings", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingWorkspaceCallUpdateRecording = &Operation{ - ID: "CallingWorkspaceCallUpdateRecording", Area: "calling", Group: "workspace-call", Command: "update-recording", - Summary: "Modify Call Recording Settings for a Workspace", - Description: "Modify call forwarding settings for a workspace.\n\nThe Call Recording feature provides a hosted mechanism to record the calls placed and received on the Carrier platform for replay and archival. This feature is helpful for quality assurance, security, training, and more.\n\nThe vendor's terms of service have to be accepted to enable call recording. Vendor details along with the terms of service URL are shared when the vendor's terms of service are not accepted yet.\n\nThis API requires a full, device or location administrator auth token with the `spark-admin:telephony_config_write` scope.", - Method: "PUT", Path: "/telephony/config/workspaces/{workspaceId}/features/callRecordings", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{}, -} - -var CallingWorkspaceCallGetAvailableNumbers = &Operation{ - ID: "CallingWorkspaceCallGetAvailableNumbers", Area: "calling", Group: "workspace-call", Command: "get-available-numbers", - Summary: "Get Workspace Available Phone Numbers", - Description: "List standard numbers that are available to be assigned as a workspace's phone number.\nBy default, this API returns numbers from all locations that are unassigned. To select the suitable number for assignment, ensure the workspace's location ID is provided as the `locationId` request parameter.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/workspaces/availableNumbers", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List numbers for this organization."}, - {Name: "locationId", In: InQuery, Flag: "location-id", Usage: "Return the list of phone numbers for this location within the given organization. The maximum length is 36."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of phone numbers returned to this maximum count. The default is 2000."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching phone numbers. The default is 0."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - }, - Paging: &Paging{}, -} - -var CallingWorkspaceCallGetEcbnAvailableNumbers = &Operation{ - ID: "CallingWorkspaceCallGetEcbnAvailableNumbers", Area: "calling", Group: "workspace-call", Command: "get-ecbn-available-numbers", - Summary: "Get Workspace ECBN Available Phone Numbers", - Description: "List standard numbers that are available to be assigned as a workspace's emergency callback number.\nThese numbers are associated with the location of the workspace specified in the request URL, can be active or inactive, and are assigned to an owning entity.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/workspaces/{workspaceId}/emergencyCallbackNumber/availableNumbers", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List numbers for this organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of phone numbers returned to this maximum count. The default is 2000."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching phone numbers. The default is 0."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "ownerName", In: InQuery, Flag: "owner-name", Usage: "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255."}, - }, - Paging: &Paging{}, -} - -var CallingWorkspaceCallGetForwardAvailableNumbers = &Operation{ - ID: "CallingWorkspaceCallGetForwardAvailableNumbers", Area: "calling", Group: "workspace-call", Command: "get-forward-available-numbers", - Summary: "Get Workspace Call Forward Available Phone Numbers", - Description: "List the service and standard PSTN numbers that are available to be assigned as a workspace's call forward number.\nThese numbers are associated with the location of the workspace specified in the request URL, can be active or inactive, and are assigned to an owning entity.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/workspaces/{workspaceId}/callForwarding/availableNumbers", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List numbers for this organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of phone numbers returned to this maximum count. The default is 2000."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching phone numbers. The default is 0."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "ownerName", In: InQuery, Flag: "owner-name", Usage: "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255."}, - {Name: "extension", In: InQuery, Flag: "extension", Usage: "Returns the list of PSTN phone numbers with the given `extension`."}, - }, - Paging: &Paging{}, -} - -var CallingWorkspaceCallGetInterceptAvailableNumbers = &Operation{ - ID: "CallingWorkspaceCallGetInterceptAvailableNumbers", Area: "calling", Group: "workspace-call", Command: "get-intercept-available-numbers", - Summary: "Get Workspace Call Intercept Available Phone Numbers", - Description: "List the service and standard PSTN numbers that are available to be assigned as a workspace's call intercept number.\nThese numbers are associated with the location of the workspace specified in the request URL, can be active or inactive, and are assigned to an owning entity.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/workspaces/{workspaceId}/callIntercept/availableNumbers", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List numbers for this organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of phone numbers returned to this maximum count. The default is 2000."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching phone numbers. The default is 0."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "ownerName", In: InQuery, Flag: "owner-name", Usage: "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255."}, - {Name: "extension", In: InQuery, Flag: "extension", Usage: "Returns the list of PSTN phone numbers with the given `extension`."}, - }, - Paging: &Paging{}, -} - -var CallingWorkspaceCallGetAnonymousSettings = &Operation{ - ID: "CallingWorkspaceCallGetAnonymousSettings", Area: "calling", Group: "workspace-call", Command: "get-anonymous-settings", - Summary: "Retrieve Anonymous Call Settings for a Workspace", - Description: "Retrieve Anonymous Call Settings for a Workspace.\n\nAnonymous Call Rejection, when enabled, blocks all incoming calls from unidentified or blocked caller IDs.\n\nThis API requires a full, read-only or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with a scope of `spark:workspaces_read` to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "GET", Path: "/telephony/config/workspaces/{workspaceId}/anonymousCallReject", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingWorkspaceCallUpdateAnonymousSettings = &Operation{ - ID: "CallingWorkspaceCallUpdateAnonymousSettings", Area: "calling", Group: "workspace-call", Command: "update-anonymous-settings", - Summary: "Modify Anonymous Call Settings for a Workspace", - Description: "Modify Anonymous Call Settings for a Workspace.\n\nAnonymous Call Rejection, when enabled, blocks all incoming calls from unidentified or blocked caller IDs.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "PUT", Path: "/telephony/config/workspaces/{workspaceId}/anonymousCallReject", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "enabled", Flag: "enabled", Type: "bool"}, - }}, -} - -var CallingWorkspaceCallGetBargeSettings = &Operation{ - ID: "CallingWorkspaceCallGetBargeSettings", Area: "calling", Group: "workspace-call", Command: "get-barge-settings", - Summary: "Retrieve Barge In Call Settings for a Workspace", - Description: "Retrieve Barge In Call Settings for a Workspace.\n\nBarge In, when enabled, allows you to use the Feature Access Code (FAC) on your desk phone to answer someone else’s phone call or barge in on a call they’ve already answered.\n\nThis API requires a full, read-only or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with a scope of `spark:workspaces_read` to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "GET", Path: "/telephony/config/workspaces/{workspaceId}/bargeIn", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingWorkspaceCallUpdateBargeSettings = &Operation{ - ID: "CallingWorkspaceCallUpdateBargeSettings", Area: "calling", Group: "workspace-call", Command: "update-barge-settings", - Summary: "Modify Barge In Call Settings for a Workspace", - Description: "Modify Barge In Call Settings for a Workspace.\n\nBarge In, when enabled, allows you to use the Feature Access Code (FAC) on your desk phone to answer someone else’s phone call or barge in on a call they’ve already answered.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "PUT", Path: "/telephony/config/workspaces/{workspaceId}/bargeIn", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "enabled", Flag: "enabled", Type: "bool"}, - {Name: "toneEnabled", Flag: "tone-enabled", Type: "bool"}, - }}, -} - -var CallingWorkspaceCallGetDonotdisturbSettings = &Operation{ - ID: "CallingWorkspaceCallGetDonotdisturbSettings", Area: "calling", Group: "workspace-call", Command: "get-donotdisturb-settings", - Summary: "Retrieve DoNotDisturb Settings for a Workspace", - Description: "Retrieve DoNotDisturb Settings for a Workspace.\n\nSilence incoming calls with the Do Not Disturb feature.\nWhen enabled, callers hear the busy signal.\n\nThis API requires a full, read-only or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with a scope of `spark:workspaces_read` to read workspace settings.\n\n**NOTE**: This API is available for professional and common area licensed workspaces.", - Method: "GET", Path: "/telephony/config/workspaces/{workspaceId}/doNotDisturb", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingWorkspaceCallUpdateDonotdisturbSettings = &Operation{ - ID: "CallingWorkspaceCallUpdateDonotdisturbSettings", Area: "calling", Group: "workspace-call", Command: "update-donotdisturb-settings", - Summary: "Modify DoNotDisturb Settings for a Workspace", - Description: "Modify DoNotDisturb Settings for a Workspace.\n\nSilence incoming calls with the Do Not Disturb feature.\nWhen enabled, callers hear the busy signal.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional and common area licensed workspaces.", - Method: "PUT", Path: "/telephony/config/workspaces/{workspaceId}/doNotDisturb", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "enabled", Flag: "enabled", Type: "bool"}, - {Name: "ringSplashEnabled", Flag: "ring-splash-enabled", Type: "bool"}, - }}, -} - -var CallingWorkspaceCallGetBridgeWarningTone = &Operation{ - ID: "CallingWorkspaceCallGetBridgeWarningTone", Area: "calling", Group: "workspace-call", Command: "get-bridge-warning-tone", - Summary: "Retrieve Call Bridge Warning Tone Settings for a Workspace", - Description: "Retrieve Call Bridge Warning Tone Settings for a Workspace.\n\nCall Bridge Warning Tone, when enabled, ensures that users hear a warning tone when other users bridge into an active call on the same shared line appearance.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with `spark:workspaces_read` scope can be used to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "GET", Path: "/telephony/config/workspaces/{workspaceId}/callBridge", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingWorkspaceCallUpdateBridgeWarningTone = &Operation{ - ID: "CallingWorkspaceCallUpdateBridgeWarningTone", Area: "calling", Group: "workspace-call", Command: "update-bridge-warning-tone", - Summary: "Modify Call Bridge Warning Tone Settings for a Workspace", - Description: "Modify Call Bridge Warning Tone Settings for a Workspace.\n\nCall Bridge Warning Tone, when enabled, ensures that users hear a warning tone when other users bridge into an active call on the same shared line appearance.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:workspaces_write` scope can be used to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "PUT", Path: "/telephony/config/workspaces/{workspaceId}/callBridge", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "warningToneEnabled", Flag: "warning-tone-enabled", Type: "bool"}, - }}, -} - -var CallingWorkspaceCallGetPushToTalkSettings = &Operation{ - ID: "CallingWorkspaceCallGetPushToTalkSettings", Area: "calling", Group: "workspace-call", Command: "get-push-to-talk-settings", - Summary: "Read Push-to-Talk Settings for a Workspace", - Description: "Retrieve Push-to-Talk settings for a workspace.\n\nPush-to-Talk allows the use of desk phones as either a one-way or two-way intercom that connects people/workspaces in different parts of your organization.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:workspaces_read` scope can be used to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "GET", Path: "/telephony/config/workspaces/{workspaceId}/pushToTalk", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingWorkspaceCallUpdatePushToTalkSettings = &Operation{ - ID: "CallingWorkspaceCallUpdatePushToTalkSettings", Area: "calling", Group: "workspace-call", Command: "update-push-to-talk-settings", - Summary: "Configure Push-to-Talk Settings for a Workspace", - Description: "Configure Push-to-Talk settings for a workspace.\n\nPush-to-Talk allows the use of desk phones as either a one-way or two-way intercom that connects people/workspaces in different parts of your organization.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:workspaces_write` scope can be used to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "PUT", Path: "/telephony/config/workspaces/{workspaceId}/pushToTalk", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "allowAutoAnswer", Flag: "allow-auto-answer", Type: "bool"}, - {Name: "connectionType", Flag: "connection-type", Type: "string"}, - {Name: "accessType", Flag: "access-type", Type: "string"}, - {Name: "members", Flag: "members", Type: "[]string"}, - }}, -} - -var CallingWorkspaceCallGetPrivacySettings = &Operation{ - ID: "CallingWorkspaceCallGetPrivacySettings", Area: "calling", Group: "workspace-call", Command: "get-privacy-settings", - Summary: "Retrieve Privacy Settings for a Workspace", - Description: "Retrieve Privacy Settings for a Workspace.\n\nThe privacy feature enables the Workspaces line to be monitored by others and determine if they can be reached by Auto Attendant services.\n\nThis API requires a full, read-only or location administrator auth token with a scope of `spark-admin:workspaces_read` scope to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "GET", Path: "/telephony/config/workspaces/{workspaceId}/privacy", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingWorkspaceCallUpdatePrivacySettings = &Operation{ - ID: "CallingWorkspaceCallUpdatePrivacySettings", Area: "calling", Group: "workspace-call", Command: "update-privacy-settings", - Summary: "Modify Privacy Settings for a Workspace", - Description: "Modify Privacy Settings for a Workspace.\n\nThe privacy feature enables the Workspaces line to be monitored by others and determine if they can be reached by Auto Attendant services.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "PUT", Path: "/telephony/config/workspaces/{workspaceId}/privacy", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "aaExtensionDialingEnabled", Flag: "aa-extension-dialing-enabled", Type: "bool"}, - {Name: "aaNamingDialingEnabled", Flag: "aa-naming-dialing-enabled", Type: "bool"}, - {Name: "enablePhoneStatusDirectoryPrivacy", Flag: "enable-phone-status-directory-privacy", Type: "bool"}, - {Name: "enablePhoneStatusPickupBargeInPrivacy", Flag: "enable-phone-status-pickup-barge-in-privacy", Type: "bool"}, - {Name: "monitoringAgents", Flag: "monitoring-agents", Type: "[]string"}, - }}, -} - -var CallingWorkspaceCallGetVoicemail = &Operation{ - ID: "CallingWorkspaceCallGetVoicemail", Area: "calling", Group: "workspace-call", Command: "get-voicemail", - Summary: "Read Voicemail Settings for a Workspace", - Description: "Retrieve a workspace Voicemail settings.\n\nThe voicemail feature transfers callers to voicemail based on your settings. You can then retrieve voice messages via Voicemail. Voicemail audio is sent in Waveform Audio File Format, `.wav`, format.\n\nOptionally, notifications can be sent to a mobile phone via text or email. These notifications will not include the voicemail files.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:workspaces_read` scope can be used to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "GET", Path: "/telephony/config/workspaces/{workspaceId}/voicemail", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingWorkspaceCallUpdateVoicemail = &Operation{ - ID: "CallingWorkspaceCallUpdateVoicemail", Area: "calling", Group: "workspace-call", Command: "update-voicemail", - Summary: "Configure Voicemail Settings for a Workspace", - Description: "Configure a workspace Voicemail settings.\n\nThe voicemail feature transfers callers to voicemail based on your settings. You can then retrieve voice messages via Voicemail. Voicemail audio is sent in Waveform Audio File Format, `.wav`, format.\n\nOptionally, notifications can be sent to a mobile phone via text or email. These notifications will not include the voicemail files.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:workspaces_write` scope can be used to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "PUT", Path: "/telephony/config/workspaces/{workspaceId}/voicemail", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{}, -} - -var CallingWorkspaceCallUpdateVoicemailPasscode = &Operation{ - ID: "CallingWorkspaceCallUpdateVoicemailPasscode", Area: "calling", Group: "workspace-call", Command: "update-voicemail-passcode", - Summary: "Modify Voicemail Passcode for a Workspace", - Description: "Modify voicemail passcode for a workspace.\n\nModifying the voicemail passcode for a workspace requires a full administrator, device administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/workspaces/{placeId}/voicemail/passcode", Host: HostWebex, - Params: []Param{ - {Name: "placeId", In: InPath, Flag: "place-id", Usage: "Modify voicemail passcode for this workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Modify voicemail passcode for a workspace in this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "passcode", Flag: "passcode", Type: "string"}, - }}, -} - -var CallingWorkspaceCallGetSequentialRing = &Operation{ - ID: "CallingWorkspaceCallGetSequentialRing", Area: "calling", Group: "workspace-call", Command: "get-sequential-ring", - Summary: "Retrieve Sequential Ring Criteria for a Workspace", - Description: "Retrieve sequential ring criteria for a workspace.\n\nThe sequential ring feature enables you to create a list of up to five phone numbers. When the workspace receives incoming calls, these numbers will ring one after another.\nThe sequential ring criteria specify settings such as schedule and incoming numbers for which to sequentially ring or not.\n\nThis API requires a full, read-only or location administrator auth token with a scope of `spark-admin:workspaces_read` to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "GET", Path: "/telephony/config/workspaces/{workspaceId}/sequentialRing/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Unique identifier for the criteria."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingWorkspaceCallUpdateSequentialRing = &Operation{ - ID: "CallingWorkspaceCallUpdateSequentialRing", Area: "calling", Group: "workspace-call", Command: "update-sequential-ring", - Summary: "Modify Sequential Ring Criteria for a Workspace", - Description: "Modify sequential ring criteria for a workspace.\n\nThe sequential ring feature enables you to create a list of up to five phone numbers. When the workspace receives incoming calls, these numbers will ring one after another.\nThe sequential ring criteria specify settings such as schedule and incoming numbers for which to sequentially ring or not.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "PUT", Path: "/telephony/config/workspaces/{workspaceId}/sequentialRing/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Unique identifier for the criteria."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "scheduleName", Flag: "schedule-name", Type: "string"}, - {Name: "scheduleType", Flag: "schedule-type", Type: "string"}, - {Name: "scheduleLevel", Flag: "schedule-level", Type: "string"}, - {Name: "callsFrom", Flag: "calls-from", Type: "string"}, - {Name: "anonymousCallersEnabled", Flag: "anonymous-callers-enabled", Type: "bool"}, - {Name: "unavailableCallersEnabled", Flag: "unavailable-callers-enabled", Type: "bool"}, - {Name: "phoneNumbers", Flag: "phone-numbers", Type: "[]string"}, - {Name: "ringEnabled", Flag: "ring-enabled", Type: "bool"}, - }}, -} - -var CallingWorkspaceCallDeleteSequentialRing = &Operation{ - ID: "CallingWorkspaceCallDeleteSequentialRing", Area: "calling", Group: "workspace-call", Command: "delete-sequential-ring", - Summary: "Delete Sequential Ring Criteria for a Workspace", - Description: "Delete sequential ring criteria for a workspace.\n\nThe sequential ring feature enables you to create a list of up to five phone numbers. When the workspace receives incoming calls, these numbers will ring one after another.\nThe sequential ring criteria specify settings such as schedule and incoming numbers for which to sequentially ring or not.\n\nThis API requires a full, read-only or location administrator auth token with a scope of `spark-admin:workspaces_read` to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "DELETE", Path: "/telephony/config/workspaces/{workspaceId}/sequentialRing/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Unique identifier for the criteria."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingWorkspaceCallGetPolicySettings = &Operation{ - ID: "CallingWorkspaceCallGetPolicySettings", Area: "calling", Group: "workspace-call", Command: "get-policy-settings", - Summary: "Read Call Policy Settings for a Workspace", - Description: "Retrieve a workspace Call Policies settings.\n\nThe call policy feature enables administrator to configure call policy settings such as Connected Line Identification Privacy on Redirected Calls for a professional workspace.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:workspaces_read` scope can be used to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "GET", Path: "/telephony/config/workspaces/{workspaceId}/callPolicies", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingWorkspaceCallUpdatePolicySettings = &Operation{ - ID: "CallingWorkspaceCallUpdatePolicySettings", Area: "calling", Group: "workspace-call", Command: "update-policy-settings", - Summary: "Configure Call Policy Settings for a Workspace", - Description: "Configure a workspace Call Policies settings.\n\nThe call policy feature enables administrator to configure call policy settings such as Connected Line Identification Privacy on Redirected Calls for a professional workspace.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:workspaces_write` scope can be used to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "PUT", Path: "/telephony/config/workspaces/{workspaceId}/callPolicies", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "connectedLineIdPrivacyOnRedirectedCalls", Flag: "connected-line-id-privacy-on-redirected-calls", Type: "string"}, - }}, -} - -var CallingWorkspaceCallUpdateBusyVoicemailGreetingPlace = &Operation{ - ID: "CallingWorkspaceCallUpdateBusyVoicemailGreetingPlace", Area: "calling", Group: "workspace-call", Command: "update-busy-voicemail-greeting-place", - Summary: "Configure Busy Voicemail Greeting for a Place", - Description: "Configure a workspace's Busy Voicemail Greeting by uploading a Waveform Audio File Format, `.wav`, encoded audio file.\n\nYour request will need to be a `multipart/form-data` request rather than JSON, using the `audio/wav` Content-Type.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:workspaces_write` scope can be used to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "POST", Path: "/telephony/config/workspaces/{workspaceId}/voicemail/actions/uploadBusyGreeting/invoke", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Handwritten: true, -} - -var CallingWorkspaceCallUpdateNoAnswerVoicemailGreetingPlace = &Operation{ - ID: "CallingWorkspaceCallUpdateNoAnswerVoicemailGreetingPlace", Area: "calling", Group: "workspace-call", Command: "update-no-answer-voicemail-greeting-place", - Summary: "Configure No Answer Voicemail Greeting for a Place", - Description: "Configure a workspace's No Answer Voicemail Greeting by uploading a Waveform Audio File Format, `.wav`, encoded audio file.\n\nYour request will need to be a `multipart/form-data` request rather than JSON, using the `audio/wav` Content-Type.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:workspaces_write` scope can be used to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "POST", Path: "/telephony/config/workspaces/{workspaceId}/voicemail/actions/uploadNoAnswerGreeting/invoke", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Handwritten: true, -} - -var CallingWorkspaceCallCreateSequentialRing = &Operation{ - ID: "CallingWorkspaceCallCreateSequentialRing", Area: "calling", Group: "workspace-call", Command: "create-sequential-ring", - Summary: "Create Sequential Ring Criteria for a Workspace", - Description: "Create sequential ring criteria for a workspace.\n\nThe sequential ring feature enables you to create a list of up to five phone numbers. When the workspace receives incoming calls, these numbers will ring one after another.\nThe sequential ring criteria specify settings such as schedule and incoming numbers for which to sequentially ring or not.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "POST", Path: "/telephony/config/workspaces/{workspaceId}/sequentialRing/criteria", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "callsFrom", Flag: "calls-from", Type: "string"}, - {Name: "ringEnabled", Flag: "ring-enabled", Type: "bool"}, - {Name: "scheduleName", Flag: "schedule-name", Type: "string"}, - {Name: "scheduleType", Flag: "schedule-type", Type: "string"}, - {Name: "scheduleLevel", Flag: "schedule-level", Type: "string"}, - {Name: "anonymousCallersEnabled", Flag: "anonymous-callers-enabled", Type: "bool"}, - {Name: "unavailableCallersEnabled", Flag: "unavailable-callers-enabled", Type: "bool"}, - {Name: "phoneNumbers", Flag: "phone-numbers", Type: "[]string"}, - }}, -} - -var CallingWorkspaceCallGetSequentialRingSettings = &Operation{ - ID: "CallingWorkspaceCallGetSequentialRingSettings", Area: "calling", Group: "workspace-call", Command: "get-sequential-ring-settings", - Summary: "Retrieve Sequential Ring Settings for a Workspace", - Description: "Retrieve sequential ring settings for a workspace.\n\nThe sequential ring feature enables you to create a list of up to five phone numbers. When the workspace receives incoming calls, these numbers will ring one after another.\n\nThis API requires a full, read-only or location administrator auth token with a scope of `spark-admin:workspaces_read` to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "GET", Path: "/telephony/config/workspaces/{workspaceId}/sequentialRing", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingWorkspaceCallUpdateSequentialRingSettings = &Operation{ - ID: "CallingWorkspaceCallUpdateSequentialRingSettings", Area: "calling", Group: "workspace-call", Command: "update-sequential-ring-settings", - Summary: "Modify Sequential Ring Settings for a Workspace", - Description: "Modify sequential ring settings for a workspace.\n\nThe sequential ring feature enables you to create a list of up to five phone numbers. When the workspace receives incoming calls, these numbers will ring one after another.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "PUT", Path: "/telephony/config/workspaces/{workspaceId}/sequentialRing", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{}, -} - -var CallingWorkspaceCallGetSimultaneousRingSettings = &Operation{ - ID: "CallingWorkspaceCallGetSimultaneousRingSettings", Area: "calling", Group: "workspace-call", Command: "get-simultaneous-ring-settings", - Summary: "Retrieve Simultaneous Ring Settings for a Workspace", - Description: "Retrieve Simultaneous Ring Settings for a Workspace.\n\nThe Simultaneous Ring feature allows you to configure your office phone and other phones of your choice to ring simultaneously.\nSchedules can also be set up to ring these phones during certain times of the day or days of the week.\n\nThis API requires a full, read-only or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with a scope of `spark:workspaces_read` to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "GET", Path: "/telephony/config/workspaces/{workspaceId}/simultaneousRing", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingWorkspaceCallUpdateSimultaneousRingSettings = &Operation{ - ID: "CallingWorkspaceCallUpdateSimultaneousRingSettings", Area: "calling", Group: "workspace-call", Command: "update-simultaneous-ring-settings", - Summary: "Modify Simultaneous Ring Settings for a Workspace", - Description: "Modify Simultaneous Ring Settings for a Workspace.\n\nThe Simultaneous Ring feature allows you to configure the workspace phones of your choice to ring simultaneously.\nSchedules can also be set up to ring these phones during certain times of the day or days of the week.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "PUT", Path: "/telephony/config/workspaces/{workspaceId}/simultaneousRing", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{}, -} - -var CallingWorkspaceCallGetSimultaneousRing = &Operation{ - ID: "CallingWorkspaceCallGetSimultaneousRing", Area: "calling", Group: "workspace-call", Command: "get-simultaneous-ring", - Summary: "Retrieve Simultaneous Ring Criteria for a Workspace", - Description: "Retrieve Simultaneous Ring Criteria Settings for a Workspace.\n\nThe Simultaneous Ring feature allows you to configure your office phone and other phones of your choice to ring simultaneously.\nSimultaneous Ring Criteria (Schedules) can also be set up to ring these phones during certain times of the day or days of the week.\n\nThis API requires a full, read-only or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with a scope of `spark:workspaces_read` to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "GET", Path: "/telephony/config/workspaces/{workspaceId}/simultaneousRing/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Unique identifier for the criteria."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingWorkspaceCallUpdateSimultaneousRing = &Operation{ - ID: "CallingWorkspaceCallUpdateSimultaneousRing", Area: "calling", Group: "workspace-call", Command: "update-simultaneous-ring", - Summary: "Modify Simultaneous Ring Criteria for a Workspace", - Description: "Modify Simultaneous Ring Criteria Settings for a Workspace.\n\nThe Simultaneous Ring feature allows you to configure your office phone and other phones of your choice to ring simultaneously.\nSimultaneous Ring Criteria (Schedules) can also be set up to ring these phones during certain times of the day or days of the week.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "PUT", Path: "/telephony/config/workspaces/{workspaceId}/simultaneousRing/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Unique identifier for the criteria."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "scheduleName", Flag: "schedule-name", Type: "string"}, - {Name: "scheduleType", Flag: "schedule-type", Type: "string"}, - {Name: "scheduleLevel", Flag: "schedule-level", Type: "string"}, - {Name: "callsFrom", Flag: "calls-from", Type: "string"}, - {Name: "anonymousCallersEnabled", Flag: "anonymous-callers-enabled", Type: "bool"}, - {Name: "unavailableCallersEnabled", Flag: "unavailable-callers-enabled", Type: "bool"}, - {Name: "phoneNumbers", Flag: "phone-numbers", Type: "[]string"}, - {Name: "ringEnabled", Flag: "ring-enabled", Type: "bool"}, - }}, -} - -var CallingWorkspaceCallDeleteSimultaneousRing = &Operation{ - ID: "CallingWorkspaceCallDeleteSimultaneousRing", Area: "calling", Group: "workspace-call", Command: "delete-simultaneous-ring", - Summary: "Delete Simultaneous Ring Criteria for a Workspace", - Description: "Delete simultaneous ring criteria Settings for a workspace.\n\nThe Simultaneous Ring feature allows you to configure your office phone and other phones of your choice to ring simultaneously.\nSimultaneous Ring Criteria (Schedules) can also be set up to ring these phones during certain times of the day or days of the week.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "DELETE", Path: "/telephony/config/workspaces/{workspaceId}/simultaneousRing/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Unique identifier for the criteria."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingWorkspaceCallCreateSimultaneousRing = &Operation{ - ID: "CallingWorkspaceCallCreateSimultaneousRing", Area: "calling", Group: "workspace-call", Command: "create-simultaneous-ring", - Summary: "Create Simultaneous Ring Criteria for a Workspace", - Description: "Create Simultaneous Ring Criteria Settings for a Workspace.\n\nThe Simultaneous Ring feature allows you to configure your office phone and other phones of your choice to ring simultaneously.\nSimultaneous Ring Criteria (Schedules) can also be set up to ring these phones during certain times of the day or days of the week.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "POST", Path: "/telephony/config/workspaces/{workspaceId}/simultaneousRing/criteria", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "scheduleName", Flag: "schedule-name", Type: "string"}, - {Name: "scheduleType", Flag: "schedule-type", Type: "string"}, - {Name: "scheduleLevel", Flag: "schedule-level", Type: "string"}, - {Name: "callsFrom", Flag: "calls-from", Type: "string"}, - {Name: "ringEnabled", Flag: "ring-enabled", Type: "bool"}, - {Name: "anonymousCallersEnabled", Flag: "anonymous-callers-enabled", Type: "bool"}, - {Name: "unavailableCallersEnabled", Flag: "unavailable-callers-enabled", Type: "bool"}, - {Name: "phoneNumbers", Flag: "phone-numbers", Type: "[]string"}, - }}, -} - -var CallingWorkspaceCallGetSelectiveRejectSettings = &Operation{ - ID: "CallingWorkspaceCallGetSelectiveRejectSettings", Area: "calling", Group: "workspace-call", Command: "get-selective-reject-settings", - Summary: "Retrieve Selective Reject Settings for a Workspace", - Description: "Retrieve Selective Reject Settings for a Workspace.\n\nWith the Selective Reject feature, you can reject calls at specific times from specific callers. This setting takes precedence over Selectively Accept Calls.\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, read-only or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with a scope of `spark:workspaces_read` to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "GET", Path: "/telephony/config/workspaces/{workspaceId}/selectiveReject", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingWorkspaceCallUpdateSelectiveRejectSettings = &Operation{ - ID: "CallingWorkspaceCallUpdateSelectiveRejectSettings", Area: "calling", Group: "workspace-call", Command: "update-selective-reject-settings", - Summary: "Modify Selective Reject Settings for a Workspace", - Description: "Modify Selective Reject Settings for a Workspace.\n\nWith the Selective Reject feature, you can reject calls at specific times from specific callers. This setting takes precedence over Selectively Accept Calls.\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "PUT", Path: "/telephony/config/workspaces/{workspaceId}/selectiveReject", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "enabled", Flag: "enabled", Type: "bool"}, - }}, -} - -var CallingWorkspaceCallGetSelectiveReject = &Operation{ - ID: "CallingWorkspaceCallGetSelectiveReject", Area: "calling", Group: "workspace-call", Command: "get-selective-reject", - Summary: "Retrieve Selective Reject Criteria for a Workspace", - Description: "Retrieve Selective Reject Criteria Settings for a Workspace.\n\nWith the Selective Reject feature, you can reject calls at specific times from specific callers. This setting takes precedence over Selectively Accept Calls.\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, read-only or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with a scope of `spark:workspaces_read` to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "GET", Path: "/telephony/config/workspaces/{workspaceId}/selectiveReject/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Unique identifier for the criteria."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingWorkspaceCallUpdateSelectiveReject = &Operation{ - ID: "CallingWorkspaceCallUpdateSelectiveReject", Area: "calling", Group: "workspace-call", Command: "update-selective-reject", - Summary: "Modify Selective Reject Criteria for a Workspace", - Description: "Modify Selective Reject Criteria Settings for a Workspace.\n\nWith the Selective Reject feature, you can reject calls at specific times from specific callers. This setting takes precedence over Selectively Accept Calls.\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "PUT", Path: "/telephony/config/workspaces/{workspaceId}/selectiveReject/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Unique identifier for the criteria."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "scheduleName", Flag: "schedule-name", Type: "string"}, - {Name: "scheduleType", Flag: "schedule-type", Type: "string"}, - {Name: "scheduleLevel", Flag: "schedule-level", Type: "string"}, - {Name: "callsFrom", Flag: "calls-from", Type: "string"}, - {Name: "anonymousCallersEnabled", Flag: "anonymous-callers-enabled", Type: "bool"}, - {Name: "unavailableCallersEnabled", Flag: "unavailable-callers-enabled", Type: "bool"}, - {Name: "phoneNumbers", Flag: "phone-numbers", Type: "[]string"}, - {Name: "rejectEnabled", Flag: "reject-enabled", Type: "bool"}, - }}, -} - -var CallingWorkspaceCallDeleteSelectiveReject = &Operation{ - ID: "CallingWorkspaceCallDeleteSelectiveReject", Area: "calling", Group: "workspace-call", Command: "delete-selective-reject", - Summary: "Delete Selective Reject Criteria for a Workspace", - Description: "Delete Selective Reject criteria Settings for a workspace.\n\nWith the Selective Reject feature, you can reject calls at specific times from specific callers. This setting takes precedence over Selectively Accept Calls.\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "DELETE", Path: "/telephony/config/workspaces/{workspaceId}/selectiveReject/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Unique identifier for the criteria."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingWorkspaceCallCreateSelectiveReject = &Operation{ - ID: "CallingWorkspaceCallCreateSelectiveReject", Area: "calling", Group: "workspace-call", Command: "create-selective-reject", - Summary: "Create Selective Reject Criteria for a Workspace", - Description: "Create Selective Reject Criteria Settings for a Workspace.\n\nWith the Selective Reject feature, you can reject calls at specific times from specific callers. This setting takes precedence over Selectively Accept Calls.\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "POST", Path: "/telephony/config/workspaces/{workspaceId}/selectiveReject/criteria", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "scheduleName", Flag: "schedule-name", Type: "string"}, - {Name: "scheduleType", Flag: "schedule-type", Type: "string"}, - {Name: "scheduleLevel", Flag: "schedule-level", Type: "string"}, - {Name: "callsFrom", Flag: "calls-from", Type: "string"}, - {Name: "rejectEnabled", Flag: "reject-enabled", Type: "bool"}, - {Name: "anonymousCallersEnabled", Flag: "anonymous-callers-enabled", Type: "bool"}, - {Name: "unavailableCallersEnabled", Flag: "unavailable-callers-enabled", Type: "bool"}, - {Name: "phoneNumbers", Flag: "phone-numbers", Type: "[]string"}, - }}, -} - -var CallingWorkspaceCallAssignUnassignNumbersAssociated = &Operation{ - ID: "CallingWorkspaceCallAssignUnassignNumbersAssociated", Area: "calling", Group: "workspace-call", Command: "assign-unassign-numbers-associated", - Summary: "Assign or Unassign numbers associated with a specific workspace", - Description: "Assign or unassign alternate phone numbers associated with a specific workspace.\n\nEach location has a set of phone numbers that can be assigned to people, workspaces, or features. Phone numbers must follow the E.164 format for all countries, except for the United States, which can also follow the National format. Active phone numbers are in service.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "PUT", Path: "/telephony/config/workspaces/{workspaceId}/numbers", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{}, -} - -var CallingWorkspaceCallGetSelectiveAcceptSettings = &Operation{ - ID: "CallingWorkspaceCallGetSelectiveAcceptSettings", Area: "calling", Group: "workspace-call", Command: "get-selective-accept-settings", - Summary: "Retrieve Selective Accept Settings for a Workspace", - Description: "Retrieve Selective Accept Settings for a Workspace.\n\nWith the Selective Accept feature, you can accept calls at specific times from specific callers.\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, read-only or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with a scope of `spark:workspaces_read` to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "GET", Path: "/telephony/config/workspaces/{workspaceId}/selectiveAccept", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingWorkspaceCallUpdateSelectiveAcceptSettings = &Operation{ - ID: "CallingWorkspaceCallUpdateSelectiveAcceptSettings", Area: "calling", Group: "workspace-call", Command: "update-selective-accept-settings", - Summary: "Modify Selective Accept Settings for a Workspace", - Description: "Modify Selective Accept Settings for a Workspace.\n\nWith the Selective Accept feature, you can accept calls at specific times from specific callers.\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "PUT", Path: "/telephony/config/workspaces/{workspaceId}/selectiveAccept", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "enabled", Flag: "enabled", Type: "bool"}, - }}, -} - -var CallingWorkspaceCallGetSelectiveAccept = &Operation{ - ID: "CallingWorkspaceCallGetSelectiveAccept", Area: "calling", Group: "workspace-call", Command: "get-selective-accept", - Summary: "Retrieve Selective Accept Criteria for a Workspace", - Description: "Retrieve Selective Accept Criteria Settings for a Workspace.\n\nWith the Selective Accept feature, you can accept calls at specific times from specific callers.\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, read-only or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with a scope of `spark:workspaces_read` to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "GET", Path: "/telephony/config/workspaces/{workspaceId}/selectiveAccept/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Unique identifier for the criteria."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingWorkspaceCallUpdateSelectiveAccept = &Operation{ - ID: "CallingWorkspaceCallUpdateSelectiveAccept", Area: "calling", Group: "workspace-call", Command: "update-selective-accept", - Summary: "Modify Selective Accept Criteria for a Workspace", - Description: "Modify Selective Accept Criteria Settings for a Workspace.\n\nWith the Selective Accept feature, you can accept calls at specific times from specific callers\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "PUT", Path: "/telephony/config/workspaces/{workspaceId}/selectiveAccept/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Unique identifier for the criteria."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "scheduleName", Flag: "schedule-name", Type: "string"}, - {Name: "scheduleType", Flag: "schedule-type", Type: "string"}, - {Name: "scheduleLevel", Flag: "schedule-level", Type: "string"}, - {Name: "callsFrom", Flag: "calls-from", Type: "string"}, - {Name: "anonymousCallersEnabled", Flag: "anonymous-callers-enabled", Type: "bool"}, - {Name: "unavailableCallersEnabled", Flag: "unavailable-callers-enabled", Type: "bool"}, - {Name: "phoneNumbers", Flag: "phone-numbers", Type: "[]string"}, - {Name: "acceptEnabled", Flag: "accept-enabled", Type: "bool"}, - }}, -} - -var CallingWorkspaceCallDeleteSelectiveAccept = &Operation{ - ID: "CallingWorkspaceCallDeleteSelectiveAccept", Area: "calling", Group: "workspace-call", Command: "delete-selective-accept", - Summary: "Delete Selective Accept Criteria for a Workspace", - Description: "Delete Selective Accept criteria Settings for a workspace.\n\nWith the Selective Accept feature, you can accept calls at specific times from specific callers.\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "DELETE", Path: "/telephony/config/workspaces/{workspaceId}/selectiveAccept/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Unique identifier for the criteria."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingWorkspaceCallCreateSelectiveAccept = &Operation{ - ID: "CallingWorkspaceCallCreateSelectiveAccept", Area: "calling", Group: "workspace-call", Command: "create-selective-accept", - Summary: "Create Selective Accept Criteria for a Workspace", - Description: "Create Selective Accept Criteria Settings for a Workspace.\n\nWith the Selective Accept feature, you can reject calls at specific times from specific callers. This setting takes precedence over Selectively Accept Calls.\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "POST", Path: "/telephony/config/workspaces/{workspaceId}/selectiveAccept/criteria", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "scheduleName", Flag: "schedule-name", Type: "string"}, - {Name: "scheduleType", Flag: "schedule-type", Type: "string"}, - {Name: "scheduleLevel", Flag: "schedule-level", Type: "string"}, - {Name: "callsFrom", Flag: "calls-from", Type: "string"}, - {Name: "acceptEnabled", Flag: "accept-enabled", Type: "bool"}, - {Name: "anonymousCallersEnabled", Flag: "anonymous-callers-enabled", Type: "bool"}, - {Name: "unavailableCallersEnabled", Flag: "unavailable-callers-enabled", Type: "bool"}, - {Name: "phoneNumbers", Flag: "phone-numbers", Type: "[]string"}, - }}, -} - -var CallingWorkspaceCallGetPriorityAlertSettings = &Operation{ - ID: "CallingWorkspaceCallGetPriorityAlertSettings", Area: "calling", Group: "workspace-call", Command: "get-priority-alert-settings", - Summary: "Retrieve Priority Alert Settings for a Workspace", - Description: "Retrieve Priority Alert Settings for a Workspace.\n\nThe priority alert feature enables administrators to configure priority alert settings for a professional workspace.\n\nThis API requires a full, user, or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with a scope of `spark:workspaces_read` to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "GET", Path: "/telephony/config/workspaces/{workspaceId}/priorityAlert", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingWorkspaceCallUpdatePriorityAlertSettings = &Operation{ - ID: "CallingWorkspaceCallUpdatePriorityAlertSettings", Area: "calling", Group: "workspace-call", Command: "update-priority-alert-settings", - Summary: "Configure Priority Alert Settings for a Workspace", - Description: "Configure a workspace Priority Alert Settings.\n\nThe priority alert feature enables administrator to configure priority alert settings for a professional workspace.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:workspaces_write` scope that can be used to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "PUT", Path: "/telephony/config/workspaces/{workspaceId}/priorityAlert", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "enabled", Flag: "enabled", Type: "bool"}, - }}, -} - -var CallingWorkspaceCallGetPriorityAlert = &Operation{ - ID: "CallingWorkspaceCallGetPriorityAlert", Area: "calling", Group: "workspace-call", Command: "get-priority-alert", - Summary: "Retrieve Priority Alert Criteria for a Workspace", - Description: "Retrieve Priority Alert Criteria Settings for a Workspace.\n\nThe priority alert feature enables administrators to configure priority alert settings for a professional workspace.\nPriority Alert Criteria (Schedules) can also be set up to alert these phones during certain times of the day or days of the week.\n\nThis API requires a full, user, or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with a scope of `spark:workspaces_read` to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "GET", Path: "/telephony/config/workspaces/{workspaceId}/priorityAlert/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Unique identifier for the criteria."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingWorkspaceCallUpdatePriorityAlert = &Operation{ - ID: "CallingWorkspaceCallUpdatePriorityAlert", Area: "calling", Group: "workspace-call", Command: "update-priority-alert", - Summary: "Modify Priority Alert Criteria for a Workspace", - Description: "Modify Priority Alert Criteria Settings for a Workspace.\n\nThe priority alert feature enables administrators to configure priority alert settings for a professional workspace.\nPriority Alert Criteria (Schedules) can also be set up to alert these phones during certain times of the day or days of the week.\n\nThis API requires a full, user, or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "PUT", Path: "/telephony/config/workspaces/{workspaceId}/priorityAlert/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Unique identifier for the criteria."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "scheduleName", Flag: "schedule-name", Type: "string"}, - {Name: "scheduleType", Flag: "schedule-type", Type: "string"}, - {Name: "scheduleLevel", Flag: "schedule-level", Type: "string"}, - {Name: "callsFrom", Flag: "calls-from", Type: "string"}, - {Name: "anonymousCallersEnabled", Flag: "anonymous-callers-enabled", Type: "bool"}, - {Name: "unavailableCallersEnabled", Flag: "unavailable-callers-enabled", Type: "bool"}, - {Name: "phoneNumbers", Flag: "phone-numbers", Type: "[]string"}, - {Name: "notificationEnabled", Flag: "notification-enabled", Type: "bool"}, - }}, -} - -var CallingWorkspaceCallDeletePriorityAlert = &Operation{ - ID: "CallingWorkspaceCallDeletePriorityAlert", Area: "calling", Group: "workspace-call", Command: "delete-priority-alert", - Summary: "Delete Priority Alert Criteria for a Workspace", - Description: "Delete Priority Alert criteria Settings for a workspace.\n\nThe priority alert feature enables administrators to configure priority alert settings for a professional workspace.\nPriority Alert Criteria (Schedules) can also be set up to alert these phones during certain times of the day or days of the week.\n\nThis API requires a full, user, or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "DELETE", Path: "/telephony/config/workspaces/{workspaceId}/priorityAlert/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Unique identifier for the criteria."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingWorkspaceCallCreatePriorityAlert = &Operation{ - ID: "CallingWorkspaceCallCreatePriorityAlert", Area: "calling", Group: "workspace-call", Command: "create-priority-alert", - Summary: "Create Priority Alert Criteria for a Workspace", - Description: "Create Priority Alert Criteria Settings for a Workspace.\n\nThe priority alert feature enables administrators to configure priority alert settings for a professional workspace.\nPriority Alert Criteria (Schedules) can also be set up to alert these phones during certain times of the day or days of the week.\n\nThis API requires a full, user, or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "POST", Path: "/telephony/config/workspaces/{workspaceId}/priorityAlert/criteria", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "scheduleName", Flag: "schedule-name", Type: "string"}, - {Name: "scheduleType", Flag: "schedule-type", Type: "string"}, - {Name: "scheduleLevel", Flag: "schedule-level", Type: "string"}, - {Name: "callsFrom", Flag: "calls-from", Type: "string"}, - {Name: "notificationEnabled", Flag: "notification-enabled", Type: "bool"}, - {Name: "anonymousCallersEnabled", Flag: "anonymous-callers-enabled", Type: "bool"}, - {Name: "unavailableCallersEnabled", Flag: "unavailable-callers-enabled", Type: "bool"}, - {Name: "phoneNumbers", Flag: "phone-numbers", Type: "[]string"}, - }}, -} - -var CallingWorkspaceCallGetSelectiveForwardSettings = &Operation{ - ID: "CallingWorkspaceCallGetSelectiveForwardSettings", Area: "calling", Group: "workspace-call", Command: "get-selective-forward-settings", - Summary: "Retrieve Selective Forward Settings for a Workspace", - Description: "Retrieve Selective Forward Call Settings for a Workspace.\n\nWith the Selective Forward feature, you can forward calls at specific times from specific callers. This setting takes precedence over call forwarding.\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, read-only or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with a scope of `spark:workspaces_read` to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "GET", Path: "/telephony/config/workspaces/{workspaceId}/selectiveForward", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingWorkspaceCallUpdateSelectiveForwardSettings = &Operation{ - ID: "CallingWorkspaceCallUpdateSelectiveForwardSettings", Area: "calling", Group: "workspace-call", Command: "update-selective-forward-settings", - Summary: "Modify Selective Forward Settings for a Workspace", - Description: "Modify Selective Forward Call Settings for a Workspace.\n\nWith the Selective Forward feature, you can forward calls at specific times from specific callers. This setting takes precedence over call forwarding.\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "PUT", Path: "/telephony/config/workspaces/{workspaceId}/selectiveForward", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "enabled", Flag: "enabled", Type: "bool"}, - {Name: "defaultPhoneNumberToForward", Flag: "default-phone-number-to-forward", Type: "string"}, - {Name: "ringReminderEnabled", Flag: "ring-reminder-enabled", Type: "bool"}, - {Name: "destinationVoicemailEnabled", Flag: "destination-voicemail-enabled", Type: "bool"}, - }}, -} - -var CallingWorkspaceCallGetSelectiveForward = &Operation{ - ID: "CallingWorkspaceCallGetSelectiveForward", Area: "calling", Group: "workspace-call", Command: "get-selective-forward", - Summary: "Retrieve Selective Forward Criteria for a Workspace", - Description: "Retrieve Selective Forward Criteria Settings for a Workspace.\n\nWith the Selective Forward feature, you can forward calls at specific times from specific callers. This setting takes precedence over call forwarding.\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, read-only or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with a scope of `spark:workspaces_read` to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "GET", Path: "/telephony/config/workspaces/{workspaceId}/selectiveForward/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Unique identifier for the criteria."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingWorkspaceCallUpdateSelectiveForward = &Operation{ - ID: "CallingWorkspaceCallUpdateSelectiveForward", Area: "calling", Group: "workspace-call", Command: "update-selective-forward", - Summary: "Modify Selective Forward Criteria for a Workspace", - Description: "Modify Selective Forward Call Criteria Settings for a Workspace.\n\nWith the Selective Forward feature, you can forward calls at specific times from specific callers. This setting takes precedence over call forwarding.\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "PUT", Path: "/telephony/config/workspaces/{workspaceId}/selectiveForward/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Unique identifier for the criteria."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "callsFrom", Flag: "calls-from", Type: "string"}, - {Name: "forwardToPhoneNumber", Flag: "forward-to-phone-number", Type: "string"}, - {Name: "destinationVoicemailEnabled", Flag: "destination-voicemail-enabled", Type: "bool"}, - {Name: "scheduleName", Flag: "schedule-name", Type: "string"}, - {Name: "scheduleType", Flag: "schedule-type", Type: "string"}, - {Name: "scheduleLevel", Flag: "schedule-level", Type: "string"}, - {Name: "anonymousCallersEnabled", Flag: "anonymous-callers-enabled", Type: "bool"}, - {Name: "unavailableCallersEnabled", Flag: "unavailable-callers-enabled", Type: "bool"}, - {Name: "numbers", Flag: "numbers", Type: "[]string"}, - {Name: "forwardEnabled", Flag: "forward-enabled", Type: "bool"}, - }}, -} - -var CallingWorkspaceCallDeleteSelectiveForward = &Operation{ - ID: "CallingWorkspaceCallDeleteSelectiveForward", Area: "calling", Group: "workspace-call", Command: "delete-selective-forward", - Summary: "Delete Selective Forward Criteria for a Workspace", - Description: "Delete Selective Forward Call criteria Settings for a workspace.\n\nWith the Selective Forward feature, you can forward calls at specific times from specific callers. This setting takes precedence over call forwarding.\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "DELETE", Path: "/telephony/config/workspaces/{workspaceId}/selectiveForward/criteria/{id}", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Unique identifier for the criteria."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, -} - -var CallingWorkspaceCallCreateSelectiveForward = &Operation{ - ID: "CallingWorkspaceCallCreateSelectiveForward", Area: "calling", Group: "workspace-call", Command: "create-selective-forward", - Summary: "Create Selective Forward Criteria for a Workspace", - Description: "Create Selective Forward Call Criteria Settings for a Workspace.\n\nWith the Selective Forward feature, you can forward calls at specific times from specific callers. This setting takes precedence over call forwarding.\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - Method: "POST", Path: "/telephony/config/workspaces/{workspaceId}/selectiveForward/criteria", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "callsFrom", Flag: "calls-from", Type: "string"}, - {Name: "forwardToPhoneNumber", Flag: "forward-to-phone-number", Type: "string"}, - {Name: "destinationVoicemailEnabled", Flag: "destination-voicemail-enabled", Type: "bool"}, - {Name: "scheduleName", Flag: "schedule-name", Type: "string"}, - {Name: "scheduleType", Flag: "schedule-type", Type: "string"}, - {Name: "scheduleLevel", Flag: "schedule-level", Type: "string"}, - {Name: "anonymousCallersEnabled", Flag: "anonymous-callers-enabled", Type: "bool"}, - {Name: "unavailableCallersEnabled", Flag: "unavailable-callers-enabled", Type: "bool"}, - {Name: "numbers", Flag: "numbers", Type: "[]string"}, - {Name: "forwardEnabled", Flag: "forward-enabled", Type: "bool"}, - }}, -} - -var CallingWorkspaceCallGetFaxAvailableNumbers = &Operation{ - ID: "CallingWorkspaceCallGetFaxAvailableNumbers", Area: "calling", Group: "workspace-call", Command: "get-fax-available-numbers", - Summary: "Get Workspace Fax Message Available Phone Numbers", - Description: "List standard numbers that are available to be assigned as a workspace's FAX message number.\nThese numbers are associated with the location of the workspace specified in the request URL, can be active or inactive, and are unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.\n\n
Only available for workspaces with the professional license entitlement.
", - Method: "GET", Path: "/telephony/config/workspaces/{workspaceId}/faxMessage/availableNumbers", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List numbers for this organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of phone numbers returned to this maximum count. The default is 2000."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching phone numbers. The default is 0."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - }, - Paging: &Paging{}, -} - -var CallingWorkspaceCallGetSecondaryAvailableNumbers = &Operation{ - ID: "CallingWorkspaceCallGetSecondaryAvailableNumbers", Area: "calling", Group: "workspace-call", Command: "get-secondary-available-numbers", - Summary: "Get Workspace Secondary Available Phone Numbers", - Description: "List standard numbers that are available to be assigned as a workspace's secondary number.\nThese numbers are associated with the location of the workspace specified in the request URL, can be active or inactive, and are unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.\n\n
Only available for workspaces with the professional license entitlement.
", - Method: "GET", Path: "/telephony/config/workspaces/{workspaceId}/secondary/availableNumbers", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Unique identifier for the workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List numbers for this organization."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of phone numbers returned to this maximum count. The default is 2000."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of matching phone numbers. The default is 0."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array."}, - }, - Paging: &Paging{}, -} - -var CallingWorkspacesList = &Operation{ - ID: "CallingWorkspacesList", Area: "calling", Group: "workspaces", Command: "list", - Summary: "List Workspaces", - Description: "List workspaces.\n\nUse query parameters to filter the response. The `orgId` parameter can only be used by admin users of another organization (such as partners). The `locationId`, `workspaceLocationId`, `indoorNavigation`, `floorId`, `capacity` and `type` fields will only be present for workspaces that have a value set for them. The special values `notSet` (for filtering on category) and `-1` (for filtering on capacity) can be used to filter for workspaces without a type and/or capacity.", - Method: "GET", Path: "/workspaces", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List workspaces in this organization. Only admin users of another organization (such as partners) may use this parameter."}, - {Name: "locationId", In: InQuery, Flag: "location-id", Usage: "Location associated with the workspace. Values must originate from the /locations API and not the legacy /workspaceLocations API."}, - {Name: "workspaceLocationId", In: InQuery, Flag: "workspace-location-id", Usage: "Location associated with the workspace. Both values from the /locations API and the legacy /workspaceLocations API are supported. This field is deprecated and integrations should prefer `locationId` going forward."}, - {Name: "floorId", In: InQuery, Flag: "floor-id", Usage: "Floor associated with the workspace."}, - {Name: "displayName", In: InQuery, Flag: "display-name", Usage: "List workspaces by display name."}, - {Name: "capacity", In: InQuery, Flag: "capacity", Usage: "List workspaces with the given capacity. Must be -1 or higher. A value of -1 lists workspaces with no capacity set."}, - {Name: "type", In: InQuery, Flag: "type", Usage: "List workspaces by type."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Offset. Default is 0."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the maximum number of workspaces in the response."}, - {Name: "calling", In: InQuery, Flag: "calling", Usage: "List workspaces by calling type."}, - {Name: "supportedDevices", In: InQuery, Flag: "supported-devices", Usage: "List workspaces by supported devices."}, - {Name: "calendar", In: InQuery, Flag: "calendar", Usage: "List workspaces by calendar type."}, - {Name: "deviceHostedMeetingsEnabled", In: InQuery, Flag: "device-hosted-meetings-enabled", Usage: "List workspaces enabled for device hosted meetings."}, - {Name: "devicePlatform", In: InQuery, Flag: "device-platform", Usage: "List workspaces by device platform."}, - {Name: "healthLevel", In: InQuery, Flag: "health-level", Usage: "List workspaces by health level."}, - {Name: "includeDevices", In: InQuery, Flag: "include-devices", Usage: "Flag identifying whether to include the devices associated with the workspace in the response."}, - {Name: "includeCapabilities", In: InQuery, Flag: "include-capabilities", Usage: "Flag identifying whether to include the workspace capabilities in the response."}, - {Name: "plannedMaintenance", In: InQuery, Flag: "planned-maintenance", Usage: "List workspaces with given maintenance mode."}, - {Name: "customAttribute", In: InQuery, Flag: "custom-attribute", Usage: "List workspaces with given custom attribute key."}, - }, - Paging: &Paging{}, -} - -var CallingWorkspacesCreate = &Operation{ - ID: "CallingWorkspacesCreate", Area: "calling", Group: "workspaces", Command: "create", - Summary: "Create a Workspace", - Description: "Create a workspace.\n\nThe `locationId`, `workspaceLocationId`, `floorId`, `indoorNavigation`, `capacity`, `type`, `notes` and `hotdeskingStatus` parameters are optional, and omitting them will result in the creation of a workspace without these values set, or set to their default. A `locationId` must be provided when the `floorId` is set. Calendar and calling can also be set for a new workspace. Omitting them will default to free calling and no calendaring. The `orgId` parameter can only be used by admin users of another organization (such as partners).\n\n* Information for Webex Calling fields may be found here: [locations](/docs/api/v1/locations/list-locations), [available numbers](/docs/api/v1/numbers/get-phone-numbers-for-an-organization-with-given-criterias) and [licenses](/docs/api/v1/licenses).\n\n* The `locationId` and `supportedDevices` fields cannot be changed once configured.\n\n* When creating a `webexCalling` workspace that is not hot desk only, a `locationId` and either a `phoneNumber` or `extension` or both is required. Furthermore, it is possible to set the `licenses` field with a list of Webex Calling license IDs, if desired. If multiple license IDs are provided, the oldest suitable one will be applied. If no licenses are supplied, the oldest suitable one from the active subscriptions will be automaticaly applied.\n\n* When creating a hot desk only workspace, `phoneNumber` and `extension` fields are not applicable. Furthermore, `deviceHostedMeetingsEnabled`, and `calendar` services are not applicable. If any of these fields are provided the API will return an error. The `calling` type is `webexCalling`.", - Method: "POST", Path: "/workspaces", Host: HostWebex, - Body: &Body{}, -} - -var CallingWorkspacesGet = &Operation{ - ID: "CallingWorkspacesGet", Area: "calling", Group: "workspaces", Command: "get", - Summary: "Get Workspace Details", - Description: "Shows details for a workspace, by ID.\n\nThe `locationId`, `workspaceLocationId`, `floorId`, `indoorNavigation`, `capacity`, `type` and `notes` fields will only be present if they have been set for the workspace. Specify the workspace ID in the `workspaceId` parameter in the URI.", - Method: "GET", Path: "/workspaces/{workspaceId}", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "(Required) A unique identifier for the workspace."}, - {Name: "includeDevices", In: InQuery, Flag: "include-devices", Usage: "Flag identifying whether to include the devices associated with the workspace in the response."}, - }, -} - -var CallingWorkspacesUpdate = &Operation{ - ID: "CallingWorkspacesUpdate", Area: "calling", Group: "workspaces", Command: "update", - Summary: "Update a Workspace", - Description: "Updates details for a workspace by ID.\n\nSpecify the workspace ID in the `workspaceId` parameter in the URI. Include all details for the workspace that are present in a [GET request for the workspace details](/docs/api/v1/workspaces/get-workspace-details). Not including the optional `capacity`, `type` or `notes` fields will result in the fields no longer being defined for the workspace. A `locationId` must be provided when the `floorId` is set. The `locationId`, `workspaceLocationId`, `floorId`, `supportedDevices`, `calendar` and `calling` fields do not change when omitted from the update request.\n\n* Information for Webex Calling fields may be found here: [locations](/docs/api/v1/locations/list-locations) and [available numbers](/docs/api/v1/numbers/get-phone-numbers-for-an-organization-with-given-criterias).\n\n* Updating the `calling` parameter is only supported if the existing `calling` type is `freeCalling`, `none`, `thirdPartySipCalling` or `webexCalling`.\n\n* Updating the `calling` parameter to `none`, `thirdPartySipCalling` or `webexCalling` is not supported if the workspace contains any devices.\n\n* The `locationId` and `supportedDevices` fields cannot be changed once configured.\n\n* When updating `webexCalling` information on a workspace that is not hot desk only, a `locationId` and either a `phoneNumber` or `extension` or both is required. Furthermore, the `licenses` field can be set with a list of Webex Calling license IDs, if desired. If multiple license IDs are provided, the oldest suitable one will be applied. If a previously applied license ID is omitted, it will be replaced with one from the list provided. If the `licenses` field is omitted, the current calling license will be retained.\n\n* When specifying a hot desk only license on a hot desk only workspace, `deviceHostedMeetingsEnabled`, and `calendar` services are not supported and will be automatically disabled. In addition to this, the `phoneNumber` and `extension` will be removed from the workspace. Attempting to enable any of these services, or provide a `phoneNumber` or `extension` will result in an error. The `calling` type for these requests is `webexCalling`.", - Method: "PUT", Path: "/workspaces/{workspaceId}", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "A unique identifier for the workspace."}, - }, - Body: &Body{}, -} - -var CallingWorkspacesDelete = &Operation{ - ID: "CallingWorkspacesDelete", Area: "calling", Group: "workspaces", Command: "delete", - Summary: "Delete a Workspace", - Description: "Deletes a workspace by ID.\n\nAlso deletes all devices associated with the workspace. Any deleted devices will need to be reactivated. Specify the workspace ID in the `workspaceId` parameter in the URI.", - Method: "DELETE", Path: "/workspaces/{workspaceId}", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "A unique identifier for the workspace."}, - }, -} - -var CallingWorkspacesGetCapabilities = &Operation{ - ID: "CallingWorkspacesGetCapabilities", Area: "calling", Group: "workspaces", Command: "get-capabilities", - Summary: "Get Workspace Capabilities", - Description: "Shows the capabilities for a workspace by ID.\n\nReturns a set of capabilities, including whether or not the capability is supported by any device in the workspace, and if the capability is configured (enabled). For example for a specific capability like `occupancyDetection`, the API will return if the capability is supported and/or configured such that occupancy detection data will flow from the workspace (device) to the cloud. Specify the workspace ID in the `workspaceId` parameter in the URI.", - Method: "GET", Path: "/workspaces/{workspaceId}/capabilities", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "A unique identifier for the workspace."}, - }, -} - -var CallingWorkspacesGet2 = &Operation{ - ID: "CallingWorkspacesGet2", Area: "calling", Group: "workspaces", Command: "get-2", - Summary: "Get Workspace Details", - Description: "Shows details for a workspace, by ID.\n\nThe `locationId`, `workspaceLocationId`, `floorId`, `indoorNavigation`, `capacity`, `type` and `notes` fields will only be present if they have been set for the workspace. Specify the workspace ID in the `workspaceId` parameter in the URI.", - Method: "GET", Path: "/workspaces/{workspaceId}", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "A unique identifier for the workspace."}, - {Name: "includeDevices", In: InQuery, Flag: "include-devices", Usage: "Flag identifying whether to include the devices associated with the workspace in the response."}, - {Name: "includeCapabilities", In: InQuery, Flag: "include-capabilities", Usage: "Flag identifying whether to include the workspace capabilities in the response."}, - }, -} - -var CallingExternalVoicemailDial = &Operation{ - ID: "CallingExternalVoicemailDial", Area: "calling", Group: "external-voicemail", Command: "dial", - Summary: "Dial", - Description: "Initiate an outbound call to a specified destination. This is also commonly referred to as Click to Call or Click to Dial. Alerts occur on all the devices belonging to a user unless an optional endpointId is specified in which case only the device or application identified by the endpointId is alerted. When a user answers an alerting device, an outbound call is placed from that device to the destination.", - Method: "POST", Path: "/telephony/calls/dial", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "destination", Flag: "destination", Type: "string"}, - {Name: "endpointId", Flag: "endpoint-id", Type: "string"}, - {Name: "singleNumberReachPhoneNumber", Flag: "single-number-reach-phone-number", Type: "string"}, - {Name: "lineOwnerId", Flag: "line-owner-id", Type: "string"}, - }}, -} - -var CallingExternalVoicemailAnswer = &Operation{ - ID: "CallingExternalVoicemailAnswer", Area: "calling", Group: "external-voicemail", Command: "answer", - Summary: "Answer", - Description: "Answer an incoming call. When no endpointId is specified, the call is answered on the user's primary device. When an endpointId is specified, the call is answered on the device or application identified by the endpointId. The answer API is rejected if the device is not alerting for the call or the device does not support answer via API.", - Method: "POST", Path: "/telephony/calls/answer", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "callId", Flag: "call-id", Type: "string"}, - {Name: "endpointId", Flag: "endpoint-id", Type: "string"}, - {Name: "lineOwnerId", Flag: "line-owner-id", Type: "string"}, - }}, -} - -var CallingExternalVoicemailReject = &Operation{ - ID: "CallingExternalVoicemailReject", Area: "calling", Group: "external-voicemail", Command: "reject", - Summary: "Reject", - Description: "Reject an unanswered incoming call.", - Method: "POST", Path: "/telephony/calls/reject", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "callId", Flag: "call-id", Type: "string"}, - {Name: "action", Flag: "action", Type: "string"}, - {Name: "lineOwnerId", Flag: "line-owner-id", Type: "string"}, - }}, -} - -var CallingExternalVoicemailHangup = &Operation{ - ID: "CallingExternalVoicemailHangup", Area: "calling", Group: "external-voicemail", Command: "hangup", - Summary: "Hangup", - Description: "Hangup a call. If used on an unanswered incoming call, the call is rejected and sent to busy.", - Method: "POST", Path: "/telephony/calls/hangup", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "callId", Flag: "call-id", Type: "string"}, - {Name: "lineOwnerId", Flag: "line-owner-id", Type: "string"}, - }}, -} - -var CallingExternalVoicemailHold = &Operation{ - ID: "CallingExternalVoicemailHold", Area: "calling", Group: "external-voicemail", Command: "hold", - Summary: "Hold", - Description: "Hold a connected call.", - Method: "POST", Path: "/telephony/calls/hold", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "callId", Flag: "call-id", Type: "string"}, - {Name: "lineOwnerId", Flag: "line-owner-id", Type: "string"}, - }}, -} - -var CallingExternalVoicemailResume = &Operation{ - ID: "CallingExternalVoicemailResume", Area: "calling", Group: "external-voicemail", Command: "resume", - Summary: "Resume", - Description: "Resume a held call.", - Method: "POST", Path: "/telephony/calls/resume", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "callId", Flag: "call-id", Type: "string"}, - {Name: "lineOwnerId", Flag: "line-owner-id", Type: "string"}, - }}, -} - -var CallingExternalVoicemailMute = &Operation{ - ID: "CallingExternalVoicemailMute", Area: "calling", Group: "external-voicemail", Command: "mute", - Summary: "Mute", - Description: "Mute a call. This API can only be used for a call that reports itself as mute capable via the muteCapable field in the call details.", - Method: "POST", Path: "/telephony/calls/mute", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "callId", Flag: "call-id", Type: "string"}, - {Name: "lineOwnerId", Flag: "line-owner-id", Type: "string"}, - }}, -} - -var CallingExternalVoicemailUnmute = &Operation{ - ID: "CallingExternalVoicemailUnmute", Area: "calling", Group: "external-voicemail", Command: "unmute", - Summary: "Unmute", - Description: "Unmute a call. This API can only be used for a call that reports itself as mute capable via the muteCapable field in the call details.", - Method: "POST", Path: "/telephony/calls/unmute", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "callId", Flag: "call-id", Type: "string"}, - {Name: "lineOwnerId", Flag: "line-owner-id", Type: "string"}, - }}, -} - -var CallingExternalVoicemailDivert = &Operation{ - ID: "CallingExternalVoicemailDivert", Area: "calling", Group: "external-voicemail", Command: "divert", - Summary: "Divert", - Description: "Divert a call to a destination or a user's voicemail. This is also commonly referred to as a Blind Transfer.", - Method: "POST", Path: "/telephony/calls/divert", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "callId", Flag: "call-id", Type: "string"}, - {Name: "destination", Flag: "destination", Type: "string"}, - {Name: "toVoicemail", Flag: "to-voicemail", Type: "bool"}, - {Name: "lineOwnerId", Flag: "line-owner-id", Type: "string"}, - }}, -} - -var CallingExternalVoicemailTransfer = &Operation{ - ID: "CallingExternalVoicemailTransfer", Area: "calling", Group: "external-voicemail", Command: "transfer", - Summary: "Transfer", - Description: "Transfer two calls together.\n\nUnanswered incoming calls cannot be transferred but can be diverted using the divert API.\n\nIf the user has only two calls and wants to transfer them together, the `callId1` and `callId2` parameters are optional and when not provided the calls are automatically selected and transferred.\n\nIf the user has more than two calls and wants to transfer two of them together, the `callId1` and `callId2` parameters are mandatory to specify which calls are being transferred. Those are also commonly referred to as Attended Transfer, Consultative Transfer, or Supervised Transfer and will return a `204` response.\n\nIf the user wants to transfer one call to a new destination but only when the destination responds, the `callId1` and destination parameters are mandatory to specify the call being transferred and the destination.\n\nThis is referred to as a Mute Transfer and is similar to the divert API with the difference of waiting for the destination to respond prior to transferring the call. If the destination does not respond, the call is not transferred. This will return a `201` response.", - Method: "POST", Path: "/telephony/calls/transfer", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "callId1", Flag: "call-id1", Type: "string"}, - {Name: "callId2", Flag: "call-id2", Type: "string"}, - {Name: "destination", Flag: "destination", Type: "string"}, - {Name: "lineOwnerId", Flag: "line-owner-id", Type: "string"}, - }}, -} - -var CallingExternalVoicemailPark = &Operation{ - ID: "CallingExternalVoicemailPark", Area: "calling", Group: "external-voicemail", Command: "park", - Summary: "Park", - Description: "Park a connected call. The number field in the response can be used as the destination for the retrieve command to retrieve the parked call.", - Method: "POST", Path: "/telephony/calls/park", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "callId", Flag: "call-id", Type: "string"}, - {Name: "destination", Flag: "destination", Type: "string"}, - {Name: "isGroupPark", Flag: "is-group-park", Type: "bool"}, - {Name: "lineOwnerId", Flag: "line-owner-id", Type: "string"}, - }}, -} - -var CallingExternalVoicemailGet = &Operation{ - ID: "CallingExternalVoicemailGet", Area: "calling", Group: "external-voicemail", Command: "get", - Summary: "Retrieve", - Description: "Retrieve a parked call. A new call is initiated to perform the retrieval in a similar manner to the dial command. The number field from the park command response can be used as the destination for the retrieve command.", - Method: "POST", Path: "/telephony/calls/retrieve", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "destination", Flag: "destination", Type: "string"}, - {Name: "endpointId", Flag: "endpoint-id", Type: "string"}, - {Name: "singleNumberReachPhoneNumber", Flag: "single-number-reach-phone-number", Type: "string"}, - {Name: "lineOwnerId", Flag: "line-owner-id", Type: "string"}, - }}, -} - -var CallingExternalVoicemailStartRecording = &Operation{ - ID: "CallingExternalVoicemailStartRecording", Area: "calling", Group: "external-voicemail", Command: "start-recording", - Summary: "Start Recording", - Description: "Start recording a call. Use of this API is only valid when the user's call recording mode is set to \"On Demand\".", - Method: "POST", Path: "/telephony/calls/startRecording", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "callId", Flag: "call-id", Type: "string"}, - {Name: "lineOwnerId", Flag: "line-owner-id", Type: "string"}, - }}, -} - -var CallingExternalVoicemailStopRecording = &Operation{ - ID: "CallingExternalVoicemailStopRecording", Area: "calling", Group: "external-voicemail", Command: "stop-recording", - Summary: "Stop Recording", - Description: "Stop recording a call. Use of this API is only valid when a call is being recorded and the user's call recording mode is set to \"On Demand\".", - Method: "POST", Path: "/telephony/calls/stopRecording", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "callId", Flag: "call-id", Type: "string"}, - {Name: "lineOwnerId", Flag: "line-owner-id", Type: "string"}, - }}, -} - -var CallingExternalVoicemailPauseRecording = &Operation{ - ID: "CallingExternalVoicemailPauseRecording", Area: "calling", Group: "external-voicemail", Command: "pause-recording", - Summary: "Pause Recording", - Description: "Pause recording on a call. Use of this API is only valid when a call is being recorded and the user's call recording mode is set to \"On Demand\" or \"Always with Pause/Resume\".", - Method: "POST", Path: "/telephony/calls/pauseRecording", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "callId", Flag: "call-id", Type: "string"}, - {Name: "lineOwnerId", Flag: "line-owner-id", Type: "string"}, - }}, -} - -var CallingExternalVoicemailResumeRecording = &Operation{ - ID: "CallingExternalVoicemailResumeRecording", Area: "calling", Group: "external-voicemail", Command: "resume-recording", - Summary: "Resume Recording", - Description: "Resume recording a call. Use of this API is only valid when a call's recording is paused and the user's call recording mode is set to \"On Demand\" or \"Always with Pause/Resume\".", - Method: "POST", Path: "/telephony/calls/resumeRecording", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "callId", Flag: "call-id", Type: "string"}, - {Name: "lineOwnerId", Flag: "line-owner-id", Type: "string"}, - }}, -} - -var CallingExternalVoicemailTransmitDtmf = &Operation{ - ID: "CallingExternalVoicemailTransmitDtmf", Area: "calling", Group: "external-voicemail", Command: "transmit-dtmf", - Summary: "Transmit DTMF", - Description: "Transmit DTMF digits to a call.", - Method: "POST", Path: "/telephony/calls/transmitDtmf", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "callId", Flag: "call-id", Type: "string"}, - {Name: "dtmf", Flag: "dtmf", Type: "string"}, - {Name: "lineOwnerId", Flag: "line-owner-id", Type: "string"}, - }}, -} - -var CallingExternalVoicemailPush = &Operation{ - ID: "CallingExternalVoicemailPush", Area: "calling", Group: "external-voicemail", Command: "push", - Summary: "Push", - Description: "Pushes a call from the assistant to the executive the call is associated with. Use of this API is only valid when the assistant's call is associated with an executive.", - Method: "POST", Path: "/telephony/calls/push", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "callId", Flag: "call-id", Type: "string"}, - {Name: "lineOwnerId", Flag: "line-owner-id", Type: "string"}, - }}, -} - -var CallingExternalVoicemailPickup = &Operation{ - ID: "CallingExternalVoicemailPickup", Area: "calling", Group: "external-voicemail", Command: "pickup", - Summary: "Pickup", - Description: "Picks up an incoming call to another user. A new call is initiated to perform the pickup in a similar manner to the dial command. When target is not present, the API pickups up a call from the user's call pickup group. When target is present, the API pickups an incoming call from the specified target user.", - Method: "POST", Path: "/telephony/calls/pickup", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "target", Flag: "target", Type: "string"}, - {Name: "endpointId", Flag: "endpoint-id", Type: "string"}, - {Name: "singleNumberReachPhoneNumber", Flag: "single-number-reach-phone-number", Type: "string"}, - {Name: "lineOwnerId", Flag: "line-owner-id", Type: "string"}, - }}, -} - -var CallingExternalVoicemailBarge = &Operation{ - ID: "CallingExternalVoicemailBarge", Area: "calling", Group: "external-voicemail", Command: "barge", - Summary: "Barge In", - Description: "Barge-in on another user's answered call. A new call is initiated to perform the barge-in in a similar manner to the dial command.", - Method: "POST", Path: "/telephony/calls/bargeIn", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "target", Flag: "target", Type: "string"}, - {Name: "endpointId", Flag: "endpoint-id", Type: "string"}, - {Name: "singleNumberReachPhoneNumber", Flag: "single-number-reach-phone-number", Type: "string"}, - {Name: "lineOwnerId", Flag: "line-owner-id", Type: "string"}, - }}, -} - -var CallingExternalVoicemailListCalls = &Operation{ - ID: "CallingExternalVoicemailListCalls", Area: "calling", Group: "external-voicemail", Command: "list-calls", - Summary: "List Calls", - Description: "Get the list of details for all active calls associated with the user.", - Method: "GET", Path: "/telephony/calls", Host: HostWebex, - Params: []Param{ - {Name: "lineOwnerId", In: InQuery, Flag: "line-owner-id", Usage: "The ID of a user, workspace, or virtual line for which there is a secondary line on a device owned by the user invoking the API."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var CallingExternalVoicemailGetCall = &Operation{ - ID: "CallingExternalVoicemailGetCall", Area: "calling", Group: "external-voicemail", Command: "get-call", - Summary: "Get Call Details", - Description: "Get the details of the specified active call for the user.", - Method: "GET", Path: "/telephony/calls/{callId}", Host: HostWebex, - Params: []Param{ - {Name: "callId", In: InPath, Flag: "call-id", Usage: "The call identifier of the call."}, - {Name: "lineOwnerId", In: InQuery, Flag: "line-owner-id", Usage: "The ID of a user, workspace, or virtual line for which there is a secondary line on a device owned by the user invoking the API."}, - }, -} - -var CallingExternalVoicemailListCallHistory = &Operation{ - ID: "CallingExternalVoicemailListCallHistory", Area: "calling", Group: "external-voicemail", Command: "list-call-history", - Summary: "List Call History", - Description: "Get the list of call history records for the user. A maximum of 20 call history records per type (`placed`, `missed`, `received`) are returned.", - Method: "GET", Path: "/telephony/calls/history", Host: HostWebex, - Params: []Param{ - {Name: "type", In: InQuery, Flag: "type", Usage: "The type of call history records to retrieve. If not specified, then all call history records are retrieved."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var CallingExternalVoicemailUpdateClearMessageWaitingIndicator = &Operation{ - ID: "CallingExternalVoicemailUpdateClearMessageWaitingIndicator", Area: "calling", Group: "external-voicemail", Command: "update-clear-message-waiting-indicator", - Summary: "Set or Clear Message Waiting Indicator (MWI) Status", - Description: "Enables an external voicemail service to SET or CLEAR the Message Waiting Indicator (MWI) for a person or workspace.\n\nInvoke the API using a bearer token from a Service App in the target organization, created by a full admin with the scope `spark-admin:calls_write`.\n\nSpecify the target user or workspace with the required `id` query parameter.\n\nOptionally, use the orgId parameter to indicate the organization; if omitted, the Service App’s organization is used.\n\nIf `orgId` is provided, it must match the Service App’s organization or be a managed organization.\n\nSet the desired action (SET or CLEAR) in the message body’s action field.\n\nLearn more about [using Webex Service Apps](https://developer.webex.com/messaging/docs/service-apps).", - Method: "POST", Path: "/telephony/externalVoicemail/mwi", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InQuery, Flag: "id", Usage: "Unique identifier for the user or workspace."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Id of the organization to which the user or workspace belongs. If not provided, the orgId of the Service App is used. If provided, the organization must be the same as or managed by the Service App's organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "action", Flag: "action", Type: "string"}, - }}, -} - -var CallingExternalVoicemailPull = &Operation{ - ID: "CallingExternalVoicemailPull", Area: "calling", Group: "external-voicemail", Command: "pull", - Summary: "Pull", - Description: "Pull a call from one device to another. A temporary new call is initiated to perform the call pull in a similar manner to the dial command. When a user answers an alerting device, the device is connected to the pulled call and the new call created for the call pull is released.", - Method: "POST", Path: "/telephony/calls/pull", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "endpointId", Flag: "endpoint-id", Type: "string"}, - {Name: "lineOwnerId", Flag: "line-owner-id", Type: "string"}, - }}, -} - -var CallingCallerReputationProviderGetSettings = &Operation{ - ID: "CallingCallerReputationProviderGetSettings", Area: "calling", Group: "caller-reputation-provider", Command: "get-settings", - Summary: "Get Caller Reputation Provider Service Settings", - Description: "Retrieves the configuration and status of the caller reputation provider service for Webex Calling.", - Method: "GET", Path: "/telephony/config/serviceSettings/callerReputationProvider", Host: HostWebex, - Params: []Param{ - {Name: "organizationId", In: InQuery, Flag: "organization-id", Usage: "Unique identifier for the organization."}, - }, -} - -var CallingCallerReputationProviderUpdateSettings = &Operation{ - ID: "CallingCallerReputationProviderUpdateSettings", Area: "calling", Group: "caller-reputation-provider", Command: "update-settings", - Summary: "Update Caller Reputation Provider Service Settings", - Description: "Updates the configuration of the caller reputation provider service for Webex Calling.", - Method: "PUT", Path: "/telephony/config/serviceSettings/callerReputationProvider", Host: HostWebex, - Params: []Param{ - {Name: "organizationId", In: InQuery, Flag: "organization-id", Usage: "Unique identifier for the organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "enabled", Flag: "enabled", Type: "bool"}, - {Name: "id", Flag: "id", Type: "string"}, - {Name: "name", Flag: "name", Type: "string"}, - {Name: "clientId", Flag: "client-id", Type: "string"}, - {Name: "clientSecret", Flag: "client-secret", Type: "string"}, - {Name: "callBlockScoreThreshold", Flag: "call-block-score-threshold", Type: "string"}, - {Name: "callAllowScoreThreshold", Flag: "call-allow-score-threshold", Type: "string"}, - }}, -} - -var CallingCallerReputationProviderGetStatus = &Operation{ - ID: "CallingCallerReputationProviderGetStatus", Area: "calling", Group: "caller-reputation-provider", Command: "get-status", - Summary: "Get Caller Reputation Provider Status", - Description: "Retrieves the current status of the caller reputation provider integration for Webex Calling.", - Method: "GET", Path: "/telephony/config/serviceSettings/callerReputationProvider/status", Host: HostWebex, - Params: []Param{ - {Name: "organizationId", In: InQuery, Flag: "organization-id", Usage: "Unique identifier for the organization."}, - }, -} - -var CallingCallerReputationProviderUnlock = &Operation{ - ID: "CallingCallerReputationProviderUnlock", Area: "calling", Group: "caller-reputation-provider", Command: "unlock", - Summary: "Unlock Caller Reputation Provider", - Description: "Unlocks the caller reputation provider for Webex Calling.", - Method: "POST", Path: "/telephony/config/serviceSettings/callerReputationProvider/actions/unlock/invoke", Host: HostWebex, - Params: []Param{ - {Name: "organizationId", In: InQuery, Flag: "organization-id", Usage: "Unique identifier for the organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "id", Flag: "id", Type: "string"}, - }}, -} - -var CallingCallerReputationProviderGet = &Operation{ - ID: "CallingCallerReputationProviderGet", Area: "calling", Group: "caller-reputation-provider", Command: "get", - Summary: "Get Caller Reputation Provider Providers", - Description: "Retrieves the list of available caller reputation providers and their regions for Webex Calling.", - Method: "GET", Path: "/telephony/config/serviceSettings/callerReputationProvider/providers", Host: HostWebex, - Params: []Param{ - {Name: "organizationId", In: InQuery, Flag: "organization-id", Usage: "Unique identifier for the organization."}, - }, -} - -var CallingModeManagementGetFeatures = &Operation{ - ID: "CallingModeManagementGetFeatures", Area: "calling", Group: "mode-management", Command: "get-features", - Summary: "Get Mode Management Features", - Description: "Retrieves a list of all mode management features (Auto Attendants, Call Queues, and Hunt Groups) for which the authenticated user has been designated as a mode manager. This API returns basic information about each feature including its ID, name, and type.\n\nMode Management allows designated managers to switch features between different operational configurations based on time schedules or manual triggers. This is useful for managing business hours, holidays, and emergency scenarios.\n\nThis API requires a user auth token with the `spark:telephony_config_read` scope. The authenticated user must be configured as a mode manager for at least one feature to receive results.", - Method: "GET", Path: "/telephony/config/people/me/settings/modeManagement/features", Host: HostWebex, -} - -var CallingModeManagementGetCommon = &Operation{ - ID: "CallingModeManagementGetCommon", Area: "calling", Group: "mode-management", Command: "get-common", - Summary: "Get Common Modes", - Description: "Retrieves a list of common operating mode names that are shared across multiple specified features. This API accepts a list of feature IDs and returns only the mode names that exist in all of the specified features, allowing managers to switch multiple features to the same mode simultaneously.\n\nCommon modes are useful when you need to coordinate operational changes across multiple features. For example, switching an entire office to \"Holiday\" mode across all Auto Attendants and Call Queues at once.\n\nThis API requires a user auth token with the `spark:telephony_config_read` scope. The authenticated user must be a mode manager for the specified features.", - Method: "GET", Path: "/telephony/config/people/me/settings/modeManagement/features/commonModes", Host: HostWebex, - Params: []Param{ - {Name: "featureIds", In: InQuery, Flag: "feature-ids", Usage: "List of feature IDs (comma-separated) for auto attendants, call queues, or hunt groups"}, - }, -} - -var CallingModeManagementSwitchMultipleFeatures = &Operation{ - ID: "CallingModeManagementSwitchMultipleFeatures", Area: "calling", Group: "mode-management", Command: "switch-multiple-features", - Summary: "Switch Mode for Multiple Features", - Description: "Switches the operating mode for multiple features simultaneously by specifying a common mode name. This API accepts a list of feature IDs and sets all of them to the specified operating mode, provided that mode exists for all features.\n\nThis bulk operation is particularly useful for coordinating operational changes across an organization, such as activating holiday modes, emergency procedures, or after-hours configurations across multiple Auto Attendants, Call Queues, and Hunt Groups at once.\n\nThis API requires a user auth token with the `spark:telephony_config_write` scope. The authenticated user must be a mode manager for all specified features.", - Method: "POST", Path: "/telephony/config/people/me/settings/modeManagement/features/actions/switchMode/invoke", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "featureIds", Flag: "feature-ids", Type: "[]string"}, - {Name: "operatingModeName", Flag: "operating-mode-name", Type: "string"}, - }}, -} - -var CallingModeManagementGetFeature = &Operation{ - ID: "CallingModeManagementGetFeature", Area: "calling", Group: "mode-management", Command: "get-feature", - Summary: "Get Mode Management Feature", - Description: "Retrieves detailed information about a specific mode management feature including its current operating mode and exception status. This API provides the feature's ID, name, type, current operating mode ID, and whether it is currently in an exception mode.\n\nException mode indicates that the feature has been manually switched to a different mode than what its schedule dictates. This information is critical for mode managers to understand the current state of their features.\n\nThis API requires a user auth token with the `spark:telephony_config_read` scope. The authenticated user must be a mode manager for the specified feature.", - Method: "GET", Path: "/telephony/config/people/me/settings/modeManagement/features/{featureId}", Host: HostWebex, - Params: []Param{ - {Name: "featureId", In: InPath, Flag: "feature-id", Usage: "Unique identifier for the feature."}, - }, -} - -var CallingModeManagementGetNormalOperation = &Operation{ - ID: "CallingModeManagementGetNormalOperation", Area: "calling", Group: "mode-management", Command: "get-normal-operation", - Summary: "Get Normal Operation Mode", - Description: "Retrieves the current normal operating mode that the feature is scheduled to be in based on its time schedules. This represents the mode the feature would be in if no manual exceptions or overrides were active.\n\nThe normal operation mode is determined by the feature's configured schedules and may differ from the actual current operating mode if a manual exception has been applied. This API helps managers understand what the scheduled behavior is versus the actual current state.\n\nThis API requires a user auth token with the `spark:telephony_config_read` scope. The authenticated user must be a mode manager for the specified feature.", - Method: "GET", Path: "/telephony/config/people/me/settings/modeManagement/features/{featureId}/normalOperationMode", Host: HostWebex, - Params: []Param{ - {Name: "featureId", In: InPath, Flag: "feature-id", Usage: "Unique identifier for the feature."}, - }, -} - -var CallingModeManagementGetOperating = &Operation{ - ID: "CallingModeManagementGetOperating", Area: "calling", Group: "mode-management", Command: "get-operating", - Summary: "Get Operating Mode", - Description: "Retrieves detailed information about a specific operating mode for a feature, including the mode's ID and name. This API allows managers to get the details of any operating mode configured for a feature.\n\nOperating modes define different configurations for how a feature behaves (e.g., business hours routing vs. after-hours routing). Each mode has a unique ID and a descriptive name that helps managers identify its purpose.\n\nThis API requires a user auth token with the `spark:telephony_config_read` scope. The authenticated user must be a mode manager for the specified feature.", - Method: "GET", Path: "/telephony/config/people/me/settings/modeManagement/features/{featureId}/modes/{modeId}", Host: HostWebex, - Params: []Param{ - {Name: "featureId", In: InPath, Flag: "feature-id", Usage: "Unique identifier for the feature."}, - {Name: "modeId", In: InPath, Flag: "mode-id", Usage: "Unique identifier for the operating mode."}, - }, -} - -var CallingModeManagementSwitchNormalOperation = &Operation{ - ID: "CallingModeManagementSwitchNormalOperation", Area: "calling", Group: "mode-management", Command: "switch-normal-operation", - Summary: "Switch to Normal Operation", - Description: "Switches the feature back to its normal scheduled operation mode, removing any manual exceptions or overrides that may be active. This returns the feature to operating according to its configured time schedules.\n\nThis operation is useful when a temporary manual mode change (exception) is no longer needed and you want to restore automatic schedule-based operation. It effectively cancels any active manual mode switches.\n\nThis API requires a user auth token with the `spark:telephony_config_write` scope. The authenticated user must be a mode manager for the specified feature.", - Method: "POST", Path: "/telephony/config/people/me/settings/modeManagement/features/{featureId}/actions/switchToNormalOperation/invoke", Host: HostWebex, - Params: []Param{ - {Name: "featureId", In: InPath, Flag: "feature-id", Usage: "Unique identifier for the feature."}, - }, -} - -var CallingModeManagementSwitchSingleFeature = &Operation{ - ID: "CallingModeManagementSwitchSingleFeature", Area: "calling", Group: "mode-management", Command: "switch-single-feature", - Summary: "Switch Mode for Single Feature", - Description: "Switches the operating mode for a single feature to a specified mode, either temporarily or with manual switchback. This API creates an exception to the feature's normal scheduled operation, allowing managers to manually control the feature's behavior.\n\nYou can configure whether the mode switch is temporary (automatically reverts based on schedule) or requires manual switchback. This is useful for handling unexpected situations like emergency closures, special events, or unscheduled breaks.\n\nThis API requires a user auth token with the `spark:telephony_config_write` scope. The authenticated user must be a mode manager for the specified feature.", - Method: "POST", Path: "/telephony/config/people/me/settings/modeManagement/features/{featureId}/actions/switchMode/invoke", Host: HostWebex, - Params: []Param{ - {Name: "featureId", In: InPath, Flag: "feature-id", Usage: "Unique identifier for the feature."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "operatingModeId", Flag: "operating-mode-id", Type: "string"}, - {Name: "isManualSwitchbackEnabled", Flag: "is-manual-switchback-enabled", Type: "bool"}, - }}, -} - -var CallingModeManagementExtendCurrentOperatingDuration = &Operation{ - ID: "CallingModeManagementExtendCurrentOperatingDuration", Area: "calling", Group: "mode-management", Command: "extend-current-operating-duration", - Summary: "Extend Current Operating Mode Duration", - Description: "Extends the duration of the current operating mode by adding additional time before it expires or reverts to scheduled operation. This API allows managers to prolong a temporary mode change without having to switch modes again.\n\nExtension time can be specified in 30-minute increments up to 720 minutes (12 hours). If no extension time is provided, the mode is extended with a manual switchback exception, meaning it will remain active until manually changed.\n\nThis API requires a user auth token with the `spark:telephony_config_write` scope. The authenticated user must be a mode manager for the specified feature.", - Method: "POST", Path: "/telephony/config/people/me/settings/modeManagement/features/{featureId}/actions/extendMode/invoke", Host: HostWebex, - Params: []Param{ - {Name: "featureId", In: InPath, Flag: "feature-id", Usage: "Unique identifier for the feature."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "operatingModeId", Flag: "operating-mode-id", Type: "string"}, - {Name: "extensionTime", Flag: "extension-time", Type: "int64"}, - }}, -} - -var CallingCustomerAssistListWrapUpReasons = &Operation{ - ID: "CallingCustomerAssistListWrapUpReasons", Area: "calling", Group: "customer-assist", Command: "list-wrap-up-reasons", - Summary: "List Wrap Up Reasons", - Description: "Return the list of wrap-up reasons configured for a customer.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues. Upon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue. Admins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nRetrieving the list of wrap-up reasons requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/cxEssentials/wrapup/reasons", Host: HostWebex, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var CallingCustomerAssistCreateWrapUpReason = &Operation{ - ID: "CallingCustomerAssistCreateWrapUpReason", Area: "calling", Group: "customer-assist", Command: "create-wrap-up-reason", - Summary: "Create Wrap Up Reason", - Description: "Create a wrap-up reason.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues.\nUpon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue.\nAdmins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nCreating a wrap-up reason requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/cxEssentials/wrapup/reasons", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "name", Flag: "name", Type: "string"}, - {Name: "description", Flag: "description", Type: "string"}, - {Name: "queues", Flag: "queues", Type: "[]string"}, - {Name: "assignAllQueuesEnabled", Flag: "assign-all-queues-enabled", Type: "bool"}, - }}, -} - -var CallingCustomerAssistGetWrapUpReason = &Operation{ - ID: "CallingCustomerAssistGetWrapUpReason", Area: "calling", Group: "customer-assist", Command: "get-wrap-up-reason", - Summary: "Read Wrap Up Reason", - Description: "Return the wrap-up reason by ID.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues.\nUpon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue.\nAdmins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nRetrieving the wrap-up reason by ID requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/cxEssentials/wrapup/reasons/{wrapupReasonId}", Host: HostWebex, - Params: []Param{ - {Name: "wrapupReasonId", In: InPath, Flag: "wrapup-reason-id", Usage: "Wrap-up reason ID."}, - }, -} - -var CallingCustomerAssistUpdateWrapUpReason = &Operation{ - ID: "CallingCustomerAssistUpdateWrapUpReason", Area: "calling", Group: "customer-assist", Command: "update-wrap-up-reason", - Summary: "Update Wrap Up Reason", - Description: "Modify a wrap-up reason.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues.\nUpon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue.\nAdmins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nModifying a wrap-up reason requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/cxEssentials/wrapup/reasons/{wrapupReasonId}", Host: HostWebex, - Params: []Param{ - {Name: "wrapupReasonId", In: InPath, Flag: "wrapup-reason-id", Usage: "Wrap-up reason ID."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "name", Flag: "name", Type: "string"}, - {Name: "description", Flag: "description", Type: "string"}, - {Name: "queuesToAssign", Flag: "queues-to-assign", Type: "[]string"}, - {Name: "queuesToUnassign", Flag: "queues-to-unassign", Type: "[]string"}, - {Name: "assignAllQueuesEnabled", Flag: "assign-all-queues-enabled", Type: "bool"}, - {Name: "unassignAllQueuesEnabled", Flag: "unassign-all-queues-enabled", Type: "bool"}, - }}, -} - -var CallingCustomerAssistDeleteWrapUpReason = &Operation{ - ID: "CallingCustomerAssistDeleteWrapUpReason", Area: "calling", Group: "customer-assist", Command: "delete-wrap-up-reason", - Summary: "Delete Wrap Up Reason", - Description: "Delete a wrap-up reason.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues.\nUpon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue.\nAdmins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nDeleting the wrap-up reason requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/cxEssentials/wrapup/reasons/{wrapupReasonId}", Host: HostWebex, - Params: []Param{ - {Name: "wrapupReasonId", In: InPath, Flag: "wrapup-reason-id", Usage: "Wrap-up reason ID."}, - }, -} - -var CallingCustomerAssistValidateWrapUpReason = &Operation{ - ID: "CallingCustomerAssistValidateWrapUpReason", Area: "calling", Group: "customer-assist", Command: "validate-wrap-up-reason", - Summary: "Validate Wrap Up Reason", - Description: "Validate the wrap-up reason name.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues.\nUpon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue.\nAdmins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nValidating the wrap-up reason name requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/cxEssentials/wrapup/reasons/actions/validateName/invoke", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "name", Flag: "name", Type: "string"}, - }}, -} - -var CallingCustomerAssistGetAvailableQueues = &Operation{ - ID: "CallingCustomerAssistGetAvailableQueues", Area: "calling", Group: "customer-assist", Command: "get-available-queues", - Summary: "Read Available Queues", - Description: "Return the available queues for a wrap-up reason.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues.\nUpon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue.\nAdmins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nRetrieving the available queues for a wrap-up reason requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/cxEssentials/wrapup/reasons/{wrapupReasonId}/availableQueues", Host: HostWebex, - Params: []Param{ - {Name: "wrapupReasonId", In: InPath, Flag: "wrapup-reason-id", Usage: "Wrap-up reason ID."}, - }, -} - -var CallingCustomerAssistGetWrapUpReasonSettings = &Operation{ - ID: "CallingCustomerAssistGetWrapUpReasonSettings", Area: "calling", Group: "customer-assist", Command: "get-wrap-up-reason-settings", - Summary: "Read Wrap Up Reason Settings", - Description: "Return a wrap-up reason by location ID and queue ID.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues.\nUpon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue.\nAdmins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nRetrieving the wrap-up reason by location ID and queue ID requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/cxEssentials/locations/{locationId}/queues/{queueId}/wrapup/settings", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "The location ID."}, - {Name: "queueId", In: InPath, Flag: "queue-id", Usage: "The queue ID."}, - }, -} - -var CallingCustomerAssistUpdateWrapUpReasonSettings = &Operation{ - ID: "CallingCustomerAssistUpdateWrapUpReasonSettings", Area: "calling", Group: "customer-assist", Command: "update-wrap-up-reason-settings", - Summary: "Update Wrap Up Reason Settings", - Description: "Modify a wrap-up reason by location ID and queue ID.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues.\nUpon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue.\nAdmins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nModifying a wrap-up reason by location ID and queue ID requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/cxEssentials/locations/{locationId}/queues/{queueId}/wrapup/settings", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "The location ID."}, - {Name: "queueId", In: InPath, Flag: "queue-id", Usage: "The queue ID."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "wrapupReasons", Flag: "wrapup-reasons", Type: "[]string"}, - {Name: "defaultWrapupReasonId", Flag: "default-wrapup-reason-id", Type: "string"}, - {Name: "wrapupTimerEnabled", Flag: "wrapup-timer-enabled", Type: "bool"}, - {Name: "wrapupTimer", Flag: "wrapup-timer", Type: "int64"}, - }}, -} - -var CallingCustomerAssistGetScreenPopConfiguration = &Operation{ - ID: "CallingCustomerAssistGetScreenPopConfiguration", Area: "calling", Group: "customer-assist", Command: "get-screen-pop-configuration", - Summary: "Read Screen Pop Configuration", - Description: "Returns the screen pop configuration for a call queue in a location.\n\nScreen pop lets agents view customer-related info in a pop-up window.\n\nRetrieving the screen pop configuration requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/queues/{queueId}/cxEssentials/screenPop", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "The location ID where the call queue resides."}, - {Name: "queueId", In: InPath, Flag: "queue-id", Usage: "The call queue ID for which screen pop configuration is modified."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "The organization ID of the customer or partner's organization."}, - }, -} - -var CallingCustomerAssistUpdateScreenPopConfiguration = &Operation{ - ID: "CallingCustomerAssistUpdateScreenPopConfiguration", Area: "calling", Group: "customer-assist", Command: "update-screen-pop-configuration", - Summary: "Update Screen Pop Configuration", - Description: "Modifies the screen pop configuration for a call queue in a location.\n\nScreen pop lets agents view customer-related info in a pop-up window.\n\nModifying the screen pop configuration requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/locations/{locationId}/queues/{queueId}/cxEssentials/screenPop", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "The location ID where the call queue resides."}, - {Name: "queueId", In: InPath, Flag: "queue-id", Usage: "The call queue ID for which screen pop configuration is modified."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "The organization ID of the customer or partner's organization."}, - }, - Body: &Body{}, -} - -var CallingCustomerAssistListAvailableAgents = &Operation{ - ID: "CallingCustomerAssistListAvailableAgents", Area: "calling", Group: "customer-assist", Command: "list-available-agents", - Summary: "List Available Agents", - Description: "Return a list of available agents with Customer Assist license in a location.\n\nRetrieving the list of available agents requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/cxEssentials/agents/availableAgents", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Retrieve the list of avaiilable agents in this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "The organization ID of the customer or partner's organization."}, - {Name: "hasCxEssentials", In: InQuery, Flag: "has-cx-essentials", Usage: "Returns only the list of available agents with Customer Assist license when `true`, otherwise returns the list of available agents with Customer Experience Basic license."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var CallingMetricsGetCallQualityStats = &Operation{ - ID: "CallingMetricsGetCallQualityStats", Area: "calling", Group: "metrics", Command: "get-call-quality-stats", - Summary: "Webex Calling Call Quality Stats", - Description: "Returns aggregated Webex Calling call and media-quality statistics for the authenticated organization. A call or media session is classified as good quality when all available audio and video quality measurements meet their defined thresholds. Missing individual quality measurements do not cause the call or session to be classified as poor quality.\n\nYou can query data for a time range of up to seven days within the previous 3 weeks. For older historical data, use the Webex Calling Media Quality dashboard or reports. For more information on Media Quality KPI definitions, [click here](https://help.webex.com/en-us/article/n0rlwxe/Analytics-for-Your-Cloud-Collaboration-Portfolio#Cisco_Concept.dita_7609f9dc-3b80-4c0f-9456-5aaa385c4e27).\n\nThis operation requires a Pro Pack for Control Hub license. The access token must include the analytics:read_all scope and represent either a full administrator or read-only administrator. The organization is derived from the access token.\n\n
The base URL for these APIs is **analytics.webexapis.com**, which does not work with the **Try It** feature.
", - Method: "GET", Path: "/v1/analytics/callQualityStats", Host: HostAnalytics, - Params: []Param{ - {Name: "from", In: InQuery, Flag: "from", Usage: "Inclusive UTC start time in yyyy-MM-ddTHH:mm:ssZ format. If omitted while to is provided, it is seven days before the effective to time. If both times are omitted, it is seven days before the current time."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "Exclusive UTC end time in yyyy-MM-ddTHH:mm:ssZ format. A value later than the current time is clamped to the current time. If omitted while from is provided, it is the earlier of seven days after from and the current time. If both times are omitted, it is the current time."}, - {Name: "location", In: InQuery, Flag: "location", Usage: "Exact Webex Calling location name. Omit it or provide an empty value to include all locations."}, - }, - TimeRange: TimeISO, -} - -var callingGroups = []Group{ - {Name: "dect-devices", Summary: "DectDevices commands"}, - {Name: "call-controls", Summary: "CallControls commands"}, - {Name: "call-controls-for-me", Summary: "CallControlsForMe commands"}, - {Name: "call-routing", Summary: "CallRouting commands"}, - {Name: "location-call", Summary: "LocationCall commands"}, - {Name: "call-settings-for-me", Summary: "CallSettingsForMe commands"}, - {Name: "calling-service", Summary: "CallingService commands"}, - {Name: "client-call", Summary: "ClientCall commands"}, - {Name: "conference-controls", Summary: "ConferenceControls commands"}, - {Name: "converged-recordings", Summary: "ConvergedRecordings commands"}, - {Name: "device-call", Summary: "DeviceCall commands"}, - {Name: "devices", Summary: "Devices commands"}, - {Name: "emergency-services", Summary: "EmergencyServices commands"}, - {Name: "announcement-playlist", Summary: "AnnouncementPlaylist commands"}, - {Name: "announcement-repository", Summary: "AnnouncementRepository commands"}, - {Name: "auto-attendant", Summary: "AutoAttendant commands"}, - {Name: "call-park", Summary: "CallPark commands"}, - {Name: "call-pickup", Summary: "CallPickup commands"}, - {Name: "call-queue", Summary: "CallQueue commands"}, - {Name: "call-recording", Summary: "CallRecording commands"}, - {Name: "customer-experience-essentials", Summary: "CustomerExperienceEssentials commands"}, - {Name: "hot-desking-sign-in-via-voice-portal", Summary: "HotDeskingSignInViaVoicePortal commands"}, - {Name: "hunt-group", Summary: "HuntGroup commands"}, - {Name: "operating-modes", Summary: "OperatingModes commands"}, - {Name: "paging-group", Summary: "PagingGroup commands"}, - {Name: "single-number-reach", Summary: "SingleNumberReach commands"}, - {Name: "virtual-extensions", Summary: "VirtualExtensions commands"}, - {Name: "hot-desk", Summary: "HotDesk commands"}, - {Name: "location-call-handling", Summary: "LocationCallHandling commands"}, - {Name: "location-schedules", Summary: "LocationSchedules commands"}, - {Name: "location-voicemail", Summary: "LocationVoicemail commands"}, - {Name: "locations", Summary: "Locations commands"}, - {Name: "numbers", Summary: "Numbers commands"}, - {Name: "partner-reports-templates", Summary: "PartnerReportsTemplates commands"}, - {Name: "people", Summary: "People commands"}, - {Name: "pstn", Summary: "Pstn commands"}, - {Name: "recording-report", Summary: "RecordingReport commands"}, - {Name: "reports", Summary: "Reports commands"}, - {Name: "reports-detailed-call-history", Summary: "ReportsDetailedCallHistory commands"}, - {Name: "send-activation-email", Summary: "SendActivationEmail commands"}, - {Name: "user-call", Summary: "UserCall commands"}, - {Name: "virtual-line-call", Summary: "VirtualLineCall commands"}, - {Name: "workspace-call", Summary: "WorkspaceCall commands"}, - {Name: "workspaces", Summary: "Workspaces commands"}, - {Name: "external-voicemail", Summary: "ExternalVoicemail commands"}, - {Name: "caller-reputation-provider", Summary: "CallerReputationProvider commands"}, - {Name: "mode-management", Summary: "ModeManagement commands"}, - {Name: "customer-assist", Summary: "CustomerAssist commands"}, - {Name: "metrics", Summary: "Metrics commands"}, -} - -var callingOperations = []*Operation{ - CallingDectDevicesCreateNetwork, - CallingDectDevicesListNetworks, - CallingDectDevicesGetNetwork, - CallingDectDevicesUpdateNetwork, - CallingDectDevicesDeleteNetwork, - CallingDectDevicesCreateMultipleBaseStations, - CallingDectDevicesListNetworkBaseStations, - CallingDectDevicesDeleteBulkNetworkBaseStations, - CallingDectDevicesGetNetworkBaseStation, - CallingDectDevicesDeleteNetworkBaseStation, - CallingDectDevicesCreateHandsetNetwork, - CallingDectDevicesListHandsetsNetworkId, - CallingDectDevicesGetNetworkHandset, - CallingDectDevicesUpdateNetworkHandset, - CallingDectDevicesDeleteNetworkHandset, - CallingDectDevicesDeleteMultipleHandsets, - CallingDectDevicesCreateListHandsetsNetwork, - CallingDectDevicesListNetworksAssociatedPerson, - CallingDectDevicesListNetworksAssociatedWorkspace, - CallingDectDevicesSearchAvailableMembers, - CallingDectDevicesGenerateEnableServicePassword, - CallingDectDevicesGetServicePasswordStatus, - CallingDectDevicesUpdateServicePasswordStatus, - CallingCallControlsDial, - CallingCallControlsAnswer, - CallingCallControlsReject, - CallingCallControlsHangup, - CallingCallControlsHold, - CallingCallControlsResume, - CallingCallControlsMute, - CallingCallControlsUnmute, - CallingCallControlsDivert, - CallingCallControlsTransfer, - CallingCallControlsPark, - CallingCallControlsGet, - CallingCallControlsStartRecording, - CallingCallControlsStopRecording, - CallingCallControlsPauseRecording, - CallingCallControlsResumeRecording, - CallingCallControlsTransmitDtmf, - CallingCallControlsPush, - CallingCallControlsPickup, - CallingCallControlsBarge, - CallingCallControlsList, - CallingCallControlsGet2, - CallingCallControlsListHistory, - CallingCallControlsDialMemberId, - CallingCallControlsAnswerMemberId, - CallingCallControlsHangupMemberId, - CallingCallControlsListMemberId, - CallingCallControlsGetMemberId, - CallingCallControlsPull, - CallingCallControlsForMeDial, - CallingCallControlsForMeAnswer, - CallingCallControlsForMeHangup, - CallingCallControlsForMeList, - CallingCallControlsForMeGet, - CallingCallRoutingTest, - CallingCallRoutingGetLgwDialPlanUsageTrunk, - CallingCallRoutingGetLocationsLgwPstnConnection, - CallingCallRoutingGetRouteGroupsLgw, - CallingCallRoutingGetLgwUsageCount, - CallingCallRoutingUpdateDialPatterns, - CallingCallRoutingValidateDialPattern, - CallingCallRoutingListDialPlans, - CallingCallRoutingCreateDialPlan, - CallingCallRoutingGetDialPlan, - CallingCallRoutingUpdateDialPlan, - CallingCallRoutingDeleteDialPlan, - CallingCallRoutingValidateLgwFqdnDomainTrunk, - CallingCallRoutingListTrunks, - CallingCallRoutingCreateTrunk, - CallingCallRoutingGetTrunk, - CallingCallRoutingUpdateTrunk, - CallingCallRoutingDeleteTrunk, - CallingCallRoutingListTrunkTypes, - CallingCallRoutingListGroups, - CallingCallRoutingCreateRouteGroup, - CallingCallRoutingGetRouteGroup, - CallingCallRoutingUpdateRouteGroup, - CallingCallRoutingDeleteRouteGroupOrg, - CallingCallRoutingGetUsageGroup, - CallingCallRoutingGetExtensionLocationsGroup, - CallingCallRoutingGetDialPlanLocationsGroup, - CallingCallRoutingGetPstnConnectionLocationsGroup, - CallingCallRoutingGetRouteListsGroup, - CallingCallRoutingListRouteLists, - CallingCallRoutingCreateRouteList, - CallingCallRoutingDeleteRouteList, - CallingCallRoutingGetRouteList, - CallingCallRoutingUpdateRouteList, - CallingCallRoutingUpdateNumbersRouteList, - CallingCallRoutingGetNumbersAssignedRouteList, - CallingCallRoutingGetLgwOnPremisesExtensionUsageTrunk, - CallingCallRoutingCreateTranslationPattern, - CallingCallRoutingListTranslationPatterns, - CallingCallRoutingGetTranslationPattern, - CallingCallRoutingUpdateTranslationPattern, - CallingCallRoutingDeleteTranslationPattern, - CallingCallRoutingCreateTranslationPatternLocation, - CallingCallRoutingGetTranslationPatternLocation, - CallingCallRoutingUpdateTranslationPatternLocation, - CallingCallRoutingDeleteTranslationPatternLocation, - CallingLocationCallListDialPatterns, - CallingLocationCallListWebexCalling, - CallingLocationCallEnableWebexCalling, - CallingLocationCallGetWebexCalling, - CallingLocationCallUpdateWebexCalling, - CallingLocationCallListUpdateRoutingPrefixJobs, - CallingLocationCallGetJobStatusUpdateRoutingPrefixJob, - CallingLocationCallGetJobErrorsUpdateRoutingPrefixJob, - CallingLocationCallUpdateAnnouncementLanguage, - CallingLocationCallGetEmergencyCallback, - CallingLocationCallUpdateEmergencyCallback, - CallingLocationCallValidateListExtensions, - CallingLocationCallValidateExtensions, - CallingLocationCallUpdateMusicHold, - CallingLocationCallGetMusicHold, - CallingLocationCallGetPrivateNetworkConnect, - CallingLocationCallUpdatePrivateNetworkConnect, - CallingLocationCallListRoutingChoices, - CallingLocationCallListPhoneNumbersAvailableExternalCallerId, - CallingLocationCallGetAvailableNumbers, - CallingLocationCallGetWebexGoAvailableNumbers, - CallingLocationCallGetEcbnAvailableNumbers, - CallingLocationCallGetInterceptAvailableNumbers, - CallingLocationCallCreateReceptionistContactDirectory, - CallingLocationCallListReceptionistContactDirectories, - CallingLocationCallGetReceptionistContactDirectory, - CallingLocationCallDeleteReceptionistContactDirectory, - CallingLocationCallUpdateReceptionistContactDirectory, - CallingLocationCallGetAvailableChargeNumbers, - CallingLocationCallDisableWebexCalling, - CallingLocationCallListDisableCallingJobs, - CallingLocationCallCheckDeleteCheckDisablingWebexCalling, - CallingLocationCallPauseDisableCallingJob, - CallingLocationCallResumePausedDisableCallingJob, - CallingLocationCallGetErrorsDisableCallingJob, - CallingLocationCallGetDisableCallingJobStatus, - CallingLocationCallGetCaptionsSettings, - CallingLocationCallUpdateCaptionsSettings, - CallingCallSettingsForMeGetMyPersonalAssistant, - CallingCallSettingsForMeUpdateMyPersonalAssistant, - CallingCallSettingsForMeListAvailablePreferredEndpoints, - CallingCallSettingsForMeGetMySecondaryOwnerAvailablePreferredEndpointList, - CallingCallSettingsForMeGetPreferredEndpoint, - CallingCallSettingsForMeUpdatePreferredEndpoint, - CallingCallSettingsForMeGetMySecondaryOwnerPreferredEndpoint, - CallingCallSettingsForMeUpdateMySecondaryOwnerPreferredEndpoint, - CallingCallSettingsForMeGetMyWebexgooverride, - CallingCallSettingsForMeUpdateMyWebexgooverride, - CallingCallSettingsForMeGetMyCallerId, - CallingCallSettingsForMeUpdateMyCallerId, - CallingCallSettingsForMeGetMySecondaryOwnerCallerId, - CallingCallSettingsForMeUpdateMySecondaryOwnerCallerId, - CallingCallSettingsForMeGetMySelectedCallerId, - CallingCallSettingsForMeUpdateMySelectedCallerId, - CallingCallSettingsForMeGetMySecondaryOwnerSelectedCallerId, - CallingCallSettingsForMeUpdateMySecondaryOwnerSelectedCallerId, - CallingCallSettingsForMeGetMyAvailableCallerIdList, - CallingCallSettingsForMeGetMySecondaryOwnerAvailableCallerIdList, - CallingCallSettingsForMeListMyEndpoints, - CallingCallSettingsForMeGetMyEndpoints, - CallingCallSettingsForMeUpdateMyEndpoints, - CallingCallSettingsForMeGetMyRecording, - CallingCallSettingsForMeGetMySecondaryOwnerRecording, - CallingCallSettingsForMeGetMyOwn, - CallingCallSettingsForMeGetMyAccessCodes, - CallingCallSettingsForMeGetMyAccessCodesSecondaryOwner, - CallingCallSettingsForMeGetMyExecutiveAssignedAssistants, - CallingCallSettingsForMeUpdateMyExecutiveAssignedAssistants, - CallingCallSettingsForMeGetMyExecutiveAvailableAssistants, - CallingCallSettingsForMeGetMyExecutiveAssistant, - CallingCallSettingsForMeUpdateMyExecutiveAssistant, - CallingCallSettingsForMeGetMyCallingServices, - CallingCallSettingsForMeGetMySecondaryOwnerCallingServices, - CallingCallSettingsForMeGetUserSingleNumberReach, - CallingCallSettingsForMeUpdateUserSingleNumberReach, - CallingCallSettingsForMeCreatePhoneNumberUserSingleNumberReach, - CallingCallSettingsForMeUpdateUserSingleNumberReachContact, - CallingCallSettingsForMeDeleteUserSingleNumberReachContact, - CallingCallSettingsForMeGetMyForward, - CallingCallSettingsForMeUpdateMyForward, - CallingCallSettingsForMeGetMySecondaryOwnerForward, - CallingCallSettingsForMeUpdateMySecondaryOwnerForward, - CallingCallSettingsForMeGetMyPickupGroup, - CallingCallSettingsForMeGetMySecondaryOwnerPickupGroup, - CallingCallSettingsForMeGetMyPark, - CallingCallSettingsForMeGetMySecondaryOwnerPark, - CallingCallSettingsForMeUpdateVoicemailPerson, - CallingCallSettingsForMeGetVoicemailPerson, - CallingCallSettingsForMeUpdateMySecondaryOwnerVoicemail, - CallingCallSettingsForMeGetMySecondaryOwnerVoicemail, - CallingCallSettingsForMeGetMyBlock, - CallingCallSettingsForMeCreatePhoneNumberUserBlockList, - CallingCallSettingsForMeGetMyBlockStateNumber, - CallingCallSettingsForMeDeleteUserBlockNumber, - CallingCallSettingsForMeGetMyMonitoring, - CallingCallSettingsForMeGetMyCenter, - CallingCallSettingsForMeUpdateMyCenter, - CallingCallSettingsForMeGetMySecondaryOwnerCenter, - CallingCallSettingsForMeUpdateMySecondaryOwnerCenter, - CallingCallSettingsForMeGetMyCaptions, - CallingCallSettingsForMeGetPoliciesUser, - CallingCallSettingsForMeUpdatePoliciesUser, - CallingCallSettingsForMeGetUserExecutiveScreening, - CallingCallSettingsForMeUpdateUserExecutiveScreening, - CallingCallSettingsForMeGetUserExecutiveFiltering, - CallingCallSettingsForMeUpdateUserExecutiveFiltering, - CallingCallSettingsForMeGetUserExecutiveFiltering2, - CallingCallSettingsForMeUpdateUserExecutiveFiltering2, - CallingCallSettingsForMeDeleteUserExecutiveFiltering, - CallingCallSettingsForMeGetDoNotDisturbUser, - CallingCallSettingsForMeUpdateDoNotDisturbUser, - CallingCallSettingsForMeCreateUserExecutiveFiltering, - CallingCallSettingsForMeGetUserExecutiveAlert, - CallingCallSettingsForMeUpdateUserExecutiveAlert, - CallingCallSettingsForMeGetCountrySpecificTelephonyConfigurationRequirements, - CallingCallSettingsForMeGetAnnouncementLanguagesAuthenticatedUser, - CallingCallSettingsForMeGetBargeIn, - CallingCallSettingsForMeUpdateBargeIn, - CallingCallSettingsForMeGetPriorityAlert, - CallingCallSettingsForMeUpdatePriorityAlertUser, - CallingCallSettingsForMeCreatePriorityAlert, - CallingCallSettingsForMeGetPriorityAlert2, - CallingCallSettingsForMeUpdatePriorityAlert, - CallingCallSettingsForMeDeletePriorityAlert, - CallingCallSettingsForMeGetUserSchedules, - CallingCallSettingsForMeCreateUserSchedule, - CallingCallSettingsForMeGetUserSchedule, - CallingCallSettingsForMeUpdateUserSchedule, - CallingCallSettingsForMeDeleteUserSchedule, - CallingCallSettingsForMeCreateEventUserSchedule, - CallingCallSettingsForMeGetUserScheduleEvent, - CallingCallSettingsForMeUpdateUserScheduleEvent, - CallingCallSettingsForMeDeleteUserScheduleEvent, - CallingCallSettingsForMeGetUserLocationSchedule, - CallingCallSettingsForMeGetNotifyUser, - CallingCallSettingsForMeUpdateNotifyUser, - CallingCallSettingsForMeCreateNotify, - CallingCallSettingsForMeGetNotify, - CallingCallSettingsForMeUpdateNotify, - CallingCallSettingsForMeDeleteNotify, - CallingCallSettingsForMeGetSelectiveAcceptUser, - CallingCallSettingsForMeUpdateSelectiveAcceptUser, - CallingCallSettingsForMeCreateUserSelectiveAccept, - CallingCallSettingsForMeGetSelectiveAcceptUser2, - CallingCallSettingsForMeUpdateSelectiveAccept, - CallingCallSettingsForMeDeleteSelectiveAccept, - CallingCallSettingsForMeGetAvailableNumbersUserLocation, - CallingCallSettingsForMeCreateSelectiveForward, - CallingCallSettingsForMeGetSelectiveForward, - CallingCallSettingsForMeUpdateSelectiveForward, - CallingCallSettingsForMeDeleteSelectiveForward, - CallingCallSettingsForMeGetSelectiveForwardUser, - CallingCallSettingsForMeUpdateSelectiveForwardUser, - CallingCallSettingsForMeGetSelectiveRejectUser, - CallingCallSettingsForMeUpdateSelectiveRejectUser, - CallingCallSettingsForMeCreateUserSelectiveReject, - CallingCallSettingsForMeGetAnonymousRejectionUser, - CallingCallSettingsForMeUpdateAnonymousRejectionUser, - CallingCallSettingsForMeGetSelectiveRejectUser2, - CallingCallSettingsForMeUpdateSelectiveReject, - CallingCallSettingsForMeDeleteSelectiveReject, - CallingCallSettingsForMeGetWaitingUser, - CallingCallSettingsForMeUpdateWaitingUser, - CallingCallSettingsForMeGetSequentialRingUser, - CallingCallSettingsForMeUpdateSequentialRingUser, - CallingCallSettingsForMeCreateUserSequentialRing, - CallingCallSettingsForMeGetSequentialRingUser2, - CallingCallSettingsForMeUpdateSequentialRingUser2, - CallingCallSettingsForMeDeleteSequentialRing, - CallingCallSettingsForMeGetPriorityAlert2Dup, - CallingCallSettingsForMeUpdatePriorityAlertUser2, - CallingCallSettingsForMeCreatePriorityAlert2, - CallingCallSettingsForMeGetPriorityAlert22, - CallingCallSettingsForMeUpdatePriorityAlert2, - CallingCallSettingsForMeDeletePriorityAlert2, - CallingCallSettingsForMeGetUserSchedules2, - CallingCallSettingsForMeCreateUserSchedule2, - CallingCallSettingsForMeGetUserSchedule2, - CallingCallSettingsForMeUpdateUserSchedule2, - CallingCallSettingsForMeDeleteUserSchedule2, - CallingCallSettingsForMeCreateEventUserSchedule2, - CallingCallSettingsForMeGetUserScheduleEvent2, - CallingCallSettingsForMeUpdateUserScheduleEvent2, - CallingCallSettingsForMeDeleteUserScheduleEvent2, - CallingCallSettingsForMeGetUserLocationSchedule2, - CallingCallSettingsForMeGetNotifyUser2, - CallingCallSettingsForMeUpdateNotifyUser2, - CallingCallSettingsForMeCreateNotify2, - CallingCallSettingsForMeGetNotify2, - CallingCallSettingsForMeUpdateNotify2, - CallingCallSettingsForMeDeleteNotify2, - CallingCallSettingsForMeGetSelectiveAcceptUser2Dup, - CallingCallSettingsForMeUpdateSelectiveAcceptUser2, - CallingCallSettingsForMeCreateUserSelectiveAccept2, - CallingCallSettingsForMeGetSelectiveAcceptUser22, - CallingCallSettingsForMeUpdateSelectiveAccept2, - CallingCallSettingsForMeDeleteSelectiveAccept2, - CallingCallSettingsForMeGetAvailableNumbersUserLocation2, - CallingCallSettingsForMeCreateSelectiveForward2, - CallingCallSettingsForMeGetSelectiveForward2, - CallingCallSettingsForMeUpdateSelectiveForward2, - CallingCallSettingsForMeDeleteSelectiveForward2, - CallingCallSettingsForMeGetSelectiveForwardUser2, - CallingCallSettingsForMeUpdateSelectiveForwardUser2, - CallingCallSettingsForMeGetSelectiveRejectUser2Dup, - CallingCallSettingsForMeUpdateSelectiveRejectUser2, - CallingCallSettingsForMeCreateUserSelectiveReject2, - CallingCallSettingsForMeGetAnonymousRejectionUser2, - CallingCallSettingsForMeUpdateAnonymousRejectionUser2, - CallingCallSettingsForMeGetSelectiveRejectUser22, - CallingCallSettingsForMeUpdateSelectiveReject2, - CallingCallSettingsForMeDeleteSelectiveReject2, - CallingCallSettingsForMeGetWaitingUser2, - CallingCallSettingsForMeUpdateWaitingUser2, - CallingCallSettingsForMeGetSequentialRingUser2Dup, - CallingCallSettingsForMeUpdateSequentialRingUser2Dup, - CallingCallSettingsForMeCreateUserSequentialRing2, - CallingCallSettingsForMeGetSequentialRingUser22, - CallingCallSettingsForMeUpdateSequentialRingUser22, - CallingCallSettingsForMeDeleteSequentialRing2, - CallingCallSettingsForMeUploadVoicemailBusyGreeting, - CallingCallSettingsForMeUploadVoicemailNoAnswerGreeting, - CallingCallSettingsForMeGetMySimultaneousRing, - CallingCallSettingsForMeUpdateMySimultaneousRing, - CallingCallSettingsForMeGetMySimultaneousRing2, - CallingCallSettingsForMeUpdateMySimultaneousRing2, - CallingCallSettingsForMeDeleteMySimultaneousRing, - CallingCallSettingsForMeCreateMySimultaneousRing, - CallingCallSettingsForMeGetMyGuestCallingNumbers, - CallingCallSettingsForMeGetPersonalAssistant, - CallingCallSettingsForMeUpdatePersonalAssistant, - CallingCallSettingsForMeGetPersonVoicemailRules, - CallingCallSettingsForMeUpdateVoicemailPin, - CallingCallSettingsForMeGetHotelingGuest, - CallingCallSettingsForMeUpdateHotelingGuest, - CallingCallSettingsForMeGetAvailableHotelingHosts, - CallingCallingServiceListAnnouncementLanguages, - CallingCallingServiceGetVoicemail, - CallingCallingServiceUpdateVoicemail, - CallingCallingServiceGetVoicemailRules, - CallingCallingServiceUpdateVoicemailRules, - CallingCallingServiceGetOrgMusicHoldConfiguration, - CallingCallingServiceUpdateOrgMusicHoldConfiguration, - CallingCallingServiceGetOrgCallCaptionsSettings, - CallingCallingServiceUpdateOrgCallCaptionsSettings, - CallingCallingServiceGetLargeOrgStatus, - CallingClientCallGetOrgMsTeamsSettings, - CallingClientCallUpdateOrgMsTeamsSetting, - CallingConferenceControlsStart, - CallingConferenceControlsRelease, - CallingConferenceControlsGet, - CallingConferenceControlsCreateParticipant, - CallingConferenceControlsMute, - CallingConferenceControlsUnmute, - CallingConferenceControlsDeafenParticipant, - CallingConferenceControlsUndeafenParticipant, - CallingConferenceControlsHold, - CallingConferenceControlsResume, - CallingConvergedRecordingsList, - CallingConvergedRecordingsListAdminComplianceOfficer, - CallingConvergedRecordingsGet, - CallingConvergedRecordingsDelete, - CallingConvergedRecordingsGetMetadata, - CallingConvergedRecordingsReassign, - CallingConvergedRecordingsMoveRecycleBin, - CallingConvergedRecordingsRestoreRecycleBin, - CallingConvergedRecordingsPurgeRecycleBin, - CallingDeviceCallGetMembers, - CallingDeviceCallUpdateMembers, - CallingDeviceCallSearchMembers, - CallingDeviceCallApplyChanges, - CallingDeviceCallGetSettings, - CallingDeviceCallUpdateSettings, - CallingDeviceCallGetLocationSettings, - CallingDeviceCallGetWebexCalling, - CallingDeviceCallUpdateThirdParty, - CallingDeviceCallGetPerson, - CallingDeviceCallUpdateHotelingSettingsPersonPrimary, - CallingDeviceCallGetWorkspace, - CallingDeviceCallUpdateWorkspace, - CallingDeviceCallListSupported, - CallingDeviceCallGetOverrideSettings, - CallingDeviceCallCreateLineKeyTemplate, - CallingDeviceCallListLineKeyTemplates, - CallingDeviceCallGetLineKeyTemplate, - CallingDeviceCallUpdateLineKeyTemplate, - CallingDeviceCallDeleteLineKeyTemplate, - CallingDeviceCallPreviewApplyLineKeyTemplate, - CallingDeviceCallApplyLineKeyTemplate, - CallingDeviceCallListApplyLineKeyTemplateJobs, - CallingDeviceCallGetJobStatusApplyLineKeyTemplateJob, - CallingDeviceCallGetJobErrorsApplyLineKeyTemplateJob, - CallingDeviceCallGetDectTypeListDeprecated, - CallingDeviceCallGetDectTypeList, - CallingDeviceCallValidateListMacAddress, - CallingDeviceCallUpdateSettingsAcrossOrgLocationJob, - CallingDeviceCallListChangeSettingsJobs, - CallingDeviceCallGetChangeSettingsJobStatus, - CallingDeviceCallListChangeSettingsJobErrors, - CallingDeviceCallGetLayoutId, - CallingDeviceCallUpdateLayoutId, - CallingDeviceCallRebuildPhonesConfiguration, - CallingDeviceCallListRebuildPhonesJobs, - CallingDeviceCallGetJobStatusRebuildPhonesJob, - CallingDeviceCallGetJobErrorsRebuildPhonesJob, - CallingDeviceCallGetSettingsPerson, - CallingDeviceCallUpdateSettingsPerson, - CallingDeviceCallGetSettingsWorkspace, - CallingDeviceCallUpdateSettingsWorkspace, - CallingDeviceCallListBackgroundImages, - CallingDeviceCallDeleteBackgroundImages, - CallingDeviceCallUploadBackgroundImage, - CallingDeviceCallGetUserCount, - CallingDeviceCallGetCountMembers, - CallingDeviceCallGetCountAvailableMembers, - CallingDeviceCallListSupported2, - CallingDeviceCallGetValidationSchema, - CallingDeviceCallGetSettingsGroups, - CallingDeviceCallGetCustomerDynamicSettings, - CallingDeviceCallGetLocationDynamicSettings, - CallingDeviceCallGetDynamicSettings, - CallingDeviceCallUpdateSpecifiedSettings, - CallingDeviceCallUpdatesDynamicSettingsAcrossOrgLocation, - CallingDeviceCallListDynamicSettingsJobs, - CallingDeviceCallGetDynamicSettingsJobStatus, - CallingDeviceCallListDynamicSettingsJobErrors, - CallingDeviceCallListSupported3, - CallingDeviceCallGetSettingsGroups2, - CallingDeviceCallGetCustomerDynamicSettings2, - CallingDeviceCallGetLocationDynamicSettings2, - CallingDeviceCallGetDynamicSettings2, - CallingDeviceCallUpdateDynamicSettings, - CallingDeviceCallUpdateDynamicSettingsAcrossOrgLocation, - CallingDeviceCallListDynamicSettingsJobs2, - CallingDeviceCallGetDynamicSettingsJobStatus2, - CallingDeviceCallListDynamicSettingsJobErrors2, - CallingDevicesList, - CallingDevicesCreateMacAddress, - CallingDevicesGet, - CallingDevicesDelete, - CallingDevicesUpdateTags, - CallingDevicesCreateActivationCode, - CallingEmergencyServicesUpdateRedskySettings, - CallingEmergencyServicesCreateAccountAdminRedsky, - CallingEmergencyServicesGetRedskyAccount, - CallingEmergencyServicesUpdateOrgRedskyAccountComplianceStatus, - CallingEmergencyServicesGetOrgComplianceStatusRedskyAccount, - CallingEmergencyServicesGetOrgComplianceStatusLocationStatusList, - CallingEmergencyServicesLoginRedskyAdminAccount, - CallingEmergencyServicesGetLocationRedskyCallingParameters, - CallingEmergencyServicesGetLocationRedskyComplianceStatus, - CallingEmergencyServicesUpdateLocationRedskyComplianceStatus, - CallingEmergencyServicesCreateRedskyBuildingAddressLocation, - CallingEmergencyServicesUpdateRedskyBuildingAddressLocation, - CallingEmergencyServicesGetOrgCallNotification, - CallingEmergencyServicesUpdateOrgCallNotification, - CallingEmergencyServicesGetLocationCallNotification, - CallingEmergencyServicesUpdateLocationCallNotification, - CallingEmergencyServicesGetDependenciesHuntGroupCallback, - CallingEmergencyServicesGetPersonCallback, - CallingEmergencyServicesUpdatePersonCallback, - CallingEmergencyServicesGetPersonCallbackDependencies, - CallingEmergencyServicesGetWorkspaceCallback, - CallingEmergencyServicesUpdateWorkspaceCallback, - CallingEmergencyServicesGetWorkspaceCallbackDependencies, - CallingEmergencyServicesGetDependenciesVlineCallback, - CallingEmergencyServicesGetVlineCallbackSettings, - CallingEmergencyServicesUpdateVlineCallbackSettings, - CallingAnnouncementPlaylistList, - CallingAnnouncementPlaylistCreate, - CallingAnnouncementPlaylistGet, - CallingAnnouncementPlaylistUpdate, - CallingAnnouncementPlaylistDelete, - CallingAnnouncementPlaylistListLocations, - CallingAnnouncementPlaylistUpdateLocations, - CallingAnnouncementRepositoryListGreetings, - CallingAnnouncementRepositoryUploadBinaryGreeting, - CallingAnnouncementRepositoryGetUsage, - CallingAnnouncementRepositoryDeleteGreetingOrg, - CallingAnnouncementRepositoryGetBinaryGreeting, - CallingAnnouncementRepositoryUpdateBinaryGreeting, - CallingAnnouncementRepositoryUploadBinaryGreeting2, - CallingAnnouncementRepositoryGetUsageLocation, - CallingAnnouncementRepositoryDeleteGreetingLocation, - CallingAnnouncementRepositoryGetBinaryGreeting2, - CallingAnnouncementRepositoryUpdateBinaryGreeting2, - CallingAnnouncementRepositoryGenerateTextToSpeechPrompt, - CallingAnnouncementRepositoryGetTextToSpeechUsage, - CallingAnnouncementRepositoryGetTextToSpeechGenerationStatus, - CallingAnnouncementRepositoryListTextToSpeechVoices, - CallingAutoAttendantList, - CallingAutoAttendantGet, - CallingAutoAttendantUpdate, - CallingAutoAttendantDelete, - CallingAutoAttendantCreate, - CallingAutoAttendantGetCallForward, - CallingAutoAttendantUpdateCallForward, - CallingAutoAttendantCreateSelectiveForwardRule, - CallingAutoAttendantGetSelectiveForwardRule, - CallingAutoAttendantUpdateSelectiveForwardRule, - CallingAutoAttendantDeleteSelectiveForwardRule, - CallingAutoAttendantGetPrimaryNumbers, - CallingAutoAttendantGetAlternateNumbers, - CallingAutoAttendantGetForwardAvailableNumbers, - CallingAutoAttendantSwitchModeCallForward, - CallingAutoAttendantDeleteAnnouncementFile, - CallingAutoAttendantListAnnouncementFiles, - CallingCallParkList, - CallingCallParkCreate, - CallingCallParkDelete, - CallingCallParkGet, - CallingCallParkUpdate, - CallingCallParkGetAvailableAgents, - CallingCallParkGetAvailableRecallHuntGroups, - CallingCallParkGet2, - CallingCallParkUpdate2, - CallingCallParkListExtensions, - CallingCallParkGetExtension, - CallingCallParkDeleteExtension, - CallingCallParkUpdateExtension, - CallingCallParkCreateExtension, - CallingCallPickupList, - CallingCallPickupCreate, - CallingCallPickupDelete, - CallingCallPickupGet, - CallingCallPickupUpdate, - CallingCallPickupGetAvailableAgents, - CallingCallQueueListCustomerAssist, - CallingCallQueueCreateCustomerAssist, - CallingCallQueueDelete, - CallingCallQueueGetCustomerAssist, - CallingCallQueueUpdate, - CallingCallQueueListAnnouncementFiles, - CallingCallQueueDeleteAnnouncementFile, - CallingCallQueueGetForward, - CallingCallQueueUpdateForward, - CallingCallQueueCreateSelectiveForwardRule, - CallingCallQueueGetSelectiveForwardRule, - CallingCallQueueUpdateSelectiveForwardRule, - CallingCallQueueDeleteSelectiveForwardRule, - CallingCallQueueGetHolidayService, - CallingCallQueueUpdateHolidayService, - CallingCallQueueGetNightService, - CallingCallQueueUpdateNightService, - CallingCallQueueGetForcedForward, - CallingCallQueueUpdateForcedForwardService, - CallingCallQueueGetStranded, - CallingCallQueueUpdateStrandedService, - CallingCallQueueGetPrimaryNumbers, - CallingCallQueueGetAlternateNumbers, - CallingCallQueueGetForwardAvailableNumbers, - CallingCallQueueGetAvailableAgents, - CallingCallQueueListSupervisorsCustomerAssist, - CallingCallQueueCreateSupervisorCustomerAssist, - CallingCallQueueDeleteBulkSupervisors, - CallingCallQueueDeleteSupervisor, - CallingCallQueueGetSupervisorDetailCustomerAssist, - CallingCallQueueAssignUnassignAgentsSupervisorCustomerAssist, - CallingCallQueueListAvailableSupervisorsCustomerAssist, - CallingCallQueueListAvailableAgentsCustomerAssist, - CallingCallQueueListAgentsCustomerAssist, - CallingCallQueueGetAgentCustomerAssist, - CallingCallQueueUpdateAgentSettingsOneMoreCustomerAssist, - CallingCallQueueSwitchModeForward, - CallingCallQueueGetPlaylistUsage, - CallingCallRecordingGet, - CallingCallRecordingUpdate, - CallingCallRecordingGetTermsSettings, - CallingCallRecordingUpdateTermsSettings, - CallingCallRecordingGetOrgComplianceAnnouncement, - CallingCallRecordingUpdateOrgComplianceAnnouncement, - CallingCallRecordingGetLocationComplianceAnnouncement, - CallingCallRecordingUpdateLocationComplianceAnnouncement, - CallingCallRecordingGetRegions, - CallingCallRecordingGetVendorUsers, - CallingCallRecordingUpdateVendorLocation, - CallingCallRecordingGetLocationVendors, - CallingCallRecordingGetVendorUsersLocation, - CallingCallRecordingListJobs, - CallingCallRecordingGetJobStatusJob, - CallingCallRecordingGetJobErrorsJob, - CallingCallRecordingGetOrgVendors, - CallingCallRecordingUpdateOrgVendor, - CallingCustomerExperienceEssentialsListWrapUpReasons, - CallingCustomerExperienceEssentialsCreateWrapUpReason, - CallingCustomerExperienceEssentialsGetWrapUpReason, - CallingCustomerExperienceEssentialsUpdateWrapUpReason, - CallingCustomerExperienceEssentialsDeleteWrapUpReason, - CallingCustomerExperienceEssentialsValidateWrapUpReason, - CallingCustomerExperienceEssentialsGetAvailableQueues, - CallingCustomerExperienceEssentialsGetWrapUpReasonSettings, - CallingCustomerExperienceEssentialsUpdateWrapUpReasonSettings, - CallingCustomerExperienceEssentialsGetScreenPopConfiguration, - CallingCustomerExperienceEssentialsUpdateScreenPopConfiguration, - CallingCustomerExperienceEssentialsListAvailableAgents, - CallingHotDeskingSignInViaVoicePortalLocation, - CallingHotDeskingSignInViaVoicePortalUpdateLocation, - CallingHotDeskingSignInViaVoicePortalUser, - CallingHotDeskingSignInViaVoicePortalUpdateUser, - CallingHuntGroupList, - CallingHuntGroupCreate, - CallingHuntGroupDelete, - CallingHuntGroupGet, - CallingHuntGroupUpdate, - CallingHuntGroupGetCallForward, - CallingHuntGroupUpdateCallForward, - CallingHuntGroupCreateSelectiveForwardRule, - CallingHuntGroupGetSelectiveForwardRule, - CallingHuntGroupUpdateSelectiveForwardRule, - CallingHuntGroupDeleteSelectiveForwardRule, - CallingHuntGroupGetPrimaryNumbers, - CallingHuntGroupGetAlternateNumbers, - CallingHuntGroupGetForwardAvailableNumbers, - CallingHuntGroupSwitchModeCallForward, - CallingOperatingModesList, - CallingOperatingModesGet, - CallingOperatingModesUpdate, - CallingOperatingModesDelete, - CallingOperatingModesCreate, - CallingOperatingModesGetHoliday, - CallingOperatingModesUpdateHoliday, - CallingOperatingModesDeleteHoliday, - CallingOperatingModesCreateHoliday, - CallingOperatingModesListAvailableLocation, - CallingOperatingModesGetForwardAvailableNumbers, - CallingPagingGroupList, - CallingPagingGroupCreate, - CallingPagingGroupDelete, - CallingPagingGroupGet, - CallingPagingGroupUpdate, - CallingPagingGroupGetPrimaryNumbers, - CallingSingleNumberReachGetPrimary, - CallingSingleNumberReachCreatePerson, - CallingSingleNumberReachGetSettingsPerson, - CallingSingleNumberReachUpdateSettingsPerson, - CallingSingleNumberReachUpdateSettings, - CallingSingleNumberReachDelete, - CallingVirtualExtensionsCreate, - CallingVirtualExtensionsList, - CallingVirtualExtensionsGet, - CallingVirtualExtensionsUpdate, - CallingVirtualExtensionsDelete, - CallingVirtualExtensionsGetSettings, - CallingVirtualExtensionsUpdateSettings, - CallingVirtualExtensionsValidateExternalPhoneNumber, - CallingVirtualExtensionsCreateRange, - CallingVirtualExtensionsListRange, - CallingVirtualExtensionsGetRange, - CallingVirtualExtensionsDeleteRange, - CallingVirtualExtensionsUpdateRange, - CallingVirtualExtensionsValidatePrefixPatternRange, - CallingHotDeskListSessions, - CallingHotDeskDeleteSession, - CallingLocationCallHandlingGenerateExamplePassword, - CallingLocationCallHandlingGetInternalDialingConfiguration, - CallingLocationCallHandlingUpdateInternalDialingConfiguration, - CallingLocationCallHandlingGetIntercept, - CallingLocationCallHandlingUpdateIntercept, - CallingLocationCallHandlingGetOutgoingPermission, - CallingLocationCallHandlingUpdateOutgoingPermission, - CallingLocationCallHandlingGetOutgoingAutoTransfer, - CallingLocationCallHandlingUpdateOutgoingAutoTransfer, - CallingLocationCallHandlingGetOutgoingPermissionAccessCode, - CallingLocationCallHandlingCreateOutgoingPermissionAccessCodeCustomer, - CallingLocationCallHandlingDeleteOutgoingAccessCode, - CallingLocationCallHandlingDeleteAllOutgoingAccessCode, - CallingLocationCallHandlingGetOutgoingDigitPattern, - CallingLocationCallHandlingCreateOutgoingPermissionDigitPattern, - CallingLocationCallHandlingDeleteAllOutgoingDigitPatterns, - CallingLocationCallHandlingGetOutgoingDigitPattern2, - CallingLocationCallHandlingUpdateOutgoingDigitPattern, - CallingLocationCallHandlingDeleteOutgoingDigitPattern, - CallingLocationSchedulesList, - CallingLocationSchedulesCreate, - CallingLocationSchedulesGet, - CallingLocationSchedulesUpdate, - CallingLocationSchedulesDelete, - CallingLocationSchedulesGetEvent, - CallingLocationSchedulesUpdateEvent, - CallingLocationSchedulesDeleteEvent, - CallingLocationSchedulesCreateEvent, - CallingLocationVoicemailGet, - CallingLocationVoicemailUpdate, - CallingLocationVoicemailGetVoiceportal, - CallingLocationVoicemailUpdateVoiceportal, - CallingLocationVoicemailGetVoiceportalPasscodeRule, - CallingLocationVoicemailListVoicemailgroup, - CallingLocationVoicemailGetGroup, - CallingLocationVoicemailUpdateGroup, - CallingLocationVoicemailDeleteGroup, - CallingLocationVoicemailCreateGroup, - CallingLocationVoicemailGetGroupFaxAvailableNumbers, - CallingLocationVoicemailGetGroupAvailableNumbers, - CallingLocationVoicemailGetVoiceportalAvailableNumbers, - CallingLocationsList, - CallingLocationsCreate, - CallingLocationsGet, - CallingLocationsUpdate, - CallingLocationsListFloors, - CallingLocationsCreateFloor, - CallingLocationsGetFloor, - CallingLocationsUpdateFloor, - CallingLocationsDeleteFloor, - CallingLocationsDelete, - CallingNumbersCreatePhoneLocation, - CallingNumbersManageStateLocation, - CallingNumbersDeletePhoneLocation, - CallingNumbersValidatePhone, - CallingNumbersGetPhoneOrg, - CallingNumbersListManageJobs, - CallingNumbersInitiateJobs, - CallingNumbersGetManageJobStatus, - CallingNumbersPauseManageJob, - CallingNumbersResumeManageJob, - CallingNumbersListManageJobErrors, - CallingPartnerReportsTemplatesList, - CallingPartnerReportsTemplatesCreate, - CallingPartnerReportsTemplatesGet, - CallingPartnerReportsTemplatesDelete, - CallingPartnerReportsTemplatesList2, - CallingPeopleList, - CallingPeopleCreatePerson, - CallingPeopleGetPerson, - CallingPeopleUpdatePerson, - CallingPeopleDeletePerson, - CallingPeopleGetMyOwn, - CallingPstnGetConnectionOptionsLocation, - CallingPstnSetupConnectionLocation, - CallingPstnGetConnectionLocation, - CallingPstnUpdateEmergencyAddressPhoneNumber, - CallingPstnEmergencyAddressLookupVerifyAddressIsValid, - CallingPstnCreateEmergencyAddressLocation, - CallingPstnUpdateEmergencyAddressLocation, - CallingRecordingReportListAuditSummaries, - CallingRecordingReportGetAudit, - CallingRecordingReportListMeetingArchiveSummaries, - CallingRecordingReportGetMeetingArchive, - CallingReportsList, - CallingReportsCreate, - CallingReportsGet, - CallingReportsDelete, - CallingReportsDetailedCallHistoryGet, - CallingReportsDetailedCallHistoryGetLiveStream, - CallingSendActivationEmailInitiateBulkResendJob, - CallingSendActivationEmailGetBulkResendJobStatus, - CallingSendActivationEmailGetBulkResendJobErrors, - CallingUserCallGetPersonApplicationServicesSettings, - CallingUserCallUpdatePersonApplicationServicesSettings, - CallingUserCallGetBargeSettingsPerson, - CallingUserCallUpdateBargeSettingsPerson, - CallingUserCallGetForwardingSettingsPerson, - CallingUserCallUpdateForwardPerson, - CallingUserCallGetInterceptSettingsPerson, - CallingUserCallUpdateInterceptSettingsPerson, - CallingUserCallUpdateInterceptGreetingPerson, - CallingUserCallGetRecordingPerson, - CallingUserCallUpdateRecordingPerson, - CallingUserCallGetWaitingSettingsPerson, - CallingUserCallUpdateWaitingSettingsPerson, - CallingUserCallGetCallerIdPerson, - CallingUserCallUpdateCallerIdPerson, - CallingUserCallGetPersonCallingBehavior, - CallingUserCallUpdatePersonCallingBehavior, - CallingUserCallGetDoNotDisturbSettingsPerson, - CallingUserCallUpdateDoNotDisturbSettingsPerson, - CallingUserCallGetExecutiveAssistantSettingsPerson, - CallingUserCallUpdateExecutiveAssistantSettingsPerson, - CallingUserCallGetHotelingSettingsPerson, - CallingUserCallUpdateHotelingSettingsPerson, - CallingUserCallGetPersonMonitoringSettings, - CallingUserCallUpdatePersonMonitoringSettings, - CallingUserCallGetIncomingPermissionSettingsPerson, - CallingUserCallUpdateIncomingPermissionSettingsPerson, - CallingUserCallGetPersonOutgoingPermissionsSettings, - CallingUserCallUpdatePersonOutgoingPermissionsSettings, - CallingUserCallListPhoneNumbersPerson, - CallingUserCallGetPersonPrivacySettings, - CallingUserCallUpdatePersonPrivacySettings, - CallingUserCallGetPushToTalkSettingsPerson, - CallingUserCallUpdatePushToTalkSettingsPerson, - CallingUserCallGetReceptionistClientSettingsPerson, - CallingUserCallUpdateReceptionistClientSettingsPerson, - CallingUserCallListSchedulesPerson, - CallingUserCallCreateSchedulePerson, - CallingUserCallGetSchedule, - CallingUserCallUpdateSchedule, - CallingUserCallDeleteSchedule, - CallingUserCallGetEventPersonSchedule, - CallingUserCallUpdateEventPersonSchedule, - CallingUserCallDeleteEventPersonSchedule, - CallingUserCallCreateEventPersonSchedule, - CallingUserCallGetVoicemailPerson, - CallingUserCallUpdateVoicemailPerson, - CallingUserCallUpdateBusyVoicemailGreetingPerson, - CallingUserCallUpdateNoAnswerVoicemailGreetingPerson, - CallingUserCallResetVoicemailPin, - CallingUserCallValidateInitiateMoveJob, - CallingUserCallListMoveJobs, - CallingUserCallGetMoveJobStatus, - CallingUserCallPauseMoveJob, - CallingUserCallResumeMoveJob, - CallingUserCallListMoveJobErrors, - CallingUserCallGetMusicHoldSettingsPerson, - CallingUserCallUpdateMusicHoldSettingsPerson, - CallingUserCallGetAccessCodesPerson, - CallingUserCallUpdateAccessCodesPerson, - CallingUserCallCreateAccessCodesPerson, - CallingUserCallDeleteAccessCodesPerson, - CallingUserCallGetTransferNumbersPerson, - CallingUserCallUpdateTransferNumbersPerson, - CallingUserCallGetDigitPatternsPerson, - CallingUserCallCreateDigitPatternsPerson, - CallingUserCallUpdateDigitPatternControlPerson, - CallingUserCallDeleteAllDigitPatternsPerson, - CallingUserCallGetDigitPatternPerson, - CallingUserCallUpdateDigitPatternPerson, - CallingUserCallDeleteDigitPatternPerson, - CallingUserCallAssignUnassignNumbersPerson, - CallingUserCallGetPreferredEndpoint, - CallingUserCallUpdatePreferredEndpoint, - CallingUserCallSearchSharedLineAppearanceMembers, - CallingUserCallGetSharedLineAppearanceMembers, - CallingUserCallUpdateSharedLineAppearanceMembers, - CallingUserCallUpdatePersonVoicemailPasscode, - CallingUserCallGetMessageSummary, - CallingUserCallListMessages, - CallingUserCallDeleteMessage, - CallingUserCallMarkRead, - CallingUserCallMarkUnread, - CallingUserCallGetAgentListAvailableCallerIds, - CallingUserCallGetAgentCallerId, - CallingUserCallUpdateAgentCallerId, - CallingUserCallGetBridgeSettingsPerson, - CallingUserCallUpdateBridgeSettingsPerson, - CallingUserCallGetPersonSecondaryAvailableNumbers, - CallingUserCallGetPersonFaxAvailableNumbers, - CallingUserCallGetPersonForwardAvailableNumbers, - CallingUserCallGetPersonPrimaryNumbers, - CallingUserCallGetPersonEcbnAvailableNumbers, - CallingUserCallGetPersonInterceptAvailableNumbers, - CallingUserCallGetPersonMsTeamsSettings, - CallingUserCallUpdatePersonMsTeamsSetting, - CallingUserCallGetPersonalAssistant, - CallingUserCallUpdatePersonalAssistant, - CallingUserCallListAvailableFeatures, - CallingUserCallListFeaturesAssignedModeManagement, - CallingUserCallAssignListFeaturesModeManagement, - CallingUserCallGetUsersSelectiveAcceptList, - CallingUserCallUpdateUsersSelectiveAccept, - CallingUserCallCreateUsersSelectiveAcceptService, - CallingUserCallGetUsersSelectiveAcceptService, - CallingUserCallUpdateUsersSelectiveAcceptService, - CallingUserCallDeleteUsersSelectiveAcceptService, - CallingUserCallGetUsersSelectiveRejectListing, - CallingUserCallUpdateUsersSelectiveRejectList, - CallingUserCallCreateUsersSelectiveRejectService, - CallingUserCallGetUsersSelectiveRejectService, - CallingUserCallUpdateUsersSelectiveRejectService, - CallingUserCallDeleteUsersSelectiveRejectService, - CallingUserCallGetUsersSelectiveForward, - CallingUserCallUpdateUsersSelectiveForwardList, - CallingUserCallCreateUsersSelectiveForwardService, - CallingUserCallGetUsersSelectiveForwardService, - CallingUserCallUpdateUsersSelectiveForwardService, - CallingUserCallDeleteUsersSelectiveForwardService, - CallingUserCallGetPersonApplicationServicesSettings2, - CallingUserCallSearchSharedLineAppearanceMembers2, - CallingUserCallGetSharedLineAppearanceMembers2, - CallingUserCallUpdateSharedLineAppearanceMembers2, - CallingUserCallGetCaptionsSettings, - CallingUserCallUpdateCaptionsSettings, - CallingUserCallGetPersonExecutiveFilteringSettings, - CallingUserCallUpdatePersonExecutiveFilteringSettings, - CallingUserCallGetPersonExecutiveFilteringSettings2, - CallingUserCallUpdatePersonExecutiveFilteringSettings2, - CallingUserCallDeletePersonExecutiveFiltering, - CallingUserCallCreatePersonExecutiveFiltering, - CallingUserCallGetPersonExecutiveAlertSettings, - CallingUserCallUpdatePersonExecutiveAlertSettings, - CallingUserCallGetPersonExecutiveAssignedAssistants, - CallingUserCallUpdatePersonExecutiveAssignedAssistants, - CallingUserCallGetPersonExecutiveAvailableAssistants, - CallingUserCallGetPersonExecutiveAssistantSettings, - CallingUserCallUpdatePersonExecutiveAssistantSettings, - CallingUserCallGetPersonExecutiveScreeningSettings, - CallingUserCallUpdatePersonExecutiveScreeningSettings, - CallingUserCallGetCountSharedLineAppearanceMembers, - CallingUserCallGetTimezoneAnnouncementLanguageSettingsPerson, - CallingUserCallUpdateTimezoneAnnouncementLanguageSettingsPerson, - CallingUserCallGetCountryCallingConfiguration, - CallingVirtualLineCallList, - CallingVirtualLineCallCreate, - CallingVirtualLineCallGetRecording, - CallingVirtualLineCallUpdateRecording, - CallingVirtualLineCallDelete, - CallingVirtualLineCallGet, - CallingVirtualLineCallUpdate, - CallingVirtualLineCallGetPhoneNumberAssigned, - CallingVirtualLineCallUpdateDirectorySearch, - CallingVirtualLineCallListDevicesAssigned, - CallingVirtualLineCallListNetworksHandsets, - CallingVirtualLineCallGetCallerId, - CallingVirtualLineCallUpdateCallerId, - CallingVirtualLineCallGetWaitingSettings, - CallingVirtualLineCallUpdateWaitingSettings, - CallingVirtualLineCallGetForward, - CallingVirtualLineCallUpdateForward, - CallingVirtualLineCallGetIncomingPermissionSettings, - CallingVirtualLineCallUpdateIncomingPermissionSettings, - CallingVirtualLineCallGetOutgoingPermissionsSettings, - CallingVirtualLineCallUpdateOutgoingPermissionsSettings, - CallingVirtualLineCallGetAccessCodes, - CallingVirtualLineCallUpdateAccessCodes, - CallingVirtualLineCallCreateAccessCodes, - CallingVirtualLineCallDeleteAccessCodes, - CallingVirtualLineCallGetTransferNumbers, - CallingVirtualLineCallUpdateTransferNumbers, - CallingVirtualLineCallGetDigitPatternsProfile, - CallingVirtualLineCallCreateDigitPatternProfile, - CallingVirtualLineCallUpdateDigitPatternControlProfile, - CallingVirtualLineCallDeleteAllDigitPatternsProfile, - CallingVirtualLineCallGetSpecifiedDigitPatternProfile, - CallingVirtualLineCallUpdateDigitPatternProfile, - CallingVirtualLineCallDeleteDigitPatternProfile, - CallingVirtualLineCallGetInterceptSettings, - CallingVirtualLineCallUpdateInterceptSettings, - CallingVirtualLineCallUpdateInterceptGreeting, - CallingVirtualLineCallGetAgentListAvailableCallerIds, - CallingVirtualLineCallGetAgentCallerId, - CallingVirtualLineCallUpdateAgentCallerId, - CallingVirtualLineCallGetVoicemail, - CallingVirtualLineCallUpdateVoicemail, - CallingVirtualLineCallUpdateBusyVoicemailGreeting, - CallingVirtualLineCallUpdateNoAnswerVoicemailGreeting, - CallingVirtualLineCallResetVoicemailPin, - CallingVirtualLineCallUpdateVoicemailPasscode, - CallingVirtualLineCallGetMusicHoldSettings, - CallingVirtualLineCallUpdateMusicHoldSettings, - CallingVirtualLineCallGetPushToTalkSettings, - CallingVirtualLineCallUpdatePushToTalkSettings, - CallingVirtualLineCallGetBridgeSettings, - CallingVirtualLineCallUpdateBridgeSettings, - CallingVirtualLineCallGetBargeSettings, - CallingVirtualLineCallUpdateBargeSettings, - CallingVirtualLineCallGetPrivacySettings, - CallingVirtualLineCallUpdatePrivacySettings, - CallingVirtualLineCallGetFaxAvailableNumbers, - CallingVirtualLineCallGetForwardAvailableNumbers, - CallingVirtualLineCallGetAvailableNumbers, - CallingVirtualLineCallGetEcbnAvailableNumbers, - CallingVirtualLineCallGetInterceptAvailableNumbers, - CallingVirtualLineCallGetDonotdisturbSettings, - CallingVirtualLineCallUpdateDonotdisturbSettings, - CallingWorkspaceCallGetForward, - CallingWorkspaceCallUpdateForward, - CallingWorkspaceCallGetWaitingSettings, - CallingWorkspaceCallUpdateWaitingSettings, - CallingWorkspaceCallGetCallerId, - CallingWorkspaceCallUpdateCallerId, - CallingWorkspaceCallGetMonitoringSettings, - CallingWorkspaceCallUpdateMonitoringSettings, - CallingWorkspaceCallListNumbersAssociated, - CallingWorkspaceCallGetIncomingPermissionSettings, - CallingWorkspaceCallUpdateIncomingPermissionSettings, - CallingWorkspaceCallGetOutgoingPermissionSettings, - CallingWorkspaceCallUpdateOutgoingPermissionSettings, - CallingWorkspaceCallGetAccessCodes, - CallingWorkspaceCallUpdateAccessCodes, - CallingWorkspaceCallCreateAccessCodes, - CallingWorkspaceCallDeleteAllAccessCodes, - CallingWorkspaceCallGetInterceptSettings, - CallingWorkspaceCallUpdateInterceptSettings, - CallingWorkspaceCallGetTransferNumbersSettings, - CallingWorkspaceCallUpdateTransferNumbersSettings, - CallingWorkspaceCallGetMusicHoldSettings, - CallingWorkspaceCallUpdateMusicHoldSettings, - CallingWorkspaceCallDeleteAccessCode, - CallingWorkspaceCallGetAllDigitPatterns, - CallingWorkspaceCallCreateDigitPattern, - CallingWorkspaceCallUpdateDigitPatternControl, - CallingWorkspaceCallDeleteAllDigitPatterns, - CallingWorkspaceCallGetDigitPattern, - CallingWorkspaceCallUpdateDigitPattern, - CallingWorkspaceCallDeleteDigitPattern, - CallingWorkspaceCallUploadInterceptAnnouncementFile, - CallingWorkspaceCallGetRecording, - CallingWorkspaceCallUpdateRecording, - CallingWorkspaceCallGetAvailableNumbers, - CallingWorkspaceCallGetEcbnAvailableNumbers, - CallingWorkspaceCallGetForwardAvailableNumbers, - CallingWorkspaceCallGetInterceptAvailableNumbers, - CallingWorkspaceCallGetAnonymousSettings, - CallingWorkspaceCallUpdateAnonymousSettings, - CallingWorkspaceCallGetBargeSettings, - CallingWorkspaceCallUpdateBargeSettings, - CallingWorkspaceCallGetDonotdisturbSettings, - CallingWorkspaceCallUpdateDonotdisturbSettings, - CallingWorkspaceCallGetBridgeWarningTone, - CallingWorkspaceCallUpdateBridgeWarningTone, - CallingWorkspaceCallGetPushToTalkSettings, - CallingWorkspaceCallUpdatePushToTalkSettings, - CallingWorkspaceCallGetPrivacySettings, - CallingWorkspaceCallUpdatePrivacySettings, - CallingWorkspaceCallGetVoicemail, - CallingWorkspaceCallUpdateVoicemail, - CallingWorkspaceCallUpdateVoicemailPasscode, - CallingWorkspaceCallGetSequentialRing, - CallingWorkspaceCallUpdateSequentialRing, - CallingWorkspaceCallDeleteSequentialRing, - CallingWorkspaceCallGetPolicySettings, - CallingWorkspaceCallUpdatePolicySettings, - CallingWorkspaceCallUpdateBusyVoicemailGreetingPlace, - CallingWorkspaceCallUpdateNoAnswerVoicemailGreetingPlace, - CallingWorkspaceCallCreateSequentialRing, - CallingWorkspaceCallGetSequentialRingSettings, - CallingWorkspaceCallUpdateSequentialRingSettings, - CallingWorkspaceCallGetSimultaneousRingSettings, - CallingWorkspaceCallUpdateSimultaneousRingSettings, - CallingWorkspaceCallGetSimultaneousRing, - CallingWorkspaceCallUpdateSimultaneousRing, - CallingWorkspaceCallDeleteSimultaneousRing, - CallingWorkspaceCallCreateSimultaneousRing, - CallingWorkspaceCallGetSelectiveRejectSettings, - CallingWorkspaceCallUpdateSelectiveRejectSettings, - CallingWorkspaceCallGetSelectiveReject, - CallingWorkspaceCallUpdateSelectiveReject, - CallingWorkspaceCallDeleteSelectiveReject, - CallingWorkspaceCallCreateSelectiveReject, - CallingWorkspaceCallAssignUnassignNumbersAssociated, - CallingWorkspaceCallGetSelectiveAcceptSettings, - CallingWorkspaceCallUpdateSelectiveAcceptSettings, - CallingWorkspaceCallGetSelectiveAccept, - CallingWorkspaceCallUpdateSelectiveAccept, - CallingWorkspaceCallDeleteSelectiveAccept, - CallingWorkspaceCallCreateSelectiveAccept, - CallingWorkspaceCallGetPriorityAlertSettings, - CallingWorkspaceCallUpdatePriorityAlertSettings, - CallingWorkspaceCallGetPriorityAlert, - CallingWorkspaceCallUpdatePriorityAlert, - CallingWorkspaceCallDeletePriorityAlert, - CallingWorkspaceCallCreatePriorityAlert, - CallingWorkspaceCallGetSelectiveForwardSettings, - CallingWorkspaceCallUpdateSelectiveForwardSettings, - CallingWorkspaceCallGetSelectiveForward, - CallingWorkspaceCallUpdateSelectiveForward, - CallingWorkspaceCallDeleteSelectiveForward, - CallingWorkspaceCallCreateSelectiveForward, - CallingWorkspaceCallGetFaxAvailableNumbers, - CallingWorkspaceCallGetSecondaryAvailableNumbers, - CallingWorkspacesList, - CallingWorkspacesCreate, - CallingWorkspacesGet, - CallingWorkspacesUpdate, - CallingWorkspacesDelete, - CallingWorkspacesGetCapabilities, - CallingWorkspacesGet2, - CallingExternalVoicemailDial, - CallingExternalVoicemailAnswer, - CallingExternalVoicemailReject, - CallingExternalVoicemailHangup, - CallingExternalVoicemailHold, - CallingExternalVoicemailResume, - CallingExternalVoicemailMute, - CallingExternalVoicemailUnmute, - CallingExternalVoicemailDivert, - CallingExternalVoicemailTransfer, - CallingExternalVoicemailPark, - CallingExternalVoicemailGet, - CallingExternalVoicemailStartRecording, - CallingExternalVoicemailStopRecording, - CallingExternalVoicemailPauseRecording, - CallingExternalVoicemailResumeRecording, - CallingExternalVoicemailTransmitDtmf, - CallingExternalVoicemailPush, - CallingExternalVoicemailPickup, - CallingExternalVoicemailBarge, - CallingExternalVoicemailListCalls, - CallingExternalVoicemailGetCall, - CallingExternalVoicemailListCallHistory, - CallingExternalVoicemailUpdateClearMessageWaitingIndicator, - CallingExternalVoicemailPull, - CallingCallerReputationProviderGetSettings, - CallingCallerReputationProviderUpdateSettings, - CallingCallerReputationProviderGetStatus, - CallingCallerReputationProviderUnlock, - CallingCallerReputationProviderGet, - CallingModeManagementGetFeatures, - CallingModeManagementGetCommon, - CallingModeManagementSwitchMultipleFeatures, - CallingModeManagementGetFeature, - CallingModeManagementGetNormalOperation, - CallingModeManagementGetOperating, - CallingModeManagementSwitchNormalOperation, - CallingModeManagementSwitchSingleFeature, - CallingModeManagementExtendCurrentOperatingDuration, - CallingCustomerAssistListWrapUpReasons, - CallingCustomerAssistCreateWrapUpReason, - CallingCustomerAssistGetWrapUpReason, - CallingCustomerAssistUpdateWrapUpReason, - CallingCustomerAssistDeleteWrapUpReason, - CallingCustomerAssistValidateWrapUpReason, - CallingCustomerAssistGetAvailableQueues, - CallingCustomerAssistGetWrapUpReasonSettings, - CallingCustomerAssistUpdateWrapUpReasonSettings, - CallingCustomerAssistGetScreenPopConfiguration, - CallingCustomerAssistUpdateScreenPopConfiguration, - CallingCustomerAssistListAvailableAgents, - CallingMetricsGetCallQualityStats, -} diff --git a/pkg/webexops/zz_cc.go b/pkg/webexops/zz_cc.go deleted file mode 100644 index d651e8e..0000000 --- a/pkg/webexops/zz_cc.go +++ /dev/null @@ -1,8174 +0,0 @@ -// Code generated by codegen/generate_cli.py; DO NOT EDIT. - -package webexops - -var CCAgentWellbeingSubscribeRealtimeBurnoutEvents = &Operation{ - ID: "CCAgentWellbeingSubscribeRealtimeBurnoutEvents", Area: "cc", Group: "agent-wellbeing", Command: "subscribe-realtime-burnout-events", - Summary: "Subscribe for realtime burnout events", - Description: "This endpoint provides real-time burnout events that are generated for agents belonging to the organization. It gives us a WebSocket URL to which we can connect to receive the real-time burnout events.", - Method: "POST", Path: "/v1/agentburnout/subscribe", Host: HostCC, - Params: []Param{ - {Name: "X-ORGANIZATION-ID", In: InHeader, Flag: "x-organization-id", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "destinationUrl", Flag: "destination-url", Type: "string"}, - {Name: "eventTypes", Flag: "event-types", Type: "[]string"}, - {Name: "name", Flag: "name", Type: "string"}, - {Name: "description", Flag: "description", Type: "string"}, - {Name: "secret", Flag: "secret", Type: "string"}, - {Name: "orgId", Flag: "org-id", Type: "string"}, - }}, -} - -var CCAgentWellbeingRecordRealtimeBurnoutEvents = &Operation{ - ID: "CCAgentWellbeingRecordRealtimeBurnoutEvents", Area: "cc", Group: "agent-wellbeing", Command: "record-realtime-burnout-events", - Summary: "Record the realtime burnout events", - Description: "The endpoint need to be invoked by Partners and Third-Party that will subscribe to the Agent Burnout system, in order to take certain action based on the agent burnout index calculated.", - Method: "POST", Path: "/v1/agentburnout/action", Host: HostCC, - Params: []Param{ - {Name: "X-ORGANIZATION-ID", In: InHeader, Flag: "x-organization-id", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{}, -} - -var CCAgentWellbeingGetBurnoutId = &Operation{ - ID: "CCAgentWellbeingGetBurnoutId", Area: "cc", Group: "agent-wellbeing", Command: "get-burnout-id", - Summary: "Get specific Agent Burnout resource by ID", - Description: "Retrieve an existing Agent Burnout resource by ID in a given organization. Deprecated. Use GET /ai-feature/agent-burnout/{id} instead.", - Method: "GET", Path: "/organization/{orgid}/agent-burnout/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Agent Burnout resource."}, - }, -} - -var CCAgentWellbeingUpdateBurnoutId = &Operation{ - ID: "CCAgentWellbeingUpdateBurnoutId", Area: "cc", Group: "agent-wellbeing", Command: "update-burnout-id", - Summary: "Update specific Agent Burnout resource by ID", - Description: "Update an existing Agent Burnout resource by ID in a given organization. Deprecated. Use PUT /ai-feature/agent-burnout/{id} instead.", - Method: "PUT", Path: "/organization/{orgid}/agent-burnout/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Agent Burnout resource."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "agentInclusionType", Flag: "agent-inclusion-type", Type: "string"}, - {Name: "enabled", Flag: "enabled", Type: "bool"}, - {Name: "organizationId", Flag: "organization-id", Type: "string"}, - {Name: "id", Flag: "id", Type: "string"}, - {Name: "version", Flag: "version", Type: "int64"}, - {Name: "wellnessBreakReminders", Flag: "wellness-break-reminders", Type: "string"}, - {Name: "createdTime", Flag: "created-time", Type: "int64"}, - {Name: "lastUpdatedTime", Flag: "last-updated-time", Type: "int64"}, - }}, -} - -var CCAgentWellbeingListBurnout = &Operation{ - ID: "CCAgentWellbeingListBurnout", Area: "cc", Group: "agent-wellbeing", Command: "list-burnout", - Summary: "List Agent Burnout resource(s)", - Description: "Retrieve a list of Agent Burnout resource(s) in a given organization.Only one entry per organization can exist for Agent Burnout resource. Deprecated. Use GET /v2/ai-feature/agent-burnout instead.", - Method: "GET", Path: "/organization/{orgid}/v2/agent-burnout", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "filter", In: InQuery, Flag: "filter", Usage: "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime \n\nThe examples below show some search queries\n- id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\n- id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide.\n\nNote: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter.\n"}, - {Name: "attributes", In: InQuery, Flag: "attributes", Usage: "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCAutoCsatCreateMappedQuestion = &Operation{ - ID: "CCAutoCsatCreateMappedQuestion", Area: "cc", Group: "auto-csat", Command: "create-mapped-question", - Summary: "Create a new Auto CSAT mapped Question", - Description: "Create a new Auto CSAT mapped Question in a given organization. Deprecated. Use POST /ai-feature/auto-csat/question instead.", - Method: "POST", Path: "/organization/{orgid}/auto-csat/{autoCsatId}/question", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "autoCsatId", In: InPath, Flag: "auto-csat-id", Usage: "Resource ID of the Auto CSAT resource"}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "questionId", Flag: "question-id", Type: "string"}, - {Name: "questionnaireId", Flag: "questionnaire-id", Type: "string"}, - {Name: "organizationId", Flag: "organization-id", Type: "string"}, - {Name: "id", Flag: "id", Type: "string"}, - {Name: "version", Flag: "version", Type: "int64"}, - {Name: "createdTime", Flag: "created-time", Type: "int64"}, - {Name: "lastUpdatedTime", Flag: "last-updated-time", Type: "int64"}, - }}, -} - -var CCAutoCsatBulkSaveMappedQuestion = &Operation{ - ID: "CCAutoCsatBulkSaveMappedQuestion", Area: "cc", Group: "auto-csat", Command: "bulk-save-mapped-question", - Summary: "Bulk save Auto CSAT mapped Question(s)", - Description: "Create, Update or delete Auto CSAT mapped Question(s) in bulk for Auto CSAT resource in a given organization. Deprecated. Use POST /ai-feature/auto-csat/question/bulk instead.", - Method: "POST", Path: "/organization/{orgid}/auto-csat/{autoCsatId}/question/bulk", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "autoCsatId", In: InPath, Flag: "auto-csat-id", Usage: "Resource ID of the Auto CSAT resource"}, - }, - Body: &Body{}, -} - -var CCAutoCsatGetMappedQuestionId = &Operation{ - ID: "CCAutoCsatGetMappedQuestionId", Area: "cc", Group: "auto-csat", Command: "get-mapped-question-id", - Summary: "Get specific Auto CSAT mapped Question by ID", - Description: "Retrieve an existing Auto CSAT mapped Question by ID in a given organization. Deprecated. Use GET /ai-feature/auto-csat/question/{id} instead.", - Method: "GET", Path: "/organization/{orgid}/auto-csat/{autoCsatId}/question/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "autoCsatId", In: InPath, Flag: "auto-csat-id", Usage: "Resource ID of the Auto CSAT resource"}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Auto CSAT mapped Question."}, - }, -} - -var CCAutoCsatDeleteMappedQuestionId = &Operation{ - ID: "CCAutoCsatDeleteMappedQuestionId", Area: "cc", Group: "auto-csat", Command: "delete-mapped-question-id", - Summary: "Delete specific Auto CSAT mapped Question by ID", - Description: "Delete an existing Auto CSAT mapped Question by ID in a given organization. Deprecated. Use DELETE /ai-feature/auto-csat/question/{id} instead.", - Method: "DELETE", Path: "/organization/{orgid}/auto-csat/{autoCsatId}/question/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "autoCsatId", In: InPath, Flag: "auto-csat-id", Usage: "Resource ID of the Auto CSAT resource"}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Auto CSAT mapped Question."}, - }, -} - -var CCAutoCsatGet = &Operation{ - ID: "CCAutoCsatGet", Area: "cc", Group: "auto-csat", Command: "get", - Aliases: []string{"get-id"}, - Summary: "Get specific Auto CSAT resource by ID", - Description: "Retrieve an existing Auto CSAT resource by ID in a given organization. Deprecated. Use GET /ai-feature/auto-csat/{id} instead.", - Method: "GET", Path: "/organization/{orgid}/auto-csat/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Auto CSAT resource."}, - }, -} - -var CCAutoCsatUpdate = &Operation{ - ID: "CCAutoCsatUpdate", Area: "cc", Group: "auto-csat", Command: "update", - Aliases: []string{"update-id"}, - Summary: "Update specific Auto CSAT resource by ID", - Description: "Update an existing Auto CSAT resource by ID in a given organization. Deprecated. Use PUT /ai-feature/auto-csat/{id} instead.", - Method: "PUT", Path: "/organization/{orgid}/auto-csat/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Auto CSAT resource."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "agentInclusionType", Flag: "agent-inclusion-type", Type: "string"}, - {Name: "enabled", Flag: "enabled", Type: "bool"}, - {Name: "selectedGlobalVariableId", Flag: "selected-global-variable-id", Type: "string"}, - {Name: "surveyDataSource", Flag: "survey-data-source", Type: "string"}, - {Name: "organizationId", Flag: "organization-id", Type: "string"}, - {Name: "id", Flag: "id", Type: "string"}, - {Name: "version", Flag: "version", Type: "int64"}, - {Name: "createdTime", Flag: "created-time", Type: "int64"}, - {Name: "lastUpdatedTime", Flag: "last-updated-time", Type: "int64"}, - }}, -} - -var CCAutoCsatList = &Operation{ - ID: "CCAutoCsatList", Area: "cc", Group: "auto-csat", Command: "list", - Summary: "List Auto CSAT resource(s)", - Description: "Retrieve a list of Auto CSAT resource(s) in a given organization.Only one entry per organization can exist for Auto CSAT resource. Deprecated. Use GET /v2/ai-feature/auto-csat instead.", - Method: "GET", Path: "/organization/{orgid}/v2/auto-csat", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "filter", In: InQuery, Flag: "filter", Usage: "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime \n\nThe examples below show some search queries\n- id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\n- id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide.\n\nNote: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter.\n"}, - {Name: "attributes", In: InQuery, Flag: "attributes", Usage: "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCAutoCsatListMappedQuestion = &Operation{ - ID: "CCAutoCsatListMappedQuestion", Area: "cc", Group: "auto-csat", Command: "list-mapped-question", - Summary: "List Auto CSAT mapped Question(s)", - Description: "Retrieve a list of Auto CSAT mapped Question(s) in a given organization. Deprecated. Use GET /v2/ai-feature/auto-csat/question instead.", - Method: "GET", Path: "/organization/{orgid}/v2/auto-csat/{autoCsatId}/question", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "autoCsatId", In: InPath, Flag: "auto-csat-id", Usage: "Resource ID of the Auto CSAT resource"}, - {Name: "filter", In: InQuery, Flag: "filter", Usage: "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime \n\nThe examples below show some search queries\n- id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\n- id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide.\n\nNote: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter.\n"}, - {Name: "attributes", In: InQuery, Flag: "attributes", Usage: "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported.(id, questionId, questionnaireId)"}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCGeneratedSummariesGet = &Operation{ - ID: "CCGeneratedSummariesGet", Area: "cc", Group: "generated-summaries", Command: "get", - Aliases: []string{"get-id"}, - Summary: "Get specific Generated Summaries resource by ID", - Description: "Retrieve an existing Generated Summaries resource by ID in a given organization. Deprecated. Use GET /ai-feature/generated-summaries/{id} instead.", - Method: "GET", Path: "/organization/{orgid}/generated-summaries/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Generated Summaries resource."}, - }, -} - -var CCGeneratedSummariesUpdate = &Operation{ - ID: "CCGeneratedSummariesUpdate", Area: "cc", Group: "generated-summaries", Command: "update", - Aliases: []string{"update-id"}, - Summary: "Update specific Generated Summaries resource by ID", - Description: "Update an existing Generated Summaries resource by ID in a given organization. Deprecated. Use PUT /ai-feature/generated-summaries/{id} instead.", - Method: "PUT", Path: "/organization/{orgid}/generated-summaries/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Generated Summaries resource."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "organizationId", Flag: "organization-id", Type: "string"}, - {Name: "id", Flag: "id", Type: "string"}, - {Name: "version", Flag: "version", Type: "int64"}, - {Name: "callDropSummariesEnabled", Flag: "call-drop-summaries-enabled", Type: "bool"}, - {Name: "virtualAgentTransferSummariesEnabled", Flag: "virtual-agent-transfer-summaries-enabled", Type: "bool"}, - {Name: "consultTransferSummariesEnabled", Flag: "consult-transfer-summaries-enabled", Type: "bool"}, - {Name: "agentInclusionType", Flag: "agent-inclusion-type", Type: "string"}, - {Name: "createdTime", Flag: "created-time", Type: "int64"}, - {Name: "lastUpdatedTime", Flag: "last-updated-time", Type: "int64"}, - }}, -} - -var CCGeneratedSummariesList = &Operation{ - ID: "CCGeneratedSummariesList", Area: "cc", Group: "generated-summaries", Command: "list", - Summary: "List Generated Summaries resource(s)", - Description: "Retrieve a list of Generated Summaries resource(s) in a given organization.Only one entry per organization can exist for Generated Summaries resource. Deprecated. Use GET /v2/ai-feature/generated-summaries instead.", - Method: "GET", Path: "/organization/{orgid}/v2/generated-summaries", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "filter", In: InQuery, Flag: "filter", Usage: "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime \n\nThe examples below show some search queries\n- id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\n- id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide.\n\nNote: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter.\n"}, - {Name: "attributes", In: InQuery, Flag: "attributes", Usage: "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCBusinessHourList = &Operation{ - ID: "CCBusinessHourList", Area: "cc", Group: "business-hour", Command: "list", - Summary: "List Business Hours resources", - Description: "Retrieve a list of Business Hours resources in a given organization.\n Note: Returning array fields in the List (Get All) API response is deprecated. To retrieve the complete resource with all fields, please use the Get-by-ID API instead.", - Method: "GET", Path: "/organization/{orgid}/v2/business-hours", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "filter", In: InQuery, Flag: "filter", Usage: "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, workingHours, createdTime, lastUpdatedTime \n\nThe examples below show some search queries\n- id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\n- id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide.\n\nNote: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter.\n"}, - {Name: "attributes", In: InQuery, Flag: "attributes", Usage: "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported. except (workingHours)"}, - {Name: "search", In: InQuery, Flag: "search", Usage: "Filter data based on the search keyword.Supported search columns(name)\n\nThe examples below show some search queries\n- \"Cisco\"\n- field==\"name\";value==\"Cisco\"\n- fields=in=(\"name\");value==\"Cisco\"\n"}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - {Name: "sort", In: InQuery, Flag: "sort", Usage: "Sorting criteria in the format: property(, asc | desc). Default sort order is ascending. Supported sortable fields (name, timezone, createdTime, lastUpdatedTime). \n\n\nThe examples below show some sort queries\n- name,asc\n- timezone,desc\n"}, - {Name: "includeCount", In: InQuery, Flag: "include-count", Usage: "Enable this flag to get the count of working hours."}, - {Name: "singleObjectResponse", In: InQuery, Flag: "single-object-response", Usage: "Specify whether to include array fields in the response. This query parameter should be used only when the response contains a single record. It is not supported for responses with multiple objects and throws an exception."}, - }, - Paging: &Paging{}, -} - -var CCBusinessHourCreate = &Operation{ - ID: "CCBusinessHourCreate", Area: "cc", Group: "business-hour", Command: "create", - Summary: "Create a new Business Hours resource", - Description: "Create a new Business Hours resource in a given organization.", - Method: "POST", Path: "/organization/{orgid}/business-hours", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{}, -} - -var CCBusinessHourBulkSave = &Operation{ - ID: "CCBusinessHourBulkSave", Area: "cc", Group: "business-hour", Command: "bulk-save", - Summary: "Bulk save Business Hours resources", - Description: "Create, Update or delete Business Hours resources in bulk in a given organization.", - Method: "POST", Path: "/organization/{orgid}/business-hours/bulk", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{}, -} - -var CCBusinessHourBulkExport = &Operation{ - ID: "CCBusinessHourBulkExport", Area: "cc", Group: "business-hour", Command: "bulk-export", - Summary: "Bulk export Business Hours resource(s)", - Description: "Export all Business Hours resource(s) in a given organization.", - Method: "GET", Path: "/organization/{orgid}/business-hours/bulk-export", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCBusinessHourGet = &Operation{ - ID: "CCBusinessHourGet", Area: "cc", Group: "business-hour", Command: "get", - Aliases: []string{"get-id"}, - Summary: "Get specific Business Hours resource by ID", - Description: "Retrieve an existing Business Hours resource by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/business-hours/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Business Hour."}, - }, -} - -var CCBusinessHourUpdate = &Operation{ - ID: "CCBusinessHourUpdate", Area: "cc", Group: "business-hour", Command: "update", - Aliases: []string{"update-id"}, - Summary: "Update specific Business Hours resource by ID", - Description: "Update an existing Business Hours resource by ID in a given organization.", - Method: "PUT", Path: "/organization/{orgid}/business-hours/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Business Hour."}, - }, - Body: &Body{}, -} - -var CCBusinessHourDelete = &Operation{ - ID: "CCBusinessHourDelete", Area: "cc", Group: "business-hour", Command: "delete", - Aliases: []string{"delete-id"}, - Summary: "Delete specific Business Hours resource by ID", - Description: "Delete an existing Business Hours resource by ID in a given organization.", - Method: "DELETE", Path: "/organization/{orgid}/business-hours/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Business Hour."}, - }, -} - -var CCBusinessHourListReferences = &Operation{ - ID: "CCBusinessHourListReferences", Area: "cc", Group: "business-hour", Command: "list-references", - Summary: "List references for a specific Business Hours resource", - Description: "Retrieve a list of all entities that have reference to an existing Business Hours resource by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/business-hours/{id}/incoming-references", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "ID of this contact center resource."}, - {Name: "type", In: InQuery, Flag: "type", Usage: "Entity type of the other entity that has a reference to this specific entity."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCBusinessHourListV1 = &Operation{ - ID: "CCBusinessHourListV1", Area: "cc", Group: "business-hour", Command: "list-v1", - Summary: "List Business Hours (v1)", - Description: "Lists business hours through the v1 route. Items leave out working hours, so read each one for them. Each item carries lastUpdatedTime.", - Method: "GET", Path: "/organization/{orgid}/business-hours", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Page number, from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Items per page."}, - }, - Paging: &Paging{}, -} - -var CCHolidayListList = &Operation{ - ID: "CCHolidayListList", Area: "cc", Group: "holiday-list", Command: "list", - Summary: "List Holiday Lists", - Description: "Retrieve a list of Holiday Lists in a given organization.\n Note: Returning array fields in the List (Get All) API response is deprecated. To retrieve the complete resource with all fields, please use the Get-by-ID API instead.", - Method: "GET", Path: "/organization/{orgid}/v2/holiday-list", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "filter", In: InQuery, Flag: "filter", Usage: "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, holidays, createdTime, lastUpdatedTime \n\nThe examples below show some search queries\n- id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\n- id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide.\n\nNote: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter.\n"}, - {Name: "attributes", In: InQuery, Flag: "attributes", Usage: "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported. except holidays"}, - {Name: "search", In: InQuery, Flag: "search", Usage: "Filter data based on the search keyword.Supported search columns(name)\n\nThe examples below show some search queries\n- \"Cisco\"\n- field==\"name\";value==\"Cisco\"\n- fields=in=(\"name\");value==\"Cisco\"\n"}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - {Name: "sort", In: InQuery, Flag: "sort", Usage: "Sorting criteria in the format: property(, asc | desc). Default sort order is ascending. Supported sortable fields (name, createdTime, lastUpdatedTime). \n\n\nThe examples below show some sort queries\n- name,asc\n- createdTime,desc\n"}, - {Name: "includeCount", In: InQuery, Flag: "include-count", Usage: "Enable this flag to get the count of holidays."}, - {Name: "singleObjectResponse", In: InQuery, Flag: "single-object-response", Usage: "Specify whether to include array fields in the response. This query parameter should be used only when the response contains a single record. It is not supported for responses with multiple objects and throws an exception."}, - }, - Paging: &Paging{}, -} - -var CCHolidayListCreate = &Operation{ - ID: "CCHolidayListCreate", Area: "cc", Group: "holiday-list", Command: "create", - Summary: "Create a new Holiday List", - Description: "Create a new Holiday List in a given organization.", - Method: "POST", Path: "/organization/{orgid}/holiday-list", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{}, -} - -var CCHolidayListBulkSave = &Operation{ - ID: "CCHolidayListBulkSave", Area: "cc", Group: "holiday-list", Command: "bulk-save", - Summary: "Bulk save Holiday Lists", - Description: "Create, Update or delete Holiday Lists in bulk in a given organization.", - Method: "POST", Path: "/organization/{orgid}/holiday-list/bulk", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{}, -} - -var CCHolidayListBulkExport = &Operation{ - ID: "CCHolidayListBulkExport", Area: "cc", Group: "holiday-list", Command: "bulk-export", - Summary: "Bulk export Holiday List(s)", - Description: "Export all Holiday List(s) in a given organization.", - Method: "GET", Path: "/organization/{orgid}/holiday-list/bulk-export", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCHolidayListGet = &Operation{ - ID: "CCHolidayListGet", Area: "cc", Group: "holiday-list", Command: "get", - Aliases: []string{"get-id"}, - Summary: "Get specific Holiday List by ID", - Description: "Retrieve an existing Holiday List by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/holiday-list/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Holiday List."}, - }, -} - -var CCHolidayListUpdate = &Operation{ - ID: "CCHolidayListUpdate", Area: "cc", Group: "holiday-list", Command: "update", - Aliases: []string{"update-id"}, - Summary: "Update specific Holiday List by ID", - Description: "Update an existing Holiday List by ID in a given organization.", - Method: "PUT", Path: "/organization/{orgid}/holiday-list/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Holiday List."}, - }, - Body: &Body{}, -} - -var CCHolidayListDelete = &Operation{ - ID: "CCHolidayListDelete", Area: "cc", Group: "holiday-list", Command: "delete", - Aliases: []string{"delete-id"}, - Summary: "Delete specific Holiday List by ID", - Description: "Delete an existing Holiday List by ID in a given organization.", - Method: "DELETE", Path: "/organization/{orgid}/holiday-list/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Holiday List."}, - }, -} - -var CCHolidayListListReferences = &Operation{ - ID: "CCHolidayListListReferences", Area: "cc", Group: "holiday-list", Command: "list-references", - Summary: "List references for a specific Holiday List", - Description: "Retrieve a list of all entities that have reference to an existing Holiday List by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/holiday-list/{id}/incoming-references", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "ID of this contact center resource."}, - {Name: "type", In: InQuery, Flag: "type", Usage: "Entity type of the other entity that has a reference to this specific entity."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCOverridesList = &Operation{ - ID: "CCOverridesList", Area: "cc", Group: "overrides", Command: "list", - Summary: "List Overrides resource(s)", - Description: "Retrieve a list of Overrides resource(s) in a given organization.\n Note: Returning array fields in the List (Get All) API response is deprecated. To retrieve the complete resource with all fields, please use the Get-by-ID API instead.", - Method: "GET", Path: "/organization/{orgid}/v2/overrides", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "filter", In: InQuery, Flag: "filter", Usage: "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, overrides, createdTime, lastUpdatedTime \n\nThe examples below show some search queries\n- id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\n- id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide.\n\nNote: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter.\n"}, - {Name: "attributes", In: InQuery, Flag: "attributes", Usage: "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported. except (overrides)"}, - {Name: "search", In: InQuery, Flag: "search", Usage: "Filter data based on the search keyword.Supported search columns(name)\n\nThe examples below show some search queries\n- \"Cisco\"\n- field==\"name\";value==\"Cisco\"\n- fields=in=(\"name\");value==\"Cisco\"\n"}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - {Name: "sort", In: InQuery, Flag: "sort", Usage: "Sorting criteria in the format: property(, asc | desc). Default sort order is ascending. Supported sortable fields (name, timezone, createdTime, lastUpdatedTime). \n\n\nThe examples below show some sort queries\n- name,asc\n- createdTime,desc\n"}, - {Name: "includeLatestOverride", In: InQuery, Flag: "include-latest-override", Usage: "Enable the flag to get the latest Override"}, - {Name: "singleObjectResponse", In: InQuery, Flag: "single-object-response", Usage: "Specifiy whether to include array fields in the response, This query param should use only if the response contain single record, if we are using for multiple objects response query param not supported and throws an exception."}, - }, - Paging: &Paging{}, -} - -var CCOverridesCreate = &Operation{ - ID: "CCOverridesCreate", Area: "cc", Group: "overrides", Command: "create", - Summary: "Create a new Overrides resource", - Description: "Create a new Overrides resource in a given organization.", - Method: "POST", Path: "/organization/{orgid}/overrides", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{}, -} - -var CCOverridesBulkSave = &Operation{ - ID: "CCOverridesBulkSave", Area: "cc", Group: "overrides", Command: "bulk-save", - Summary: "Bulk save Overrides resource(s)", - Description: "Create, Update or delete Overrides resource(s) in bulk in a given organization.", - Method: "POST", Path: "/organization/{orgid}/overrides/bulk", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{}, -} - -var CCOverridesBulkExport = &Operation{ - ID: "CCOverridesBulkExport", Area: "cc", Group: "overrides", Command: "bulk-export", - Summary: "Bulk export Overrides resource(s)", - Description: "Export all Overrides resource(s) in a given organization.", - Method: "GET", Path: "/organization/{orgid}/overrides/bulk-export", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCOverridesGet = &Operation{ - ID: "CCOverridesGet", Area: "cc", Group: "overrides", Command: "get", - Aliases: []string{"get-id"}, - Summary: "Get specific Overrides resource by ID", - Description: "Retrieve an existing Overrides resource by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/overrides/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Overrides resource."}, - }, -} - -var CCOverridesUpdate = &Operation{ - ID: "CCOverridesUpdate", Area: "cc", Group: "overrides", Command: "update", - Aliases: []string{"update-id"}, - Summary: "Update specific Overrides resource by ID", - Description: "Update an existing Overrides resource by ID in a given organization.", - Method: "PUT", Path: "/organization/{orgid}/overrides/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Overrides resource."}, - }, - Body: &Body{}, -} - -var CCOverridesDelete = &Operation{ - ID: "CCOverridesDelete", Area: "cc", Group: "overrides", Command: "delete", - Aliases: []string{"delete-id"}, - Summary: "Delete specific Overrides resource by ID", - Description: "Delete an existing Overrides resource by ID in a given organization.", - Method: "DELETE", Path: "/organization/{orgid}/overrides/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Overrides resource."}, - }, -} - -var CCOverridesListReferences = &Operation{ - ID: "CCOverridesListReferences", Area: "cc", Group: "overrides", Command: "list-references", - Summary: "List references for a specific Overrides resource", - Description: "Retrieve a list of all entities that have reference to an existing Overrides resource by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/overrides/{id}/incoming-references", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "ID of this contact center resource."}, - {Name: "type", In: InQuery, Flag: "type", Usage: "Entity type of the other entity that has a reference to this specific entity."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCAddressBookList = &Operation{ - ID: "CCAddressBookList", Area: "cc", Group: "address-book", Command: "list", - Summary: "List Address Book(s)", - Description: "Retrieve a list of Address Book(s) in a given organization.", - Method: "GET", Path: "/organization/{orgid}/v3/address-book", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "filter", In: InQuery, Flag: "filter", Usage: "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime \n\nThe examples below show some search queries\n- id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\n- id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide.\n\nNote: values to be used in the filter syntax should not contain space, and if so kindly bound it with quotes to apply filter.\n"}, - {Name: "attributes", In: InQuery, Flag: "attributes", Usage: "Specify the attributes to be returned.Default all attributes are returned along with specified columns. All Attributes are supported"}, - {Name: "search", In: InQuery, Flag: "search", Usage: "Filter data based on the search keyword.Supported search columns(name, number)\n\nThe examples below show some search queries\n- \"Cisco\"\n- field==\"name\";value==\"Cisco\"\n- fields=in=(\"name\",\"number\");value==\"Cisco\"\n"}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCAddressBookCreate = &Operation{ - ID: "CCAddressBookCreate", Area: "cc", Group: "address-book", Command: "create", - Summary: "Create a new Address Book", - Description: "Create a new Address Book in a given organization.", - Method: "POST", Path: "/organization/{orgid}/v3/address-book", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "name", Flag: "name", Type: "string"}, - {Name: "parentType", Flag: "parent-type", Type: "string"}, - {Name: "organizationId", Flag: "organization-id", Type: "string"}, - {Name: "id", Flag: "id", Type: "string"}, - {Name: "version", Flag: "version", Type: "int64"}, - {Name: "description", Flag: "description", Type: "string"}, - {Name: "siteId", Flag: "site-id", Type: "string"}, - }}, -} - -var CCAddressBookBulkExport = &Operation{ - ID: "CCAddressBookBulkExport", Area: "cc", Group: "address-book", Command: "bulk-export", - Summary: "Bulk export Address Book(s)", - Description: "Export all Address Book(s) in a given organization.", - Method: "GET", Path: "/organization/{orgid}/address-book/bulk-export", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCAddressBookCreateEntry = &Operation{ - ID: "CCAddressBookCreateEntry", Area: "cc", Group: "address-book", Command: "create-entry", - Summary: "Create a new Address Book Entry", - Description: "Create a new Address Book Entry in a given organization.", - Method: "POST", Path: "/organization/{orgid}/address-book/{addressBookId}/entry", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "addressBookId", In: InPath, Flag: "address-book-id", Usage: "Resource ID of the Address Book"}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "name", Flag: "name", Type: "string"}, - {Name: "number", Flag: "number", Type: "string"}, - {Name: "organizationId", Flag: "organization-id", Type: "string"}, - {Name: "id", Flag: "id", Type: "string"}, - {Name: "version", Flag: "version", Type: "int64"}, - }}, -} - -var CCAddressBookBulkSaveEntry = &Operation{ - ID: "CCAddressBookBulkSaveEntry", Area: "cc", Group: "address-book", Command: "bulk-save-entry", - Summary: "Bulk save Address Book Entry(s)", - Description: "Create, Update or delete Address Book Entry(s) in bulk for an Address Book in a given organization.", - Method: "POST", Path: "/organization/{orgid}/address-book/{addressBookId}/entry/bulk", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "addressBookId", In: InPath, Flag: "address-book-id", Usage: "Resource ID of the Address Book"}, - }, - Body: &Body{}, -} - -var CCAddressBookGetEntryId = &Operation{ - ID: "CCAddressBookGetEntryId", Area: "cc", Group: "address-book", Command: "get-entry-id", - Summary: "Get specific Address Book Entry by ID", - Description: "Retrieve an existing Address Book Entry by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/address-book/{addressBookId}/entry/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "addressBookId", In: InPath, Flag: "address-book-id", Usage: "Resource ID of the Address Book"}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Address Book Entry"}, - }, -} - -var CCAddressBookUpdateEntryId = &Operation{ - ID: "CCAddressBookUpdateEntryId", Area: "cc", Group: "address-book", Command: "update-entry-id", - Summary: "Update specific Address Book Entry by ID", - Description: "Update an existing Address Book Entry by ID in a given organization.", - Method: "PUT", Path: "/organization/{orgid}/address-book/{addressBookId}/entry/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "addressBookId", In: InPath, Flag: "address-book-id", Usage: "Resource ID of the Address Book"}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Address Book Entry"}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "name", Flag: "name", Type: "string"}, - {Name: "number", Flag: "number", Type: "string"}, - {Name: "organizationId", Flag: "organization-id", Type: "string"}, - {Name: "id", Flag: "id", Type: "string"}, - {Name: "version", Flag: "version", Type: "int64"}, - }}, -} - -var CCAddressBookDeleteEntryId = &Operation{ - ID: "CCAddressBookDeleteEntryId", Area: "cc", Group: "address-book", Command: "delete-entry-id", - Summary: "Delete specific Address Book Entry by ID", - Description: "Delete an existing Address Book Entry by ID in a given organization.", - Method: "DELETE", Path: "/organization/{orgid}/address-book/{addressBookId}/entry/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "addressBookId", In: InPath, Flag: "address-book-id", Usage: "Resource ID of the Address Book"}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Address Book Entry"}, - }, -} - -var CCAddressBookGet = &Operation{ - ID: "CCAddressBookGet", Area: "cc", Group: "address-book", Command: "get", - Aliases: []string{"get-id"}, - Summary: "Get specific Address Book by ID", - Description: "Retrieve an existing Address Book by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/v3/address-book/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Address Book."}, - }, -} - -var CCAddressBookUpdate = &Operation{ - ID: "CCAddressBookUpdate", Area: "cc", Group: "address-book", Command: "update", - Aliases: []string{"update-id"}, - Summary: "Update specific Address Book by ID", - Description: "Update an existing Address Book by ID in a given organization.", - Method: "PUT", Path: "/organization/{orgid}/v3/address-book/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Address Book."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "name", Flag: "name", Type: "string"}, - {Name: "parentType", Flag: "parent-type", Type: "string"}, - {Name: "organizationId", Flag: "organization-id", Type: "string"}, - {Name: "id", Flag: "id", Type: "string"}, - {Name: "version", Flag: "version", Type: "int64"}, - {Name: "description", Flag: "description", Type: "string"}, - {Name: "siteId", Flag: "site-id", Type: "string"}, - }}, -} - -var CCAddressBookDelete = &Operation{ - ID: "CCAddressBookDelete", Area: "cc", Group: "address-book", Command: "delete", - Aliases: []string{"delete-id"}, - Summary: "Delete specific Address Book by ID", - Description: "Delete an existing Address Book by ID in a given organization.", - Method: "DELETE", Path: "/organization/{orgid}/v3/address-book/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Address Book."}, - }, -} - -var CCAddressBookListReferences = &Operation{ - ID: "CCAddressBookListReferences", Area: "cc", Group: "address-book", Command: "list-references", - Summary: "List references for a specific Address Book", - Description: "Retrieve a list of all entities that have reference to an existing Address Book by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/address-book/{id}/incoming-references", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "ID of this contact center resource."}, - {Name: "type", In: InQuery, Flag: "type", Usage: "Entity type of the other entity that has a reference to this specific entity."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCAddressBookListEntry = &Operation{ - ID: "CCAddressBookListEntry", Area: "cc", Group: "address-book", Command: "list-entry", - Summary: "List Address Book Entry(s)", - Description: "Retrieve a list of Address Book Entry(s) in a given organization.", - Method: "GET", Path: "/organization/{orgid}/v2/address-book/{addressBookId}/entry", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "addressBookId", In: InPath, Flag: "address-book-id", Usage: "Resource ID of the Address Book"}, - {Name: "filter", In: InQuery, Flag: "filter", Usage: "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime \n\nThe examples below show some search queries\n- id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\n- id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide.\n\nNote: values to be used in the filter syntax should not contain space, and if so kindly bound it with quotes to apply filter.\n"}, - {Name: "attributes", In: InQuery, Flag: "attributes", Usage: "Specify the attributes to be returned.Default all attributes are returned along with specified columns. All Attributes are supported"}, - {Name: "search", In: InQuery, Flag: "search", Usage: "Filter data based on the search keyword.Supported search columns(name, number)\n\nThe examples below show some search queries\n- \"Cisco\"\n- field==\"name\";value==\"Cisco\"\n- fields=in=(\"name\",\"number\");value==\"Cisco\"\n"}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCAudioFilesCreate = &Operation{ - ID: "CCAudioFilesCreate", Area: "cc", Group: "audio-files", Command: "create", - Summary: "Create a new Audio File", - Description: "Create a new Audio File in a given organization.", - Method: "POST", Path: "/organization/{orgid}/audio-file", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{}, -} - -var CCAudioFilesGet = &Operation{ - ID: "CCAudioFilesGet", Area: "cc", Group: "audio-files", Command: "get", - Aliases: []string{"get-id"}, - Summary: "Get specific Audio File by ID", - Description: "Retrieve an existing Audio File by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/audio-file/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Audio File."}, - {Name: "includeUrl", In: InQuery, Flag: "include-url", Usage: "Indicates if the URL for downloading Audio Fileshould be included in the response."}, - }, -} - -var CCAudioFilesUpdate = &Operation{ - ID: "CCAudioFilesUpdate", Area: "cc", Group: "audio-files", Command: "update", - Aliases: []string{"update-id"}, - Summary: "Update specific Audio File by ID", - Description: "Update an existing Audio File by ID in a given organization.", - Method: "PUT", Path: "/organization/{orgid}/audio-file/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Audio File."}, - }, - Body: &Body{}, -} - -var CCAudioFilesDelete = &Operation{ - ID: "CCAudioFilesDelete", Area: "cc", Group: "audio-files", Command: "delete", - Aliases: []string{"delete-id"}, - Summary: "Delete specific Audio File by ID", - Description: "Delete an existing Audio File by ID in a given organization.", - Method: "DELETE", Path: "/organization/{orgid}/audio-file/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Audio File."}, - }, -} - -var CCAudioFilesPatch = &Operation{ - ID: "CCAudioFilesPatch", Area: "cc", Group: "audio-files", Command: "patch", - Aliases: []string{"patch-id"}, - Summary: "Partially update Audio File by ID", - Description: "Partially update Audio File by ID in a given organization.", - Method: "PATCH", Path: "/organization/{orgid}/audio-file/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Audio File."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "description", Flag: "description", Type: "string"}, - }}, -} - -var CCAudioFilesListReferences = &Operation{ - ID: "CCAudioFilesListReferences", Area: "cc", Group: "audio-files", Command: "list-references", - Summary: "List references for a specific Audio File", - Description: "Retrieve a list of all entities that have reference to an existing Audio File by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/audio-file/{id}/incoming-references", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "ID of this contact center resource."}, - {Name: "type", In: InQuery, Flag: "type", Usage: "Entity type of the other entity that has a reference to this specific entity."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCAudioFilesList = &Operation{ - ID: "CCAudioFilesList", Area: "cc", Group: "audio-files", Command: "list", - Summary: "List Audio File(s)", - Description: "Retrieve a list of Audio File(s) in a given organization.", - Method: "GET", Path: "/organization/{orgid}/v2/audio-file", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "filter", In: InQuery, Flag: "filter", Usage: "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime \n\nThe examples below show some search queries\n- id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\n- id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide.\n\nNote: values to be used in the filter syntax should not contain space, and if so kindly bound it with quotes to apply filter.\n"}, - {Name: "attributes", In: InQuery, Flag: "attributes", Usage: "Specify the attributes to be returned.Default all attributes are returned along with specified columns. All Attributes are supported except URL"}, - {Name: "search", In: InQuery, Flag: "search", Usage: "Filter data based on the search keyword.Supported search columns(name)\n\nThe examples below show some search queries\n- \"Cisco\"\n- field==\"name\";value==\"Cisco\"\n- fields=in=(\"name\");value==\"Cisco\"\n"}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCAuxiliaryCodeList = &Operation{ - ID: "CCAuxiliaryCodeList", Area: "cc", Group: "auxiliary-code", Command: "list", - Summary: "List Auxiliary Code(s)", - Description: "Retrieve a list of Auxiliary Code(s) in a given organization.", - Method: "GET", Path: "/organization/{orgid}/v2/auxiliary-code", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "filter", In: InQuery, Flag: "filter", Usage: "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime, validBurnoutForWrapUpCode, validBurnoutForIdleCode \n\nThe examples below show some search queries\n- id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\n- id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide.\n\nNote: values to be used in the filter syntax should not contain space, and if so kindly bound it with quotes to apply filter.\n"}, - {Name: "attributes", In: InQuery, Flag: "attributes", Usage: "Specify the attributes to be returned.Default all attributes are returned along with specified columns. All Attributes are supported"}, - {Name: "search", In: InQuery, Flag: "search", Usage: "Filter data based on the search keyword.Supported search columns(name, description)\n\nThe examples below show some search queries\n- \"Cisco\"\n- field==\"name\";value==\"Cisco\"\n- fields=in=(\"name\",\"description\");value==\"Cisco\"\n"}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - {Name: "desktopProfileFilter", In: InQuery, Flag: "desktop-profile-filter", Usage: "If set to true, the API will return only the data that the user has access to according to its Desktop Profile. If set to false, the API will not check for Desktop Profile level access."}, - {Name: "supervisedUserId", In: InQuery, Flag: "supervised-user-id", Usage: "User Id of the Agent whose Agent Profile associated Idle Codes are to be fetched."}, - }, - Paging: &Paging{}, -} - -var CCAuxiliaryCodeCreate = &Operation{ - ID: "CCAuxiliaryCodeCreate", Area: "cc", Group: "auxiliary-code", Command: "create", - Summary: "Create a new Auxiliary Code", - Description: "Create a new Auxiliary Code in a given organization.", - Method: "POST", Path: "/organization/{orgid}/auxiliary-code", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "active", Flag: "active", Type: "bool"}, - {Name: "defaultCode", Flag: "default-code", Type: "bool"}, - {Name: "name", Flag: "name", Type: "string"}, - {Name: "workTypeCode", Flag: "work-type-code", Type: "string"}, - {Name: "workTypeId", Flag: "work-type-id", Type: "string"}, - {Name: "organizationId", Flag: "organization-id", Type: "string"}, - {Name: "id", Flag: "id", Type: "string"}, - {Name: "version", Flag: "version", Type: "int64"}, - {Name: "description", Flag: "description", Type: "string"}, - {Name: "isSystemCode", Flag: "is-system-code", Type: "bool"}, - {Name: "burnoutInclusion", Flag: "burnout-inclusion", Type: "string"}, - {Name: "systemDefault", Flag: "system-default", Type: "bool"}, - }}, -} - -var CCAuxiliaryCodeBulkSave = &Operation{ - ID: "CCAuxiliaryCodeBulkSave", Area: "cc", Group: "auxiliary-code", Command: "bulk-save", - Summary: "Bulk save Auxiliary Code(s)", - Description: "Create, Update or delete Auxiliary Code(s) in bulk in a given organization.", - Method: "POST", Path: "/organization/{orgid}/auxiliary-code/bulk", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{}, -} - -var CCAuxiliaryCodeBulkPartialUpdate = &Operation{ - ID: "CCAuxiliaryCodeBulkPartialUpdate", Area: "cc", Group: "auxiliary-code", Command: "bulk-partial-update", - Summary: "Bulk partial update Auxiliary Code(s)", - Description: "Update some or all properties for multiple Auxiliary codes in bulk in a given organization.", - Method: "PATCH", Path: "/organization/{orgid}/auxiliary-code/bulk", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{}, -} - -var CCAuxiliaryCodeBulkExport = &Operation{ - ID: "CCAuxiliaryCodeBulkExport", Area: "cc", Group: "auxiliary-code", Command: "bulk-export", - Summary: "Bulk export Auxiliary Code(s)", - Description: "Export all Auxiliary Code(s) in a given organization.", - Method: "GET", Path: "/organization/{orgid}/auxiliary-code/bulk-export", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCAuxiliaryCodePurgeInactive = &Operation{ - ID: "CCAuxiliaryCodePurgeInactive", Area: "cc", Group: "auxiliary-code", Command: "purge-inactive", - Summary: "Purge inactive Auxiliary Code(s)", - Description: "Purge inactive Auxiliary Code(s) older than the configured interval for a given organization.", - Method: "POST", Path: "/organization/{orgid}/auxiliary-code/purge-inactive-entities", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "nextStartId", In: InQuery, Flag: "next-start-id", Usage: "This is the entity ID from which items for the next purge batch with be selected."}, - }, -} - -var CCAuxiliaryCodeGet = &Operation{ - ID: "CCAuxiliaryCodeGet", Area: "cc", Group: "auxiliary-code", Command: "get", - Aliases: []string{"get-id"}, - Summary: "Get specific Auxiliary Code by ID", - Description: "Retrieve an existing Auxiliary Code by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/auxiliary-code/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Auxiliary Code"}, - }, -} - -var CCAuxiliaryCodeUpdate = &Operation{ - ID: "CCAuxiliaryCodeUpdate", Area: "cc", Group: "auxiliary-code", Command: "update", - Aliases: []string{"update-id"}, - Summary: "Update specific Auxiliary Code by ID", - Description: "Update an existing Auxiliary Code by ID in a given organization.", - Method: "PUT", Path: "/organization/{orgid}/auxiliary-code/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Auxiliary Code."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "active", Flag: "active", Type: "bool"}, - {Name: "defaultCode", Flag: "default-code", Type: "bool"}, - {Name: "name", Flag: "name", Type: "string"}, - {Name: "workTypeCode", Flag: "work-type-code", Type: "string"}, - {Name: "workTypeId", Flag: "work-type-id", Type: "string"}, - {Name: "organizationId", Flag: "organization-id", Type: "string"}, - {Name: "id", Flag: "id", Type: "string"}, - {Name: "version", Flag: "version", Type: "int64"}, - {Name: "description", Flag: "description", Type: "string"}, - {Name: "isSystemCode", Flag: "is-system-code", Type: "bool"}, - {Name: "burnoutInclusion", Flag: "burnout-inclusion", Type: "string"}, - {Name: "systemDefault", Flag: "system-default", Type: "bool"}, - }}, -} - -var CCAuxiliaryCodeDelete = &Operation{ - ID: "CCAuxiliaryCodeDelete", Area: "cc", Group: "auxiliary-code", Command: "delete", - Aliases: []string{"delete-id"}, - Summary: "Delete specific Auxiliary Code by ID", - Description: "Delete an existing Auxiliary Code by ID in a given organization.", - Method: "DELETE", Path: "/organization/{orgid}/auxiliary-code/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Auxiliary Code."}, - }, -} - -var CCAuxiliaryCodeListReferences = &Operation{ - ID: "CCAuxiliaryCodeListReferences", Area: "cc", Group: "auxiliary-code", Command: "list-references", - Summary: "List references for a specific Auxiliary Code", - Description: "Retrieve a list of all entities that have reference to an existing Auxiliary Code by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/auxiliary-code/{id}/incoming-references", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "ID of this contact center resource."}, - {Name: "type", In: InQuery, Flag: "type", Usage: "Entity type of the other entity that has a reference to this specific entity."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCContactNumberCreate = &Operation{ - ID: "CCContactNumberCreate", Area: "cc", Group: "contact-number", Command: "create", - Summary: "Create a new Contact Number", - Description: "Create a new Contact Number in a given organization.", - Method: "POST", Path: "/organization/{orgid}/contact-number", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "number", Flag: "number", Type: "string"}, - {Name: "organizationId", Flag: "organization-id", Type: "string"}, - {Name: "id", Flag: "id", Type: "string"}, - {Name: "version", Flag: "version", Type: "int64"}, - }}, -} - -var CCContactNumberListAll = &Operation{ - ID: "CCContactNumberListAll", Area: "cc", Group: "contact-number", Command: "list-all", - Summary: "List all contact numbers(property - number)", - Description: "Retrieve a list of only contact numbers(property - number) from Contact Number(s) without pagination in a given organization.", - Method: "GET", Path: "/organization/{orgid}/contact-number/all-numbers", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Paging: &Paging{}, -} - -var CCContactNumberBulkSave = &Operation{ - ID: "CCContactNumberBulkSave", Area: "cc", Group: "contact-number", Command: "bulk-save", - Summary: "Bulk save Contact Number(s)", - Description: "Create, Update or delete Contact Number(s) in bulk in a given organization.", - Method: "POST", Path: "/organization/{orgid}/contact-number/bulk", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{}, -} - -var CCContactNumberBulkExport = &Operation{ - ID: "CCContactNumberBulkExport", Area: "cc", Group: "contact-number", Command: "bulk-export", - Summary: "Bulk export Contact Number(s)", - Description: "Export all Contact Number(s) in a given organization.", - Method: "GET", Path: "/organization/{orgid}/contact-number/bulk-export", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCContactNumberGet = &Operation{ - ID: "CCContactNumberGet", Area: "cc", Group: "contact-number", Command: "get", - Aliases: []string{"get-id"}, - Summary: "Get specific Contact Number by ID", - Description: "Retrieve an existing Contact Number by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/contact-number/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Contact Number."}, - }, -} - -var CCContactNumberUpdate = &Operation{ - ID: "CCContactNumberUpdate", Area: "cc", Group: "contact-number", Command: "update", - Aliases: []string{"update-id"}, - Summary: "Update specific Contact Number by ID", - Description: "Update an existing Contact Number by ID in a given organization.", - Method: "PUT", Path: "/organization/{orgid}/contact-number/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Contact Number."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "number", Flag: "number", Type: "string"}, - {Name: "organizationId", Flag: "organization-id", Type: "string"}, - {Name: "id", Flag: "id", Type: "string"}, - {Name: "version", Flag: "version", Type: "int64"}, - }}, -} - -var CCContactNumberDelete = &Operation{ - ID: "CCContactNumberDelete", Area: "cc", Group: "contact-number", Command: "delete", - Aliases: []string{"delete-id"}, - Summary: "Delete specific Contact Number by ID", - Description: "Delete an existing Contact Number by ID in a given organization.", - Method: "DELETE", Path: "/organization/{orgid}/contact-number/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Contact Number."}, - }, -} - -var CCContactNumberList = &Operation{ - ID: "CCContactNumberList", Area: "cc", Group: "contact-number", Command: "list", - Summary: "List Contact Number(s)", - Description: "Retrieve a list of Contact Number(s) in a given organization.", - Method: "GET", Path: "/organization/{orgid}/v2/contact-number", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "filter", In: InQuery, Flag: "filter", Usage: "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime \n\nThe examples below show some search queries\n- id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\n- id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide.\n\nNote: values to be used in the filter syntax should not contain space, and if so kindly bound it with quotes to apply filter.\n"}, - {Name: "attributes", In: InQuery, Flag: "attributes", Usage: "Specify the attributes to be returned.Default all attributes are returned along with specified columns. All Attributes are supported"}, - {Name: "search", In: InQuery, Flag: "search", Usage: "Filter data based on the search keyword."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCContactServiceQueueList = &Operation{ - ID: "CCContactServiceQueueList", Area: "cc", Group: "contact-service-queue", Command: "list", - Summary: "List Contact Service Queues", - Description: "Retrieve a list of Contact Service Queues in a given organization.\n Note: Returning array fields in the List (Get All) API response is deprecated. To retrieve the complete resource with all fields, please use the Get-by-ID API instead. Deprecated. Use GET /v2/contact-service-queue instead.", - Method: "GET", Path: "/organization/{orgid}/v3/contact-service-queue", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "filter", In: InQuery, Flag: "filter", Usage: "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, queueSkillRequirements, xspVersion, createdTime, lastUpdatedTime \n\nThe examples below show some search queries\n- id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\n- id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide.\n\nNote: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter.\n"}, - {Name: "attributes", In: InQuery, Flag: "attributes", Usage: "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported. except (callDistributionGroups,queueSkillRequirements,links)"}, - {Name: "search", In: InQuery, Flag: "search", Usage: "Filter data based on the search keyword.Supported search columns(name, description)\n\nThe examples below show some search queries\n- \"Cisco\"\n- field==\"name\";value==\"Cisco\"\n- fields=in=(\"name\",\"description\");value==\"Cisco\"\n"}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - {Name: "desktopProfileFilter", In: InQuery, Flag: "desktop-profile-filter", Usage: "If set to true, the API will return only the data that the user has access to according to its Desktop Profile. If unspecified, the default value is false."}, - {Name: "provisioningView", In: InQuery, Flag: "provisioning-view", Usage: "If set to true, the API will only return data that the user has access to, according to the User Profile. This query parameter is applicable only when desktopProfileFilter query parameter is false."}, - {Name: "singleObjectResponse", In: InQuery, Flag: "single-object-response", Usage: "Specify whether to include array fields in the response. This query parameter should be used only when the response contains a single record. It is not supported for responses with multiple objects and throws an exception."}, - }, - Paging: &Paging{}, -} - -var CCContactServiceQueueCreate = &Operation{ - ID: "CCContactServiceQueueCreate", Area: "cc", Group: "contact-service-queue", Command: "create", - Summary: "Create a new Contact Service Queue", - Description: "Create a new Contact Service Queue in a given organization.", - Method: "POST", Path: "/organization/{orgid}/v2/contact-service-queue", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{}, -} - -var CCContactServiceQueueBulkSave = &Operation{ - ID: "CCContactServiceQueueBulkSave", Area: "cc", Group: "contact-service-queue", Command: "bulk-save", - Summary: "Bulk save Contact Service Queues", - Description: "Create, Update or delete Contact Service Queues in bulk in a given organization.", - Method: "POST", Path: "/organization/{orgid}/contact-service-queue/v2/bulk", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{}, -} - -var CCContactServiceQueueBulkPartialUpdate = &Operation{ - ID: "CCContactServiceQueueBulkPartialUpdate", Area: "cc", Group: "contact-service-queue", Command: "bulk-partial-update", - Summary: "Bulk partial update Contact Service Queues", - Description: "Update some or all properties for multiple Contact Service Queues in bulk in a given organization.", - Method: "PATCH", Path: "/organization/{orgid}/contact-service-queue/bulk", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{}, -} - -var CCContactServiceQueueBulkExport = &Operation{ - ID: "CCContactServiceQueueBulkExport", Area: "cc", Group: "contact-service-queue", Command: "bulk-export", - Summary: "Bulk export Contact Service Queue(s)", - Description: "Export all Contact Service Queue(s) in a given organization.", - Method: "GET", Path: "/organization/{orgid}/contact-service-queue/bulk-export", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "type", In: InQuery, Flag: "type", Usage: "Indicates the queue type; can be INBOUND or OUTBOUND."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCContactServiceQueueListBySkillProfile = &Operation{ - ID: "CCContactServiceQueueListBySkillProfile", Area: "cc", Group: "contact-service-queue", Command: "list-by-skill-profile", - Aliases: []string{"list-skill-csqs-skill-profile"}, - Summary: "List skill-based Contact Service Queues by skill profile ID (public)", - Description: "Retrieve a list of skill-based Contact Service Queues associated with a given skill profile ID, accessible to authorized clients in a given organization.", - Method: "GET", Path: "/organization/{orgid}/contact-service-queue/by-skill-profile-id/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "ID of this contact center resource."}, - }, - Paging: &Paging{}, -} - -var CCContactServiceQueueDeleteReferences = &Operation{ - ID: "CCContactServiceQueueDeleteReferences", Area: "cc", Group: "contact-service-queue", Command: "delete-references", - Aliases: []string{"delete-csq-references"}, - Summary: "Delete references from Contact Service Queues", - Description: "Removes the references to the specified entities (such as teams, sites, or agents) from Contact Service Queues for a given organization.", - Method: "POST", Path: "/organization/{orgid}/contact-service-queue/delete-reference", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid"}, - }, - Body: &Body{}, -} - -var CCContactServiceQueueListManuallyAssignable = &Operation{ - ID: "CCContactServiceQueueListManuallyAssignable", Area: "cc", Group: "contact-service-queue", Command: "list-manually-assignable", - Aliases: []string{"list-manually-assignable-csqs"}, - Summary: "List manually assignable Contact Service Queues", - Description: "Retrieve a list of Contact Service Queues that are eligible for manual contact assignment based on the provided criteria in a given organization.", - Method: "POST", Path: "/organization/{orgid}/contact-service-queue/fetch-manually-assignable-queues", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "agentId", Flag: "agent-id", Type: "string"}, - {Name: "teamId", Flag: "team-id", Type: "string"}, - }}, -} - -var CCContactServiceQueuePurgeInactive = &Operation{ - ID: "CCContactServiceQueuePurgeInactive", Area: "cc", Group: "contact-service-queue", Command: "purge-inactive", - Summary: "Purge inactive Contact Service Queues", - Description: "Purge inactive Contact Service Queues older than the configured interval for a given organization.", - Method: "POST", Path: "/organization/{orgid}/contact-service-queue/purge-inactive-entities", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "nextStartId", In: InQuery, Flag: "next-start-id", Usage: "This is the entity ID from which items for the next purge batch will be selected."}, - }, -} - -var CCContactServiceQueueGet = &Operation{ - ID: "CCContactServiceQueueGet", Area: "cc", Group: "contact-service-queue", Command: "get", - Aliases: []string{"get-id"}, - Summary: "Get specific Contact Service Queue by ID", - Description: "Retrieve an existing Contact Service Queue by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/v2/contact-service-queue/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Contact Service Queue."}, - {Name: "agentsUpdatedInfo", In: InQuery, Flag: "agents-updated-info", Usage: "If `true`, returns the user details who has last updated the agents list in an agent based queue."}, - }, -} - -var CCContactServiceQueueUpdate = &Operation{ - ID: "CCContactServiceQueueUpdate", Area: "cc", Group: "contact-service-queue", Command: "update", - Aliases: []string{"update-id"}, - Summary: "Update specific Contact Service Queue by ID", - Description: "Update an existing Contact Service Queue by ID in a given organization.", - Method: "PUT", Path: "/organization/{orgid}/v2/contact-service-queue/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Contact Service Queue."}, - }, - Body: &Body{}, -} - -var CCContactServiceQueueDelete = &Operation{ - ID: "CCContactServiceQueueDelete", Area: "cc", Group: "contact-service-queue", Command: "delete", - Aliases: []string{"delete-id"}, - Summary: "Delete specific Contact Service Queue by ID", - Description: "Delete an existing Contact Service Queue by ID in a given organization.", - Method: "DELETE", Path: "/organization/{orgid}/contact-service-queue/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Contact Service Queue."}, - }, -} - -var CCContactServiceQueueListReferences = &Operation{ - ID: "CCContactServiceQueueListReferences", Area: "cc", Group: "contact-service-queue", Command: "list-references", - Aliases: []string{"list-csq-references-id"}, - Summary: "List references for a specific Contact Service Queue", - Description: "Retrieve a list of all entities that have reference to an existing Contact Service Queue by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/contact-service-queue/{id}/incoming-references", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "ID of this contact center resource."}, - {Name: "type", In: InQuery, Flag: "type", Usage: "Entity type of the other entity that has a reference to this specific entity."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCContactServiceQueueListAgentBased = &Operation{ - ID: "CCContactServiceQueueListAgentBased", Area: "cc", Group: "contact-service-queue", Command: "list-agent-based", - Summary: "List agent-based Contact Service Queues by user ID", - Description: "Retrieve a list of agent-based Contact Service Queues by user ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/v2/contact-service-queue/by-user-id/{userid}/agent-based-queues", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "userid", In: InPath, Flag: "userid"}, - {Name: "search", In: InQuery, Flag: "search", Usage: "Filter data based on the search keyword.Supported search columns(firstName, lastName, email)\n\nThe examples below show some search queries\n- \"Cisco\"\n- field==\"firstName\";value==\"Cisco\"\n- fields=in=(\"firstName\",\"lastName\");value==\"Cisco\"\n"}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCContactServiceQueueListSkillBased = &Operation{ - ID: "CCContactServiceQueueListSkillBased", Area: "cc", Group: "contact-service-queue", Command: "list-skill-based", - Summary: "List skill-based Contact Service Queues by user ID", - Description: "Retrieve a list of skill-based Contact Service Queues by user ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/v2/contact-service-queue/by-user-id/{userid}/skill-based-queues", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "userid", In: InPath, Flag: "userid"}, - {Name: "search", In: InQuery, Flag: "search", Usage: "Filter data based on the search keyword.Supported search columns(firstName, lastName, email)\n\nThe examples below show some search queries\n- \"Cisco\"\n- field==\"firstName\";value==\"Cisco\"\n- fields=in=(\"firstName\",\"lastName\");value==\"Cisco\"\n"}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCContactServiceQueueListTeamBased = &Operation{ - ID: "CCContactServiceQueueListTeamBased", Area: "cc", Group: "contact-service-queue", Command: "list-team-based", - Summary: "List team-based Contact Service Queues by user ID", - Description: "Retrieve a list of team-based Contact Service Queues by user ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/v2/contact-service-queue/by-user-id/{userid}/team-based-queues", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "userid", In: InPath, Flag: "userid"}, - {Name: "search", In: InQuery, Flag: "search", Usage: "Filter data based on the search keyword.Supported search columns(firstName, lastName, email)\n\nThe examples below show some search queries\n- \"Cisco\"\n- field==\"firstName\";value==\"Cisco\"\n- fields=in=(\"firstName\",\"lastName\");value==\"Cisco\"\n"}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCContactServiceQueueCreateRemoveAgentsUsersAgent = &Operation{ - ID: "CCContactServiceQueueCreateRemoveAgentsUsersAgent", Area: "cc", Group: "contact-service-queue", Command: "create-remove-agents-users-agent", - Summary: "Add or remove agents/users to/from an agent based queue", - Description: "This API can be used by a contact center supervisor to add or remove agents to or from an agent-based queue that they can access through their user profile access rights. Additionally, the request payload should contain the user ID(s) managed by the supervisor.", - Method: "POST", Path: "/organization/{orgid}/v2/contact-service-queue/{id}/reassign-agents", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Contact Service Queue."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "add", Flag: "add", Type: "[]string"}, - {Name: "remove", Flag: "remove", Type: "[]string"}, - }}, -} - -var CCContactServiceQueueListMappingSummaryGroupedAssistantSkill = &Operation{ - ID: "CCContactServiceQueueListMappingSummaryGroupedAssistantSkill", Area: "cc", Group: "contact-service-queue", Command: "list-mapping-summary-grouped-assistant-skill", - Summary: "List queue mapping summary grouped by Assistant Skill", - Description: "Retrieve a list of queue mapping summary for a specified list of Assistant Skills specified in a given organization. The summary currently includes mapped queue count, and the last assigned time of queue mapping.", - Method: "POST", Path: "/organization/{orgid}/v2/contact-service-queue/fetch-by-grouped-assistant-skill", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "assistantSkillIds", Flag: "assistant-skill-ids", Type: "[]string"}, - }}, -} - -var CCContactServiceQueueListInternalSkillCsqsProfile = &Operation{ - ID: "CCContactServiceQueueListInternalSkillCsqsProfile", Area: "cc", Group: "contact-service-queue", Command: "list-internal-skill-csqs-profile", - Summary: "List Internal Skill CSQs by Profile", - Description: "Retrieve skill-based Contact Service Queues by skill profile ID for internal use in a given organization.", - Method: "GET", Path: "/organization/{orgid}/contact-service-queue/by-skill-profile-id/{id}/internal", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "ID of this contact center resource."}, - }, - Paging: &Paging{}, -} - -var CCContactServiceQueueListTeamCsqsTeamId = &Operation{ - ID: "CCContactServiceQueueListTeamCsqsTeamId", Area: "cc", Group: "contact-service-queue", Command: "list-team-csqs-team-id", - Summary: "List Team CSQs by Team ID", - Description: "Retrieve team-based Contact Service Queues by team ID for internal use in a given organization.", - Method: "GET", Path: "/organization/{orgid}/contact-service-queue/by-team-id/{id}/internal", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "ID of this contact center resource."}, - }, - Paging: &Paging{}, -} - -var CCContactServiceQueueListAgentCsqsCiUserId = &Operation{ - ID: "CCContactServiceQueueListAgentCsqsCiUserId", Area: "cc", Group: "contact-service-queue", Command: "list-agent-csqs-ci-user-id", - Summary: "List Agent CSQs by CI User ID", - Description: "Retrieve agent-based Contact Service Queues by CI user ID for internal use in a given organization.", - Method: "GET", Path: "/organization/{orgid}/contact-service-queue/by-user-ci-id/{ciUserId}/internal", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "ciUserId", In: InPath, Flag: "ci-user-id", Usage: "ciUserId"}, - }, - Paging: &Paging{}, -} - -var CCContactServiceQueueListByDynamicSkills = &Operation{ - ID: "CCContactServiceQueueListByDynamicSkills", Area: "cc", Group: "contact-service-queue", Command: "list-by-dynamic-skills", - Aliases: []string{"list-csqs-skills-profile"}, - Summary: "List skill-based Contact Service Queues by dynamic skills and skill profile", - Description: "Retrieve a list of skill-based Contact Service Queues that match the given dynamic skills and skill profile criteria in a given organization.", - Method: "POST", Path: "/organization/{orgid}/contact-service-queue/fetch-by-dynamic-skills-and-skillProfile", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{}, -} - -var CCContactServiceQueueListByUserSkillProfile = &Operation{ - ID: "CCContactServiceQueueListByUserSkillProfile", Area: "cc", Group: "contact-service-queue", Command: "list-by-user-skill-profile", - Aliases: []string{"list-csqs-user-profile"}, - Summary: "List skill-based Contact Service Queues by skill profile ID and user ID", - Description: "Retrieve a list of skill-based Contact Service Queues associated with the given skill profile ID and user ID combination in a given organization.", - Method: "POST", Path: "/organization/{orgid}/contact-service-queue/fetch-by-userId-skillProfileId", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{}, -} - -var CCContactServiceQueueListSkillCsqsCiUserId = &Operation{ - ID: "CCContactServiceQueueListSkillCsqsCiUserId", Area: "cc", Group: "contact-service-queue", Command: "list-skill-csqs-ci-user-id", - Summary: "List Skill CSQs by CI User ID", - Description: "Retrieve skill-based Contact Service Queues by CI user ID for internal use in a given organization.", - Method: "GET", Path: "/organization/{orgid}/contact-service-queue/skill-based-queues/by-ci-user-id/{id}/internal", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "ID of this contact center resource."}, - }, - Paging: &Paging{}, -} - -var CCContactServiceQueueListV2 = &Operation{ - ID: "CCContactServiceQueueListV2", Area: "cc", Group: "contact-service-queue", Command: "list-v2", - Summary: "List Contact Service Queues (v2)", - Description: "Lists queues through the v2 route. Items leave out call distribution groups, so read each queue for them. Each item carries lastUpdatedTime.", - Method: "GET", Path: "/organization/{orgid}/v2/contact-service-queue", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Page number, from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Items per page."}, - }, - Paging: &Paging{}, -} - -var CCDesktopLayoutCreate = &Operation{ - ID: "CCDesktopLayoutCreate", Area: "cc", Group: "desktop-layout", Command: "create", - Summary: "Create a new Desktop Layout", - Description: "Create a new Desktop Layout in a given organization.", - Method: "POST", Path: "/organization/{orgid}/desktop-layout", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "defaultJsonModified", Flag: "default-json-modified", Type: "bool"}, - {Name: "editedBy", Flag: "edited-by", Type: "string"}, - {Name: "global", Flag: "global", Type: "bool"}, - {Name: "jsonFileContent", Flag: "json-file-content", Type: "string"}, - {Name: "jsonFileName", Flag: "json-file-name", Type: "string"}, - {Name: "name", Flag: "name", Type: "string"}, - {Name: "status", Flag: "status", Type: "bool"}, - {Name: "validated", Flag: "validated", Type: "bool"}, - {Name: "organizationId", Flag: "organization-id", Type: "string"}, - {Name: "id", Flag: "id", Type: "string"}, - {Name: "version", Flag: "version", Type: "int64"}, - {Name: "description", Flag: "description", Type: "string"}, - {Name: "validatedTime", Flag: "validated-time", Type: "int64"}, - {Name: "defaultJsonModifiedTime", Flag: "default-json-modified-time", Type: "int64"}, - {Name: "modifiedTime", Flag: "modified-time", Type: "int64"}, - {Name: "teamIds", Flag: "team-ids", Type: "[]string"}, - {Name: "systemDefault", Flag: "system-default", Type: "bool"}, - {Name: "createdTime", Flag: "created-time", Type: "int64"}, - {Name: "lastUpdatedTime", Flag: "last-updated-time", Type: "int64"}, - }}, -} - -var CCDesktopLayoutBulkSave = &Operation{ - ID: "CCDesktopLayoutBulkSave", Area: "cc", Group: "desktop-layout", Command: "bulk-save", - Summary: "Bulk save Desktop Layout(s)", - Description: "Create, Update or delete Desktop Layout(s) in bulk in a given organization.", - Method: "POST", Path: "/organization/{orgid}/desktop-layout/bulk", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{}, -} - -var CCDesktopLayoutBulkExport = &Operation{ - ID: "CCDesktopLayoutBulkExport", Area: "cc", Group: "desktop-layout", Command: "bulk-export", - Summary: "Bulk export Desktop Layout(s)", - Description: "Export all Desktop Layout(s) in a given organization.", - Method: "GET", Path: "/organization/{orgid}/desktop-layout/bulk-export", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCDesktopLayoutPurgeInactive = &Operation{ - ID: "CCDesktopLayoutPurgeInactive", Area: "cc", Group: "desktop-layout", Command: "purge-inactive", - Summary: "Purge inactive Desktop Layout(s)", - Description: "Purge inactive Desktop Layout(s) older than the configured interval for a given organization.", - Method: "POST", Path: "/organization/{orgid}/desktop-layout/purge-inactive-entities", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "nextStartId", In: InQuery, Flag: "next-start-id", Usage: "This is the entity ID from which items for the next purge batch with be selected."}, - }, -} - -var CCDesktopLayoutGet = &Operation{ - ID: "CCDesktopLayoutGet", Area: "cc", Group: "desktop-layout", Command: "get", - Aliases: []string{"get-id"}, - Summary: "Get specific Desktop Layout by ID", - Description: "Retrieve an existing Desktop Layout by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/desktop-layout/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Desktop Layout."}, - }, -} - -var CCDesktopLayoutUpdate = &Operation{ - ID: "CCDesktopLayoutUpdate", Area: "cc", Group: "desktop-layout", Command: "update", - Aliases: []string{"update-id"}, - Summary: "Update specific Desktop Layout by ID", - Description: "Update an existing Desktop Layout by ID in a given organization.", - Method: "PUT", Path: "/organization/{orgid}/desktop-layout/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Desktop Layout."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "defaultJsonModified", Flag: "default-json-modified", Type: "bool"}, - {Name: "editedBy", Flag: "edited-by", Type: "string"}, - {Name: "global", Flag: "global", Type: "bool"}, - {Name: "jsonFileContent", Flag: "json-file-content", Type: "string"}, - {Name: "jsonFileName", Flag: "json-file-name", Type: "string"}, - {Name: "name", Flag: "name", Type: "string"}, - {Name: "status", Flag: "status", Type: "bool"}, - {Name: "validated", Flag: "validated", Type: "bool"}, - {Name: "organizationId", Flag: "organization-id", Type: "string"}, - {Name: "id", Flag: "id", Type: "string"}, - {Name: "version", Flag: "version", Type: "int64"}, - {Name: "description", Flag: "description", Type: "string"}, - {Name: "validatedTime", Flag: "validated-time", Type: "int64"}, - {Name: "defaultJsonModifiedTime", Flag: "default-json-modified-time", Type: "int64"}, - {Name: "modifiedTime", Flag: "modified-time", Type: "int64"}, - {Name: "teamIds", Flag: "team-ids", Type: "[]string"}, - {Name: "systemDefault", Flag: "system-default", Type: "bool"}, - {Name: "createdTime", Flag: "created-time", Type: "int64"}, - {Name: "lastUpdatedTime", Flag: "last-updated-time", Type: "int64"}, - }}, -} - -var CCDesktopLayoutDelete = &Operation{ - ID: "CCDesktopLayoutDelete", Area: "cc", Group: "desktop-layout", Command: "delete", - Aliases: []string{"delete-id"}, - Summary: "Delete specific Desktop Layout by ID", - Description: "Delete an existing Desktop Layout by ID in a given organization.", - Method: "DELETE", Path: "/organization/{orgid}/desktop-layout/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Desktop Layout."}, - }, -} - -var CCDesktopLayoutListReferences = &Operation{ - ID: "CCDesktopLayoutListReferences", Area: "cc", Group: "desktop-layout", Command: "list-references", - Summary: "List references for a specific Desktop Layout", - Description: "Retrieve a list of all entities that have reference to an existing Desktop Layout by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/desktop-layout/{id}/incoming-references", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "ID of this contact center resource."}, - {Name: "type", In: InQuery, Flag: "type", Usage: "Entity type of the other entity that has a reference to this specific entity."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCDesktopLayoutList = &Operation{ - ID: "CCDesktopLayoutList", Area: "cc", Group: "desktop-layout", Command: "list", - Summary: "List Desktop Layout(s)", - Description: "Retrieve a list of Desktop Layout(s) in a given organization. Json file content field won't be avalible in get all even though it is showing in sample response structure. and it will be avialable only in get by id.\n Note: Returning array fields in the List (Get All) API response is deprecated. To retrieve the complete resource with all fields, please use the Get-by-ID API instead.", - Method: "GET", Path: "/organization/{orgid}/v2/desktop-layout", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "filter", In: InQuery, Flag: "filter", Usage: "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, validatedTime, defaultJsonModifiedTime, modifiedTime, teamIds, createdTime, lastUpdatedTime \n\nThe examples below show some search queries\n- id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\n- id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide.\n\nNote: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter.\n"}, - {Name: "attributes", In: InQuery, Flag: "attributes", Usage: "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported."}, - {Name: "search", In: InQuery, Flag: "search", Usage: "Filter data based on the search keyword.Supported search columns(name)\n\nThe examples below show some search queries\n- \"Cisco\"\n- field==\"name\";value==\"Cisco\"\n- fields=in=(\"name\");value==\"Cisco\"\n"}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - {Name: "singleObjectResponse", In: InQuery, Flag: "single-object-response", Usage: "Specifiy whether to include array fields in the response, This query param should use only if the response contain single record, if we are using for multiple objects response query param not supported and throws an exception."}, - {Name: "provisioningView", In: InQuery, Flag: "provisioning-view", Usage: "If set to true, the API will only return data that user has access to, according to User Profile."}, - }, - Paging: &Paging{}, -} - -var CCDesktopProfileList = &Operation{ - ID: "CCDesktopProfileList", Area: "cc", Group: "desktop-profile", Command: "list", - Summary: "List Desktop Profiles", - Description: "Retrieve a list of Desktop Profiles in a given organization.\n Note: Returning array fields in the List (Get All) API response is deprecated. To retrieve the complete resource with all fields, please use the Get-by-ID API instead.", - Method: "GET", Path: "/organization/{orgid}/v2/agent-profile", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "filter", In: InQuery, Flag: "filter", Usage: "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, autoWrapAfterSeconds, wrapUpCodes, idleCodes, queues, entryPoints, buddyTeams, dialPlans, agentDNValidationCriteria, agentDNValidationCriterions, loginVoiceOptions, viewableStatistics, thresholdRules, createdTime, lastUpdatedTime \n\nThe examples below show some search queries\n- id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\n- id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide.\n\nNote: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter.\n"}, - {Name: "attributes", In: InQuery, Flag: "attributes", Usage: "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported. except ( wrapUpCodes,queues, idleCodes,entryPoints, buddyTeams, dialPlans, loginVoiceOptions, viewableStatistics, thresholdRules,agentDNValidationCriterions ) "}, - {Name: "search", In: InQuery, Flag: "search", Usage: "Filter data based on the search keyword.Supported search columns(name, description)\n\nThe examples below show some search queries\n- \"Cisco\"\n- field==\"name\";value==\"Cisco\"\n- fields=in=(\"name\",\"description\");value==\"Cisco\"\n"}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - {Name: "singleObjectResponse", In: InQuery, Flag: "single-object-response", Usage: "Specify whether to include array fields in the response. This query parameter should be used only when the response contains a single record. It is not supported for responses with multiple objects and throws an exception."}, - {Name: "provisioningView", In: InQuery, Flag: "provisioning-view", Usage: "If set to true, the API will only return data that the user has access to, according to the User Profile."}, - }, - Paging: &Paging{}, -} - -var CCDesktopProfileCreate = &Operation{ - ID: "CCDesktopProfileCreate", Area: "cc", Group: "desktop-profile", Command: "create", - Summary: "Create a new Desktop Profile", - Description: "Create a new Desktop Profile in a given organization.", - Method: "POST", Path: "/organization/{orgid}/agent-profile", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "accessBuddyTeam", In: InQuery, Flag: "access-buddy-team", Usage: "Agent profile configuration data"}, - {Name: "accessEntryPoint", In: InQuery, Flag: "access-entry-point", Usage: "Agent profile configuration data"}, - {Name: "accessIdleCode", In: InQuery, Flag: "access-idle-code", Usage: "Agent profile configuration data"}, - {Name: "accessQueue", In: InQuery, Flag: "access-queue", Usage: "Agent profile configuration data"}, - {Name: "accessWrapUpCode", In: InQuery, Flag: "access-wrap-up-code", Usage: "Agent profile configuration data"}, - {Name: "active", In: InQuery, Flag: "active", Usage: "Agent profile configuration data"}, - {Name: "agentDNValidation", In: InQuery, Flag: "agent-dnvalidation", Usage: "Agent profile configuration data"}, - {Name: "name", In: InQuery, Flag: "name", Usage: "Agent profile configuration data"}, - {Name: "parentType", In: InQuery, Flag: "parent-type", Usage: "Agent profile configuration data"}, - {Name: "viewableStatistics", In: InQuery, Flag: "viewable-statistics", Usage: "Agent profile configuration data"}, - {Name: "organizationId", In: InQuery, Flag: "organization-id", Usage: "Agent profile configuration data"}, - {Name: "id", In: InQuery, Flag: "id", Usage: "Agent profile configuration data"}, - {Name: "version", In: InQuery, Flag: "version", Usage: "Agent profile configuration data"}, - {Name: "description", In: InQuery, Flag: "description", Usage: "Agent profile configuration data"}, - {Name: "siteId", In: InQuery, Flag: "site-id", Usage: "Agent profile configuration data"}, - {Name: "screenPopup", In: InQuery, Flag: "screen-popup", Usage: "Agent profile configuration data"}, - {Name: "lastAgentRouting", In: InQuery, Flag: "last-agent-routing", Usage: "Agent profile configuration data"}, - {Name: "scheduleAndManageCallBack", In: InQuery, Flag: "schedule-and-manage-call-back", Usage: "Agent profile configuration data"}, - {Name: "autoWrapUp", In: InQuery, Flag: "auto-wrap-up", Usage: "Agent profile configuration data"}, - {Name: "autoAnswer", In: InQuery, Flag: "auto-answer", Usage: "Agent profile configuration data"}, - {Name: "agentPersonalGreeting", In: InQuery, Flag: "agent-personal-greeting", Usage: "Agent profile configuration data"}, - {Name: "autoWrapAfterSeconds", In: InQuery, Flag: "auto-wrap-after-seconds", Usage: "Agent profile configuration data"}, - {Name: "agentAvailableAfterOutdial", In: InQuery, Flag: "agent-available-after-outdial", Usage: "Agent profile configuration data"}, - {Name: "allowAutoWrapUpExtension", In: InQuery, Flag: "allow-auto-wrap-up-extension", Usage: "Agent profile configuration data"}, - {Name: "wrapUpCodes", In: InQuery, Flag: "wrap-up-codes", Usage: "Agent profile configuration data"}, - {Name: "idleCodes", In: InQuery, Flag: "idle-codes", Usage: "Agent profile configuration data"}, - {Name: "queues", In: InQuery, Flag: "queues", Usage: "Agent profile configuration data"}, - {Name: "entryPoints", In: InQuery, Flag: "entry-points", Usage: "Agent profile configuration data"}, - {Name: "buddyTeams", In: InQuery, Flag: "buddy-teams", Usage: "Agent profile configuration data"}, - {Name: "consultToQueue", In: InQuery, Flag: "consult-to-queue", Usage: "Agent profile configuration data"}, - {Name: "outdialEnabled", In: InQuery, Flag: "outdial-enabled", Usage: "Agent profile configuration data"}, - {Name: "outdialEntryPointId", In: InQuery, Flag: "outdial-entry-point-id", Usage: "Agent profile configuration data"}, - {Name: "outdialANIId", In: InQuery, Flag: "outdial-aniid", Usage: "Agent profile configuration data"}, - {Name: "addressBookId", In: InQuery, Flag: "address-book-id", Usage: "Agent profile configuration data"}, - {Name: "dialPlanEnabled", In: InQuery, Flag: "dial-plan-enabled", Usage: "Agent profile configuration data"}, - {Name: "dialPlans", In: InQuery, Flag: "dial-plans", Usage: "Agent profile configuration data"}, - {Name: "agentDNValidationCriteria", In: InQuery, Flag: "agent-dnvalidation-criteria", Usage: "Agent profile configuration data"}, - {Name: "agentDNValidationCriterions", In: InQuery, Flag: "agent-dnvalidation-criterions", Usage: "Agent profile configuration data"}, - {Name: "loginVoiceOptions", In: InQuery, Flag: "login-voice-options", Usage: "Agent profile configuration data"}, - {Name: "thresholdRules", In: InQuery, Flag: "threshold-rules", Usage: "Agent profile configuration data"}, - {Name: "timeoutDesktopInactivityCustomEnabled", In: InQuery, Flag: "timeout-desktop-inactivity-custom-enabled", Usage: "Agent profile configuration data"}, - {Name: "showUserDetailsMS", In: InQuery, Flag: "show-user-details-ms", Usage: "Agent profile configuration data"}, - {Name: "stateSynchronizationMS", In: InQuery, Flag: "state-synchronization-ms", Usage: "Agent profile configuration data"}, - {Name: "showUserDetailsWebex", In: InQuery, Flag: "show-user-details-webex", Usage: "Agent profile configuration data"}, - {Name: "stateSynchronizationWebex", In: InQuery, Flag: "state-synchronization-webex", Usage: "Agent profile configuration data"}, - {Name: "manageChannelAvailability", In: InQuery, Flag: "manage-channel-availability", Usage: "Agent profile configuration data"}, - {Name: "timeoutDesktopInactivityMins", In: InQuery, Flag: "timeout-desktop-inactivity-mins", Usage: "Agent profile configuration data"}, - {Name: "systemDefault", In: InQuery, Flag: "system-default", Usage: "Agent profile configuration data"}, - {Name: "createdTime", In: InQuery, Flag: "created-time", Usage: "Agent profile configuration data"}, - {Name: "lastUpdatedTime", In: InQuery, Flag: "last-updated-time", Usage: "Agent profile configuration data"}, - {Name: "autoAcceptDigitalInteractions", In: InQuery, Flag: "auto-accept-digital-interactions", Usage: "Agent profile configuration data"}, - }, - Body: &Body{}, -} - -var CCDesktopProfileBulkSave = &Operation{ - ID: "CCDesktopProfileBulkSave", Area: "cc", Group: "desktop-profile", Command: "bulk-save", - Summary: "Bulk save Desktop Profiles", - Description: "Create, Update or delete Desktop Profiles in bulk in a given organization.", - Method: "POST", Path: "/organization/{orgid}/agent-profile/bulk", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{}, -} - -var CCDesktopProfileBulkExport = &Operation{ - ID: "CCDesktopProfileBulkExport", Area: "cc", Group: "desktop-profile", Command: "bulk-export", - Summary: "Bulk export Desktop Profile(s)", - Description: "Export all Desktop Profile(s) in a given organization.", - Method: "GET", Path: "/organization/{orgid}/agent-profile/bulk-export", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCDesktopProfilePurgeInactive = &Operation{ - ID: "CCDesktopProfilePurgeInactive", Area: "cc", Group: "desktop-profile", Command: "purge-inactive", - Summary: "Purge inactive Desktop Profiles", - Description: "Purge inactive Desktop Profiles older than the configured interval for a given organization.", - Method: "POST", Path: "/organization/{orgid}/agent-profile/purge-inactive-entities", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "nextStartId", In: InQuery, Flag: "next-start-id", Usage: "This is the entity ID from which items for the next purge batch will be selected."}, - }, -} - -var CCDesktopProfileGet = &Operation{ - ID: "CCDesktopProfileGet", Area: "cc", Group: "desktop-profile", Command: "get", - Aliases: []string{"get-id"}, - Summary: "Get specific Desktop Profile by ID", - Description: "Retrieve an existing Desktop Profile by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/agent-profile/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Desktop Profile."}, - }, -} - -var CCDesktopProfileUpdate = &Operation{ - ID: "CCDesktopProfileUpdate", Area: "cc", Group: "desktop-profile", Command: "update", - Aliases: []string{"update-id"}, - Summary: "Update specific Desktop Profile by ID", - Description: "Update an existing Desktop Profile by ID in a given organization.", - Method: "PUT", Path: "/organization/{orgid}/agent-profile/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Desktop Profile."}, - {Name: "accessBuddyTeam", In: InQuery, Flag: "access-buddy-team", Usage: "Agent profile configuration data for update"}, - {Name: "accessEntryPoint", In: InQuery, Flag: "access-entry-point", Usage: "Agent profile configuration data for update"}, - {Name: "accessIdleCode", In: InQuery, Flag: "access-idle-code", Usage: "Agent profile configuration data for update"}, - {Name: "accessQueue", In: InQuery, Flag: "access-queue", Usage: "Agent profile configuration data for update"}, - {Name: "accessWrapUpCode", In: InQuery, Flag: "access-wrap-up-code", Usage: "Agent profile configuration data for update"}, - {Name: "active", In: InQuery, Flag: "active", Usage: "Agent profile configuration data for update"}, - {Name: "agentDNValidation", In: InQuery, Flag: "agent-dnvalidation", Usage: "Agent profile configuration data for update"}, - {Name: "name", In: InQuery, Flag: "name", Usage: "Agent profile configuration data for update"}, - {Name: "parentType", In: InQuery, Flag: "parent-type", Usage: "Agent profile configuration data for update"}, - {Name: "viewableStatistics", In: InQuery, Flag: "viewable-statistics", Usage: "Agent profile configuration data for update"}, - {Name: "organizationId", In: InQuery, Flag: "organization-id", Usage: "Agent profile configuration data for update"}, - {Name: "id", In: InQuery, Flag: "id", Usage: "Agent profile configuration data for update"}, - {Name: "version", In: InQuery, Flag: "version", Usage: "Agent profile configuration data for update"}, - {Name: "description", In: InQuery, Flag: "description", Usage: "Agent profile configuration data for update"}, - {Name: "siteId", In: InQuery, Flag: "site-id", Usage: "Agent profile configuration data for update"}, - {Name: "screenPopup", In: InQuery, Flag: "screen-popup", Usage: "Agent profile configuration data for update"}, - {Name: "lastAgentRouting", In: InQuery, Flag: "last-agent-routing", Usage: "Agent profile configuration data for update"}, - {Name: "scheduleAndManageCallBack", In: InQuery, Flag: "schedule-and-manage-call-back", Usage: "Agent profile configuration data for update"}, - {Name: "autoWrapUp", In: InQuery, Flag: "auto-wrap-up", Usage: "Agent profile configuration data for update"}, - {Name: "autoAnswer", In: InQuery, Flag: "auto-answer", Usage: "Agent profile configuration data for update"}, - {Name: "agentPersonalGreeting", In: InQuery, Flag: "agent-personal-greeting", Usage: "Agent profile configuration data for update"}, - {Name: "autoWrapAfterSeconds", In: InQuery, Flag: "auto-wrap-after-seconds", Usage: "Agent profile configuration data for update"}, - {Name: "agentAvailableAfterOutdial", In: InQuery, Flag: "agent-available-after-outdial", Usage: "Agent profile configuration data for update"}, - {Name: "allowAutoWrapUpExtension", In: InQuery, Flag: "allow-auto-wrap-up-extension", Usage: "Agent profile configuration data for update"}, - {Name: "wrapUpCodes", In: InQuery, Flag: "wrap-up-codes", Usage: "Agent profile configuration data for update"}, - {Name: "idleCodes", In: InQuery, Flag: "idle-codes", Usage: "Agent profile configuration data for update"}, - {Name: "queues", In: InQuery, Flag: "queues", Usage: "Agent profile configuration data for update"}, - {Name: "entryPoints", In: InQuery, Flag: "entry-points", Usage: "Agent profile configuration data for update"}, - {Name: "buddyTeams", In: InQuery, Flag: "buddy-teams", Usage: "Agent profile configuration data for update"}, - {Name: "consultToQueue", In: InQuery, Flag: "consult-to-queue", Usage: "Agent profile configuration data for update"}, - {Name: "outdialEnabled", In: InQuery, Flag: "outdial-enabled", Usage: "Agent profile configuration data for update"}, - {Name: "outdialEntryPointId", In: InQuery, Flag: "outdial-entry-point-id", Usage: "Agent profile configuration data for update"}, - {Name: "outdialANIId", In: InQuery, Flag: "outdial-aniid", Usage: "Agent profile configuration data for update"}, - {Name: "addressBookId", In: InQuery, Flag: "address-book-id", Usage: "Agent profile configuration data for update"}, - {Name: "dialPlanEnabled", In: InQuery, Flag: "dial-plan-enabled", Usage: "Agent profile configuration data for update"}, - {Name: "dialPlans", In: InQuery, Flag: "dial-plans", Usage: "Agent profile configuration data for update"}, - {Name: "agentDNValidationCriteria", In: InQuery, Flag: "agent-dnvalidation-criteria", Usage: "Agent profile configuration data for update"}, - {Name: "agentDNValidationCriterions", In: InQuery, Flag: "agent-dnvalidation-criterions", Usage: "Agent profile configuration data for update"}, - {Name: "loginVoiceOptions", In: InQuery, Flag: "login-voice-options", Usage: "Agent profile configuration data for update"}, - {Name: "thresholdRules", In: InQuery, Flag: "threshold-rules", Usage: "Agent profile configuration data for update"}, - {Name: "timeoutDesktopInactivityCustomEnabled", In: InQuery, Flag: "timeout-desktop-inactivity-custom-enabled", Usage: "Agent profile configuration data for update"}, - {Name: "showUserDetailsMS", In: InQuery, Flag: "show-user-details-ms", Usage: "Agent profile configuration data for update"}, - {Name: "stateSynchronizationMS", In: InQuery, Flag: "state-synchronization-ms", Usage: "Agent profile configuration data for update"}, - {Name: "showUserDetailsWebex", In: InQuery, Flag: "show-user-details-webex", Usage: "Agent profile configuration data for update"}, - {Name: "stateSynchronizationWebex", In: InQuery, Flag: "state-synchronization-webex", Usage: "Agent profile configuration data for update"}, - {Name: "manageChannelAvailability", In: InQuery, Flag: "manage-channel-availability", Usage: "Agent profile configuration data for update"}, - {Name: "timeoutDesktopInactivityMins", In: InQuery, Flag: "timeout-desktop-inactivity-mins", Usage: "Agent profile configuration data for update"}, - {Name: "systemDefault", In: InQuery, Flag: "system-default", Usage: "Agent profile configuration data for update"}, - {Name: "createdTime", In: InQuery, Flag: "created-time", Usage: "Agent profile configuration data for update"}, - {Name: "lastUpdatedTime", In: InQuery, Flag: "last-updated-time", Usage: "Agent profile configuration data for update"}, - {Name: "autoAcceptDigitalInteractions", In: InQuery, Flag: "auto-accept-digital-interactions", Usage: "Agent profile configuration data for update"}, - }, - Body: &Body{}, -} - -var CCDesktopProfileDelete = &Operation{ - ID: "CCDesktopProfileDelete", Area: "cc", Group: "desktop-profile", Command: "delete", - Aliases: []string{"delete-id"}, - Summary: "Delete specific Desktop Profile by ID", - Description: "Delete an existing Desktop Profile by ID in a given organization.", - Method: "DELETE", Path: "/organization/{orgid}/agent-profile/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Desktop Profile."}, - }, -} - -var CCDesktopProfileListReferences = &Operation{ - ID: "CCDesktopProfileListReferences", Area: "cc", Group: "desktop-profile", Command: "list-references", - Summary: "List references for a specific Desktop Profile", - Description: "Retrieve a list of all entities that have reference to an existing Desktop Profile by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/agent-profile/{id}/incoming-references", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "ID of this contact center resource."}, - {Name: "type", In: InQuery, Flag: "type", Usage: "Entity type of the other entity that has a reference to this specific entity."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCDialNumberListDialedMapping = &Operation{ - ID: "CCDialNumberListDialedMapping", Area: "cc", Group: "dial-number", Command: "list-dialed-mapping", - Summary: "List Dialed Number Mapping(s)", - Description: "Retrieve a list of Dialed Number Mapping(s) in a given organization.", - Method: "GET", Path: "/organization/{orgid}/v3/dial-number", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "filter", In: InQuery, Flag: "filter", Usage: "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime \n\nThe examples below show some search queries\n- id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\n- id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide.\n\nNote: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter.\n"}, - {Name: "attributes", In: InQuery, Flag: "attributes", Usage: "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported. except (links)"}, - {Name: "search", In: InQuery, Flag: "search", Usage: "Filter data based on the search keyword.Supported search columns(dialledNumber)\n\nThe examples below show some search queries\n- \"Cisco\"\n- field==\"dialledNumber\";value==\"Cisco\"\n- fields=in=(\"dialledNumber\");value==\"Cisco\"\n"}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - {Name: "includeEntryPointName", In: InQuery, Flag: "include-entry-point-name", Usage: "If includeEntryPointName is set to true and entryPointName is in the attributes, the API will return entryPointName in the Get All response, and filtering, searching, and sorting on entryPointName will also be enabled."}, - }, - Paging: &Paging{}, -} - -var CCDialNumberCreateDialedMapping = &Operation{ - ID: "CCDialNumberCreateDialedMapping", Area: "cc", Group: "dial-number", Command: "create-dialed-mapping", - Summary: "Create a new Dialed Number Mapping", - Description: "Create a new Dialed Number Mapping in a given organization.", - Method: "POST", Path: "/organization/{orgid}/dial-number", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "entryPointId", Flag: "entry-point-id", Type: "string"}, - {Name: "entryPointName", Flag: "entry-point-name", Type: "string"}, - {Name: "organizationId", Flag: "organization-id", Type: "string"}, - {Name: "id", Flag: "id", Type: "string"}, - {Name: "version", Flag: "version", Type: "int64"}, - {Name: "dialledNumber", Flag: "dialled-number", Type: "string"}, - {Name: "extension", Flag: "extension", Type: "string"}, - {Name: "routingPrefix", Flag: "routing-prefix", Type: "string"}, - {Name: "esn", Flag: "esn", Type: "string"}, - {Name: "routePointId", Flag: "route-point-id", Type: "string"}, - {Name: "defaultAni", Flag: "default-ani", Type: "bool"}, - {Name: "location", Flag: "location", Type: "string"}, - {Name: "regionId", Flag: "region-id", Type: "string"}, - {Name: "createdTime", Flag: "created-time", Type: "int64"}, - {Name: "lastUpdatedTime", Flag: "last-updated-time", Type: "int64"}, - {Name: "dialledNumberDigits", Flag: "dialled-number-digits", Type: "string"}, - }}, -} - -var CCDialNumberDeleteAllDialedMapping = &Operation{ - ID: "CCDialNumberDeleteAllDialedMapping", Area: "cc", Group: "dial-number", Command: "delete-all-dialed-mapping", - Summary: "Delete all Dialed Number Mapping(s)", - Description: "Delete all Dialed Number Mapping(s) in a given organization.", - Method: "DELETE", Path: "/organization/{orgid}/dial-number", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, -} - -var CCDialNumberBulkSaveDialedMapping = &Operation{ - ID: "CCDialNumberBulkSaveDialedMapping", Area: "cc", Group: "dial-number", Command: "bulk-save-dialed-mapping", - Summary: "Bulk save Dialed Number Mapping(s)", - Description: "Create, Update or delete Dialed Number Mapping(s) in bulk in a given organization.", - Method: "POST", Path: "/organization/{orgid}/dial-number/bulk", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{}, -} - -var CCDialNumberBulkExportDialedMapping = &Operation{ - ID: "CCDialNumberBulkExportDialedMapping", Area: "cc", Group: "dial-number", Command: "bulk-export-dialed-mapping", - Summary: "Bulk export Dialed Number Mapping(s)", - Description: "Export all Dialed Number Mapping(s) in a given organization.", - Method: "GET", Path: "/organization/{orgid}/dial-number/bulk-export", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCDialNumberListDialedDialedMapping = &Operation{ - ID: "CCDialNumberListDialedDialedMapping", Area: "cc", Group: "dial-number", Command: "list-dialed-dialed-mapping", - Summary: "List only dialed numbers(property - dialledNumber) from Dialed Number Mapping(s)", - Description: "Retrieve a list of only dialed numbers(property - dialledNumber) from Dialed Number Mapping(s) without pagination in a given organization.", - Method: "GET", Path: "/organization/{orgid}/dial-number/numbers-only", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Paging: &Paging{}, -} - -var CCDialNumberGetDialedMappingId = &Operation{ - ID: "CCDialNumberGetDialedMappingId", Area: "cc", Group: "dial-number", Command: "get-dialed-mapping-id", - Summary: "Get specific Dialed Number Mapping by ID", - Description: "Retrieve an existing Dialed Number Mapping by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/dial-number/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Dialed Number Mapping."}, - }, -} - -var CCDialNumberUpdateDialedMappingId = &Operation{ - ID: "CCDialNumberUpdateDialedMappingId", Area: "cc", Group: "dial-number", Command: "update-dialed-mapping-id", - Summary: "Update specific Dialed Number Mapping by ID", - Description: "Update an existing Dialed Number Mapping by ID in a given organization.", - Method: "PUT", Path: "/organization/{orgid}/dial-number/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Dialed Number Mapping."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "entryPointId", Flag: "entry-point-id", Type: "string"}, - {Name: "entryPointName", Flag: "entry-point-name", Type: "string"}, - {Name: "organizationId", Flag: "organization-id", Type: "string"}, - {Name: "id", Flag: "id", Type: "string"}, - {Name: "version", Flag: "version", Type: "int64"}, - {Name: "dialledNumber", Flag: "dialled-number", Type: "string"}, - {Name: "extension", Flag: "extension", Type: "string"}, - {Name: "routingPrefix", Flag: "routing-prefix", Type: "string"}, - {Name: "esn", Flag: "esn", Type: "string"}, - {Name: "routePointId", Flag: "route-point-id", Type: "string"}, - {Name: "defaultAni", Flag: "default-ani", Type: "bool"}, - {Name: "location", Flag: "location", Type: "string"}, - {Name: "regionId", Flag: "region-id", Type: "string"}, - {Name: "createdTime", Flag: "created-time", Type: "int64"}, - {Name: "lastUpdatedTime", Flag: "last-updated-time", Type: "int64"}, - {Name: "dialledNumberDigits", Flag: "dialled-number-digits", Type: "string"}, - }}, -} - -var CCDialNumberDeleteDialedMappingId = &Operation{ - ID: "CCDialNumberDeleteDialedMappingId", Area: "cc", Group: "dial-number", Command: "delete-dialed-mapping-id", - Summary: "Delete specific Dialed Number Mapping by ID", - Description: "Delete an existing Dialed Number Mapping by ID in a given organization.", - Method: "DELETE", Path: "/organization/{orgid}/dial-number/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Dialed Number Mapping."}, - }, -} - -var CCDialNumberListReferencesDialedMapping = &Operation{ - ID: "CCDialNumberListReferencesDialedMapping", Area: "cc", Group: "dial-number", Command: "list-references-dialed-mapping", - Summary: "List references for a specific Dialed Number Mapping", - Description: "Retrieve a list of all entities that have reference to an existing Dialed Number Mapping by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/dial-number/{id}/incoming-references", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "ID of this contact center resource."}, - {Name: "type", In: InQuery, Flag: "type", Usage: "Entity type of the other entity that has a reference to this specific entity."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCDialPlanList = &Operation{ - ID: "CCDialPlanList", Area: "cc", Group: "dial-plan", Command: "list", - Summary: "List Dial Plans", - Description: "Retrieve a list of Dial Plans in a given organization.\n\n**Deprecated:** Dial Plan configuration is deprecated. Dial Plan is no longer available as an Agent Profile setting, so agents can no longer use them for agent dial number validation.", - Method: "GET", Path: "/organization/{orgid}/v2/dial-plan", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "filter", In: InQuery, Flag: "filter", Usage: "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime \n\nThe examples below show some search queries\n- id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\n- id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide.\n\nNote: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter.\n"}, - {Name: "attributes", In: InQuery, Flag: "attributes", Usage: "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported."}, - {Name: "search", In: InQuery, Flag: "search", Usage: "Filter data based on the search keyword.Supported search columns(name)\n\nThe examples below show some search queries\n- \"Cisco\"\n- field==\"name\";value==\"Cisco\"\n- fields=in=(\"name\");value==\"Cisco\"\n"}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCDialPlanCreate = &Operation{ - ID: "CCDialPlanCreate", Area: "cc", Group: "dial-plan", Command: "create", - Summary: "Create a new Dial Plan", - Description: "Create a new Dial Plan in a given organization.\n\n**Deprecated:** Dial Plan configuration is deprecated. Dial Plan is no longer available as an Agent Profile setting, so agents can no longer use them for agent dial number validation.", - Method: "POST", Path: "/organization/{orgid}/dial-plan", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "active", Flag: "active", Type: "bool"}, - {Name: "name", Flag: "name", Type: "string"}, - {Name: "regularExpression", Flag: "regular-expression", Type: "string"}, - {Name: "organizationId", Flag: "organization-id", Type: "string"}, - {Name: "id", Flag: "id", Type: "string"}, - {Name: "version", Flag: "version", Type: "int64"}, - {Name: "description", Flag: "description", Type: "string"}, - {Name: "prefix", Flag: "prefix", Type: "string"}, - {Name: "strippedChars", Flag: "stripped-chars", Type: "string"}, - {Name: "systemDefault", Flag: "system-default", Type: "bool"}, - {Name: "createdTime", Flag: "created-time", Type: "int64"}, - {Name: "lastUpdatedTime", Flag: "last-updated-time", Type: "int64"}, - }}, -} - -var CCDialPlanBulkSave = &Operation{ - ID: "CCDialPlanBulkSave", Area: "cc", Group: "dial-plan", Command: "bulk-save", - Summary: "Bulk save Dial Plans", - Description: "Create, Update or delete Dial Plans in bulk in a given organization.\n\n**Deprecated:** Dial Plan configuration is deprecated. Dial Plan is no longer available as an Agent Profile setting, so agents can no longer use them for agent dial number validation.", - Method: "POST", Path: "/organization/{orgid}/dial-plan/bulk", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{}, -} - -var CCDialPlanBulkExport = &Operation{ - ID: "CCDialPlanBulkExport", Area: "cc", Group: "dial-plan", Command: "bulk-export", - Summary: "Bulk export Dial Plan(s)", - Description: "Export all Dial Plan(s) in a given organization.", - Method: "GET", Path: "/organization/{orgid}/dial-plan/bulk-export", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCDialPlanGet = &Operation{ - ID: "CCDialPlanGet", Area: "cc", Group: "dial-plan", Command: "get", - Aliases: []string{"get-id"}, - Summary: "Get specific Dial Plan by ID", - Description: "Retrieve an existing Dial Plan by ID in a given organization.\n\n**Deprecated:** Dial Plan configuration is deprecated. Dial Plan is no longer available as an Agent Profile setting, so agents can no longer use them for agent dial number validation.", - Method: "GET", Path: "/organization/{orgid}/dial-plan/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Dial Plan."}, - }, -} - -var CCDialPlanUpdate = &Operation{ - ID: "CCDialPlanUpdate", Area: "cc", Group: "dial-plan", Command: "update", - Aliases: []string{"update-id"}, - Summary: "Update specific Dial Plan by ID", - Description: "Update an existing Dial Plan by ID in a given organization.\n\n**Deprecated:** Dial Plan configuration is deprecated. Dial Plan is no longer available as an Agent Profile setting, so agents can no longer use them for agent dial number validation.", - Method: "PUT", Path: "/organization/{orgid}/dial-plan/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Dial Plan."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "active", Flag: "active", Type: "bool"}, - {Name: "name", Flag: "name", Type: "string"}, - {Name: "regularExpression", Flag: "regular-expression", Type: "string"}, - {Name: "organizationId", Flag: "organization-id", Type: "string"}, - {Name: "id", Flag: "id", Type: "string"}, - {Name: "version", Flag: "version", Type: "int64"}, - {Name: "description", Flag: "description", Type: "string"}, - {Name: "prefix", Flag: "prefix", Type: "string"}, - {Name: "strippedChars", Flag: "stripped-chars", Type: "string"}, - {Name: "systemDefault", Flag: "system-default", Type: "bool"}, - {Name: "createdTime", Flag: "created-time", Type: "int64"}, - {Name: "lastUpdatedTime", Flag: "last-updated-time", Type: "int64"}, - }}, -} - -var CCDialPlanDelete = &Operation{ - ID: "CCDialPlanDelete", Area: "cc", Group: "dial-plan", Command: "delete", - Aliases: []string{"delete-id"}, - Summary: "Delete specific Dial Plan by ID", - Description: "Delete an existing Dial Plan by ID in a given organization.\n\n**Deprecated:** Dial Plan configuration is deprecated. Dial Plan is no longer available as an Agent Profile setting, so agents can no longer use them for agent dial number validation.", - Method: "DELETE", Path: "/organization/{orgid}/dial-plan/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Dial Plan."}, - }, -} - -var CCDialPlanListReferences = &Operation{ - ID: "CCDialPlanListReferences", Area: "cc", Group: "dial-plan", Command: "list-references", - Summary: "List references for a specific Dial Plan", - Description: "Retrieve a list of all entities that have reference to an existing Dial Plan by ID in a given organization.\n\n**Deprecated:** Dial Plan configuration is deprecated. Dial Plan is no longer available as an Agent Profile setting, so agents can no longer use them for agent dial number validation.", - Method: "GET", Path: "/organization/{orgid}/dial-plan/{id}/incoming-references", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "ID of this contact center resource."}, - {Name: "type", In: InQuery, Flag: "type", Usage: "Entity type of the other entity that has a reference to this specific entity."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCEntryPointList = &Operation{ - ID: "CCEntryPointList", Area: "cc", Group: "entry-point", Command: "list", - Summary: "List Entry Point(s)", - Description: "Retrieve a list of Entry Point(s) in a given organization.\n Note: Array fields are removed from List API. If all fields are required please fetch Id's and use get-by-id API.", - Method: "GET", Path: "/organization/{orgid}/v2/entry-point", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "filter", In: InQuery, Flag: "filter", Usage: "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, xspVersion, createdTime, lastUpdatedTime \n\nThe examples below show some search queries\n- id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\n- id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide.\n\nNote: values to be used in the filter syntax should not contain space, and if so kindly bound it with quotes to apply filter.\n"}, - {Name: "attributes", In: InQuery, Flag: "attributes", Usage: "Specify the attributes to be returned.Default all attributes are returned along with specified columns. All Attributes are supported except (ccOneQueue, userIds, queueRankings, links) "}, - {Name: "search", In: InQuery, Flag: "search", Usage: "Filter data based on the search keyword.Supported search columns(name, description)\n\nThe examples below show some search queries\n- \"Cisco\"\n- field==\"name\";value==\"Cisco\"\n- fields=in=(\"name\",\"description\");value==\"Cisco\"\n"}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - {Name: "desktopProfileFilter", In: InQuery, Flag: "desktop-profile-filter", Usage: "If set to true, the API will return only the data that the user has access to according to its Desktop Profile. If set to false, the API will not check for Desktop Profile level access."}, - {Name: "provisioningView", In: InQuery, Flag: "provisioning-view", Usage: "If set to true, the API will only return data that user has access to, according to User Profile. If set to false and desktopProfileFilter query parameter is not specified, the API will add user associated data, based on desktop. "}, - {Name: "includeCount", In: InQuery, Flag: "include-count", Usage: "Enable the flag to get the count of DN-EP Mapping"}, - {Name: "singleObjectResponse", In: InQuery, Flag: "single-object-response", Usage: "Specifiy whether to include array fields in the response, This query param should use only if the response contain single record, if we are using for multiple objects response query param not supported and throws an exception."}, - }, - Paging: &Paging{}, -} - -var CCEntryPointCreate = &Operation{ - ID: "CCEntryPointCreate", Area: "cc", Group: "entry-point", Command: "create", - Summary: "Create a new Entry Point", - Description: "Create a new Entry Point in a given organization.", - Method: "POST", Path: "/organization/{orgid}/entry-point", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{}, -} - -var CCEntryPointBulkSave = &Operation{ - ID: "CCEntryPointBulkSave", Area: "cc", Group: "entry-point", Command: "bulk-save", - Summary: "Bulk save Entry Point(s)", - Description: "Create, Update or delete Entry Point(s) in bulk in a given organization.", - Method: "POST", Path: "/organization/{orgid}/entry-point/bulk", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{}, -} - -var CCEntryPointBulkExport = &Operation{ - ID: "CCEntryPointBulkExport", Area: "cc", Group: "entry-point", Command: "bulk-export", - Summary: "Bulk export Entry Point(s)", - Description: "Export all Entry Point(s) in a given organization.", - Method: "GET", Path: "/organization/{orgid}/entry-point/bulk-export", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "type", In: InQuery, Flag: "type", Usage: "Indicates the type of Entrypoint; can be INBOUND or OUTBOUND."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCEntryPointPurgeInactive = &Operation{ - ID: "CCEntryPointPurgeInactive", Area: "cc", Group: "entry-point", Command: "purge-inactive", - Summary: "Purge inactive Entry Point(s)", - Description: "Purge inactive Entry Point(s) older than the configured interval for a given organization.", - Method: "POST", Path: "/organization/{orgid}/entry-point/purge-inactive-entities", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "nextStartId", In: InQuery, Flag: "next-start-id", Usage: "This is the entity ID from which items for the next purge batch with be selected."}, - }, -} - -var CCEntryPointGet = &Operation{ - ID: "CCEntryPointGet", Area: "cc", Group: "entry-point", Command: "get", - Aliases: []string{"get-id"}, - Summary: "Get specific Entry Point by ID", - Description: "Retrieve an existing Entry Point by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/entry-point/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Entry Point."}, - {Name: "includeNames", In: InQuery, Flag: "include-names", Usage: "Specifiy whether to include flow override settings reference variable names."}, - }, -} - -var CCEntryPointUpdate = &Operation{ - ID: "CCEntryPointUpdate", Area: "cc", Group: "entry-point", Command: "update", - Aliases: []string{"update-id"}, - Summary: "Update specific Entry Point by ID", - Description: "Update an existing Entry Point by ID in a given organization.", - Method: "PUT", Path: "/organization/{orgid}/entry-point/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Entry Point."}, - }, - Body: &Body{}, -} - -var CCEntryPointDelete = &Operation{ - ID: "CCEntryPointDelete", Area: "cc", Group: "entry-point", Command: "delete", - Aliases: []string{"delete-id"}, - Summary: "Delete specific Entry Point by ID", - Description: "Delete an existing Entry Point by ID in a given organization.", - Method: "DELETE", Path: "/organization/{orgid}/entry-point/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Entry Point."}, - }, -} - -var CCEntryPointListReferences = &Operation{ - ID: "CCEntryPointListReferences", Area: "cc", Group: "entry-point", Command: "list-references", - Summary: "List references for a specific Entry Point", - Description: "Retrieve a list of all entities that have reference to an existing Entry Point by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/entry-point/{id}/incoming-references", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "ID of this contact center resource."}, - {Name: "type", In: InQuery, Flag: "type", Usage: "Entity type of the other entity that has a reference to this specific entity."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCEntryPointListV1 = &Operation{ - ID: "CCEntryPointListV1", Area: "cc", Group: "entry-point", Command: "list-v1", - Summary: "List Entry Point(s) (v1)", - Description: "Lists entry points with every field, through the v1 route. Each item carries lastUpdatedTime.", - Method: "GET", Path: "/organization/{orgid}/entry-point", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Page number, from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Items per page."}, - }, - Paging: &Paging{}, -} - -var CCGlobalVariablesCreate = &Operation{ - ID: "CCGlobalVariablesCreate", Area: "cc", Group: "global-variables", Command: "create", - Summary: "Create a new Global Variable", - Description: "Create a new Global Variable in a given organization.", - Method: "POST", Path: "/organization/{orgid}/cad-variable", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "active", Flag: "active", Type: "bool"}, - {Name: "agentEditable", Flag: "agent-editable", Type: "bool"}, - {Name: "agentViewable", Flag: "agent-viewable", Type: "bool"}, - {Name: "defaultValue", Flag: "default-value", Type: "string"}, - {Name: "name", Flag: "name", Type: "string"}, - {Name: "reportable", Flag: "reportable", Type: "bool"}, - {Name: "variableType", Flag: "variable-type", Type: "string"}, - {Name: "organizationId", Flag: "organization-id", Type: "string"}, - {Name: "id", Flag: "id", Type: "string"}, - {Name: "version", Flag: "version", Type: "int64"}, - {Name: "description", Flag: "description", Type: "string"}, - {Name: "sensitive", Flag: "sensitive", Type: "bool"}, - {Name: "desktopLabel", Flag: "desktop-label", Type: "string"}, - {Name: "systemDefault", Flag: "system-default", Type: "bool"}, - }}, -} - -var CCGlobalVariablesBulkSave = &Operation{ - ID: "CCGlobalVariablesBulkSave", Area: "cc", Group: "global-variables", Command: "bulk-save", - Summary: "Bulk save Global Variable(s)", - Description: "Export all Global Variable(s) in a given organization.", - Method: "POST", Path: "/organization/{orgid}/cad-variable/bulk", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{}, -} - -var CCGlobalVariablesBulkExport = &Operation{ - ID: "CCGlobalVariablesBulkExport", Area: "cc", Group: "global-variables", Command: "bulk-export", - Summary: "Bulk export Global Variable(s)", - Description: "Export all Global Variable(s) in a given organization.", - Method: "GET", Path: "/organization/{orgid}/cad-variable/bulk-export", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCGlobalVariablesPurgeInactive = &Operation{ - ID: "CCGlobalVariablesPurgeInactive", Area: "cc", Group: "global-variables", Command: "purge-inactive", - Summary: "Purge inactive Global Variable(s)", - Description: "Purge inactive Global Variable(s) older than the configured interval for a given organization.", - Method: "POST", Path: "/organization/{orgid}/cad-variable/purge-inactive-entities", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "nextStartId", In: InQuery, Flag: "next-start-id", Usage: "This is the entity ID from which items for the next purge batch with be selected."}, - }, -} - -var CCGlobalVariablesGetReportableCount = &Operation{ - ID: "CCGlobalVariablesGetReportableCount", Area: "cc", Group: "global-variables", Command: "get-reportable-count", - Summary: "Get reportable count for Global Variable(s)", - Description: "Get count for all the reportable Global Variable(s) in a given organization.", - Method: "GET", Path: "/organization/{orgid}/cad-variable/reportable-count", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, -} - -var CCGlobalVariablesGet = &Operation{ - ID: "CCGlobalVariablesGet", Area: "cc", Group: "global-variables", Command: "get", - Aliases: []string{"get-id"}, - Summary: "Get specific Global Variable by ID", - Description: "Retrieve an existing Global Variable by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/cad-variable/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "ID of the Global Variable."}, - }, -} - -var CCGlobalVariablesUpdate = &Operation{ - ID: "CCGlobalVariablesUpdate", Area: "cc", Group: "global-variables", Command: "update", - Aliases: []string{"update-id"}, - Summary: "Update specific Global Variable by ID", - Description: "Update an existing Global Variable by ID in a given organization. Required fields in payload are agentEditable, variableType, agentViewable, reportable, active, defaultValue.", - Method: "PUT", Path: "/organization/{orgid}/cad-variable/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "ID of the Global Variable."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "active", Flag: "active", Type: "bool"}, - {Name: "agentEditable", Flag: "agent-editable", Type: "bool"}, - {Name: "agentViewable", Flag: "agent-viewable", Type: "bool"}, - {Name: "defaultValue", Flag: "default-value", Type: "string"}, - {Name: "name", Flag: "name", Type: "string"}, - {Name: "reportable", Flag: "reportable", Type: "bool"}, - {Name: "variableType", Flag: "variable-type", Type: "string"}, - {Name: "organizationId", Flag: "organization-id", Type: "string"}, - {Name: "id", Flag: "id", Type: "string"}, - {Name: "version", Flag: "version", Type: "int64"}, - {Name: "description", Flag: "description", Type: "string"}, - {Name: "sensitive", Flag: "sensitive", Type: "bool"}, - {Name: "desktopLabel", Flag: "desktop-label", Type: "string"}, - {Name: "systemDefault", Flag: "system-default", Type: "bool"}, - }}, -} - -var CCGlobalVariablesDelete = &Operation{ - ID: "CCGlobalVariablesDelete", Area: "cc", Group: "global-variables", Command: "delete", - Aliases: []string{"delete-id"}, - Summary: "Delete specific Global Variable by ID", - Description: "Delete an existing Global Variable by ID in a given organization.", - Method: "DELETE", Path: "/organization/{orgid}/cad-variable/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "ID of the Global Variable."}, - }, -} - -var CCGlobalVariablesListReferences = &Operation{ - ID: "CCGlobalVariablesListReferences", Area: "cc", Group: "global-variables", Command: "list-references", - Summary: "List references for a specific Global Variable", - Description: "Retrieve a list of all entities that have reference to an existing Global Variable by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/cad-variable/{id}/incoming-references", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "ID of this contact center resource."}, - {Name: "type", In: InQuery, Flag: "type", Usage: "Entity type of the other entity that has a reference to this specific entity."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCGlobalVariablesList = &Operation{ - ID: "CCGlobalVariablesList", Area: "cc", Group: "global-variables", Command: "list", - Summary: "List Global Variable(s)", - Description: "Retrieve a list of Global Variable(s) in a given organization.", - Method: "GET", Path: "/organization/{orgid}/v2/cad-variable", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "filter", In: InQuery, Flag: "filter", Usage: "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime \n\nThe examples below show some search queries\n- id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\n- id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide.\n\nNote: values to be used in the filter syntax should not contain space, and if so kindly bound it with quotes to apply filter.\n"}, - {Name: "attributes", In: InQuery, Flag: "attributes", Usage: "Specify the attributes to be returned.Default all attributes are returned along with specified columns. All Attributes are supported"}, - {Name: "search", In: InQuery, Flag: "search", Usage: "Filter data based on the search keyword.Supported search columns(name)\n\nThe examples below show some search queries\n- \"Cisco\"\n- field==\"name\";value==\"Cisco\"\n- fields=in=(\"name\");value==\"Cisco\"\n"}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCMultimediaProfileList = &Operation{ - ID: "CCMultimediaProfileList", Area: "cc", Group: "multimedia-profile", Command: "list", - Summary: "List Multimedia Profile(s)", - Description: "Retrieve a list of Multimedia Profile(s) in a given organization.", - Method: "GET", Path: "/organization/{orgid}/v2/multimedia-profile", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "filter", In: InQuery, Flag: "filter", Usage: "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime \n\nThe examples below show some search queries\n- id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\n- id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide.\n\nNote: values to be used in the filter syntax should not contain space, and if so kindly bound it with quotes to apply filter.\n"}, - {Name: "attributes", In: InQuery, Flag: "attributes", Usage: "Specify the attributes to be returned.Default all attributes are returned along with specified columns. All Attributes are supported"}, - {Name: "search", In: InQuery, Flag: "search", Usage: "Filter data based on the search keyword.Supported search columns(name, description)\n\nThe examples below show some search queries\n- \"Cisco\"\n- field==\"name\";value==\"Cisco\"\n- fields=in=(\"name\",\"description\");value==\"Cisco\"\n"}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCMultimediaProfileCreate = &Operation{ - ID: "CCMultimediaProfileCreate", Area: "cc", Group: "multimedia-profile", Command: "create", - Summary: "Create a new Multimedia Profile", - Description: "Create a new Multimedia Profile in a given organization.", - Method: "POST", Path: "/organization/{orgid}/multimedia-profile", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{}, -} - -var CCMultimediaProfileBulkSave = &Operation{ - ID: "CCMultimediaProfileBulkSave", Area: "cc", Group: "multimedia-profile", Command: "bulk-save", - Summary: "Bulk save Multimedia Profile(s)", - Description: "Create, Update or delete Multimedia Profile(s) in bulk in a given organization.", - Method: "POST", Path: "/organization/{orgid}/multimedia-profile/bulk", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{}, -} - -var CCMultimediaProfileBulkExport = &Operation{ - ID: "CCMultimediaProfileBulkExport", Area: "cc", Group: "multimedia-profile", Command: "bulk-export", - Summary: "Bulk export Multimedia Profile(s)", - Description: "Export all Multimedia Profile(s) in a given organization.", - Method: "GET", Path: "/organization/{orgid}/multimedia-profile/bulk-export", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCMultimediaProfilePurgeInactive = &Operation{ - ID: "CCMultimediaProfilePurgeInactive", Area: "cc", Group: "multimedia-profile", Command: "purge-inactive", - Summary: "Purge inactive Multimedia Profile(s)", - Description: "Purge inactive Multimedia Profile(s) older than the configured interval for a given organization.", - Method: "POST", Path: "/organization/{orgid}/multimedia-profile/purge-inactive-entities", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "nextStartId", In: InQuery, Flag: "next-start-id", Usage: "This is the entity ID from which items for the next purge batch with be selected."}, - }, -} - -var CCMultimediaProfileGet = &Operation{ - ID: "CCMultimediaProfileGet", Area: "cc", Group: "multimedia-profile", Command: "get", - Aliases: []string{"get-id"}, - Summary: "Get specific Multimedia Profile by ID", - Description: "Retrieve an existing Multimedia Profile by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/multimedia-profile/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Multimedia Profile."}, - }, -} - -var CCMultimediaProfileUpdate = &Operation{ - ID: "CCMultimediaProfileUpdate", Area: "cc", Group: "multimedia-profile", Command: "update", - Aliases: []string{"update-id"}, - Summary: "Update specific Multimedia Profile by ID", - Description: "Update an existing Multimedia Profile by ID in a given organization.", - Method: "PUT", Path: "/organization/{orgid}/multimedia-profile/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Multimedia Profile."}, - }, - Body: &Body{}, -} - -var CCMultimediaProfileDelete = &Operation{ - ID: "CCMultimediaProfileDelete", Area: "cc", Group: "multimedia-profile", Command: "delete", - Aliases: []string{"delete-id"}, - Summary: "Delete specific Multimedia Profile by ID", - Description: "Delete an existing Multimedia Profile by ID in a given organization.", - Method: "DELETE", Path: "/organization/{orgid}/multimedia-profile/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Multimedia Profile."}, - }, -} - -var CCMultimediaProfileListReferences = &Operation{ - ID: "CCMultimediaProfileListReferences", Area: "cc", Group: "multimedia-profile", Command: "list-references", - Summary: "List references for a specific Multimedia Profile", - Description: "Retrieve a list of all entities that have reference to an existing Multimedia Profile by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/multimedia-profile/{id}/incoming-references", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "ID of this contact center resource."}, - {Name: "type", In: InQuery, Flag: "type", Usage: "Entity type of the other entity that has a reference to this specific entity."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCOutdialAniList = &Operation{ - ID: "CCOutdialAniList", Area: "cc", Group: "outdial-ani", Command: "list", - Summary: "List Outdial ANIs", - Description: "Retrieve a list of Outdial ANIs in a given organization.\n Note: Returning array fields in the List (Get All) API response is deprecated. To retrieve the complete resource with all fields, please use the Get-by-ID API instead.", - Method: "GET", Path: "/organization/{orgid}/v2/outdial-ani", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "filter", In: InQuery, Flag: "filter", Usage: "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, outdialANIEntries, createdTime, lastUpdatedTime \n\nThe examples below show some search queries\n- id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\n- id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide.\n\nNote: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter.\n"}, - {Name: "attributes", In: InQuery, Flag: "attributes", Usage: "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported. except outdialANIEntries"}, - {Name: "search", In: InQuery, Flag: "search", Usage: "Filter data based on the search keyword.Supported search columns(name, description)\n\nThe examples below show some search queries\n- \"Cisco\"\n- field==\"name\";value==\"Cisco\"\n- fields=in=(\"name\",\"description\");value==\"Cisco\"\n"}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - {Name: "singleObjectResponse", In: InQuery, Flag: "single-object-response", Usage: "Specify whether to include array fields in the response. This query parameter should be used only when the response contains a single record. It is not supported for responses with multiple objects and throws an exception."}, - }, - Paging: &Paging{}, -} - -var CCOutdialAniCreate = &Operation{ - ID: "CCOutdialAniCreate", Area: "cc", Group: "outdial-ani", Command: "create", - Summary: "Create a new Outdial ANI", - Description: "Create a new Outdial ANI in a given organization.", - Method: "POST", Path: "/organization/{orgid}/outdial-ani", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{}, -} - -var CCOutdialAniBulkSave = &Operation{ - ID: "CCOutdialAniBulkSave", Area: "cc", Group: "outdial-ani", Command: "bulk-save", - Summary: "Bulk save Outdial ANIs", - Description: "Create, Update or delete Outdial ANIs in bulk in a given organization.", - Method: "POST", Path: "/organization/{orgid}/outdial-ani/bulk", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{}, -} - -var CCOutdialAniBulkExport = &Operation{ - ID: "CCOutdialAniBulkExport", Area: "cc", Group: "outdial-ani", Command: "bulk-export", - Summary: "Bulk export Outdial ANI(s)", - Description: "Export all Outdial ANI(s) in a given organization.", - Method: "GET", Path: "/organization/{orgid}/outdial-ani/bulk-export", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCOutdialAniListEntries = &Operation{ - ID: "CCOutdialAniListEntries", Area: "cc", Group: "outdial-ani", Command: "list-entries", - Aliases: []string{"list-entry"}, - Summary: "List Outdial ANI Entries", - Description: "Retrieve a list of Outdial ANI Entries in a given organization.", - Method: "GET", Path: "/organization/{orgid}/outdial-ani/entry", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "filter", In: InQuery, Flag: "filter", Usage: "Specify a filter based on which the results will be fetched. Supported filterable fields: id. \n\nThe examples below show some search queries\n- id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\n- id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide.\n\nNote: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter.\n"}, - {Name: "attributes", In: InQuery, Flag: "attributes", Usage: "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported."}, - {Name: "search", In: InQuery, Flag: "search", Usage: "Filter data based on the search keyword.Supported search columns(name)\n\nThe examples below show some search queries\n- \"Cisco\"\n- field==\"name\";value==\"Cisco\"\n- fields=in=(\"name\");value==\"Cisco\"\n"}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCOutdialAniGet = &Operation{ - ID: "CCOutdialAniGet", Area: "cc", Group: "outdial-ani", Command: "get", - Aliases: []string{"get-id"}, - Summary: "Get specific Outdial ANI by ID", - Description: "Retrieve an existing Outdial ANI by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/outdial-ani/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Outdial ANI."}, - }, -} - -var CCOutdialAniUpdate = &Operation{ - ID: "CCOutdialAniUpdate", Area: "cc", Group: "outdial-ani", Command: "update", - Aliases: []string{"update-id"}, - Summary: "Update specific Outdial ANI by ID", - Description: "Update an existing Outdial ANI by ID in a given organization.", - Method: "PUT", Path: "/organization/{orgid}/outdial-ani/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Outdial ANI."}, - }, - Body: &Body{}, -} - -var CCOutdialAniDelete = &Operation{ - ID: "CCOutdialAniDelete", Area: "cc", Group: "outdial-ani", Command: "delete", - Aliases: []string{"delete-id"}, - Summary: "Delete specific Outdial ANI by ID", - Description: "Delete an existing Outdial ANI by ID in a given organization.", - Method: "DELETE", Path: "/organization/{orgid}/outdial-ani/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Outdial ANI."}, - }, -} - -var CCOutdialAniListReferences = &Operation{ - ID: "CCOutdialAniListReferences", Area: "cc", Group: "outdial-ani", Command: "list-references", - Summary: "List references for a specific Outdial ANI", - Description: "Retrieve a list of all entities that have reference to an existing Outdial ANI by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/outdial-ani/{id}/incoming-references", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "ID of this contact center resource."}, - {Name: "type", In: InQuery, Flag: "type", Usage: "Entity type of the other entity that has a reference to this specific entity."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCOutdialAniCreateEntry = &Operation{ - ID: "CCOutdialAniCreateEntry", Area: "cc", Group: "outdial-ani", Command: "create-entry", - Summary: "Create a new Outdial ANI Entry", - Description: "Create a new Outdial ANI Entry in a given organization.", - Method: "POST", Path: "/organization/{orgid}/outdial-ani/{outDialAniId}/entry", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "outDialAniId", In: InPath, Flag: "out-dial-ani-id", Usage: "Resource ID of the Outdial ANI"}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "name", Flag: "name", Type: "string"}, - {Name: "number", Flag: "number", Type: "string"}, - {Name: "organizationId", Flag: "organization-id", Type: "string"}, - {Name: "id", Flag: "id", Type: "string"}, - {Name: "version", Flag: "version", Type: "int64"}, - {Name: "defaultANIEntry", Flag: "default-anientry", Type: "bool"}, - {Name: "createdTime", Flag: "created-time", Type: "int64"}, - {Name: "lastUpdatedTime", Flag: "last-updated-time", Type: "int64"}, - }}, -} - -var CCOutdialAniBulkSaveEntries = &Operation{ - ID: "CCOutdialAniBulkSaveEntries", Area: "cc", Group: "outdial-ani", Command: "bulk-save-entries", - Aliases: []string{"bulk-save-entry"}, - Summary: "Bulk save Outdial ANI Entries", - Description: "Create, Update or delete Outdial ANI Entries in bulk for an Address Book in a given organization.", - Method: "POST", Path: "/organization/{orgid}/outdial-ani/{outDialAniId}/entry/bulk", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "outDialAniId", In: InPath, Flag: "out-dial-ani-id", Usage: "Resource ID of the Outdial ANI"}, - }, - Body: &Body{}, -} - -var CCOutdialAniGetEntryId = &Operation{ - ID: "CCOutdialAniGetEntryId", Area: "cc", Group: "outdial-ani", Command: "get-entry-id", - Summary: "Get specific Outdial ANI Entry by ID", - Description: "Retrieve an existing Outdial ANI Entry by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/outdial-ani/{outDialAniId}/entry/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "outDialAniId", In: InPath, Flag: "out-dial-ani-id", Usage: "Resource ID of the Outdial ANI"}, - {Name: "id", In: InPath, Flag: "id", Usage: "ID of this contact center resource."}, - }, -} - -var CCOutdialAniUpdateEntryId = &Operation{ - ID: "CCOutdialAniUpdateEntryId", Area: "cc", Group: "outdial-ani", Command: "update-entry-id", - Summary: "Update specific Outdial ANI Entry by ID", - Description: "Update an existing Outdial ANI Entry by ID in a given organization.", - Method: "PUT", Path: "/organization/{orgid}/outdial-ani/{outDialAniId}/entry/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "outDialAniId", In: InPath, Flag: "out-dial-ani-id", Usage: "Resource ID of the Outdial ANI"}, - {Name: "id", In: InPath, Flag: "id", Usage: "ID of this contact center resource."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "name", Flag: "name", Type: "string"}, - {Name: "number", Flag: "number", Type: "string"}, - {Name: "organizationId", Flag: "organization-id", Type: "string"}, - {Name: "id", Flag: "id", Type: "string"}, - {Name: "version", Flag: "version", Type: "int64"}, - {Name: "defaultANIEntry", Flag: "default-anientry", Type: "bool"}, - {Name: "createdTime", Flag: "created-time", Type: "int64"}, - {Name: "lastUpdatedTime", Flag: "last-updated-time", Type: "int64"}, - }}, -} - -var CCOutdialAniDeleteEntryId = &Operation{ - ID: "CCOutdialAniDeleteEntryId", Area: "cc", Group: "outdial-ani", Command: "delete-entry-id", - Summary: "Delete specific Outdial ANI Entry by ID", - Description: "Delete an existing Outdial ANI Entry by ID in a given organization.", - Method: "DELETE", Path: "/organization/{orgid}/outdial-ani/{outDialAniId}/entry/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "outDialAniId", In: InPath, Flag: "out-dial-ani-id", Usage: "Resource ID of the Outdial ANI"}, - {Name: "id", In: InPath, Flag: "id", Usage: "ID of this contact center resource."}, - }, -} - -var CCOutdialAniListEntriesForAni = &Operation{ - ID: "CCOutdialAniListEntriesForAni", Area: "cc", Group: "outdial-ani", Command: "list-entries-for-ani", - Aliases: []string{"list-entry-2"}, - Summary: "List Outdial ANI Entries", - Description: "Retrieve a list of Outdial ANI Entries in a given organization.", - Method: "GET", Path: "/organization/{orgid}/v2/outdial-ani/{outDialAniId}/entry", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "outDialAniId", In: InPath, Flag: "out-dial-ani-id", Usage: "Resource ID of the Outdial ANI"}, - {Name: "filter", In: InQuery, Flag: "filter", Usage: "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime \n\nThe examples below show some search queries\n- id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\n- id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide.\n\nNote: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter.\n"}, - {Name: "attributes", In: InQuery, Flag: "attributes", Usage: "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported."}, - {Name: "search", In: InQuery, Flag: "search", Usage: "Filter data based on the search keyword.Supported search columns(name)\n\nThe examples below show some search queries\n- \"Cisco\"\n- field==\"name\";value==\"Cisco\"\n- fields=in=(\"name\");value==\"Cisco\"\n"}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCSiteList = &Operation{ - ID: "CCSiteList", Area: "cc", Group: "site", Command: "list", - Summary: "List Site(s)", - Description: "Retrieve a list of Site(s) in a given organization.", - Method: "GET", Path: "/organization/{orgid}/v2/site", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "filter", In: InQuery, Flag: "filter", Usage: "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime \n\nThe examples below show some search queries\n- id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\n- id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide.\n\nNote: values to be used in the filter syntax should not contain space, and if so kindly bound it with quotes to apply filter.\n"}, - {Name: "attributes", In: InQuery, Flag: "attributes", Usage: "Specify the attributes to be returned.Default all attributes are returned along with specified columns. All Attributes are supported"}, - {Name: "search", In: InQuery, Flag: "search", Usage: "Filter data based on the search keyword.Supported search columns(name)\n\nThe examples below show some search queries\n- \"Cisco\"\n- field==\"name\";value==\"Cisco\"\n- fields=in=(\"name\");value==\"Cisco\"\n"}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCSiteCreate = &Operation{ - ID: "CCSiteCreate", Area: "cc", Group: "site", Command: "create", - Summary: "Create a new Site", - Description: "Create a new Site in a given organization.", - Method: "POST", Path: "/organization/{orgid}/site", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "active", Flag: "active", Type: "bool"}, - {Name: "multimediaProfileId", Flag: "multimedia-profile-id", Type: "string"}, - {Name: "name", Flag: "name", Type: "string"}, - {Name: "organizationId", Flag: "organization-id", Type: "string"}, - {Name: "id", Flag: "id", Type: "string"}, - {Name: "version", Flag: "version", Type: "int64"}, - {Name: "description", Flag: "description", Type: "string"}, - {Name: "systemDefault", Flag: "system-default", Type: "bool"}, - }}, -} - -var CCSiteBulkSave = &Operation{ - ID: "CCSiteBulkSave", Area: "cc", Group: "site", Command: "bulk-save", - Summary: "Bulk save Site(s)", - Description: "Create, Update or delete Site(s) in bulk in a given organization.", - Method: "POST", Path: "/organization/{orgid}/site/bulk", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{}, -} - -var CCSiteBulkExport = &Operation{ - ID: "CCSiteBulkExport", Area: "cc", Group: "site", Command: "bulk-export", - Summary: "Bulk export Site(s)", - Description: "Export all Site(s) in a given organization.", - Method: "GET", Path: "/organization/{orgid}/site/bulk-export", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCSitePurgeInactive = &Operation{ - ID: "CCSitePurgeInactive", Area: "cc", Group: "site", Command: "purge-inactive", - Summary: "Purge inactive Site(s)", - Description: "Purge inactive Site(s) older than the configured interval for a given organization.", - Method: "POST", Path: "/organization/{orgid}/site/purge-inactive-entities", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "nextStartId", In: InQuery, Flag: "next-start-id", Usage: "This is the entity ID from which items for the next purge batch with be selected."}, - }, -} - -var CCSiteGet = &Operation{ - ID: "CCSiteGet", Area: "cc", Group: "site", Command: "get", - Aliases: []string{"get-id"}, - Summary: "Get specific Site by ID", - Description: "Retrieve an existing Site by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/site/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Site."}, - }, -} - -var CCSiteUpdate = &Operation{ - ID: "CCSiteUpdate", Area: "cc", Group: "site", Command: "update", - Aliases: []string{"update-id"}, - Summary: "Update specific Site by ID", - Description: "Update an existing Site by ID in a given organization.", - Method: "PUT", Path: "/organization/{orgid}/site/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Site."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "active", Flag: "active", Type: "bool"}, - {Name: "multimediaProfileId", Flag: "multimedia-profile-id", Type: "string"}, - {Name: "name", Flag: "name", Type: "string"}, - {Name: "organizationId", Flag: "organization-id", Type: "string"}, - {Name: "id", Flag: "id", Type: "string"}, - {Name: "version", Flag: "version", Type: "int64"}, - {Name: "description", Flag: "description", Type: "string"}, - {Name: "systemDefault", Flag: "system-default", Type: "bool"}, - }}, -} - -var CCSiteDelete = &Operation{ - ID: "CCSiteDelete", Area: "cc", Group: "site", Command: "delete", - Aliases: []string{"delete-id"}, - Summary: "Delete specific Site by ID", - Description: "Delete an existing Site by ID in a given organization.", - Method: "DELETE", Path: "/organization/{orgid}/site/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Site."}, - }, -} - -var CCSiteListReferences = &Operation{ - ID: "CCSiteListReferences", Area: "cc", Group: "site", Command: "list-references", - Summary: "List references for a specific Site", - Description: "Retrieve a list of all entities that have reference to an existing Site by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/site/{id}/incoming-references", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "ID of this contact center resource."}, - {Name: "type", In: InQuery, Flag: "type", Usage: "Entity type of the other entity that has a reference to this specific entity."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCSiteListV1 = &Operation{ - ID: "CCSiteListV1", Area: "cc", Group: "site", Command: "list-v1", - Summary: "List Site(s) (v1)", - Description: "Lists sites with every field, through the v1 route. Each item carries lastUpdatedTime.", - Method: "GET", Path: "/organization/{orgid}/site", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Page number, from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Items per page."}, - }, - Paging: &Paging{}, -} - -var CCSkillList = &Operation{ - ID: "CCSkillList", Area: "cc", Group: "skill", Command: "list", - Summary: "List Skills", - Description: "Retrieve a list of Skills in a given organization.\n Note: Returning array fields in the List (Get All) API response is deprecated. To retrieve the complete resource with all fields, please use the Get-by-ID API instead.", - Method: "GET", Path: "/organization/{orgid}/v2/skill", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "filter", In: InQuery, Flag: "filter", Usage: "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, enumSkillValues, createdTime, lastUpdatedTime \n\nThe examples below show some search queries\n- id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\n- id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide.\n\nNote: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter.\n"}, - {Name: "attributes", In: InQuery, Flag: "attributes", Usage: "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported. except (enumSkillValues)"}, - {Name: "search", In: InQuery, Flag: "search", Usage: "Filter data based on the search keyword.Supported search columns(name)\n\nThe examples below show some search queries\n- \"Cisco\"\n- field==\"name\";value==\"Cisco\"\n- fields=in=(\"name\");value==\"Cisco\"\n"}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - {Name: "singleObjectResponse", In: InQuery, Flag: "single-object-response", Usage: "Specify whether to include array fields in the response. This query parameter should be used only when the response contains a single record. It is not supported for responses with multiple objects and throws an exception."}, - {Name: "include", In: InQuery, Flag: "include", Usage: "Fetch array fields on demand only. Supported array fields are enumSkillValues."}, - }, - Paging: &Paging{}, -} - -var CCSkillCreate = &Operation{ - ID: "CCSkillCreate", Area: "cc", Group: "skill", Command: "create", - Summary: "Create a new Skill", - Description: "Create a new Skill in a given organization.", - Method: "POST", Path: "/organization/{orgid}/skill", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{}, -} - -var CCSkillBulkSave = &Operation{ - ID: "CCSkillBulkSave", Area: "cc", Group: "skill", Command: "bulk-save", - Summary: "Bulk save Skills", - Description: "Create, Update or delete Skills in bulk in a given organization.", - Method: "POST", Path: "/organization/{orgid}/skill/bulk", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{}, -} - -var CCSkillBulkExport = &Operation{ - ID: "CCSkillBulkExport", Area: "cc", Group: "skill", Command: "bulk-export", - Summary: "Bulk export Skill(s)", - Description: "Export all Skill(s) in a given organization.", - Method: "GET", Path: "/organization/{orgid}/skill/bulk-export", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCSkillPurgeInactive = &Operation{ - ID: "CCSkillPurgeInactive", Area: "cc", Group: "skill", Command: "purge-inactive", - Summary: "Purge inactive Skills", - Description: "Purge inactive Skills older than the configured interval for a given organization.", - Method: "POST", Path: "/organization/{orgid}/skill/purge-inactive-entities", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "nextStartId", In: InQuery, Flag: "next-start-id", Usage: "This is the entity ID from which items for the next purge batch will be selected."}, - }, -} - -var CCSkillGet = &Operation{ - ID: "CCSkillGet", Area: "cc", Group: "skill", Command: "get", - Aliases: []string{"get-id"}, - Summary: "Get specific Skill by ID", - Description: "Retrieve an existing Skill by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/skill/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Skill."}, - }, -} - -var CCSkillUpdate = &Operation{ - ID: "CCSkillUpdate", Area: "cc", Group: "skill", Command: "update", - Aliases: []string{"update-id"}, - Summary: "Update specific Skill by ID", - Description: "Update an existing Skill by ID in a given organization.", - Method: "PUT", Path: "/organization/{orgid}/skill/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Skill."}, - }, - Body: &Body{}, -} - -var CCSkillDelete = &Operation{ - ID: "CCSkillDelete", Area: "cc", Group: "skill", Command: "delete", - Aliases: []string{"delete-id"}, - Summary: "Delete specific Skill by ID", - Description: "Delete an existing Skill by ID in a given organization.", - Method: "DELETE", Path: "/organization/{orgid}/skill/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Skill."}, - }, -} - -var CCSkillListReferences = &Operation{ - ID: "CCSkillListReferences", Area: "cc", Group: "skill", Command: "list-references", - Summary: "List references for a specific Skill", - Description: "Retrieve a list of all entities that have reference to an existing Skill by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/skill/{id}/incoming-references", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "ID of this contact center resource."}, - {Name: "type", In: InQuery, Flag: "type", Usage: "Entity type of the other entity that has a reference to this specific entity."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCSkillPopulateJsonAttributesFieldSkillIdOrg = &Operation{ - ID: "CCSkillPopulateJsonAttributesFieldSkillIdOrg", Area: "cc", Group: "skill", Command: "populate-json-attributes-field-skill-id-org", - Summary: "Populate json-attributes field for a given skill-id of an organization", - Method: "POST", Path: "/organization/{orgid}/skill/populate-json-attr/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid"}, - {Name: "id", In: InPath, Flag: "id"}, - }, -} - -var CCSkillListV1 = &Operation{ - ID: "CCSkillListV1", Area: "cc", Group: "skill", Command: "list-v1", - Summary: "List Skills (v1)", - Description: "Lists skills with every field, through the v1 route. Each item carries lastUpdatedTime.", - Method: "GET", Path: "/organization/{orgid}/skill", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Page number, from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Items per page."}, - }, - Paging: &Paging{}, -} - -var CCSkillProfileList = &Operation{ - ID: "CCSkillProfileList", Area: "cc", Group: "skill-profile", Command: "list", - Summary: "List Skill Profile(s)", - Description: "Retrieve a list of Skill Profile(s) in a given organization.\n Note: Returning array fields in the List (Get All) API response is deprecated. To retrieve the complete resource with all fields, please use the Get-by-ID API instead.", - Method: "GET", Path: "/organization/{orgid}/v2/skill-profile", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "filter", In: InQuery, Flag: "filter", Usage: "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, activeSkills, activeEnumSkills, createdTime, lastUpdatedTime \n\nThe examples below show some search queries\n- id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\n- id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide.\n\nNote: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter.\n"}, - {Name: "attributes", In: InQuery, Flag: "attributes", Usage: "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported. except (activeSkills,activeEnumSkills)"}, - {Name: "search", In: InQuery, Flag: "search", Usage: "Filter data based on the search keyword.Supported search columns(name, description)\n\nThe examples below show some search queries\n- \"Cisco\"\n- field==\"name\";value==\"Cisco\"\n- fields=in=(\"name\",\"description\");value==\"Cisco\"\n"}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - {Name: "singleObjectResponse", In: InQuery, Flag: "single-object-response", Usage: "Specifiy whether to include array fields in the response, This query param should use only if the response contain single record, if we are using for multiple objects response query param not supported and throws an exception."}, - }, - Paging: &Paging{}, -} - -var CCSkillProfileCreate = &Operation{ - ID: "CCSkillProfileCreate", Area: "cc", Group: "skill-profile", Command: "create", - Summary: "Create a new Skill Profile", - Description: "Create a new Skill Profile in a given organization.", - Method: "POST", Path: "/organization/{orgid}/skill-profile", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "activeSkills", In: InQuery, Flag: "active-skills", Usage: "Skill profile configuration data"}, - {Name: "name", In: InQuery, Flag: "name", Usage: "Skill profile configuration data"}, - {Name: "organizationId", In: InQuery, Flag: "organization-id", Usage: "Skill profile configuration data"}, - {Name: "id", In: InQuery, Flag: "id", Usage: "Skill profile configuration data"}, - {Name: "version", In: InQuery, Flag: "version", Usage: "Skill profile configuration data"}, - {Name: "description", In: InQuery, Flag: "description", Usage: "Skill profile configuration data"}, - {Name: "activeEnumSkills", In: InQuery, Flag: "active-enum-skills", Usage: "Skill profile configuration data"}, - {Name: "createdTime", In: InQuery, Flag: "created-time", Usage: "Skill profile configuration data"}, - {Name: "lastUpdatedTime", In: InQuery, Flag: "last-updated-time", Usage: "Skill profile configuration data"}, - }, - Body: &Body{}, -} - -var CCSkillProfileBulkSave = &Operation{ - ID: "CCSkillProfileBulkSave", Area: "cc", Group: "skill-profile", Command: "bulk-save", - Summary: "Bulk save Skill Profile(s)", - Description: "Create, Update or delete Skill Profile(s) in bulk in a given organization.", - Method: "POST", Path: "/organization/{orgid}/skill-profile/bulk", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{}, -} - -var CCSkillProfileBulkExport = &Operation{ - ID: "CCSkillProfileBulkExport", Area: "cc", Group: "skill-profile", Command: "bulk-export", - Summary: "Bulk export Skill Profile(s)", - Description: "Export all Skill Profile(s) in a given organization.", - Method: "GET", Path: "/organization/{orgid}/skill-profile/bulk-export", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCSkillProfileGet = &Operation{ - ID: "CCSkillProfileGet", Area: "cc", Group: "skill-profile", Command: "get", - Aliases: []string{"get-id"}, - Summary: "Get specific Skill Profile by ID", - Description: "Retrieve an existing Skill Profile by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/skill-profile/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Skill Profile."}, - {Name: "includeSkillDetails", In: InQuery, Flag: "include-skill-details", Usage: "If set to true returns skill details"}, - }, -} - -var CCSkillProfileUpdate = &Operation{ - ID: "CCSkillProfileUpdate", Area: "cc", Group: "skill-profile", Command: "update", - Aliases: []string{"update-id"}, - Summary: "Update specific Skill Profile by ID", - Description: "Update an existing Skill Profile by ID in a given organization.", - Method: "PUT", Path: "/organization/{orgid}/skill-profile/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Skill Profile."}, - {Name: "activeSkills", In: InQuery, Flag: "active-skills", Usage: "Skill profile configuration data for update"}, - {Name: "name", In: InQuery, Flag: "name", Usage: "Skill profile configuration data for update"}, - {Name: "organizationId", In: InQuery, Flag: "organization-id", Usage: "Skill profile configuration data for update"}, - {Name: "id", In: InQuery, Flag: "id", Usage: "Skill profile configuration data for update"}, - {Name: "version", In: InQuery, Flag: "version", Usage: "Skill profile configuration data for update"}, - {Name: "description", In: InQuery, Flag: "description", Usage: "Skill profile configuration data for update"}, - {Name: "activeEnumSkills", In: InQuery, Flag: "active-enum-skills", Usage: "Skill profile configuration data for update"}, - {Name: "createdTime", In: InQuery, Flag: "created-time", Usage: "Skill profile configuration data for update"}, - {Name: "lastUpdatedTime", In: InQuery, Flag: "last-updated-time", Usage: "Skill profile configuration data for update"}, - }, - Body: &Body{}, -} - -var CCSkillProfileDelete = &Operation{ - ID: "CCSkillProfileDelete", Area: "cc", Group: "skill-profile", Command: "delete", - Aliases: []string{"delete-id"}, - Summary: "Delete specific Skill Profile by ID", - Description: "Delete an existing Skill Profile by ID in a given organization.", - Method: "DELETE", Path: "/organization/{orgid}/skill-profile/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Skill Profile."}, - }, -} - -var CCSkillProfileListReferences = &Operation{ - ID: "CCSkillProfileListReferences", Area: "cc", Group: "skill-profile", Command: "list-references", - Summary: "List references for a specific Skill Profile", - Description: "Retrieve a list of all entities that have reference to an existing Skill Profile by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/skill-profile/{id}/incoming-references", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "ID of this contact center resource."}, - {Name: "type", In: InQuery, Flag: "type", Usage: "Entity type of the other entity that has a reference to this specific entity."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCTeamList = &Operation{ - ID: "CCTeamList", Area: "cc", Group: "team", Command: "list", - Summary: "List Teams", - Description: "Retrieve a list of Teams in a given organization. Note: Returning array fields in the List (Get All) API response is deprecated. To retrieve the complete resource with all fields, please use the Get-by-ID API instead.", - Method: "GET", Path: "/organization/{orgid}/v2/team", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "filter", In: InQuery, Flag: "filter", Usage: "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, userIds, queueRankings, createdTime, lastUpdatedTime \n\nUse the userId field to filter teams associated with the provided user.\n\nThe examples below show some search queries\n- id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\n- id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide.\n\nNote: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter.\n"}, - {Name: "attributes", In: InQuery, Flag: "attributes", Usage: "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported. except (userIds, queueRankings)"}, - {Name: "search", In: InQuery, Flag: "search", Usage: "Filter data based on the search keyword.Supported search columns(name, description)\n\nThe examples below show some search queries\n- \"Cisco\"\n- field==\"name\";value==\"Cisco\"\n- fields=in=(\"name\",\"description\");value==\"Cisco\"\n"}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - {Name: "supervisorView", In: InQuery, Flag: "supervisor-view", Usage: "If set to true, the API will only return data that the user has access to, according to the User Profile."}, - {Name: "provisioningView", In: InQuery, Flag: "provisioning-view", Usage: "If set to true, the API will only return data that the user has access to, according to the User Profile."}, - {Name: "singleObjectResponse", In: InQuery, Flag: "single-object-response", Usage: "Specify whether to include array fields in the response. This query parameter should be used only when the response contains a single record. It is not supported for responses with multiple objects and throws an exception."}, - }, - Paging: &Paging{}, -} - -var CCTeamCreate = &Operation{ - ID: "CCTeamCreate", Area: "cc", Group: "team", Command: "create", - Summary: "Create a new Team", - Description: "Create a new Team in a given organization.", - Method: "POST", Path: "/organization/{orgid}/team", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "active", In: InQuery, Flag: "active"}, - {Name: "name", In: InQuery, Flag: "name"}, - {Name: "rankQueuesForTeam", In: InQuery, Flag: "rank-queues-for-team"}, - {Name: "siteId", In: InQuery, Flag: "site-id"}, - {Name: "teamStatus", In: InQuery, Flag: "team-status"}, - {Name: "teamType", In: InQuery, Flag: "team-type"}, - {Name: "organizationId", In: InQuery, Flag: "organization-id"}, - {Name: "id", In: InQuery, Flag: "id"}, - {Name: "version", In: InQuery, Flag: "version"}, - {Name: "dialedNumber", In: InQuery, Flag: "dialed-number"}, - {Name: "capacity", In: InQuery, Flag: "capacity"}, - {Name: "desktopLayoutId", In: InQuery, Flag: "desktop-layout-id"}, - {Name: "skillProfileId", In: InQuery, Flag: "skill-profile-id"}, - {Name: "multiMediaProfileId", In: InQuery, Flag: "multi-media-profile-id"}, - {Name: "userIds", In: InQuery, Flag: "user-ids"}, - {Name: "description", In: InQuery, Flag: "description"}, - {Name: "systemDefault", In: InQuery, Flag: "system-default"}, - {Name: "queueRankings", In: InQuery, Flag: "queue-rankings"}, - {Name: "createdTime", In: InQuery, Flag: "created-time"}, - {Name: "lastUpdatedTime", In: InQuery, Flag: "last-updated-time"}, - }, - Body: &Body{}, -} - -var CCTeamBulkSave = &Operation{ - ID: "CCTeamBulkSave", Area: "cc", Group: "team", Command: "bulk-save", - Summary: "Bulk save Teams", - Description: "Create, Update or delete Teams in bulk in a given organization.", - Method: "POST", Path: "/organization/{orgid}/team/bulk", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{}, -} - -var CCTeamBulkExport = &Operation{ - ID: "CCTeamBulkExport", Area: "cc", Group: "team", Command: "bulk-export", - Summary: "Bulk export Team(s)", - Description: "Export all Team(s) in a given organization.", - Method: "GET", Path: "/organization/{orgid}/team/bulk-export", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCTeamPurgeInactive = &Operation{ - ID: "CCTeamPurgeInactive", Area: "cc", Group: "team", Command: "purge-inactive", - Summary: "Purge inactive Teams", - Description: "Purge inactive Teams older than the configured interval for a given organization.", - Method: "POST", Path: "/organization/{orgid}/team/purge-inactive-entities", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "nextStartId", In: InQuery, Flag: "next-start-id", Usage: "This is the entity ID from which items for the next purge batch will be selected."}, - }, -} - -var CCTeamGet = &Operation{ - ID: "CCTeamGet", Area: "cc", Group: "team", Command: "get", - Aliases: []string{"get-id"}, - Summary: "Get specific Team by ID", - Description: "Retrieve an existing Team by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/team/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Team"}, - }, -} - -var CCTeamUpdate = &Operation{ - ID: "CCTeamUpdate", Area: "cc", Group: "team", Command: "update", - Aliases: []string{"update-id"}, - Summary: "Update specific Team by ID", - Description: "Update an existing Team by ID in a given organization.", - Method: "PUT", Path: "/organization/{orgid}/team/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Team."}, - {Name: "active", In: InQuery, Flag: "active"}, - {Name: "name", In: InQuery, Flag: "name"}, - {Name: "rankQueuesForTeam", In: InQuery, Flag: "rank-queues-for-team"}, - {Name: "siteId", In: InQuery, Flag: "site-id"}, - {Name: "teamStatus", In: InQuery, Flag: "team-status"}, - {Name: "teamType", In: InQuery, Flag: "team-type"}, - {Name: "organizationId", In: InQuery, Flag: "organization-id"}, - {Name: "id", In: InQuery, Flag: "id"}, - {Name: "version", In: InQuery, Flag: "version"}, - {Name: "dialedNumber", In: InQuery, Flag: "dialed-number"}, - {Name: "capacity", In: InQuery, Flag: "capacity"}, - {Name: "desktopLayoutId", In: InQuery, Flag: "desktop-layout-id"}, - {Name: "skillProfileId", In: InQuery, Flag: "skill-profile-id"}, - {Name: "multiMediaProfileId", In: InQuery, Flag: "multi-media-profile-id"}, - {Name: "userIds", In: InQuery, Flag: "user-ids"}, - {Name: "description", In: InQuery, Flag: "description"}, - {Name: "systemDefault", In: InQuery, Flag: "system-default"}, - {Name: "queueRankings", In: InQuery, Flag: "queue-rankings"}, - {Name: "createdTime", In: InQuery, Flag: "created-time"}, - {Name: "lastUpdatedTime", In: InQuery, Flag: "last-updated-time"}, - }, - Body: &Body{}, -} - -var CCTeamDelete = &Operation{ - ID: "CCTeamDelete", Area: "cc", Group: "team", Command: "delete", - Aliases: []string{"delete-id"}, - Summary: "Delete specific Team by ID", - Description: "Delete an existing Team by ID in a given organization.", - Method: "DELETE", Path: "/organization/{orgid}/team/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Team."}, - }, -} - -var CCTeamListReferences = &Operation{ - ID: "CCTeamListReferences", Area: "cc", Group: "team", Command: "list-references", - Summary: "List references for a specific Team", - Description: "Retrieve a list of all entities that have reference to an existing Team by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/team/{id}/incoming-references", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "ID of this contact center resource."}, - {Name: "type", In: InQuery, Flag: "type", Usage: "Entity type of the other entity that has a reference to this specific entity."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCTeamListV1 = &Operation{ - ID: "CCTeamListV1", Area: "cc", Group: "team", Command: "list-v1", - Summary: "List Teams (v1)", - Description: "Lists teams with every field, through the v1 route. Each item carries lastUpdatedTime.", - Method: "GET", Path: "/organization/{orgid}/team", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Page number, from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Items per page."}, - }, - Paging: &Paging{}, -} - -var CCUserProfilesList = &Operation{ - ID: "CCUserProfilesList", Area: "cc", Group: "user-profiles", Command: "list", - Summary: "List user profiles", - Description: "Retrieve a list of user profiles in a given organization.\n Note: Returning array fields in the List (Get All) API response is deprecated. To retrieve the complete resource with all fields, please use the Get-by-ID API instead.", - Method: "GET", Path: "/organization/{orgid}/v3/user-profile", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "filter", In: InQuery, Flag: "filter", Usage: "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, userProfileAppModules, entryPoints, sites, queues, teams, editableFolderIds, viewableFolderIds, nonViewableFolderIds, createdTime, lastUpdatedTime \n\nThe examples below show some search queries\n- id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\n- id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide.\n\nNote: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter.\n"}, - {Name: "attributes", In: InQuery, Flag: "attributes", Usage: "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported. except (entryPoints,sites, queues, teams, userProfileAppModules,editableFolderIds, viewableFolderIds, nonViewableFolderIds)"}, - {Name: "search", In: InQuery, Flag: "search", Usage: "Filter data based on the search keyword.Supported search columns(name, profileType, description)\n\nThe examples below show some search queries\n- \"Cisco\"\n- field==\"name\";value==\"Cisco\"\n- fields=in=(\"name\",\"description\");value==\"Cisco\"\n"}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCUserProfilesBulkSave = &Operation{ - ID: "CCUserProfilesBulkSave", Area: "cc", Group: "user-profiles", Command: "bulk-save", - Summary: "Bulk save User Profiles", - Description: "Create, Update or delete user profiles in bulk in a given organization.", - Method: "POST", Path: "/organization/{orgid}/v3/user-profile/bulk", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{}, -} - -var CCUserProfilesBulkExport = &Operation{ - ID: "CCUserProfilesBulkExport", Area: "cc", Group: "user-profiles", Command: "bulk-export", - Summary: "Bulk export User Profiles", - Description: "Export all user profiles in a given organization.", - Method: "GET", Path: "/organization/{orgid}/v3/user-profile/bulk-export", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCUserProfilesPurgeInactive = &Operation{ - ID: "CCUserProfilesPurgeInactive", Area: "cc", Group: "user-profiles", Command: "purge-inactive", - Summary: "Purge inactive User Profile(s)", - Description: "Purge inactive User Profile(s) older than the configured interval for a given organization.", - Method: "POST", Path: "/organization/{orgid}/user-profile/purge-inactive-entities", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "nextStartId", In: InQuery, Flag: "next-start-id", Usage: "This is the entity ID from which items for the next purge batch with be selected."}, - }, -} - -var CCUserProfilesGet = &Operation{ - ID: "CCUserProfilesGet", Area: "cc", Group: "user-profiles", Command: "get", - Aliases: []string{"get-id"}, - Summary: "Get specific User Profile by ID", - Description: "Retrieve an existing user profile by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/v3/user-profile/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the User Profile."}, - {Name: "includeNames", In: InQuery, Flag: "include-names", Usage: "Flag to include resource names in the response."}, - }, -} - -var CCUserProfilesUpdate = &Operation{ - ID: "CCUserProfilesUpdate", Area: "cc", Group: "user-profiles", Command: "update", - Aliases: []string{"update-id"}, - Summary: "Update specific User Profile by ID", - Description: "Update an existing user profile by ID in a given organization.", - Method: "PUT", Path: "/organization/{orgid}/v3/user-profile/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the User Profile."}, - }, - Body: &Body{}, -} - -var CCUserProfilesDelete = &Operation{ - ID: "CCUserProfilesDelete", Area: "cc", Group: "user-profiles", Command: "delete", - Aliases: []string{"delete-id"}, - Summary: "Delete specific User Profile by ID", - Description: "Delete an existing user profile by ID in a given organization.", - Method: "DELETE", Path: "/organization/{orgid}/v3/user-profile/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the User Profile."}, - }, -} - -var CCUserProfilesListReferences = &Operation{ - ID: "CCUserProfilesListReferences", Area: "cc", Group: "user-profiles", Command: "list-references", - Summary: "List references for a specific User Profile", - Description: "Retrieve a list of all entities that have reference to an existing user profile by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/user-profile/{id}/incoming-references", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "ID of this contact center resource."}, - {Name: "type", In: InQuery, Flag: "type", Usage: "Entity type of the other entity that has a reference to this specific entity."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCUserProfilesCreate = &Operation{ - ID: "CCUserProfilesCreate", Area: "cc", Group: "user-profiles", Command: "create", - Summary: "Create a new User Profile", - Description: "Create a new user profile in a given organization.", - Method: "POST", Path: "/organization/{orgid}/v3/user-profile", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{}, -} - -var CCUserProfilesGetAclId = &Operation{ - ID: "CCUserProfilesGetAclId", Area: "cc", Group: "user-profiles", Command: "get-acl-id", - Summary: "Get specific User Profile ACL by ID", - Description: "Retrieve an existing User Profile ACL by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/v3/user-profile/{id}/acl", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the User Profile."}, - {Name: "names", In: InQuery, Flag: "names", Usage: " Default all resources are returned in the ACL.\n If you want to filter the ACL by specific resources,\n provide a comma-separated list of resource names to filter the ACL. Ex: /url?names=site,team\n"}, - }, -} - -var CCUsersList = &Operation{ - ID: "CCUsersList", Area: "cc", Group: "users", Command: "list", - Summary: "List Users", - Description: "Retrieve a list of Users in a given organization. Note: Returning array fields in the List (Get All) API response is deprecated. To retrieve the complete resource with all fields, please use the Get-by-ID API instead.", - Method: "GET", Path: "/organization/{orgid}/v2/user", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "filter", In: InQuery, Flag: "filter", Usage: "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, xspVersion, createdTime, lastUpdatedTime \n\nThe examples below show some search queries\n- id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\n- id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide.\n\nNote: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter.\n"}, - {Name: "attributes", In: InQuery, Flag: "attributes", Usage: "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported."}, - {Name: "search", In: InQuery, Flag: "search", Usage: "Filter data based on the search keyword.Supported search columns(firstName, lastName, email)\n\nThe examples below show some search queries\n- \"Cisco\"\n- field==\"firstName\";value==\"Cisco\"\n- fields=in=(\"firstName\",\"lastName\");value==\"Cisco\"\n"}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - {Name: "supervisorManagedAgentsOnly", In: InQuery, Flag: "supervisor-managed-agents-only", Usage: "If set to true, the API will return contact center enabled users based on the invoking supervisor user's user profile access rights to sites and teams."}, - {Name: "singleObjectResponse", In: InQuery, Flag: "single-object-response", Usage: "Specify whether to include array fields in the response. This query parameter should be used only when the response contains a single record. It is not supported for responses with multiple objects and throws an exception."}, - {Name: "buddyTeamAgentsOnly", In: InQuery, Flag: "buddy-team-agents-only", Usage: "If set to true, returns only users who are part of buddy teams without PBAC check."}, - {Name: "userInQueue", In: InQuery, Flag: "user-in-queue", Usage: "Can be either assigned or unassigned. If passed, returns the users who are assigned or not assigned to an agent based queue managed by the supervisor."}, - {Name: "queueId", In: InQuery, Flag: "queue-id", Usage: "Contact Service Queue ID for which the list of assigned or unassigned agents must be fetched."}, - {Name: "includeAIMappingCount", In: InQuery, Flag: "include-aimapping-count", Usage: "If set to true, the API response will include the count of each AI feature mapped to the entity."}, - {Name: "includeDynamicSkillsLimitReached", In: InQuery, Flag: "include-dynamic-skills-limit-reached", Usage: "If true, includes whether each user has reached the dynamic skills assignment limit."}, - }, - Paging: &Paging{}, -} - -var CCUsersBulkPartialUpdate = &Operation{ - ID: "CCUsersBulkPartialUpdate", Area: "cc", Group: "users", Command: "bulk-partial-update", - Summary: "Bulk partial update Users", - Description: "Update some or all properties for multiple users in bulk for a given organization.", - Method: "PATCH", Path: "/organization/{orgid}/user/bulk", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{}, -} - -var CCUsersBulkExport = &Operation{ - ID: "CCUsersBulkExport", Area: "cc", Group: "users", Command: "bulk-export", - Summary: "Bulk export User(s)", - Description: "Export all User(s) in a given organization.", - Method: "GET", Path: "/organization/{orgid}/user/bulk-export", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCUsersGetCiId = &Operation{ - ID: "CCUsersGetCiId", Area: "cc", Group: "users", Command: "get-ci-id", - Summary: "Get specific User by CI User ID", - Description: "Retrieve an existing User using the CI ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/v2/user/by-ci-user-id/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "CI ID of the User."}, - {Name: "includeUserProfile", In: InQuery, Flag: "include-user-profile", Usage: "Specifiy whether to include user profile data"}, - {Name: "includeNames", In: InQuery, Flag: "include-names", Usage: "Specifiy whether to include resource collection names"}, - {Name: "includeSkillDetails", In: InQuery, Flag: "include-skill-details", Usage: "If set to true, the response includes skill information for each dynamic skill assignment."}, - }, -} - -var CCUsersGetAgentsMatchingSkillRequirements = &Operation{ - ID: "CCUsersGetAgentsMatchingSkillRequirements", Area: "cc", Group: "users", Command: "get-agents-matching-skill-requirements", - Summary: "Get the agents matching skill requirements criteria", - Description: "This API can be used to fetch the agents who match the provided skill requirements criteria. Maximum of 50 skill requirements criteria can be passed in the request.", - Method: "POST", Path: "/organization/{orgid}/user/fetch-by-skill-requirements", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "search", In: InQuery, Flag: "search", Usage: "Filter data based on the search keyword.Supported search columns(firstName, lastName, email)\n\nThe examples below show some search queries\n- \"Cisco\"\n- field==\"firstName\";value==\"Cisco\"\n- fields=in=(\"firstName\",\"lastName\");value==\"Cisco\"\n"}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Body: &Body{}, -} - -var CCUsersListByIds = &Operation{ - ID: "CCUsersListByIds", Area: "cc", Group: "users", Command: "list-by-ids", - Aliases: []string{"get-ids"}, - Summary: "List Users with details", - Description: "Retrieve an existing User's first name, last name and email by list of IDs in a given organization.", - Method: "POST", Path: "/organization/{orgid}/user/fetch-user-details-by-ids", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "userIds", Flag: "user-ids", Type: "[]string"}, - {Name: "search", Flag: "search", Type: "string"}, - {Name: "queueId", Flag: "queue-id", Type: "string"}, - }}, -} - -var CCUsersListAlongProfile = &Operation{ - ID: "CCUsersListAlongProfile", Area: "cc", Group: "users", Command: "list-along-profile", - Summary: "List Users along with profile", - Description: "Retrieve a list of Users along with their User Profiles in a given organization.", - Method: "GET", Path: "/organization/{orgid}/user/with-user-profile", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Paging: &Paging{}, -} - -var CCUsersGetAlongProfileId = &Operation{ - ID: "CCUsersGetAlongProfileId", Area: "cc", Group: "users", Command: "get-along-profile-id", - Summary: "Get specific User along with profile by ID", - Description: "Retrieve an existing User along with the corresponding User Profile by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/user/with-user-profile/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the User."}, - }, -} - -var CCUsersGet = &Operation{ - ID: "CCUsersGet", Area: "cc", Group: "users", Command: "get", - Aliases: []string{"get-id"}, - Summary: "Get specific User by ID", - Description: "Retrieve an existing Users by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/user/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the User."}, - {Name: "includeCount", In: InQuery, Flag: "include-count", Usage: "If set to true, the API response will include the count of each type of Contact Service Queue to which the user is assigned."}, - {Name: "includeUserProfileType", In: InQuery, Flag: "include-user-profile-type", Usage: "If set to true, the API response includes the User Profile."}, - {Name: "includeSkillProfileAudit", In: InQuery, Flag: "include-skill-profile-audit", Usage: "If set to true gives skill profile modification info."}, - {Name: "includeReskillAuditInfo", In: InQuery, Flag: "include-reskill-audit-info", Usage: "If set to true gives skill profile and dynamic skill modification info."}, - {Name: "includeSkillDetails", In: InQuery, Flag: "include-skill-details", Usage: "If set to true, the response includes skill information for each dynamic skill assignment."}, - {Name: "checkIfUserHasDynamicSkill", In: InQuery, Flag: "check-if-user-has-dynamic-skill", Usage: "If set to true, checks if user has the specified dynamic skill"}, - {Name: "dynamicSkillId", In: InQuery, Flag: "dynamic-skill-id", Usage: "Dynamic skill ID to check if user has it assigned (required when checkIfUserHasDynamicSkill is true)"}, - }, -} - -var CCUsersUpdate = &Operation{ - ID: "CCUsersUpdate", Area: "cc", Group: "users", Command: "update", - Aliases: []string{"update-id"}, - Summary: "Update specific User by ID", - Description: "Update an existing User by ID in a given organization.", - Method: "PUT", Path: "/organization/{orgid}/user/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the User."}, - }, - Body: &Body{}, -} - -var CCUsersPatch = &Operation{ - ID: "CCUsersPatch", Area: "cc", Group: "users", Command: "patch", - Aliases: []string{"patch-id"}, - Summary: "Partially update User by ID", - Description: "Partially update User by ID in a given organization.", - Method: "PATCH", Path: "/organization/{orgid}/user/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the User."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "valueType", Flag: "value-type", Type: "string"}, - }}, -} - -var CCUsersListReferences = &Operation{ - ID: "CCUsersListReferences", Area: "cc", Group: "users", Command: "list-references", - Summary: "List references for a specific User", - Description: "Retrieve a list of all entities that have reference to an existing User by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/user/{id}/incoming-references", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "ID of this contact center resource."}, - {Name: "type", In: InQuery, Flag: "type", Usage: "Entity type of the other entity that has a reference to this specific entity."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCUsersBulkPartialUpdateDynamicSkills = &Operation{ - ID: "CCUsersBulkPartialUpdateDynamicSkills", Area: "cc", Group: "users", Command: "bulk-partial-update-dynamic-skills", - Aliases: []string{"bulk-update-dynamic-skills"}, - Summary: "Bulk partial update Users with dynamic skills", - Description: "Assign or unassign a dynamic skill to/from multiple users in bulk for a given organization.", - Method: "PATCH", Path: "/organization/{orgid}/user/bulk/update-dynamic-skill/{skillId}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "skillId", In: InPath, Flag: "skill-id", Usage: "Dynamic skill ID used for bulk update"}, - }, - Body: &Body{}, -} - -var CCUsersGetDynamicSkillId = &Operation{ - ID: "CCUsersGetDynamicSkillId", Area: "cc", Group: "users", Command: "get-dynamic-skill-id", - Summary: "Get users by dynamic skill ID", - Description: "Fetches all users assigned to a specific dynamic skill with search and pagination support. Returns user details with the specific dynamic skill value.", - Method: "GET", Path: "/organization/{orgid}/user/by-dynamic-skill-id/{skillId}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "skillId", In: InPath, Flag: "skill-id", Usage: "The dynamic skill ID to fetch users for"}, - {Name: "search", In: InQuery, Flag: "search", Usage: "Filter data based on the search keyword.Supported search columns(firstName, lastName, email, value)\n\nThe examples below show some search queries\n- \"Cisco\"\n"}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCUsersReskillAgents = &Operation{ - ID: "CCUsersReskillAgents", Area: "cc", Group: "users", Command: "reskill-agents", - Summary: "Reskill Agents", - Description: "Reskill agents by assigning or unassigning skills.", - Method: "PATCH", Path: "/organization/{orgid}/user/{id}/reskill", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the User."}, - }, - Body: &Body{}, -} - -var CCUsersListByCallMonitoringConfig = &Operation{ - ID: "CCUsersListByCallMonitoringConfig", Area: "cc", Group: "users", Command: "list-by-call-monitoring-config", - Aliases: []string{"list-call-monitoring-id"}, - Summary: "List users by call monitoring id", - Description: "Fetch paginated users associated to the selected call monitoring team filters while enforcing team ACL.", - Method: "GET", Path: "/organization/{orgid}/user/by-call-monitoring-id/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the call monitoring."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCUsersListV1 = &Operation{ - ID: "CCUsersListV1", Area: "cc", Group: "users", Command: "list-v1", - Summary: "List Users (v1)", - Description: "Lists Contact Center users through the v1 route. Each item carries lastUpdatedTime.", - Method: "GET", Path: "/organization/{orgid}/user", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Page number, from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Items per page."}, - }, - Paging: &Paging{}, -} - -var CCWorkTypesCreate = &Operation{ - ID: "CCWorkTypesCreate", Area: "cc", Group: "work-types", Command: "create", - Summary: "Create a new Work Type", - Description: "Create a new Work Type in a given organization.", - Method: "POST", Path: "/organization/{orgid}/work-type", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "active", Flag: "active", Type: "bool"}, - {Name: "name", Flag: "name", Type: "string"}, - {Name: "workTypeCode", Flag: "work-type-code", Type: "string"}, - {Name: "organizationId", Flag: "organization-id", Type: "string"}, - {Name: "id", Flag: "id", Type: "string"}, - {Name: "version", Flag: "version", Type: "int64"}, - {Name: "description", Flag: "description", Type: "string"}, - {Name: "systemDefault", Flag: "system-default", Type: "bool"}, - }}, -} - -var CCWorkTypesBulkSave = &Operation{ - ID: "CCWorkTypesBulkSave", Area: "cc", Group: "work-types", Command: "bulk-save", - Summary: "Bulk save Work Type(s)", - Description: "Create, Update or delete Work Type(s) in bulk in a given organization.", - Method: "POST", Path: "/organization/{orgid}/work-type/bulk", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{}, -} - -var CCWorkTypesBulkExport = &Operation{ - ID: "CCWorkTypesBulkExport", Area: "cc", Group: "work-types", Command: "bulk-export", - Summary: "Bulk export Work Type(s)", - Description: "Export all Work Type(s) in a given organization.", - Method: "GET", Path: "/organization/{orgid}/work-type/bulk-export", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCWorkTypesPurgeInactive = &Operation{ - ID: "CCWorkTypesPurgeInactive", Area: "cc", Group: "work-types", Command: "purge-inactive", - Summary: "Purge inactive Work Type(s)", - Description: "Purge inactive Work Type(s) older than the configured interval for a given organization.", - Method: "POST", Path: "/organization/{orgid}/work-type/purge-inactive-entities", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "nextStartId", In: InQuery, Flag: "next-start-id", Usage: "This is the entity ID from which items for the next purge batch with be selected."}, - }, -} - -var CCWorkTypesGet = &Operation{ - ID: "CCWorkTypesGet", Area: "cc", Group: "work-types", Command: "get", - Aliases: []string{"get-id"}, - Summary: "Get specific Work Type by ID", - Description: "Retrieve an existing Work Type by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/work-type/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "ID of the work_type."}, - }, -} - -var CCWorkTypesUpdate = &Operation{ - ID: "CCWorkTypesUpdate", Area: "cc", Group: "work-types", Command: "update", - Aliases: []string{"update-id"}, - Summary: "Update specific Work Type by ID", - Description: "Update an existing Work Type by ID in a given organization.", - Method: "PUT", Path: "/organization/{orgid}/work-type/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "ID of the work_type."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "active", Flag: "active", Type: "bool"}, - {Name: "name", Flag: "name", Type: "string"}, - {Name: "workTypeCode", Flag: "work-type-code", Type: "string"}, - {Name: "organizationId", Flag: "organization-id", Type: "string"}, - {Name: "id", Flag: "id", Type: "string"}, - {Name: "version", Flag: "version", Type: "int64"}, - {Name: "description", Flag: "description", Type: "string"}, - {Name: "systemDefault", Flag: "system-default", Type: "bool"}, - }}, -} - -var CCWorkTypesDelete = &Operation{ - ID: "CCWorkTypesDelete", Area: "cc", Group: "work-types", Command: "delete", - Aliases: []string{"delete-id"}, - Summary: "Delete specific Work Type by ID", - Description: "Delete an existing Work Type by ID in a given organization.", - Method: "DELETE", Path: "/organization/{orgid}/work-type/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "ID of the work_type."}, - }, -} - -var CCWorkTypesListReferences = &Operation{ - ID: "CCWorkTypesListReferences", Area: "cc", Group: "work-types", Command: "list-references", - Summary: "List references for a specific Work Type", - Description: "Retrieve a list of all entities that have reference to an existing Work Type by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/work-type/{id}/incoming-references", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "ID of this contact center resource."}, - {Name: "type", In: InQuery, Flag: "type", Usage: "Entity type of the other entity that has a reference to this specific entity."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCWorkTypesList = &Operation{ - ID: "CCWorkTypesList", Area: "cc", Group: "work-types", Command: "list", - Summary: "List Work Type(s)", - Description: "Retrieve a list of Work Type(s) in a given organization.", - Method: "GET", Path: "/organization/{orgid}/v2/work-type", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "filter", In: InQuery, Flag: "filter", Usage: "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime \n\nThe examples below show some search queries\n- id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\n- id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide.\n\nNote: values to be used in the filter syntax should not contain space, and if so kindly bound it with quotes to apply filter.\n"}, - {Name: "attributes", In: InQuery, Flag: "attributes", Usage: "Specify the attributes to be returned.Default all attributes are returned along with specified columns. All Attributes are supported"}, - {Name: "search", In: InQuery, Flag: "search", Usage: "Filter data based on the search keyword.Supported search columns(name)\n\nThe examples below show some search queries\n- \"Cisco\"\n- field==\"name\";value==\"Cisco\"\n- fields=in=(\"name\");value==\"Cisco\"\n"}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCDataSourcesRegister = &Operation{ - ID: "CCDataSourcesRegister", Area: "cc", Group: "data-sources", Command: "register", - Summary: "Register a Data Source", - Description: "Register a data source with the Webex BYODS system. Authenticate using a Service App with the `spark-admin:datasource_write` scope.\nSchema IDs determine the types of data Webex sends to the DAP and the expected responses. Use the Data Source Schemas endpoints to inspect the available schemas.", - Method: "POST", Path: "/dataSources", Host: HostCC, - Body: &Body{Fields: []BodyField{ - {Name: "audience", Flag: "audience", Type: "string"}, - {Name: "nonce", Flag: "nonce", Type: "string"}, - {Name: "schemaId", Flag: "schema-id", Type: "string"}, - {Name: "subject", Flag: "subject", Type: "string"}, - {Name: "tokenLifetimeMinutes", Flag: "token-lifetime-minutes", Type: "int64"}, - {Name: "url", Flag: "url", Type: "string"}, - }}, -} - -var CCDataSourcesGetAll = &Operation{ - ID: "CCDataSourcesGetAll", Area: "cc", Group: "data-sources", Command: "get-all", - Summary: "Retrieve All Data Sources", - Description: "Lists all data sources registered by the Service App. Requires the `spark-admin:datasource_read` scope.", - Method: "GET", Path: "/dataSources", Host: HostCC, -} - -var CCDataSourcesGetSchemas = &Operation{ - ID: "CCDataSourcesGetSchemas", Area: "cc", Group: "data-sources", Command: "get-schemas", - Summary: "Retrieve Data Source Schemas", - Description: "Lists the available data source schemas. A valid API access token is required, but no specific scope is needed.", - Method: "GET", Path: "/dataSources/schemas", Host: HostCC, -} - -var CCDataSourcesGetSchema = &Operation{ - ID: "CCDataSourcesGetSchema", Area: "cc", Group: "data-sources", Command: "get-schema", - Summary: "Retrieve Details of a Specific Data Source Schema", - Description: "Retrieves details for a specific data source schema by schema ID. A valid API access token is required, but no specific scope is needed.", - Method: "GET", Path: "/dataSources/schemas/{schemaId}", Host: HostCC, - Params: []Param{ - {Name: "schemaId", In: InPath, Flag: "schema-id", Usage: "The unique identifier for the schema."}, - }, -} - -var CCDataSourcesDelete = &Operation{ - ID: "CCDataSourcesDelete", Area: "cc", Group: "data-sources", Command: "delete", - Summary: "Delete a Data Source", - Description: "Deletes a data source by ID.\n\nSpecify the data source ID in the `dataSourceId` URI parameter.", - Method: "DELETE", Path: "/dataSources/{dataSourceId}", Host: HostCC, - Params: []Param{ - {Name: "dataSourceId", In: InPath, Flag: "data-source-id", Usage: "The unique identifier for the data source."}, - }, -} - -var CCDataSourcesGet = &Operation{ - ID: "CCDataSourcesGet", Area: "cc", Group: "data-sources", Command: "get", - Summary: "Retrieve Data Source Details", - Description: "Retrieves details for a data source by ID. Use a Service App token with the `spark-admin:datasource_read` scope.", - Method: "GET", Path: "/dataSources/{dataSourceId}", Host: HostCC, - Params: []Param{ - {Name: "dataSourceId", In: InPath, Flag: "data-source-id", Usage: "The unique identifier for the data source."}, - }, -} - -var CCDataSourcesUpdate = &Operation{ - ID: "CCDataSourcesUpdate", Area: "cc", Group: "data-sources", Command: "update", - Summary: "Update a Data Source", - Description: "Updates a data source. The fields you can update are `audience`, `subject`, `nonce`, `url`, and `tokenLifetimeMinutes`.\nYou can set `status` from `active` to `disabled` only if you provide an `errorMessage`, which may be shown to the customer administrator in Control Hub.\nUpdate tokens before they expire to prevent service interruption.", - Method: "PUT", Path: "/dataSources/{dataSourceId}", Host: HostCC, - Params: []Param{ - {Name: "dataSourceId", In: InPath, Flag: "data-source-id", Usage: "The unique identifier for the data source."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "audience", Flag: "audience", Type: "string"}, - {Name: "errorMessage", Flag: "error-message", Type: "string"}, - {Name: "nonce", Flag: "nonce", Type: "string"}, - {Name: "schemaId", Flag: "schema-id", Type: "string"}, - {Name: "status", Flag: "status", Type: "string"}, - {Name: "subject", Flag: "subject", Type: "string"}, - {Name: "tokenLifetimeMinutes", Flag: "token-lifetime-minutes", Type: "int64"}, - {Name: "url", Flag: "url", Type: "string"}, - }}, -} - -var CCEstimatedWaitTimeGet = &Operation{ - ID: "CCEstimatedWaitTimeGet", Area: "cc", Group: "estimated-wait-time", Command: "get", - Summary: "Get Estimated Wait Time", - Description: "Retrieve Estimated Wait Time information for a specified look back interval for a specific orgId and queueId combination, with ability to customomize maxCV and minValidSamples (See description above).\n", - Method: "GET", Path: "/v1/ewt", Host: HostCC, - Params: []Param{ - {Name: "queueId", In: InQuery, Flag: "queue-id", Usage: "Id of the queue for which the EWT is to be returned"}, - {Name: "lookbackMinutes", In: InQuery, Flag: "lookback-minutes", Usage: "Integer between 5 and 240 (4 hours) signifying how long back to look at the data points to determine EWT for this queue"}, - {Name: "maxCV", In: InQuery, Flag: "max-cv", Usage: "This an optional parameter. Maximum value of Coefficient of Variance in a subset of samples (wait times for tasks that got connected to agent in one minute interval) to determine whether the average of such values should be treated as a valid sample for EWT computation. If its not passed it takes the default value of 40 %"}, - {Name: "minValidSamples", In: InQuery, Flag: "min-valid-samples", Usage: "This an optional parameter. Minimum value of percentage of valid samples (with respect to total number of samples) in the specified lookbackMinutes minutes. If its not passed it takes the default value of 40 %"}, - {Name: "orgId", In: InQuery, Flag: "orgid", Usage: "Organization ID to use for this operation. If unspecified, inferred from token. Token must have permission to interact with this organization."}, - {Name: "TrackingId", In: InHeader, Flag: "tracking-id", Usage: "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. "}, - }, -} - -var CCNotificationSubscribe = &Operation{ - ID: "CCNotificationSubscribe", Area: "cc", Group: "notification", Command: "subscribe", - Summary: "Subscribe Notification", - Description: "Access this endpoint when the user has to register for a WebSocket Session. Requires one of the following accepted registration scopes: `cjp:user` or `cloud-contact-center:pod_conv`. The `cjp-hybrid-conn:read` scope is also accepted when CCE authentication is enabled. Tokens with only admin or partner roles and no accepted registration scope are rejected.", - Method: "POST", Path: "/v1/notification/subscribe", Host: HostCC, - Body: &Body{Fields: []BodyField{ - {Name: "isKeepAliveEnabled", Flag: "is-keep-alive-enabled", Type: "bool"}, - {Name: "clientType", Flag: "client-type", Type: "string"}, - {Name: "allowMultiLogin", Flag: "allow-multi-login", Type: "bool"}, - {Name: "force", Flag: "force", Type: "bool"}, - }}, -} - -var CCQueuesGetStatistics = &Operation{ - ID: "CCQueuesGetStatistics", Area: "cc", Group: "queues", Command: "get-statistics", - Summary: "Get Queue Statistics", - Description: "Retrieve Queue statistics for a given interval of time. \nAn important thing to note is that each stat produced is for a specified time window (last 15, 30, or 60 minutes etc) and is not cumulative. \nContacts that span across intervals will also have stats broken down across intervals. For example: A contact that starts at 12:05 and ends at 12:25 will have stats for Interval A (12:00-12:15) and Interval B (12:15-12:30) assuming the interval window is for 15 minutes. \nStats that only require the start time of the contact like 'totalOfferedTasks' and 'totalAcceptedTasks' will be counted only once and it will be present in the interval where the contact started i.e. Interval A. \nWhereas, stats that require the end time as well for calculations like 'averageHandledTime', will be present in the interval where the contact ended i.e. interval B. \n\nFor this API, response compression using gzip can be enabled by including 'Accept-Encoding' header in the request with its value as 'gzip'. \nThe response will be compressed only if its size exceeds 1 MB.\nIf the header is not present in the request or if gzip is not listed as one of the encodings in the header's value (comma separated encodings), then API response will not be compressed and this can impact the latency as observed from clients. \n", - Method: "GET", Path: "/v1/queues/statistics", Host: HostCC, - Params: []Param{ - {Name: "from", In: InQuery, Flag: "from", Usage: "Start time for the query (in epoch milliseconds). Any epoch time can be passed in the input, from date will be rounded down to nearest 15 minute window. For example, epoch time of 12:05 will be rounded down to 12:00."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "End time for the query (in epoch milliseconds). Any epoch time can be passed in the input, from date will be rounded down to nearest 15 minute window. For example, epoch time of 12:55 will be rounded down to 12:45.\n The difference between to and from time must be less than 24 hours (86400000 milliseconds)."}, - {Name: "interval", In: InQuery, Flag: "interval", Usage: "Time interval (in minutes) to chunk statistics by i.e. break up the entire from-to timeframe by this interval amount so that statistics can be viewed incrementally. Supported values are 15, 30, or 60."}, - {Name: "queueIds", In: InQuery, Flag: "queue-ids", Usage: "Comma-separated list of queue IDs. A maximum of 100 values is permitted. If values are not provided, all queues for an organization are returned."}, - {Name: "queueIds", In: InQuery, Flag: "queue-ids", Usage: "Comma-separated list of queue IDs. A maximum of 100 values is permitted. If values are not provided, all queues for an organization are returned."}, - {Name: "orgId", In: InQuery, Flag: "orgid", Usage: "Organization ID to use for this operation. If unspecified, inferred from token. Token must have permission to interact with this organization."}, - {Name: "TrackingId", In: InHeader, Flag: "tracking-id", Usage: "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. "}, - }, - TimeRange: TimeEpochMs, -} - -var CCRealtimeSubscribeNotification = &Operation{ - ID: "CCRealtimeSubscribeNotification", Area: "cc", Group: "realtime", Command: "subscribe-notification", - Summary: "Subscribe Realtime Notification", - Description: "Access this endpoint when the user has to register for a WebSocket Session to receive realtime events. Requires one of the following accepted registration scopes: `cjp:user` or `cloud-contact-center:pod_conv`. The `cjp-hybrid-conn:read` scope is also accepted when CCE authentication is enabled. Tokens with only admin or partner roles and no accepted registration scope are rejected.", - Method: "POST", Path: "/v1/realtime/subscribe", Host: HostCC, - Body: &Body{Fields: []BodyField{ - {Name: "isKeepAliveEnabled", Flag: "is-keep-alive-enabled", Type: "bool"}, - {Name: "clientType", Flag: "client-type", Type: "string"}, - {Name: "allowMultiLogin", Flag: "allow-multi-login", Type: "bool"}, - {Name: "force", Flag: "force", Type: "bool"}, - }}, -} - -var CCSearchSearchTasks = &Operation{ - ID: "CCSearchSearchTasks", Area: "cc", Group: "search", Command: "search-tasks", - Summary: "Search tasks", - Description: "The /search API is a GraphQL endpoint that enables customers to fetch data from Webex Contact Center.\n\n**Authentication & Authorization:**\n- **Required Scopes:** `cjp:config` or `cjp:config_read`\n- **Required Roles:** Administrator or Supervisor\n\nMandatory parameters are FROM and TO, which accept datetime in epoch format. The FROM parameter cannot be older than 36 months from the current time. The TO parameter, if given as a future time, will be set to the current time. Optional parameters such as filter and aggregation are accepted for each query.\n\nResponse Compression: For this API, response compression using gzip can be enabled by including the 'Accept-Encoding' header in the request with its value as 'gzip'. The response will be compressed only if its size exceeds 1 MB. If the header is not present in the request or if gzip is not listed as one of the encodings in the header's value (comma-separated encodings), then the API response will not be compressed, impacting latency as observed from clients.", - Method: "POST", Path: "/search", Host: HostCC, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "orgid", Usage: "Organization ID to use for this operation. If unspecified, inferred from token. Token must have permission to interact with this organization."}, - {Name: "TrackingId", In: InHeader, Flag: "tracking-id", Usage: "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. "}, - }, - Body: &Body{}, - Handwritten: true, -} - -var CCSubscriptionsListV1 = &Operation{ - ID: "CCSubscriptionsListV1", Area: "cc", Group: "subscriptions", Command: "list-v1", - Summary: "List Subscriptions", - Description: "Retrieve all subscriptions for a given organization. Requires `cjp:config_read` scope.\n\n\n Note: In the response JSON, the 'data' field only contains V1 based subscriptions, while the field 'meta.subscriptionCount' provides the total count encompassing all the created subscriptions in the organization.", - Method: "GET", Path: "/v1/subscriptions", Host: HostCC, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "orgid", Usage: "Organization ID to be used for this operation. If unspecified, the Organization ID is inferred from the token. The token must have permissions to interact with the organization."}, - {Name: "TrackingId", In: InHeader, Flag: "tracking-id", Usage: "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. If not provided, we will generate one for you."}, - }, - Paging: &Paging{}, -} - -var CCSubscriptionsListV2 = &Operation{ - ID: "CCSubscriptionsListV2", Area: "cc", Group: "subscriptions", Command: "list-v2", - Summary: "List Subscriptions", - Description: "Retrieve all subscriptions for a given organization. Requires `cjp:config_read` scope.\n\n\n Note: In the response JSON, the 'data' field only contains V2 based subscriptions, while the field 'meta.subscriptionCount' provides the total count encompassing all the created subscriptions in the organization.", - Method: "GET", Path: "/v2/subscriptions", Host: HostCC, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "orgid", Usage: "Organization ID to be used for this operation. If unspecified, the Organization ID is inferred from the token. The token must have permissions to interact with the organization."}, - {Name: "TrackingId", In: InHeader, Flag: "tracking-id", Usage: "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. If not provided, we will generate one for you."}, - }, - Paging: &Paging{}, -} - -var CCSubscriptionsRegisterV1 = &Operation{ - ID: "CCSubscriptionsRegisterV1", Area: "cc", Group: "subscriptions", Command: "register-v1", - Summary: "Register Subscription", - Description: "Create a subscription which would allow consumers to listen to events. If creating a subscription causes the org-level limit to be exceeded, the subscription registration will be denied. Requires `cjp:config_write` scope.", - Method: "POST", Path: "/v1/subscriptions", Host: HostCC, - Params: []Param{ - {Name: "TrackingId", In: InHeader, Flag: "tracking-id", Usage: "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. If not provided, we will generate one for you."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "destinationUrl", Flag: "destination-url", Type: "string"}, - {Name: "eventTypes", Flag: "event-types", Type: "[]string"}, - {Name: "name", Flag: "name", Type: "string"}, - {Name: "description", Flag: "description", Type: "string"}, - {Name: "secret", Flag: "secret", Type: "string"}, - {Name: "orgId", Flag: "org-id", Type: "string"}, - }}, -} - -var CCSubscriptionsRegisterV2 = &Operation{ - ID: "CCSubscriptionsRegisterV2", Area: "cc", Group: "subscriptions", Command: "register-v2", - Summary: "Register Subscription", - Description: "Create a subscription which would allow consumers to listen to events. If creating a subscription causes the org-level limit to be exceeded, the subscription registration will be denied. Requires `cjp:config_write` scope.", - Method: "POST", Path: "/v2/subscriptions", Host: HostCC, - Params: []Param{ - {Name: "TrackingId", In: InHeader, Flag: "tracking-id", Usage: "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. If not provided, we will generate one for you."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "destinationUrl", Flag: "destination-url", Type: "string"}, - {Name: "eventTypes", Flag: "event-types", Type: "[]string"}, - {Name: "name", Flag: "name", Type: "string"}, - {Name: "resourceVersion", Flag: "resource-version", Type: "string"}, - {Name: "description", Flag: "description", Type: "string"}, - {Name: "secret", Flag: "secret", Type: "string"}, - {Name: "orgId", Flag: "org-id", Type: "string"}, - }}, -} - -var CCSubscriptionsGetV1 = &Operation{ - ID: "CCSubscriptionsGetV1", Area: "cc", Group: "subscriptions", Command: "get-v1", - Summary: "Get Subscription", - Description: "Retrieve a subscription for a given subscription ID. Requires `cjp:config_read` scope.", - Method: "GET", Path: "/v1/subscriptions/{id}", Host: HostCC, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id"}, - {Name: "orgId", In: InQuery, Flag: "orgid", Usage: "Organization ID to be used for this operation. If unspecified, the Organization ID is inferred from the token. The token must have permissions to interact with the organization."}, - {Name: "TrackingId", In: InHeader, Flag: "tracking-id", Usage: "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. If not provided, we will generate one for you."}, - }, -} - -var CCSubscriptionsGetV2 = &Operation{ - ID: "CCSubscriptionsGetV2", Area: "cc", Group: "subscriptions", Command: "get-v2", - Summary: "Get Subscription", - Description: "Retrieve a subscription for a given subscription ID. Requires `cjp:config_read` scope.", - Method: "GET", Path: "/v2/subscriptions/{id}", Host: HostCC, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id"}, - {Name: "orgId", In: InQuery, Flag: "orgid", Usage: "Organization ID to be used for this operation. If unspecified, the Organization ID is inferred from the token. The token must have permissions to interact with the organization."}, - {Name: "TrackingId", In: InHeader, Flag: "tracking-id", Usage: "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. If not provided, we will generate one for you."}, - }, -} - -var CCSubscriptionsDeleteV1 = &Operation{ - ID: "CCSubscriptionsDeleteV1", Area: "cc", Group: "subscriptions", Command: "delete-v1", - Summary: "Delete Subscription", - Description: "Deletes a subscription for a given subscription ID. Requires `cjp:config_write` scope.", - Method: "DELETE", Path: "/v1/subscriptions/{id}", Host: HostCC, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id"}, - {Name: "orgId", In: InQuery, Flag: "orgid", Usage: "Organization ID to be used for this operation. If unspecified, the Organization ID is inferred from the token. The token must have permissions to interact with the organization."}, - {Name: "TrackingId", In: InHeader, Flag: "tracking-id", Usage: "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. If not provided, we will generate one for you."}, - }, -} - -var CCSubscriptionsDeleteV2 = &Operation{ - ID: "CCSubscriptionsDeleteV2", Area: "cc", Group: "subscriptions", Command: "delete-v2", - Summary: "Delete Subscription", - Description: "Deletes a subscription for a given subscription ID. Requires `cjp:config_write` scope.", - Method: "DELETE", Path: "/v2/subscriptions/{id}", Host: HostCC, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id"}, - {Name: "orgId", In: InQuery, Flag: "orgid", Usage: "Organization ID to be used for this operation. If unspecified, the Organization ID is inferred from the token. The token must have permissions to interact with the organization."}, - {Name: "TrackingId", In: InHeader, Flag: "tracking-id", Usage: "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. If not provided, we will generate one for you."}, - }, -} - -var CCSubscriptionsUpdateV1 = &Operation{ - ID: "CCSubscriptionsUpdateV1", Area: "cc", Group: "subscriptions", Command: "update-v1", - Summary: "Update Subscription", - Description: "Updates some of the properties in a subscription, for a given subscription ID. Requires `cjp:config_write` scope.", - Method: "PATCH", Path: "/v1/subscriptions/{id}", Host: HostCC, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id"}, - {Name: "TrackingId", In: InHeader, Flag: "tracking-id", Usage: "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. If not provided, we will generate one for you."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "description", Flag: "description", Type: "string"}, - {Name: "eventTypes", Flag: "event-types", Type: "[]string"}, - {Name: "destinationUrl", Flag: "destination-url", Type: "string"}, - {Name: "status", Flag: "status", Type: "string"}, - {Name: "secret", Flag: "secret", Type: "string"}, - {Name: "orgId", Flag: "org-id", Type: "string"}, - }}, -} - -var CCSubscriptionsUpdateV2 = &Operation{ - ID: "CCSubscriptionsUpdateV2", Area: "cc", Group: "subscriptions", Command: "update-v2", - Summary: "Update Subscription", - Description: "Updates some of the properties in a subscription, for a given subscription ID. Requires `cjp:config_write` scope.", - Method: "PATCH", Path: "/v2/subscriptions/{id}", Host: HostCC, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id"}, - {Name: "TrackingId", In: InHeader, Flag: "tracking-id", Usage: "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. If not provided, we will generate one for you."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "resourceVersion", Flag: "resource-version", Type: "string"}, - {Name: "description", Flag: "description", Type: "string"}, - {Name: "eventTypes", Flag: "event-types", Type: "[]string"}, - {Name: "destinationUrl", Flag: "destination-url", Type: "string"}, - {Name: "status", Flag: "status", Type: "string"}, - {Name: "secret", Flag: "secret", Type: "string"}, - {Name: "orgId", Flag: "org-id", Type: "string"}, - }}, -} - -var CCSubscriptionsListEventTypesV1 = &Operation{ - ID: "CCSubscriptionsListEventTypesV1", Area: "cc", Group: "subscriptions", Command: "list-event-types-v1", - Summary: "List Event Types", - Description: "Retrieve all available event types for an organization. Requires `cjp:config_read` scope.", - Method: "GET", Path: "/v1/event-types", Host: HostCC, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "orgid", Usage: "Organization ID to be used for this operation. If unspecified, the Organization ID is inferred from the token. The token must have permissions to interact with the organization."}, - {Name: "TrackingId", In: InHeader, Flag: "tracking-id", Usage: "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. If not provided, we will generate one for you."}, - }, - Paging: &Paging{}, -} - -var CCSubscriptionsListEventTypesV2 = &Operation{ - ID: "CCSubscriptionsListEventTypesV2", Area: "cc", Group: "subscriptions", Command: "list-event-types-v2", - Summary: "List Event Types", - Description: "Retrieve all available event types for an organization along with information about the currently supported resource versions. Requires `cjp:config_read` scope. ", - Method: "GET", Path: "/v2/event-types", Host: HostCC, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "orgid", Usage: "Organization ID to be used for this operation. If unspecified, the Organization ID is inferred from the token. The token must have permissions to interact with the organization."}, - {Name: "TrackingId", In: InHeader, Flag: "tracking-id", Usage: "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. If not provided, we will generate one for you."}, - }, - Paging: &Paging{}, -} - -var CCAgentsLogin = &Operation{ - ID: "CCAgentsLogin", Area: "cc", Group: "agents", Command: "login", - Summary: "Login", - Description: "Allows the user to login to their desktop. It does not allow a duplicate login and sends an error message over websocket if an active session already exists. Requires the 'cjp:user' scope. When Licensed Administrator access is enabled for the organization, the access token must also contain at least one of the following roles: 'cjp.standard_agent', 'cjp.premium_agent', 'cjp.supervisor', 'cjp.admin', or 'id_full_admin'. A Licensed Administrator logging in with supervisor capabilities must have the 'cjp.admin' or 'id_full_admin' role, the 'cjp.premium_agent' role, and supervisor capabilities enabled. For a list of possible response messages, see the [Call Control API Guide](/documentation/guides/contact-control-apis).", - Method: "POST", Path: "/v2/agents/login", Host: HostCC, - Body: &Body{Fields: []BodyField{ - {Name: "dialNumber", Flag: "dial-number", Type: "string"}, - {Name: "roles", Flag: "roles", Type: "[]string"}, - {Name: "teamId", Flag: "team-id", Type: "string"}, - {Name: "isExtension", Flag: "is-extension", Type: "bool"}, - {Name: "deviceType", Flag: "device-type", Type: "string"}, - {Name: "deviceId", Flag: "device-id", Type: "string"}, - }}, -} - -var CCAgentsLogout = &Operation{ - ID: "CCAgentsLogout", Area: "cc", Group: "agents", Command: "logout", - Summary: "Logout", - Description: "Allows the user to logout from their Desktop. This API needs to be called once the WSS session has been successfully established. Self logout for an agent or supervisor requires the 'cjp:user' scope. Logout on behalf of another user is available to a supervisor with the 'cjp:user' scope and 'cjp.supervisor' role, or to an authorized administrator, help-desk user, or partner with the applicable role: 'id_full_admin', 'id_readonly_admin', 'cjp.admin', 'atlas-portal.partner.salesadmin', 'atlas-portal.partner.helpdesk', or 'atlas-portal.partner.provision_admin'. Partner and external-administrator requests must also be authorized for the managed organization and include the organization and agent identifiers. For a list of possible response messages, see the [Call Control API Guide](/documentation/guides/contact-control-apis).", - Method: "PUT", Path: "/v2/agents/logout", Host: HostCC, - Body: &Body{Fields: []BodyField{ - {Name: "logoutReason", Flag: "logout-reason", Type: "string"}, - {Name: "agentId", Flag: "agent-id", Type: "string"}, - }}, -} - -var CCAgentsStateChange = &Operation{ - ID: "CCAgentsStateChange", Area: "cc", Group: "agents", Command: "state-change", - Summary: "State Change", - Description: "Allows the user to toggle between the Idle and Available states for the requested channels. Self state changes for an agent or supervisor require the 'cjp:user' scope and an active agent session. Cross-agent state changes require the 'cjp:user' scope and 'cjp.supervisor' role, and are limited to users in the supervisor's authorized teams. A Licensed Administrator can perform a cross-agent state change when Licensed Administrator access is enabled and the token contains the 'cjp.admin' or 'id_full_admin' role together with the 'cjp.premium_agent' role; the administrator must also have supervisor capabilities enabled and access to the target user's team. Agent State Control must be enabled for the organization and requested channels. For a list of possible response messages, see the [Call Control API Guide](/documentation/guides/contact-control-apis).", - Method: "PUT", Path: "/v2/agents/session/state", Host: HostCC, - Body: &Body{Fields: []BodyField{ - {Name: "channelType", Flag: "channel-type", Type: "[]string"}, - {Name: "state", Flag: "state", Type: "string"}, - {Name: "auxCodeId", Flag: "aux-code-id", Type: "string"}, - {Name: "reason", Flag: "reason", Type: "string"}, - {Name: "agentId", Flag: "agent-id", Type: "string"}, - }}, -} - -var CCAgentsReload = &Operation{ - ID: "CCAgentsReload", Area: "cc", Group: "agents", Command: "reload", - Summary: "Reload", - Description: "Requests restoration of the active agent session, including agent state and assigned interaction context. This asynchronous API returns `202 Accepted` when the request is accepted for processing; the restoration result is delivered over WebSocket. The success notification is selected by the API version persisted when the agent logged in, not by the reload endpoint version. A V1 login session receives `AgentReloginSuccess`, and a V2 login session receives `AgentChannelReloginSuccess`; therefore, either reload endpoint can result in either success notification. The active session remains on its login version until the agent logs out and starts a new session. See [AgentReloginSuccess](/docs/contact-control-apis#agentreloginsuccess) and [AgentChannelReloginSuccess](/docs/contact-control-apis#agentchannelreloginsuccess) in the Contact Control API Guide. Requires the 'cjp:user' scope for authorization.", - Method: "POST", Path: "/v2/agents/reload", Host: HostCC, -} - -var CCAgentsBuddyList = &Operation{ - ID: "CCAgentsBuddyList", Area: "cc", Group: "agents", Command: "buddy-list", - Summary: "Buddy Agents List", - Description: "Returns the list of agents in the given state and media according to agent profile settings. Requires an agent or supervisor access token with the 'cjp:user' scope.", - Method: "POST", Path: "/v1/agents/buddyList", Host: HostCC, - Body: &Body{Fields: []BodyField{ - {Name: "agentProfileId", Flag: "agent-profile-id", Type: "string"}, - {Name: "mediaType", Flag: "media-type", Type: "string"}, - {Name: "state", Flag: "state", Type: "string"}, - }}, -} - -var CCAgentsGetActivities = &Operation{ - ID: "CCAgentsGetActivities", Area: "cc", Group: "agents", Command: "get-activities", - Summary: "Get Agent Activities", - Description: "Retrieve agent activities. Requires a bearer access token authorized to access the requested organization and agent data. Results are sorted by start time in ascending order.\nMaximum number of records that can be fetched for the given from and to is 10,000. \nFor this API, response compression using gzip can be enabled by including 'Accept-Encoding' header in the request with its value as 'gzip'. \nThe response will be compressed only if its size exceeds 1 MB.\nIf the header is not present in the request or if gzip is not listed as one of the encodings in the header's value (comma separated encodings), then API response will not be compressed and this can impact the latency as observed from clients.", - Method: "GET", Path: "/v1/agents/activities", Host: HostCC, - Params: []Param{ - {Name: "agentIds", In: InQuery, Flag: "agent-ids", Usage: "Filter agent activities by agent ids separated with commas if more than one value (max 100). By default, there is no agent filtering."}, - {Name: "agentIds", In: InQuery, Flag: "agent-ids", Usage: "Filter agent activities by agent ids separated with commas if more than one value (max 100). By default, there is no agent filtering."}, - {Name: "agentIds", In: InQuery, Flag: "agent-ids", Usage: "Filter agent activities by agent ids separated with commas if more than one value (max 100). By default, there is no agent filtering."}, - {Name: "agentIds", In: InQuery, Flag: "agent-ids", Usage: "Filter agent activities by agent ids separated with commas if more than one value (max 100). By default, there is no agent filtering."}, - {Name: "agentIds", In: InQuery, Flag: "agent-ids", Usage: "Filter agent activities by agent ids separated with commas if more than one value (max 100). By default, there is no agent filtering."}, - {Name: "agentIds", In: InQuery, Flag: "agent-ids", Usage: "Filter agent activities by agent ids separated with commas if more than one value (max 100). By default, there is no agent filtering."}, - {Name: "agentIds", In: InQuery, Flag: "agent-ids", Usage: "Filter agent activities by agent ids separated with commas if more than one value (max 100). By default, there is no agent filtering."}, - {Name: "agentIds", In: InQuery, Flag: "agent-ids", Usage: "Filter agent activities by agent ids separated with commas if more than one value (max 100). By default, there is no agent filtering."}, - {Name: "agentIds", In: InQuery, Flag: "agent-ids", Usage: "Filter agent activities by agent ids separated with commas if more than one value (max 100). By default, there is no agent filtering."}, - {Name: "agentIds", In: InQuery, Flag: "agent-ids", Usage: "Filter agent activities by agent ids separated with commas if more than one value (max 100). By default, there is no agent filtering."}, - {Name: "agentIds", In: InQuery, Flag: "agent-ids", Usage: "Filter agent activities by agent ids separated with commas if more than one value (max 100). By default, there is no agent filtering."}, - {Name: "agentIds", In: InQuery, Flag: "agent-ids", Usage: "Filter agent activities by agent ids separated with commas if more than one value (max 100). By default, there is no agent filtering."}, - {Name: "agentIds", In: InQuery, Flag: "agent-ids", Usage: "Filter agent activities by agent ids separated with commas if more than one value (max 100). By default, there is no agent filtering."}, - {Name: "agentIds", In: InQuery, Flag: "agent-ids", Usage: "Filter agent activities by agent ids separated with commas if more than one value (max 100). By default, there is no agent filtering."}, - {Name: "agentIds", In: InQuery, Flag: "agent-ids", Usage: "Filter agent activities by agent ids separated with commas if more than one value (max 100). By default, there is no agent filtering."}, - {Name: "agentIds", In: InQuery, Flag: "agent-ids", Usage: "Filter agent activities by agent ids separated with commas if more than one value (max 100). By default, there is no agent filtering."}, - {Name: "agentIds", In: InQuery, Flag: "agent-ids", Usage: "Filter agent activities by agent ids separated with commas if more than one value (max 100). By default, there is no agent filtering."}, - {Name: "agentIds", In: InQuery, Flag: "agent-ids", Usage: "Filter agent activities by agent ids separated with commas if more than one value (max 100). By default, there is no agent filtering."}, - {Name: "agentIds", In: InQuery, Flag: "agent-ids", Usage: "Filter agent activities by agent ids separated with commas if more than one value (max 100). By default, there is no agent filtering."}, - {Name: "agentIds", In: InQuery, Flag: "agent-ids", Usage: "Filter agent activities by agent ids separated with commas if more than one value (max 100). By default, there is no agent filtering."}, - {Name: "teamIds", In: InQuery, Flag: "team-ids", Usage: "Filter agent activities by team ids separated with commas if more than one value (max 100). By default, there is no team filtering."}, - {Name: "teamIds", In: InQuery, Flag: "team-ids", Usage: "Filter agent activities by team ids separated with commas if more than one value (max 100). By default, there is no team filtering."}, - {Name: "teamIds", In: InQuery, Flag: "team-ids", Usage: "Filter agent activities by team ids separated with commas if more than one value (max 100). By default, there is no team filtering."}, - {Name: "teamIds", In: InQuery, Flag: "team-ids", Usage: "Filter agent activities by team ids separated with commas if more than one value (max 100). By default, there is no team filtering."}, - {Name: "teamIds", In: InQuery, Flag: "team-ids", Usage: "Filter agent activities by team ids separated with commas if more than one value (max 100). By default, there is no team filtering."}, - {Name: "teamIds", In: InQuery, Flag: "team-ids", Usage: "Filter agent activities by team ids separated with commas if more than one value (max 100). By default, there is no team filtering."}, - {Name: "teamIds", In: InQuery, Flag: "team-ids", Usage: "Filter agent activities by team ids separated with commas if more than one value (max 100). By default, there is no team filtering."}, - {Name: "teamIds", In: InQuery, Flag: "team-ids", Usage: "Filter agent activities by team ids separated with commas if more than one value (max 100). By default, there is no team filtering."}, - {Name: "teamIds", In: InQuery, Flag: "team-ids", Usage: "Filter agent activities by team ids separated with commas if more than one value (max 100). By default, there is no team filtering."}, - {Name: "teamIds", In: InQuery, Flag: "team-ids", Usage: "Filter agent activities by team ids separated with commas if more than one value (max 100). By default, there is no team filtering."}, - {Name: "teamIds", In: InQuery, Flag: "team-ids", Usage: "Filter agent activities by team ids separated with commas if more than one value (max 100). By default, there is no team filtering."}, - {Name: "teamIds", In: InQuery, Flag: "team-ids", Usage: "Filter agent activities by team ids separated with commas if more than one value (max 100). By default, there is no team filtering."}, - {Name: "teamIds", In: InQuery, Flag: "team-ids", Usage: "Filter agent activities by team ids separated with commas if more than one value (max 100). By default, there is no team filtering."}, - {Name: "teamIds", In: InQuery, Flag: "team-ids", Usage: "Filter agent activities by team ids separated with commas if more than one value (max 100). By default, there is no team filtering."}, - {Name: "teamIds", In: InQuery, Flag: "team-ids", Usage: "Filter agent activities by team ids separated with commas if more than one value (max 100). By default, there is no team filtering."}, - {Name: "teamIds", In: InQuery, Flag: "team-ids", Usage: "Filter agent activities by team ids separated with commas if more than one value (max 100). By default, there is no team filtering."}, - {Name: "teamIds", In: InQuery, Flag: "team-ids", Usage: "Filter agent activities by team ids separated with commas if more than one value (max 100). By default, there is no team filtering."}, - {Name: "teamIds", In: InQuery, Flag: "team-ids", Usage: "Filter agent activities by team ids separated with commas if more than one value (max 100). By default, there is no team filtering."}, - {Name: "teamIds", In: InQuery, Flag: "team-ids", Usage: "Filter agent activities by team ids separated with commas if more than one value (max 100). By default, there is no team filtering."}, - {Name: "teamIds", In: InQuery, Flag: "team-ids", Usage: "Filter agent activities by team ids separated with commas if more than one value (max 100). By default, there is no team filtering."}, - {Name: "channelTypes", In: InQuery, Flag: "channel-types", Usage: "Channel type(s) permitted in response. Separate values with commas. Must be lowercase. By default, there is no channelType filtering."}, - {Name: "channelTypes", In: InQuery, Flag: "channel-types", Usage: "Channel type(s) permitted in response. Separate values with commas. Must be lowercase. By default, there is no channelType filtering."}, - {Name: "from", In: InQuery, Flag: "from", Usage: "Filter agent activities created after given epoch timestamp in UTC (in milliseconds)."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "Filter agent activities created before given epoch timestamp in UTC (in milliseconds). If unspecified, queries up to the present.\n The difference between to and from timestamps must be less than 24 hours (86400000 milli seconds)"}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Maximum page size in response. Maximum allowed value is 1000. Defaults to 100 items per page."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Page number to be passed. Maximum number of records that can be fetched for the given from and to is 10,000. So maximum page number allowed is based on it. Defaults to 0."}, - {Name: "orgId", In: InQuery, Flag: "orgid", Usage: "Organization ID to use for this operation. If unspecified, inferred from token. Token must have permission to interact with this organization."}, - {Name: "TrackingId", In: InHeader, Flag: "tracking-id", Usage: "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. "}, - }, - Paging: &Paging{}, - TimeRange: TimeEpochMs, -} - -var CCAgentsGetStatistics = &Operation{ - ID: "CCAgentsGetStatistics", Area: "cc", Group: "agents", Command: "get-statistics", - Summary: "Get Agent Statistics", - Description: "Retrieve agent statistics for the specified time duration and interval. Requires a bearer access token authorized to access the requested organization and agent data.\nFor this API, response compression using gzip can be enabled by including 'Accept-Encoding' header in the request with its value as 'gzip'. \nThe response will be compressed only if its size exceeds 1 MB.\nIf the header is not present in the request or if gzip is not listed as one of the encodings in the header's value (comma separated encodings), then API response will not be compressed and this can impact the latency as observed from clients.", - Method: "GET", Path: "/v1/agents/statistics", Host: HostCC, - Params: []Param{ - {Name: "from", In: InQuery, Flag: "from", Usage: "Start time for the query (in epoch milliseconds). Any epoch time can be passed in the input, from date will be rounded down to nearest 15 minute window. For example, epoch time of 12:05 will be rounded down to 12:00."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "End time for the query (in epoch milliseconds). Any epoch time can be passed in the input, from date will be rounded down to nearest 15 minute window. For example, epoch time of 12:55 will be rounded down to 12:45.\n The difference between to and from time must be less than 24 hours (86400000 milliseconds)."}, - {Name: "interval", In: InQuery, Flag: "interval", Usage: "Time interval (in minutes) to chunk statistics by i.e. break up the entire from-to timeframe by this interval amount so that statistics can be viewed incrementally. Supported values are 15, 30, or 60."}, - {Name: "agentIds", In: InQuery, Flag: "agent-ids", Usage: "Comma-separated list of agent IDs. A maximum of 100 values is permitted. If values are not provided, all agents of an organization are returned."}, - {Name: "agentIds", In: InQuery, Flag: "agent-ids", Usage: "Comma-separated list of agent IDs. A maximum of 100 values is permitted. If values are not provided, all agents of an organization are returned."}, - {Name: "agentIds", In: InQuery, Flag: "agent-ids", Usage: "Comma-separated list of agent IDs. A maximum of 100 values is permitted. If values are not provided, all agents of an organization are returned."}, - {Name: "agentIds", In: InQuery, Flag: "agent-ids", Usage: "Comma-separated list of agent IDs. A maximum of 100 values is permitted. If values are not provided, all agents of an organization are returned."}, - {Name: "agentIds", In: InQuery, Flag: "agent-ids", Usage: "Comma-separated list of agent IDs. A maximum of 100 values is permitted. If values are not provided, all agents of an organization are returned."}, - {Name: "agentIds", In: InQuery, Flag: "agent-ids", Usage: "Comma-separated list of agent IDs. A maximum of 100 values is permitted. If values are not provided, all agents of an organization are returned."}, - {Name: "agentIds", In: InQuery, Flag: "agent-ids", Usage: "Comma-separated list of agent IDs. A maximum of 100 values is permitted. If values are not provided, all agents of an organization are returned."}, - {Name: "agentIds", In: InQuery, Flag: "agent-ids", Usage: "Comma-separated list of agent IDs. A maximum of 100 values is permitted. If values are not provided, all agents of an organization are returned."}, - {Name: "agentIds", In: InQuery, Flag: "agent-ids", Usage: "Comma-separated list of agent IDs. A maximum of 100 values is permitted. If values are not provided, all agents of an organization are returned."}, - {Name: "agentIds", In: InQuery, Flag: "agent-ids", Usage: "Comma-separated list of agent IDs. A maximum of 100 values is permitted. If values are not provided, all agents of an organization are returned."}, - {Name: "agentIds", In: InQuery, Flag: "agent-ids", Usage: "Comma-separated list of agent IDs. A maximum of 100 values is permitted. If values are not provided, all agents of an organization are returned."}, - {Name: "agentIds", In: InQuery, Flag: "agent-ids", Usage: "Comma-separated list of agent IDs. A maximum of 100 values is permitted. If values are not provided, all agents of an organization are returned."}, - {Name: "agentIds", In: InQuery, Flag: "agent-ids", Usage: "Comma-separated list of agent IDs. A maximum of 100 values is permitted. If values are not provided, all agents of an organization are returned."}, - {Name: "agentIds", In: InQuery, Flag: "agent-ids", Usage: "Comma-separated list of agent IDs. A maximum of 100 values is permitted. If values are not provided, all agents of an organization are returned."}, - {Name: "agentIds", In: InQuery, Flag: "agent-ids", Usage: "Comma-separated list of agent IDs. A maximum of 100 values is permitted. If values are not provided, all agents of an organization are returned."}, - {Name: "agentIds", In: InQuery, Flag: "agent-ids", Usage: "Comma-separated list of agent IDs. A maximum of 100 values is permitted. If values are not provided, all agents of an organization are returned."}, - {Name: "agentIds", In: InQuery, Flag: "agent-ids", Usage: "Comma-separated list of agent IDs. A maximum of 100 values is permitted. If values are not provided, all agents of an organization are returned."}, - {Name: "agentIds", In: InQuery, Flag: "agent-ids", Usage: "Comma-separated list of agent IDs. A maximum of 100 values is permitted. If values are not provided, all agents of an organization are returned."}, - {Name: "agentIds", In: InQuery, Flag: "agent-ids", Usage: "Comma-separated list of agent IDs. A maximum of 100 values is permitted. If values are not provided, all agents of an organization are returned."}, - {Name: "agentIds", In: InQuery, Flag: "agent-ids", Usage: "Comma-separated list of agent IDs. A maximum of 100 values is permitted. If values are not provided, all agents of an organization are returned."}, - {Name: "orgId", In: InQuery, Flag: "orgid", Usage: "Organization ID to use for this operation. If unspecified, inferred from token. Token must have permission to interact with this organization."}, - {Name: "TrackingId", In: InHeader, Flag: "tracking-id", Usage: "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. "}, - }, - TimeRange: TimeEpochMs, -} - -var CCCallMonitorCreate = &Operation{ - ID: "CCCallMonitorCreate", Area: "cc", Group: "call-monitor", Command: "create", - Aliases: []string{"create-request"}, - Summary: "Create Monitoring Request", - Description: "Creates a monitoring request for an ongoing call or the next successful inbound or outbound call. Requires the 'cloud-contact-center:pod_conv' scope and either the 'cjp.supervisor' role with a supervisor profile or, when Licensed Administrator access is enabled, the 'cjp.admin' or 'id_full_admin' role together with the 'cjp.premium_agent' role and an administrator profile. When Licensed Administrator access is enabled, contact-center access and supervisor capabilities must also be enabled. The applicable Call Monitoring profile permissions and resource access are required. When Continuous Scheduled Monitoring is enabled, ad hoc and continuous requests are rejected; use POST /v2/monitor/{taskId} for mid-call monitoring.", - Method: "POST", Path: "/v1/monitor", Host: HostCC, - Body: &Body{Fields: []BodyField{ - {Name: "id", Flag: "id", Type: "string"}, - {Name: "monitorType", Flag: "monitor-type", Type: "string"}, - {Name: "taskId", Flag: "task-id", Type: "string"}, - {Name: "queueIds", Flag: "queue-ids", Type: "[]string"}, - {Name: "teams", Flag: "teams", Type: "[]string"}, - {Name: "sites", Flag: "sites", Type: "[]string"}, - {Name: "agents", Flag: "agents", Type: "[]string"}, - {Name: "trackingId", Flag: "tracking-id", Type: "string"}, - {Name: "invisibleMode", Flag: "invisible-mode", Type: "bool"}, - }}, -} - -var CCCallMonitorBargeIn = &Operation{ - ID: "CCCallMonitorBargeIn", Area: "cc", Group: "call-monitor", Command: "barge-in", - Aliases: []string{"barge-in-request"}, - Summary: "BargeIn Request", - Description: "Creates a barge-in request to join a call that is already being monitored. Requires the 'cloud-contact-center:pod_conv' scope and either the 'cjp.supervisor' role with a supervisor profile or, when Licensed Administrator access is enabled, the 'cjp.admin' or 'id_full_admin' role together with the 'cjp.premium_agent' role and an administrator profile. When Licensed Administrator access is enabled, contact-center access and supervisor capabilities must also be enabled. The user profile must grant the Call Monitoring Barge In permission.", - Method: "POST", Path: "/v1/monitor/{taskId}/bargeIn", Host: HostCC, - Params: []Param{ - {Name: "taskId", In: InPath, Flag: "task-id", Usage: "The unique ID representing the task that needs to be barged by the supervisor."}, - }, -} - -var CCCallMonitorEnd = &Operation{ - ID: "CCCallMonitorEnd", Area: "cc", Group: "call-monitor", Command: "end", - Aliases: []string{"end-request"}, - Summary: "End Monitoring Request", - Description: "Ends an ongoing monitoring session. Requires the 'cloud-contact-center:pod_conv' scope and either the 'cjp.supervisor' role with a supervisor profile or, when Licensed Administrator access is enabled, the 'cjp.admin' or 'id_full_admin' role together with the 'cjp.premium_agent' role and an administrator profile. When Licensed Administrator access is enabled, contact-center access and supervisor capabilities must also be enabled. The user profile must grant access to the Call Monitoring module.", - Method: "POST", Path: "/v1/monitor/{taskId}/end", Host: HostCC, - Params: []Param{ - {Name: "taskId", In: InPath, Flag: "task-id", Usage: "The unique ID represents the task that needs to end."}, - }, -} - -var CCCallMonitorHold = &Operation{ - ID: "CCCallMonitorHold", Area: "cc", Group: "call-monitor", Command: "hold", - Aliases: []string{"hold-request"}, - Summary: "Hold Monitoring Request", - Description: "Places the monitoring session for a call on hold. Requires the 'cloud-contact-center:pod_conv' scope and either the 'cjp.supervisor' role with a supervisor profile or, when Licensed Administrator access is enabled, the 'cjp.admin' or 'id_full_admin' role together with the 'cjp.premium_agent' role and an administrator profile. When Licensed Administrator access is enabled, contact-center access and supervisor capabilities must also be enabled. The user profile must grant access to the Call Monitoring module.", - Method: "POST", Path: "/v1/monitor/{taskId}/hold", Host: HostCC, - Params: []Param{ - {Name: "taskId", In: InPath, Flag: "task-id", Usage: "The unique ID representing the task that needs to be held."}, - }, -} - -var CCCallMonitorUnhold = &Operation{ - ID: "CCCallMonitorUnhold", Area: "cc", Group: "call-monitor", Command: "unhold", - Aliases: []string{"unhold-request"}, - Summary: "Unhold Monitoring Request", - Description: "Resumes a monitoring session that is on hold. Requires the 'cloud-contact-center:pod_conv' scope and either the 'cjp.supervisor' role with a supervisor profile or, when Licensed Administrator access is enabled, the 'cjp.admin' or 'id_full_admin' role together with the 'cjp.premium_agent' role and an administrator profile. When Licensed Administrator access is enabled, contact-center access and supervisor capabilities must also be enabled. The user profile must grant access to the Call Monitoring module.", - Method: "POST", Path: "/v1/monitor/{taskId}/unhold", Host: HostCC, - Params: []Param{ - {Name: "taskId", In: InPath, Flag: "task-id", Usage: "The unique ID representing the task that needs to be resumed and was on hold already."}, - }, -} - -var CCCallMonitorListSessions = &Operation{ - ID: "CCCallMonitorListSessions", Area: "cc", Group: "call-monitor", Command: "list-sessions", - Aliases: []string{"get-sessions"}, - Summary: "Fetch Monitoring Sessions", - Description: "Fetches all active monitoring subscriptions for the requesting user. Requires the 'cloud-contact-center:pod_read' scope and either the 'cjp.supervisor' role with a supervisor profile or, when Licensed Administrator access is enabled, the 'cjp.admin' or 'id_full_admin' role together with the 'cjp.premium_agent' role and an administrator profile. When Licensed Administrator access is enabled, contact-center access and supervisor capabilities must also be enabled. The user profile must grant access to the Call Monitoring module. This operation is unavailable when Continuous Scheduled Monitoring is enabled; use realtime data for active monitoring sessions in that mode.", - Method: "GET", Path: "/v1/monitor/sessions", Host: HostCC, - Paging: &Paging{}, -} - -var CCCallMonitorDelete = &Operation{ - ID: "CCCallMonitorDelete", Area: "cc", Group: "call-monitor", Command: "delete", - Aliases: []string{"delete-request"}, - Summary: "Delete Monitoring Request", - Description: "Deletes a monitoring request. Requires the 'cloud-contact-center:pod_conv' scope and either the 'cjp.supervisor' role with a supervisor profile or, when Licensed Administrator access is enabled, the 'cjp.admin' or 'id_full_admin' role together with the 'cjp.premium_agent' role and an administrator profile. When Licensed Administrator access is enabled, contact-center access and supervisor capabilities must also be enabled. The user profile must grant access to the Call Monitoring module. This operation is unavailable when Continuous Scheduled Monitoring is enabled.", - Method: "DELETE", Path: "/v1/monitor/{requestId}", Host: HostCC, - Params: []Param{ - {Name: "requestId", In: InPath, Flag: "request-id", Usage: "The id with which the monitoring request has been created."}, - }, -} - -var CCCallMonitorWhisperCoach = &Operation{ - ID: "CCCallMonitorWhisperCoach", Area: "cc", Group: "call-monitor", Command: "whisper-coach", - Aliases: []string{"whisper-coach-request"}, - Summary: "Whisper Coach Request", - Description: "Creates a Whisper Coach request to coach an agent on a call that is already being monitored. Requires the 'cloud-contact-center:pod_conv' scope and either the 'cjp.supervisor' role with a supervisor profile or, when Licensed Administrator access is enabled, the 'cjp.admin' or 'id_full_admin' role together with the 'cjp.premium_agent' role and an administrator profile. When Licensed Administrator access is enabled, contact-center access and supervisor capabilities must also be enabled. The user profile must grant Call Monitoring edit access and the Whisper Coach permission, and Whisper Coach must be enabled for the organization.", - Method: "POST", Path: "/v1/monitor/{interactionId}/coach", Host: HostCC, - Params: []Param{ - {Name: "interactionId", In: InPath, Flag: "interaction-id", Usage: "The unique ID representing the monitored interaction that the supervisor needs to coach."}, - }, -} - -var CCTasksCreate = &Operation{ - ID: "CCTasksCreate", Area: "cc", Group: "tasks", Command: "create", - Summary: "Create Task", - Description: "This feature is currently in Beta. Contact your Cisco team if you want access to this feature.\n\nCreates a new contact center task using the v2 task contract. The request body must include a `channelType` discriminator to select the task variant — `workItem` for structured form tasks, `customMessaging` for conversational messaging tasks, or `telephony` for voice tasks.\n\nOn success, returns a `201` response containing the task ID, which can be used to track the task lifecycle.\n\nRequires `cjp:task_write` OAuth scope. For partner-initiated inbound tasks (`workItem`, `customMessaging`), the `cjp:task_write` scope must be present in the partner application's access token. When an authenticated agent initiates an outdial (`telephony`) task, ensure the `cjp:task_write` scope is included in the agent's access token.", - Method: "POST", Path: "/v2/tasks", Host: HostCC, - Body: &Body{}, -} - -var CCTasksGet = &Operation{ - ID: "CCTasksGet", Area: "cc", Group: "tasks", Command: "get", - Summary: "Get Tasks", - Description: "Retrieve open and closed tasks. Sorted by createdTime ascending. Uses offset-based pagination.\nFor this API, response compression using gzip can be enabled by including 'Accept-Encoding' header in the request with its value as 'gzip'. \nThe response will be compressed only if its size exceeds 1 MB.\nIf the header is not present in the request or if gzip is not listed as one of the encodings in the header's value (comma separated encodings), then API response will not be compressed and this can impact the latency as observed from clients.", - Method: "GET", Path: "/v1/tasks", Host: HostCC, - Params: []Param{ - {Name: "channelTypes", In: InQuery, Flag: "channel-types", Usage: "Task channel type(s) permitted in response. Separate values with commas. Use lowercase. By default, there is no channelType filtering."}, - {Name: "channelTypes", In: InQuery, Flag: "channel-types", Usage: "Task channel type(s) permitted in response. Separate values with commas. Use lowercase. By default, there is no channelType filtering."}, - {Name: "from", In: InQuery, Flag: "from", Usage: "Filters tasks created after the given epoch timestamp (in milliseconds)."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "Filters tasks created before the given epoch timestamp (in milliseconds); queries up to the present if timestamp is not specified."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Maximum page size in the response. Maximum allowed value is 1000. Defaults to 100 items per page."}, - {Name: "orgId", In: InQuery, Flag: "orgid", Usage: "Organization ID to use for this operation. If unspecified, inferred from token. Token must have permission to interact with this organization."}, - {Name: "TrackingId", In: InHeader, Flag: "tracking-id", Usage: "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. "}, - }, - Paging: &Paging{}, - TimeRange: TimeEpochMs, -} - -var CCTasksUpdate = &Operation{ - ID: "CCTasksUpdate", Area: "cc", Group: "tasks", Command: "update", - Summary: "Update Task", - Description: "This API is to update a task. Represents both inbound tasks (originating from customer-facing channels) and outbound tasks (originating from contact center to customer-facing channel). Requires one of the following scopes 'cjp:user' or 'cloud-contact-center:pod_conv' for authorization.. For a list of possible response messages, see the Call Control API Guide.", - Method: "PATCH", Path: "/v1/tasks/{taskId}", Host: HostCC, - Params: []Param{ - {Name: "taskId", In: InPath, Flag: "task-id", Usage: "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task."}, - }, - Body: &Body{}, -} - -var CCTasksAccept = &Operation{ - ID: "CCTasksAccept", Area: "cc", Group: "tasks", Command: "accept", - Summary: "Accept Task", - Description: "Access this endpoint when the user has to accept either an inbound or an outbound requests. The request can be social, a chat or an email. Requires one of the following scopes 'cjp:user' or 'cloud-contact-center:pod_conv' for authorization. For a list of possible response messages, see the [Call Control API Guide](/docs/contact-control-apis).", - Method: "POST", Path: "/v1/tasks/{taskId}/accept", Host: HostCC, - Params: []Param{ - {Name: "taskId", In: InPath, Flag: "task-id", Usage: "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task."}, - }, -} - -var CCTasksEnd = &Operation{ - ID: "CCTasksEnd", Area: "cc", Group: "tasks", Command: "end", - Summary: "End Task", - Description: "Access this endpoint when the user has to end either an inbound or an outbound requests. Requires one of the following scopes 'cjp:user' or 'cloud-contact-center:pod_conv' for authorization. For a list of possible response messages, see the [Call Control API Guide](/docs/contact-control-apis).", - Method: "POST", Path: "/v1/tasks/{taskId}/end", Host: HostCC, - Params: []Param{ - {Name: "taskId", In: InPath, Flag: "task-id", Usage: "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task."}, - }, -} - -var CCTasksWrapUp = &Operation{ - ID: "CCTasksWrapUp", Area: "cc", Group: "tasks", Command: "wrap-up", - Summary: "Wrap Up Task", - Description: "Access this endpoint when the user has to wrap up a call. Requires one of the following scopes 'cjp:user' or 'cloud-contact-center:pod_conv' for authorization. For a list of possible response messages, see the [Call Control API Guide](/docs/contact-control-apis).", - Method: "POST", Path: "/v1/tasks/{taskId}/wrapup", Host: HostCC, - Params: []Param{ - {Name: "taskId", In: InPath, Flag: "task-id", Usage: "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "wrapUpReason", Flag: "wrap-up-reason", Type: "string"}, - {Name: "auxCodeId", Flag: "aux-code-id", Type: "string"}, - }}, -} - -var CCTasksHold = &Operation{ - ID: "CCTasksHold", Area: "cc", Group: "tasks", Command: "hold", - Summary: "Hold Task", - Description: "Access this endpoint when the user has to hold a call. When an user is in consulting state, the task will be put on hold. It is not applicable for chats and emails. Requires one of the following scopes 'cjp:user','cloud-contact-center:pod_conv' for authorization. For a list of possible response messages, see the [Call Control API Guide](/docs/contact-control-apis).", - Method: "POST", Path: "/v1/tasks/{taskId}/hold", Host: HostCC, - Params: []Param{ - {Name: "taskId", In: InPath, Flag: "task-id", Usage: "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "mediaResourceId", Flag: "media-resource-id", Type: "string"}, - }}, -} - -var CCTasksUnhold = &Operation{ - ID: "CCTasksUnhold", Area: "cc", Group: "tasks", Command: "unhold", - Aliases: []string{"resume"}, - Summary: "Unhold Task", - Description: "Access this endpoint when the user has to resume a call from hold. When an user is done consulting, the previously held interaction with the customer should be resumed. It is not applicable for chats and emails. Requires one of the following scopes 'cjp:user','cloud-contact-center:pod_conv' for authorization. For a list of possible response messages, see the [Call Control API Guide](/docs/contact-control-apis).", - Method: "POST", Path: "/v1/tasks/{taskId}/unhold", Host: HostCC, - Params: []Param{ - {Name: "taskId", In: InPath, Flag: "task-id", Usage: "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "mediaResourceId", Flag: "media-resource-id", Type: "string"}, - }}, -} - -var CCTasksReject = &Operation{ - ID: "CCTasksReject", Area: "cc", Group: "tasks", Command: "reject", - Summary: "Reject Task", - Description: "Access this endpoint when the user has to reject a task. Once a task is rejected, the status of the user goes to idle from available. Requires one of the following scopes 'cjp:user' or 'cloud-contact-center:pod_conv' for authorization. For a list of possible response messages, see the [Call Control API Guide](/docs/contact-control-apis).", - Method: "POST", Path: "/v1/tasks/{taskId}/reject", Host: HostCC, - Params: []Param{ - {Name: "taskId", In: InPath, Flag: "task-id", Usage: "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "mediaResourceId", Flag: "media-resource-id", Type: "string"}, - }}, -} - -var CCTasksPauseRecording = &Operation{ - ID: "CCTasksPauseRecording", Area: "cc", Group: "tasks", Command: "pause-recording", - Summary: "Pause Recording Task", - Description: "When configured by the administrator, telephony tasks are often being recorded for various reasons. When an user is handling sensitive customer information, he/she might want to pause the recording and later on resume recording. For a list of possible response messages, see the [Call Control API Guide](/docs/contact-control-apis). Requires OAuth scope cjp:user. The authenticated user must have a UserProfile of type Agent to access this API.", - Method: "POST", Path: "/v1/tasks/{taskId}/record/pause", Host: HostCC, - Params: []Param{ - {Name: "taskId", In: InPath, Flag: "task-id", Usage: "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task."}, - }, -} - -var CCTasksResumeRecording = &Operation{ - ID: "CCTasksResumeRecording", Area: "cc", Group: "tasks", Command: "resume-recording", - Summary: "Resume Recording Task", - Description: "When configured by the administrator, telephony tasks are often being recorded for various reasons. When an user is handling sensitive customer information, he/she might resume the recording after the pause. For a list of possible response messages, see the [Call Control API Guide](/docs/contact-control-apis). Requires OAuth scope cjp:user. The authenticated user must have a UserProfile of type Agent to access this API.", - Method: "POST", Path: "/v1/tasks/{taskId}/record/resume", Host: HostCC, - Params: []Param{ - {Name: "taskId", In: InPath, Flag: "task-id", Usage: "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "autoResumed", Flag: "auto-resumed", Type: "bool"}, - }}, -} - -var CCTasksTransfer = &Operation{ - ID: "CCTasksTransfer", Area: "cc", Group: "tasks", Command: "transfer", - Summary: "Transfer Task", - Description: "Access this endpoint when the user has to transfer a call to another user. Requires one of the following scopes 'cjp:user' or 'cloud-contact-center:pod_conv' scope for authorization. For a list of possible response messages, see the [Call Control API Guide](/docs/contact-control-apis).", - Method: "POST", Path: "/v1/tasks/{taskId}/transfer", Host: HostCC, - Params: []Param{ - {Name: "taskId", In: InPath, Flag: "task-id", Usage: "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "to", Flag: "to", Type: "string"}, - {Name: "destinationType", Flag: "destination-type", Type: "string"}, - }}, -} - -var CCTasksConsultTask = &Operation{ - ID: "CCTasksConsultTask", Area: "cc", Group: "tasks", Command: "consult-task", - Summary: "Consult Task", - Description: "Access this endpoint when the user has to consult a call to another user. Requires one of the following scopes 'cjp:user' or 'cloud-contact-center:pod_conv' for authorization. For a list of possible response messages, see the [Call Control API Guide](/docs/contact-control-apis).", - Method: "POST", Path: "/v1/tasks/{taskId}/consult", Host: HostCC, - Params: []Param{ - {Name: "taskId", In: InPath, Flag: "task-id", Usage: "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "to", Flag: "to", Type: "string"}, - {Name: "destinationType", Flag: "destination-type", Type: "string"}, - {Name: "holdParticipants", Flag: "hold-participants", Type: "bool"}, - }}, -} - -var CCTasksConsultConference = &Operation{ - ID: "CCTasksConsultConference", Area: "cc", Group: "tasks", Command: "consult-conference", - Summary: "Consult Conference Task", - Description: "Access this endpoint when the user has to initiate a conference with the consulting user. Requires one of the following scopes 'cjp:user' or 'cloud-contact-center:pod_conv' for authorization. For a list of possible response messages, see the [Call Control API Guide](/docs/contact-control-apis).", - Method: "POST", Path: "/v1/tasks/{taskId}/consult/conference", Host: HostCC, - Params: []Param{ - {Name: "taskId", In: InPath, Flag: "task-id", Usage: "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "to", Flag: "to", Type: "string"}, - {Name: "agentId", Flag: "agent-id", Type: "string"}, - {Name: "destinationType", Flag: "destination-type", Type: "string"}, - }}, -} - -var CCTasksConsultTransfer = &Operation{ - ID: "CCTasksConsultTransfer", Area: "cc", Group: "tasks", Command: "consult-transfer", - Summary: "Consult Transfer Task", - Description: "Access this endpoint when the user has to transfer a call to the consulting user. Requires one of the following scopes 'cjp:user' or 'cloud-contact-center:pod_conv' for authorization. For a list of possible response messages, see the [Call Control API Guide](/docs/contact-control-apis).", - Method: "POST", Path: "/v1/tasks/{taskId}/consult/transfer", Host: HostCC, - Params: []Param{ - {Name: "taskId", In: InPath, Flag: "task-id", Usage: "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "to", Flag: "to", Type: "string"}, - {Name: "destinationType", Flag: "destination-type", Type: "string"}, - }}, -} - -var CCTasksConsultAccept = &Operation{ - ID: "CCTasksConsultAccept", Area: "cc", Group: "tasks", Command: "consult-accept", - Summary: "Consult Accept Task", - Description: "Access this endpoint when the user has to accept a call to the consulting user. Requires one of the following scopes 'cjp:user' or 'cloud-contact-center:pod_conv' for authorization. For a list of possible response messages, see the [Call Control API Guide](/docs/contact-control-apis).", - Method: "POST", Path: "/v1/tasks/{taskId}/consult/accept", Host: HostCC, - Params: []Param{ - {Name: "taskId", In: InPath, Flag: "task-id", Usage: "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task."}, - }, -} - -var CCTasksAssign = &Operation{ - ID: "CCTasksAssign", Area: "cc", Group: "tasks", Command: "assign", - Summary: "Assign Task", - Description: "Access this endpoint when users such as administrators, supervisors, or agents with an agent license need to assign tasks to themselves. Authorization requires the `cjp:user` scope. For a list of potential response messages, refer to the [Call Control API Guide](/docs/contact-control-apis).", - Method: "POST", Path: "/v1/tasks/{taskId}/assign", Host: HostCC, - Params: []Param{ - {Name: "taskId", In: InPath, Flag: "task-id", Usage: "The unique ID represents the task that the user want to assign."}, - }, -} - -var CCTasksConsultEnd = &Operation{ - ID: "CCTasksConsultEnd", Area: "cc", Group: "tasks", Command: "consult-end", - Summary: "Consult End Task", - Description: "Access this endpoint when the user has to end a call with the consulting user. Requires one of the following scopes 'cjp:user' or 'cloud-contact-center:pod_conv' for authorization. For a list of possible response messages, see the [Call Control API Guide](/docs/contact-control-apis).", - Method: "POST", Path: "/v1/tasks/{taskId}/consult/end", Host: HostCC, - Params: []Param{ - {Name: "taskId", In: InPath, Flag: "task-id", Usage: "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "queueId", Flag: "queue-id", Type: "string"}, - }}, -} - -var CCTasksExitConference = &Operation{ - ID: "CCTasksExitConference", Area: "cc", Group: "tasks", Command: "exit-conference", - Summary: "Exit Conference Task", - Description: "Access this endpoint when the user wants to exit from a conference call. Requires one of the following scopes 'cjp:user' or 'cloud-contact-center:pod_conv' for authorization. For a list of possible response messages, see the [Call Control API Guide](/docs/contact-control-apis).", - Method: "POST", Path: "/v1/tasks/{taskId}/conference/exit", Host: HostCC, - Params: []Param{ - {Name: "taskId", In: InPath, Flag: "task-id", Usage: "The taskId represents the task that the user is currently working on. It will be generated automatically during the creation of a new task."}, - }, -} - -var CCTasksAcceptPreview = &Operation{ - ID: "CCTasksAcceptPreview", Area: "cc", Group: "tasks", Command: "accept-preview", - Summary: "Accept Preview Task", - Description: "API to accept the preview campaign task offered to the agent.", - Method: "POST", Path: "/v1/dialer/campaign/{campaignId}/preview-task/{taskId}/accept", Host: HostCC, - Params: []Param{ - {Name: "campaignId", In: InPath, Flag: "campaign-id", Usage: "The unique ID represents the campaign that the user is currently working on."}, - {Name: "taskId", In: InPath, Flag: "task-id", Usage: "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task."}, - }, -} - -var CCTasksSkipPreview = &Operation{ - ID: "CCTasksSkipPreview", Area: "cc", Group: "tasks", Command: "skip-preview", - Summary: "Skip Preview Task", - Description: "API to skip the preview campaign task offered to the agent.", - Method: "POST", Path: "/v1/dialer/campaign/{campaignId}/preview-task/{taskId}/skip", Host: HostCC, - Params: []Param{ - {Name: "campaignId", In: InPath, Flag: "campaign-id", Usage: "The unique ID represents the campaign that the user is currently working on."}, - {Name: "taskId", In: InPath, Flag: "task-id", Usage: "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task."}, - }, -} - -var CCTasksDeletePreview = &Operation{ - ID: "CCTasksDeletePreview", Area: "cc", Group: "tasks", Command: "delete-preview", - Summary: "Remove Preview Task", - Description: "API to remove the preview campaign task offered to the agent", - Method: "POST", Path: "/v1/dialer/campaign/{campaignId}/preview-task/{taskId}/remove", Host: HostCC, - Params: []Param{ - {Name: "campaignId", In: InPath, Flag: "campaign-id", Usage: "The unique ID represents the campaign that the user is currently working on."}, - {Name: "taskId", In: InPath, Flag: "task-id", Usage: "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task."}, - }, -} - -var CCTasksAppendMessage = &Operation{ - ID: "CCTasksAppendMessage", Area: "cc", Group: "tasks", Command: "append-message", - Aliases: []string{"update-2"}, - Summary: "Append Task Message", - Description: "This feature is currently in Beta. Contact your Cisco team if you want access to this feature.\n\nAppends an inbound message to an existing `workItem` or `customMessaging` task. Use this API after the initial task has been created through Create Task. Requires `cjp:task_write` OAuth scope. For partner-initiated inbound message appends, the `cjp:task_write` scope must be present in the partner application's access token.\n\nOn success, returns a `202` response containing the append event identifier as `data.id`. Partners can use this identifier to correlate subsequent webhook delivery for the appended message.", - Method: "POST", Path: "/v2/tasks/{taskId}/messages", Host: HostCC, - Params: []Param{ - {Name: "taskId", In: InPath, Flag: "task-id", Usage: "UUID of the existing task to which the message will be appended."}, - }, - Body: &Body{}, -} - -var CCTasksDropParticipantConference = &Operation{ - ID: "CCTasksDropParticipantConference", Area: "cc", Group: "tasks", Command: "drop-participant-conference", - Summary: "Drop Participant From Conference", - Description: "Access this endpoint when the user needs to drop a specific participant from an active conference associated with a task. This operation removes only the targeted participant while keeping the remaining parties in the conference. Requires `cjp:user` scope for authorization. For a list of possible response messages, see the [Call Control API Guide](/docs/contact-control-apis)", - Method: "POST", Path: "/v1/tasks/{taskId}/conference/participants/{participantId}/drop", Host: HostCC, - Params: []Param{ - {Name: "taskId", In: InPath, Flag: "task-id", Usage: "The taskId represents the task that the user is currently working on. It will be generated automatically during the creation of a new task."}, - {Name: "participantId", In: InPath, Flag: "participant-id", Usage: "The ID of the participant ( Agent / DN / Entry Point DN / Customer) to be dropped from the conference, maximum length 36 characters."}, - }, -} - -var CCTasksPauseDigital = &Operation{ - ID: "CCTasksPauseDigital", Area: "cc", Group: "tasks", Command: "pause-digital", - Summary: "Pause Task", - Description: "Access this endpoint when users such as administrators, supervisors, or agents with an agent license need to pause a task that cannot be handled immediately. This API is supported only for non-real-time digital channels, such as email, social, etc. Authorization requires the `cjp:user` scope. For a list of potential response messages, refer to the [Call Control API Guide](/docs/contact-control-apis).", - Method: "POST", Path: "/v1/tasks/{taskId}/pause", Host: HostCC, - Params: []Param{ - {Name: "taskId", In: InPath, Flag: "task-id", Usage: "The unique ID represents the interaction or task that the user wants to pause."}, - }, -} - -var CCTasksResumeDigital = &Operation{ - ID: "CCTasksResumeDigital", Area: "cc", Group: "tasks", Command: "resume-digital", - Summary: "Resume Task", - Description: "Access this endpoint when users such as administrators, supervisors, or agents with an agent license need to resume a previously paused task. This API is supported only for non-real-time digital channels, such as email, social, etc. Authorization requires the `cjp:user` scope. For a list of potential response messages, refer to the [Call Control API Guide](/docs/contact-control-apis).", - Method: "POST", Path: "/v1/tasks/{taskId}/resume", Host: HostCC, - Params: []Param{ - {Name: "taskId", In: InPath, Flag: "task-id", Usage: "The unique ID represents the interaction or task that the user wants to resume."}, - }, -} - -var CCJourneyGetWorkspace = &Operation{ - ID: "CCJourneyGetWorkspace", Area: "cc", Group: "journey", Command: "get-workspace", - Summary: "Get Workspace", - Description: "Get workspace details. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_read or cjds:admin_org_write scopes or cjp:config_read or cjp:config_write scopes", - Method: "GET", Path: "/admin/v1/api/workspace/workspace-id/{workspaceId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "(Required) Workspace ID"}, - }, -} - -var CCJourneyUpdateWorkspace = &Operation{ - ID: "CCJourneyUpdateWorkspace", Area: "cc", Group: "journey", Command: "update-workspace", - Summary: "Update Workspace", - Description: "Update workspace by Id. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_write or cjp:config_write scopes", - Method: "PUT", Path: "/admin/v1/api/workspace/workspace-id/{workspaceId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "(Required) Workspace ID"}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "description", Flag: "description", Type: "string"}, - {Name: "name", Flag: "name", Type: "string"}, - }}, -} - -var CCJourneyDeleteWorkspace = &Operation{ - ID: "CCJourneyDeleteWorkspace", Area: "cc", Group: "journey", Command: "delete-workspace", - Summary: "Delete Workspace", - Description: "Delete Workspace By Id. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_write or cjp:config_write scopes", - Method: "DELETE", Path: "/admin/v1/api/workspace/workspace-id/{workspaceId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "(Required) Workspace ID"}, - }, -} - -var CCJourneyGetTemplateSearchedTemplateId = &Operation{ - ID: "CCJourneyGetTemplateSearchedTemplateId", Area: "cc", Group: "journey", Command: "get-template-searched-template-id", - Summary: "Get A specific Template searched by template id", - Description: "Get Template details by template Id in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_read or cjp:config_write scopes", - Method: "GET", Path: "/admin/v1/api/profile-view-template/workspace-id/{workspaceId}/template-id/{templateId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "(Required) Workspace ID"}, - {Name: "templateId", In: InPath, Flag: "template-id", Usage: "(Required) Template ID"}, - }, -} - -var CCJourneyUpdateProfileviewtemplate = &Operation{ - ID: "CCJourneyUpdateProfileviewtemplate", Area: "cc", Group: "journey", Command: "update-profileviewtemplate", - Summary: "Update existing ProfileViewTemplate", - Description: "Update existing Profile View Template in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_write scope", - Method: "PUT", Path: "/admin/v1/api/profile-view-template/workspace-id/{workspaceId}/template-id/{templateId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "(Required) Workspace ID"}, - {Name: "templateId", In: InPath, Flag: "template-id", Usage: "(Required) Template ID"}, - }, - Body: &Body{}, -} - -var CCJourneyDeleteTemplateTemplateId = &Operation{ - ID: "CCJourneyDeleteTemplateTemplateId", Area: "cc", Group: "journey", Command: "delete-template-template-id", - Summary: "Delete Template by template Id", - Description: "Delete Template By template id in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_write scope", - Method: "DELETE", Path: "/admin/v1/api/profile-view-template/workspace-id/{workspaceId}/template-id/{templateId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "(Required) Workspace ID"}, - {Name: "templateId", In: InPath, Flag: "template-id", Usage: "(Required) Template ID"}, - }, -} - -var CCJourneyDeletePersonId = &Operation{ - ID: "CCJourneyDeletePersonId", Area: "cc", Group: "journey", Command: "delete-person-id", - Summary: "Delete specific Person by id", - Description: "Delete Person Details searched by Person id in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_write scope", - Method: "DELETE", Path: "/admin/v1/api/person/workspace-id/{workspaceId}/person-id/{personId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "(Required) Workspace ID"}, - {Name: "personId", In: InPath, Flag: "person-id", Usage: "(Required) Person ID"}, - }, -} - -var CCJourneyCreateRemoveReplacePerson = &Operation{ - ID: "CCJourneyCreateRemoveReplacePerson", Area: "cc", Group: "journey", Command: "create-remove-replace-person", - Summary: "Add/Remove/Replace details of a Person.", - Description: "The Patch Api can be used to add/remove identities(email, phone, customerId) or replace firstName and lastName of an Individual. We support only add, replace and remove operations. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_write scope. \n\nFor a more information on Patch Requests, see this [JSON PATCH guide](https://jsonpatch.com)", - Method: "PATCH", Path: "/admin/v1/api/person/workspace-id/{workspaceId}/person-id/{personId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "(Required) Workspace ID"}, - {Name: "personId", In: InPath, Flag: "person-id", Usage: "(Required) Person ID"}, - }, - Body: &Body{}, -} - -var CCJourneyCreateOneMoreIdentitiesPerson = &Operation{ - ID: "CCJourneyCreateOneMoreIdentitiesPerson", Area: "cc", Group: "journey", Command: "create-one-more-identities-person", - Summary: "Add one/more Identities to a person", - Description: "This Patch Api can be used to add identities(email, phone, customerId) to a person. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_write scope.", - Method: "PATCH", Path: "/admin/v1/api/person/add-identities/workspace-id/{workspaceId}/person-id/{personId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "(Required) Workspace ID"}, - {Name: "personId", In: InPath, Flag: "person-id", Usage: "(Required) Person ID"}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "phone", Flag: "phone", Type: "[]string"}, - {Name: "email", Flag: "email", Type: "[]string"}, - {Name: "temporaryId", Flag: "temporary-id", Type: "[]string"}, - {Name: "customerId", Flag: "customer-id", Type: "[]string"}, - }}, -} - -var CCJourneyGetWxccSubscription = &Operation{ - ID: "CCJourneyGetWxccSubscription", Area: "cc", Group: "journey", Command: "get-wxcc-subscription", - Summary: "Get WXCC Subscription", - Description: "Get WXCC Subscription in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_read or cjds:admin_org_write scopes or cjp:config_read or cjp:config_write scopes", - Method: "GET", Path: "/admin/v1/api/wxcc-subscription/workspace-id/{workspaceId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "(Required) Workspace ID"}, - }, -} - -var CCJourneyCreateWxccSubscription = &Operation{ - ID: "CCJourneyCreateWxccSubscription", Area: "cc", Group: "journey", Command: "create-wxcc-subscription", - Summary: "Create WXCC Subscription", - Description: "Create WXCC Subscription in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_write or cjp:config_write scopes", - Method: "POST", Path: "/admin/v1/api/wxcc-subscription/workspace-id/{workspaceId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "(Required) Workspace ID"}, - }, -} - -var CCJourneyDeleteWxccSubscription = &Operation{ - ID: "CCJourneyDeleteWxccSubscription", Area: "cc", Group: "journey", Command: "delete-wxcc-subscription", - Summary: "Delete WXCC Subscription", - Description: "Delete WXCC Subscription in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_write or cjp:config_write scopes", - Method: "DELETE", Path: "/admin/v1/api/wxcc-subscription/workspace-id/{workspaceId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "(Required) Workspace ID"}, - }, -} - -var CCJourneyGetAllWorkspaces = &Operation{ - ID: "CCJourneyGetAllWorkspaces", Area: "cc", Group: "journey", Command: "get-all-workspaces", - Summary: "Get All Workspaces", - Description: "Get All Workspaces. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_read or cjds:admin_org_write scopes or cjp:config_read or cjp:config_write scopes", - Method: "GET", Path: "/admin/v1/api/workspace", Host: HostCC, - Params: []Param{ - {Name: "filter", In: InQuery, Flag: "filter", Usage: "Optional filter which can be applied to the elements to be fetched. \n\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see [this reference](https://developer.here.com/docs/data-client-library/dev_guide/client/rsql.html). For a list of supported operators, see this [syntax guide](https://github.com/perplexhub/rsql-jpa-specification#rsql-syntax-reference)."}, - {Name: "sortBy", In: InQuery, Flag: "sort-by", Usage: "Sort By Field"}, - {Name: "sort", In: InQuery, Flag: "sort", Usage: "Sort direction"}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Index of the page of results to be fetched.\n\nResults are returned in blocks of pageSize elements. This parameter specifies which page number to retrieve.The page numbering starts with 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Number of items to be displayed on a page."}, - }, - Paging: &Paging{}, -} - -var CCJourneyCreateWorkspace = &Operation{ - ID: "CCJourneyCreateWorkspace", Area: "cc", Group: "journey", Command: "create-workspace", - Summary: "Create Workspace", - Description: "Create Workspace in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_write or cjp:config_write scopes", - Method: "POST", Path: "/admin/v1/api/workspace", Host: HostCC, - Params: []Param{ - {Name: "organizationId", In: InQuery, Flag: "organization-id", Usage: "Organization ID"}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "description", Flag: "description", Type: "string"}, - {Name: "name", Flag: "name", Type: "string"}, - }}, -} - -var CCJourneyGetAllTemplate = &Operation{ - ID: "CCJourneyGetAllTemplate", Area: "cc", Group: "journey", Command: "get-all-template", - Summary: "Get All Template Details.", - Description: "Get Template details by Organization Id and workspaceId in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_read or cjp:config_write scopes", - Method: "GET", Path: "/admin/v1/api/profile-view-template/workspace-id/{workspaceId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "(Required) Workspace ID"}, - {Name: "filter", In: InQuery, Flag: "filter", Usage: "Optional filter which can be applied to the elements to be fetched. \n\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see [this reference](https://developer.here.com/docs/data-client-library/dev_guide/client/rsql.html). For a list of supported operators, see this [syntax guide](https://github.com/perplexhub/rsql-jpa-specification#rsql-syntax-reference)."}, - {Name: "sort", In: InQuery, Flag: "sort", Usage: "Sort direction"}, - {Name: "sortBy", In: InQuery, Flag: "sort-by", Usage: "Sort By Field"}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Index of the page of results to be fetched.\n\nResults are returned in blocks of pageSize elements. This parameter specifies which page number to retrieve.The page numbering starts with 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Number of items to be displayed on a page."}, - }, - Paging: &Paging{}, -} - -var CCJourneyCreateTemplate = &Operation{ - ID: "CCJourneyCreateTemplate", Area: "cc", Group: "journey", Command: "create-template", - Summary: "Create Template", - Description: "Creates a Profile View Template in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_write scope", - Method: "POST", Path: "/admin/v1/api/profile-view-template/workspace-id/{workspaceId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "(Required) Workspace ID"}, - }, - Body: &Body{}, -} - -var CCJourneyGetAllPerson = &Operation{ - ID: "CCJourneyGetAllPerson", Area: "cc", Group: "journey", Command: "get-all-person", - Summary: "Get all or a specific Person Details", - Description: "Get Person Details in JDS. If personId is provided by query parameter, this returns the Person whose personId matches the parameter.\nIf not, this will return ALL the Persons within the organization and workspace. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_read or cjp:config_write scopes", - Method: "GET", Path: "/admin/v1/api/person/workspace-id/{workspaceId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "(Required) Workspace ID"}, - {Name: "personId", In: InQuery, Flag: "person-id", Usage: "Person ID"}, - {Name: "filter", In: InQuery, Flag: "filter", Usage: "Optional filter which can be applied to the elements to be fetched. \n\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see [this reference](https://developer.here.com/docs/data-client-library/dev_guide/client/rsql.html). For a list of supported operators, see this [syntax guide](https://github.com/perplexhub/rsql-jpa-specification#rsql-syntax-reference)."}, - {Name: "sortBy", In: InQuery, Flag: "sort-by", Usage: "Sort By Field"}, - {Name: "sort", In: InQuery, Flag: "sort", Usage: "Sort direction"}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Index of the page of results to be fetched.\n\nResults are returned in blocks of pageSize elements. This parameter specifies which page number to retrieve. The page numbering starts with 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Number of items to be displayed on a page"}, - }, - Paging: &Paging{}, -} - -var CCJourneyCreatePerson = &Operation{ - ID: "CCJourneyCreatePerson", Area: "cc", Group: "journey", Command: "create-person", - Summary: "Create a Person", - Description: "Creates a Person in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_write scope", - Method: "POST", Path: "/admin/v1/api/person/workspace-id/{workspaceId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "(Required) Workspace ID"}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "firstName", Flag: "first-name", Type: "string"}, - {Name: "lastName", Flag: "last-name", Type: "string"}, - {Name: "phone", Flag: "phone", Type: "[]string"}, - {Name: "email", Flag: "email", Type: "[]string"}, - {Name: "temporaryId", Flag: "temporary-id", Type: "[]string"}, - {Name: "customerId", Flag: "customer-id", Type: "[]string"}, - }}, -} - -var CCJourneyMergesIdentitiesPrimaryIdentity = &Operation{ - ID: "CCJourneyMergesIdentitiesPrimaryIdentity", Area: "cc", Group: "journey", Command: "merges-identities-primary-identity", - Summary: "Merges Identities to a Primary Identity.", - Description: "Merges one/more Identities to a **Primary** Individual in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_write scope", - Method: "POST", Path: "/admin/v1/api/person/merge/workspace-id/{workspaceId}/primary-person-id/{primaryPersonId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "(Required) Workspace ID"}, - {Name: "primaryPersonId", In: InPath, Flag: "primary-person-id", Usage: "(Required) Primary Person ID"}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "personIdsToMerge", Flag: "person-ids-to-merge", Type: "[]string"}, - }}, -} - -var CCJourneyCreatesMergesAliasesIndividualJds = &Operation{ - ID: "CCJourneyCreatesMergesAliasesIndividualJds", Area: "cc", Group: "journey", Command: "creates-merges-aliases-individual-jds", - Summary: "Creates or merges aliases to an Individual in JDS.", - Description: "Merges one/more aliases in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_write scope", - Method: "POST", Path: "/admin/v1/api/person/merge-identities/workspace-id/{workspaceId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "(Required) Workspace ID"}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "firstName", Flag: "first-name", Type: "string"}, - {Name: "lastName", Flag: "last-name", Type: "string"}, - {Name: "phone", Flag: "phone", Type: "[]string"}, - {Name: "email", Flag: "email", Type: "[]string"}, - {Name: "temporaryId", Flag: "temporary-id", Type: "[]string"}, - {Name: "customerId", Flag: "customer-id", Type: "[]string"}, - }}, -} - -var CCJourneyGetAllActions = &Operation{ - ID: "CCJourneyGetAllActions", Area: "cc", Group: "journey", Command: "get-all-actions", - Summary: "Get all Journey Actions", - Description: "Get all Journey Actions in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_read or cjp:config_write scopes", - Method: "GET", Path: "/admin/v1/api/journey-actions/workspace-id/{workspaceId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "(Required) Workspace ID"}, - {Name: "sortBy", In: InQuery, Flag: "sort-by", Usage: "Sort By Field"}, - {Name: "sort", In: InQuery, Flag: "sort", Usage: "Sort direction"}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Index of the page of results to be fetched.\n\nResults are returned in blocks of pageSize elements. This parameter specifies which page number to retrieve. The page numbering starts with 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Number of items to be displayed on a page."}, - }, - Paging: &Paging{}, -} - -var CCJourneyGetTemplateSearchedTemplateName = &Operation{ - ID: "CCJourneyGetTemplateSearchedTemplateName", Area: "cc", Group: "journey", Command: "get-template-searched-template-name", - Summary: "Get A specific Template searched by template name", - Description: "Get Template details by template Name in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_read or cjp:config_write scopes", - Method: "GET", Path: "/admin/v1/api/profile-view-template/workspace-id/{workspaceId}/template-name/{templateName}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "(Required) Workspace ID"}, - {Name: "templateName", In: InPath, Flag: "template-name", Usage: "(Required) Template Name"}, - }, -} - -var CCJourneySearchIdentityAliases = &Operation{ - ID: "CCJourneySearchIdentityAliases", Area: "cc", Group: "journey", Command: "search-identity-aliases", - Summary: "Search for an Identity via aliases", - Description: "Get one or more Person Details searched by aliases in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_read or cjp:config_write scopes. Multiple aliases should be separated by a comma.", - Method: "GET", Path: "/admin/v1/api/person/workspace-id/{workspaceId}/aliases/{aliases}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "(Required) Workspace ID"}, - {Name: "aliases", In: InPath, Flag: "aliases", Usage: "(Required) Aliases to search for. Multiple aliases should be separated by a comma. \n\n In case the alias(es) contain(s) non-uri-encodable characters, eg: '+', '>' etc, you can URL-encode the same and then pass it as parameter."}, - {Name: "sortBy", In: InQuery, Flag: "sort-by", Usage: "Sort By Field"}, - {Name: "sort", In: InQuery, Flag: "sort", Usage: "Sort direction"}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Index of the page of results to be fetched.\n\nResults are returned in blocks of pageSize elements. This parameter specifies which page number to retrieve.The page numbering starts with 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Number of items to be displayed on a page."}, - }, - Paging: &Paging{}, -} - -var CCJourneyGetAllActionsTemplate = &Operation{ - ID: "CCJourneyGetAllActionsTemplate", Area: "cc", Group: "journey", Command: "get-all-actions-template", - Summary: "Get all Journey Actions for a template", - Description: "Get all Journey Actions for a template in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_read or cjp:config_write scopes", - Method: "GET", Path: "/admin/v1/api/journey-actions/workspace-id/{workspaceId}/template-id/{templateId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "(Required) Workspace ID"}, - {Name: "templateId", In: InPath, Flag: "template-id", Usage: "(Required) Template ID"}, - }, -} - -var CCJourneyCreateAction = &Operation{ - ID: "CCJourneyCreateAction", Area: "cc", Group: "journey", Command: "create-action", - Summary: "Create a new Journey Action.", - Description: "Create a new Journey Action in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_write scope", - Method: "POST", Path: "/admin/v1/api/journey-actions/workspace-id/{workspaceId}/template-id/{templateId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "(Required) Workspace ID"}, - {Name: "templateId", In: InPath, Flag: "template-id", Usage: "(Required) Template ID"}, - }, - Body: &Body{}, -} - -var CCJourneyGetActionName = &Operation{ - ID: "CCJourneyGetActionName", Area: "cc", Group: "journey", Command: "get-action-name", - Summary: "Get specific Journey Action By Name", - Description: "Get specific Journey Action By Name in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_read or cjp:config_write scopes", - Method: "GET", Path: "/admin/v1/api/journey-actions/workspace-id/{workspaceId}/template-id/{templateId}/action-name/{actionName}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "(Required) Workspace ID"}, - {Name: "templateId", In: InPath, Flag: "template-id", Usage: "(Required) Template ID"}, - {Name: "actionName", In: InPath, Flag: "action-name", Usage: "(Required) Action Name"}, - }, -} - -var CCJourneyGetActionActionid = &Operation{ - ID: "CCJourneyGetActionActionid", Area: "cc", Group: "journey", Command: "get-action-actionid", - Summary: "Get specific Journey Action By ActionId", - Description: "Get specific Journey Action By ActionId in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_read or cjp:config_write scopes", - Method: "GET", Path: "/admin/v1/api/journey-actions/workspace-id/{workspaceId}/template-id/{templateId}/action-id/{actionId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "(Required) Workspace ID"}, - {Name: "templateId", In: InPath, Flag: "template-id", Usage: "(Required) Template ID"}, - {Name: "actionId", In: InPath, Flag: "action-id", Usage: "(Required) Action ID"}, - }, -} - -var CCJourneyUpdateAction = &Operation{ - ID: "CCJourneyUpdateAction", Area: "cc", Group: "journey", Command: "update-action", - Summary: "Update existing Journey Action.", - Description: "Update existing Journey Action in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_write scope", - Method: "PUT", Path: "/admin/v1/api/journey-actions/workspace-id/{workspaceId}/template-id/{templateId}/action-id/{actionId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "(Required) Workspace ID"}, - {Name: "templateId", In: InPath, Flag: "template-id", Usage: "(Required) Template ID"}, - {Name: "actionId", In: InPath, Flag: "action-id", Usage: "(Required) Action ID"}, - }, - Body: &Body{}, -} - -var CCJourneyDeleteActionConfigurationActionid = &Operation{ - ID: "CCJourneyDeleteActionConfigurationActionid", Area: "cc", Group: "journey", Command: "delete-action-configuration-actionid", - Summary: "Delete Journey Action configuration By ActionId.", - Description: "Delete Journey Action configuration By ActionId in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_write scope", - Method: "DELETE", Path: "/admin/v1/api/journey-actions/workspace-id/{workspaceId}/template-id/{templateId}/action-id/{actionId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "(Required) Workspace ID"}, - {Name: "templateId", In: InPath, Flag: "template-id", Usage: "(Required) Template ID"}, - {Name: "actionId", In: InPath, Flag: "action-id", Usage: "(Required) Action ID"}, - }, -} - -var CCJourneyGetHistoricProfileViewTemplateName = &Operation{ - ID: "CCJourneyGetHistoricProfileViewTemplateName", Area: "cc", Group: "journey", Command: "get-historic-profile-view-template-name", - Summary: "Historic Progressive Profile View using Template Name.", - Description: "Get Historic Progressive Profile View in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_read or cjds:admin_org_write scopes or cjp:config_read or cjp:config_write scopes", - Method: "GET", Path: "/admin/v1/api/progressive-profile-view/workspace-id/{workspaceId}/person-id/{personId}/template-name/{templateName}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "(Required) Workspace ID"}, - {Name: "personId", In: InPath, Flag: "person-id", Usage: "(Required) Person ID"}, - {Name: "templateName", In: InPath, Flag: "template-name", Usage: "(Required) Template Name"}, - }, -} - -var CCJourneyDeleteOneMoreIdentitiesPerson = &Operation{ - ID: "CCJourneyDeleteOneMoreIdentitiesPerson", Area: "cc", Group: "journey", Command: "delete-one-more-identities-person", - Summary: "Remove one/more Identities from a person", - Description: "This Patch Api can be used to remove identities(email, phone, customerId) from a person. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_write scope.", - Method: "PATCH", Path: "/v1/api/person/remove-identities/workspace-id/{workspaceId}/person-id/{personId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "(Required) Workspace ID"}, - {Name: "personId", In: InPath, Flag: "person-id", Usage: "(Required) Person ID"}, - }, - Body: &Body{}, -} - -var CCJourneyGetHistoricProfileView = &Operation{ - ID: "CCJourneyGetHistoricProfileView", Area: "cc", Group: "journey", Command: "get-historic-profile-view", - Summary: "Historic Progressive Profile View.", - Description: "Get Historic Progressive Profile View in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_read or cjds:admin_org_write scopes or cjp:config_read or cjp:config_write scopes", - Method: "GET", Path: "/v1/api/progressive-profile-view/workspace-id/{workspaceId}/person-id/{personId}/template-id/{templateId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "(Required) Workspace ID"}, - {Name: "personId", In: InPath, Flag: "person-id", Usage: "(Required) Person ID"}, - {Name: "templateId", In: InPath, Flag: "template-id", Usage: "(Required) Template ID"}, - }, -} - -var CCJourneyGetHistoricProfileViewIdentityTemplateName = &Operation{ - ID: "CCJourneyGetHistoricProfileViewIdentityTemplateName", Area: "cc", Group: "journey", Command: "get-historic-profile-view-identity-template-name", - Summary: "Historic Progressive Profile View By Identity and Template Name.", - Description: "Get Historic Progressive Profile View in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_read or cjds:admin_org_write scopes or cjp:config_read or cjp:config_write scopes", - Method: "GET", Path: "/v1/api/progressive-profile-view/workspace-id/{workspaceId}/identity/{identity}/template-name/{templateName}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "(Required) Workspace ID"}, - {Name: "identity", In: InPath, Flag: "identity", Usage: "(Required) Identity"}, - {Name: "templateName", In: InPath, Flag: "template-name", Usage: "(Required) Template Name"}, - }, -} - -var CCJourneyGetHistoricProfileViewIdentityTemplateId = &Operation{ - ID: "CCJourneyGetHistoricProfileViewIdentityTemplateId", Area: "cc", Group: "journey", Command: "get-historic-profile-view-identity-template-id", - Summary: "Historic Progressive Profile View By Identity and Template Id", - Description: "Get Historic Progressive Profile View in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_read or cjds:admin_org_write scopes or cjp:config_read or cjp:config_write scopes", - Method: "GET", Path: "/v1/api/progressive-profile-view/workspace-id/{workspaceId}/identity/{identity}/template-id/{templateId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "(Required) Workspace ID"}, - {Name: "identity", In: InPath, Flag: "identity", Usage: "(Required) identity"}, - {Name: "templateId", In: InPath, Flag: "template-id", Usage: "(Required) Template ID"}, - }, -} - -var CCJourneyStreamProfileViewsTemplateName = &Operation{ - ID: "CCJourneyStreamProfileViewsTemplateName", Area: "cc", Group: "journey", Command: "stream-profile-views-template-name", - Summary: "Stream Progressive profile Views By Template Name", - Description: "Real-time streaming enables API consumers to listen for Progressive profile Views as it created/updated as part of the Journey; these may be transformed, value-added/enriched, and ready to be consumed or forwarded to another destination. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_read or cjds:admin_org_write scopes or cjp:config_read or cjp:config_write scopes", - Method: "GET", Path: "/v1/api/progressive-profile-view/stream/workspace-id/{workspaceId}/identity/{identity}/template-name/{templateName}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "(Required) Workspace ID"}, - {Name: "identity", In: InPath, Flag: "identity", Usage: "(Required) Identity to search Progressive Profile View for. \n\n In case the identity contains non-uri-encodable characters, eg: '+', '>' etc, you can URL-encode the same and then pass it as parameter."}, - {Name: "templateName", In: InPath, Flag: "template-name", Usage: "(Required) Template Name"}, - }, -} - -var CCJourneyStreamProfileViews = &Operation{ - ID: "CCJourneyStreamProfileViews", Area: "cc", Group: "journey", Command: "stream-profile-views", - Summary: "Stream Progressive profile Views", - Description: "Real-time streaming enables API consumers to listen for Progressive profile Views as it created/updated as part of the Journey; these may be transformed, value-added/enriched, and ready to be consumed or forwarded to another destination. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_read or cjds:admin_org_write scopes or cjp:config_read or cjp:config_write scopes", - Method: "GET", Path: "/v1/api/progressive-profile-view/stream/workspace-id/{workspaceId}/identity/{identity}/template-id/{templateId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "(Required) Workspace ID"}, - {Name: "identity", In: InPath, Flag: "identity", Usage: "(Required) Identity to search Progressive Profile View for. \n\n In case the identity contains non-uri-encodable characters, eg: '+', '>' etc, you can URL-encode the same and then pass it as parameter."}, - {Name: "templateId", In: InPath, Flag: "template-id", Usage: "(Required) Template ID"}, - }, -} - -var CCJourneyGetHistoricEvents = &Operation{ - ID: "CCJourneyGetHistoricEvents", Area: "cc", Group: "journey", Command: "get-historic-events", - Summary: "Historic Journey Events", - Description: "Getting Historic Customer Journey Events from Pinot. These events are append-only, immutable data ledger that can be queried to retrieve snapshot of latest events that moment in time or historically to play-back events as they occurred to understand or analyze Journeys using ML/AI models. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_read or cjds:admin_org_write scopes or cjp:config_read or cjp:config_write scopes ", - Method: "GET", Path: "/v1/api/events/workspace-id/{workspaceId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "(Required) Workspace ID"}, - {Name: "identity", In: InQuery, Flag: "identity", Usage: "Identity to search events for. \n\n In case the identity contains non-uri-encodable characters, eg: '+', '>' etc, you can URL-encode the same and then pass it as parameter."}, - {Name: "sortBy", In: InQuery, Flag: "sort-by", Usage: "sort By Field"}, - {Name: "sort", In: InQuery, Flag: "sort", Usage: "sort direction"}, - {Name: "filter", In: InQuery, Flag: "filter", Usage: "Optional filter which can be applied to the elements to be fetched.\n\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see [this reference](https://developer.here.com/docs/data-client-library/dev_guide/client/rsql.html). For a list of supported operators, see this [syntax guide](https://github.com/perplexhub/rsql-jpa-specification#rsql-syntax-reference)."}, - {Name: "data", In: InQuery, Flag: "data", Usage: "Optional filter on data filed which can be applied to the elements to be fetched.\n\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see [this reference](https://developer.here.com/docs/data-client-library/dev_guide/client/rsql.html). For a list of supported operators, see this [syntax guide](https://github.com/perplexhub/rsql-jpa-specification#rsql-syntax-reference)."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Index of the page of results to be fetched.\n\nResults are returned in blocks of pageSize elements. This parameter specifies which page number to retrieve.The page numbering starts with 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Number of items to be displayed on a page."}, - }, - Paging: &Paging{}, -} - -var CCJourneyStreamEventsIdentity = &Operation{ - ID: "CCJourneyStreamEventsIdentity", Area: "cc", Group: "journey", Command: "stream-events-identity", - Summary: "Stream Events By Identity", - Description: "Real-time streaming enables API consumers to listen for events as it arrives as part of the Journey; these may be transformed, value-added/enriched, and ready to be consumed or forwarded to another destination. Optionally accepts filter and data parameters slice/dice further. It requires the appropriate cjds:admin_org_read or cjds:admin_org_write scopes or cjp:config_read or cjp:config_write scopes", - Method: "GET", Path: "/v1/api/events/stream/workspace-id/{workspaceId}/identity/{identity}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "(Required) Workspace ID"}, - {Name: "identity", In: InPath, Flag: "identity", Usage: "(Required) Person Identity. \n\n In case the identity contains non-uri-encodable characters, eg: '+', '>' etc, you can URL-encode the same and then pass it as parameter."}, - {Name: "filter", In: InQuery, Flag: "filter", Usage: "Optional filter which can be applied to the elements to be fetched.\n\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see [this reference](https://developer.here.com/docs/data-client-library/dev_guide/client/rsql.html). For a list of supported operators, see this [syntax guide](https://github.com/perplexhub/rsql-jpa-specification#rsql-syntax-reference)."}, - {Name: "data", In: InQuery, Flag: "data", Usage: "Optional filter on data filed which can be applied to the elements to be fetched.\n\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see [this reference](https://developer.here.com/docs/data-client-library/dev_guide/client/rsql.html). For a list of supported operators, see this [syntax guide](https://github.com/perplexhub/rsql-jpa-specification#rsql-syntax-reference)."}, - }, -} - -var CCJourneyEventPosting = &Operation{ - ID: "CCJourneyEventPosting", Area: "cc", Group: "journey", Command: "event-posting", - Summary: "Journey Event Posting", - Description: "Journey Event Posting Api.API accepts events that describe what occurred, when, and by whom on every interaction across touch points and applications. Data Ingestion is based on Cloud Events specification for describing event data in a common way. API accepts data in the form of POST with support for Header based authorization. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_write or cjp:config_write scopes", - Method: "POST", Path: "/publish/v1/api/event", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InQuery, Flag: "workspace-id", Usage: "(Required) Workspace ID"}, - }, - Body: &Body{}, -} - -var CCCampaignManagerStartRequest = &Operation{ - ID: "CCCampaignManagerStartRequest", Area: "cc", Group: "campaign-manager", Command: "start-request", - Summary: "Start Campaign Request", - Description: "A start campaign API allows businesses to programmatically start outbound campaigns using their own software applications. This type of API typically allows businesses to set up the parameters for a campaign, such as the list of phone numbers to call, the message or script to deliver, and the time of day or day of the week to call. Requires 'cjp.config_write' scope and one of the following roles: 'cjp.admin','id_full_admin','atlas-portal.partner.salesadmin','atlas-portal.partner.provision_admin' for authorization.", - Method: "POST", Path: "/v1/dialer/campaign", Host: HostCC, - Body: &Body{}, -} - -var CCCampaignManagerUpdateRequest = &Operation{ - ID: "CCCampaignManagerUpdateRequest", Area: "cc", Group: "campaign-manager", Command: "update-request", - Summary: "Update Campaign Request", - Description: "By using an update campaign API, businesses can automate the process of modifying and managing outbound campaigns, and integrate campaign updates into their existing workflows or applications. This can help to improve efficiency and reduce errors, as well as allow for greater flexibility and control over outbound campaigns. Requires 'cjp.config_write' scope and one of the following roles: 'cjp.admin','id_full_admin','atlas-portal.partner.salesadmin','atlas-portal.partner.provision_admin' for authorization.", - Method: "PUT", Path: "/v1/dialer/campaign/{campaignId}", Host: HostCC, - Params: []Param{ - {Name: "campaignId", In: InPath, Flag: "campaign-id", Usage: "The unique request id of the campaign that needs to be updated"}, - }, - Body: &Body{}, -} - -var CCCampaignManagerStopRequest = &Operation{ - ID: "CCCampaignManagerStopRequest", Area: "cc", Group: "campaign-manager", Command: "stop-request", - Summary: "Stop Campaign Request", - Description: "The stop campaign API enables businesses to automate the process of managing outbound campaigns and integrate campaign deletion into their existing workflows or applications. Requires 'cjp.config_write' scope and one of the following roles: 'cjp.admin','id_full_admin','atlas-portal.partner.salesadmin','atlas-portal.partner.provision_admin' for authorization.", - Method: "DELETE", Path: "/v1/dialer/campaign/{campaignId}", Host: HostCC, - Params: []Param{ - {Name: "campaignId", In: InPath, Flag: "campaign-id", Usage: "The unique request id of the campaign that needs to be stopped"}, - }, -} - -var CCCampaignManagerGetValidTimes = &Operation{ - ID: "CCCampaignManagerGetValidTimes", Area: "cc", Group: "campaign-manager", Command: "get-valid-times", - Summary: "Get Valid Campaign Times", - Description: "Gets valid campaign times for a campaign and agent. This request is accepted for asynchronous processing. Requires 'cjp:user','cjp.config_write' scope and one of the following roles: 'cjp.admin','id_full_admin','atlas-portal.partner.salesadmin','atlas-portal.partner.provision_admin' for authorization.", - Method: "GET", Path: "/v1/organization/{orgid}/getValidCampaignTimes", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "The organization ID for which valid campaign times are being requested."}, - {Name: "campaignId", In: InQuery, Flag: "campaign-id", Usage: "The campaign ID for which valid campaign times are being requested."}, - {Name: "interactionId", In: InQuery, Flag: "interaction-id", Usage: "The unique identifier of the interaction associated with this request."}, - {Name: "agentId", In: InQuery, Flag: "agent-id", Usage: "The agent ID for whom valid campaign times are being requested."}, - {Name: "trackingId", In: InQuery, Flag: "tracking-id", Usage: "Optional tracking identifier for request tracing."}, - }, -} - -var CCCapturesList = &Operation{ - ID: "CCCapturesList", Area: "cc", Group: "captures", Command: "list", - Summary: "List Captures", - Description: "Retrieve a list of Captures given a set of task IDs.\n\n### Captures Availability\n\nNot all tasks will have captures by default and they will be available based on the organization's configurations and retention policy. Querying closed tasks is recommended, as open tasks may return incomplete data.\n\nTranscripts retrieved through this API are post-interaction artifacts.\n- For voice, transcripts are available when at least one transcript based configuration/feature is enabled such as Auto CSAT, Agent Well Being, Call Drop Summary, Topics Analytics.\n\n- For digital channels such as Chat, Email, Social, Work Item, and Custom Messaging, transcripts are generated from the conversation messages. Please refer [guide for digital transcripts](/docs/guide-for-digital-transcripts) for more details\n\n### URL Expiry\n\nThe maximum duration of validity of pre signed URL or default value when no value is passed for urlExpiration is 60 minutes.\n\n### Authentication & Authorization\n\nThis API requires a valid bearer token. The caller must satisfy the scope and role requirements for one of the following:\n\n#### Service App\n- **Required Scope:** `cjp:config_read`\n- The `orgId` must be provided in the request body and must match the token's org.\n- For service app setup, refer to [Contact Center Service Apps](/docs/contact-center-service-apps).\n\n#### Org Admin\n- **Required Scopes:** `Identity:SCIM` and `Identity:Organization`\n- **Required Role (one of):** `id_full_admin`, `id_readonly_admin`, `cjp.admin`, or `atlas-portal.partner.provision_admin`\n- The user must belong to the organization being queried. If `orgId` is provided in the request body, it must match the token's org. If `orgId` is omitted, it is inferred from the token.\n\n#### Partner Admin\n- **Required Scope:** `Identity:SCIM` for the managed org\n- **Required Role:** `atlas-portal.partner.salesadmin`\n- The org ID must be included in the managed org list. This is accomplished by adding the org to the `Managed customer orgs` list in control hub.\n\n#### Supervisor\n- **Required Role:** `cjp.supervisor`\n- The user must belong to the organization being queried. If `orgId` is provided in the request body, it must match the token's org. If `orgId` is omitted, it is inferred from the token.\n\n**Note:** Please refer to the contact center setup documentation for the configuration details.\n\n", - Method: "POST", Path: "/v1/captures/query", Host: HostCC, - Body: &Body{}, -} - -var CCFlowExportLegacy = &Operation{ - ID: "CCFlowExportLegacy", Area: "cc", Group: "flow", Command: "export-legacy", - Summary: "Export a Flow or Subflow", - Description: "Returns the exported flow/subflow in response.\n\nScope: `cjp:config_read`. Roles: [`Organizational Full Admin`, `Supervisor`, `Contact Center Service Admin`, `User Admin`]", - Method: "GET", Path: "/flow-store/{orgid}/project/{projectId}/flows/{flowId}:export", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID."}, - {Name: "projectId", In: InPath, Value: "5e5c9ad6d61f870d6d778c1b"}, - {Name: "flowId", In: InPath, Flag: "flow-id"}, - {Name: "version", In: InQuery, Flag: "version", Usage: "Version ID. Possible values are 'draft', 'latest' or version ID like '64b92c004ccd9f3d1c680709'. Defaulted to 'latest'."}, - }, -} - -var CCFlowImportLegacy = &Operation{ - ID: "CCFlowImportLegacy", Area: "cc", Group: "flow", Command: "import-legacy", - Summary: "Import a Flow or Subflow", - Description: "Returns the imported flow/subflow in response.\n\nScope: `cjp:config_write`. Roles: [`Organizational Full Admin`, `Supervisor`, `Contact Center Service Admin`, `User Admin`]", - Method: "POST", Path: "/flow-store/{orgid}/project/{projectId}/flows:import", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID."}, - {Name: "projectId", In: InPath, Value: "5e5c9ad6d61f870d6d778c1b"}, - {Name: "overwrite", In: InQuery, Flag: "overwrite", Usage: "Determines whether to overwrite the existing flow or not. Possible values: yes/no."}, - {Name: "flowType", In: InQuery, Flag: "flow-type", Usage: "Either of 'FLOW' or 'SUBFLOW'."}, - {Name: "Content-Length", In: InHeader, Flag: "content-length", Usage: "Content length value in number of bytes."}, - }, -} - -var CCFlowList = &Operation{ - ID: "CCFlowList", Area: "cc", Group: "flow", Command: "list", - Summary: "List Flows or Subflows", - Description: "Returns a list of flows in response. Channel-based filtering can be applied with the `searchBy` query parameter (for example, `channelType|telephony`, `channelType|workItem`, `channelType|customMessaging`, `channelType|genericAction`). Channel visibility may be constrained by organization feature flags. If associatedChannels key is missing or empty, it will be treated as telephony flow.\n\nScope: `cjp:config_read`. Roles: [`Organizational Full Admin`, `Supervisor`, `Contact Center Service Admin`, `User Admin`]", - Method: "GET", Path: "/{orgid}/project/{projectId}/flows", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID."}, - {Name: "projectId", In: InPath, Value: "5e5c9ad6d61f870d6d778c1b"}, - {Name: "flowType", In: InQuery, Flag: "flow-type", Usage: "Either of 'FLOW' or 'SUBFLOW'."}, - {Name: "ids", In: InQuery, Flag: "ids", Usage: "Filters results based on a comma-separated list of flow IDs. If provided, only flows with those IDs will be fetched in the response."}, - {Name: "ids", In: InQuery, Flag: "ids", Usage: "Filters results based on a comma-separated list of flow IDs. If provided, only flows with those IDs will be fetched in the response."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of the displayed page. The page number starts from 0."}, - {Name: "partialNameSearch", In: InQuery, Flag: "partial-name-search", Usage: "Performs a partial string match on the name of the flow. If the flow name contains the given string it will be fetched in the response."}, - {Name: "searchBy", In: InQuery, Flag: "search-by", Usage: "Filter expression in the format `|`. Supports searching by `channelType` (for example, `channelType|telephony`, `channelType|workItem`, `channelType|customMessaging`, `channelType|genericAction`)."}, - {Name: "size", In: InQuery, Flag: "size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - {Name: "includePagination", In: InQuery, Flag: "include-pagination", Usage: "If set to true then a different paginated response object containing the page metadata (currentPage, totalRecords, pageSize, totalPages) will be returned. The flow objects will be in an array named \"data\"."}, - {Name: "isValidation", In: InQuery, Flag: "is-validation", Usage: "If true, validates the existence of flows by ID regardless of the caller's RBAC access. Intended for internal Task Management use cases."}, - }, - Paging: &Paging{SizeParam: "size", Query: map[string]string{"includePagination": "true"}}, -} - -var CCFlowPublish = &Operation{ - ID: "CCFlowPublish", Area: "cc", Group: "flow", Command: "publish", - Summary: "Publish a Flow or Subflow", - Description: "Returns the published flow in response.\n\nThe Publish API validates the basic structure of the flows. We recommend manually verifying the published flows before proceeding with live traffic.\n\nScope: `cjp:config_write`. Roles: [`Organizational Full Admin`, `Supervisor`, `Contact Center Service Admin`, `User Admin`]", - Method: "POST", Path: "/{orgid}/project/{projectId}/flows/{flowId}:publish", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID."}, - {Name: "projectId", In: InPath, Value: "5e5c9ad6d61f870d6d778c1b"}, - {Name: "flowId", In: InPath, Flag: "flow-id"}, - {Name: "skipValidation", In: InQuery, Flag: "skip-validation", Usage: "If true, the flow's pre-publish validation is skipped. Use with care."}, - {Name: "flowType", In: InQuery, Flag: "flow-type", Usage: "Either of 'FLOW' or 'SUBFLOW'."}, - {Name: "TrackingId", In: InHeader, Flag: "tracking-id", Usage: "ID for tracking."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "comment", Flag: "comment", Type: "string"}, - {Name: "tagIds", Flag: "tag-ids", Type: "[]string"}, - }}, -} - -var CCFlowLock = &Operation{ - ID: "CCFlowLock", Area: "cc", Group: "flow", Command: "lock", - Summary: "Lock a Flow or Subflow", - Description: "Lock a flow to prevent concurrent edits by other users. Locks expire after 15 minutes of inactivity.\n\nScope: `cjp:config_write`. Roles: [`Organizational Full Admin`, `Contact Center Service Admin`]", - Method: "POST", Path: "/{orgid}/project/{projectId}/flows/{flowId}:lock", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID."}, - {Name: "projectId", In: InPath, Value: "5e5c9ad6d61f870d6d778c1b"}, - {Name: "flowId", In: InPath, Flag: "flow-id"}, - {Name: "flowType", In: InQuery, Flag: "flow-type", Usage: "Either of 'FLOW' or 'SUBFLOW'."}, - }, -} - -var CCFlowUnlock = &Operation{ - ID: "CCFlowUnlock", Area: "cc", Group: "flow", Command: "unlock", - Summary: "Unlock a Flow or Subflow", - Description: "Release the lock on a flow to allow other users to edit it.\n\nScope: `cjp:config_write`. Roles: [`Organizational Full Admin`, `Contact Center Service Admin`]", - Method: "POST", Path: "/{orgid}/project/{projectId}/flows/{flowId}:unlock", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID."}, - {Name: "projectId", In: InPath, Value: "5e5c9ad6d61f870d6d778c1b"}, - {Name: "flowId", In: InPath, Flag: "flow-id"}, - {Name: "flowType", In: InQuery, Flag: "flow-type", Usage: "Either of 'FLOW' or 'SUBFLOW'."}, - }, -} - -var CCFlowValidate = &Operation{ - ID: "CCFlowValidate", Area: "cc", Group: "flow", Command: "validate", - Summary: "Validate a Flow or Subflow", - Description: "Dry-run validate a flow/subflow definition without persisting it. Use this to check correctness before importing. Include `associatedChannels` to preserve the channel metadata that import and export payloads round-trip. Validation requests where `associatedChannels` is missing or empty are treated as telephony flows, and dry-run validation does not derive the effective channel from `associatedChannels`.\n\nNote: validation is more lenient than import. A flow that passes `:validate` can still be rejected by `:import` (for example, a missing start activity), so a successful validation does not guarantee a successful import.\n\nScope: `cjp:config_write`", - Method: "POST", Path: "/{orgid}/project/{projectId}/v2/flows:validate", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID."}, - {Name: "projectId", In: InPath, Value: "5e5c9ad6d61f870d6d778c1b"}, - }, - Body: &Body{}, -} - -var CCFlowImport = &Operation{ - ID: "CCFlowImport", Area: "cc", Group: "flow", Command: "import", - Summary: "Import a Flow or Subflow", - Description: "Import a new flow/subflow from a flow definition. Creates the flow/subflow in draft state and returns the assigned flow metadata, including `flowId`. Include `associatedChannels` in the payload when the flow contains channel-specific activities (for example, `customMessaging`) so channel references can be resolved correctly during import. If `associatedChannels` is missing or empty, the import is treated as a telephony flow. For `FLOW` imports, blank or whitespace-only `associatedChannels[].channelType` values are rejected.\n\nScope: `cjp:config_write`", - Method: "POST", Path: "/{orgid}/project/{projectId}/v2/flows:import", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID."}, - {Name: "projectId", In: InPath, Value: "5e5c9ad6d61f870d6d778c1b"}, - {Name: "overwrite", In: InQuery, Flag: "overwrite", Usage: "If true, replaces an existing flow with the same name. Defaults to false."}, - {Name: "flowType", In: InQuery, Flag: "flow-type", Usage: "Either of 'FLOW' or 'SUBFLOW'."}, - }, - Body: &Body{}, -} - -var CCFlowGet = &Operation{ - ID: "CCFlowGet", Area: "cc", Group: "flow", Command: "get", - Summary: "Get a Flow or Subflow", - Description: "Retrieve the current draft of a flow/subflow as a flow document. To fetch a specific published version, use the `:export` endpoint. The response includes channel metadata (for example, `associatedChannels`) used by channel-specific activities such as `customMessaging`. If `associatedChannels` is missing or empty, the flow is treated as telephony.\n\nScope: `cjp:config_read`", - Method: "GET", Path: "/{orgid}/project/{projectId}/v2/flows/{flowId}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID."}, - {Name: "projectId", In: InPath, Value: "5e5c9ad6d61f870d6d778c1b"}, - {Name: "flowId", In: InPath, Flag: "flow-id", Usage: "Flow ID."}, - {Name: "flowType", In: InQuery, Flag: "flow-type", Usage: "Either of 'FLOW' or 'SUBFLOW'."}, - }, -} - -var CCFlowSaveDraft = &Operation{ - ID: "CCFlowSaveDraft", Area: "cc", Group: "flow", Command: "save-draft", - Summary: "Save a Flow or Subflow Draft", - Description: "Save a complete flow/subflow document as the current draft, replacing the existing draft. Submitted `associatedChannels` values are not persisted on save; the draft preserves the existing stored channel metadata. Omitting `associatedChannels` does not default an existing flow to telephony. Pass `expectedVersion` as a query parameter to enable optimistic locking; the request fails with `409 Conflict` if the server-side version does not match. Omit `expectedVersion` to skip the check.\n\nScope: `cjp:config_write`", - Method: "POST", Path: "/{orgid}/project/{projectId}/v2/flows/{flowId}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID."}, - {Name: "projectId", In: InPath, Value: "5e5c9ad6d61f870d6d778c1b"}, - {Name: "flowId", In: InPath, Flag: "flow-id", Usage: "Flow ID."}, - {Name: "expectedVersion", In: InQuery, Flag: "expected-version", Usage: "Expected current draft version for optimistic locking. The request fails with 409 Conflict if the server-side version does not match. Omit to skip the check."}, - {Name: "flowType", In: InQuery, Flag: "flow-type", Usage: "Either of 'FLOW' or 'SUBFLOW'."}, - }, - Body: &Body{}, -} - -var CCFlowPatchDraft = &Operation{ - ID: "CCFlowPatchDraft", Area: "cc", Group: "flow", Command: "patch-draft", - Summary: "Patch a Flow or Subflow Draft", - Description: "Apply partial updates to an existing flow/subflow draft without replacing the entire document. The patch body is a Patch Draft Contract — server-side merge, idempotent, and re-validated after the merge. The patch is rejected if the merged document fails validation, so the draft is never left in a broken state. The body may also include top-level overrides such as `name` and `description`. Submitted `associatedChannels` values are not persisted on patch; the draft preserves the existing stored channel metadata.\n\nPass `expectedVersion` as a query parameter to enable optimistic locking; the request fails with `409 Conflict` if the server-side version does not match. Omit `expectedVersion` to skip the check.\n\nScope: `cjp:config_write`", - Method: "PATCH", Path: "/{orgid}/project/{projectId}/v2/flows/{flowId}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID."}, - {Name: "projectId", In: InPath, Value: "5e5c9ad6d61f870d6d778c1b"}, - {Name: "flowId", In: InPath, Flag: "flow-id", Usage: "Flow ID."}, - {Name: "expectedVersion", In: InQuery, Flag: "expected-version", Usage: "Expected current draft version for optimistic locking. The request fails with 409 Conflict if the server-side version does not match. Omit to skip the check."}, - {Name: "flowType", In: InQuery, Flag: "flow-type", Usage: "Either of 'FLOW' or 'SUBFLOW'."}, - }, - Body: &Body{}, -} - -var CCFlowValidateDraft = &Operation{ - ID: "CCFlowValidateDraft", Area: "cc", Group: "flow", Command: "validate-draft", - Summary: "Validate an Existing Flow or Subflow Draft", - Description: "Validate the current draft of an existing flow/subflow (read-only operation). Validation reads the draft as stored. Drafts where `associatedChannels` is missing or empty are treated as telephony flows, and validation does not derive the effective channel from `associatedChannels`.\n\nScope: `cjp:config_read`", - Method: "GET", Path: "/{orgid}/project/{projectId}/v2/flows/{flowId}:validate", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID."}, - {Name: "projectId", In: InPath, Value: "5e5c9ad6d61f870d6d778c1b"}, - {Name: "flowId", In: InPath, Flag: "flow-id"}, - {Name: "versionId", In: InQuery, Flag: "version-id", Usage: "Version to validate. Use 'draft' for the current draft, or a specific version ObjectId."}, - {Name: "flowType", In: InQuery, Flag: "flow-type", Usage: "Either of 'FLOW' or 'SUBFLOW'."}, - }, -} - -var CCFlowExport = &Operation{ - ID: "CCFlowExport", Area: "cc", Group: "flow", Command: "export", - Summary: "Export a Flow or Subflow", - Description: "Export a flow/subflow as a flow document for backup, migration, or version control. The exported payload includes `associatedChannels` metadata to preserve channel-specific activity behavior (for example, `customMessaging`) during re-import. If `associatedChannels` is missing or empty, the flow is treated as telephony.\n\nScope: `cjp:config_read`", - Method: "GET", Path: "/{orgid}/project/{projectId}/v2/flows/{flowId}:export", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID."}, - {Name: "projectId", In: InPath, Value: "5e5c9ad6d61f870d6d778c1b"}, - {Name: "flowId", In: InPath, Flag: "flow-id"}, - {Name: "version", In: InQuery, Flag: "version", Usage: "Version to export. Use 'latest' for the most recent published version, 'draft' for the working copy, or a specific version ObjectId."}, - {Name: "flowType", In: InQuery, Flag: "flow-type", Usage: "Either of 'FLOW' or 'SUBFLOW'."}, - }, -} - -var CCFlowSearch = &Operation{ - ID: "CCFlowSearch", Area: "cc", Group: "flow", Command: "search", - Summary: "Search Flows", - Description: "Returns a list of flows in response. The search is case-sensitive.\n\nScope: `cjp:config_read`. Roles: [`Organizational Full Admin`, `Supervisor`, `Contact Center Service Admin`, `User Admin`]", - Method: "GET", Path: "/{orgid}/project/{projectId}/flows:search", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID."}, - {Name: "projectId", In: InPath, Value: "5e5c9ad6d61f870d6d778c1b"}, - {Name: "query", In: InQuery, Flag: "query", Usage: "Searches for flows with the given query. The search is case-sensitive."}, - {Name: "flowType", In: InQuery, Flag: "flow-type", Usage: "Either of 'FLOW' or 'SUBFLOW' or 'ALL'. Default value is 'ALL'."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of the displayed page. The page number starts from 0."}, - {Name: "size", In: InQuery, Flag: "size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - {Name: "keyValueFilter", In: InQuery, Flag: "key-value-filter", Usage: "Filters results based on key-value pairs. Format: 'key1|value1,key2|value2'. This will add a filter on normalizedFlow collection directly instead of running query on atlas."}, - }, - Paging: &Paging{SizeParam: "size"}, -} - -var CCFlowDelete = &Operation{ - ID: "CCFlowDelete", Area: "cc", Group: "flow", Command: "delete", - Summary: "Delete a Flow or Subflow", - Description: "Permanently deletes a flow or subflow. Flows deleted via this API are removed permanently and cannot be recovered.\n\nScope: `cjp:config_write`. Roles: [`Organizational Full Admin`, `Contact Center Service Admin`]", - Method: "DELETE", Path: "/{orgid}/project/{projectId}/flows/{flowId}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID."}, - {Name: "projectId", In: InPath, Value: "5e5c9ad6d61f870d6d778c1b"}, - {Name: "flowId", In: InPath, Flag: "flow-id", Usage: "ID of the flow/subflow to delete."}, - {Name: "force", In: InQuery, Flag: "force", Usage: "If 'yes', the flow is deleted even if it is still referenced by other entities. Defaults to 'no'."}, - {Name: "skipRsEPCheck", In: InQuery, Flag: "skip-rs-epcheck", Usage: "If true, skips the check for routing strategy and entry point associations before deleting the flow."}, - {Name: "flowType", In: InQuery, Flag: "flow-type", Usage: "Either of 'FLOW' or 'SUBFLOW'."}, - }, -} - -var CCCallbacksSchedule = &Operation{ - ID: "CCCallbacksSchedule", Area: "cc", Group: "callbacks", Command: "schedule", - Summary: "Schedule a Callback", - Description: "Creates a new callback request for a customer. Authorization requires the cjp:user scope. The callback default endpoint (EP) and default ANI must be configured as mandatory settings to successfully make API calls.", - Method: "POST", Path: "/v1/callbacks/organization/{orgid}/scheduled-callback", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "The organization ID for which the callback is being scheduled. This should be a valid UUID."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "customerName", Flag: "customer-name", Type: "string"}, - {Name: "callbackNumber", Flag: "callback-number", Type: "string"}, - {Name: "timezone", Flag: "timezone", Type: "string"}, - {Name: "scheduleDate", Flag: "schedule-date", Type: "string"}, - {Name: "startTime", Flag: "start-time", Type: "string"}, - {Name: "endTime", Flag: "end-time", Type: "string"}, - {Name: "queueId", Flag: "queue-id", Type: "string"}, - {Name: "callbackReason", Flag: "callback-reason", Type: "string"}, - {Name: "sourceInteraction", Flag: "source-interaction", Type: "string"}, - {Name: "assigneeAgent", Flag: "assignee-agent", Type: "string"}, - }}, -} - -var CCCallbacksGetScheduled = &Operation{ - ID: "CCCallbacksGetScheduled", Area: "cc", Group: "callbacks", Command: "get-scheduled", - Summary: "Get scheduled callbacks", - Description: "Allows the user to list scheduled callbacks for a given customer number or assignee agent, excluding those whose scheduled trigger time has already passed. Requires 'cjp:user' scope for authorization.", - Method: "GET", Path: "/v1/callbacks/organization/{orgid}/scheduled-callback", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "The organization ID for which the callback is being scheduled. This should be a valid UUID."}, - {Name: "callbackNumber", In: InQuery, Flag: "callback-number", Usage: "The callback customer number to filter the scheduled callbacks. Only an exact match will yield the result. Allows an optional country code followed by digits (0-9) and the special characters: space, hyphen -, parentheses ( and ), and period ., ensuring the total length is between 7 and 15 characters."}, - {Name: "assigneeAgent", In: InQuery, Flag: "assignee-agent", Usage: "The unique identifier of the agent assigned to handle the callback. Must be in UUID format. This parameter is optional, but at least one of assigneeAgent or callbackNumber must be provided."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "The page number to retrieve."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "The number of items per page."}, - {Name: "sortBy", In: InQuery, Flag: "sort-by", Usage: "The field to sort the results by. If `sortBy` is set to `assignedTime`, the `assigneeAgent` parameter must also be provided."}, - {Name: "sortOrder", In: InQuery, Flag: "sort-order", Usage: "The order to sort the results in."}, - }, - Paging: &Paging{}, -} - -var CCCallbacksGetScheduledId = &Operation{ - ID: "CCCallbacksGetScheduledId", Area: "cc", Group: "callbacks", Command: "get-scheduled-id", - Summary: "Get scheduled callback by Id", - Description: "Retrieve an existing scheduled callback by Id, excluding those whose scheduled trigger time has already passed. Requires 'cjp:user' scope for authorization.", - Method: "GET", Path: "/v1/callbacks/organization/{orgid}/scheduled-callback/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "The organization ID for which the callback is being scheduled. This should be a valid UUID."}, - {Name: "id", In: InPath, Flag: "id", Usage: "The id with which the Scheduled Callback has been created."}, - }, -} - -var CCCallbacksUpdateScheduledId = &Operation{ - ID: "CCCallbacksUpdateScheduledId", Area: "cc", Group: "callbacks", Command: "update-scheduled-id", - Summary: "Update scheduled callback by Id", - Description: "Update an existing scheduled callback by Id,those whose scheduled trigger time has already passed cannot be updated. Requires 'cjp:user' scope for authorization.", - Method: "PUT", Path: "/v1/callbacks/organization/{orgid}/scheduled-callback/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "The organization ID for which the callback is being scheduled. This should be a valid UUID."}, - {Name: "id", In: InPath, Flag: "id", Usage: "The id with which the Scheduled Callback has been created."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "id", Flag: "id", Type: "string"}, - {Name: "customerName", Flag: "customer-name", Type: "string"}, - {Name: "callbackNumber", Flag: "callback-number", Type: "string"}, - {Name: "timezone", Flag: "timezone", Type: "string"}, - {Name: "scheduleDate", Flag: "schedule-date", Type: "string"}, - {Name: "startTime", Flag: "start-time", Type: "string"}, - {Name: "endTime", Flag: "end-time", Type: "string"}, - {Name: "queueId", Flag: "queue-id", Type: "string"}, - {Name: "callbackReason", Flag: "callback-reason", Type: "string"}, - {Name: "sourceInteraction", Flag: "source-interaction", Type: "string"}, - {Name: "assigneeAgent", Flag: "assignee-agent", Type: "string"}, - }}, -} - -var CCCallbacksDeleteScheduledId = &Operation{ - ID: "CCCallbacksDeleteScheduledId", Area: "cc", Group: "callbacks", Command: "delete-scheduled-id", - Summary: "Delete scheduled callback by Id", - Description: "Delete an existing scheduled callback by Id, those whose scheduled trigger time has already passed cannot be deleted. Requires 'cjp:user' scope for authorization.", - Method: "DELETE", Path: "/v1/callbacks/organization/{orgid}/scheduled-callback/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "The organization ID for which the callback is being scheduled. This should be a valid UUID."}, - {Name: "id", In: InPath, Flag: "id", Usage: "The id with which the Scheduled Callback has been created."}, - }, -} - -var CCAiFeatureGet = &Operation{ - ID: "CCAiFeatureGet", Area: "cc", Group: "ai-feature", Command: "get", - Aliases: []string{"get-id"}, - Summary: "Get specific AI Feature resource by ID", - Description: "Retrieve an existing AI Feature resource by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/ai-feature/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the AI Feature resource."}, - }, -} - -var CCAiFeaturePatch = &Operation{ - ID: "CCAiFeaturePatch", Area: "cc", Group: "ai-feature", Command: "patch", - Aliases: []string{"patch-id"}, - Summary: "Partially update AI Feature resource by ID", - Description: "Partially update AI Feature resource by ID in a given organization.", - Method: "PATCH", Path: "/organization/{orgid}/ai-feature/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the AI Feature resource."}, - }, - Body: &Body{}, -} - -var CCAiFeatureList = &Operation{ - ID: "CCAiFeatureList", Area: "cc", Group: "ai-feature", Command: "list", - Summary: "List AI Feature resource(s)", - Description: "Retrieve a list of AI Feature resource(s) in a given organization.Only one entry per organization can exist for AI Feature resource.", - Method: "GET", Path: "/organization/{orgid}/v2/ai-feature", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "filter", In: InQuery, Flag: "filter", Usage: "Specify a filter based on which the results will be fetched. Supported filterable fields: id. \n\nThe examples below show some search queries\n- id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\n- id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide.\n\nNote: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter.\n"}, - {Name: "attributes", In: InQuery, Flag: "attributes", Usage: "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCAiFeatureCreateQuestionMappedAutocsat = &Operation{ - ID: "CCAiFeatureCreateQuestionMappedAutocsat", Area: "cc", Group: "ai-feature", Command: "create-question-mapped-autocsat", - Summary: "Create a new Question mapped to AutoCSAT", - Description: "Create a new Auto CSAT mapped Question in a given organization.", - Method: "POST", Path: "/organization/{orgid}/ai-feature/auto-csat/question", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "questionId", Flag: "question-id", Type: "string"}, - {Name: "questionnaireId", Flag: "questionnaire-id", Type: "string"}, - {Name: "organizationId", Flag: "organization-id", Type: "string"}, - {Name: "id", Flag: "id", Type: "string"}, - {Name: "version", Flag: "version", Type: "int64"}, - {Name: "createdTime", Flag: "created-time", Type: "int64"}, - {Name: "lastUpdatedTime", Flag: "last-updated-time", Type: "int64"}, - }}, -} - -var CCAiFeatureBulkSaveQuestionMappedAutocsat = &Operation{ - ID: "CCAiFeatureBulkSaveQuestionMappedAutocsat", Area: "cc", Group: "ai-feature", Command: "bulk-save-question-mapped-autocsat", - Summary: "Bulk save Question mapped to AutoCSAT", - Description: "Create, Update or delete Auto CSAT mapped Question(s) in bulk for Auto CSAT resource in a given organization.", - Method: "POST", Path: "/organization/{orgid}/ai-feature/auto-csat/question/bulk", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{}, -} - -var CCAiFeatureGetQuestionMappedAutocsatId = &Operation{ - ID: "CCAiFeatureGetQuestionMappedAutocsatId", Area: "cc", Group: "ai-feature", Command: "get-question-mapped-autocsat-id", - Summary: "Get specific Question mapped to AutoCSAT by ID", - Description: "Retrieve an existing Auto CSAT mapped Question by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/ai-feature/auto-csat/question/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Auto CSAT mapped Question."}, - }, -} - -var CCAiFeatureDeleteQuestionMappedAutocsatId = &Operation{ - ID: "CCAiFeatureDeleteQuestionMappedAutocsatId", Area: "cc", Group: "ai-feature", Command: "delete-question-mapped-autocsat-id", - Summary: "Delete specific Question mapped to AutoCSAT by ID", - Description: "Delete an existing Auto CSAT mapped Question by ID in a given organization.", - Method: "DELETE", Path: "/organization/{orgid}/ai-feature/auto-csat/question/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Auto CSAT mapped Question."}, - }, -} - -var CCAiFeatureListQuestionMappedAutocsat = &Operation{ - ID: "CCAiFeatureListQuestionMappedAutocsat", Area: "cc", Group: "ai-feature", Command: "list-question-mapped-autocsat", - Summary: "List Question mapped to AutoCSAT(s)", - Description: "Retrieve a list of Auto CSAT mapped Question(s) in a given organization.", - Method: "GET", Path: "/organization/{orgid}/v2/ai-feature/auto-csat/question", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "filter", In: InQuery, Flag: "filter", Usage: "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime \n\nThe examples below show some search queries\n- id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\n- id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide.\n\nNote: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter.\n"}, - {Name: "attributes", In: InQuery, Flag: "attributes", Usage: "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported.(id, questionId, questionnaireId)"}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCAgentPersonalGreetingFilesCreate = &Operation{ - ID: "CCAgentPersonalGreetingFilesCreate", Area: "cc", Group: "agent-personal-greeting-files", Command: "create", - Aliases: []string{"create-v2-api"}, - Summary: "Create a new Greeting File", - Description: "Create a new Greeting File in a given organization.", - Method: "POST", Path: "/organization/{orgid}/v2/agent-personal-greeting", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{}, -} - -var CCAgentPersonalGreetingFilesDeleteReferences = &Operation{ - ID: "CCAgentPersonalGreetingFilesDeleteReferences", Area: "cc", Group: "agent-personal-greeting-files", Command: "delete-references", - Aliases: []string{"delete-references-1"}, - Summary: "Delete references of an agent from greeting files", - Description: "Removes all references of the specified agent (ciUserId) from greeting files in the given organization. Typically invoked when an agent is deleted or unassigned. in a given organization.", - Method: "POST", Path: "/organization/{orgid}/agent-personal-greeting/delete-reference", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid"}, - }, - Body: &Body{}, -} - -var CCAgentPersonalGreetingFilesGet = &Operation{ - ID: "CCAgentPersonalGreetingFilesGet", Area: "cc", Group: "agent-personal-greeting-files", Command: "get", - Aliases: []string{"get-id", "get-id-v2-api"}, - Summary: "Get specific Greeting File by ID", - Description: "Retrieve an existing Greeting File by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/v2/agent-personal-greeting/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Greeting File."}, - {Name: "includeUrl", In: InQuery, Flag: "include-url", Usage: "Indicates whether the URL for downloading the greeting file should be included in the response."}, - }, -} - -var CCAgentPersonalGreetingFilesUpdate = &Operation{ - ID: "CCAgentPersonalGreetingFilesUpdate", Area: "cc", Group: "agent-personal-greeting-files", Command: "update", - Aliases: []string{"update-id", "update-id-v2-api"}, - Summary: "Update specific Greeting File by ID", - Description: "Update an existing Greeting File by ID in a given organization.", - Method: "PUT", Path: "/organization/{orgid}/v2/agent-personal-greeting/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Greeting File."}, - }, - Body: &Body{}, -} - -var CCAgentPersonalGreetingFilesDelete = &Operation{ - ID: "CCAgentPersonalGreetingFilesDelete", Area: "cc", Group: "agent-personal-greeting-files", Command: "delete", - Aliases: []string{"delete-id", "delete-id-v2-api"}, - Summary: "Delete specific Greeting File by ID", - Description: "Delete an existing Greeting File by ID in a given organization.", - Method: "DELETE", Path: "/organization/{orgid}/v2/agent-personal-greeting/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Greeting File."}, - }, -} - -var CCAgentPersonalGreetingFilesPatch = &Operation{ - ID: "CCAgentPersonalGreetingFilesPatch", Area: "cc", Group: "agent-personal-greeting-files", Command: "patch", - Aliases: []string{"patch-id", "patch-id-v2-api"}, - Summary: "Partially update Greeting File by ID", - Description: "Partially update Greeting File by ID in a given organization.", - Method: "PATCH", Path: "/organization/{orgid}/v2/agent-personal-greeting/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Greeting File."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "attributeTag", Flag: "attribute-tag", Type: "string"}, - {Name: "greetingPurposeId", Flag: "greeting-purpose-id", Type: "string"}, - }}, -} - -var CCAgentPersonalGreetingFilesList = &Operation{ - ID: "CCAgentPersonalGreetingFilesList", Area: "cc", Group: "agent-personal-greeting-files", Command: "list", - Summary: "List Greeting Files", - Description: "Retrieve a list of Greeting Files in a given organization.", - Method: "GET", Path: "/organization/{orgid}/v3/agent-personal-greeting", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "filter", In: InQuery, Flag: "filter", Usage: "Specify a filter based on which the results will be fetched. Supported fields are: firstName, lastName, email, ciUserId, and attributeTag.\n\nThe examples below show some search queries\n- id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\n- id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide.\n\nNote: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter.\n"}, - {Name: "search", In: InQuery, Flag: "search", Usage: "Filter data based on the search keyword.Supported search columns(firstName, lastName, email, attributeTag)\n\nThe examples below show some search queries\n- \"Cisco\"\n- field==\"firstName\";value==\"Cisco\"\n- fields=in=(\"firstName\",\"email\");value==\"Cisco\"\n"}, - {Name: "attributes", In: InQuery, Flag: "attributes", Usage: "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - {Name: "includeAgentDetails", In: InQuery, Flag: "include-agent-details", Usage: "If includeAgentDetails is set to true, projection, filtering, searching, and sorting on the agent's firstName, lastName, and email will be enabled."}, - }, - Paging: &Paging{}, -} - -var CCJourneyCustomerIdentificationDeletePersonId = &Operation{ - ID: "CCJourneyCustomerIdentificationDeletePersonId", Area: "cc", Group: "journey-customer-identification", Command: "delete-person-id", - Summary: "Delete specific Person by id", - Description: "Delete Person Details searched by Person id in JDS. \n\nRole and Scope: Requires id full admin or any role with cjp:config_write scope", - Method: "DELETE", Path: "/admin/v1/api/person/workspace-id/{workspaceId}/person-id/{personId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Workspace ID"}, - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Person ID"}, - }, -} - -var CCJourneyCustomerIdentificationCreateRemoveReplacePerson = &Operation{ - ID: "CCJourneyCustomerIdentificationCreateRemoveReplacePerson", Area: "cc", Group: "journey-customer-identification", Command: "create-remove-replace-person", - Summary: "Add/Remove/Replace details of a Person", - Description: "The Patch Api can be used to add/remove identities (email, phone, customerId, temporaryId, and socialId) or replace firstName and lastName of an Individual. We support only add, replace, and remove operations. \n\nFor more information on Patch Requests, see this [JSON PATCH guide](https://jsonpatch.com). \n\nRole and Scope: Requires id full admin role with cjp:config_write or any role with cjp:user or cjp:config_write scope.", - Method: "PATCH", Path: "/admin/v1/api/person/workspace-id/{workspaceId}/person-id/{personId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Workspace ID"}, - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Person ID"}, - }, - Body: &Body{}, -} - -var CCJourneyCustomerIdentificationCreateOneMoreIdentitiesPerson = &Operation{ - ID: "CCJourneyCustomerIdentificationCreateOneMoreIdentitiesPerson", Area: "cc", Group: "journey-customer-identification", Command: "create-one-more-identities-person", - Summary: "Add one/more Identities to a person", - Description: "This Patch Api can be used to add identities(email, phone, customerId) to a person.\n\nRole and Scope: Requires id full admin or any role with cjp:config_write scope.", - Method: "PATCH", Path: "/admin/v1/api/person/add-identities/workspace-id/{workspaceId}/person-id/{personId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Workspace ID"}, - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Person ID"}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "phone", Flag: "phone", Type: "[]string"}, - {Name: "email", Flag: "email", Type: "[]string"}, - {Name: "temporaryId", Flag: "temporary-id", Type: "[]string"}, - {Name: "customerId", Flag: "customer-id", Type: "[]string"}, - }}, -} - -var CCJourneyCustomerIdentificationDeleteOneMoreIdentitiesPerson = &Operation{ - ID: "CCJourneyCustomerIdentificationDeleteOneMoreIdentitiesPerson", Area: "cc", Group: "journey-customer-identification", Command: "delete-one-more-identities-person", - Summary: "Remove one/more Identities from a person", - Description: "This Patch Api can be used to remove identities(email, phone, customerId) from a person.\n\nRole and Scope: Requires id full admin or any role with cjp:config_write scope.", - Method: "PATCH", Path: "/admin/v1/api/person/remove-identities/workspace-id/{workspaceId}/person-id/{personId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Workspace ID"}, - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Person ID"}, - }, - Body: &Body{}, -} - -var CCJourneyCustomerIdentificationGetAllPerson = &Operation{ - ID: "CCJourneyCustomerIdentificationGetAllPerson", Area: "cc", Group: "journey-customer-identification", Command: "get-all-person", - Summary: "Get all or a specific Person Details", - Description: "Get Person Details in JDS. If personId is provided by query parameter, this returns the Person whose personId matches the parameter.\nIf not, this will return ALL the Persons within the organization and workspace. \n\nRole and Scope: Requires id full admin role with cjp:config_write or cjp:config_read scope. Or it requires any role with cjp:user, cjp:config_write or cjp:config_read scope.", - Method: "GET", Path: "/admin/v1/api/person/workspace-id/{workspaceId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Workspace ID"}, - {Name: "personId", In: InQuery, Flag: "person-id", Usage: "Person ID"}, - {Name: "filter", In: InQuery, Flag: "filter", Usage: "Optional filter which can be applied to the elements to be fetched. \n\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see [this reference](https://developer.here.com/documentation/data-client-library/dev_guide/client/rsql.html). For a list of supported operators, see this [syntax guide](https://github.com/perplexhub/rsql-jpa-specification#rsql-syntax-reference)."}, - {Name: "sortBy", In: InQuery, Flag: "sort-by", Usage: "Sort By Field"}, - {Name: "sort", In: InQuery, Flag: "sort", Usage: "Sort direction"}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Index of the page of results to be fetched.\n\nResults are returned in blocks of pageSize elements. This parameter specifies which page number to retrieve. The page numbering starts with 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Number of items to be displayed on a page"}, - }, - Paging: &Paging{}, -} - -var CCJourneyCustomerIdentificationCreatePerson = &Operation{ - ID: "CCJourneyCustomerIdentificationCreatePerson", Area: "cc", Group: "journey-customer-identification", Command: "create-person", - Summary: "Create a Person", - Description: "This API helps to create a Person in JDS.\n\nRole and Scope: Requires id full admin OR any role with cjp:config_write scope.", - Method: "POST", Path: "/admin/v1/api/person/workspace-id/{workspaceId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Workspace ID"}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "firstName", Flag: "first-name", Type: "string"}, - {Name: "lastName", Flag: "last-name", Type: "string"}, - {Name: "phone", Flag: "phone", Type: "[]string"}, - {Name: "email", Flag: "email", Type: "[]string"}, - {Name: "temporaryId", Flag: "temporary-id", Type: "[]string"}, - {Name: "customerId", Flag: "customer-id", Type: "[]string"}, - }}, -} - -var CCJourneyCustomerIdentificationMergesIdentitiesPrimaryIdentity = &Operation{ - ID: "CCJourneyCustomerIdentificationMergesIdentitiesPrimaryIdentity", Area: "cc", Group: "journey-customer-identification", Command: "merges-identities-primary-identity", - Summary: "Merges Identities to a Primary Identity", - Description: "Merges one/more Identities to a **Primary** Individual in JDS. \n\nRole and Scope: Requires id full admin role with cjp:config_write scope.", - Method: "POST", Path: "/admin/v1/api/person/merge/workspace-id/{workspaceId}/primary-person-id/{primaryPersonId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Workspace ID"}, - {Name: "primaryPersonId", In: InPath, Flag: "primary-person-id", Usage: "Primary Person ID"}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "personIdsToMerge", Flag: "person-ids-to-merge", Type: "[]string"}, - }}, -} - -var CCJourneyCustomerIdentificationCreatesMergesAliasesIndividualJds = &Operation{ - ID: "CCJourneyCustomerIdentificationCreatesMergesAliasesIndividualJds", Area: "cc", Group: "journey-customer-identification", Command: "creates-merges-aliases-individual-jds", - Summary: "Creates or merges aliases to an Individual in JDS", - Description: "This API enables you to consolidate multiple customer identifiers into a single, unified profile effortlessly. By integrating it with your Flow Designer, you can automatically retrieve and merge customer identifiers from various systems, such as your CRM or other third-party tools. This integration ensures all relevant data is consolidated into one profile, enhancing personalization and streamlining customer interactions. \n\n**Adding a New Alias** - To associate an additional alias (e.g., a new phone number) with an existing customer profile, simply update the API with the new identifier while leaving the existing identifiers intact. The system will automatically merge the new alias into the current profile, maintaining a comprehensive view of the customer.\n\n**Removing an Alias** - If you need to delete an alias from a customer’s profile, set the override flag to true in your API request. Include only the identifiers you wish to retain in the payload. The system will remove any identifiers not included in the updated payload, keeping the profile streamlined and up-to-date.\n\nRole and Scope: Requires id full admin OR any role with cjp:config_write scope.", - Method: "POST", Path: "/admin/v1/api/person/merge-identities/workspace-id/{workspaceId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Workspace ID"}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "override", Flag: "override", Type: "bool"}, - {Name: "firstName", Flag: "first-name", Type: "string"}, - {Name: "lastName", Flag: "last-name", Type: "string"}, - {Name: "phone", Flag: "phone", Type: "[]string"}, - {Name: "email", Flag: "email", Type: "[]string"}, - {Name: "temporaryId", Flag: "temporary-id", Type: "[]string"}, - {Name: "customerId", Flag: "customer-id", Type: "[]string"}, - {Name: "socialId", Flag: "social-id", Type: "[]string"}, - }}, -} - -var CCJourneyCustomerIdentificationSearchIdentityAliases = &Operation{ - ID: "CCJourneyCustomerIdentificationSearchIdentityAliases", Area: "cc", Group: "journey-customer-identification", Command: "search-identity-aliases", - Summary: "Search for an Identity via aliases", - Description: "Get one or more Person Details searched by aliases in JDS. Multiple aliases should be separated by a comma.\n\nRole and Scope: Requires id full admin role with cjp:config_write or cjp:config_read scope. Or it requires any role with cjp:user, cjp:config_write or cjp:config_read scope.", - Method: "GET", Path: "/admin/v1/api/person/workspace-id/{workspaceId}/aliases/{aliases}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Workspace ID"}, - {Name: "aliases", In: InPath, Flag: "aliases", Usage: "Aliases to search for. Multiple aliases should be separated by a comma. \n\n In case the alias(es) contain(s) non-uri-encodable characters, eg: '+', '>' etc, you can URL-encode the same and then pass it as parameter."}, - {Name: "sortBy", In: InQuery, Flag: "sort-by", Usage: "Sort By Field"}, - {Name: "sort", In: InQuery, Flag: "sort", Usage: "Sort direction"}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Index of the page of results to be fetched.\n\nResults are returned in blocks of pageSize elements. This parameter specifies which page number to retrieve.The page numbering starts with 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Number of items to be displayed on a page."}, - }, - Paging: &Paging{}, -} - -var CCJourneyDataIngestionEventPosting = &Operation{ - ID: "CCJourneyDataIngestionEventPosting", Area: "cc", Group: "journey-data-ingestion", Command: "event-posting", - Summary: "Journey Event Posting", - Description: "Journey Event Posting API accepts events that describe what occurred, when, and by whom on every interaction across touch points and applications. Data Ingestion is based on Cloud Events specification for describing event data in a common way. API accepts data in the form of POST with support for Header based authorization. \n\nRole and Scope: Requires id full admin role with cjds:admin_org_write or any role with cjp:config_write scope.", - Method: "POST", Path: "/publish/v1/api/event", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InQuery, Flag: "workspace-id", Usage: "Workspace ID"}, - }, - Body: &Body{}, -} - -var CCJourneyProfileCreationInsightsGetTemplateSearchedTemplateId = &Operation{ - ID: "CCJourneyProfileCreationInsightsGetTemplateSearchedTemplateId", Area: "cc", Group: "journey-profile-creation-insights", Command: "get-template-searched-template-id", - Summary: "Get A specific Template searched by template id", - Description: "Get Template details by template Id in JDS. \n\nRole and Scope: Requires id full admin role with cjp:config_write or cjp:config_read scope. Or requires any role with cjp:user, cjp:config_write or cjp:config_write scope.", - Method: "GET", Path: "/admin/v1/api/profile-view-template/workspace-id/{workspaceId}/template-id/{templateId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Workspace ID"}, - {Name: "templateId", In: InPath, Flag: "template-id", Usage: "Template ID"}, - }, -} - -var CCJourneyProfileCreationInsightsUpdateProfileviewtemplate = &Operation{ - ID: "CCJourneyProfileCreationInsightsUpdateProfileviewtemplate", Area: "cc", Group: "journey-profile-creation-insights", Command: "update-profileviewtemplate", - Summary: "Update existing ProfileViewTemplate", - Description: "Update existing Profile View Template in JDS. \n\nRole and Scope: Requires id full admin or any role with cjp:config_write scope.", - Method: "PUT", Path: "/admin/v1/api/profile-view-template/workspace-id/{workspaceId}/template-id/{templateId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Workspace ID"}, - {Name: "templateId", In: InPath, Flag: "template-id", Usage: "Template ID"}, - }, - Body: &Body{}, -} - -var CCJourneyProfileCreationInsightsDeleteTemplateTemplateId = &Operation{ - ID: "CCJourneyProfileCreationInsightsDeleteTemplateTemplateId", Area: "cc", Group: "journey-profile-creation-insights", Command: "delete-template-template-id", - Summary: "Delete Template by template Id", - Description: "Delete Template By template id in JDS. \n\nRole and Scope: Requires id full admin or any role with cjp:config_write scope.", - Method: "DELETE", Path: "/admin/v1/api/profile-view-template/workspace-id/{workspaceId}/template-id/{templateId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Workspace ID"}, - {Name: "templateId", In: InPath, Flag: "template-id", Usage: "Template ID"}, - }, -} - -var CCJourneyProfileCreationInsightsGetAllTemplate = &Operation{ - ID: "CCJourneyProfileCreationInsightsGetAllTemplate", Area: "cc", Group: "journey-profile-creation-insights", Command: "get-all-template", - Summary: "Get All Template Details", - Description: "Get Template details by Organization Id and workspaceId in JDS. \n\nRole and Scope: Requires id full admin role with cjp:config_write or cjp:config_read scope. Or requires any role with cjp:user, cjp:config_write or cjp:config_read scope.", - Method: "GET", Path: "/admin/v1/api/profile-view-template/workspace-id/{workspaceId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Workspace ID"}, - {Name: "filter", In: InQuery, Flag: "filter", Usage: "Optional filter which can be applied to the elements to be fetched. \n\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see [this reference](https://developer.here.com/documentation/data-client-library/dev_guide/client/rsql.html). For a list of supported operators, see this [syntax guide](https://github.com/perplexhub/rsql-jpa-specification#rsql-syntax-reference)."}, - {Name: "sort", In: InQuery, Flag: "sort", Usage: "Sort direction"}, - {Name: "sortBy", In: InQuery, Flag: "sort-by", Usage: "Sort By Field"}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Index of the page of results to be fetched.\n\nResults are returned in blocks of pageSize elements. This parameter specifies which page number to retrieve.The page numbering starts with 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Number of items to be displayed on a page."}, - }, - Paging: &Paging{}, -} - -var CCJourneyProfileCreationInsightsCreateTemplate = &Operation{ - ID: "CCJourneyProfileCreationInsightsCreateTemplate", Area: "cc", Group: "journey-profile-creation-insights", Command: "create-template", - Summary: "Create Template", - Description: "Creates a Profile View Template in JDS. \n\n **Role and Scope**: Requires id full admin or any role with cjp:config_write scope.\n\n **Template with single rule**: \n ```\n {\n \"name\": \"ClosedCaller\",\n \"attributes\": [\n {\n \"version\": \"0.1\",\n \"event\": \"Closed Queue\",\n \"metaDataType\": \"string\",\n \"metaData\": \"category\",\n \"limit\": 100,\n \"displayName\": \"ClosedCaller\",\n \"lookBackDurationType\": \"minutes\",\n \"lookBackPeriod\": 5,\n \"aggregationMode\": \"Count\",\n \"rules\": {\n \"logic\": \"SINGLE\",\n \"condition\": \"Closed Queue,category,string,Value EQ Closed\"\n },\n \"widgetAttributes\": {\n \"type\": \"table\"\n },\n \"verbose\": false\n }\n ]\n }\n ```\n\n\n **Example Event:** \n ```\n {\n \"id\": \"{{$guid}}\",\n \"specversion\": \"1.0\",\n \"type\": \"Closed Queue\",\n \"source\": \"Voice%20Contact\",\n \"identity\": \"jes@gmail.com\",\n \"identitytype\": \"email\",\n \"datacontenttype\": \"application/json\",\n \"data\": {\n \"Email\": \"jes@gmail.com\",\n \"CallsQueuedNow\": \"Use GetQueueInfoNode Values\",\n \"OldestCallTime\": \"Use GetQueueInfoNode Values\",\n \"LoggedOnAgents\": \"Use GetQueueInfoNode Values\",\n \"PIQ\": \"Use GetQueueInfoNode Values\",\n \"EWT\": \"Use GetQueueInfoNode Values\",\n \"category\": \"Closed\",\n \"origin\": \"Past Due - 1st Notification\",\n \"channelType\": \"QueueCall\",\n \"channelBreakout\": \"voice\"\n }\n }\n ```\n\n\n **Key components of the rule:** \n * template.event: This refers to the specific event type you want to match (e.g., \"Closed Queue\").\n * event.type: This refers to the actual event type present in the event data.\n * event.data: This is the dictionary/object containing all the metadata associated with the event.\n * template.rules.condition - category: This is the specific metadata field you want to compare within event.data.\n * template.rules.condition - string: This indicates that the category metadata is a string type.\n * template.rules.condition - Value EQ Closed: This defines the condition: the value of the category field (as a string) must be equal to \"Closed\".\n\n\n **Evaluation process:** \n 1. The rule checks if template.event matches the event.type in the incoming event.\n 2. If they match, the rule retrieves the value of the category field from event.data.\n 3. It then compares the value of category (treated as a string) to \"Closed\" using an equality operator (EQ).\n 4. If the values are equal, the condition evaluates to True and creates a progressive profile for the identity. Otherwise, it evaluates to False.\n \n The template has lookBackPeriod and lookBackDurationType which decide how long to look back for the calculation. In the above template, it fetches events triggered in the last 5 minutes and performs the aggregation mode on the data received from rules.\n \n * When the aggregation mode is Value, the profile result will have the value of the rule as the output.\n * When the aggregation mode is Count, the profile will have the count of events with category closed in the past 5 minutes.\n * When the aggregation mode is Distinct, the profile will have the value closed.\n * When aggregation mode is Sum, the data type should be Integer or double and it will be the sum of all matching values in the last 5 minutes.\n * When aggregation mode is Max, the data type should be Integer or double and it will be the max of all matching values in the last 5 minutes.\n * When aggregation mode is Min, the data type should be Integer or double and it will be the min of all matching values in the last 5 minutes.\n * When aggregation mode is Average, the data type should be Integer or double and it will be the average of all matching values in the last 5 minutes.\n\n\n **Example template with multiple rules :** \n ```\n1. {\n2. \"name\": \"sample-template-multi-condition\",\n3. \"attributes\": [\n4. {\n5. \"version\": \"0.1\",\n6. \"event\": \"Quote\",\n7. \"metaDataType\": \"string\",\n8. \"metaData\": \"email\",\n9. \"limit\": 1,\n10. \"displayName\": \"Email\",\n11. \"lookBackDurationType\": \"days\",\n12. \"lookBackPeriod\": 50,\n13. \"aggregationMode\": \"Value\",\n14. \"rules\": {\n15. \"args\": [\n16. \"Quote,isEV,string,Value EQ Yes\",\n17. \"Quote,isEV,string,Value EQ No\",\n18. {\n19. \"args\": [\n20. \"Quote,make,string,Value EQ Honda\",\n21. \"Quote,model,string,Value EQ CR-V\"\n22. ],\n23. \"logic\": \"AND\"\n24. }\n25. ],\n26. \"logic\": \"OR\"\n27. },\n28. \"widgetAttributes\": {\n29. \"type\": \"table\"\n30. },\n31. \"verbose\": false\n32. }\n33. ]\n34. }\n ```\n1. In the above template we have multiple rules.\n2. The arguments in line 20 and 21 are evaluated with logical AND condition.\n3. Then arguments in line 16 and 17 along with the result for 20 AND 21 are evaluated with logical OR (line 26).\n", - Method: "POST", Path: "/admin/v1/api/profile-view-template/workspace-id/{workspaceId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Workspace ID"}, - }, - Body: &Body{}, -} - -var CCJourneyProfileCreationInsightsGetTemplateSearchedTemplateName = &Operation{ - ID: "CCJourneyProfileCreationInsightsGetTemplateSearchedTemplateName", Area: "cc", Group: "journey-profile-creation-insights", Command: "get-template-searched-template-name", - Summary: "Get A specific Template searched by template name", - Description: "Get Template details by template Name in JDS. \n\nRole and Scope: Requires id full admin role with cjp:config_write or cjp:config_read scope. Or requires any role with cjp:user, cjp:config_write or cjp:config_read scope.", - Method: "GET", Path: "/admin/v1/api/profile-view-template/workspace-id/{workspaceId}/template-name/{templateName}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Workspace ID"}, - {Name: "templateName", In: InPath, Flag: "template-name", Usage: "Template Name"}, - }, -} - -var CCJourneyProfileCreationInsightsGetHistoricViewTemplateName = &Operation{ - ID: "CCJourneyProfileCreationInsightsGetHistoricViewTemplateName", Area: "cc", Group: "journey-profile-creation-insights", Command: "get-historic-view-template-name", - Summary: "Historic Progressive Profile View by Template Name", - Description: "Get Historic Progressive Profile View in JDS. \n\nRole and Scope: Requires id full admin role with cjds:admin_org_write or cjds:admin_org_read scope. Or requires any role with cjp:user, cjp:config_write or cjp:config_read scope.", - Method: "GET", Path: "/v1/api/progressive-profile-view/workspace-id/{workspaceId}/person-id/{personId}/template-name/{templateName}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Workspace ID"}, - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Person ID"}, - {Name: "templateName", In: InPath, Flag: "template-name", Usage: "Template Name"}, - }, -} - -var CCJourneyProfileCreationInsightsGetHistoricView = &Operation{ - ID: "CCJourneyProfileCreationInsightsGetHistoricView", Area: "cc", Group: "journey-profile-creation-insights", Command: "get-historic-view", - Summary: "Historic Progressive Profile View", - Description: "Get Historic Progressive Profile View in JDS. \n\nRole and Scope: Requires id full admin role with cjds:admin_org_write or cjds:admin_org_read scope. Or requires any role with cjp:user, cjp:config_write or cjp:config_read scope.", - Method: "GET", Path: "/v1/api/progressive-profile-view/workspace-id/{workspaceId}/person-id/{personId}/template-id/{templateId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Workspace ID"}, - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Person ID"}, - {Name: "templateId", In: InPath, Flag: "template-id", Usage: "Template ID"}, - }, -} - -var CCJourneyProfileCreationInsightsGetHistoricViewTemplateName2 = &Operation{ - ID: "CCJourneyProfileCreationInsightsGetHistoricViewTemplateName2", Area: "cc", Group: "journey-profile-creation-insights", Command: "get-historic-view-template-name-2", - Summary: "Historic Progressive Profile View By Template Name", - Description: "Get Historic Progressive Profile View in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_read or cjds:admin_org_write scopes or cjp:config_read or cjp:config_write scopes", - Method: "GET", Path: "/v1/api/progressive-profile-view/workspace-id/{workspaceId}/identity/{identity}/template-name/{templateName}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Workspace ID"}, - {Name: "identity", In: InPath, Flag: "identity", Usage: "Identity"}, - {Name: "templateName", In: InPath, Flag: "template-name", Usage: "Template Name"}, - }, -} - -var CCJourneyProfileCreationInsightsGetHistoricViewTemplateId = &Operation{ - ID: "CCJourneyProfileCreationInsightsGetHistoricViewTemplateId", Area: "cc", Group: "journey-profile-creation-insights", Command: "get-historic-view-template-id", - Summary: "Historic Progressive Profile View By Template Id", - Description: "Get Historic Progressive Profile View in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_read or cjds:admin_org_write scopes or cjp:config_read or cjp:config_write scopes", - Method: "GET", Path: "/v1/api/progressive-profile-view/workspace-id/{workspaceId}/identity/{identity}/template-id/{templateId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Workspace ID"}, - {Name: "identity", In: InPath, Flag: "identity", Usage: "identity"}, - {Name: "templateId", In: InPath, Flag: "template-id", Usage: "Template ID"}, - }, -} - -var CCJourneyProfileCreationInsightsStreamViewsTemplateName = &Operation{ - ID: "CCJourneyProfileCreationInsightsStreamViewsTemplateName", Area: "cc", Group: "journey-profile-creation-insights", Command: "stream-views-template-name", - Summary: "Stream Progressive profile Views By Template Name", - Description: "Real-time streaming enables API consumers to listen for Progressive profile Views as it created/updated as part of the Journey; these may be transformed, value-added/enriched, and ready to be consumed or forwarded to another destination. \n\nRole and Scope: Requires id full admin role with cjds:admin_org_write or cjds:admin_org_read scope. Or requires any role with cjp:user, cjp:config_write or cjp:config_read scope.", - Method: "GET", Path: "/v1/api/progressive-profile-view/stream/workspace-id/{workspaceId}/identity/{identity}/template-name/{templateName}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Workspace ID"}, - {Name: "identity", In: InPath, Flag: "identity", Usage: "Identity to search Progressive Profile View for. \n\n In case the identity contains non-uri-encodable characters, eg: '+', '>' etc, you can URL-encode the same and then pass it as parameter."}, - {Name: "templateName", In: InPath, Flag: "template-name", Usage: "Template Name"}, - }, -} - -var CCJourneyProfileCreationInsightsStreamViewsTemplateId = &Operation{ - ID: "CCJourneyProfileCreationInsightsStreamViewsTemplateId", Area: "cc", Group: "journey-profile-creation-insights", Command: "stream-views-template-id", - Summary: "Stream Progressive profile Views By Template Id", - Description: "Real-time streaming enables API consumers to listen for Progressive profile Views as it created/updated as part of the Journey; these may be transformed, value-added/enriched, and ready to be consumed or forwarded to another destination. \n\nRole and Scope: Requires id full admin role with cjds:admin_org_write or cjds:admin_org_read scope. Or requires any role with cjp:user, cjp:config_write or cjp:config_read scope.", - Method: "GET", Path: "/v1/api/progressive-profile-view/stream/workspace-id/{workspaceId}/identity/{identity}/template-id/{templateId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Workspace ID"}, - {Name: "identity", In: InPath, Flag: "identity", Usage: "Identity to search Progressive Profile View for. \n\n In case the identity contains non-uri-encodable characters, eg: '+', '>' etc, you can URL-encode the same and then pass it as parameter."}, - {Name: "templateId", In: InPath, Flag: "template-id", Usage: "Template ID"}, - }, -} - -var CCJourneyProfileCreationInsightsGetHistoricEvents = &Operation{ - ID: "CCJourneyProfileCreationInsightsGetHistoricEvents", Area: "cc", Group: "journey-profile-creation-insights", Command: "get-historic-events", - Summary: "Historic Journey Events", - Description: "Getting Historic Customer Journey Events from Pinot. These events are append-only, immutable data ledger that can be queried to retrieve snapshot of latest events that moment in time or historically to play-back events as they occurred to understand or analyze Journeys using ML/AI models. \n\nRole and Scope: Requires id full admin role with cjds:admin_org_write or cjds:admin_org_read scope. Or requires any role with cjp:user, cjp:config_write or cjp:config_read scope.", - Method: "GET", Path: "/v1/api/events/workspace-id/{workspaceId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Workspace ID"}, - {Name: "identity", In: InQuery, Flag: "identity", Usage: "Identity to search events for. \n\n In case the identity contains non-uri-encodable characters, eg: '+', '>' etc, you can URL-encode the same and then pass it as parameter."}, - {Name: "sortBy", In: InQuery, Flag: "sort-by", Usage: "sort By Field"}, - {Name: "sort", In: InQuery, Flag: "sort", Usage: "sort direction"}, - {Name: "filter", In: InQuery, Flag: "filter", Usage: "Optional filter which can be applied to the elements to be fetched.\n\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see [this reference](https://developer.here.com/documentation/data-client-library/dev_guide/client/rsql.html). For a list of supported operators, see this [syntax guide](https://github.com/perplexhub/rsql-jpa-specification#rsql-syntax-reference)."}, - {Name: "data", In: InQuery, Flag: "data", Usage: "Optional filter on data filed which can be applied to the elements to be fetched.\n\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see [this reference](https://developer.here.com/documentation/data-client-library/dev_guide/client/rsql.html). For a list of supported operators, see this [syntax guide](https://github.com/perplexhub/rsql-jpa-specification#rsql-syntax-reference)."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Index of the page of results to be fetched.\n\nResults are returned in blocks of pageSize elements. This parameter specifies which page number to retrieve.The page numbering starts with 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Number of items to be displayed on a page."}, - }, - Paging: &Paging{}, -} - -var CCJourneyProfileCreationInsightsStreamEventsIdentity = &Operation{ - ID: "CCJourneyProfileCreationInsightsStreamEventsIdentity", Area: "cc", Group: "journey-profile-creation-insights", Command: "stream-events-identity", - Summary: "Stream Events By Identity", - Description: "Real-time streaming enables API consumers to listen for events as it arrives as part of the Journey; these may be transformed, value-added/enriched, and ready to be consumed or forwarded to another destination. Optionally accepts filter and data parameters slice/dice further. \n\nRole and Scope: Requires id full admin role with cjds:admin_org_write or cjds:admin_org_read scope. Or requires any role with cjp:user, cjp:config_write or cjp:config_read scope.", - Method: "GET", Path: "/v1/api/events/stream/workspace-id/{workspaceId}/identity/{identity}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Workspace ID"}, - {Name: "identity", In: InPath, Flag: "identity", Usage: "Person Identity. \n\n In case the identity contains non-uri-encodable characters, eg: '+', '>' etc, you can URL-encode the same and then pass it as parameter."}, - {Name: "filter", In: InQuery, Flag: "filter", Usage: "Optional filter which can be applied to the elements to be fetched.\n\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see [this reference](https://developer.here.com/documentation/data-client-library/dev_guide/client/rsql.html). For a list of supported operators, see this [syntax guide](https://github.com/perplexhub/rsql-jpa-specification#rsql-syntax-reference)."}, - {Name: "data", In: InQuery, Flag: "data", Usage: "Optional filter on data filed which can be applied to the elements to be fetched.\n\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see [this reference](https://developer.here.com/documentation/data-client-library/dev_guide/client/rsql.html). For a list of supported operators, see this [syntax guide](https://github.com/perplexhub/rsql-jpa-specification#rsql-syntax-reference)."}, - }, -} - -var CCJourneySubscriptionGetWxcc = &Operation{ - ID: "CCJourneySubscriptionGetWxcc", Area: "cc", Group: "journey-subscription", Command: "get-wxcc", - Summary: "Get WXCC Subscription", - Description: "Get WXCC Subscription in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_read or cjds:admin_org_write scopes or cjp:config_read or cjp:config_write scopes", - Method: "GET", Path: "/admin/v1/api/wxcc-subscription/workspace-id/{workspaceId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Workspace ID"}, - }, -} - -var CCJourneySubscriptionCreateWxcc = &Operation{ - ID: "CCJourneySubscriptionCreateWxcc", Area: "cc", Group: "journey-subscription", Command: "create-wxcc", - Summary: "Create WXCC Subscription", - Description: "Create WXCC Subscription in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_write or cjp:config_write scopes", - Method: "POST", Path: "/admin/v1/api/wxcc-subscription/workspace-id/{workspaceId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Workspace ID"}, - }, -} - -var CCJourneySubscriptionDeleteWxcc = &Operation{ - ID: "CCJourneySubscriptionDeleteWxcc", Area: "cc", Group: "journey-subscription", Command: "delete-wxcc", - Summary: "Delete WXCC Subscription", - Description: "Delete WXCC Subscription in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_write or cjp:config_write scopes", - Method: "DELETE", Path: "/admin/v1/api/wxcc-subscription/workspace-id/{workspaceId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Workspace ID"}, - }, -} - -var CCJourneyTriggerActionsGetAll = &Operation{ - ID: "CCJourneyTriggerActionsGetAll", Area: "cc", Group: "journey-trigger-actions", Command: "get-all", - Summary: "Get all Journey Actions", - Description: "Get all Journey Actions in JDS. \n\nRole and Scope: Requires id full admin or any role with cjp:config_write or cjp:config_read scope.", - Method: "GET", Path: "/admin/v1/api/journey-actions/workspace-id/{workspaceId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Workspace ID"}, - {Name: "sortBy", In: InQuery, Flag: "sort-by", Usage: "Sort By Field"}, - {Name: "sort", In: InQuery, Flag: "sort", Usage: "Sort direction"}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Index of the page of results to be fetched.\n\nResults are returned in blocks of pageSize elements. This parameter specifies which page number to retrieve. The page numbering starts with 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Number of items to be displayed on a page."}, - }, - Paging: &Paging{}, -} - -var CCJourneyTriggerActionsGetAllTemplate = &Operation{ - ID: "CCJourneyTriggerActionsGetAllTemplate", Area: "cc", Group: "journey-trigger-actions", Command: "get-all-template", - Summary: "Get all Journey Actions for a template", - Description: "Get all Journey Actions for a template in JDS. \n\nRole and Scope: It requires id full admin or any role with cjp:config_read or cjp:config_write scope.", - Method: "GET", Path: "/admin/v1/api/journey-actions/workspace-id/{workspaceId}/template-id/{templateId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Workspace ID"}, - {Name: "templateId", In: InPath, Flag: "template-id", Usage: "Template ID"}, - }, -} - -var CCJourneyTriggerActionsCreate = &Operation{ - ID: "CCJourneyTriggerActionsCreate", Area: "cc", Group: "journey-trigger-actions", Command: "create", - Summary: "Create a new Journey Action", - Description: "Create a new Journey Action in JDS. \n\n **Role and Scope**: It requires id full admin or any role with cjp:config_write scope.\n\n **Sample Input for Creating new Journey action**: \n ```\n {\n \"name\": \"Closed Queue Action\",\n \"cooldownPeriodInMinutes\": 1,\n \"rules\": {\n \"logic\": \"SINGLE\",\n \"condition\": \"Closed Queue,category,string,Value GTE 2\"\n },\n \"actionTriggers\": [\n {\n \"type\": \"Webhook\",\n \"webhookURL\": \"https://hooks.us.webexconnect.io/events/6M347NJ6\",\n \"attributes\": {\n \"httpverb\": \"post\",\n \"requestbody\": \"{\\\"SMS\\\":\\\"12263762551\\\",\\\"callID\\\":\\\"\\\",\\\"MessageToSend\\\":\\\"Hello there!\\\"}\"\n }\n }\n ],\n \"isActive\": true\n }\n ```\nThe action trigger's evaluation process is predicated on the progressive profile that has been established. \nIn this specific action trigger, the rule assessment verifies whether the progressive profile value from the prior template evaluation was in excess of 2. \nIf this condition is met, the webhook is subsequently activated.\n\n\nPrior to rule evaluation for actions, several conditions must be satisfied. \nFirstly, the event associated with the template must align with the rule event, which, in this case, is 'Closed Queue'. \nSecondly, the metadata assigned to the template must correspond with the metadata set by the rules, which in this context, is 'category'. \nThirdly, the aggregation mode of the template must be equivalent to the rules' aggregation mode, which is 'value' in this instance. \nFinally, the operator of the template's aggregation mode must match those defined for 'value'. \nIn this scenario, it is 'GTE' (greater than or equal), which is an accepted value for 'value'.\n", - Method: "POST", Path: "/admin/v1/api/journey-actions/workspace-id/{workspaceId}/template-id/{templateId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Workspace ID"}, - {Name: "templateId", In: InPath, Flag: "template-id", Usage: "Template ID"}, - }, - Body: &Body{}, -} - -var CCJourneyTriggerActionsGetName = &Operation{ - ID: "CCJourneyTriggerActionsGetName", Area: "cc", Group: "journey-trigger-actions", Command: "get-name", - Summary: "Get specific Journey Action By Name", - Description: "Get specific Journey Action By Name in JDS. \n\nRole and Scope:It requires id full admin or any role with cjp:config_read or cjp:config_write scope.", - Method: "GET", Path: "/admin/v1/api/journey-actions/workspace-id/{workspaceId}/template-id/{templateId}/action-name/{actionName}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Workspace ID"}, - {Name: "templateId", In: InPath, Flag: "template-id", Usage: "Template ID"}, - {Name: "actionName", In: InPath, Flag: "action-name", Usage: "Action Name"}, - }, -} - -var CCJourneyTriggerActionsGetActionid = &Operation{ - ID: "CCJourneyTriggerActionsGetActionid", Area: "cc", Group: "journey-trigger-actions", Command: "get-actionid", - Summary: "Get specific Journey Action By ActionId", - Description: "Get specific Journey Action By ActionId in JDS. \n\nRole and Scope: It requires id full admin role with cjp:config_read or cjp:config_write scope.", - Method: "GET", Path: "/admin/v1/api/journey-actions/workspace-id/{workspaceId}/template-id/{templateId}/action-id/{actionId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Workspace ID"}, - {Name: "templateId", In: InPath, Flag: "template-id", Usage: "Template ID"}, - {Name: "actionId", In: InPath, Flag: "action-id", Usage: "Action ID"}, - }, -} - -var CCJourneyTriggerActionsUpdate = &Operation{ - ID: "CCJourneyTriggerActionsUpdate", Area: "cc", Group: "journey-trigger-actions", Command: "update", - Summary: "Update existing Journey Action", - Description: "Update existing Journey Action in JDS. \n\nRole and Scope: It requires id full admin or any role with cjp:config_write scope.", - Method: "PUT", Path: "/admin/v1/api/journey-actions/workspace-id/{workspaceId}/template-id/{templateId}/action-id/{actionId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Workspace ID"}, - {Name: "templateId", In: InPath, Flag: "template-id", Usage: "Template ID"}, - {Name: "actionId", In: InPath, Flag: "action-id", Usage: "Action ID"}, - }, - Body: &Body{}, -} - -var CCJourneyTriggerActionsDeleteConfigurationActionid = &Operation{ - ID: "CCJourneyTriggerActionsDeleteConfigurationActionid", Area: "cc", Group: "journey-trigger-actions", Command: "delete-configuration-actionid", - Summary: "Delete Journey Action configuration By ActionId", - Description: "Delete Journey Action configuration By ActionId in JDS. \n\nRole and Scope: It requires id full admin role with cjp:config_write scope.", - Method: "DELETE", Path: "/admin/v1/api/journey-actions/workspace-id/{workspaceId}/template-id/{templateId}/action-id/{actionId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Workspace ID"}, - {Name: "templateId", In: InPath, Flag: "template-id", Usage: "Template ID"}, - {Name: "actionId", In: InPath, Flag: "action-id", Usage: "Action ID"}, - }, -} - -var CCJourneyWorkspaceManagementGet = &Operation{ - ID: "CCJourneyWorkspaceManagementGet", Area: "cc", Group: "journey-workspace-management", Command: "get", - Summary: "Get Workspace", - Description: "Get workspace details. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_read or cjds:admin_org_write scopes or cjp:config_read or cjp:config_write scopes", - Method: "GET", Path: "/admin/v1/api/workspace/workspace-id/{workspaceId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Workspace ID"}, - }, -} - -var CCJourneyWorkspaceManagementUpdate = &Operation{ - ID: "CCJourneyWorkspaceManagementUpdate", Area: "cc", Group: "journey-workspace-management", Command: "update", - Summary: "Update Workspace", - Description: "Update workspace by Id. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_write or cjp:config_write scopes", - Method: "PUT", Path: "/admin/v1/api/workspace/workspace-id/{workspaceId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Workspace ID"}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "description", Flag: "description", Type: "string"}, - {Name: "name", Flag: "name", Type: "string"}, - }}, -} - -var CCJourneyWorkspaceManagementDelete = &Operation{ - ID: "CCJourneyWorkspaceManagementDelete", Area: "cc", Group: "journey-workspace-management", Command: "delete", - Summary: "Delete Workspace", - Description: "Delete Workspace By Id. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_write or cjp:config_write scopes", - Method: "DELETE", Path: "/admin/v1/api/workspace/workspace-id/{workspaceId}", Host: HostCC, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "Workspace ID"}, - }, -} - -var CCJourneyWorkspaceManagementGetAll = &Operation{ - ID: "CCJourneyWorkspaceManagementGetAll", Area: "cc", Group: "journey-workspace-management", Command: "get-all", - Summary: "Get All Workspaces", - Description: "Get All Workspaces. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_read or cjds:admin_org_write scopes or cjp:config_read or cjp:config_write scopes", - Method: "GET", Path: "/admin/v1/api/workspace", Host: HostCC, - Params: []Param{ - {Name: "filter", In: InQuery, Flag: "filter", Usage: "Optional filter which can be applied to the elements to be fetched. \n\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see [this reference](https://developer.here.com/documentation/data-client-library/dev_guide/client/rsql.html). For a list of supported operators, see this [syntax guide](https://github.com/perplexhub/rsql-jpa-specification#rsql-syntax-reference)."}, - {Name: "sortBy", In: InQuery, Flag: "sort-by", Usage: "Sort By Field"}, - {Name: "sort", In: InQuery, Flag: "sort", Usage: "Sort direction"}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Index of the page of results to be fetched.\n\nResults are returned in blocks of pageSize elements. This parameter specifies which page number to retrieve.The page numbering starts with 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Number of items to be displayed on a page."}, - }, - Paging: &Paging{}, -} - -var CCJourneyWorkspaceManagementCreate = &Operation{ - ID: "CCJourneyWorkspaceManagementCreate", Area: "cc", Group: "journey-workspace-management", Command: "create", - Summary: "Create Workspace", - Description: "Create Workspace in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope.It requires the appropriate cjds:admin_org_write or cjp:config_write scopes", - Method: "POST", Path: "/admin/v1/api/workspace", Host: HostCC, - Body: &Body{Fields: []BodyField{ - {Name: "description", Flag: "description", Type: "string"}, - {Name: "name", Flag: "name", Type: "string"}, - }}, -} - -var CCDncManagementCreatePhoneNumberList = &Operation{ - ID: "CCDncManagementCreatePhoneNumberList", Area: "cc", Group: "dnc-management", Command: "create-phone-number-list", - Summary: "Add Phone Number to DNC List", - Description: "Adds a phone number to the specified Do Not Contact (DNC) list. This operation helps ensure compliance with applicable rules & regulations by preventing outbound calls to specific numbers.\n\n**Note:** Phone numbers must be in E.164 format (e.g., +1234567890). Duplicate entries will be rejected with a 409 error.", - Method: "POST", Path: "/v3/campaign-management/dncList/{dncListName}/phoneNumber", Host: HostCC, - Params: []Param{ - {Name: "dncListName", In: InPath, Flag: "dnc-list-name", Usage: "This is the Name of the DNC list to which you want to add a phone number. List names are case-sensitive and must be URL-encoded if they contain special characters."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "phoneNumber", Flag: "phone-number", Type: "string"}, - {Name: "source", Flag: "source", Type: "string"}, - {Name: "reason", Flag: "reason", Type: "string"}, - }}, -} - -var CCDncManagementGetPhoneNumberList = &Operation{ - ID: "CCDncManagementGetPhoneNumberList", Area: "cc", Group: "dnc-management", Command: "get-phone-number-list", - Summary: "Get Phone Number from DNC List", - Description: "Retrieves details of a specific phone number from the specified Do Not Contact (DNC) list. This operation allows you to check if a number is present in the list and view associated metadata.\n\n**Note:** Phone numbers must be URL-encoded and in E.164 format (e.g., %2B1234567890 for +1234567890).", - Method: "GET", Path: "/v3/campaign-management/dncList/{dncListName}/phoneNumber/{phoneNumber}", Host: HostCC, - Params: []Param{ - {Name: "dncListName", In: InPath, Flag: "dnc-list-name", Usage: "The name of the DNC list to search in. List names are case-sensitive and must be URL-encoded if they contain special characters."}, - {Name: "phoneNumber", In: InPath, Flag: "phone-number", Usage: "The phone number to retrieve from the DNC list. Must be URL-encoded and in E.164 format (e.g., %2B1234567890 for +1234567890)."}, - }, -} - -var CCDncManagementDeletePhoneNumberList = &Operation{ - ID: "CCDncManagementDeletePhoneNumberList", Area: "cc", Group: "dnc-management", Command: "delete-phone-number-list", - Summary: "Remove Phone Number from DNC List", - Description: "Removes a phone number from the specified Do Not Contact (DNC) list. This operation allows administrators to remove numbers that should no longer be blocked from receiving calls.\n\n**Note:** Phone numbers must be URL-encoded and in E.164 format (e.g., +1234567890 for +1234567890). If the number doesn't exist in the list, a 404 error will be returned.", - Method: "DELETE", Path: "/v3/campaign-management/dncList/{dncListName}/phoneNumber/{phoneNumber}", Host: HostCC, - Params: []Param{ - {Name: "dncListName", In: InPath, Flag: "dnc-list-name", Usage: "The name of the DNC list to remove the phone number from. List names are case-sensitive and must be URL-encoded if they contain special characters."}, - {Name: "phoneNumber", In: InPath, Flag: "phone-number", Usage: "The phone number to remove from the DNC list. Must be URL-encoded and in E.164 format (e.g., %2B1234567890 for +1234567890)."}, - }, -} - -var CCResourceCollectionCreate = &Operation{ - ID: "CCResourceCollectionCreate", Area: "cc", Group: "resource-collection", Command: "create", - Summary: "Create a new Resource Collection", - Description: "Create a new resource collection in a given organization.", - Method: "POST", Path: "/organization/{orgid}/resource-collection", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{}, -} - -var CCResourceCollectionBulkPartialUpdate = &Operation{ - ID: "CCResourceCollectionBulkPartialUpdate", Area: "cc", Group: "resource-collection", Command: "bulk-partial-update", - Summary: "Bulk partial update Resource Collections", - Description: "Update some or all properties for resource collections in bulk for a given organization.", - Method: "PATCH", Path: "/organization/{orgid}/resource-collection/bulk", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{}, -} - -var CCResourceCollectionUpdateDefault = &Operation{ - ID: "CCResourceCollectionUpdateDefault", Area: "cc", Group: "resource-collection", Command: "update-default", - Summary: "Update resource with default resource collection", - Description: "Update resource with default resource collection. Ensure resource should not associated to any resource collection and resource should not be updated and not older than 15 min. Only single Resource Collection is allowed to update.", - Method: "POST", Path: "/organization/{orgid}/resource-collection/update-resource", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{}, -} - -var CCResourceCollectionGet = &Operation{ - ID: "CCResourceCollectionGet", Area: "cc", Group: "resource-collection", Command: "get", - Aliases: []string{"get-id"}, - Summary: "Get specific Resource Collection by ID", - Description: "Retrieve an existing Resource Collection by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/resource-collection/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Resource Collection."}, - }, -} - -var CCResourceCollectionUpdate = &Operation{ - ID: "CCResourceCollectionUpdate", Area: "cc", Group: "resource-collection", Command: "update", - Aliases: []string{"update-id"}, - Summary: "Update specific Resource Collection by ID", - Description: "Update an existing resource collection by ID in a given organization.", - Method: "PUT", Path: "/organization/{orgid}/resource-collection/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Resource Collection."}, - }, - Body: &Body{}, -} - -var CCResourceCollectionDelete = &Operation{ - ID: "CCResourceCollectionDelete", Area: "cc", Group: "resource-collection", Command: "delete", - Aliases: []string{"delete-id"}, - Summary: "Delete specific Resource Collection by ID", - Description: "Delete an existing resource collection by ID in a given organization.", - Method: "DELETE", Path: "/organization/{orgid}/resource-collection/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Resource Collection."}, - }, -} - -var CCResourceCollectionListReferences = &Operation{ - ID: "CCResourceCollectionListReferences", Area: "cc", Group: "resource-collection", Command: "list-references", - Summary: "List references for a specific Resource Collection", - Description: "Retrieve a list of all entities that have reference to an existing resource collection by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/resource-collection/{id}/incoming-references", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "ID of this contact center resource."}, - {Name: "type", In: InQuery, Flag: "type", Usage: "Entity type of the other entity that has a reference to this specific entity."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCResourceCollectionList = &Operation{ - ID: "CCResourceCollectionList", Area: "cc", Group: "resource-collection", Command: "list", - Summary: "List Resource Collections", - Description: "Retrieve a list of resource collections in a given organization.", - Method: "GET", Path: "/organization/{orgid}/v2/resource-collection", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "filter", In: InQuery, Flag: "filter", Usage: "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime \n\nThe examples below show some search queries\n- id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\n- id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide.\n\nNote: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter.\n"}, - {Name: "attributes", In: InQuery, Flag: "attributes", Usage: "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported."}, - {Name: "search", In: InQuery, Flag: "search", Usage: "Filter data based on the search keyword.Supported search columns(name)\n\nThe examples below show some search queries\n- \"Cisco\"\n- field==\"name\";value==\"Cisco\"\n- fields=in=(\"name\");value==\"Cisco\"\n"}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCContactListManagementCreate = &Operation{ - ID: "CCContactListManagementCreate", Area: "cc", Group: "contact-list-management", Command: "create", - Summary: "Create contact list", - Description: "Creates and activates a contact list for a campaign. The system can activate a contact list even if there are no contact records within it.", - Method: "POST", Path: "/v3/campaign-management/campaigns/{campaignId}/contact-list", Host: HostCC, - Params: []Param{ - {Name: "campaignId", In: InPath, Flag: "campaign-id", Usage: "Campaign ID to which the contact list belongs."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "supportedChannels", Flag: "supported-channels", Type: "[]string"}, - {Name: "activationTimeLagMinutes", Flag: "activation-time-lag-minutes", Type: "int64"}, - {Name: "activationDateTime", Flag: "activation-date-time", Type: "string"}, - }}, -} - -var CCContactListManagementCreateWithin = &Operation{ - ID: "CCContactListManagementCreateWithin", Area: "cc", Group: "contact-list-management", Command: "create-within", - Summary: "Create contacts within a contact list", - Description: "Creates contacts within a contact list (only if that contact list was created using API method). If the contact record is invalid, it will be added as INVALID and reflected in the 'Processed' and 'Invalid' counts. This is an Asynchronous operation. The values within the 'contactAttributes' param should conform to datatypes of the contact attributes as specified in the 'Field mapping' associated with the campaign.", - Method: "POST", Path: "/v3/campaign-management/campaigns/{campaignId}/contact-list/{contactListId}/contacts", Host: HostCC, - Params: []Param{ - {Name: "campaignId", In: InPath, Flag: "campaign-id", Usage: "Campaign ID to which the contact list belongs."}, - {Name: "contactListId", In: InPath, Flag: "contact-list-id", Usage: "Contact List ID (as a number string)."}, - }, - Body: &Body{}, -} - -var CCContactListManagementUpdateStatusWithin = &Operation{ - ID: "CCContactListManagementUpdateStatusWithin", Area: "cc", Group: "contact-list-management", Command: "update-status-within", - Summary: "Update a contact's status within a contact list", - Description: "Updates a contact's status within a contact list. After update, system overwrites 'Latest Telephony Outcome' to blank and 'Latest Business Outcome' to 'Closed via API call' if status is CLOSED. This is an Asynchronous operation.", - Method: "PATCH", Path: "/v3/campaign-management/campaigns/{campaignId}/contact-list/{contactListId}/contacts/{contactId}", Host: HostCC, - Params: []Param{ - {Name: "campaignId", In: InPath, Flag: "campaign-id", Usage: "Campaign ID."}, - {Name: "contactListId", In: InPath, Flag: "contact-list-id", Usage: "Contact List ID (as a number string)."}, - {Name: "contactId", In: InPath, Flag: "contact-id", Usage: "Contact Unique ID (Contact Phone or Customer Unique ID or Account Unique ID)"}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "contactStatus", Flag: "contact-status", Type: "string"}, - }}, -} - -var CCContactListManagementUpdateStatus = &Operation{ - ID: "CCContactListManagementUpdateStatus", Area: "cc", Group: "contact-list-management", Command: "update-status", - Summary: "Update contact list status", - Description: "Updates the status of a contact list (e.g., EXPIRED). Note: This value is not case-sensitive.", - Method: "PATCH", Path: "/v3/campaign-management/campaigns/{campaignId}/contact-list/{contactListId}/status", Host: HostCC, - Params: []Param{ - {Name: "campaignId", In: InPath, Flag: "campaign-id", Usage: "Campaign ID."}, - {Name: "contactListId", In: InPath, Flag: "contact-list-id", Usage: "Contact List ID (as a number string)."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "contactListStatus", Flag: "contact-list-status", Type: "string"}, - }}, -} - -var CCContactListManagementGetWithinCampaign = &Operation{ - ID: "CCContactListManagementGetWithinCampaign", Area: "cc", Group: "contact-list-management", Command: "get-within-campaign", - Summary: "Get Contact Lists within a Campaign", - Description: "Retrieves all contact lists within a campaign. Use the optional `status` and `source` query parameters to filter results.\n\nEach contact list in the response includes the source file name, the time contact counts were last updated, and a breakdown of contact counts by processing and dialer status (for example, processed, invalid, valid, eligible, fresh, open, closed, and ready for dialer).\n\nResponses may reflect the same data for up to 30 seconds when the same campaign and filters are requested repeatedly.", - Method: "GET", Path: "/v4/campaign-management/campaigns/{campaignId}/contact-lists", Host: HostCC, - Params: []Param{ - {Name: "campaignId", In: InPath, Flag: "campaign-id", Usage: "Campaign ID."}, - {Name: "status", In: InQuery, Flag: "status", Usage: "Contact List Status filter (Active, Expired, UploadFailed, etc.)"}, - {Name: "source", In: InQuery, Flag: "source", Usage: "Contact List Source filter (API, SFTP, ManualFile)"}, - }, -} - -var CCContactListManagementUpdateStatusAcrossCampaignChain = &Operation{ - ID: "CCContactListManagementUpdateStatusAcrossCampaignChain", Area: "cc", Group: "contact-list-management", Command: "update-status-across-campaign-chain", - Summary: "Update contact status across the campaign chain", - Description: "Synchronously closes the specified contacts and returns the outcome in the same response. Contacts are identified using the same unique identifiers configured in your campaign field mappings, such as Contact Phone (format as per the associated field mapping) or Customer Unique ID or Account Unique ID (For more info, please refer to the [global variables help documentation](https://docs-campaign-for-contact-centers.webexcampaign.com/docs/global-variables)).\n\n By default, the API searches the specified campaign and any of its downstream target campaigns in the chain (across all active contact-lists associated with these campaigns), and closes the contact wherever it is found in a closeable state. Set `searchAcrossTheCampaignChain` to `no` to close the contact only in the campaign specified in the request path.\n\n**Optional query parameters**\n\n- `contactListId` - Search only the specific contact-list within the campaign specified in the request path. If `searchAcrossTheCampaignChain` is set to `yes` then all active contact-lists in the other downstream target campaigns in the chain are also searched.\n- `fields` - Return specified contact field values in the response for the matching contact records (for example: FirstName, LastName, AmountDue).", - Method: "PATCH", Path: "/v3/campaign-management/campaigns/{campaignId}/contacts/{contactId}", Host: HostCC, - Params: []Param{ - {Name: "campaignId", In: InPath, Flag: "campaign-id", Usage: "Campaign ID (as a string). All downstream target campaigns in the chain are included in the search."}, - {Name: "contactId", In: InPath, Flag: "contact-id", Usage: "Contact Unique ID (Contact Phone or Customer Unique ID or Account Unique ID)"}, - {Name: "contactListId", In: InQuery, Flag: "contact-list-id", Usage: "Optional. Search only the specific contact-list within the campaign specified in the request path. If `searchAcrossTheCampaignChain` is set to `yes`, then all active contact-lists in the other downstream target campaigns in the chain are also searched. When omitted, all active contact lists in that campaign are searched."}, - {Name: "fields", In: InQuery, Flag: "fields", Usage: "Optional. Contact field names to include in the response (comma-separated names)."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "contactStatus", Flag: "contact-status", Type: "string"}, - {Name: "searchAcrossTheCampaignChain", Flag: "search-across-the-campaign-chain", Type: "string"}, - }}, -} - -var CCAgentSummariesList = &Operation{ - ID: "CCAgentSummariesList", Area: "cc", Group: "agent-summaries", Command: "list", - Summary: "List summaries", - Description: "Lists summaries based on the requested search type.", - Method: "POST", Path: "/summary/list", Host: HostCC, - Body: &Body{Fields: []BodyField{ - {Name: "orgId", Flag: "org-id", Type: "string"}, - {Name: "interactionId", Flag: "interaction-id", Type: "string"}, - {Name: "searchType", Flag: "search-type", Type: "string"}, - }}, -} - -var CCAgentSummariesList2 = &Operation{ - ID: "CCAgentSummariesList2", Area: "cc", Group: "agent-summaries", Command: "list-2", - Summary: "List summaries", - Description: "Lists summaries based on the requested search type.", - Method: "POST", Path: "/generated-summaries/search", Host: HostCC, - Body: &Body{Fields: []BodyField{ - {Name: "orgId", Flag: "org-id", Type: "string"}, - {Name: "searchType", Flag: "search-type", Type: "string"}, - }}, -} - -var CCAiAssistantGetSuggestions = &Operation{ - ID: "CCAiAssistantGetSuggestions", Area: "cc", Group: "ai-assistant", Command: "get-suggestions", - Summary: "Get suggestions", - Description: "API for getting suggestions based on transcripts. \n\nNotes:\n- Requires machine account token with scope `cjp:config_read` for WxCC\n- Requires machine account token with scope `cjp-hybrid-conn:read` for WxCCE/CCE.\n- `aiAssistantSkillId` / `source` is required for WxCCE/CCE.", - Method: "POST", Path: "/event", Host: HostCC, - Body: &Body{}, -} - -var CCActivitiesListDefinitions = &Operation{ - ID: "CCActivitiesListDefinitions", Area: "cc", Group: "activities", Command: "list-definitions", - Summary: "List Activity Definitions", - Description: "List all available activity types with their full schemas, including inputs, outputs, ports, and descriptions. The response is sufficient on its own to construct nodes — there is no separate schema endpoint.\n\nScope: `cjp:config_read`", - Method: "GET", Path: "/{orgid}/project/{projectId}/v2/activities", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID."}, - {Name: "projectId", In: InPath, Value: "5e5c9ad6d61f870d6d778c1b"}, - }, - Paging: &Paging{}, -} - -var CCActivitiesDescribe = &Operation{ - ID: "CCActivitiesDescribe", Area: "cc", Group: "activities", Command: "describe", - Summary: "Describe an Activity", - Description: "Retrieve a single activity's full definition, including inputs, outputs, named ports, and the JSON Schema for its inputs — all returned inline.\n\nScope: `cjp:config_read`", - Method: "GET", Path: "/{orgid}/project/{projectId}/v2/activities/{activityName}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID."}, - {Name: "projectId", In: InPath, Value: "5e5c9ad6d61f870d6d778c1b"}, - {Name: "activityName", In: InPath, Flag: "activity-name", Usage: "Activity type name (e.g., `play-message`, `queue-contact`)."}, - }, -} - -var CCActivitiesGetInputChoices = &Operation{ - ID: "CCActivitiesGetInputChoices", Area: "cc", Group: "activities", Command: "get-input-choices", - Summary: "Get Activity Input Choices", - Description: "Resolve choices for an activity input. Use this when an activity input requires a value from a predefined or dynamically resolved set (e.g., available queues, audio files, agents).\n\nThis endpoint is only valid for inputs that expose choices (an input whose definition includes `allowedValues` or a `choicesEndpoint`, as returned by `describeActivity`). Calling it for an input that does not support choices returns 400.\n\nPass `search` to filter the choices (type-ahead). Add `validate=true` together with `search` to do a point-lookup of a single value instead of filtering — the match is against the choice's `value` (its ID), not its display `name`. For a cascading input whose allowed values depend on a sibling input, supply the parent with `parentInputName` and `parentValue`; otherwise a cascading input returns 400.\n\nFiltering and validation apply only to dynamic (`choicesEndpoint`-backed) inputs. A static input always returns its full enumerated list regardless of `search`/`validate`.\n\nScope: `cjp:config_read`", - Method: "GET", Path: "/{orgid}/project/{projectId}/v2/activities/{activityName}/inputs/{inputName}/choices", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID."}, - {Name: "projectId", In: InPath, Value: "5e5c9ad6d61f870d6d778c1b"}, - {Name: "activityName", In: InPath, Flag: "activity-name", Usage: "Activity type name."}, - {Name: "inputName", In: InPath, Flag: "input-name", Usage: "Input field name. Must be an input that exposes choices (has `allowedValues` or a `choicesEndpoint`)."}, - {Name: "search", In: InQuery, Flag: "search", Usage: "Search text used to filter the returned choices (type-ahead). When `validate=true`, this is instead the single value to look up."}, - {Name: "validate", In: InQuery, Flag: "validate", Usage: "When `true` and `search` is supplied, performs a point-lookup of the single value in `search` (matched against the choice's `value`/ID) instead of filtering."}, - {Name: "parentValue", In: InQuery, Flag: "parent-value", Usage: "Parent input value for a cascading/dynamic input (for example, the selected `channelType`)."}, - {Name: "parentInputName", In: InQuery, Flag: "parent-input-name", Usage: "Parent input name for a cascading/dynamic input. Required when `parentValue` is provided."}, - }, -} - -var CCEventsListSpecifications = &Operation{ - ID: "CCEventsListSpecifications", Area: "cc", Group: "events", Command: "list-specifications", - Summary: "List Event Specifications", - Description: "List the event types available for use in `event_flows[]`. Each entry describes the event name, payload schema, and any contextual metadata bound when the event fires.\n\nScope: `cjp:config_read`", - Method: "GET", Path: "/{orgid}/project/{projectId}/v2/event-specifications", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID."}, - {Name: "projectId", In: InPath, Value: "5e5c9ad6d61f870d6d778c1b"}, - }, - Paging: &Paging{}, -} - -var CCFunctionsList = &Operation{ - ID: "CCFunctionsList", Area: "cc", Group: "functions", Command: "list", - Summary: "List Custom Functions", - Description: "List or search custom functions in the organization. Without filters, returns all custom functions. Supports filtering by name, language, and status, plus sorting and pagination.\n\nScope: `cjp:config_read`", - Method: "GET", Path: "/v1/{orgid}/functions", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID."}, - {Name: "isPartialMatch", In: InQuery, Flag: "is-partial-match", Usage: "Whether to search with partial matches. If `false`, search/filter is based on exact match."}, - {Name: "isCaseSensitive", In: InQuery, Flag: "is-case-sensitive", Usage: "Whether the search should be case-sensitive. Currently applicable only to the `name` field."}, - {Name: "name", In: InQuery, Flag: "name", Usage: "Filter by function name."}, - {Name: "language", In: InQuery, Flag: "language", Usage: "Filter by programming language."}, - {Name: "status", In: InQuery, Flag: "status", Usage: "Filter by one or more function statuses (comma-separated, no spaces). Case-sensitive."}, - {Name: "sortBy", In: InQuery, Flag: "sort-by", Usage: "Comma-separated fields with order. Supported fields (case-sensitive): `name`, `language`, `status`, `lastModifiedDate`. Prefix a field with `-` for descending order; no prefix means ascending."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Zero-based page number for the paginated query."}, - {Name: "size", In: InQuery, Flag: "size", Usage: "Number of results per page."}, - {Name: "ids", In: InQuery, Flag: "ids", Usage: "Comma-separated list of function IDs to fetch."}, - {Name: "fields", In: InQuery, Flag: "fields", Usage: "Comma-separated list of function fields to include in the response."}, - {Name: "isValidation", In: InQuery, Flag: "is-validation", Usage: "Used by the Tenant Management team to validate the existence of functions with given IDs regardless of the user's RBAC access."}, - }, - Paging: &Paging{SizeParam: "size"}, -} - -var CCFunctionsCreate = &Operation{ - ID: "CCFunctionsCreate", Area: "cc", Group: "functions", Command: "create", - Summary: "Create a Custom Function", - Description: "Create a new custom function. The source code is provided as an escaped string and the runtime defaults to the highest supported runtime for the given language.\n\nScope: `cjp:config_write`", - Method: "POST", Path: "/v1/{orgid}/functions", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID."}, - }, - Body: &Body{}, -} - -var CCFunctionsGet = &Operation{ - ID: "CCFunctionsGet", Area: "cc", Group: "functions", Command: "get", - Summary: "Get a Custom Function", - Description: "Retrieve a custom function by its ID. Use `versionOrTag` to fetch a specific published version, or omit it to get the draft.\n\nScope: `cjp:config_read`", - Method: "GET", Path: "/v1/{orgid}/functions/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Custom function ID. Hexadecimal ObjectId returned by the create or list APIs."}, - {Name: "versionOrTag", In: InQuery, Flag: "version-or-tag", Usage: "Version number or publish tag of the source code to return (for example, `Dev`, `Live`, or `2`). If omitted, the draft version is returned."}, - {Name: "metaDataOnly", In: InQuery, Flag: "meta-data-only", Usage: "If `true`, returns only metadata and excludes source code. If `false` or omitted, returns both metadata and source code."}, - }, -} - -var CCFunctionsUpdate = &Operation{ - ID: "CCFunctionsUpdate", Area: "cc", Group: "functions", Command: "update", - Summary: "Update a Custom Function", - Description: "Update an existing custom function by ID. Replaces the draft source code and metadata with the supplied body.\n\nScope: `cjp:config_write`", - Method: "PUT", Path: "/v1/{orgid}/functions/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Custom function ID."}, - }, - Body: &Body{}, -} - -var CCFunctionsDelete = &Operation{ - ID: "CCFunctionsDelete", Area: "cc", Group: "functions", Command: "delete", - Summary: "Delete a Custom Function", - Description: "Delete a custom function by ID. Use `isForceDeletion=true` to delete even when the function is referenced by one or more flows.\n\nScope: `cjp:config_write`", - Method: "DELETE", Path: "/v1/{orgid}/functions/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Custom function ID."}, - {Name: "isForceDeletion", In: InQuery, Flag: "is-force-deletion", Usage: "If `true`, deletes the function regardless of its usage in flows."}, - }, -} - -var CCFunctionsImport = &Operation{ - ID: "CCFunctionsImport", Area: "cc", Group: "functions", Command: "import", - Summary: "Import a Custom Function", - Description: "Import a custom function from a previously exported function-definition JSON file, uploaded as the multipart `file` part (not a zip or base64 envelope). Use `overwrite=true` to replace any existing function with the same name.\n\nScope: `cjp:config_write`", - Method: "POST", Path: "/v1/{orgid}/functions:import", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID."}, - {Name: "overwrite", In: InQuery, Flag: "overwrite", Usage: "If `true`, overwrites a function with the same name if one already exists."}, - {Name: "associatedRcs", In: InQuery, Flag: "associated-rcs", Usage: "Optional list of associated routing-context IDs."}, - {Name: "associatedRcs", In: InQuery, Flag: "associated-rcs", Usage: "Optional list of associated routing-context IDs."}, - }, -} - -var CCFunctionsUnlock = &Operation{ - ID: "CCFunctionsUnlock", Area: "cc", Group: "functions", Command: "unlock", - Summary: "Unlock a Custom Function", - Description: "Release the edit lock on a custom function so that other users can edit it.\n\nScope: `cjp:config_write`", - Method: "POST", Path: "/v1/{orgid}/functions/{id}:unlock", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID."}, - {Name: "id", In: InPath, Flag: "id"}, - }, -} - -var CCFunctionsLock = &Operation{ - ID: "CCFunctionsLock", Area: "cc", Group: "functions", Command: "lock", - Summary: "Lock a Custom Function", - Description: "Acquire an edit lock on a custom function to prevent concurrent writes by other users.\n\nScope: `cjp:config_write`", - Method: "POST", Path: "/v1/{orgid}/functions/{id}:lock", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID."}, - {Name: "id", In: InPath, Flag: "id"}, - }, -} - -var CCFunctionsTest = &Operation{ - ID: "CCFunctionsTest", Area: "cc", Group: "functions", Command: "test", - Summary: "Test a Custom Function", - Description: "Execute a custom function with a test payload. Implicitly publishes the latest draft first, so the run uses the most recent source code.\n\nScope: `cjp:config_write`", - Method: "POST", Path: "/v1/{orgid}/functions/{id}:test", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID."}, - {Name: "id", In: InPath, Flag: "id"}, - }, - Body: &Body{}, -} - -var CCFunctionsPublish = &Operation{ - ID: "CCFunctionsPublish", Area: "cc", Group: "functions", Command: "publish", - Summary: "Publish a Custom Function", - Description: "Publish the latest draft of a custom function under one or more tags (`Dev`, `Test`, `Latest`, `Live`). Ensure the function has been created or updated before calling this API.\n\nScope: `cjp:config_write`", - Method: "POST", Path: "/v1/{orgid}/functions/{id}:publish", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID."}, - {Name: "id", In: InPath, Flag: "id"}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "tags", Flag: "tags", Type: "[]string"}, - {Name: "comment", Flag: "comment", Type: "string"}, - }}, -} - -var CCFunctionsExport = &Operation{ - ID: "CCFunctionsExport", Area: "cc", Group: "functions", Command: "export", - Summary: "Export a Custom Function", - Description: "Export a custom function for the given version or publish tag. Returns the plain function-definition JSON (name, language, runtime, description, source code, inputs, and outputs), suitable for re-importing via the import API.\n\nScope: `cjp:config_read`", - Method: "POST", Path: "/v1/{orgid}/functions/{id}:export", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID."}, - {Name: "id", In: InPath, Flag: "id"}, - {Name: "versionOrTag", In: InQuery, Flag: "version-or-tag", Usage: "Version number or publish tag of the source code to export. If omitted, the latest published version is exported."}, - }, -} - -var CCFunctionsListOptions = &Operation{ - ID: "CCFunctionsListOptions", Area: "cc", Group: "functions", Command: "list-options", - Summary: "List Function Options", - Description: "List the supported programming languages, runtimes, and corresponding wrapper code for custom functions. Filter by `language` or `runtime` to narrow the result.\n\nScope: `cjp:config_read`", - Method: "GET", Path: "/v1/{orgid}/functions/options", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID."}, - {Name: "language", In: InQuery, Flag: "language", Usage: "Filter by programming language (for example, `js`, `py`)."}, - {Name: "runtime", In: InQuery, Flag: "runtime", Usage: "Filter by runtime (for example, `nodejs22.x`, `python3.13`)."}, - }, - Paging: &Paging{}, -} - -var CCTemplatesListFlow = &Operation{ - ID: "CCTemplatesListFlow", Area: "cc", Group: "templates", Command: "list-flow", - Summary: "List Flow Templates", - Description: "List available flow templates that can be used to create new flows.\n\nScope: `cjp:config_read`", - Method: "GET", Path: "/templates", Host: HostCC, - Params: []Param{ - {Name: "type", In: InQuery, Flag: "type", Usage: "Filter by flow or subflow."}, - }, - Paging: &Paging{}, -} - -var CCTemplatesGetFlow = &Operation{ - ID: "CCTemplatesGetFlow", Area: "cc", Group: "templates", Command: "get-flow", - Summary: "Get a Flow Template", - Description: "Retrieve a specific flow template by its ID. Use this to inspect a template's flow structure before creating a flow from it.\n\nScope: `cjp:config_read`", - Method: "GET", Path: "/templates/{id}", Host: HostCC, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "Template ID."}, - }, -} - -var CCCampaignGroupList = &Operation{ - ID: "CCCampaignGroupList", Area: "cc", Group: "campaign-group", Command: "list", - Summary: "List Campaigns by Campaign Group", - Description: "Retrieves the list of campaigns that belong to the specified campaign group. Results are paginated and can optionally be filtered by campaign status.\n\n**Note:** The `campaignStatus` filter is case-insensitive. Allowed values are `Draft`, `Running`, `Pending`, `Paused`, `Completed`, `Ended`. Unknown values will result in a 400 response.", - Method: "GET", Path: "/v3/campaign-management/campaign-groups/{campaignGroupName}/campaigns", Host: HostCC, - Params: []Param{ - {Name: "campaignGroupName", In: InPath, Flag: "campaign-group-name", Usage: "The name of the campaign group whose campaigns are to be retrieved. Case-insensitive matching.\n\n **Allowed characters:** - `A-Z`, `a-z`, `0-9`, `_` (underscore), space \n**Allowed Length** `1..64`"}, - {Name: "page", In: InQuery, Flag: "page", Usage: "The page number of the result set to retrieve (1-based)."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "The number of campaigns to return per page. Must be between 1 and 100."}, - {Name: "campaignStatus", In: InQuery, Flag: "campaign-status", Usage: "Optional filter for campaign status. Case-insensitive. Allowed values: `Draft`, `Running`, `Pending`, `Paused`, `Completed`, `Ended`."}, - }, - Paging: &Paging{}, -} - -var CCSearchMetadataGet = &Operation{ - ID: "CCSearchMetadataGet", Area: "cc", Group: "search-metadata", Command: "get", - Summary: "Get Search Metadata", - Description: "Returns schema metadata for the Webex Contact Center Search GraphQL API, describing supported queries, fields, nested structures, data types, filters, sorting options, grouping capabilities, and aggregation operations.\n\n**Authentication & Authorization:**\n- **Required Scopes:** `cjp:config` or `cjp:config_read`\n\nAn asterisk (*) in the rendered response schema indicates a required property.", - Method: "GET", Path: "/search/v2/meta", Host: HostCC, - Params: []Param{ - {Name: "X-ORGANIZATION-ID", In: InHeader, Flag: "x-organization-id", Usage: "Organization ID to use for this operation. If unspecified, inferred from token. Token must have permission to interact with this organization."}, - {Name: "TrackingId", In: InHeader, Flag: "tracking-id", Usage: "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. "}, - }, -} - -var CCAssetCreate = &Operation{ - ID: "CCAssetCreate", Area: "cc", Group: "asset", Command: "create", - Summary: "Create a new Asset", - Description: "Create a new Asset in a given organization. Supports work item assets with the specified channel and data schema.", - Method: "POST", Path: "/organization/{orgid}/asset", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{}, -} - -var CCAssetBulkSave = &Operation{ - ID: "CCAssetBulkSave", Area: "cc", Group: "asset", Command: "bulk-save", - Summary: "Bulk save Assets", - Description: "Create, Update or delete Assets in bulk in a given organization. Supports CREATE, UPDATE, and DELETE actions in a single request.", - Method: "POST", Path: "/organization/{orgid}/asset/bulk", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{}, -} - -var CCAssetGet = &Operation{ - ID: "CCAssetGet", Area: "cc", Group: "asset", Command: "get", - Aliases: []string{"get-id"}, - Summary: "Get specific Asset by ID", - Description: "Retrieve an existing Asset by ID in a given organization. Set includeChannelName to true to include the channel name in the response.", - Method: "GET", Path: "/organization/{orgid}/asset/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Asset"}, - {Name: "includeChannelName", In: InQuery, Flag: "include-channel-name", Usage: "Include channel name in the response."}, - }, -} - -var CCAssetUpdate = &Operation{ - ID: "CCAssetUpdate", Area: "cc", Group: "asset", Command: "update", - Aliases: []string{"update-id"}, - Summary: "Update specific Asset by ID", - Description: "Update an existing Asset by ID in a given organization. Supported for WORK_ITEM assets. For CUSTOM_MESSAGING assets, use PATCH instead.", - Method: "PUT", Path: "/organization/{orgid}/asset/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Asset"}, - }, - Body: &Body{}, -} - -var CCAssetDelete = &Operation{ - ID: "CCAssetDelete", Area: "cc", Group: "asset", Command: "delete", - Aliases: []string{"delete-id"}, - Summary: "Delete specific Asset by ID", - Description: "Delete an existing Asset by ID in a given organization. Validates whether the asset is associated with any flow before deletion.", - Method: "DELETE", Path: "/organization/{orgid}/asset/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Asset"}, - }, -} - -var CCAssetPatch = &Operation{ - ID: "CCAssetPatch", Area: "cc", Group: "asset", Command: "patch", - Aliases: []string{"patch-id"}, - Summary: "Partially update Asset by ID", - Description: "Partially update Asset by ID in a given organization. Supported only for CUSTOM_MESSAGING assets. Send only the fields to change; absent fields retain their current values. webhookConfig is optional; omit it to keep the existing credentials. For WORK_ITEM assets, use PUT instead.", - Method: "PATCH", Path: "/organization/{orgid}/asset/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Asset"}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "valueType", Flag: "value-type", Type: "string"}, - }}, -} - -var CCAssetListReferences = &Operation{ - ID: "CCAssetListReferences", Area: "cc", Group: "asset", Command: "list-references", - Summary: "List references for a specific Asset", - Description: "Retrieve a list of all entities that have reference to an existing Asset by ID in a given organization. For example, Entry Points.", - Method: "GET", Path: "/organization/{orgid}/asset/{id}/incoming-references", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "ID of this contact center resource."}, - {Name: "type", In: InQuery, Flag: "type", Usage: "Entity type of the other entity that has a reference to this specific entity."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCAssetList = &Operation{ - ID: "CCAssetList", Area: "cc", Group: "asset", Command: "list", - Summary: "List Assets", - Description: "Retrieve a list of Assets in a given organization. Supports pagination metadata. Set includeChannelName to true to include the channel name in the response. Set excludeEPAssociated to true to return only assets that are not associated with any Entry Point.", - Method: "GET", Path: "/organization/{orgid}/v2/asset", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "filter", In: InQuery, Flag: "filter", Usage: "Filter expression"}, - {Name: "attributes", In: InQuery, Flag: "attributes", Usage: "Supported attributes"}, - {Name: "search", In: InQuery, Flag: "search", Usage: "Filter data based on the search keyword.Supported search columns(name)\n\nThe examples below show some search queries\n- \"Cisco\"\n- field==\"name\";value==\"Cisco\"\n- fields=in=(\"name\");value==\"Cisco\"\n"}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - {Name: "sort", In: InQuery, Flag: "sort", Usage: "Sortable properties"}, - {Name: "includeCount", In: InQuery, Flag: "include-count", Usage: "Include count"}, - {Name: "singleObjectResponse", In: InQuery, Flag: "single-object-response", Usage: "Specify whether to include array fields in the response. This query parameter should be used only when the response contains a single record. It is not supported for responses with multiple objects and throws an exception."}, - {Name: "includeChannelName", In: InQuery, Flag: "include-channel-name", Usage: "Include channel name in the response."}, - {Name: "excludeEPAssociated", In: InQuery, Flag: "exclude-epassociated", Usage: "When true, return only assets that are not associated with any Entry Point."}, - }, - Paging: &Paging{}, -} - -var CCChannelCreate = &Operation{ - ID: "CCChannelCreate", Area: "cc", Group: "channel", Command: "create", - Summary: "Create a new Channel", - Description: "Create a new Channel in a given organization. Supports custom channels for work items.", - Method: "POST", Path: "/organization/{orgid}/channel", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{}, -} - -var CCChannelBulkSave = &Operation{ - ID: "CCChannelBulkSave", Area: "cc", Group: "channel", Command: "bulk-save", - Summary: "Bulk save Channels", - Description: "Create, Update or delete Channels in bulk in a given organization.", - Method: "POST", Path: "/organization/{orgid}/channel/bulk", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{}, -} - -var CCChannelGet = &Operation{ - ID: "CCChannelGet", Area: "cc", Group: "channel", Command: "get", - Aliases: []string{"get-id"}, - Summary: "Get specific Channel by ID", - Description: "Retrieve an existing Channel by ID in a given organization. Set includeLogoUrlVersioned to true to include logoUrlVersioned in the response.", - Method: "GET", Path: "/organization/{orgid}/channel/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Channel"}, - {Name: "includeLogoUrlVersioned", In: InQuery, Flag: "include-logo-url-versioned", Usage: "Include logoUrlVersioned in the response."}, - }, -} - -var CCChannelUpdate = &Operation{ - ID: "CCChannelUpdate", Area: "cc", Group: "channel", Command: "update", - Aliases: []string{"update-id"}, - Summary: "Update specific Channel by ID", - Description: "Update an existing Channel by ID in a given organization.", - Method: "PUT", Path: "/organization/{orgid}/channel/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Channel"}, - }, -} - -var CCChannelDelete = &Operation{ - ID: "CCChannelDelete", Area: "cc", Group: "channel", Command: "delete", - Aliases: []string{"delete-id"}, - Summary: "Delete specific Channel by ID", - Description: "Delete an existing Channel by ID in a given organization.", - Method: "DELETE", Path: "/organization/{orgid}/channel/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Channel"}, - }, -} - -var CCChannelPatch = &Operation{ - ID: "CCChannelPatch", Area: "cc", Group: "channel", Command: "patch", - Aliases: []string{"patch-id"}, - Summary: "Partially update Channel by ID", - Description: "Partially update a channel by ID. Only the supplied fields are changed; absent fields retain their current values. Patchable fields: name, description, logoType (MOMENTUM only), logoIconName. logoUrl and logoUrlVersioned cannot be changed by using PATCH; use PUT to update the logo image. channelType cannot be changed after creation. in a given organization.", - Method: "PATCH", Path: "/organization/{orgid}/channel/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Channel"}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "description", Flag: "description", Type: "string"}, - {Name: "logoType", Flag: "logo-type", Type: "string"}, - {Name: "logoIconName", Flag: "logo-icon-name", Type: "string"}, - }}, -} - -var CCChannelListReferences = &Operation{ - ID: "CCChannelListReferences", Area: "cc", Group: "channel", Command: "list-references", - Summary: "List references for a specific Channel", - Description: "Retrieve a list of all entities that have reference to an existing Channel by ID in a given organization. Includes Asset and Entry Point entities that reference the channel.", - Method: "GET", Path: "/organization/{orgid}/channel/{id}/incoming-references", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "ID of this contact center resource."}, - {Name: "type", In: InQuery, Flag: "type", Usage: "Entity type of the other entity that has a reference to this specific entity."}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCChannelList = &Operation{ - ID: "CCChannelList", Area: "cc", Group: "channel", Command: "list", - Summary: "List Channels", - Description: "Retrieve a list of Channels in a given organization. Supports pagination metadata. Set includeLogoUrlVersioned to true to include logoUrlVersioned in the response. Note: Returning array fields in the List (Get All) API response is deprecated. To retrieve the complete resource with all fields, please use the Get-by-ID API instead.", - Method: "GET", Path: "/organization/{orgid}/v2/channel", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "filter", In: InQuery, Flag: "filter", Usage: "Filter expression"}, - {Name: "attributes", In: InQuery, Flag: "attributes", Usage: "Supported attributes"}, - {Name: "search", In: InQuery, Flag: "search", Usage: "Filter data based on the search keyword.Supported search columns(name)\n\nThe examples below show some search queries\n- \"Cisco\"\n- field==\"name\";value==\"Cisco\"\n- fields=in=(\"name\");value==\"Cisco\"\n"}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - {Name: "sort", In: InQuery, Flag: "sort", Usage: "Sortable properties"}, - {Name: "includeCount", In: InQuery, Flag: "include-count", Usage: "If set to true, the API response includes the asset count."}, - {Name: "singleObjectResponse", In: InQuery, Flag: "single-object-response", Usage: "Specify whether to include array fields in the response. This query parameter should be used only when the response contains a single record. It is not supported for responses with multiple objects and throws an exception."}, - {Name: "includeLogoUrlVersioned", In: InQuery, Flag: "include-logo-url-versioned", Usage: "Include logoUrlVersioned in the response."}, - }, - Paging: &Paging{}, -} - -var CCUsageReportsListResourceTypes = &Operation{ - ID: "CCUsageReportsListResourceTypes", Area: "cc", Group: "usage-reports", Command: "list-resource-types", - Summary: "Get available resource types", - Description: "Returns the list of available resource types that can be used for report generation, along with available data dates.", - Method: "GET", Path: "/v1/usage-reports/resource-types", Host: HostCC, - Paging: &Paging{}, -} - -var CCUsageReportsCreate = &Operation{ - ID: "CCUsageReportsCreate", Area: "cc", Group: "usage-reports", Command: "create", - Summary: "Create usage report", - Description: "Creates a new usage report for the specified organization, resource type,\nand date range. The report is generated asynchronously in the background.\n\nA single **usage report (reportId)** is always created for each request.\nDepending on the requested date range, the report may contain **one or more\nreport files**, each representing a sub-range of the overall time period.\n\nWhen the requested date range spans **more than 30 days**, the overall range\nis **automatically split by natural calendar months**, and **multiple report\nfiles** are generated under the same report.\n\n**Examples:**\n\n- Requested range: `2025-12-23` ~ `2026-03-20`\n - Generated result:\n - Report ID: single report\n - Report files:\n - `2025-12-23` ~ `2025-12-31`\n - `2026-01-01` ~ `2026-01-31`\n - `2026-02-01` ~ `2026-02-28`\n - `2026-03-01` ~ `2026-03-20`\n\n- Requested range: `2025-12-23` ~ `2026-01-21`\n - Generated result:\n - Report ID: single report\n - Report files:\n - `2025-12-23` ~ `2026-01-21`\n\n**Important Notes:**\n- Only one usage report can be processed at a time for the same organization.\n If there is an ongoing report, new report creation requests will be rejected.\n", - Method: "POST", Path: "/v1/usage-reports", Host: HostCC, - Body: &Body{Fields: []BodyField{ - {Name: "resourceType", Flag: "resource-type", Type: "string"}, - {Name: "startDate", Flag: "start-date", Type: "string"}, - {Name: "endDate", Flag: "end-date", Type: "string"}, - }}, -} - -var CCUsageReportsList = &Operation{ - ID: "CCUsageReportsList", Area: "cc", Group: "usage-reports", Command: "list", - Summary: "List usage reports", - Description: "Retrieves a list of usage reports for the organization. Supports optional filtering by resource type and creation date range.\n\nEach report has a `reportId` and may contain one or more generated files in `reportFiles[]`. For long date ranges, the service can split results by calendar month to avoid creating a single very large download. For example, a 12-month report can return up to 12 report files, and a 36-month report can return up to 36 report files.\n\nUse `reportId` to retrieve the overall report status, list the generated files, or delete the report. Use each file's `fileId` or `downloadUrl` to download that specific file. The download API does not accept `reportId`.", - Method: "GET", Path: "/v1/usage-reports", Host: HostCC, - Params: []Param{ - {Name: "resourceType", In: InQuery, Flag: "resource-type", Usage: "Filter by resource type"}, - {Name: "createdAfter", In: InQuery, Flag: "created-after", Usage: "Filter reports created after this timestamp (ISO 8601 format)"}, - {Name: "createdBefore", In: InQuery, Flag: "created-before", Usage: "Filter reports created before this timestamp (ISO 8601 format)"}, - }, - Paging: &Paging{}, -} - -var CCUsageReportsGet = &Operation{ - ID: "CCUsageReportsGet", Area: "cc", Group: "usage-reports", Command: "get", - Summary: "Get usage report details", - Description: "Retrieves detailed information for a specific usage report.", - Method: "GET", Path: "/v1/usage-reports/{reportId}", Host: HostCC, - Params: []Param{ - {Name: "reportId", In: InPath, Flag: "report-id", Usage: "Usage report ID"}, - }, -} - -var CCUsageReportsDelete = &Operation{ - ID: "CCUsageReportsDelete", Area: "cc", Group: "usage-reports", Command: "delete", - Summary: "Delete usage report", - Description: "Deletes the specified usage report and its associated file. This operation cannot be undone.", - Method: "DELETE", Path: "/v1/usage-reports/{reportId}", Host: HostCC, - Params: []Param{ - {Name: "reportId", In: InPath, Flag: "report-id", Usage: "Usage report ID"}, - }, - Accept: "*/*", -} - -var CCUsageReportsDownloadFile = &Operation{ - ID: "CCUsageReportsDownloadFile", Area: "cc", Group: "usage-reports", Command: "download-file", - Summary: "Download usage report file", - Description: "Downloads one completed report file as a binary stream.\n\nUse the `fileId` returned in the report's `reportFiles` array. A `reportId` identifies the overall report and cannot be used with this endpoint. Usage Reports can cover up to 36 months of raw data, so large date ranges may be split into one file per calendar month. This keeps individual compressed files more manageable and avoids requiring customers to download a single very large file. If a report contains multiple files, call this endpoint once for each `fileId`.\n\nPassing a `reportId` to this endpoint returns `404` because the path parameter expects a file-level identifier.\n\nThe Developer Portal may not handle binary downloads reliably. Use Postman, curl, or a programmatic API client to download the file.\n\n**Note:** Both file and download URLs expire 7 days after report completion.\n", - Method: "GET", Path: "/v1/usage-reports/{fileId}/download", Host: HostCC, - Params: []Param{ - {Name: "fileId", In: InPath, Flag: "file-id", Usage: "ID of the specific report file to download. Use fileId, not reportId."}, - }, -} - -var CCExternalDataUpdatesUpdateTaskGlobalVariables = &Operation{ - ID: "CCExternalDataUpdatesUpdateTaskGlobalVariables", Area: "cc", Group: "external-data-updates", Command: "update-task-global-variables", - Summary: "Update Task Global Variables", - Description: "Updates numeric global variable values associated with a completed Webex Contact Center task. The request must identify the organization and task along with its start and end timestamps. The task should have ended within two days prior to the time of making the request.", - Method: "PUT", Path: "/v1/data/updateExternal", Host: HostCC, - Params: []Param{ - {Name: "X-ORGANIZATION-ID", In: InHeader, Flag: "x-organization-id", Usage: "Organization identifier used for partner or delegated access."}, - {Name: "TrackingId", In: InHeader, Flag: "tracking-id", Usage: "Optional identifier used for request traceability, debugging, and error reporting."}, - }, - Body: &Body{}, -} - -var CCCallMonitoringConfigCreate = &Operation{ - ID: "CCCallMonitoringConfigCreate", Area: "cc", Group: "call-monitoring-config", Command: "create", - Summary: "Create a new Call Monitoring", - Description: "Create a new Call Monitoring in a given organization.", - Method: "POST", Path: "/organization/{orgid}/call-monitoring", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{}, -} - -var CCCallMonitoringConfigDeleteReferences = &Operation{ - ID: "CCCallMonitoringConfigDeleteReferences", Area: "cc", Group: "call-monitoring-config", Command: "delete-references", - Summary: "delete References Call Monitoring", - Method: "POST", Path: "/organization/{orgid}/call-monitoring/delete-reference", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - }, - Body: &Body{}, -} - -var CCCallMonitoringConfigGet = &Operation{ - ID: "CCCallMonitoringConfigGet", Area: "cc", Group: "call-monitoring-config", Command: "get", - Summary: "Get specific Call Monitoring by ID", - Description: "Retrieve an existing Call Monitoring by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/call-monitoring/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Call Monitoring."}, - {Name: "includeFilterDetails", In: InQuery, Flag: "include-filter-details", Usage: "If set to true, the API response will include entity details (names) for teams, agents, and contact service queues."}, - }, -} - -var CCCallMonitoringConfigUpdate = &Operation{ - ID: "CCCallMonitoringConfigUpdate", Area: "cc", Group: "call-monitoring-config", Command: "update", - Summary: "Update specific Call Monitoring by ID", - Description: "Update an existing Call Monitoring by ID in a given organization.", - Method: "PUT", Path: "/organization/{orgid}/call-monitoring/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Call Monitoring."}, - }, - Body: &Body{}, -} - -var CCCallMonitoringConfigDelete = &Operation{ - ID: "CCCallMonitoringConfigDelete", Area: "cc", Group: "call-monitoring-config", Command: "delete", - Summary: "Delete specific Call Monitoring by ID", - Description: "Delete an existing Call Monitoring by ID in a given organization.", - Method: "DELETE", Path: "/organization/{orgid}/call-monitoring/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Call Monitoring."}, - }, -} - -var CCCallMonitoringConfigPatch = &Operation{ - ID: "CCCallMonitoringConfigPatch", Area: "cc", Group: "call-monitoring-config", Command: "patch", - Summary: "Partially update Call Monitoring by ID", - Description: "Partially update Call Monitoring by ID in a given organization.", - Method: "PATCH", Path: "/organization/{orgid}/call-monitoring/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "Resource ID of the Call Monitoring."}, - }, - Body: &Body{}, -} - -var CCCallMonitoringConfigList = &Operation{ - ID: "CCCallMonitoringConfigList", Area: "cc", Group: "call-monitoring-config", Command: "list", - Summary: "List Call Monitoring Configurations", - Description: "Retrieve a list of Call Monitoring Configurations in a given organization. Note: Returning array fields in the List (Get All) API response is deprecated. To retrieve the complete resource with all fields, please use the Get-by-ID API instead.", - Method: "GET", Path: "/organization/{orgid}/v2/call-monitoring", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "filter", In: InQuery, Flag: "filter", Usage: "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, teams, agents, contactServiceQueues, createdTime, lastUpdatedTime \n\nThe examples below show some search queries\n- id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\n- id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide.\n\nNote: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter.\n"}, - {Name: "attributes", In: InQuery, Flag: "attributes", Usage: "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported. except teams, agents, contactServiceQueues\n\nThe examples below show some search queries\n- id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\n- id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide.\n\nNote: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter.\n"}, - {Name: "search", In: InQuery, Flag: "search", Usage: "Filter data based on the search keyword.Supported search columns(name)\n\nThe examples below show some search queries\n- \"Cisco\"\n- field==\"name\";value==\"Cisco\"\n- fields=in=(\"name\");value==\"Cisco\"\n"}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - {Name: "includeUserDetails", In: InQuery, Flag: "include-user-details", Usage: "If set to true, the API response will include user details (firstName, lastName, email) for the userId field."}, - {Name: "includeFiltersCount", In: InQuery, Flag: "include-filters-count", Usage: "If set to true, the API response will include the count of specific agents, teams, and contact service queues associated with the call monitoring schedule."}, - {Name: "includeTotalCallMonitoringCountInOrg", In: InQuery, Flag: "include-total-call-monitoring-count-in-org", Usage: "If set to true, the API response will include the total number of call monitoring schedules for the organization in the metadata."}, - }, - Paging: &Paging{}, -} - -var CCOrganizationSettingList = &Operation{ - ID: "CCOrganizationSettingList", Area: "cc", Group: "organization-setting", Command: "list", - Summary: "List Organization Settings", - Description: "Retrieve a list of Organization Settings in a given organization.", - Method: "GET", Path: "/organization/{orgid}/v2/organization-setting", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "filter", In: InQuery, Flag: "filter", Usage: "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, inactivateEntitiesPurgedOn, createdTime, lastUpdatedTime \n\nThe examples below show some search queries\n- id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\n- id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide.\n\nNote: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter.\n"}, - {Name: "attributes", In: InQuery, Flag: "attributes", Usage: "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported."}, - {Name: "search", In: InQuery, Flag: "search", Usage: "Filter data based on the search keyword.Supported search columns(name)\n\nThe examples below show some search queries\n- \"Cisco\"\n- field==\"name\";value==\"Cisco\"\n- fields=in=(\"name\");value==\"Cisco\"\n"}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCOrganizationSettingGet = &Operation{ - ID: "CCOrganizationSettingGet", Area: "cc", Group: "organization-setting", Command: "get", - Summary: "Get specific Organization Setting by ID", - Description: "Retrieve an existing Organization Setting by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/organization-setting/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "ID of this contact center resource."}, - }, -} - -var CCOrganizationSettingUpdate = &Operation{ - ID: "CCOrganizationSettingUpdate", Area: "cc", Group: "organization-setting", Command: "update", - Summary: "Update specific Organization Setting by ID", - Description: "Update an existing Organization Setting by ID in a given organization. Requests authenticated with a user token can modify only fields designated as user-modifiable.", - Method: "PUT", Path: "/organization/{orgid}/organization-setting/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "ID of this contact center resource."}, - }, - Body: &Body{}, -} - -var CCOrganizationSettingPatch = &Operation{ - ID: "CCOrganizationSettingPatch", Area: "cc", Group: "organization-setting", Command: "patch", - Summary: "Partially update Organization Setting by ID", - Description: "Partially update Organization Setting by ID in a given organization. Requests authenticated with a user token can modify only fields designated as user-modifiable.", - Method: "PATCH", Path: "/organization/{orgid}/organization-setting/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "ID of this contact center resource."}, - }, - Body: &Body{}, -} - -var CCTenantConfigurationList = &Operation{ - ID: "CCTenantConfigurationList", Area: "cc", Group: "tenant-configuration", Command: "list", - Summary: "List Tenant Configuration", - Description: "Retrieve a list of Tenant Configuration in a given organization.", - Method: "GET", Path: "/organization/{orgid}/v2/tenant-configuration", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "filter", In: InQuery, Flag: "filter", Usage: "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime \n\nThe examples below show some search queries\n- id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\"\n- id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\n- id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\")\nThis parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide.\n\nNote: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter.\n"}, - {Name: "attributes", In: InQuery, Flag: "attributes", Usage: "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported."}, - {Name: "search", In: InQuery, Flag: "search", Usage: "Filter data based on the search keyword.Supported search columns(name)\n\nThe examples below show some search queries\n- \"Cisco\"\n- field==\"name\";value==\"Cisco\"\n- fields=in=(\"name\");value==\"Cisco\"\n"}, - {Name: "page", In: InQuery, Flag: "page", Usage: "Defines the number of displayed page. The page number starts from 0."}, - {Name: "pageSize", In: InQuery, Flag: "page-size", Usage: "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size."}, - }, - Paging: &Paging{}, -} - -var CCTenantConfigurationGet = &Operation{ - ID: "CCTenantConfigurationGet", Area: "cc", Group: "tenant-configuration", Command: "get", - Summary: "Get specific Tenant Configuration by ID", - Description: "Retrieve an existing Tenant Configuration by ID in a given organization.", - Method: "GET", Path: "/organization/{orgid}/tenant-configuration/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "ID of this contact center resource."}, - }, -} - -var CCTenantConfigurationUpdate = &Operation{ - ID: "CCTenantConfigurationUpdate", Area: "cc", Group: "tenant-configuration", Command: "update", - Summary: "Update specific Tenant Configuration by ID", - Description: "Update an existing Tenant Configuration by ID in a given organization. Requests authenticated with a user token can modify only fields designated as user-modifiable.", - Method: "PUT", Path: "/organization/{orgid}/tenant-configuration/{id}", Host: HostCC, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization."}, - {Name: "id", In: InPath, Flag: "id", Usage: "ID of this contact center resource."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "timeoutRonaChatSeconds", Flag: "timeout-rona-chat-seconds", Type: "int64"}, - {Name: "timeoutRonaEmailSeconds", Flag: "timeout-rona-email-seconds", Type: "int64"}, - {Name: "timeoutRonaSocialSeconds", Flag: "timeout-rona-social-seconds", Type: "int64"}, - {Name: "timeoutRonaTelephonySeconds", Flag: "timeout-rona-telephony-seconds", Type: "int64"}, - {Name: "organizationId", Flag: "organization-id", Type: "string"}, - {Name: "id", Flag: "id", Type: "string"}, - {Name: "version", Flag: "version", Type: "int64"}, - {Name: "outdialEnabled", Flag: "outdial-enabled", Type: "bool"}, - {Name: "centralLogLevel", Flag: "central-log-level", Type: "string"}, - {Name: "autoWrapUpInterval", Flag: "auto-wrap-up-interval", Type: "int64"}, - {Name: "localDiskLogLevel", Flag: "local-disk-log-level", Type: "string"}, - {Name: "dnOtherDescription", Flag: "dn-other-description", Type: "string"}, - {Name: "dnDefaultDescription", Flag: "dn-default-description", Type: "string"}, - {Name: "notRespondingToAvailableTimeout", Flag: "not-responding-to-available-timeout", Type: "int64"}, - {Name: "heartBeatInterval", Flag: "heart-beat-interval", Type: "int64"}, - {Name: "callVariablesSuppressed", Flag: "call-variables-suppressed", Type: "string"}, - {Name: "endCallEnabled", Flag: "end-call-enabled", Type: "bool"}, - {Name: "incidentReportingEnabled", Flag: "incident-reporting-enabled", Type: "bool"}, - {Name: "watsonAnalyticsPassword", Flag: "watson-analytics-password", Type: "string"}, - {Name: "systemRecoveryMsg", Flag: "system-recovery-msg", Type: "string"}, - {Name: "watsonAnalyticsBaseUrl", Flag: "watson-analytics-base-url", Type: "string"}, - {Name: "dnTargetStripChars", Flag: "dn-target-strip-chars", Type: "string"}, - {Name: "watsonAnalyticsUserName", Flag: "watson-analytics-user-name", Type: "string"}, - {Name: "dnOtherRegex", Flag: "dn-other-regex", Type: "string"}, - {Name: "configurationVersion", Flag: "configuration-version", Type: "float64"}, - {Name: "callVariablesBaseUrl", Flag: "call-variables-base-url", Type: "string"}, - {Name: "lostConnectionRecoveryTimeout", Flag: "lost-connection-recovery-timeout", Type: "int64"}, - {Name: "diagnosticsPostUrl", Flag: "diagnostics-post-url", Type: "string"}, - {Name: "dnDefaultRegex", Flag: "dn-default-regex", Type: "string"}, - {Name: "apsUrl", Flag: "aps-url", Type: "string"}, - {Name: "endConsultEnabled", Flag: "end-consult-enabled", Type: "bool"}, - {Name: "rejectDuplicateDn", Flag: "reject-duplicate-dn", Type: "bool"}, - {Name: "dnTargetRegex", Flag: "dn-target-regex", Type: "string"}, - {Name: "forceDefaultDn", Flag: "force-default-dn", Type: "bool"}, - {Name: "dnDefaultPrefix", Flag: "dn-default-prefix", Type: "string"}, - {Name: "privacyShieldVisible", Flag: "privacy-shield-visible", Type: "bool"}, - {Name: "consoleLogLevel", Flag: "console-log-level", Type: "string"}, - {Name: "dnTargetPrefix", Flag: "dn-target-prefix", Type: "string"}, - {Name: "autoBaseUrl", Flag: "auto-base-url", Type: "bool"}, - {Name: "dnOtherPrefix", Flag: "dn-other-prefix", Type: "string"}, - {Name: "dnDefaultStripChars", Flag: "dn-default-strip-chars", Type: "string"}, - {Name: "missedHeartBeatsAllowed", Flag: "missed-heart-beats-allowed", Type: "int64"}, - {Name: "dnOtherStripChars", Flag: "dn-other-strip-chars", Type: "string"}, - {Name: "apsEnabled", Flag: "aps-enabled", Type: "bool"}, - {Name: "timeoutDesktopInactivityEnabled", Flag: "timeout-desktop-inactivity-enabled", Type: "bool"}, - {Name: "timeoutDesktopInactivityMins", Flag: "timeout-desktop-inactivity-mins", Type: "int64"}, - {Name: "timeoutRonaWorkItemSeconds", Flag: "timeout-rona-work-item-seconds", Type: "int64"}, - {Name: "timeoutRonaCustomMessagingSeconds", Flag: "timeout-rona-custom-messaging-seconds", Type: "int64"}, - {Name: "systemDefault", Flag: "system-default", Type: "bool"}, - {Name: "createdTime", Flag: "created-time", Type: "int64"}, - {Name: "lastUpdatedTime", Flag: "last-updated-time", Type: "int64"}, - }}, -} - -var CCAiAgentList = &Operation{ - ID: "CCAiAgentList", Area: "cc", Group: "ai-agent", Command: "list", - Summary: "List AI agents", - Description: "Lists the organization's AI agents. Use an agent's `id` as --agent-id. Runtime tokens in the response are redacted.", - Method: "GET", Path: "/api/v2/organizations/{orgid}/agents/", Host: HostAIAgent, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID."}, - {Name: "limit", In: InQuery, Flag: "limit", Usage: "Maximum number of agents to return."}, - {Name: "offset", In: InQuery, Flag: "offset", Usage: "Number of agents to skip."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "offset", Size: "limit", First: 0}}, - Private: true, - Redact: true, -} - -var CCAiAgentGet = &Operation{ - ID: "CCAiAgentGet", Area: "cc", Group: "ai-agent", Command: "get", - Summary: "Get AI agent", - Description: "Gets an AI agent's settings. `bot_metadata.ai_engine` here is the engine family; the exact engine is `bot_metadata.engine_identifier`.", - Method: "GET", Path: "/api/v1/bot/{agentId}/", Host: HostAIAgent, - Params: []Param{ - {Name: "agentId", In: InPath, Flag: "agent-id", Usage: "AI agent ID."}, - {Name: "bot-access-token", In: InAgentToken, Flag: "agent-id", Usage: "AI agent ID."}, - }, - Private: true, - Redact: true, -} - -var CCAiAgentCreate = &Operation{ - ID: "CCAiAgentCreate", Area: "cc", Group: "ai-agent", Command: "create", - Summary: "Create AI agent", - Description: "Creates an AI agent. `bot_unique_name` must be unique; Studio's own UI uses the name followed by `-` and 8 random letters and digits. Turning transparency off needs a `disable_reason`. Every new agent gets the system \"Agent handover\" tool.", - Method: "POST", Path: "/api/v1/bot/", Host: HostAIAgent, - Body: &Body{}, - Private: true, - Redact: true, -} - -var CCAiAgentUpdate = &Operation{ - ID: "CCAiAgentUpdate", Area: "cc", Group: "ai-agent", Command: "update", - Summary: "Update AI agent", - Description: "Updates an AI agent's draft. `instruction` is the agent's prompt. Top-level fields left out keep their values. Send `bot_metadata.ai_engine` as the exact engine (`engine_identifier` from `get`), not the family that `get` reports in `ai_engine`, or the agent's engine changes. Callers get the change only after `publish`.", - Method: "PUT", Path: "/api/v1/bot/{agentId}/", Host: HostAIAgent, - Params: []Param{ - {Name: "agentId", In: InPath, Flag: "agent-id", Usage: "AI agent ID."}, - {Name: "bot-access-token", In: InAgentToken, Flag: "agent-id", Usage: "AI agent ID."}, - }, - Body: &Body{}, - Private: true, - Redact: true, -} - -var CCAiAgentDelete = &Operation{ - ID: "CCAiAgentDelete", Area: "cc", Group: "ai-agent", Command: "delete", - Summary: "Delete AI agent", - Description: "Deletes an AI agent.", - Method: "DELETE", Path: "/api/v1/bot/{agentId}/", Host: HostAIAgent, - Params: []Param{ - {Name: "agentId", In: InPath, Flag: "agent-id", Usage: "AI agent ID."}, - {Name: "bot-access-token", In: InAgentToken, Flag: "agent-id", Usage: "AI agent ID."}, - }, - Private: true, - Redact: true, -} - -var CCAiAgentGetConfiguration = &Operation{ - ID: "CCAiAgentGetConfiguration", Area: "cc", Group: "ai-agent", Command: "get-configuration", - Summary: "Get AI agent configuration", - Description: "Gets the agent's draft configuration and its tools. `configuration.llm_agent_description` is the prompt. `state` is `saved` when the draft has unpublished changes and `cloned` when it matches the published version.", - Method: "GET", Path: "/api/v1/llmagent/getdefault/", Host: HostAIAgent, - Params: []Param{ - {Name: "bot-access-token", In: InAgentToken, Flag: "agent-id", Usage: "AI agent ID."}, - }, - Private: true, - Redact: true, -} - -var CCAiAgentListVersions = &Operation{ - ID: "CCAiAgentListVersions", Area: "cc", Group: "ai-agent", Command: "list-versions", - Summary: "List AI agent versions", - Description: "Lists the draft and the published versions (`state: live`) of the agent's configuration.", - Method: "GET", Path: "/api/v1/llmagent/", Host: HostAIAgent, - Params: []Param{ - {Name: "order_by", In: InQuery, Flag: "order_by", Usage: "Sort field; prefix with - for descending, for example -updated_at."}, - {Name: "limit", In: InQuery, Flag: "limit", Usage: "Maximum number of versions to return."}, - {Name: "offset", In: InQuery, Flag: "offset", Usage: "Number of versions to skip."}, - {Name: "bot-access-token", In: InAgentToken, Flag: "agent-id", Usage: "AI agent ID."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "offset", Size: "limit", First: 0}}, - Private: true, - Redact: true, -} - -var CCAiAgentExport = &Operation{ - ID: "CCAiAgentExport", Area: "cc", Group: "ai-agent", Command: "export", - Summary: "Export AI agent", - Description: "Exports the agent's draft configuration and tools as one JSON document (`bot_type`, `configuration`, `tools`).", - Method: "GET", Path: "/api/v1/llmagent/export/", Host: HostAIAgent, - Params: []Param{ - {Name: "bot-access-token", In: InAgentToken, Flag: "agent-id", Usage: "AI agent ID."}, - }, - Private: true, - Redact: true, -} - -var CCAiAgentPublish = &Operation{ - ID: "CCAiAgentPublish", Area: "cc", Group: "ai-agent", Command: "publish", - Summary: "Publish AI agent", - Description: "Publishes the agent's draft, so live calls use it. The description labels the version in the history.", - Method: "POST", Path: "/api/v1/llmagent/makelive/", Host: HostAIAgent, - Params: []Param{ - {Name: "bot-access-token", In: InAgentToken, Flag: "agent-id", Usage: "AI agent ID."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "description", Flag: "description", Type: "string"}, - }}, - Private: true, - Redact: true, -} - -var CCAiAgentCreateTool = &Operation{ - ID: "CCAiAgentCreateTool", Area: "cc", Group: "ai-agent", Command: "create-tool", - Summary: "Create AI agent tool", - Description: "Adds a tool (action) to the agent's draft. `input_entities` is required, in JSON Schema form, even when the tool takes no input. Copy a working tool from `get-configuration` for the fulfillment of flow and MCP tools.", - Method: "POST", Path: "/api/v1/llmagent/tool/create/", Host: HostAIAgent, - Params: []Param{ - {Name: "bot-access-token", In: InAgentToken, Flag: "agent-id", Usage: "AI agent ID."}, - }, - Body: &Body{}, - Private: true, - Redact: true, -} - -var CCAiAgentUpdateTool = &Operation{ - ID: "CCAiAgentUpdateTool", Area: "cc", Group: "ai-agent", Command: "update-tool", - Summary: "Update AI agent tool", - Description: "Updates a tool in the agent's draft. Send the whole tool as `get-configuration` returns it, with `tool_id` set to its `id`.", - Method: "POST", Path: "/api/v1/llmagent/tool/update/", Host: HostAIAgent, - Params: []Param{ - {Name: "bot-access-token", In: InAgentToken, Flag: "agent-id", Usage: "AI agent ID."}, - }, - Body: &Body{}, - Private: true, - Redact: true, -} - -var CCAiAgentDeleteTool = &Operation{ - ID: "CCAiAgentDeleteTool", Area: "cc", Group: "ai-agent", Command: "delete-tool", - Summary: "Delete AI agent tool", - Description: "Deletes a tool from the agent's draft.", - Method: "POST", Path: "/api/v1/llmagent/tool/delete/", Host: HostAIAgent, - Params: []Param{ - {Name: "bot-access-token", In: InAgentToken, Flag: "agent-id", Usage: "AI agent ID."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "tool_id", Flag: "tool_id", Type: "string"}, - }}, - Private: true, - Redact: true, -} - -var CCAiAgentSessionList = &Operation{ - ID: "CCAiAgentSessionList", Area: "cc", Group: "ai-agent-session", Command: "list", - Summary: "List AI agent sessions", - Description: "Lists the agent's conversation sessions. `is_test` marks preview sessions. For a voice session, `interaction_id` is the Contact Center task ID, which `webex cc captures list` accepts.", - Method: "GET", Path: "/api/v2/organizations/{orgid}/agents/{agentId}/sessions/", Host: HostAIAgent, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID."}, - {Name: "agentId", In: InPath, Flag: "agent-id", Usage: "AI agent ID."}, - {Name: "limit", In: InQuery, Flag: "limit", Usage: "Maximum number of sessions to return."}, - {Name: "offset", In: InQuery, Flag: "offset", Usage: "Number of sessions to skip."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "offset", Size: "limit", First: 0}}, - Private: true, - Redact: true, -} - -var CCAiAgentSessionGet = &Operation{ - ID: "CCAiAgentSessionGet", Area: "cc", Group: "ai-agent-session", Command: "get", - Summary: "Get AI agent session", - Description: "Gets one conversation session.", - Method: "GET", Path: "/api/v2/organizations/{orgid}/agents/{agentId}/sessions/{sessionId}/", Host: HostAIAgent, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID."}, - {Name: "agentId", In: InPath, Flag: "agent-id", Usage: "AI agent ID."}, - {Name: "sessionId", In: InPath, Flag: "session-id", Usage: "Session ID."}, - }, - Private: true, - Redact: true, -} - -var CCAiAgentSessionListMessages = &Operation{ - ID: "CCAiAgentSessionListMessages", Area: "cc", Group: "ai-agent-session", Command: "list-messages", - Summary: "List AI agent session messages", - Description: "Lists a session's messages. In an organization with Advanced Data Protection, the text of live sessions is encrypted; preview sessions are not.", - Method: "GET", Path: "/api/v2/organizations/{orgid}/agents/{agentId}/sessions/{sessionId}/messages/", Host: HostAIAgent, - Params: []Param{ - {Name: "orgid", In: InPath, Flag: "orgid", Usage: "Organization ID."}, - {Name: "agentId", In: InPath, Flag: "agent-id", Usage: "AI agent ID."}, - {Name: "sessionId", In: InPath, Flag: "session-id", Usage: "Session ID."}, - {Name: "limit", In: InQuery, Flag: "limit", Usage: "Maximum number of messages to return."}, - {Name: "offset", In: InQuery, Flag: "offset", Usage: "Number of messages to skip."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "offset", Size: "limit", First: 0}}, - Private: true, - Redact: true, -} - -var CCAiAgentTranscriptCreateAuditRecord = &Operation{ - ID: "CCAiAgentTranscriptCreateAuditRecord", Area: "cc", Group: "ai-agent-transcript", Command: "create-audit-record", - Summary: "Create transcript audit record", - Description: "Records a compliance audit entry for reading a session's transcript, as Studio does before it shows one. `room_id` is the session ID and `message` the reason. The entry is permanent and names the caller, so create one only with a real reason. With a regular Webex login, the messages of an encrypted session stay encrypted after the audit.", - Method: "POST", Path: "/api/v1/decrypt_audit/", Host: HostAIAgent, - Params: []Param{ - {Name: "bot-access-token", In: InAgentToken, Flag: "agent-id", Usage: "AI agent ID."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "room_id", Flag: "room_id", Type: "string"}, - {Name: "decrypt_audit_type", Flag: "decrypt_audit_type", Type: "string"}, - {Name: "message", Flag: "message", Type: "string"}, - }}, - Private: true, - Redact: true, -} - -var CCAiAgentTranscriptGetSession = &Operation{ - ID: "CCAiAgentTranscriptGetSession", Area: "cc", Group: "ai-agent-transcript", Command: "get-session", - Summary: "Get transcript session", - Description: "Gets a session's full record, including `data_encrypted` and its channels.", - Method: "GET", Path: "/api/v1/room/", Host: HostAIAgent, - Params: []Param{ - {Name: "id", In: InQuery, Flag: "id", Usage: "Session ID."}, - {Name: "bot-access-token", In: InAgentToken, Flag: "agent-id", Usage: "AI agent ID."}, - }, - Private: true, - Redact: true, -} - -var CCAiAgentTranscriptListMessages = &Operation{ - ID: "CCAiAgentTranscriptListMessages", Area: "cc", Group: "ai-agent-transcript", Command: "list-messages", - Summary: "List transcript messages", - Description: "Lists a session's messages with full detail: tool calls, classification and `data_encrypted`. For an encrypted session, create an audit record first.", - Method: "GET", Path: "/api/v1/message/", Host: HostAIAgent, - Params: []Param{ - {Name: "room_id", In: InQuery, Flag: "room_id", Usage: "Session ID."}, - {Name: "order_by", In: InQuery, Flag: "order_by", Usage: "Sort field; prefix with - for descending."}, - {Name: "limit", In: InQuery, Flag: "limit", Usage: "Maximum number of messages to return."}, - {Name: "offset", In: InQuery, Flag: "offset", Usage: "Number of messages to skip."}, - {Name: "bot-access-token", In: InAgentToken, Flag: "agent-id", Usage: "AI agent ID."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "offset", Size: "limit", First: 0}}, - Private: true, - Redact: true, -} - -var ccGroups = []Group{ - {Name: "agent-wellbeing", Summary: "AgentWellbeing commands"}, - {Name: "auto-csat", Summary: "AutoCsat commands"}, - {Name: "generated-summaries", Summary: "GeneratedSummaries commands"}, - {Name: "business-hour", Summary: "BusinessHour commands"}, - {Name: "holiday-list", Summary: "HolidayList commands"}, - {Name: "overrides", Summary: "Overrides commands"}, - {Name: "address-book", Summary: "AddressBook commands"}, - {Name: "audio-files", Summary: "AudioFiles commands"}, - {Name: "auxiliary-code", Summary: "AuxiliaryCode commands"}, - {Name: "contact-number", Summary: "ContactNumber commands"}, - {Name: "contact-service-queue", Summary: "ContactServiceQueue commands"}, - {Name: "desktop-layout", Summary: "DesktopLayout commands"}, - {Name: "desktop-profile", Summary: "DesktopProfile commands"}, - {Name: "dial-number", Summary: "DialNumber commands"}, - {Name: "dial-plan", Summary: "DialPlan commands"}, - {Name: "entry-point", Summary: "EntryPoint commands"}, - {Name: "global-variables", Summary: "GlobalVariables commands"}, - {Name: "multimedia-profile", Summary: "MultimediaProfile commands"}, - {Name: "outdial-ani", Summary: "OutdialAni commands"}, - {Name: "site", Summary: "Site commands"}, - {Name: "skill", Summary: "Skill commands"}, - {Name: "skill-profile", Summary: "SkillProfile commands"}, - {Name: "team", Summary: "Team commands"}, - {Name: "user-profiles", Summary: "UserProfiles commands"}, - {Name: "users", Summary: "Users commands"}, - {Name: "work-types", Summary: "WorkTypes commands"}, - {Name: "data-sources", Summary: "DataSources commands"}, - {Name: "estimated-wait-time", Summary: "EstimatedWaitTime commands"}, - {Name: "notification", Summary: "Notification commands"}, - {Name: "queues", Summary: "Queues commands"}, - {Name: "realtime", Summary: "Realtime commands"}, - {Name: "search", Summary: "Search commands", Handwritten: true}, - {Name: "subscriptions", Summary: "Subscriptions commands"}, - {Name: "agents", Summary: "Agents commands"}, - {Name: "call-monitor", Aliases: []string{"call-monitoring"}, Summary: "Live call monitoring sessions: start, barge in, coach, hold, and end"}, - {Name: "tasks", Summary: "Tasks commands"}, - {Name: "journey", Summary: "Journey commands"}, - {Name: "campaign-manager", Summary: "CampaignManager commands"}, - {Name: "captures", Summary: "Captures commands"}, - {Name: "flow", Aliases: []string{"flows"}, Summary: "Flow commands"}, - {Name: "callbacks", Summary: "Callbacks commands"}, - {Name: "ai-feature", Summary: "AiFeature commands"}, - {Name: "agent-personal-greeting-files", Summary: "AgentPersonalGreetingFiles commands"}, - {Name: "journey-customer-identification", Summary: "JourneyCustomerIdentification commands"}, - {Name: "journey-data-ingestion", Summary: "JourneyDataIngestion commands"}, - {Name: "journey-profile-creation-insights", Summary: "JourneyProfileCreationInsights commands"}, - {Name: "journey-subscription", Summary: "JourneySubscription commands"}, - {Name: "journey-trigger-actions", Summary: "JourneyTriggerActions commands"}, - {Name: "journey-workspace-management", Summary: "JourneyWorkspaceManagement commands"}, - {Name: "dnc-management", Summary: "DncManagement commands"}, - {Name: "resource-collection", Summary: "ResourceCollection commands"}, - {Name: "contact-list-management", Summary: "ContactListManagement commands"}, - {Name: "agent-summaries", Summary: "AgentSummaries commands"}, - {Name: "ai-assistant", Summary: "AiAssistant commands"}, - {Name: "activities", Summary: "Activities commands"}, - {Name: "events", Summary: "Events commands"}, - {Name: "functions", Summary: "Functions commands"}, - {Name: "templates", Summary: "Templates commands"}, - {Name: "campaign-group", Summary: "CampaignGroup commands"}, - {Name: "search-metadata", Summary: "SearchMetadata commands"}, - {Name: "asset", Summary: "Asset commands"}, - {Name: "channel", Summary: "Channel commands"}, - {Name: "usage-reports", Summary: "UsageReports commands"}, - {Name: "external-data-updates", Summary: "ExternalDataUpdates commands"}, - {Name: "call-monitoring-config", Summary: "Saved call monitoring configurations"}, - {Name: "organization-setting", Summary: "OrganizationSetting commands"}, - {Name: "tenant-configuration", Summary: "TenantConfiguration commands"}, - {Name: "ai-agent", Summary: "AI Agent Studio agents, tools, publishing, export (unsupported private API)"}, - {Name: "ai-agent-session", Summary: "AI Agent Studio sessions and messages (unsupported private API)"}, - {Name: "ai-agent-transcript", Summary: "AI Agent Studio audited transcript reads (unsupported private API)"}, -} - -var ccOperations = []*Operation{ - CCAgentWellbeingSubscribeRealtimeBurnoutEvents, - CCAgentWellbeingRecordRealtimeBurnoutEvents, - CCAgentWellbeingGetBurnoutId, - CCAgentWellbeingUpdateBurnoutId, - CCAgentWellbeingListBurnout, - CCAutoCsatCreateMappedQuestion, - CCAutoCsatBulkSaveMappedQuestion, - CCAutoCsatGetMappedQuestionId, - CCAutoCsatDeleteMappedQuestionId, - CCAutoCsatGet, - CCAutoCsatUpdate, - CCAutoCsatList, - CCAutoCsatListMappedQuestion, - CCGeneratedSummariesGet, - CCGeneratedSummariesUpdate, - CCGeneratedSummariesList, - CCBusinessHourList, - CCBusinessHourCreate, - CCBusinessHourBulkSave, - CCBusinessHourBulkExport, - CCBusinessHourGet, - CCBusinessHourUpdate, - CCBusinessHourDelete, - CCBusinessHourListReferences, - CCBusinessHourListV1, - CCHolidayListList, - CCHolidayListCreate, - CCHolidayListBulkSave, - CCHolidayListBulkExport, - CCHolidayListGet, - CCHolidayListUpdate, - CCHolidayListDelete, - CCHolidayListListReferences, - CCOverridesList, - CCOverridesCreate, - CCOverridesBulkSave, - CCOverridesBulkExport, - CCOverridesGet, - CCOverridesUpdate, - CCOverridesDelete, - CCOverridesListReferences, - CCAddressBookList, - CCAddressBookCreate, - CCAddressBookBulkExport, - CCAddressBookCreateEntry, - CCAddressBookBulkSaveEntry, - CCAddressBookGetEntryId, - CCAddressBookUpdateEntryId, - CCAddressBookDeleteEntryId, - CCAddressBookGet, - CCAddressBookUpdate, - CCAddressBookDelete, - CCAddressBookListReferences, - CCAddressBookListEntry, - CCAudioFilesCreate, - CCAudioFilesGet, - CCAudioFilesUpdate, - CCAudioFilesDelete, - CCAudioFilesPatch, - CCAudioFilesListReferences, - CCAudioFilesList, - CCAuxiliaryCodeList, - CCAuxiliaryCodeCreate, - CCAuxiliaryCodeBulkSave, - CCAuxiliaryCodeBulkPartialUpdate, - CCAuxiliaryCodeBulkExport, - CCAuxiliaryCodePurgeInactive, - CCAuxiliaryCodeGet, - CCAuxiliaryCodeUpdate, - CCAuxiliaryCodeDelete, - CCAuxiliaryCodeListReferences, - CCContactNumberCreate, - CCContactNumberListAll, - CCContactNumberBulkSave, - CCContactNumberBulkExport, - CCContactNumberGet, - CCContactNumberUpdate, - CCContactNumberDelete, - CCContactNumberList, - CCContactServiceQueueList, - CCContactServiceQueueCreate, - CCContactServiceQueueBulkSave, - CCContactServiceQueueBulkPartialUpdate, - CCContactServiceQueueBulkExport, - CCContactServiceQueueListBySkillProfile, - CCContactServiceQueueDeleteReferences, - CCContactServiceQueueListManuallyAssignable, - CCContactServiceQueuePurgeInactive, - CCContactServiceQueueGet, - CCContactServiceQueueUpdate, - CCContactServiceQueueDelete, - CCContactServiceQueueListReferences, - CCContactServiceQueueListAgentBased, - CCContactServiceQueueListSkillBased, - CCContactServiceQueueListTeamBased, - CCContactServiceQueueCreateRemoveAgentsUsersAgent, - CCContactServiceQueueListMappingSummaryGroupedAssistantSkill, - CCContactServiceQueueListInternalSkillCsqsProfile, - CCContactServiceQueueListTeamCsqsTeamId, - CCContactServiceQueueListAgentCsqsCiUserId, - CCContactServiceQueueListByDynamicSkills, - CCContactServiceQueueListByUserSkillProfile, - CCContactServiceQueueListSkillCsqsCiUserId, - CCContactServiceQueueListV2, - CCDesktopLayoutCreate, - CCDesktopLayoutBulkSave, - CCDesktopLayoutBulkExport, - CCDesktopLayoutPurgeInactive, - CCDesktopLayoutGet, - CCDesktopLayoutUpdate, - CCDesktopLayoutDelete, - CCDesktopLayoutListReferences, - CCDesktopLayoutList, - CCDesktopProfileList, - CCDesktopProfileCreate, - CCDesktopProfileBulkSave, - CCDesktopProfileBulkExport, - CCDesktopProfilePurgeInactive, - CCDesktopProfileGet, - CCDesktopProfileUpdate, - CCDesktopProfileDelete, - CCDesktopProfileListReferences, - CCDialNumberListDialedMapping, - CCDialNumberCreateDialedMapping, - CCDialNumberDeleteAllDialedMapping, - CCDialNumberBulkSaveDialedMapping, - CCDialNumberBulkExportDialedMapping, - CCDialNumberListDialedDialedMapping, - CCDialNumberGetDialedMappingId, - CCDialNumberUpdateDialedMappingId, - CCDialNumberDeleteDialedMappingId, - CCDialNumberListReferencesDialedMapping, - CCDialPlanList, - CCDialPlanCreate, - CCDialPlanBulkSave, - CCDialPlanBulkExport, - CCDialPlanGet, - CCDialPlanUpdate, - CCDialPlanDelete, - CCDialPlanListReferences, - CCEntryPointList, - CCEntryPointCreate, - CCEntryPointBulkSave, - CCEntryPointBulkExport, - CCEntryPointPurgeInactive, - CCEntryPointGet, - CCEntryPointUpdate, - CCEntryPointDelete, - CCEntryPointListReferences, - CCEntryPointListV1, - CCGlobalVariablesCreate, - CCGlobalVariablesBulkSave, - CCGlobalVariablesBulkExport, - CCGlobalVariablesPurgeInactive, - CCGlobalVariablesGetReportableCount, - CCGlobalVariablesGet, - CCGlobalVariablesUpdate, - CCGlobalVariablesDelete, - CCGlobalVariablesListReferences, - CCGlobalVariablesList, - CCMultimediaProfileList, - CCMultimediaProfileCreate, - CCMultimediaProfileBulkSave, - CCMultimediaProfileBulkExport, - CCMultimediaProfilePurgeInactive, - CCMultimediaProfileGet, - CCMultimediaProfileUpdate, - CCMultimediaProfileDelete, - CCMultimediaProfileListReferences, - CCOutdialAniList, - CCOutdialAniCreate, - CCOutdialAniBulkSave, - CCOutdialAniBulkExport, - CCOutdialAniListEntries, - CCOutdialAniGet, - CCOutdialAniUpdate, - CCOutdialAniDelete, - CCOutdialAniListReferences, - CCOutdialAniCreateEntry, - CCOutdialAniBulkSaveEntries, - CCOutdialAniGetEntryId, - CCOutdialAniUpdateEntryId, - CCOutdialAniDeleteEntryId, - CCOutdialAniListEntriesForAni, - CCSiteList, - CCSiteCreate, - CCSiteBulkSave, - CCSiteBulkExport, - CCSitePurgeInactive, - CCSiteGet, - CCSiteUpdate, - CCSiteDelete, - CCSiteListReferences, - CCSiteListV1, - CCSkillList, - CCSkillCreate, - CCSkillBulkSave, - CCSkillBulkExport, - CCSkillPurgeInactive, - CCSkillGet, - CCSkillUpdate, - CCSkillDelete, - CCSkillListReferences, - CCSkillPopulateJsonAttributesFieldSkillIdOrg, - CCSkillListV1, - CCSkillProfileList, - CCSkillProfileCreate, - CCSkillProfileBulkSave, - CCSkillProfileBulkExport, - CCSkillProfileGet, - CCSkillProfileUpdate, - CCSkillProfileDelete, - CCSkillProfileListReferences, - CCTeamList, - CCTeamCreate, - CCTeamBulkSave, - CCTeamBulkExport, - CCTeamPurgeInactive, - CCTeamGet, - CCTeamUpdate, - CCTeamDelete, - CCTeamListReferences, - CCTeamListV1, - CCUserProfilesList, - CCUserProfilesBulkSave, - CCUserProfilesBulkExport, - CCUserProfilesPurgeInactive, - CCUserProfilesGet, - CCUserProfilesUpdate, - CCUserProfilesDelete, - CCUserProfilesListReferences, - CCUserProfilesCreate, - CCUserProfilesGetAclId, - CCUsersList, - CCUsersBulkPartialUpdate, - CCUsersBulkExport, - CCUsersGetCiId, - CCUsersGetAgentsMatchingSkillRequirements, - CCUsersListByIds, - CCUsersListAlongProfile, - CCUsersGetAlongProfileId, - CCUsersGet, - CCUsersUpdate, - CCUsersPatch, - CCUsersListReferences, - CCUsersBulkPartialUpdateDynamicSkills, - CCUsersGetDynamicSkillId, - CCUsersReskillAgents, - CCUsersListByCallMonitoringConfig, - CCUsersListV1, - CCWorkTypesCreate, - CCWorkTypesBulkSave, - CCWorkTypesBulkExport, - CCWorkTypesPurgeInactive, - CCWorkTypesGet, - CCWorkTypesUpdate, - CCWorkTypesDelete, - CCWorkTypesListReferences, - CCWorkTypesList, - CCDataSourcesRegister, - CCDataSourcesGetAll, - CCDataSourcesGetSchemas, - CCDataSourcesGetSchema, - CCDataSourcesDelete, - CCDataSourcesGet, - CCDataSourcesUpdate, - CCEstimatedWaitTimeGet, - CCNotificationSubscribe, - CCQueuesGetStatistics, - CCRealtimeSubscribeNotification, - CCSearchSearchTasks, - CCSubscriptionsListV1, - CCSubscriptionsListV2, - CCSubscriptionsRegisterV1, - CCSubscriptionsRegisterV2, - CCSubscriptionsGetV1, - CCSubscriptionsGetV2, - CCSubscriptionsDeleteV1, - CCSubscriptionsDeleteV2, - CCSubscriptionsUpdateV1, - CCSubscriptionsUpdateV2, - CCSubscriptionsListEventTypesV1, - CCSubscriptionsListEventTypesV2, - CCAgentsLogin, - CCAgentsLogout, - CCAgentsStateChange, - CCAgentsReload, - CCAgentsBuddyList, - CCAgentsGetActivities, - CCAgentsGetStatistics, - CCCallMonitorCreate, - CCCallMonitorBargeIn, - CCCallMonitorEnd, - CCCallMonitorHold, - CCCallMonitorUnhold, - CCCallMonitorListSessions, - CCCallMonitorDelete, - CCCallMonitorWhisperCoach, - CCTasksCreate, - CCTasksGet, - CCTasksUpdate, - CCTasksAccept, - CCTasksEnd, - CCTasksWrapUp, - CCTasksHold, - CCTasksUnhold, - CCTasksReject, - CCTasksPauseRecording, - CCTasksResumeRecording, - CCTasksTransfer, - CCTasksConsultTask, - CCTasksConsultConference, - CCTasksConsultTransfer, - CCTasksConsultAccept, - CCTasksAssign, - CCTasksConsultEnd, - CCTasksExitConference, - CCTasksAcceptPreview, - CCTasksSkipPreview, - CCTasksDeletePreview, - CCTasksAppendMessage, - CCTasksDropParticipantConference, - CCTasksPauseDigital, - CCTasksResumeDigital, - CCJourneyGetWorkspace, - CCJourneyUpdateWorkspace, - CCJourneyDeleteWorkspace, - CCJourneyGetTemplateSearchedTemplateId, - CCJourneyUpdateProfileviewtemplate, - CCJourneyDeleteTemplateTemplateId, - CCJourneyDeletePersonId, - CCJourneyCreateRemoveReplacePerson, - CCJourneyCreateOneMoreIdentitiesPerson, - CCJourneyGetWxccSubscription, - CCJourneyCreateWxccSubscription, - CCJourneyDeleteWxccSubscription, - CCJourneyGetAllWorkspaces, - CCJourneyCreateWorkspace, - CCJourneyGetAllTemplate, - CCJourneyCreateTemplate, - CCJourneyGetAllPerson, - CCJourneyCreatePerson, - CCJourneyMergesIdentitiesPrimaryIdentity, - CCJourneyCreatesMergesAliasesIndividualJds, - CCJourneyGetAllActions, - CCJourneyGetTemplateSearchedTemplateName, - CCJourneySearchIdentityAliases, - CCJourneyGetAllActionsTemplate, - CCJourneyCreateAction, - CCJourneyGetActionName, - CCJourneyGetActionActionid, - CCJourneyUpdateAction, - CCJourneyDeleteActionConfigurationActionid, - CCJourneyGetHistoricProfileViewTemplateName, - CCJourneyDeleteOneMoreIdentitiesPerson, - CCJourneyGetHistoricProfileView, - CCJourneyGetHistoricProfileViewIdentityTemplateName, - CCJourneyGetHistoricProfileViewIdentityTemplateId, - CCJourneyStreamProfileViewsTemplateName, - CCJourneyStreamProfileViews, - CCJourneyGetHistoricEvents, - CCJourneyStreamEventsIdentity, - CCJourneyEventPosting, - CCCampaignManagerStartRequest, - CCCampaignManagerUpdateRequest, - CCCampaignManagerStopRequest, - CCCampaignManagerGetValidTimes, - CCCapturesList, - CCFlowExportLegacy, - CCFlowImportLegacy, - CCFlowList, - CCFlowPublish, - CCFlowLock, - CCFlowUnlock, - CCFlowValidate, - CCFlowImport, - CCFlowGet, - CCFlowSaveDraft, - CCFlowPatchDraft, - CCFlowValidateDraft, - CCFlowExport, - CCFlowSearch, - CCFlowDelete, - CCCallbacksSchedule, - CCCallbacksGetScheduled, - CCCallbacksGetScheduledId, - CCCallbacksUpdateScheduledId, - CCCallbacksDeleteScheduledId, - CCAiFeatureGet, - CCAiFeaturePatch, - CCAiFeatureList, - CCAiFeatureCreateQuestionMappedAutocsat, - CCAiFeatureBulkSaveQuestionMappedAutocsat, - CCAiFeatureGetQuestionMappedAutocsatId, - CCAiFeatureDeleteQuestionMappedAutocsatId, - CCAiFeatureListQuestionMappedAutocsat, - CCAgentPersonalGreetingFilesCreate, - CCAgentPersonalGreetingFilesDeleteReferences, - CCAgentPersonalGreetingFilesGet, - CCAgentPersonalGreetingFilesUpdate, - CCAgentPersonalGreetingFilesDelete, - CCAgentPersonalGreetingFilesPatch, - CCAgentPersonalGreetingFilesList, - CCJourneyCustomerIdentificationDeletePersonId, - CCJourneyCustomerIdentificationCreateRemoveReplacePerson, - CCJourneyCustomerIdentificationCreateOneMoreIdentitiesPerson, - CCJourneyCustomerIdentificationDeleteOneMoreIdentitiesPerson, - CCJourneyCustomerIdentificationGetAllPerson, - CCJourneyCustomerIdentificationCreatePerson, - CCJourneyCustomerIdentificationMergesIdentitiesPrimaryIdentity, - CCJourneyCustomerIdentificationCreatesMergesAliasesIndividualJds, - CCJourneyCustomerIdentificationSearchIdentityAliases, - CCJourneyDataIngestionEventPosting, - CCJourneyProfileCreationInsightsGetTemplateSearchedTemplateId, - CCJourneyProfileCreationInsightsUpdateProfileviewtemplate, - CCJourneyProfileCreationInsightsDeleteTemplateTemplateId, - CCJourneyProfileCreationInsightsGetAllTemplate, - CCJourneyProfileCreationInsightsCreateTemplate, - CCJourneyProfileCreationInsightsGetTemplateSearchedTemplateName, - CCJourneyProfileCreationInsightsGetHistoricViewTemplateName, - CCJourneyProfileCreationInsightsGetHistoricView, - CCJourneyProfileCreationInsightsGetHistoricViewTemplateName2, - CCJourneyProfileCreationInsightsGetHistoricViewTemplateId, - CCJourneyProfileCreationInsightsStreamViewsTemplateName, - CCJourneyProfileCreationInsightsStreamViewsTemplateId, - CCJourneyProfileCreationInsightsGetHistoricEvents, - CCJourneyProfileCreationInsightsStreamEventsIdentity, - CCJourneySubscriptionGetWxcc, - CCJourneySubscriptionCreateWxcc, - CCJourneySubscriptionDeleteWxcc, - CCJourneyTriggerActionsGetAll, - CCJourneyTriggerActionsGetAllTemplate, - CCJourneyTriggerActionsCreate, - CCJourneyTriggerActionsGetName, - CCJourneyTriggerActionsGetActionid, - CCJourneyTriggerActionsUpdate, - CCJourneyTriggerActionsDeleteConfigurationActionid, - CCJourneyWorkspaceManagementGet, - CCJourneyWorkspaceManagementUpdate, - CCJourneyWorkspaceManagementDelete, - CCJourneyWorkspaceManagementGetAll, - CCJourneyWorkspaceManagementCreate, - CCDncManagementCreatePhoneNumberList, - CCDncManagementGetPhoneNumberList, - CCDncManagementDeletePhoneNumberList, - CCResourceCollectionCreate, - CCResourceCollectionBulkPartialUpdate, - CCResourceCollectionUpdateDefault, - CCResourceCollectionGet, - CCResourceCollectionUpdate, - CCResourceCollectionDelete, - CCResourceCollectionListReferences, - CCResourceCollectionList, - CCContactListManagementCreate, - CCContactListManagementCreateWithin, - CCContactListManagementUpdateStatusWithin, - CCContactListManagementUpdateStatus, - CCContactListManagementGetWithinCampaign, - CCContactListManagementUpdateStatusAcrossCampaignChain, - CCAgentSummariesList, - CCAgentSummariesList2, - CCAiAssistantGetSuggestions, - CCActivitiesListDefinitions, - CCActivitiesDescribe, - CCActivitiesGetInputChoices, - CCEventsListSpecifications, - CCFunctionsList, - CCFunctionsCreate, - CCFunctionsGet, - CCFunctionsUpdate, - CCFunctionsDelete, - CCFunctionsImport, - CCFunctionsUnlock, - CCFunctionsLock, - CCFunctionsTest, - CCFunctionsPublish, - CCFunctionsExport, - CCFunctionsListOptions, - CCTemplatesListFlow, - CCTemplatesGetFlow, - CCCampaignGroupList, - CCSearchMetadataGet, - CCAssetCreate, - CCAssetBulkSave, - CCAssetGet, - CCAssetUpdate, - CCAssetDelete, - CCAssetPatch, - CCAssetListReferences, - CCAssetList, - CCChannelCreate, - CCChannelBulkSave, - CCChannelGet, - CCChannelUpdate, - CCChannelDelete, - CCChannelPatch, - CCChannelListReferences, - CCChannelList, - CCUsageReportsListResourceTypes, - CCUsageReportsCreate, - CCUsageReportsList, - CCUsageReportsGet, - CCUsageReportsDelete, - CCUsageReportsDownloadFile, - CCExternalDataUpdatesUpdateTaskGlobalVariables, - CCCallMonitoringConfigCreate, - CCCallMonitoringConfigDeleteReferences, - CCCallMonitoringConfigGet, - CCCallMonitoringConfigUpdate, - CCCallMonitoringConfigDelete, - CCCallMonitoringConfigPatch, - CCCallMonitoringConfigList, - CCOrganizationSettingList, - CCOrganizationSettingGet, - CCOrganizationSettingUpdate, - CCOrganizationSettingPatch, - CCTenantConfigurationList, - CCTenantConfigurationGet, - CCTenantConfigurationUpdate, - CCAiAgentList, - CCAiAgentGet, - CCAiAgentCreate, - CCAiAgentUpdate, - CCAiAgentDelete, - CCAiAgentGetConfiguration, - CCAiAgentListVersions, - CCAiAgentExport, - CCAiAgentPublish, - CCAiAgentCreateTool, - CCAiAgentUpdateTool, - CCAiAgentDeleteTool, - CCAiAgentSessionList, - CCAiAgentSessionGet, - CCAiAgentSessionListMessages, - CCAiAgentTranscriptCreateAuditRecord, - CCAiAgentTranscriptGetSession, - CCAiAgentTranscriptListMessages, -} diff --git a/pkg/webexops/zz_device.go b/pkg/webexops/zz_device.go deleted file mode 100644 index 30f6fa2..0000000 --- a/pkg/webexops/zz_device.go +++ /dev/null @@ -1,1563 +0,0 @@ -// Code generated by codegen/generate_cli.py; DO NOT EDIT. - -package webexops - -var DeviceDeviceCallGetMembers = &Operation{ - ID: "DeviceDeviceCallGetMembers", Area: "device", Group: "device-call", Command: "get-members", - Summary: "Get Device Members", - Description: "Get the list of all the members of the device including primary and secondary users.\n\nA device member can be either a person or a workspace. An admin can access the list of member details, modify member details and\nsearch for available members on a device.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/devices/{deviceId}/members", Host: HostWebex, - Params: []Param{ - {Name: "deviceId", In: InPath, Flag: "device-id", Usage: "Unique identifier for the device."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieves the list of all members of the device in this organization."}, - }, -} - -var DeviceDeviceCallUpdateMembers = &Operation{ - ID: "DeviceDeviceCallUpdateMembers", Area: "device", Group: "device-call", Command: "update-members", - Summary: "Update Members on the device", - Description: "Modify member details on the device.\n\nA device member can be either a person, virtual line or a workspace. An admin can access the list of member details, modify member details and\nsearch for available members on a device.\n\nModifying members on the device requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/devices/{deviceId}/members", Host: HostWebex, - Params: []Param{ - {Name: "deviceId", In: InPath, Flag: "device-id", Usage: "Unique identifier for the device."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Modify members on the device in this organization."}, - }, - Body: &Body{}, -} - -var DeviceDeviceCallSearchMembers = &Operation{ - ID: "DeviceDeviceCallSearchMembers", Area: "device", Group: "device-call", Command: "search-members", - Summary: "Search Members", - Description: "Search members that can be assigned to the device.\n\nA device member can be either a person or a workspace. A admin can access the list of member details, modify member details and\nsearch for available members on a device.\n\nThis requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/devices/{deviceId}/availableMembers", Host: HostWebex, - Params: []Param{ - {Name: "deviceId", In: InPath, Flag: "device-id", Usage: "Unique identifier for the device."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieves the list of available members on the device in this organization."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Specifies the offset from the first result that you want to fetch."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Specifies the maximum number of records that you want to fetch."}, - {Name: "memberName", In: InQuery, Flag: "member-name", Usage: "Search (Contains) numbers based on member name."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Search (Contains) based on number."}, - {Name: "locationId", In: InQuery, Flag: "location-id", Usage: "Unique identifier for the location."}, - {Name: "extension", In: InQuery, Flag: "extension", Usage: "Search (Contains) based on extension."}, - {Name: "usageType", In: InQuery, Flag: "usage-type", Usage: "Search for members eligible to become the owner of the device, or share line on the device."}, - {Name: "order", In: InQuery, Flag: "order", Usage: "Sort the list of available members on the device in ascending order by name, use either last name `lname` or first name `fname`. Default: last name in ascending order."}, - }, - Paging: &Paging{}, -} - -var DeviceDeviceCallApplyChanges = &Operation{ - ID: "DeviceDeviceCallApplyChanges", Area: "device", Group: "device-call", Command: "apply-changes", - Summary: "Apply Changes for a specific device", - Description: "Issues request to the device to download and apply changes to the configuration.\n\nApplying changes for a specific device requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/devices/{deviceId}/actions/applyChanges/invoke", Host: HostWebex, - Params: []Param{ - {Name: "deviceId", In: InPath, Flag: "device-id", Usage: "Unique identifier for the device."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Apply changes for a device in this organization."}, - }, -} - -var DeviceDeviceCallGetSettings = &Operation{ - ID: "DeviceDeviceCallGetSettings", Area: "device", Group: "device-call", Command: "get-settings", - Summary: "Get Device Settings", - Description: "Get override settings for a device.\n\nDevice settings lists all the applicable settings for MPP, ATA and Wifi devices at the device level. An admin can also modify the settings. DECT devices do not support settings at the device level.\n\nThis requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/devices/{deviceId}/settings", Host: HostWebex, - Params: []Param{ - {Name: "deviceId", In: InPath, Flag: "device-id", Usage: "Unique identifier for the device."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Settings on the device in this organization."}, - {Name: "deviceModel", In: InQuery, Flag: "device-model", Usage: "The model type of the device. The corresponding device model display name sometimes called the product name, can also be used to specify the model."}, - }, -} - -var DeviceDeviceCallUpdateSettings = &Operation{ - ID: "DeviceDeviceCallUpdateSettings", Area: "device", Group: "device-call", Command: "update-settings", - Summary: "Update device settings", - Description: "Modify override settings for a device.\n\nDevice settings list all the applicable settings for an MPP and an ATA devices at the device level. Admins can also modify the settings. NOTE: DECT devices do not support settings at the device level.\n\nUpdating settings on the device requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/devices/{deviceId}/settings", Host: HostWebex, - Params: []Param{ - {Name: "deviceId", In: InPath, Flag: "device-id", Usage: "Unique identifier for the device."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization in which the device resides.."}, - {Name: "deviceModel", In: InQuery, Flag: "device-model", Usage: "The model type of the device. The corresponding device model display name sometimes called the product name, can also be used to specify the model."}, - }, - Body: &Body{}, -} - -var DeviceDeviceCallGetLocationSettings = &Operation{ - ID: "DeviceDeviceCallGetLocationSettings", Area: "device", Group: "device-call", Command: "get-location-settings", - Summary: "Get Location Device Settings", - Description: "Get device override settings for a location.\n\nThis requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/locations/{locationId}/devices/settings", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Unique identifier for the location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization in which the device resides."}, - }, -} - -var DeviceDeviceCallGetWebexCalling = &Operation{ - ID: "DeviceDeviceCallGetWebexCalling", Area: "device", Group: "device-call", Command: "get-webex-calling", - Summary: "Get Webex Calling Device Details", - Description: "
Not supported for Webex for Government (FedRAMP)
\n\nRetrieves Webex Calling device details that include information needed for third-party device management.\n\nWebex calling devices are associated with a specific user Workspace or Virtual Line. Webex Calling devices share the location with the entity that owns them.\n\nPerson or workspace to which the device is assigned. Its fields point to a primary line/port of the device.\n\nRequires a full, location, user, or read-only admin auth token with the scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/devices/{deviceId}", Host: HostWebex, - Params: []Param{ - {Name: "deviceId", In: InPath, Flag: "device-id", Usage: "Unique identifier for the device."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the device resides."}, - }, -} - -var DeviceDeviceCallUpdateThirdParty = &Operation{ - ID: "DeviceDeviceCallUpdateThirdParty", Area: "device", Group: "device-call", Command: "update-third-party", - Summary: "Update Third Party Device", - Description: "
Not supported for Webex for Government (FedRAMP)
\n\nModify a device's `sipPassword`.\n\nUpdating `sipPassword` on the device requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/devices/{deviceId}", Host: HostWebex, - Params: []Param{ - {Name: "deviceId", In: InPath, Flag: "device-id", Usage: "Unique identifier for the device."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "ID of the organization in which the device resides."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "sipPassword", Flag: "sip-password", Type: "string"}, - }}, -} - -var DeviceDeviceCallGetPerson = &Operation{ - ID: "DeviceDeviceCallGetPerson", Area: "device", Group: "device-call", Command: "get-person", - Summary: "Get Person Devices", - Description: "Get all devices for a person.\n\nThis requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/{personId}/devices", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Person for whom to retrieve devices."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization to which the person belongs."}, - }, -} - -var DeviceDeviceCallUpdateHotelingSettingsPersonPrimary = &Operation{ - ID: "DeviceDeviceCallUpdateHotelingSettingsPersonPrimary", Area: "device", Group: "device-call", Command: "update-hoteling-settings-person-primary", - Summary: "Modify Hoteling Settings for a Person's Primary Devices", - Description: "Modify hoteling login configuration on a person's Webex Calling Devices which are in effect when the device is the user's primary device and device type is PRIMARY. To view the current hoteling login settings, see the `hoteling` field in [Get Person Devices](/docs/api/v1/device-call-settings/get-person-devices).\n\nModifying devices for a person requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/{personId}/devices/settings/hoteling", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "ID of the person associated with the device."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization to which the person belongs."}, - }, - Body: &Body{}, -} - -var DeviceDeviceCallGetWorkspace = &Operation{ - ID: "DeviceDeviceCallGetWorkspace", Area: "device", Group: "device-call", Command: "get-workspace", - Summary: "Get Workspace Devices", - Description: "Get all devices for a workspace.\n\nThis requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/workspaces/{workspaceId}/devices", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "ID of the workspace for which to retrieve devices."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization to which the workspace belongs."}, - }, -} - -var DeviceDeviceCallUpdateWorkspace = &Operation{ - ID: "DeviceDeviceCallUpdateWorkspace", Area: "device", Group: "device-call", Command: "update-workspace", - Summary: "Modify Workspace Devices", - Description: "Modify devices for a workspace.\n\nModifying devices for a workspace requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/workspaces/{workspaceId}/devices", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "ID of the workspace for which to modify devices."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization to which the workspace belongs."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "enabled", Flag: "enabled", Type: "bool"}, - {Name: "limitGuestUse", Flag: "limit-guest-use", Type: "bool"}, - {Name: "guestHoursLimit", Flag: "guest-hours-limit", Type: "int64"}, - }}, -} - -var DeviceDeviceCallListSupported = &Operation{ - ID: "DeviceDeviceCallListSupported", Area: "device", Group: "device-call", Command: "list-supported", - Summary: "Read the List of Supported Devices", - Description: "Gets the list of supported devices for an organization.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/supportedDevices", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List supported devices for an organization."}, - {Name: "allowConfigureLayoutEnabled", In: InQuery, Flag: "allow-configure-layout-enabled", Usage: "List supported devices that allow the user to configure the layout."}, - {Name: "type", In: InQuery, Flag: "type", Usage: "List supported devices of a specific type. To excluded device types from a request or query, add `type=not:DEVICE_TYPE`. For example, `type=not:MPP`."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var DeviceDeviceCallGetOverrideSettings = &Operation{ - ID: "DeviceDeviceCallGetOverrideSettings", Area: "device", Group: "device-call", Command: "get-override-settings", - Summary: "Read the device override settings for a organization", - Description: "Get device override settings for an organization.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/devices/settings", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List supported devices for an organization."}, - }, -} - -var DeviceDeviceCallCreateLineKeyTemplate = &Operation{ - ID: "DeviceDeviceCallCreateLineKeyTemplate", Area: "device", Group: "device-call", Command: "create-line-key-template", - Summary: "Create a Line Key Template", - Description: "Create a Line Key Template in this organization.\n\nLine Keys, also known as Programmable Line Keys (PLK), are the keys found on either side of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows customers to create a `Line Key Template` for a device model.\n\nCreating a Line Key Template requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/devices/lineKeyTemplates", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization to which the line key template belongs."}, - }, - Body: &Body{}, -} - -var DeviceDeviceCallListLineKeyTemplates = &Operation{ - ID: "DeviceDeviceCallListLineKeyTemplates", Area: "device", Group: "device-call", Command: "list-line-key-templates", - Summary: "Read the list of Line Key Templates", - Description: "List all Line Key Templates available for this organization.\n\nLine Keys also known as Programmable Line Keys (PLK) are the keys found on either sides of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to retrieve the list of Line Key Templates that are available for the organization.\n\nRetrieving this list requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/devices/lineKeyTemplates", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List line key templates for this organization."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var DeviceDeviceCallGetLineKeyTemplate = &Operation{ - ID: "DeviceDeviceCallGetLineKeyTemplate", Area: "device", Group: "device-call", Command: "get-line-key-template", - Summary: "Get details of a Line Key Template", - Description: "Get detailed information about a Line Key Template by template ID in an organization.\n\nLine Keys, also known as Programmable Line Keys (PLK), are the keys found on either side of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to retrieve a line key template by its ID in an organization.\n\nRetrieving a line key template requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/devices/lineKeyTemplates/{templateId}", Host: HostWebex, - Params: []Param{ - {Name: "templateId", In: InPath, Flag: "template-id", Usage: "Get line key template for this template ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve a line key template for this organization."}, - }, -} - -var DeviceDeviceCallUpdateLineKeyTemplate = &Operation{ - ID: "DeviceDeviceCallUpdateLineKeyTemplate", Area: "device", Group: "device-call", Command: "update-line-key-template", - Summary: "Modify a Line Key Template", - Description: "Modify a Line Key Template by its template ID in an organization.\n\nLine Keys, also known as Programmable Line Keys (PLK), are the keys found on either side of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to modify an existing Line Key Template by its ID in an organization.\n\nModifying an existing Line Key Template requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/devices/lineKeyTemplates/{templateId}", Host: HostWebex, - Params: []Param{ - {Name: "templateId", In: InPath, Flag: "template-id", Usage: "Modify line key template with this template ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Modify a line key template for this organization."}, - }, - Body: &Body{}, -} - -var DeviceDeviceCallDeleteLineKeyTemplate = &Operation{ - ID: "DeviceDeviceCallDeleteLineKeyTemplate", Area: "device", Group: "device-call", Command: "delete-line-key-template", - Summary: "Delete a Line Key Template", - Description: "Delete a Line Key Template by its template ID in an organization.\n\nLine Keys also known as Programmable Line Keys (PLK) are the keys found on either sides of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to delete an existing Line Key Templates by its ID in an organization.\n\nDeleting an existing line key template requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/devices/lineKeyTemplates/{templateId}", Host: HostWebex, - Params: []Param{ - {Name: "templateId", In: InPath, Flag: "template-id", Usage: "Delete line key template with this template ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Delete a line key template for this organization."}, - }, -} - -var DeviceDeviceCallPreviewApplyLineKeyTemplate = &Operation{ - ID: "DeviceDeviceCallPreviewApplyLineKeyTemplate", Area: "device", Group: "device-call", Command: "preview-apply-line-key-template", - Summary: "Preview Apply Line Key Template", - Description: "Preview the number of devices that will be affected by the application of a Line Key Template or when resetting devices to their factory Line Key settings.\n\nLine Keys, also known as Programmable Line Keys (PLK), are the keys found on either side of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to preview the number of devices that will be affected if a customer were to apply a Line Key Template or apply factory default Line Key settings to devices.\n\nRetrieving the number of devices affected requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/devices/actions/previewApplyLineKeyTemplate/invoke", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Preview Line Key Template for this organization."}, - }, - Body: &Body{}, -} - -var DeviceDeviceCallApplyLineKeyTemplate = &Operation{ - ID: "DeviceDeviceCallApplyLineKeyTemplate", Area: "device", Group: "device-call", Command: "apply-line-key-template", - Summary: "Apply a Line Key Template", - Description: "Apply a Line Key Template or reset devices to their factory Line Key settings.\n\nLine Keys, also known as Programmable Line Keys (PLK), are the keys found on either side of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to apply a line key template or apply factory default Line Key settings to devices in a set of locations or across all locations in the organization.\n\nApplying a Line Key Template or resetting devices to their default Line Key configuration requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/jobs/devices/applyLineKeyTemplate", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Apply Line Key Template for this organization."}, - }, - Body: &Body{}, -} - -var DeviceDeviceCallListApplyLineKeyTemplateJobs = &Operation{ - ID: "DeviceDeviceCallListApplyLineKeyTemplateJobs", Area: "device", Group: "device-call", Command: "list-apply-line-key-template-jobs", - Summary: "Get List of Apply Line Key Template jobs", - Description: "Get the list of all apply line key templates jobs in an organization.\n\nLine Keys also known as Programmable Line Keys (PLK) are the keys found on either sides of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to retrieve all the apply line key templates jobs in an organization.\n\nRetrieving the list of apply line key templates jobs in an organization requires a full, user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/jobs/devices/applyLineKeyTemplate", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve list of line key templates jobs in this organization."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var DeviceDeviceCallGetJobStatusApplyLineKeyTemplateJob = &Operation{ - ID: "DeviceDeviceCallGetJobStatusApplyLineKeyTemplateJob", Area: "device", Group: "device-call", Command: "get-job-status-apply-line-key-template-job", - Summary: "Get the job status of an Apply Line Key Template job", - Description: "Get the status of an apply line key template job by its job ID.\n\nLine Keys also known as Programmable Line Keys (PLK) are the keys found on either sides of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to check the status of an apply line key templates job by job ID in an organization.\n\nChecking the the status of an apply line key templates job in an organization requires a full, user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/jobs/devices/applyLineKeyTemplate/{jobId}", Host: HostWebex, - Params: []Param{ - {Name: "jobId", In: InPath, Flag: "job-id", Usage: "Retrieve job status for this `jobId`."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Check a line key template job status in this organization."}, - }, -} - -var DeviceDeviceCallGetJobErrorsApplyLineKeyTemplateJob = &Operation{ - ID: "DeviceDeviceCallGetJobErrorsApplyLineKeyTemplateJob", Area: "device", Group: "device-call", Command: "get-job-errors-apply-line-key-template-job", - Summary: "Get job errors for an Apply Line Key Template job", - Description: "GET job errors for an apply Line Key Template job in an organization.\n\nLine Keys also known as Programmable Line Keys (PLK) are the keys found on either sides of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to retrieve all the errors of an apply line key templates job by job ID in an organization.\n\nRetrieving all the errors of an apply line key templates job in an organization requires a full, user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/jobs/devices/applyLineKeyTemplate/{jobId}/errors", Host: HostWebex, - Params: []Param{ - {Name: "jobId", In: InPath, Flag: "job-id", Usage: "Retrieve job errors for this `jobId`."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve list of errors for an apply line key template job in this organization."}, - }, -} - -var DeviceDeviceCallGetDectTypeListDeprecated = &Operation{ - ID: "DeviceDeviceCallGetDectTypeListDeprecated", Area: "device", Group: "device-call", Command: "get-dect-type-list-deprecated", - Summary: "Read the DECT device type list - Deprecated", - Description: "
Not supported for Webex for Government (FedRAMP).
\n\n
The REST path for this API has changed to [GET /telephony/config/devices/dectNetworks/supportedDevices{?orgId}]. The use of this old REST path is deprecated and will be decommissioned on October 10, 2024. Please start using it for all future projects.
\n\nGet DECT device type list with base stations and line ports supported count. This is a static list.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/devices/dects/supportedDevices", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id"}, - }, -} - -var DeviceDeviceCallGetDectTypeList = &Operation{ - ID: "DeviceDeviceCallGetDectTypeList", Area: "device", Group: "device-call", Command: "get-dect-type-list", - Summary: "Read the DECT device type list", - Description: "
Not supported for Webex for Government (FedRAMP).
\n\nGet DECT device type list with base stations and line ports supported count. This is a static list.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/devices/dectNetworks/supportedDevices", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id"}, - }, -} - -var DeviceDeviceCallValidateListMacAddress = &Operation{ - ID: "DeviceDeviceCallValidateListMacAddress", Area: "device", Group: "device-call", Command: "validate-list-mac-address", - Summary: "Validate a list of MAC address", - Description: "Validate a list of MAC addresses.\n\nValidating this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/devices/actions/validateMacs/invoke", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Validate the mac address(es) for this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "macs", Flag: "macs", Type: "[]string"}, - }}, -} - -var DeviceDeviceCallUpdateSettingsAcrossOrgLocationJob = &Operation{ - ID: "DeviceDeviceCallUpdateSettingsAcrossOrgLocationJob", Area: "device", Group: "device-call", Command: "update-settings-across-org-location-job", - Summary: "Change Device Settings Across Organization Or Location Job", - Description: "Change device settings across organization or locations jobs.\n\nPerforms bulk and asynchronous processing for all types of device settings initiated by organization and system admins in a stateful persistent manner. This job will modify the requested device settings across all the devices. Whenever a location ID is specified in the request, it will modify the requested device settings only for the devices that are part of the provided location within an organization.\n\nReturns a unique job ID which can then be utilized further to retrieve status and errors for the same.\n\nOnly one job per customer can be running at any given time within the same organization. An attempt to run multiple jobs at the same time will result in a 409 error response.\n\nRunning a job requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/jobs/devices/callDeviceSettings", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Apply change device settings for all the devices under this organization."}, - }, - Body: &Body{}, -} - -var DeviceDeviceCallListChangeSettingsJobs = &Operation{ - ID: "DeviceDeviceCallListChangeSettingsJobs", Area: "device", Group: "device-call", Command: "list-change-settings-jobs", - Summary: "List Change Device Settings Jobs", - Description: "List change device settings jobs.\n\nLists all the jobs for jobType `calldevicesettings` for the given organization in order of most recent one to oldest one irrespective of its status.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/jobs/devices/callDeviceSettings", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve list of 'calldevicesettings' jobs for this organization."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of jobs. Default is 0."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of jobs returned to this maximum count. Default is 2000."}, - }, - Paging: &Paging{}, -} - -var DeviceDeviceCallGetChangeSettingsJobStatus = &Operation{ - ID: "DeviceDeviceCallGetChangeSettingsJobStatus", Area: "device", Group: "device-call", Command: "get-change-settings-job-status", - Summary: "Get Change Device Settings Job Status", - Description: "Get change device settings job status.\n\nProvides details of the job with `jobId` of `jobType` `calldevicesettings`.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/jobs/devices/callDeviceSettings/{jobId}", Host: HostWebex, - Params: []Param{ - {Name: "jobId", In: InPath, Flag: "job-id", Usage: "Retrieve job details for this `jobId`."}, - }, -} - -var DeviceDeviceCallListChangeSettingsJobErrors = &Operation{ - ID: "DeviceDeviceCallListChangeSettingsJobErrors", Area: "device", Group: "device-call", Command: "list-change-settings-job-errors", - Summary: "List Change Device Settings Job Errors", - Description: "List change device settings job errors.\n\nLists all error details of the job with `jobId` of `jobType` `calldevicesettings`.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/jobs/devices/callDeviceSettings/{jobId}/errors", Host: HostWebex, - Params: []Param{ - {Name: "jobId", In: InPath, Flag: "job-id", Usage: "Retrieve job details for this `jobId`."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve list of jobs for this organization."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Specifies the offset from the first result that you want to fetch. Default is 0."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Specifies the maximum number of records that you want to fetch. Default is 2000"}, - }, - Paging: &Paging{}, -} - -var DeviceDeviceCallGetLayoutId = &Operation{ - ID: "DeviceDeviceCallGetLayoutId", Area: "device", Group: "device-call", Command: "get-layout-id", - Summary: "Get Device Layout by Device ID", - Description: "Get layout information of a device by device ID in an organization.\n\nDevice layout customizes a user’s programmable line keys (PLK) on the phone and any attached Key Expansion Modules (KEM) with the existing configured line members and the user’s monitoring list.\n\n**Note:** When `layoutMode` is DEFAULT, the response includes only `layoutMode` and `userReorderEnabled`. The `lineKeys` field is omitted as the device uses system-assigned default line-key assignments. When `layoutMode` is CUSTOM, the response includes the `lineKeys` array with the custom line-key configuration.\n\nThis API requires a full or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/devices/{deviceId}/layout", Host: HostWebex, - Params: []Param{ - {Name: "deviceId", In: InPath, Flag: "device-id", Usage: "Get device layout for this device ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve a device layout for the device in this organization."}, - }, -} - -var DeviceDeviceCallUpdateLayoutId = &Operation{ - ID: "DeviceDeviceCallUpdateLayoutId", Area: "device", Group: "device-call", Command: "update-layout-id", - Summary: "Modify Device Layout by Device ID", - Description: "Modify the layout of a device by device ID in an organization.\n\nDevice layout customizes a user’s programmable line keys (PLK) on the phone and any attached Key Expansion Modules (KEM) with the existing configured line members and the user’s monitoring list.\n\n**Note:** When setting `layoutMode` to DEFAULT, do not include the `lineKeys` field in the request body. The device will use system-assigned default line-key assignments. When setting `layoutMode` to CUSTOM, you must include the `lineKeys` array to specify the custom line-key configuration.\n\nThis API requires a full or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/devices/{deviceId}/layout", Host: HostWebex, - Params: []Param{ - {Name: "deviceId", In: InPath, Flag: "device-id", Usage: "Modify device layout for this device ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Modify a device layout for the device in this organization."}, - }, - Body: &Body{}, -} - -var DeviceDeviceCallRebuildPhonesConfiguration = &Operation{ - ID: "DeviceDeviceCallRebuildPhonesConfiguration", Area: "device", Group: "device-call", Command: "rebuild-phones-configuration", - Summary: "Rebuild Phones Configuration", - Description: "
Not supported for Webex for Government (FedRAMP)
.\n\nRebuild all phone configurations for the specified location.\n\nRebuild phones jobs are used when there is a change in the network configuration of phones in a location, i.e. a change in the network configuration of devices in a location from public to private and vice-versa.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/jobs/devices/rebuildPhones", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Rebuild phones for this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "locationId", Flag: "location-id", Type: "string"}, - }}, -} - -var DeviceDeviceCallListRebuildPhonesJobs = &Operation{ - ID: "DeviceDeviceCallListRebuildPhonesJobs", Area: "device", Group: "device-call", Command: "list-rebuild-phones-jobs", - Summary: "List Rebuild Phones Jobs", - Description: "
Not supported for Webex for Government (FedRAMP)
.\n\nGet the list of all Rebuild Phones jobs in an organization.\n\nRebuild phones jobs are used when there is a change in the network configuration of phones in a location, i.e. a change in the network configuration of devices in a location from public to private and vice-versa.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/jobs/devices/rebuildPhones", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List of rebuild phones jobs in this organization."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var DeviceDeviceCallGetJobStatusRebuildPhonesJob = &Operation{ - ID: "DeviceDeviceCallGetJobStatusRebuildPhonesJob", Area: "device", Group: "device-call", Command: "get-job-status-rebuild-phones-job", - Summary: "Get the Job Status of a Rebuild Phones Job", - Description: "
Not supported for Webex for Government (FedRAMP)
.\n\nGet the details of a rebuild phones job by its job ID.\n\nRebuild phones jobs are used when there is a change in the network configuration of phones in a location, i.e. a change in the network configuration of devices in a location from public to private and vice-versa.\n\nThis API requires requires a full administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/jobs/devices/rebuildPhones/{jobId}", Host: HostWebex, - Params: []Param{ - {Name: "jobId", In: InPath, Flag: "job-id", Usage: "Retrieve job status for this `jobId`."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Check a rebuild phones job status in this organization."}, - }, -} - -var DeviceDeviceCallGetJobErrorsRebuildPhonesJob = &Operation{ - ID: "DeviceDeviceCallGetJobErrorsRebuildPhonesJob", Area: "device", Group: "device-call", Command: "get-job-errors-rebuild-phones-job", - Summary: "Get Job Errors for a Rebuild Phones Job", - Description: "
Not supported for Webex for Government (FedRAMP)
.\n\nGet errors for a rebuild phones job in an organization.\n\nRebuild phones jobs are used when there is a change in the network configuration of phones in a location, i.e. a change in the network configuration of devices in a location from public to private and vice-versa.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/jobs/devices/rebuildPhones/{jobId}/errors", Host: HostWebex, - Params: []Param{ - {Name: "jobId", In: InPath, Flag: "job-id", Usage: "Retrieve job errors for this `jobId`."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve list of errors for a rebuild phones job in this organization."}, - }, -} - -var DeviceDeviceCallGetSettingsPerson = &Operation{ - ID: "DeviceDeviceCallGetSettingsPerson", Area: "device", Group: "device-call", Command: "get-settings-person", - Summary: "Get Device Settings for a Person", - Description: "Device settings list the compression settings for a person.\n\nDevice settings customize a device's behavior and performance. The compression field optimizes call quality for inbound and outbound calls.\n\nThis API requires a full, location, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/{personId}/devices/settings", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "ID of the person for whom to retrieve device settings."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieves the device settings for a person in this organization."}, - }, -} - -var DeviceDeviceCallUpdateSettingsPerson = &Operation{ - ID: "DeviceDeviceCallUpdateSettingsPerson", Area: "device", Group: "device-call", Command: "update-settings-person", - Summary: "Update Device Settings for a Person", - Description: "Update device settings modifies the compression settings for a person.\n\nDevice settings customize a device's behavior and performance. The compression field optimizes call quality for inbound and outbound calls.\n\nThis API requires a full, location, or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/people/{personId}/devices/settings", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "ID of the person for whom to update device settings."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Modify device settings for a person in this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "compression", Flag: "compression", Type: "string"}, - }}, -} - -var DeviceDeviceCallGetSettingsWorkspace = &Operation{ - ID: "DeviceDeviceCallGetSettingsWorkspace", Area: "device", Group: "device-call", Command: "get-settings-workspace", - Summary: "Get Device Settings for a Workspace", - Description: "Device settings list the compression settings for a workspace.\n\nDevice settings customize a device's behavior and performance. The compression field optimizes call quality for inbound and outbound calls.\n\nThis API requires a full, location, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/workspaces/{workspaceId}/devices/settings", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "ID of the workspace for which to retrieve device settings."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieves the device settings for a workspace in this organization."}, - }, -} - -var DeviceDeviceCallUpdateSettingsWorkspace = &Operation{ - ID: "DeviceDeviceCallUpdateSettingsWorkspace", Area: "device", Group: "device-call", Command: "update-settings-workspace", - Summary: "Update Device Settings for a Workspace", - Description: "Update device settings modifies the compression settings for a workspace.\n\nDevice settings customize a device's behavior and performance. The compression field optimizes call quality for inbound and outbound calls.\n\nThis API requires a full, location, or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/workspaces/{workspaceId}/devices/settings", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "ID of the workspace for which to update device settings."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Modify the device settings for a workspace in this organization."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "compression", Flag: "compression", Type: "string"}, - }}, -} - -var DeviceDeviceCallListBackgroundImages = &Operation{ - ID: "DeviceDeviceCallListBackgroundImages", Area: "device", Group: "device-call", Command: "list-background-images", - Summary: "Read the List of Background Images", - Description: "Gets the list of device background images for an organization.\n\nWebex Calling supports the upload of up to 100 background image files for each org. These image files can then be referenced by MPP phones in that org for use as their background image.\n\nRetrieving this list requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/devices/backgroundImages", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieves the list of images in this organization."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var DeviceDeviceCallDeleteBackgroundImages = &Operation{ - ID: "DeviceDeviceCallDeleteBackgroundImages", Area: "device", Group: "device-call", Command: "delete-background-images", - Summary: "Delete Device Background Images", - Description: "Delete the list of designated device background images for an organization. Maximum is 10 images per request.\n\nDeleting a device background image requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "DELETE", Path: "/telephony/config/devices/backgroundImages", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Deletes the list of images in this organization."}, - }, - Body: &Body{}, -} - -var DeviceDeviceCallUploadBackgroundImage = &Operation{ - ID: "DeviceDeviceCallUploadBackgroundImage", Area: "device", Group: "device-call", Command: "upload-background-image", - Summary: "Upload a Device Background Image", - Description: "Configure a device's background image by uploading an image with file format, `.jpeg` or `.png`, encoded image file. Maximum image file size allowed to upload is 625 KB.\n\nThe request must be a multipart/form-data request rather than JSON, using the image/jpeg or image/png content-type.\n\nWebex Calling supports the upload of up to 100 background image files for each org. These image files can then be referenced by MPP phones in that org for use as their background image.\n\nUploading a device background image requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**WARNING:** This API is not callable using the developer portal web interface due to the lack of support for multipart POST. This API can be utilized using other tools that support multipart POST, such as Postman.", - Method: "POST", Path: "/telephony/config/devices/{deviceId}/actions/backgroundImageUpload/invoke", Host: HostWebex, - Params: []Param{ - {Name: "deviceId", In: InPath, Flag: "device-id", Usage: "Unique identifier for the device."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Uploads the image in this organization."}, - }, -} - -var DeviceDeviceCallGetUserCount = &Operation{ - ID: "DeviceDeviceCallGetUserCount", Area: "device", Group: "device-call", Command: "get-user-count", - Summary: "Get User Devices Count", - Description: "Get the total device and application count for a person.\n\nThe device count can be used to determine if more devices can be added for users with a device count limit. For example, users with standard calling licenses can only have one physical device.\n\nThis requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/people/{personId}/devices/count", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "Person for whom to retrieve the device count."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization to which the person belongs."}, - }, -} - -var DeviceDeviceCallGetCountMembers = &Operation{ - ID: "DeviceDeviceCallGetCountMembers", Area: "device", Group: "device-call", Command: "get-count-members", - Summary: "Get Count of Members", - Description: "Get the count of members that can be assigned to the device.\n\nA device member can be either a person or a workspace.\n\nThis requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/devices/{deviceId}/availableMembers/count", Host: HostWebex, - Params: []Param{ - {Name: "deviceId", In: InPath, Flag: "device-id", Usage: "Unique identifier for the device."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieves the count of available members on the device in this organization."}, - {Name: "memberName", In: InQuery, Flag: "member-name", Usage: "Search (Contains) numbers based on member name."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Search (Contains) based on number."}, - {Name: "locationId", In: InQuery, Flag: "location-id", Usage: "Unique identifier for the location."}, - {Name: "extension", In: InQuery, Flag: "extension", Usage: "Search (Contains) based on extension."}, - {Name: "usageType", In: InQuery, Flag: "usage-type", Usage: "Search for members eligible to become the owner of the device, or share line on the device.\n * `DEVICE_OWNER` - Search for members eligible to become the owner of the device.\n * `SHARED_LINE` - Search for members eligible to share line on the device."}, - }, -} - -var DeviceDeviceCallGetCountAvailableMembers = &Operation{ - ID: "DeviceDeviceCallGetCountAvailableMembers", Area: "device", Group: "device-call", Command: "get-count-available-members", - Summary: "Get Count of Available Members", - Description: "Get the count of members that can be assigned to devices.\n\nA device member can be either a person or a workspace.\n\nThis requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/devices/availableMembers/count", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieves the count of available members in this organization."}, - {Name: "memberName", In: InQuery, Flag: "member-name", Usage: "Search (Contains) numbers based on member name."}, - {Name: "phoneNumber", In: InQuery, Flag: "phone-number", Usage: "Search (Contains) based on number."}, - {Name: "locationId", In: InQuery, Flag: "location-id", Usage: "Unique identifier for the location."}, - {Name: "extension", In: InQuery, Flag: "extension", Usage: "Search (Contains) based on extension."}, - {Name: "usageType", In: InQuery, Flag: "usage-type", Usage: "Search for members eligible to become the owner of the device, or share line on the device.\n * `DEVICE_OWNER` - Search for members eligible to become the owner of the device.\n * `SHARED_LINE` - Search for members eligible to share line on the device."}, - {Name: "excludeVirtualLine", In: InQuery, Flag: "exclude-virtual-line", Usage: "If true, filters out virtual lines from the available members list."}, - {Name: "deviceLocationId", In: InQuery, Flag: "device-location-id", Usage: "Unique identifier for the device's location. When specified, filters available members to those in the same location as the device."}, - }, -} - -var DeviceDeviceCallListSupported2 = &Operation{ - ID: "DeviceDeviceCallListSupported2", Area: "device", Group: "device-call", Command: "list-supported-2", - Summary: "Read the List of Supported Devices", - Description: "Gets the list of supported devices for an organization.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/supportedDevices", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List supported devices for an organization."}, - {Name: "allowConfigureLayoutEnabled", In: InQuery, Flag: "allow-configure-layout-enabled", Usage: "List supported devices that allow the user to configure the layout."}, - {Name: "type", In: InQuery, Flag: "type", Usage: "List supported devices of a specific type. To excluded device types from a request or query, add `type=not:DEVICE_TYPE`. For example, `type=not:MPP`."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var DeviceDeviceCallGetValidationSchema = &Operation{ - ID: "DeviceDeviceCallGetValidationSchema", Area: "device", Group: "device-call", Command: "get-validation-schema", - Summary: "Get Validation Schema", - Description: "This API returns the validation schema for `tags` of all or specific `familyOrModelDisplayName`.\n\nThe schema is used to validate the `tag` for devices in the `Webex Calling` platform. The schema includes information about the required fields, data types, and validation rules for each setting.", - Method: "GET", Path: "/telephony/config/devices/dynamicSettings/validationSchema", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Validation schema for devices in this organization."}, - {Name: "familyOrModelDisplayName", In: InQuery, Flag: "family-or-model-display-name", Usage: "Device family or model display name to filter the schema."}, - }, -} - -var DeviceDeviceCallGetSettingsGroups = &Operation{ - ID: "DeviceDeviceCallGetSettingsGroups", Area: "device", Group: "device-call", Command: "get-settings-groups", - Summary: "Get Settings Groups", - Description: "This API returns the `settingsGroups` that define the structure and association of tags for dynamic device settings.\n\n The `settingsGroups` are used to organize the tags into logical groups, making it easier to manage and configure dynamic device settings.", - Method: "GET", Path: "/telephony/config/devices/dynamicSettings/settingsGroups", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Settings groups for devices in this organization."}, - {Name: "familyOrModelDisplayName", In: InQuery, Flag: "family-or-model-display-name", Usage: "Device family or model display name to filter the `settingsGroups`."}, - {Name: "includeSettingsType", In: InQuery, Flag: "include-settings-type", Usage: "To show groups or tabs or both. Query param is case insensitive. Default is `ALL`."}, - }, -} - -var DeviceDeviceCallGetCustomerDynamicSettings = &Operation{ - ID: "DeviceDeviceCallGetCustomerDynamicSettings", Area: "device", Group: "device-call", Command: "get-customer-dynamic-settings", - Summary: "Get Customer Device Dynamic Settings", - Description: "Retrieve dynamic settings for specific device tags at customer level, allowing filters by `familyOrModelDisplayName` and `tag` identifier.\n\nThis API lets you request the values of multiple `Device Settings` at once by specifying a list of `familyOrModelDisplayName` and tag combinations.\n\nThis requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "POST", Path: "/telephony/config/lists/devices/dynamicSettings/actions/getSettings/invoke", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List of device dynamic settings in this organization."}, - {Name: "familyOrModelDisplayName", In: InQuery, Flag: "family-or-model-display-name", Usage: "(Required) The family or model name for the device. If no tag is specified, all tags related to `familyOrModelDisplayName` are returned."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "tags", Flag: "tags", Type: "[]string"}, - }}, -} - -var DeviceDeviceCallGetLocationDynamicSettings = &Operation{ - ID: "DeviceDeviceCallGetLocationDynamicSettings", Area: "device", Group: "device-call", Command: "get-location-dynamic-settings", - Summary: "Get Location Device Dynamic Settings", - Description: "Retrieve dynamic settings for specific device tags at the specified location level, allowing filters by `familyOrModelDisplayName` and `tag` identifier.\n\nThis API lets you request the values of multiple `Device Settings` at once by specifying a list of `familyOrModelDisplayName` and tag combinations for a specific location.\n\nThis requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "POST", Path: "/telephony/config/lists/locations/{locationId}/devices/dynamicSettings/actions/getSettings/invoke", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "(Required) Unique identifier for the `location`."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Unique identifier for the `organization` to which this location belongs."}, - {Name: "familyOrModelDisplayName", In: InQuery, Flag: "family-or-model-display-name", Usage: "(Required) The family or model name for the device. If no tag is specified, all tags related to `familyOrModelDisplayName` are returned."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "tags", Flag: "tags", Type: "[]string"}, - }}, -} - -var DeviceDeviceCallGetDynamicSettings = &Operation{ - ID: "DeviceDeviceCallGetDynamicSettings", Area: "device", Group: "device-call", Command: "get-dynamic-settings", - Summary: "Get Device Dynamic Settings", - Description: "Retrieve settings for a specified device.\n\nThis API retrieves device settings based on the specified `tags`; if the `tags` field is empty or missing, all settings for the device are returned.\n\nThis requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "POST", Path: "/telephony/config/lists/devices/{deviceId}/dynamicSettings/actions/getSettings/invoke", Host: HostWebex, - Params: []Param{ - {Name: "deviceId", In: InPath, Flag: "device-id", Usage: "(Required) Device for which to retrieve settings."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization to which the `device` belongs."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "tags", Flag: "tags", Type: "[]string"}, - }}, -} - -var DeviceDeviceCallUpdateSpecifiedSettings = &Operation{ - ID: "DeviceDeviceCallUpdateSpecifiedSettings", Area: "device", Group: "device-call", Command: "update-specified-settings", - Summary: "Update specified settings for the device.", - Description: "Modify dynamic settings for a specified device.\n\nThis API updates device settings based on the specified `tags`. If the `tags` field is empty, the request has no effect.\n\nThis requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/devices/{deviceId}/dynamicSettings", Host: HostWebex, - Params: []Param{ - {Name: "deviceId", In: InPath, Flag: "device-id", Usage: "(Required) Device for which to update settings."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization to which the device belongs."}, - }, - Body: &Body{}, -} - -var DeviceDeviceCallUpdatesDynamicSettingsAcrossOrgLocation = &Operation{ - ID: "DeviceDeviceCallUpdatesDynamicSettingsAcrossOrgLocation", Area: "device", Group: "device-call", Command: "updates-dynamic-settings-across-org-location", - Summary: "Updates dynamic Device Settings Across Organization Or Location", - Description: "Creates a job to update device settings at location or organization level.\n\nThe job runs asynchronously and persistently, applying the requested settings in bulk to all relevant devices, which may belong to multiple families as specified in the request. If a `locationId` is provided, only devices in that location are affected.\n\nA unique job ID is returned to track status and errors.\n\nOnly one job can run per customer per organization at a time. Additionally, this job cannot run in parallel with other device jobs such as [Call device settings](/docs/api/v1/device-call-settings/change-device-settings-across-organization-or-location-job) and [Rebuild Phones](/docs/api/v1/device-call-settings/rebuild-phones-configuration).\n\nRunning a job requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/jobs/devices/dynamicDeviceSettings", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Apply update dynamic device settings for all the devices under this organization."}, - }, - Body: &Body{}, -} - -var DeviceDeviceCallListDynamicSettingsJobs = &Operation{ - ID: "DeviceDeviceCallListDynamicSettingsJobs", Area: "device", Group: "device-call", Command: "list-dynamic-settings-jobs", - Summary: "List dynamic device Settings Jobs", - Description: "List dynamic device settings jobs.\n\nLists all the jobs for job type `dynamicdevicesettings` for the given organization in order of most recent one to oldest one irrespective of its status.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/jobs/devices/dynamicDeviceSettings", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve list of dynamic device settings jobs for this organization."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of jobs. Default is 0."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of jobs returned to this maximum count. Default is 2000."}, - }, - Paging: &Paging{}, -} - -var DeviceDeviceCallGetDynamicSettingsJobStatus = &Operation{ - ID: "DeviceDeviceCallGetDynamicSettingsJobStatus", Area: "device", Group: "device-call", Command: "get-dynamic-settings-job-status", - Summary: "Get Device Dynamic Settings Job Status", - Description: "Get dynamic device settings job status.\n\nProvides details of the job with `jobId` of `jobType` `dynamicdevicesettings`.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/jobs/devices/dynamicDeviceSettings/{jobId}", Host: HostWebex, - Params: []Param{ - {Name: "jobId", In: InPath, Flag: "job-id", Usage: "(Required) Retrieve job details for this `jobId`."}, - }, -} - -var DeviceDeviceCallListDynamicSettingsJobErrors = &Operation{ - ID: "DeviceDeviceCallListDynamicSettingsJobErrors", Area: "device", Group: "device-call", Command: "list-dynamic-settings-job-errors", - Summary: "List Dynamic Device Settings Job Errors", - Description: "List Update dynamic device settings job errors.\n\nLists all error details of the job with `jobId` of `jobType` `dynamicdevicesettings`.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/jobs/devices/dynamicDeviceSettings/{jobId}/errors", Host: HostWebex, - Params: []Param{ - {Name: "jobId", In: InPath, Flag: "job-id", Usage: "(Required) Retrieve job details for this `jobId`."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve the status of job for this organization."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Specifies the offset from the first result that you want to fetch. Default is 0."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Specifies the maximum number of records that you want to fetch. Default is 2000"}, - }, - Paging: &Paging{}, -} - -var DeviceDeviceCallListSupported3 = &Operation{ - ID: "DeviceDeviceCallListSupported3", Area: "device", Group: "device-call", Command: "list-supported-3", - Summary: "Read the List of Supported Devices", - Description: "Gets the list of supported devices for an organization.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/supportedDevices", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List supported devices for an organization."}, - {Name: "allowConfigureLayoutEnabled", In: InQuery, Flag: "allow-configure-layout-enabled", Usage: "List supported devices that allow the user to configure the layout."}, - {Name: "type", In: InQuery, Flag: "type", Usage: "List supported devices of a specific type. To excluded device types from a request or query, add `type=not:DEVICE_TYPE`. For example, `type=not:MPP`."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var DeviceDeviceCallGetSettingsGroups2 = &Operation{ - ID: "DeviceDeviceCallGetSettingsGroups2", Area: "device", Group: "device-call", Command: "get-settings-groups-2", - Summary: "Get Settings Groups", - Description: "This API returns the `settingsGroups` that define the structure and association of tags for device dynamic settings.\n\n The `settingsGroups` are used to organize the tags into logical groups, making it easier to manage and configure device dynamic settings.", - Method: "GET", Path: "/telephony/config/devices/dynamicSettings/settingsGroups", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Settings groups for devices in this organization."}, - {Name: "familyOrModelDisplayName", In: InQuery, Flag: "family-or-model-display-name", Usage: "Device family or model display name to filter the `settingsGroups`."}, - {Name: "includeSettingsType", In: InQuery, Flag: "include-settings-type", Usage: "To show groups or tabs or both. Query param is case insensitive. Default is `ALL`."}, - }, -} - -var DeviceDeviceCallGetCustomerDynamicSettings2 = &Operation{ - ID: "DeviceDeviceCallGetCustomerDynamicSettings2", Area: "device", Group: "device-call", Command: "get-customer-dynamic-settings-2", - Summary: "Get Customer Device Dynamic Settings", - Description: "Retrieve dynamic settings for specific device tags at customer level, allowing filters by `familyOrModelDisplayName` and `tag` identifier.\n\nThis API lets you request the values of multiple `Device Settings` at once by specifying a list of `familyOrModelDisplayName` and tag combinations.\n\nThis requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "POST", Path: "/telephony/config/lists/devices/dynamicSettings/actions/getSettings/invoke", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List of device dynamic settings in this organization."}, - {Name: "familyOrModelDisplayName", In: InQuery, Flag: "family-or-model-display-name", Usage: "The family or model name for the device. If no tag is specified, all tags related to `familyOrModelDisplayName` are returned."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "tags", Flag: "tags", Type: "[]string"}, - }}, -} - -var DeviceDeviceCallGetLocationDynamicSettings2 = &Operation{ - ID: "DeviceDeviceCallGetLocationDynamicSettings2", Area: "device", Group: "device-call", Command: "get-location-dynamic-settings-2", - Summary: "Get Location Device Dynamic Settings", - Description: "Retrieve dynamic settings for specific device tags at the specified location level, allowing filters by `familyOrModelDisplayName` and `tag` identifier.\n\nThis API lets you request the values of multiple `Device Settings` at once by specifying a list of `familyOrModelDisplayName` and tag combinations for a specific location.\n\nThis requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "POST", Path: "/telephony/config/lists/locations/{locationId}/devices/dynamicSettings/actions/getSettings/invoke", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Unique identifier for the `location`."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Unique identifier for the `organization` to which this location belongs."}, - {Name: "familyOrModelDisplayName", In: InQuery, Flag: "family-or-model-display-name", Usage: "The family or model name for the device. If no tag is specified, all tags related to `familyOrModelDisplayName` are returned."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "tags", Flag: "tags", Type: "[]string"}, - }}, -} - -var DeviceDeviceCallGetDynamicSettings2 = &Operation{ - ID: "DeviceDeviceCallGetDynamicSettings2", Area: "device", Group: "device-call", Command: "get-dynamic-settings-2", - Summary: "Get Device Dynamic Settings", - Description: "Retrieve settings for a specified device.\n\nThis API retrieves device settings based on the specified `tags`; if the `tags` field is empty or missing, all settings for the device are returned.\n\nThis requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "POST", Path: "/telephony/config/lists/devices/{deviceId}/dynamicSettings/actions/getSettings/invoke", Host: HostWebex, - Params: []Param{ - {Name: "deviceId", In: InPath, Flag: "device-id", Usage: "Device for which to retrieve settings."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization to which the `device` belongs."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "tags", Flag: "tags", Type: "[]string"}, - }}, -} - -var DeviceDeviceCallUpdateDynamicSettings = &Operation{ - ID: "DeviceDeviceCallUpdateDynamicSettings", Area: "device", Group: "device-call", Command: "update-dynamic-settings", - Summary: "Update Device Dynamic Settings", - Description: "Modify dynamic settings for a specified device.\n\nThis API updates device settings based on the specified `tags`. If the `tags` field is empty, the request has no effect.\n\nThis requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "PUT", Path: "/telephony/config/devices/{deviceId}/dynamicSettings", Host: HostWebex, - Params: []Param{ - {Name: "deviceId", In: InPath, Flag: "device-id", Usage: "Device for which to update settings."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Organization to which the device belongs."}, - }, - Body: &Body{}, -} - -var DeviceDeviceCallUpdateDynamicSettingsAcrossOrgLocation = &Operation{ - ID: "DeviceDeviceCallUpdateDynamicSettingsAcrossOrgLocation", Area: "device", Group: "device-call", Command: "update-dynamic-settings-across-org-location", - Summary: "Update Device Dynamic Settings Across Organization or Location", - Description: "Creates a job to update device settings at location or organization level.\n\nThe job runs asynchronously and persistently, applying the requested settings in bulk to all relevant devices, which may belong to multiple families as specified in the request. If a `locationId` is provided, only devices in that location are affected.\n\nA unique job ID is returned to track status and errors.\n\nOnly one job can run per customer per organization at a time. Additionally, this job cannot run in parallel with other device jobs such as [Call device settings](/docs/api/v1/device-call-settings/change-device-settings-across-organization-or-location-job) and [Rebuild Phones](/docs/api/v1/device-call-settings/rebuild-phones-configuration).\n\nRunning a job requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - Method: "POST", Path: "/telephony/config/jobs/devices/dynamicDeviceSettings", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Apply update device dynamic settings for all the devices under this organization."}, - }, - Body: &Body{}, -} - -var DeviceDeviceCallListDynamicSettingsJobs2 = &Operation{ - ID: "DeviceDeviceCallListDynamicSettingsJobs2", Area: "device", Group: "device-call", Command: "list-dynamic-settings-jobs-2", - Summary: "List Device Dynamic Settings Jobs", - Description: "List device dynamic settings jobs.\n\nLists all the jobs for job type `dynamicdevicesettings` for the given organization in order of most recent one to oldest one irrespective of its status.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/jobs/devices/dynamicDeviceSettings", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve list of device dynamic settings jobs for this organization."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Start at the zero-based offset in the list of jobs. Default is 0."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the number of jobs returned to this maximum count. Default is 2000."}, - }, - Paging: &Paging{}, -} - -var DeviceDeviceCallGetDynamicSettingsJobStatus2 = &Operation{ - ID: "DeviceDeviceCallGetDynamicSettingsJobStatus2", Area: "device", Group: "device-call", Command: "get-dynamic-settings-job-status-2", - Summary: "Get Device Dynamic Settings Job Status", - Description: "Get device dynamic settings job status.\n\nProvides details of the job with `jobId` of `jobType` `dynamicdevicesettings`.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/jobs/devices/dynamicDeviceSettings/{jobId}", Host: HostWebex, - Params: []Param{ - {Name: "jobId", In: InPath, Flag: "job-id", Usage: "Retrieve job details for this `jobId`."}, - }, -} - -var DeviceDeviceCallListDynamicSettingsJobErrors2 = &Operation{ - ID: "DeviceDeviceCallListDynamicSettingsJobErrors2", Area: "device", Group: "device-call", Command: "list-dynamic-settings-job-errors-2", - Summary: "List Device Dynamic Settings Job Errors", - Description: "List Update device dynamic settings job errors.\n\nLists all error details of the job with `jobId` of `jobType` `dynamicdevicesettings`.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - Method: "GET", Path: "/telephony/config/jobs/devices/dynamicDeviceSettings/{jobId}/errors", Host: HostWebex, - Params: []Param{ - {Name: "jobId", In: InPath, Flag: "job-id", Usage: "Retrieve job details for this `jobId`."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Retrieve the status of job for this organization."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Specifies the offset from the first result that you want to fetch. Default is 0."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Specifies the maximum number of records that you want to fetch. Default is 2000"}, - }, - Paging: &Paging{}, -} - -var DeviceDeviceConfigurationsList = &Operation{ - ID: "DeviceDeviceConfigurationsList", Area: "device", Group: "device-configurations", Command: "list", - Summary: "List Device Configurations for device", - Description: "Lists all device configurations associated with the given device ID. Administrators can list configurations for all devices within an organization.", - Method: "GET", Path: "/deviceConfigurations", Host: HostWebex, - Params: []Param{ - {Name: "deviceId", In: InQuery, Flag: "device-id", Usage: "List device configurations by device ID."}, - {Name: "key", In: InQuery, Flag: "key", Usage: "This can optionally be used to filter configurations. Keys are composed of segments. It's possible to use absolute paths, wildcards or ranges.\n\n- **Absolute** gives only one configuration as a result. `Conference.MaxReceiveCallRate` for example gives the Conference `MaxReceiveCallRate` configuration.\n\n+ **Wildcards** (\\*) can specify multiple configurations with shared segments. `Audio.Ultrasound.*` for example will filter on all Audio Ultrasound configurations.\n\n- **Range** ([_number_]) can be used to filter numbered segments. `FacilityService.Service[1].Name` for instance only shows the first `FacilityService` Service Name configuration, `FacilityService.Service[*].Name` shows all, `FacilityService.Service[1..3].Name` shows the first three and `FacilityService.Service[2..n].Name` shows all starting at 2. Note that [RFC 3986 3.2.2](https://www.ietf.org/rfc/rfc3986.html#section-3.2.2) does not allow square brackets in urls outside the host, so to specify range in a configuration key you will need to encode them to %5B for [ and %5D for ]."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var DeviceDeviceConfigurationsUpdate = &Operation{ - ID: "DeviceDeviceConfigurationsUpdate", Area: "device", Group: "device-configurations", Command: "update", - Summary: "Update Device Configurations", - Description: "Edit configurations for the device specified by device ID.", - Method: "PATCH", Path: "/deviceConfigurations", Host: HostWebex, - Params: []Param{ - {Name: "deviceId", In: InQuery, Flag: "device-id", Usage: "Update device configurations by device ID."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "op", Flag: "op", Type: "string"}, - {Name: "path", Flag: "path", Type: "string"}, - }}, -} - -var DeviceDevicesList = &Operation{ - ID: "DeviceDevicesList", Area: "device", Group: "devices", Command: "list", - Summary: "List Devices", - Description: "Lists all active Webex devices associated with the authenticated user, such as devices activated in personal mode. This requires the `spark:devices_read` scope. Administrators can list all devices within their organization. This requires an administrator auth token with the `spark-admin:devices_read` scope.", - Method: "GET", Path: "/devices", Host: HostWebex, - Params: []Param{ - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the maximum number of devices in the response."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "\nOffset. Default is 0.\n"}, - {Name: "displayName", In: InQuery, Flag: "display-name", Usage: "\nList devices with this display name.\n"}, - {Name: "personId", In: InQuery, Flag: "person-id", Usage: "\nList devices by person ID.\n"}, - {Name: "workspaceId", In: InQuery, Flag: "workspace-id", Usage: "\nList devices by workspace ID.\n"}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "\nList devices in this organization. Only admin users of another organization (such as partners) may use this parameter.\n"}, - {Name: "connectionStatus", In: InQuery, Flag: "connection-status", Usage: "\nList devices with this connection status.\n"}, - {Name: "product", In: InQuery, Flag: "product", Usage: "\nList devices with this product name.\n"}, - {Name: "type", In: InQuery, Flag: "type", Usage: "\nList devices with this type.\n"}, - {Name: "serial", In: InQuery, Flag: "serial", Usage: "\nList devices with this serial number.\n"}, - {Name: "tag", In: InQuery, Flag: "tag", Usage: "\nList devices which have a tag. Searching for multiple tags (logical AND) can be done by comma separating the `tag` values or adding several `tag` parameters.\n"}, - {Name: "software", In: InQuery, Flag: "software", Usage: "\nList devices with this software version.\n"}, - {Name: "upgradeChannel", In: InQuery, Flag: "upgrade-channel", Usage: "\nList devices with this upgrade channel.\n"}, - {Name: "errorCode", In: InQuery, Flag: "error-code", Usage: "\nList devices with this error code.\n"}, - {Name: "capability", In: InQuery, Flag: "capability", Usage: "\nList devices with this capability.\n"}, - {Name: "permission", In: InQuery, Flag: "permission", Usage: "\nList devices with this permission.\n"}, - {Name: "locationId", In: InQuery, Flag: "location-id", Usage: "\nList devices by location ID.\n"}, - {Name: "workspaceLocationId", In: InQuery, Flag: "workspace-location-id", Usage: "\nList devices by workspace location ID. Deprecated, prefer `locationId`.\n"}, - {Name: "mac", In: InQuery, Flag: "mac", Usage: "\nList devices with this MAC address.\n"}, - {Name: "devicePlatform", In: InQuery, Flag: "device-platform", Usage: "\nList devices with this device platform.\n"}, - {Name: "plannedMaintenance", In: InQuery, Flag: "planned-maintenance", Usage: "\nList devices with this planned maintenance.\n"}, - }, - Paging: &Paging{}, -} - -var DeviceDevicesCreateMacAddress = &Operation{ - ID: "DeviceDevicesCreateMacAddress", Area: "device", Group: "devices", Command: "create-mac-address", - Summary: "Create a Device by MAC Address", - Description: "Create a phone by its MAC address in a specific workspace or for a person.\n\nSpecify the `mac`, `model` and either `workspaceId` or `personId`.\n\n* You can get the `model` from the [supported devices](/docs/api/v1/device-call-settings/read-the-list-of-supported-devices) API.\n\n* Either `workspaceId` or `personId` should be provided. If both are supplied, the request will be invalid.\n\n* The `password` field is only required for third party devices. You can obtain the required third party phone configuration from [here](/docs/api/v1/beta-device-call-settings-with-third-party-device-support/get-third-party-device).\n\n
Adding a device to a person with a Webex Calling Standard license will disable Webex Calling across their Webex mobile, tablet, desktop, and browser applications.

When adding devices to a Webex Calling Professional licensed person or workspace, wait for each API call to finish before starting the next. This prevents race conditions that can cause errors when assigning primary versus secondary device status.
", - Method: "POST", Path: "/devices", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "The organization associated with the device. If left empty, the organization associated with the caller will be used."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "mac", Flag: "mac", Type: "string"}, - {Name: "model", Flag: "model", Type: "string"}, - {Name: "workspaceId", Flag: "workspace-id", Type: "string"}, - {Name: "personId", Flag: "person-id", Type: "string"}, - {Name: "password", Flag: "password", Type: "string"}, - }}, -} - -var DeviceDevicesGet = &Operation{ - ID: "DeviceDevicesGet", Area: "device", Group: "devices", Command: "get", - Summary: "Get Device Details", - Description: "Shows details for a device, by ID. This requires an auth token with the `spark:devices_read` scope to see your own device, or `spark-admin:devices_read` to see any other device in your organization.\n\nSpecify the device ID in the `deviceId` parameter in the URI.", - Method: "GET", Path: "/devices/{deviceId}", Host: HostWebex, - Params: []Param{ - {Name: "deviceId", In: InPath, Flag: "device-id", Usage: "\nA unique identifier for the device.\n"}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "The organization associated with the device. If left empty, the organization associated with the caller will be used."}, - }, -} - -var DeviceDevicesDelete = &Operation{ - ID: "DeviceDevicesDelete", Area: "device", Group: "devices", Command: "delete", - Summary: "Delete a Device", - Description: "Deletes a device, by ID. Deleting your own device requires an auth token with the `spark:devices_write` scope. Deleting any other device in the organization will require an administrator auth token with the `spark-admin:devices_write` scope.\n\nSpecify the device ID in the `deviceId` parameter in the URI.\n\n
Deleting a device from a person with a Webex Calling Standard license will enable Webex Calling across their Webex mobile, tablet, desktop, and browser applications.
", - Method: "DELETE", Path: "/devices/{deviceId}", Host: HostWebex, - Params: []Param{ - {Name: "deviceId", In: InPath, Flag: "device-id", Usage: "A unique identifier for the device."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "The organization associated with the device. If left empty, the organization associated with the caller will be used."}, - }, -} - -var DeviceDevicesUpdateTags = &Operation{ - ID: "DeviceDevicesUpdateTags", Area: "device", Group: "devices", Command: "update-tags", - Summary: "Modify Device Tags", - Description: "Create, delete or update tags on a device. For your own device, this requires an auth token with the `spark:devices_write` scope. An auth token with the `spark-admin:devices_write` scope is required to operate on other devices within the organization.\n\nSpecify the device ID in the `deviceId` parameter in the URI.\n\nInclude only the tag array in the request body, no other device attributes can be changed. This action will overwrite any previous tags. A common approach is to first [GET the devices's details](/docs/api/v1/devices/get-device-details), make changes to the `tags` array, and then PATCH the new complete array with this endpoint.", - Method: "PATCH", Path: "/devices/{deviceId}", Host: HostWebex, - Params: []Param{ - {Name: "deviceId", In: InPath, Flag: "device-id", Usage: "Unique identifier for the device."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "The organization associated with the device. If left empty, the organization associated with the caller will be used."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "op", Flag: "op", Type: "string"}, - {Name: "path", Flag: "path", Type: "string"}, - {Name: "value", Flag: "value", Type: "[]string"}, - }}, -} - -var DeviceDevicesCreateActivationCode = &Operation{ - ID: "DeviceDevicesCreateActivationCode", Area: "device", Group: "devices", Command: "create-activation-code", - Summary: "Create a Device Activation Code", - Description: "Generate an activation code for a device in a specific workspace by `workspaceId` or for a person by `personId`. This requires an auth token with the `spark-admin:devices_write` scope, and either `identity:placeonetimepassword_create` (allows creating activation codes for workspaces only) or `identity:one_time_password` (allows creating activation codes for workspaces or persons).\n\n* Adding a device to a workspace with calling type `none` or `thirdPartySipCalling` will reset the workspace calling type to `freeCalling`.\n\n* Either `workspaceId` or `personId` should be provided. If both are supplied, the request will be invalid.\n\n* If no `model` is supplied, the `code` returned will only be accepted on RoomOS devices.\n\n* If your device is a phone, you must provide the `model` as a field. You can get the `model` from the [supported devices](/docs/api/v1/device-call-settings/read-the-list-of-supported-devices) API.\n\n
Adding a device to a person with a Webex Calling Standard license will disable Webex Calling across their Webex mobile, tablet, desktop, and browser applications.

When adding devices to a Webex Calling Professional licensed person or workspace, wait for each API call to finish before starting the next. This prevents race conditions that can cause errors when assigning primary versus secondary device status.
", - Method: "POST", Path: "/devices/activationCode", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "The organization associated with the activation code generated. If left empty, the organization associated with the caller will be used."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "workspaceId", Flag: "workspace-id", Type: "string"}, - {Name: "personId", Flag: "person-id", Type: "string"}, - {Name: "model", Flag: "model", Type: "string"}, - }}, -} - -var DeviceHotDeskListSessions = &Operation{ - ID: "DeviceHotDeskListSessions", Area: "device", Group: "hot-desk", Command: "list-sessions", - Summary: "List Sessions", - Description: "List hot desk sessions.\n\nUse query parameters to filter the response.\nThe `orgId` parameter is for use by partner administrators acting on a managed organization.\nThe `personId` and `workspaceId` parameters are optional and are used to filter the response to only include sessions for a specific person or workspace.\nWhen used together they are used as an AND filter.", - Method: "GET", Path: "/hotdesk/sessions", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List sessions in this organization. Only admin users of another organization (such as partners) may use this parameter."}, - {Name: "personId", In: InQuery, Flag: "person-id", Usage: "List sessions for this person."}, - {Name: "workspaceId", In: InQuery, Flag: "workspace-id", Usage: "List sessions for this workspace."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var DeviceHotDeskDeleteSession = &Operation{ - ID: "DeviceHotDeskDeleteSession", Area: "device", Group: "hot-desk", Command: "delete-session", - Summary: "Delete Session", - Description: "Delete a hot desk session.", - Method: "DELETE", Path: "/hotdesk/sessions/{sessionId}", Host: HostWebex, - Params: []Param{ - {Name: "sessionId", In: InPath, Flag: "session-id", Usage: "The unique identifier for the hot desk session."}, - }, -} - -var DeviceWorkspaceLocationsList = &Operation{ - ID: "DeviceWorkspaceLocationsList", Area: "device", Group: "workspace-locations", Command: "list", - Summary: "List Workspace Locations", - Description: "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nList workspace locations. Use query parameters to filter the response. The `orgId` parameter can only be used by admin users of another\norganization (such as partners). The `displayName`, `address`, `countryCode` and `cityName` parameters are all optional.\nRequires an administrator auth token with the `spark-admin:workspace_locations_read` scope.", - Method: "GET", Path: "/workspaceLocations", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List workspace locations in this organization. Only admin users of another organization (such as partners) may use this parameter."}, - {Name: "displayName", In: InQuery, Flag: "display-name", Usage: "Location display name."}, - {Name: "address", In: InQuery, Flag: "address", Usage: "Location address."}, - {Name: "countryCode", In: InQuery, Flag: "country-code", Usage: "Location country code (ISO 3166-1)."}, - {Name: "cityName", In: InQuery, Flag: "city-name", Usage: "Location city name."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var DeviceWorkspaceLocationsCreate = &Operation{ - ID: "DeviceWorkspaceLocationsCreate", Area: "device", Group: "workspace-locations", Command: "create", - Summary: "Create a Workspace Location", - Description: "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nCreate a location. The `cityName` and `notes` parameters are optional, and omitting them will result in the creation of a location without values for those attributes.\nRequires an administrator auth token with the `spark-admin:workspace_locations_write` scope.", - Method: "POST", Path: "/workspaceLocations", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "displayName", Flag: "display-name", Type: "string"}, - {Name: "address", Flag: "address", Type: "string"}, - {Name: "countryCode", Flag: "country-code", Type: "string"}, - {Name: "latitude", Flag: "latitude", Type: "int64"}, - {Name: "longitude", Flag: "longitude", Type: "int64"}, - {Name: "cityName", Flag: "city-name", Type: "string"}, - {Name: "notes", Flag: "notes", Type: "string"}, - }}, -} - -var DeviceWorkspaceLocationsGet = &Operation{ - ID: "DeviceWorkspaceLocationsGet", Area: "device", Group: "workspace-locations", Command: "get", - Summary: "Get a Workspace Location Details", - Description: "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nShows details for a location, by ID. Specify the location ID in the `locationId` parameter in the URI.\nRequires an administrator auth token with the `spark-admin:workspace_locations_read` scope.", - Method: "GET", Path: "/workspaceLocations/{locationId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "A unique identifier for the location."}, - }, -} - -var DeviceWorkspaceLocationsUpdate = &Operation{ - ID: "DeviceWorkspaceLocationsUpdate", Area: "device", Group: "workspace-locations", Command: "update", - Summary: "Update a Workspace Location", - Description: "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nUpdates details for a location, by ID. Specify the location ID in the `locationId` parameter in the URI. The request should include all details for the location returned in a previous call to [Get Workspace Location Details](/docs/api/v1/workspace-locations/get-a-workspace-location-details). Omitting the optional `cityName` or `notes` fields will result in those fields no longer being defined for the location.\nRequires an administrator auth token with the `spark-admin:workspace_locations_write` scope.", - Method: "PUT", Path: "/workspaceLocations/{locationId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "A unique identifier for the location."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "displayName", Flag: "display-name", Type: "string"}, - {Name: "address", Flag: "address", Type: "string"}, - {Name: "countryCode", Flag: "country-code", Type: "string"}, - {Name: "latitude", Flag: "latitude", Type: "int64"}, - {Name: "longitude", Flag: "longitude", Type: "int64"}, - {Name: "id", Flag: "id", Type: "string"}, - {Name: "cityName", Flag: "city-name", Type: "string"}, - {Name: "notes", Flag: "notes", Type: "string"}, - }}, -} - -var DeviceWorkspaceLocationsDelete = &Operation{ - ID: "DeviceWorkspaceLocationsDelete", Area: "device", Group: "workspace-locations", Command: "delete", - Summary: "Delete a Workspace Location", - Description: "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nDeletes a location, by ID. The workspaces associated to that location will no longer have a location, but a new location can be reassigned to them.\nRequires an administrator auth token with the `spark-admin:workspace_locations_write` scope.", - Method: "DELETE", Path: "/workspaceLocations/{locationId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "A unique identifier for the location."}, - }, -} - -var DeviceWorkspaceLocationsListFloors = &Operation{ - ID: "DeviceWorkspaceLocationsListFloors", Area: "device", Group: "workspace-locations", Command: "list-floors", - Summary: "List Workspace Location Floors", - Description: "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nList workspace location floors.\nRequires an administrator auth token with the `spark-admin:workspace_locations_read` scope.", - Method: "GET", Path: "/workspaceLocations/{locationId}/floors", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "A unique identifier for the location."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var DeviceWorkspaceLocationsCreateFloor = &Operation{ - ID: "DeviceWorkspaceLocationsCreateFloor", Area: "device", Group: "workspace-locations", Command: "create-floor", - Summary: "Create a Workspace Location Floor", - Description: "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nCreate a new floor in the given location. The `displayName` parameter is optional, and omitting it will result in the creation of a floor without that value set.\nRequires an administrator auth token with the `spark-admin:workspace_locations_write` scope.", - Method: "POST", Path: "/workspaceLocations/{locationId}/floors", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "A unique identifier for the location."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "floorNumber", Flag: "floor-number", Type: "int64"}, - {Name: "displayName", Flag: "display-name", Type: "string"}, - }}, -} - -var DeviceWorkspaceLocationsGetFloor = &Operation{ - ID: "DeviceWorkspaceLocationsGetFloor", Area: "device", Group: "workspace-locations", Command: "get-floor", - Summary: "Get a Workspace Location Floor Details", - Description: "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nShows details for a floor, by ID. Specify the floor ID in the `floorId` parameter in the URI.\nRequires an administrator auth token with the `spark-admin:workspace_locations_read` scope.", - Method: "GET", Path: "/workspaceLocations/{locationId}/floors/{floorId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "A unique identifier for the location."}, - {Name: "floorId", In: InPath, Flag: "floor-id", Usage: "A unique identifier for the floor."}, - }, -} - -var DeviceWorkspaceLocationsUpdateFloor = &Operation{ - ID: "DeviceWorkspaceLocationsUpdateFloor", Area: "device", Group: "workspace-locations", Command: "update-floor", - Summary: "Update a Workspace Location Floor", - Description: "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nUpdates details for a floor, by ID. Specify the floor ID in the `floorId` parameter in the URI. Include all details for the floor returned by a previous call to [Get Workspace Location Floor Details](/docs/api/v1/workspace-locations/get-a-workspace-location-details). Omitting the optional `displayName` field will result in that field no longer being defined for the floor.\nRequires an administrator auth token with the `spark-admin:workspace_locations_write` scope.", - Method: "PUT", Path: "/workspaceLocations/{locationId}/floors/{floorId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "A unique identifier for the location."}, - {Name: "floorId", In: InPath, Flag: "floor-id", Usage: "A unique identifier for the floor."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "floorNumber", Flag: "floor-number", Type: "int64"}, - {Name: "displayName", Flag: "display-name", Type: "string"}, - }}, -} - -var DeviceWorkspaceLocationsDeleteFloor = &Operation{ - ID: "DeviceWorkspaceLocationsDeleteFloor", Area: "device", Group: "workspace-locations", Command: "delete-floor", - Summary: "Delete a Workspace Location Floor", - Description: "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nDeletes a floor, by ID.\nRequires an administrator auth token with the `spark-admin:workspace_locations_write` scope.", - Method: "DELETE", Path: "/workspaceLocations/{locationId}/floors/{floorId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "A unique identifier for the location."}, - {Name: "floorId", In: InPath, Flag: "floor-id", Usage: "A unique identifier for the floor."}, - }, -} - -var DeviceWorkspaceMetricsWorkspaceMetrics = &Operation{ - ID: "DeviceWorkspaceMetricsWorkspaceMetrics", Area: "device", Group: "workspace-metrics", Command: "workspace-metrics", - Summary: "Workspace Metrics", - Description: "Get metric data for the specified workspace and metric name, optionally aggregated over a specified time period.\n\n* The `workspaceId` and `metricName` parameters indicate which workspace to fetch metrics for and what kind of metrics to get.\n\n* When executing an aggregated query, the result bucket start times will be truncated to the start of an hour or a day, depending on\nthe aggregation interval. However, the buckets will not contain data from outside the requested time range. For example, when\npassing `from=2020-10-21T10:34:56.000Z` and `aggregation=hourly`, the first output bucket would start at `2020-10-21T10:00:00.000Z`,\nbut the bucket would only aggregate data timestamped after `10:34:56`.\n\n* For aggregation modes `none` and `hourly`, the maximum time span is 48 hours. For aggregation mode `daily`, the maximum\ntime span is 30 days.\n\n* If the aggregation mode query parameter is set to `none`, the returned data in the response will be an array of items with the `deviceId`, `timestamp` and the raw `value`.\n\n* If the aggregation mode is `hourly` or `daily`, the returned data in the response will be an array of items with the `start` and `end` of the aggregation time bucket, and the `mean`, `max` and `min` values of the requested value. Note that zeroes and negative values are ignored. For example, this means that the `peopleCount` mean value should be interpreted as the average number of people in the room _when it is in use_.", - Method: "GET", Path: "/workspaceMetrics", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InQuery, Flag: "workspace-id", Usage: "ID of the workspace to get metrics for."}, - {Name: "metricName", In: InQuery, Flag: "metric-name", Usage: "The type of data to extract."}, - {Name: "aggregation", In: InQuery, Flag: "aggregation", Usage: "Time unit over which to aggregate measurements."}, - {Name: "from", In: InQuery, Flag: "from", Usage: "List only data points after a specific date and time (ISO 8601 timestamp)"}, - {Name: "to", In: InQuery, Flag: "to", Usage: "List data points before a specific date and time (ISO 8601 timestamp)"}, - {Name: "unit", In: InQuery, Flag: "unit", Usage: "Output data unit (only a valid parameter if `metricName` is `temperature`)."}, - {Name: "sortBy", In: InQuery, Flag: "sort-by", Usage: "Sort results."}, - }, - TimeRange: TimeISO, -} - -var DeviceWorkspaceMetricsDuration = &Operation{ - ID: "DeviceWorkspaceMetricsDuration", Area: "device", Group: "workspace-metrics", Command: "duration", - Summary: "Workspace Duration Metrics", - Description: "Get metrics for how much time a workspace has been in the state given by the `measurement` parameter.\n\nFor example, if the measurement is `timeBooked` then the duration for which the workspace has been booked is returned. The `workspaceId` parameter indicates which workspace to fetch metrics for. If no `measurement` is given, the default value is `timeUsed`.\n\n* When executing a query, the result bucket start times will default to the start of an hour or a day, depending on\nthe aggregation interval. However, the buckets will not contain data from outside the requested time range. For example, when\npassing `from=2020-10-21T10:34:56.000Z` and `aggregation=hourly`, the first output bucket would start at `2020-10-21T10:00:00.000Z`,\nbut the bucket would only aggregate data timestamped after `10:34:56`.\n\n* For aggregation mode `hourly`, the maximum time span is 48 hours. For aggregation mode `daily`, the maximum\ntime span is 30 days.", - Method: "GET", Path: "/workspaceDurationMetrics", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InQuery, Flag: "workspace-id", Usage: "ID of the workspace to get metrics for."}, - {Name: "aggregation", In: InQuery, Flag: "aggregation", Usage: "Unit of time over which to aggregate measurements."}, - {Name: "measurement", In: InQuery, Flag: "measurement", Usage: "The measurement to return duration for."}, - {Name: "from", In: InQuery, Flag: "from", Usage: "Include data points after a specific date and time (ISO 8601 timestamp)."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "Include data points before a specific date and time (ISO 8601 timestamp)."}, - }, - TimeRange: TimeISO, -} - -var DeviceWorkspacePersonalizationPersonalize = &Operation{ - ID: "DeviceWorkspacePersonalizationPersonalize", Area: "device", Group: "workspace-personalization", Command: "personalize", - Summary: "Personalize a Workspace", - Description: "Initializes the personalization for a given workspace for the user email provided.\n\nThe personalization process is asynchronous and thus a background task is created when this endpoint is invoked.\nAfter successful invocation of this endpoint a personalization task status URL will be returned in the `Location` header, which will point to the [Get Personalization Task](/docs/api/v1/workspace-personalization/get-personalization-task) endpoint for this workspace.\nThe task should be completed in approximately 30 seconds.", - Method: "POST", Path: "/workspaces/{workspaceId}/personalize", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "A unique identifier for the workspace."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "email", Flag: "email", Type: "string"}, - }}, -} - -var DeviceWorkspacePersonalizationGetTask = &Operation{ - ID: "DeviceWorkspacePersonalizationGetTask", Area: "device", Group: "workspace-personalization", Command: "get-task", - Summary: "Get Personalization Task", - Description: "Returns the status of a personalization task for a given workspace.\n\nWhilst in progress the endpoint will return `Accepted` and provide a `Retry-After` header indicating the number of seconds a client should wait before retrying.\n\nUpon completion of the task, the endpoint will return `OK` with a body detailing if the personalization was successful and an error description if appropriate.", - Method: "GET", Path: "/workspaces/{workspaceId}/personalizationTask", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "A unique identifier for the workspace."}, - }, -} - -var DeviceWorkspacesList = &Operation{ - ID: "DeviceWorkspacesList", Area: "device", Group: "workspaces", Command: "list", - Summary: "List Workspaces", - Description: "List workspaces.\n\nUse query parameters to filter the response. The `orgId` parameter can only be used by admin users of another organization (such as partners). The `locationId`, `workspaceLocationId`, `indoorNavigation`, `floorId`, `capacity` and `type` fields will only be present for workspaces that have a value set for them. The special values `notSet` (for filtering on category) and `-1` (for filtering on capacity) can be used to filter for workspaces without a type and/or capacity.", - Method: "GET", Path: "/workspaces", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List workspaces in this organization. Only admin users of another organization (such as partners) may use this parameter."}, - {Name: "locationId", In: InQuery, Flag: "location-id", Usage: "Location associated with the workspace. Values must originate from the /locations API and not the legacy /workspaceLocations API."}, - {Name: "workspaceLocationId", In: InQuery, Flag: "workspace-location-id", Usage: "Location associated with the workspace. Both values from the /locations API and the legacy /workspaceLocations API are supported. This field is deprecated and integrations should prefer `locationId` going forward."}, - {Name: "floorId", In: InQuery, Flag: "floor-id", Usage: "Floor associated with the workspace."}, - {Name: "displayName", In: InQuery, Flag: "display-name", Usage: "List workspaces by display name."}, - {Name: "capacity", In: InQuery, Flag: "capacity", Usage: "List workspaces with the given capacity. Must be -1 or higher. A value of -1 lists workspaces with no capacity set."}, - {Name: "type", In: InQuery, Flag: "type", Usage: "List workspaces by type."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Offset. Default is 0."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the maximum number of workspaces in the response."}, - {Name: "calling", In: InQuery, Flag: "calling", Usage: "List workspaces by calling type."}, - {Name: "supportedDevices", In: InQuery, Flag: "supported-devices", Usage: "List workspaces by supported devices."}, - {Name: "calendar", In: InQuery, Flag: "calendar", Usage: "List workspaces by calendar type."}, - {Name: "deviceHostedMeetingsEnabled", In: InQuery, Flag: "device-hosted-meetings-enabled", Usage: "List workspaces enabled for device hosted meetings."}, - {Name: "devicePlatform", In: InQuery, Flag: "device-platform", Usage: "List workspaces by device platform."}, - {Name: "healthLevel", In: InQuery, Flag: "health-level", Usage: "List workspaces by health level."}, - {Name: "includeDevices", In: InQuery, Flag: "include-devices", Usage: "Flag identifying whether to include the devices associated with the workspace in the response."}, - {Name: "includeCapabilities", In: InQuery, Flag: "include-capabilities", Usage: "Flag identifying whether to include the workspace capabilities in the response."}, - {Name: "plannedMaintenance", In: InQuery, Flag: "planned-maintenance", Usage: "List workspaces with given maintenance mode."}, - {Name: "customAttribute", In: InQuery, Flag: "custom-attribute", Usage: "List workspaces with given custom attribute key."}, - }, - Paging: &Paging{}, -} - -var DeviceWorkspacesCreate = &Operation{ - ID: "DeviceWorkspacesCreate", Area: "device", Group: "workspaces", Command: "create", - Summary: "Create a Workspace", - Description: "Create a workspace.\n\nThe `locationId`, `workspaceLocationId`, `floorId`, `indoorNavigation`, `capacity`, `type`, `notes` and `hotdeskingStatus` parameters are optional, and omitting them will result in the creation of a workspace without these values set, or set to their default. A `locationId` must be provided when the `floorId` is set. Calendar and calling can also be set for a new workspace. Omitting them will default to free calling and no calendaring. The `orgId` parameter can only be used by admin users of another organization (such as partners).\n\n* Information for Webex Calling fields may be found here: [locations](/docs/api/v1/locations/list-locations), [available numbers](/docs/api/v1/numbers/get-phone-numbers-for-an-organization-with-given-criterias) and [licenses](/docs/api/v1/licenses).\n\n* The `locationId` and `supportedDevices` fields cannot be changed once configured.\n\n* When creating a `webexCalling` workspace that is not hot desk only, a `locationId` and either a `phoneNumber` or `extension` or both is required. Furthermore, it is possible to set the `licenses` field with a list of Webex Calling license IDs, if desired. If multiple license IDs are provided, the oldest suitable one will be applied. If no licenses are supplied, the oldest suitable one from the active subscriptions will be automaticaly applied.\n\n* When creating a hot desk only workspace, `phoneNumber` and `extension` fields are not applicable. Furthermore, `deviceHostedMeetingsEnabled`, and `calendar` services are not applicable. If any of these fields are provided the API will return an error. The `calling` type is `webexCalling`.", - Method: "POST", Path: "/workspaces", Host: HostWebex, - Body: &Body{}, -} - -var DeviceWorkspacesGet = &Operation{ - ID: "DeviceWorkspacesGet", Area: "device", Group: "workspaces", Command: "get", - Summary: "Get Workspace Details", - Description: "Shows details for a workspace, by ID.\n\nThe `locationId`, `workspaceLocationId`, `floorId`, `indoorNavigation`, `capacity`, `type` and `notes` fields will only be present if they have been set for the workspace. Specify the workspace ID in the `workspaceId` parameter in the URI.", - Method: "GET", Path: "/workspaces/{workspaceId}", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "(Required) A unique identifier for the workspace."}, - {Name: "includeDevices", In: InQuery, Flag: "include-devices", Usage: "Flag identifying whether to include the devices associated with the workspace in the response."}, - }, -} - -var DeviceWorkspacesUpdate = &Operation{ - ID: "DeviceWorkspacesUpdate", Area: "device", Group: "workspaces", Command: "update", - Summary: "Update a Workspace", - Description: "Updates details for a workspace by ID.\n\nSpecify the workspace ID in the `workspaceId` parameter in the URI. Include all details for the workspace that are present in a [GET request for the workspace details](/docs/api/v1/workspaces/get-workspace-details). Not including the optional `capacity`, `type` or `notes` fields will result in the fields no longer being defined for the workspace. A `locationId` must be provided when the `floorId` is set. The `locationId`, `workspaceLocationId`, `floorId`, `supportedDevices`, `calendar` and `calling` fields do not change when omitted from the update request.\n\n* Information for Webex Calling fields may be found here: [locations](/docs/api/v1/locations/list-locations) and [available numbers](/docs/api/v1/numbers/get-phone-numbers-for-an-organization-with-given-criterias).\n\n* Updating the `calling` parameter is only supported if the existing `calling` type is `freeCalling`, `none`, `thirdPartySipCalling` or `webexCalling`.\n\n* Updating the `calling` parameter to `none`, `thirdPartySipCalling` or `webexCalling` is not supported if the workspace contains any devices.\n\n* The `locationId` and `supportedDevices` fields cannot be changed once configured.\n\n* When updating `webexCalling` information on a workspace that is not hot desk only, a `locationId` and either a `phoneNumber` or `extension` or both is required. Furthermore, the `licenses` field can be set with a list of Webex Calling license IDs, if desired. If multiple license IDs are provided, the oldest suitable one will be applied. If a previously applied license ID is omitted, it will be replaced with one from the list provided. If the `licenses` field is omitted, the current calling license will be retained.\n\n* When specifying a hot desk only license on a hot desk only workspace, `deviceHostedMeetingsEnabled`, and `calendar` services are not supported and will be automatically disabled. In addition to this, the `phoneNumber` and `extension` will be removed from the workspace. Attempting to enable any of these services, or provide a `phoneNumber` or `extension` will result in an error. The `calling` type for these requests is `webexCalling`.", - Method: "PUT", Path: "/workspaces/{workspaceId}", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "A unique identifier for the workspace."}, - }, - Body: &Body{}, -} - -var DeviceWorkspacesDelete = &Operation{ - ID: "DeviceWorkspacesDelete", Area: "device", Group: "workspaces", Command: "delete", - Summary: "Delete a Workspace", - Description: "Deletes a workspace by ID.\n\nAlso deletes all devices associated with the workspace. Any deleted devices will need to be reactivated. Specify the workspace ID in the `workspaceId` parameter in the URI.", - Method: "DELETE", Path: "/workspaces/{workspaceId}", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "A unique identifier for the workspace."}, - }, -} - -var DeviceWorkspacesGetCapabilities = &Operation{ - ID: "DeviceWorkspacesGetCapabilities", Area: "device", Group: "workspaces", Command: "get-capabilities", - Summary: "Get Workspace Capabilities", - Description: "Shows the capabilities for a workspace by ID.\n\nReturns a set of capabilities, including whether or not the capability is supported by any device in the workspace, and if the capability is configured (enabled). For example for a specific capability like `occupancyDetection`, the API will return if the capability is supported and/or configured such that occupancy detection data will flow from the workspace (device) to the cloud. Specify the workspace ID in the `workspaceId` parameter in the URI.", - Method: "GET", Path: "/workspaces/{workspaceId}/capabilities", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "A unique identifier for the workspace."}, - }, -} - -var DeviceWorkspacesGet2 = &Operation{ - ID: "DeviceWorkspacesGet2", Area: "device", Group: "workspaces", Command: "get-2", - Summary: "Get Workspace Details", - Description: "Shows details for a workspace, by ID.\n\nThe `locationId`, `workspaceLocationId`, `floorId`, `indoorNavigation`, `capacity`, `type` and `notes` fields will only be present if they have been set for the workspace. Specify the workspace ID in the `workspaceId` parameter in the URI.", - Method: "GET", Path: "/workspaces/{workspaceId}", Host: HostWebex, - Params: []Param{ - {Name: "workspaceId", In: InPath, Flag: "workspace-id", Usage: "A unique identifier for the workspace."}, - {Name: "includeDevices", In: InQuery, Flag: "include-devices", Usage: "Flag identifying whether to include the devices associated with the workspace in the response."}, - {Name: "includeCapabilities", In: InQuery, Flag: "include-capabilities", Usage: "Flag identifying whether to include the workspace capabilities in the response."}, - }, -} - -var DeviceXapiQueryStatus = &Operation{ - ID: "DeviceXapiQueryStatus", Area: "device", Group: "xapi", Command: "query-status", - Summary: "Query Status", - Description: "Query the current status of the Webex RoomOS Device. You specify the target device in the `deviceId` parameter in the URI. The target device is queried for statuses according to the expression in the `name` parameter.\n\nSee the [xAPI section of the Device Developers Guide](/docs/api/guides/device-developers-guide#xapi) or the [xAPI Command Reference](https://roomos.cisco.com/xapi) for a description of status expressions.", - Method: "GET", Path: "/xapi/status", Host: HostWebex, - Params: []Param{ - {Name: "deviceId", In: InQuery, Flag: "device-id", Usage: "The unique identifier for the Webex RoomOS Device."}, - {Name: "name", In: InQuery, Flag: "name", Usage: "A list of status expressions used to query the Webex RoomOS Device. See the [xAPI section of the Device Developers Guide](/docs/api/guides/device-developers-guide#xapi) for a description of status expressions. A request can contain at most 10 different status expressions."}, - {Name: "name", In: InQuery, Flag: "name", Usage: "A list of status expressions used to query the Webex RoomOS Device. See the [xAPI section of the Device Developers Guide](/docs/api/guides/device-developers-guide#xapi) for a description of status expressions. A request can contain at most 10 different status expressions."}, - }, -} - -var DeviceXapiExecuteCommand = &Operation{ - ID: "DeviceXapiExecuteCommand", Area: "device", Group: "xapi", Command: "execute-command", - Summary: "Execute Command", - Description: "Executes a command on the Webex RoomOS Device. Specify the command to execute in the `commandName` URI parameter.\n\nSee the [xAPI section of the Device Developers Guide](/docs/devices#xapi) for a description of command expressions.", - Method: "POST", Path: "/xapi/command/{commandName}", Host: HostWebex, - Params: []Param{ - {Name: "commandName", In: InPath, Flag: "command-name", Usage: "Command to execute on the Webex RoomOS Device."}, - }, - Body: &Body{}, -} - -var DeviceXapiQuerySchema = &Operation{ - ID: "DeviceXapiQuerySchema", Area: "device", Group: "xapi", Command: "query-schema", - Summary: "Query Schema", - Description: "Query the schema for statuses and commands of Webex RoomOS Devices. You specify the target devices in the `deviceId` parameter in the URI. Querying command schemas requires the `spark:xapi_commands` scope and querying status schemas requires the `spark:xapi_statuses` scope.\n\nIf no `status` or `command` expressions are specified, the full schema is returned, including both status and command schemas. If you specify any expression, the response is limited to only the types you queried for. For example, if you provide a `status` expression but no `command` expression, only status schemas will be included in the result.\n\nSee the [xAPI section of the Device Developers Guide](/docs/api/guides/device-developers-guide#xapi) or the [xAPI Command Reference](https://roomos.cisco.com/xapi) for a description of status and command expressions.", - Method: "GET", Path: "/xapi/schema", Host: HostWebex, - Params: []Param{ - {Name: "deviceId", In: InQuery, Flag: "device-id", Usage: "A list of device IDs to query schemas from. A request can contain at most 5 device IDs."}, - {Name: "deviceId", In: InQuery, Flag: "device-id", Usage: "A list of device IDs to query schemas from. A request can contain at most 5 device IDs."}, - {Name: "status", In: InQuery, Flag: "status", Usage: "A list of status key expressions to query schemas for. Supports patterns. Requires the `spark:xapi_statuses` scope."}, - {Name: "status", In: InQuery, Flag: "status", Usage: "A list of status key expressions to query schemas for. Supports patterns. Requires the `spark:xapi_statuses` scope."}, - {Name: "command", In: InQuery, Flag: "command", Usage: "A list of command key expressions to query schemas for. Supports patterns. Requires the `spark:xapi_commands` scope."}, - {Name: "command", In: InQuery, Flag: "command", Usage: "A list of command key expressions to query schemas for. Supports patterns. Requires the `spark:xapi_commands` scope."}, - }, -} - -var DeviceLocationsList = &Operation{ - ID: "DeviceLocationsList", Area: "device", Group: "locations", Command: "list", - Summary: "List Locations", - Description: "List locations for an organization.\n\n* Use query parameters to filter the result set by location name, ID, or organization.\n\n* Long result sets will be split into [pages](/docs/basics#pagination).\n\n* Searching and viewing locations in your organization requires an administrator or location administrator auth token with any of the following scopes: `spark-admin:locations_read`, `spark-admin:people_read` or `spark-admin:device_read`.", - Method: "GET", Path: "/locations", Host: HostWebex, - Params: []Param{ - {Name: "name", In: InQuery, Flag: "name", Usage: "List locations whose name contains this string (case-insensitive)."}, - {Name: "id", In: InQuery, Flag: "id", Usage: "List locations by ID."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List locations in this organization. Only admin users of another organization (such as partners) may use this parameter."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the maximum number of location in the response."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, -} - -var DeviceLocationsCreate = &Operation{ - ID: "DeviceLocationsCreate", Area: "device", Group: "locations", Command: "create", - Summary: "Create a Location", - Description: "Create a new Location for a given organization. Only an admin in the organization can create a new Location.\n\n* Creating a location in your organization requires a full administrator auth token with a scope of `spark-admin:locations_write`.\n\n* Partners may specify `orgId` query parameter to create location in managed organization.\n\n* The following body parameters are required to create a new location: \n * `name`\n * `timeZone`\n * `preferredLanguage`\n * `address`\n * `announcementLanguage`.\n\n* `latitude`, `longitude` and `notes` are optional parameters to create a new location.\n\n* **Important:** While the `name` field supports up to 256 characters, locations that will be enabled for Webex Calling must have names with a maximum of 80 characters. If you plan to enable calling for this location, ensure the name does not exceed 80 characters to maintain compatibility with Control Hub and calling features.", - Method: "POST", Path: "/locations", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Create a location common attribute for this organization."}, - }, - Body: &Body{}, -} - -var DeviceLocationsGet = &Operation{ - ID: "DeviceLocationsGet", Area: "device", Group: "locations", Command: "get", - Summary: "Get Location Details", - Description: "Shows details for a location, by ID.\n\n* Specify the location ID in the `locationId` parameter in the URI.\n\n* Use query parameter `orgId` to filter the result set by organization(optional).\n\n* Searching and viewing location in your organization requires an administrator or location administrator auth token with any of the following scopes:\n\n * `spark-admin:locations_read`\n * `spark-admin:people_read`\n * `spark-admin:device_read`", - Method: "GET", Path: "/locations/{locationId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "A unique identifier for the location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Get location common attributes for this organization."}, - }, -} - -var DeviceLocationsUpdate = &Operation{ - ID: "DeviceLocationsUpdate", Area: "device", Group: "locations", Command: "update", - Summary: "Update a Location", - Description: "Update details for a location, by ID.\n\n* Updating a location in your organization requires a full administrator or location administrator auth token with a scope of `spark-admin:locations_write`.\n\n* Specify the location ID in the `locationId` parameter in the URI.\n\n* Partners may specify `orgId` query parameter to update location in managed organization.\n\n* **Important:** While the `name` field supports up to 256 characters, locations that are enabled for Webex Calling must have names with a maximum of 80 characters. If the location is enabled for calling, ensure the name does not exceed 80 characters to maintain compatibility with Control Hub and calling features.", - Method: "PUT", Path: "/locations/{locationId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "Update location common attributes for this location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Update location common attributes for this organization."}, - }, - Body: &Body{}, -} - -var DeviceLocationsDelete = &Operation{ - ID: "DeviceLocationsDelete", Area: "device", Group: "locations", Command: "delete", - Summary: "Delete Location", - Description: "Delete a location, by ID.\n\n* Specify the location ID in the `locationId` parameter in the URI.\n\n* Deleting a location in your organization requires a full administrator auth token with a scope of `spark-admin:locations_write`.\n\n* NOTE: Disabling Webex Calling for a Webex Calling enabled location is required prior to deleting a location.", - Method: "DELETE", Path: "/locations/{locationId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "A unique identifier for the location."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Specify the organization for the location to be deleted."}, - }, -} - -var DeviceLocationsListFloors = &Operation{ - ID: "DeviceLocationsListFloors", Area: "device", Group: "locations", Command: "list-floors", - Summary: "List Location Floors", - Description: "List location floors.\nRequires an administrator auth token with the `spark-admin:locations_read` scope.", - Method: "GET", Path: "/locations/{locationId}/floors", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "A unique identifier for the location."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var DeviceLocationsCreateFloor = &Operation{ - ID: "DeviceLocationsCreateFloor", Area: "device", Group: "locations", Command: "create-floor", - Summary: "Create a Location Floor", - Description: "Create a new floor in the given location. The `displayName` parameter is optional, and omitting it will result in the creation of a floor without that value set.\nRequires an administrator auth token with the `spark-admin:locations_write` scope.", - Method: "POST", Path: "/locations/{locationId}/floors", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "A unique identifier for the location."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "floorNumber", Flag: "floor-number", Type: "int64"}, - {Name: "displayName", Flag: "display-name", Type: "string"}, - }}, -} - -var DeviceLocationsGetFloor = &Operation{ - ID: "DeviceLocationsGetFloor", Area: "device", Group: "locations", Command: "get-floor", - Summary: "Get Location Floor Details", - Description: "Shows details for a floor, by ID. Specify the floor ID in the `floorId` parameter in the URI.\nRequires an administrator auth token with the `spark-admin:locations_read` scope.", - Method: "GET", Path: "/locations/{locationId}/floors/{floorId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "A unique identifier for the location."}, - {Name: "floorId", In: InPath, Flag: "floor-id", Usage: "A unique identifier for the floor."}, - }, -} - -var DeviceLocationsUpdateFloor = &Operation{ - ID: "DeviceLocationsUpdateFloor", Area: "device", Group: "locations", Command: "update-floor", - Summary: "Update a Location Floor", - Description: "Updates details for a floor, by ID. Specify the floor ID in the `floorId` parameter in the URI. Include all details for the floor returned by a previous call to [Get Location Floor Details](/docs/api/v1/locations/get-location-floor-details). Omitting the optional `displayName` field will result in that field no longer being defined for the floor.\nRequires an administrator auth token with the `spark-admin:locations_write` scope.", - Method: "PUT", Path: "/locations/{locationId}/floors/{floorId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "A unique identifier for the location."}, - {Name: "floorId", In: InPath, Flag: "floor-id", Usage: "A unique identifier for the floor."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "floorNumber", Flag: "floor-number", Type: "int64"}, - {Name: "displayName", Flag: "display-name", Type: "string"}, - }}, -} - -var DeviceLocationsDeleteFloor = &Operation{ - ID: "DeviceLocationsDeleteFloor", Area: "device", Group: "locations", Command: "delete-floor", - Summary: "Delete a Location Floor", - Description: "Deletes a floor, by ID.\nRequires an administrator auth token with the `spark-admin:locations_write` scope.", - Method: "DELETE", Path: "/locations/{locationId}/floors/{floorId}", Host: HostWebex, - Params: []Param{ - {Name: "locationId", In: InPath, Flag: "location-id", Usage: "A unique identifier for the location."}, - {Name: "floorId", In: InPath, Flag: "floor-id", Usage: "A unique identifier for the floor."}, - }, -} - -var deviceGroups = []Group{ - {Name: "device-call", Summary: "DeviceCall commands"}, - {Name: "device-configurations", Summary: "DeviceConfigurations commands"}, - {Name: "devices", Summary: "Devices commands"}, - {Name: "hot-desk", Summary: "HotDesk commands"}, - {Name: "workspace-locations", Summary: "WorkspaceLocations commands"}, - {Name: "workspace-metrics", Summary: "WorkspaceMetrics commands"}, - {Name: "workspace-personalization", Summary: "WorkspacePersonalization commands"}, - {Name: "workspaces", Summary: "Workspaces commands"}, - {Name: "xapi", Summary: "Xapi commands"}, - {Name: "locations", Summary: "Locations commands"}, -} - -var deviceOperations = []*Operation{ - DeviceDeviceCallGetMembers, - DeviceDeviceCallUpdateMembers, - DeviceDeviceCallSearchMembers, - DeviceDeviceCallApplyChanges, - DeviceDeviceCallGetSettings, - DeviceDeviceCallUpdateSettings, - DeviceDeviceCallGetLocationSettings, - DeviceDeviceCallGetWebexCalling, - DeviceDeviceCallUpdateThirdParty, - DeviceDeviceCallGetPerson, - DeviceDeviceCallUpdateHotelingSettingsPersonPrimary, - DeviceDeviceCallGetWorkspace, - DeviceDeviceCallUpdateWorkspace, - DeviceDeviceCallListSupported, - DeviceDeviceCallGetOverrideSettings, - DeviceDeviceCallCreateLineKeyTemplate, - DeviceDeviceCallListLineKeyTemplates, - DeviceDeviceCallGetLineKeyTemplate, - DeviceDeviceCallUpdateLineKeyTemplate, - DeviceDeviceCallDeleteLineKeyTemplate, - DeviceDeviceCallPreviewApplyLineKeyTemplate, - DeviceDeviceCallApplyLineKeyTemplate, - DeviceDeviceCallListApplyLineKeyTemplateJobs, - DeviceDeviceCallGetJobStatusApplyLineKeyTemplateJob, - DeviceDeviceCallGetJobErrorsApplyLineKeyTemplateJob, - DeviceDeviceCallGetDectTypeListDeprecated, - DeviceDeviceCallGetDectTypeList, - DeviceDeviceCallValidateListMacAddress, - DeviceDeviceCallUpdateSettingsAcrossOrgLocationJob, - DeviceDeviceCallListChangeSettingsJobs, - DeviceDeviceCallGetChangeSettingsJobStatus, - DeviceDeviceCallListChangeSettingsJobErrors, - DeviceDeviceCallGetLayoutId, - DeviceDeviceCallUpdateLayoutId, - DeviceDeviceCallRebuildPhonesConfiguration, - DeviceDeviceCallListRebuildPhonesJobs, - DeviceDeviceCallGetJobStatusRebuildPhonesJob, - DeviceDeviceCallGetJobErrorsRebuildPhonesJob, - DeviceDeviceCallGetSettingsPerson, - DeviceDeviceCallUpdateSettingsPerson, - DeviceDeviceCallGetSettingsWorkspace, - DeviceDeviceCallUpdateSettingsWorkspace, - DeviceDeviceCallListBackgroundImages, - DeviceDeviceCallDeleteBackgroundImages, - DeviceDeviceCallUploadBackgroundImage, - DeviceDeviceCallGetUserCount, - DeviceDeviceCallGetCountMembers, - DeviceDeviceCallGetCountAvailableMembers, - DeviceDeviceCallListSupported2, - DeviceDeviceCallGetValidationSchema, - DeviceDeviceCallGetSettingsGroups, - DeviceDeviceCallGetCustomerDynamicSettings, - DeviceDeviceCallGetLocationDynamicSettings, - DeviceDeviceCallGetDynamicSettings, - DeviceDeviceCallUpdateSpecifiedSettings, - DeviceDeviceCallUpdatesDynamicSettingsAcrossOrgLocation, - DeviceDeviceCallListDynamicSettingsJobs, - DeviceDeviceCallGetDynamicSettingsJobStatus, - DeviceDeviceCallListDynamicSettingsJobErrors, - DeviceDeviceCallListSupported3, - DeviceDeviceCallGetSettingsGroups2, - DeviceDeviceCallGetCustomerDynamicSettings2, - DeviceDeviceCallGetLocationDynamicSettings2, - DeviceDeviceCallGetDynamicSettings2, - DeviceDeviceCallUpdateDynamicSettings, - DeviceDeviceCallUpdateDynamicSettingsAcrossOrgLocation, - DeviceDeviceCallListDynamicSettingsJobs2, - DeviceDeviceCallGetDynamicSettingsJobStatus2, - DeviceDeviceCallListDynamicSettingsJobErrors2, - DeviceDeviceConfigurationsList, - DeviceDeviceConfigurationsUpdate, - DeviceDevicesList, - DeviceDevicesCreateMacAddress, - DeviceDevicesGet, - DeviceDevicesDelete, - DeviceDevicesUpdateTags, - DeviceDevicesCreateActivationCode, - DeviceHotDeskListSessions, - DeviceHotDeskDeleteSession, - DeviceWorkspaceLocationsList, - DeviceWorkspaceLocationsCreate, - DeviceWorkspaceLocationsGet, - DeviceWorkspaceLocationsUpdate, - DeviceWorkspaceLocationsDelete, - DeviceWorkspaceLocationsListFloors, - DeviceWorkspaceLocationsCreateFloor, - DeviceWorkspaceLocationsGetFloor, - DeviceWorkspaceLocationsUpdateFloor, - DeviceWorkspaceLocationsDeleteFloor, - DeviceWorkspaceMetricsWorkspaceMetrics, - DeviceWorkspaceMetricsDuration, - DeviceWorkspacePersonalizationPersonalize, - DeviceWorkspacePersonalizationGetTask, - DeviceWorkspacesList, - DeviceWorkspacesCreate, - DeviceWorkspacesGet, - DeviceWorkspacesUpdate, - DeviceWorkspacesDelete, - DeviceWorkspacesGetCapabilities, - DeviceWorkspacesGet2, - DeviceXapiQueryStatus, - DeviceXapiExecuteCommand, - DeviceXapiQuerySchema, - DeviceLocationsList, - DeviceLocationsCreate, - DeviceLocationsGet, - DeviceLocationsUpdate, - DeviceLocationsDelete, - DeviceLocationsListFloors, - DeviceLocationsCreateFloor, - DeviceLocationsGetFloor, - DeviceLocationsUpdateFloor, - DeviceLocationsDeleteFloor, -} diff --git a/pkg/webexops/zz_meetings.go b/pkg/webexops/zz_meetings.go deleted file mode 100644 index 45960ea..0000000 --- a/pkg/webexops/zz_meetings.go +++ /dev/null @@ -1,2512 +0,0 @@ -// Code generated by codegen/generate_cli.py; DO NOT EDIT. - -package webexops - -var MeetingsChatsListMeeting = &Operation{ - ID: "MeetingsChatsListMeeting", Area: "meetings", Group: "chats", Command: "list-meeting", - Summary: "List Meeting Chats", - Description: "Lists the meeting chats of a finished [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) specified by `meetingId`. You can set a maximum number of chats to return.\n\nUse this operation to list the chats of a finished [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) when they are ready. Please note that only **meeting instances** in state `ended` are supported for `meetingId`. **Meeting series**, **scheduled meetings** and `in-progress` **meeting instances** are not supported.", - Method: "GET", Path: "/meetings/postMeetingChats", Host: HostWebex, - Params: []Param{ - {Name: "meetingId", In: InQuery, Flag: "meeting-id", Usage: "A unique identifier for the [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) to which the chats belong. The meeting ID of a scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meeting is not supported."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the maximum number of meeting chats in the response, up to 100."}, - {Name: "offset", In: InQuery, Flag: "offset", Usage: "Offset from the first result that you want to fetch."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "offset", Size: "max", First: 0}}, -} - -var MeetingsChatsDeleteMeeting = &Operation{ - ID: "MeetingsChatsDeleteMeeting", Area: "meetings", Group: "chats", Command: "delete-meeting", - Summary: "Delete Meeting Chats", - Description: "Deletes the meeting chats of a finished [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) specified by `meetingId`.\n\nUse this operation to delete the chats of a finished [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) when they are ready. Please note that only **meeting instances** in state `ended` are supported for `meetingId`. **Meeting series**, **scheduled meetings** and `in-progress` **meeting instances** are not supported.", - Method: "DELETE", Path: "/meetings/postMeetingChats", Host: HostWebex, - Params: []Param{ - {Name: "meetingId", In: InQuery, Flag: "meeting-id", Usage: "A unique identifier for the [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) to which the chats belong. Meeting IDs of a scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meeting are not supported."}, - }, -} - -var MeetingsClosedCaptionsListMeeting = &Operation{ - ID: "MeetingsClosedCaptionsListMeeting", Area: "meetings", Group: "closed-captions", Command: "list-meeting", - Summary: "List Meeting Closed Captions", - Description: "Lists closed captions of a finished [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) specified by `meetingId`.\n\n* Closed captions are ready 15 minutes after the meeting is finished.\n\n* Only **meeting instances** in state `ended` are supported for `meetingId`. **Meeting series**, **scheduled meetings** and `in-progress` **meeting instances** are not supported.\n\n* Currently, a meeting may have only one closed caption associated with its `meetingId`. The response is a closed captions array, which may contain multiple values to allow for future expansion, but currently only one closed caption is included in the response.", - Method: "GET", Path: "/meetingClosedCaptions", Host: HostWebex, - Params: []Param{ - {Name: "meetingId", In: InQuery, Flag: "meeting-id", Usage: "Unique identifier for the [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) which the closed captions belong to. This parameter only applies to ended meeting instances. It does not apply to meeting series, scheduled meetings or scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meetings."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var MeetingsClosedCaptionsListMeetingSnippets = &Operation{ - ID: "MeetingsClosedCaptionsListMeetingSnippets", Area: "meetings", Group: "closed-captions", Command: "list-meeting-snippets", - Summary: "List Meeting Closed Caption Snippets", - Description: "Lists snippets of a meeting closed caption specified by `closedCaptionId`.", - Method: "GET", Path: "/meetingClosedCaptions/{closedCaptionId}/snippets", Host: HostWebex, - Params: []Param{ - {Name: "closedCaptionId", In: InPath, Flag: "closed-caption-id", Usage: "Unique identifier for the meeting closed caption which the snippets belong to."}, - {Name: "meetingId", In: InQuery, Flag: "meeting-id", Usage: "Unique identifier for the [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) which the closed caption snippets belong to. This parameter only applies to ended meeting instances. It does not apply to meeting series, scheduled meetings or scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meetings."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var MeetingsClosedCaptionsDownloadMeetingSnippets = &Operation{ - ID: "MeetingsClosedCaptionsDownloadMeetingSnippets", Area: "meetings", Group: "closed-captions", Command: "download-meeting-snippets", - Summary: "Download Meeting Closed Caption Snippets", - Description: "Download meeting closed caption snippets from the meeting closed caption specified by `closedCaptionId` formatted either as a Video Text Track (.vtt) file or plain text (.txt) file.\n\n#### Request Header\n\n* `timezone`: *[Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) for time stamps in response body, defined in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default value is `UTC` if not specified.*", - Method: "GET", Path: "/meetingClosedCaptions/{closedCaptionId}/download", Host: HostWebex, - Params: []Param{ - {Name: "closedCaptionId", In: InPath, Flag: "closed-caption-id", Usage: "Unique identifier for the meeting closed caption."}, - {Name: "format", In: InQuery, Flag: "format", Usage: "Format for the downloaded meeting closed caption snippets."}, - {Name: "meetingId", In: InQuery, Flag: "meeting-id", Usage: "Unique identifier for the [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) which the closed caption snippets belong to. This parameter only applies to meeting instances in the `ended` state. It does not apply to meeting series, scheduled meetings or scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meetings."}, - {Name: "timezone", In: InHeader, Flag: "timezone", Usage: "e.g. UTC"}, - }, -} - -var MeetingsInviteesListMeeting = &Operation{ - ID: "MeetingsInviteesListMeeting", Area: "meetings", Group: "invitees", Command: "list-meeting", - Summary: "List Meeting Invitees", - Description: "Lists meeting invitees for a meeting with a specified `meetingId`. You can set a maximum number of invitees to return.\n\nThis operation can be used for meeting series, scheduled meetings, and ended or ongoing meeting instance objects. If the specified `meetingId` is for a meeting series, the invitees for the series will be listed; if the `meetingId` is for a scheduled meeting, the invitees for the particular scheduled meeting will be listed; if the `meetingId` is for an ended or ongoing meeting instance, the invitees for the particular meeting instance will be listed. See the [Webex Meetings](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) guide for more information about the types of meetings.\n\nThe list returned is sorted in ascending order by email address.\n\nLong result sets are split into [pages](/docs/basics#pagination).", - Method: "GET", Path: "/meetingInvitees", Host: HostWebex, - Params: []Param{ - {Name: "meetingId", In: InQuery, Flag: "meeting-id", Usage: "Unique identifier for the meeting for which invitees are being requested. The meeting can be a meeting series, a scheduled meeting, or a meeting instance which has ended or is ongoing. The meeting ID of a scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meeting is not supported for this API."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the maximum number of meeting invitees in the response, up to 100."}, - {Name: "hostEmail", In: InQuery, Flag: "host-email", Usage: "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin on-behalf-of scopes. If set, the admin may specify the email of a user in a site they manage and the API will return meeting invitees that are hosted by that user."}, - {Name: "panelist", In: InQuery, Flag: "panelist", Usage: "Filter invitees or attendees for webinars only. If `true`, returns invitees. If `false`, returns attendees. If `null`, returns both invitees and attendees."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, -} - -var MeetingsInviteesCreateMeeting = &Operation{ - ID: "MeetingsInviteesCreateMeeting", Area: "meetings", Group: "invitees", Command: "create-meeting", - Summary: "Create a Meeting Invitee", - Description: "* Invite a person to attend a meeting.\n\n* Identify the invitee in the request body, by email address.\n\n* The `sendEmail` parameter is `true` by default and the meeting emails will be sent to the invitee's `email`. Please set `sendEmail` to `false` to prevent the invitee from receiving emails.", - Method: "POST", Path: "/meetingInvitees", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "meetingId", Flag: "meeting-id", Type: "string"}, - {Name: "email", Flag: "email", Type: "string"}, - {Name: "displayName", Flag: "display-name", Type: "string"}, - {Name: "coHost", Flag: "co-host", Type: "bool"}, - {Name: "hostEmail", Flag: "host-email", Type: "string"}, - {Name: "sendEmail", Flag: "send-email", Type: "bool"}, - {Name: "panelist", Flag: "panelist", Type: "bool"}, - }}, -} - -var MeetingsInviteesCreateMeeting2 = &Operation{ - ID: "MeetingsInviteesCreateMeeting2", Area: "meetings", Group: "invitees", Command: "create-meeting-2", - Summary: "Create Meeting Invitees", - Description: "* Invite people to attend a meeting in bulk.\n\n* Identify each invitee by the email address of each item in the `items` of the request body.\n\n* Each invitee should have a unique `email`.\n\n* This API limits the maximum size of `items` in the request body to 100.\n\n* The `sendEmail` parameter for each invitee is `true` by default and the meeting emails will be sent to the invitee's `email`. Please set `sendEmail` to `false` to prevent an invitee from receiving emails.", - Method: "POST", Path: "/meetingInvitees/bulkInsert", Host: HostWebex, - Body: &Body{}, -} - -var MeetingsInviteesGetMeeting = &Operation{ - ID: "MeetingsInviteesGetMeeting", Area: "meetings", Group: "invitees", Command: "get-meeting", - Summary: "Get a Meeting Invitee", - Description: "Retrieve details for a meeting invitee identified by a `meetingInviteeId` in the URI.", - Method: "GET", Path: "/meetingInvitees/{meetingInviteeId}", Host: HostWebex, - Params: []Param{ - {Name: "meetingInviteeId", In: InPath, Flag: "meeting-invitee-id", Usage: "Unique identifier for the invitee whose details are being requested."}, - {Name: "hostEmail", In: InQuery, Flag: "host-email", Usage: "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin on-behalf-of scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for a meeting invitee that is hosted by that user."}, - }, -} - -var MeetingsInviteesUpdateMeeting = &Operation{ - ID: "MeetingsInviteesUpdateMeeting", Area: "meetings", Group: "invitees", Command: "update-meeting", - Summary: "Update a Meeting Invitee", - Description: "Update details for a meeting invitee identified by a `meetingInviteeId` in the URI.", - Method: "PUT", Path: "/meetingInvitees/{meetingInviteeId}", Host: HostWebex, - Params: []Param{ - {Name: "meetingInviteeId", In: InPath, Flag: "meeting-invitee-id", Usage: "Unique identifier for the invitee to be updated. This parameter only applies to an invitee to a meeting series or a scheduled meeting. It doesn't apply to an invitee to an ended or ongoing meeting instance."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "email", Flag: "email", Type: "string"}, - {Name: "displayName", Flag: "display-name", Type: "string"}, - {Name: "coHost", Flag: "co-host", Type: "bool"}, - {Name: "hostEmail", Flag: "host-email", Type: "string"}, - {Name: "sendEmail", Flag: "send-email", Type: "bool"}, - {Name: "panelist", Flag: "panelist", Type: "bool"}, - }}, -} - -var MeetingsInviteesDeleteMeeting = &Operation{ - ID: "MeetingsInviteesDeleteMeeting", Area: "meetings", Group: "invitees", Command: "delete-meeting", - Summary: "Delete a Meeting Invitee", - Description: "Removes a meeting invitee identified by a `meetingInviteeId` specified in the URI. The deleted meeting invitee cannot be recovered.\n\nIf the meeting invitee is associated with a meeting series, the invitee will be removed from the entire meeting series. If the invitee is associated with a scheduled meeting, the invitee will be removed from only that scheduled meeting.", - Method: "DELETE", Path: "/meetingInvitees/{meetingInviteeId}", Host: HostWebex, - Params: []Param{ - {Name: "meetingInviteeId", In: InPath, Flag: "meeting-invitee-id", Usage: "Unique identifier for the invitee to be removed. This parameter only applies to an invitee to a meeting series or a scheduled meeting. It doesn't apply to an invitee to an ended or ongoing meeting instance."}, - {Name: "hostEmail", In: InQuery, Flag: "host-email", Usage: "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin on-behalf-of scopes. If set, the admin may specify the email of a user in a site they manage and the API will delete a meeting invitee that is hosted by that user."}, - {Name: "sendEmail", In: InQuery, Flag: "send-email", Usage: "If `true`, send an email to the invitee."}, - }, -} - -var MeetingsMessagesDeleteMeeting = &Operation{ - ID: "MeetingsMessagesDeleteMeeting", Area: "meetings", Group: "messages", Command: "delete-meeting", - Summary: "Delete a Meeting Message", - Description: "Deletes a Meeting Message from the In Meeting Chat, using its ID.\n\nThis ID can be retrieved by a Compliance Officer using the [events API](/docs/api/v1/events/list-events) filtering on the `meetingMessages` resource type.\n\nNOTE: When viewing the response from the events API, there are 2 `id` fields. The ID to be used here can be found under the `data` field in the response.\n\nSpecify the `meetingMessage` ID in the `meetingMessageId` parameter in the URI.", - Method: "DELETE", Path: "/meeting/messages/{meetingMessageId}", Host: HostWebex, - Params: []Param{ - {Name: "meetingMessageId", In: InPath, Flag: "meeting-message-id", Usage: "The unique identifier for the message."}, - }, -} - -var MeetingsParticipantsListMeeting = &Operation{ - ID: "MeetingsParticipantsListMeeting", Area: "meetings", Group: "participants", Command: "list-meeting", - Summary: "List Meeting Participants", - Description: "List all participants in an in-progress meeting or an ended meeting. The `meetingId` parameter is required, which is the unique identifier for the meeting.\n\nThe authenticated user calling this API must either have an Administrator role with the `meeting:admin_participants_read` scope, or be the meeting host.\n\n* If the `meetingId` value specified is for a meeting series, the operation returns participants' details for the last instance in the meeting series. If the `meetingStartTimeFrom` value and the `meetingStartTimeTo` value are specified, the operation returns participants' details for the last instance in the meeting series in the time range.\n\n* If the `meetingId` value specified is for a scheduled meeting from a meeting series, the operation returns participants' details for that scheduled meeting. If the `meetingStartTimeFrom` value and the `meetingStartTimeTo` value are specified, the operation returns participants' details for the last instance in the scheduled meeting in the time range.\n\n* If the `meetingId` value specified is for a meeting instance which is in progress or ended, the operation returns participants' details for that meeting instance.\n\n* If the meeting is in progress, the operation returns all the real-time participants. If the meeting is ended, the operation returns all the participants that have joined the meeting.\n\n* If the `breakoutSessionId` parameter is specified, the operation returns participants who joined the specified breakout session. It only applies to end meeting instances.\n\n* The `breakoutSessionsAttended` attribute is only returned for a participant of an ended meeting instance if the participant joined breakout sessions in the meeitng.\n\n* The `meetingStartTimeFrom` and `meetingStartTimeTo` only apply when `meetingId` is a series ID or an occurrence ID.\n\n* If the webinar is in progress when the attendee has ever been unmuted to speak in the webinar, this attendee becomes a panelist. The operation returns include the people who have been designated as panelists when the webinar is created and have joined the webinar, and the attendees who have joined the webinar and are unmuted to speak in the webinar temporarily. If the webinar is ended, the operation returns all the participants, including all panelists and all attendees who are not panelists.\n\n#### Request Header\n\n* `timezone`: Time zone for time stamps in the response body, defined in conformance with the [IANA time zone database](https://www.iana.org/time-zones).", - Method: "GET", Path: "/meetingParticipants", Host: HostWebex, - Params: []Param{ - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the maximum number of participants in the response, up to 100."}, - {Name: "meetingId", In: InQuery, Flag: "meeting-id", Usage: "The unique identifier for the meeting. Please note that currently meeting ID of a scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meeting is not supported for this API."}, - {Name: "breakoutSessionId", In: InQuery, Flag: "breakout-session-id", Usage: "The unique identifier for a breakout session which happened during an ended meeting instance. If the `breakoutSessionId` is specified, the operation returns participants who joined the breakout session. Only applies to ended meeting instances."}, - {Name: "meetingStartTimeFrom", In: InQuery, Flag: "meeting-start-time-from", Usage: "Meetings start from the specified date and time(exclusive) in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. If `meetingStartTimeFrom` is not specified, it equals `meetingStartTimeTo` minus 1 month; if `meetingStartTimeTo` is also not specified, the default value for `meetingStartTimeFrom` is 1 month before current date and time."}, - {Name: "meetingStartTimeTo", In: InQuery, Flag: "meeting-start-time-to", Usage: "Meetings start before the specified date and time(exclusive) in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. If `meetingStartTimeTo` is not specified, it equals the result of a comparison, `meetingStartTimeFrom` plus one month and the current time, and the result is the earlier of the two; if `meetingStartTimeFrom` is also not specified, the default value for `meetingStartTimeTo` is current date and time minus 1 month."}, - {Name: "hostEmail", In: InQuery, Flag: "host-email", Usage: "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes, the admin may specify the email of a user in a site they manage and the API will return meeting participants of the meetings that are hosted by that user."}, - {Name: "joinTimeFrom", In: InQuery, Flag: "join-time-from", Usage: "The time participants join a meeting starts from the specified date and time (inclusive) in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. If `joinTimeFrom` is not specified, it equals `joinTimeTo` minus 7 days."}, - {Name: "joinTimeTo", In: InQuery, Flag: "join-time-to", Usage: "The time participants join a meeting before the specified date and time (exclusive) in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. If `joinTimeTo` is not specified, it equals `joinTimeFrom` plus 7 days. The interval between `joinTimeFrom` and `joinTimeTo` must be within 90 days."}, - {Name: "timezone", In: InHeader, Flag: "timezone", Usage: "e.g. UTC"}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, -} - -var MeetingsParticipantsQueryMeetingEmail = &Operation{ - ID: "MeetingsParticipantsQueryMeetingEmail", Area: "meetings", Group: "participants", Command: "query-meeting-email", - Summary: "Query Meeting Participants with Email", - Description: "Query participants in a live meeting, or after the meeting, using participant's email. The `meetingId` parameter is the unique identifier for the meeting and is required.\n\nThe authenticated user calling this API must either have an Administrator role with the `meeting:admin_participants_read` scope, or be the meeting host.\n\n* If the `meetingId` value specified is for a meeting series, the operation returns participants' details for the last instance in the meeting series. If the `meetingStartTimeFrom` value and the `meetingStartTimeTo` value are specified, the operation returns participants' details for the last instance in the meeting series in the time range.\n\n* If the `meetingId` value specified is for a scheduled meeting from a meeting series, the operation returns participants' details for that scheduled meeting. If the `meetingStartTimeFrom` value and the `meetingStartTimeTo` value are specified, the operation returns participants' details for the last instance in the scheduled meeting in the time range.\n\n* If the `meetingId` value specified is for a meeting instance which is in progress or ended, the operation returns participants' details for that meeting instance.\n\n* The `meetingStartTimeFrom` and `meetingStartTimeTo` only apply when `meetingId` is a series ID or an occurrence ID.\n\n#### Request Header\n\n* `timezone`: Time zone for time stamps in the response body, defined in conformance with the [IANA time zone database](https://www.iana.org/time-zones).", - Method: "POST", Path: "/meetingParticipants/query", Host: HostWebex, - Params: []Param{ - {Name: "meetingId", In: InQuery, Flag: "meeting-id", Usage: "The unique identifier for the meeting."}, - {Name: "meetingStartTimeFrom", In: InQuery, Flag: "meeting-start-time-from", Usage: "Meetings start from the specified date and time(exclusive) in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. If `meetingStartTimeFrom` is not specified, it equals `meetingStartTimeTo` minus 1 month; if `meetingStartTimeTo` is also not specified, the default value for `meetingStartTimeFrom` is 1 month before current date and time."}, - {Name: "meetingStartTimeTo", In: InQuery, Flag: "meeting-start-time-to", Usage: "Meetings start before the specified date and time(exclusive) in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. If `meetingStartTimeTo` is not specified, it equals the result of a comparison, `meetingStartTimeFrom` plus one month and the current time, and the result is the earlier of the two; if `meetingStartTimeFrom` is also not specified, the default value for `meetingStartTimeTo` is current date and time minus 1 month."}, - {Name: "hostEmail", In: InQuery, Flag: "host-email", Usage: "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes, the admin may specify the email of a user in a site they manage and the API will return meeting participants of the meetings that are hosted by that user."}, - {Name: "timezone", In: InHeader, Flag: "timezone", Usage: "e.g. UTC"}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "emails", Flag: "emails", Type: "[]string"}, - {Name: "joinTimeFrom", Flag: "join-time-from", Type: "string"}, - {Name: "joinTimeTo", Flag: "join-time-to", Type: "string"}, - }}, -} - -var MeetingsParticipantsGetMeeting = &Operation{ - ID: "MeetingsParticipantsGetMeeting", Area: "meetings", Group: "participants", Command: "get-meeting", - Summary: "Get Meeting Participant Details", - Description: "Get a meeting participant details of a live or post meeting. The `participantId` is required to identify the meeting and the participant.\n\nThe authenticated user calling this API must either have an Administrator role with the `meeting:admin_participants_read` scope, or be the meeting host.", - Method: "GET", Path: "/meetingParticipants/{participantId}", Host: HostWebex, - Params: []Param{ - {Name: "participantId", In: InPath, Flag: "participant-id", Usage: "The unique identifier for the meeting and the participant."}, - {Name: "hostEmail", In: InQuery, Flag: "host-email", Usage: "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes, the admin may specify the email of a user in a site they manage and the API will return meeting participants of the meetings that are hosted by that user."}, - }, -} - -var MeetingsParticipantsUpdate = &Operation{ - ID: "MeetingsParticipantsUpdate", Area: "meetings", Group: "participants", Command: "update", - Summary: "Update a Participant", - Description: "Mute, un-mute, expel, or admit a participant in a live meeting. The `participantId` is required to identify the meeting and the participant.\n\nNotes:\n\n* The owner of the OAuth token calling this API needs to be the meeting host or co-host.\n\n* The `expel` attribute always takes precedence over `admit` and `muted`. The request can have all `expel`, `admit` and `muted` or any of them.\n\n
There is an inconsistent behavior in Webex Meetings App when all active meeting participants join using Webex Meetings App and the host attempts to change meeting participant status using this API. Requests to mute, un-mute, admit, or expel a meeting participant return a successful response and update the state in the API, but the changes will not be applied to the Webex Meetings App participants. The inconsistent behavior in Webex Meetings App will be corrected in a future release.\n**Workaround**: [Enable closed captions](https://help.webex.com/en-us/article/WBX47352/How-Do-I-Enable-Closed-Captions?) or enable the [Webex Assistant](https://help.webex.com/en-us/article/n91uf2x/Turn-on-or-turn-off-Webex-Assistant-during-a-meeting-or-webinar).
", - Method: "PUT", Path: "/meetingParticipants/{participantId}", Host: HostWebex, - Params: []Param{ - {Name: "participantId", In: InPath, Flag: "participant-id", Usage: "The unique identifier for the meeting and the participant."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "muted", Flag: "muted", Type: "bool"}, - {Name: "admit", Flag: "admit", Type: "bool"}, - {Name: "expel", Flag: "expel", Type: "bool"}, - }}, -} - -var MeetingsParticipantsAdmit = &Operation{ - ID: "MeetingsParticipantsAdmit", Area: "meetings", Group: "participants", Command: "admit", - Summary: "Admit Participants", - Description: "Admit multiple participants to a meeting in progress.\n\nThis API limits the maximum size of `items` in the request body to 100.\n\nEach `participantId` of `items` in the request body should have the same prefix of `meetingId`.", - Method: "POST", Path: "/meetingParticipants/admit", Host: HostWebex, - Body: &Body{}, -} - -var MeetingsParticipantsCallOutSip = &Operation{ - ID: "MeetingsParticipantsCallOutSip", Area: "meetings", Group: "participants", Command: "call-out-sip", - Summary: "Call Out a SIP Participant", - Description: "Initiate a call to a SIP participant to join a meeting.\n\nIf a user invoking the API is not a [Service App](/docs/service-apps), the user must join the meeting before invoking the API. If a user is a [Service App](/docs/service-apps), the service app can invoke the API without joining the meeting. In both cases, the normal user or the service app that invokes the API must be the meeting host or cohost. If the meeting is created by the service app on behalf of the real host, the service app cannot use the admin on behalf function to invoke this API. Instead the host or cohost must execute the action.\n\nThe authenticated user calling this API must have the `meeting:participants_write` scope.\n\nThe ringing on the invited SIP device stops in 30 seconds if there is no response.", - Method: "POST", Path: "/meetingParticipants/callout", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "address", Flag: "address", Type: "string"}, - {Name: "displayName", Flag: "display-name", Type: "string"}, - {Name: "meetingId", Flag: "meeting-id", Type: "string"}, - {Name: "meetingNumber", Flag: "meeting-number", Type: "string"}, - {Name: "addressType", Flag: "address-type", Type: "string"}, - {Name: "invitationCorrelationId", Flag: "invitation-correlation-id", Type: "string"}, - }}, -} - -var MeetingsParticipantsCancelCallingOutSip = &Operation{ - ID: "MeetingsParticipantsCancelCallingOutSip", Area: "meetings", Group: "participants", Command: "cancel-calling-out-sip", - Summary: "Cancel Calling Out a SIP Participant", - Description: "Cancel the call to a SIP participant before the ringing on the invited SIP device stops. The ringing on the invited SIP device stops in 30 seconds if there is no response.\n\nIf a user invoking the API is not a [Service App](/docs/service-apps), the user must join the meeting before invoking the API. If a user is a [Service App](/docs/service-apps), the service app can invoke the API without joining the meeting. In both cases, the normal user or the service app that invokes the API must be the meeting host or cohost. If the meeting is created by the service app on behalf of the real host, the service app cannot use the admin on behalf function to invoke this API. Instead the host or cohost must execute the action.\n\nThe authenticated user calling this API must have the `meeting:participants_write` scope.", - Method: "POST", Path: "/meetingParticipants/cancelCallout", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "participantId", Flag: "participant-id", Type: "string"}, - }}, -} - -var MeetingsMeetingPollsList = &Operation{ - ID: "MeetingsMeetingPollsList", Area: "meetings", Group: "meeting-polls", Command: "list", - Summary: "List Meeting Polls", - Description: "Lists all the polls and the poll questions in a meeting when ready.\n\n* Only [meeting instances](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) in state `ended` or `inProgress` are supported for `meetingId`.\n\n* No pagination for this API because we don't expect a large number of questions for each meeting.\n\n
Polls are available within 15 minutes following the meeting.
", - Method: "GET", Path: "/meetings/polls", Host: HostWebex, - Params: []Param{ - {Name: "meetingId", In: InQuery, Flag: "meeting-id", Usage: "A unique identifier for the [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) to which the polls belong."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var MeetingsMeetingPollsGetPollresults = &Operation{ - ID: "MeetingsMeetingPollsGetPollresults", Area: "meetings", Group: "meeting-polls", Command: "get-pollresults", - Summary: "Get Meeting PollResults", - Description: "List the meeting polls, the poll's questions, and answers from the meeting when ready.\n\n* Only [meeting instances](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) in state `ended` or `inProgress` are supported for `meetingId`.\n\n* Long result sets will be split into [pages](/docs/basics#pagination).\n\n* This API is paginated by the sum of respondents from all questions in a meeting, these pagination links are returned in the response header.\n\n
Polls results are available within 15 minutes following the meeting.
", - Method: "GET", Path: "/meetings/pollResults", Host: HostWebex, - Params: []Param{ - {Name: "meetingId", In: InQuery, Flag: "meeting-id", Usage: "A unique identifier for the [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) to which the polls belong."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the maximum number of respondents in a meeting in the response, up to 100."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, -} - -var MeetingsMeetingPollsListRespondentsQuestion = &Operation{ - ID: "MeetingsMeetingPollsListRespondentsQuestion", Area: "meetings", Group: "meeting-polls", Command: "list-respondents-question", - Summary: "List Respondents of a Question", - Description: "Lists the respondents to a specific questions in a poll.\n\n* Only [meeting instances](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) in state `ended` or `inProgress` are supported for `meetingId`.\n\n* Long result sets are split into [pages](/docs/basics#pagination).\n\n
The list of poll respondents are available within 15 minutes following the meeting.
", - Method: "GET", Path: "/meetings/polls/{pollId}/questions/{questionId}/respondents", Host: HostWebex, - Params: []Param{ - {Name: "pollId", In: InPath, Flag: "poll-id", Usage: "A unique identifier for the poll to which the respondents belong."}, - {Name: "questionId", In: InPath, Flag: "question-id", Usage: "A unique identifier for the question to which the respondents belong."}, - {Name: "meetingId", In: InQuery, Flag: "meeting-id", Usage: "A unique identifier for the [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) to which the respondents belong."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the maximum number of respondents in a specified question in the response, up to 100."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, -} - -var MeetingsPreferencesGetMeeting = &Operation{ - ID: "MeetingsPreferencesGetMeeting", Area: "meetings", Group: "preferences", Command: "get-meeting", - Summary: "Get Meeting Preference Details", - Description: "Retrieves meeting preferences for the authenticated user.", - Method: "GET", Path: "/meetingPreferences", Host: HostWebex, - Params: []Param{ - {Name: "userEmail", In: InQuery, Flag: "user-email", Usage: "Email address for the user. This parameter is only used if the user or application calling the API has the required [admin-level scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will return details of the meeting preferences for that user."}, - {Name: "siteUrl", In: InQuery, Flag: "site-url", Usage: "URL of the Webex site to query. For individual use, if `siteUrl` is not specified, the query will use the default site of the user. For admin use, if `siteUrl` is not specified, the query will use the default site for the admin's authorization token used to make the call. In the case where the user belongs to a site different than the admin’s default site, the admin can set the site to query using the `siteUrl` parameter. All available Webex sites and default site of a user can be retrieved from [/meetingPreferences/sites](/docs/api/v1/meeting-preferences/get-site-list)."}, - }, -} - -var MeetingsPreferencesGetPersonalMeetingRoomOptions = &Operation{ - ID: "MeetingsPreferencesGetPersonalMeetingRoomOptions", Area: "meetings", Group: "preferences", Command: "get-personal-meeting-room-options", - Summary: "Get Personal Meeting Room Options", - Description: "Retrieves the Personal Meeting Room options for the authenticated user.", - Method: "GET", Path: "/meetingPreferences/personalMeetingRoom", Host: HostWebex, - Params: []Param{ - {Name: "userEmail", In: InQuery, Flag: "user-email", Usage: "Email address for the user. This parameter is only used if the user or application calling the API has the [admin-level scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will return details of the Personal Meeting Room options for that user."}, - {Name: "siteUrl", In: InQuery, Flag: "site-url", Usage: "URL of the Webex site to query. For individual use, if `siteUrl` is not specified, the query will use the default site of the user. For admin use, if `siteUrl` is not specified, the query will use the default site for the admin's authorization token used to make the call. In the case where the user belongs to a site different than the admin’s default site, the admin can set the site to query using the `siteUrl` parameter. All available Webex sites and default site of a user can be retrieved from [/meetingPreferences/sites](/docs/api/v1/meeting-preferences/get-site-list)."}, - }, -} - -var MeetingsPreferencesUpdatePersonalMeetingRoomOptions = &Operation{ - ID: "MeetingsPreferencesUpdatePersonalMeetingRoomOptions", Area: "meetings", Group: "preferences", Command: "update-personal-meeting-room-options", - Summary: "Update Personal Meeting Room Options", - Description: "Updates Personal Meeting Room options for the authenticated user.", - Method: "PUT", Path: "/meetingPreferences/personalMeetingRoom", Host: HostWebex, - Params: []Param{ - {Name: "userEmail", In: InQuery, Flag: "user-email", Usage: "Email address for the user. This parameter is only used if the user or application calling the API has the [admin-level scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will update Personal Meeting Room options for that user."}, - {Name: "siteUrl", In: InQuery, Flag: "site-url", Usage: "URL of the Webex site to query. For individual use, if `siteUrl` is not specified, the query will use the default site of the user. For admin use, if `siteUrl` is not specified, the query will use the default site for the admin's authorization token used to make the call. In the case where the user belongs to a site different than the admin’s default site, the admin can set the site to query using the `siteUrl` parameter. All available Webex sites and default site of a user can be retrieved from [/meetingPreferences/sites](/docs/api/v1/meeting-preferences/get-site-list)."}, - }, - Body: &Body{}, -} - -var MeetingsPreferencesGetAudioOptions = &Operation{ - ID: "MeetingsPreferencesGetAudioOptions", Area: "meetings", Group: "preferences", Command: "get-audio-options", - Summary: "Get Audio Options", - Description: "Retrieves audio options for the authenticated user.", - Method: "GET", Path: "/meetingPreferences/audio", Host: HostWebex, - Params: []Param{ - {Name: "userEmail", In: InQuery, Flag: "user-email", Usage: "Email address for the user. This parameter is only used if the user or application calling the API has the [admin-level scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will return details of the audio options for that user."}, - {Name: "siteUrl", In: InQuery, Flag: "site-url", Usage: "URL of the Webex site to query. For individual use, if `siteUrl` is not specified, the query will use the default site of the user. For admin use, if `siteUrl` is not specified, the query will use the default site for the admin's authorization token used to make the call. In the case where the user belongs to a site different than the admin’s default site, the admin can set the site to query using the `siteUrl` parameter. All available Webex sites and default site of a user can be retrieved from [/meetingPreferences/sites](/docs/api/v1/meeting-preferences/get-site-list)."}, - }, -} - -var MeetingsPreferencesUpdateAudioOptions = &Operation{ - ID: "MeetingsPreferencesUpdateAudioOptions", Area: "meetings", Group: "preferences", Command: "update-audio-options", - Summary: "Update Audio Options", - Description: "Updates audio options for the authenticated user.", - Method: "PUT", Path: "/meetingPreferences/audio", Host: HostWebex, - Params: []Param{ - {Name: "userEmail", In: InQuery, Flag: "user-email", Usage: "Email address for the user. This parameter is only used if the user or application calling the API has the [admin-level scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will update audio options for that user."}, - {Name: "siteUrl", In: InQuery, Flag: "site-url", Usage: "URL of the Webex site to query. For individual use, if `siteUrl` is not specified, the query will use the default site of the user. For admin use, if `siteUrl` is not specified, the query will use the default site for the admin's authorization token used to make the call. In the case where the user belongs to a site different than the admin’s default site, the admin can set the site to query using the `siteUrl` parameter. All available Webex sites and default site of a user can be retrieved from [/meetingPreferences/sites](/docs/api/v1/meeting-preferences/get-site-list)."}, - }, - Body: &Body{}, -} - -var MeetingsPreferencesGetVideoOptions = &Operation{ - ID: "MeetingsPreferencesGetVideoOptions", Area: "meetings", Group: "preferences", Command: "get-video-options", - Summary: "Get Video Options", - Description: "Retrieves video options for the authenticated user.", - Method: "GET", Path: "/meetingPreferences/video", Host: HostWebex, - Params: []Param{ - {Name: "userEmail", In: InQuery, Flag: "user-email", Usage: "Email address for the user. This parameter is only used if the user or application calling the API has the [admin-level scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will return details of the video options for that user."}, - {Name: "siteUrl", In: InQuery, Flag: "site-url", Usage: "URL of the Webex site to query. For individual use, if `siteUrl` is not specified, the query will use the default site of the user. For admin use, if `siteUrl` is not specified, the query will use the default site for the admin's authorization token used to make the call. In the case where the user belongs to a site different than the admin’s default site, the admin can set the site to query using the `siteUrl` parameter. All available Webex sites and default site of a user can be retrieved using [Get Site List](/docs/api/v1/meeting-preferences/get-site-list)."}, - }, -} - -var MeetingsPreferencesUpdateVideoOptions = &Operation{ - ID: "MeetingsPreferencesUpdateVideoOptions", Area: "meetings", Group: "preferences", Command: "update-video-options", - Summary: "Update Video Options", - Description: "Updates video options for the authenticated user.", - Method: "PUT", Path: "/meetingPreferences/video", Host: HostWebex, - Params: []Param{ - {Name: "userEmail", In: InQuery, Flag: "user-email", Usage: "Email address for the user. This parameter is only used if the user or application calling the API has the [admin-level scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will update video options for that user."}, - {Name: "siteUrl", In: InQuery, Flag: "site-url", Usage: "URL of the Webex site to query. For individual use, if `siteUrl` is not specified, the query will use the default site of the user. For admin use, if `siteUrl` is not specified, the query will use the default site for the admin's authorization token used to make the call. In the case where the user belongs to a site different than the admin’s default site, the admin can set the site to query using the `siteUrl` parameter. All available Webex sites and default site of a user can be retrieved from [/meetingPreferences/sites](/docs/api/v1/meeting-preferences/get-site-list)."}, - }, - Body: &Body{}, -} - -var MeetingsPreferencesGetSchedulingOptions = &Operation{ - ID: "MeetingsPreferencesGetSchedulingOptions", Area: "meetings", Group: "preferences", Command: "get-scheduling-options", - Summary: "Get Scheduling Options", - Description: "Retrieves scheduling options for the authenticated user.", - Method: "GET", Path: "/meetingPreferences/schedulingOptions", Host: HostWebex, - Params: []Param{ - {Name: "userEmail", In: InQuery, Flag: "user-email", Usage: "Email address for the user. This parameter is only used if the user or application calling the API has the [admin-level scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will return details of the scheduling options for that user."}, - {Name: "siteUrl", In: InQuery, Flag: "site-url", Usage: "URL of the Webex site to query. For individual use, if `siteUrl` is not specified, the query will use the default site of the user. For admin use, if `siteUrl` is not specified, the query will use the default site for the admin's authorization token used to make the call. In the case where the user belongs to a site different than the admin’s default site, the admin can set the site to query using the `siteUrl` parameter. All available Webex sites and default site of a user can be retrieved from [/meetingPreferences/sites](/docs/api/v1/meeting-preferences/get-site-list)."}, - }, -} - -var MeetingsPreferencesUpdateSchedulingOptions = &Operation{ - ID: "MeetingsPreferencesUpdateSchedulingOptions", Area: "meetings", Group: "preferences", Command: "update-scheduling-options", - Summary: "Update Scheduling Options", - Description: "Updates scheduling options for the authenticated user.\n\n* If `delegateEmails` is null or not specified, the user's delegate emails are not changed. If `delegateEmails` is specified and not empty, the user's delegate emails are updated with the specified emails. If `delegateEmails` is specified as an empty array, the user's existing delegate emails are removed.", - Method: "PUT", Path: "/meetingPreferences/schedulingOptions", Host: HostWebex, - Params: []Param{ - {Name: "userEmail", In: InQuery, Flag: "user-email", Usage: "Email address for the user. This parameter is only used if the user or application calling the API has the [admin-level scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will update scheduling options for that user."}, - {Name: "siteUrl", In: InQuery, Flag: "site-url", Usage: "URL of the Webex site to query. For individual use, if `siteUrl` is not specified, the query will use the default site of the user. For admin use, if `siteUrl` is not specified, the query will use the default site for the admin's authorization token used to make the call. In the case where the user belongs to a site different than the admin’s default site, the admin can set the site to query using the `siteUrl` parameter. All available Webex sites and default site of a user can be retrieved from [/meetingPreferences/sites](/docs/api/v1/meeting-preferences/get-site-list)."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "enabledJoinBeforeHost", Flag: "enabled-join-before-host", Type: "bool"}, - {Name: "joinBeforeHostMinutes", Flag: "join-before-host-minutes", Type: "int64"}, - {Name: "enabledAutoShareRecording", Flag: "enabled-auto-share-recording", Type: "bool"}, - {Name: "enabledWebexAssistantByDefault", Flag: "enabled-webex-assistant-by-default", Type: "bool"}, - {Name: "delegateEmails", Flag: "delegate-emails", Type: "[]string"}, - }}, -} - -var MeetingsPreferencesInsertDelegateEmails = &Operation{ - ID: "MeetingsPreferencesInsertDelegateEmails", Area: "meetings", Group: "preferences", Command: "insert-delegate-emails", - Summary: "Insert Delegate Emails", - Description: "Insert delegate emails for the authenticated user.", - Method: "POST", Path: "/meetingPreferences/schedulingOptions/delegateEmails/insert", Host: HostWebex, - Params: []Param{ - {Name: "userEmail", In: InQuery, Flag: "user-email", Usage: "Email address for the user. This parameter is only used if the user or application calling the API has the [admin-level scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will update scheduling options for that user."}, - {Name: "siteUrl", In: InQuery, Flag: "site-url", Usage: "URL of the Webex site to query. For individual use, if `siteUrl` is not specified, the query will use the default site of the user. For admin use, if `siteUrl` is not specified, the query will use the default site for the admin's authorization token used to make the call. In the case where the user belongs to a site different than the admin’s default site, the admin can set the site to query using the `siteUrl` parameter. All available Webex sites and default site of a user can be retrieved from [/meetingPreferences/sites](/docs/api/v1/meeting-preferences/get-site-list)."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "emails", Flag: "emails", Type: "[]string"}, - }}, -} - -var MeetingsPreferencesDeleteDelegateEmails = &Operation{ - ID: "MeetingsPreferencesDeleteDelegateEmails", Area: "meetings", Group: "preferences", Command: "delete-delegate-emails", - Summary: "Delete Delegate Emails", - Description: "Delete delegate emails for the authenticated user.", - Method: "POST", Path: "/meetingPreferences/schedulingOptions/delegateEmails/delete", Host: HostWebex, - Params: []Param{ - {Name: "userEmail", In: InQuery, Flag: "user-email", Usage: "Email address for the user. This parameter is only used if the user or application calling the API has the [admin-level scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will update scheduling options for that user."}, - {Name: "siteUrl", In: InQuery, Flag: "site-url", Usage: "URL of the Webex site to query. For individual use, if `siteUrl` is not specified, the query will use the default site of the user. For admin use, if `siteUrl` is not specified, the query will use the default site for the admin's authorization token used to make the call. In the case where the user belongs to a site different than the admin’s default site, the admin can set the site to query using the `siteUrl` parameter. All available Webex sites and default site of a user can be retrieved from [/meetingPreferences/sites](/docs/api/v1/meeting-preferences/get-site-list)."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "emails", Flag: "emails", Type: "[]string"}, - }}, -} - -var MeetingsPreferencesGetSiteList = &Operation{ - ID: "MeetingsPreferencesGetSiteList", Area: "meetings", Group: "preferences", Command: "get-site-list", - Summary: "Get Site List", - Description: "Retrieves the list of Webex sites that the authenticated user is set up to use.\nWhen the admin tries to get the site list via `userEmail`, if `siteUrl` is not specified, the API searches the user ID from the admin's default site. If `siteUrl` is specified, the API searches the user ID from the specified site.", - Method: "GET", Path: "/meetingPreferences/sites", Host: HostWebex, - Params: []Param{ - {Name: "userEmail", In: InQuery, Flag: "user-email", Usage: "Email address for the user. This parameter is only used if the user or application calling the API has the [admin-level scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user and the API will return the list of Webex sites for that user."}, - {Name: "siteUrl", In: InQuery, Flag: "site-url", Usage: "URL of the Webex site to query. If `siteUrl` is not specified, the query will use the default site for the admin's authorization token used to make the call."}, - }, -} - -var MeetingsPreferencesUpdateDefaultSite = &Operation{ - ID: "MeetingsPreferencesUpdateDefaultSite", Area: "meetings", Group: "preferences", Command: "update-default-site", - Summary: "Update Default Site", - Description: "Updates the default site for the authenticated user.", - Method: "PUT", Path: "/meetingPreferences/sites", Host: HostWebex, - Params: []Param{ - {Name: "defaultSite", In: InQuery, Flag: "default-site", Usage: "Whether or not to change user's default site. ***Note***: `defaultSite` should be set to true for the user's single default site"}, - {Name: "userEmail", In: InQuery, Flag: "user-email", Usage: "Email address for the user. This parameter is only used if the user or application calling the API has the [admin-level scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will update default site for that user."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "siteUrl", Flag: "site-url", Type: "string"}, - }}, -} - -var MeetingsPreferencesBatchRefreshPersonalMeetingRoomId = &Operation{ - ID: "MeetingsPreferencesBatchRefreshPersonalMeetingRoomId", Area: "meetings", Group: "preferences", Command: "batch-refresh-personal-meeting-room-id", - Summary: "Batch Refresh Personal Meeting Room ID", - Description: "Refreshes personal room IDs automatically according to the current personal room ID rule of the target site or by the values specified by the admin user.\n\nThe new personal room IDs are generated by the site's settings automatically if `systemGenerated` is true; otherwise, replace the existing personal room IDs with the specified values if `systemGenerated` is false or not specified.\n\nIt may take up to 30 minutes to see the updated personal room ID on the Webex meeting page after refreshing the personal room ID due to cache.\n\nEither all items in `personalMeetingRoomIds` have `personalMeetingRoomId`, or they all have `systemGenerated` which equals true. `personalMeetingRoomId` and `systemGenerated: true` cannot be specified at the same time.\n\nThe items in `personalMeetingRoomIds` either all have `personId` or all have `email` in a single request. Partial `personId` and partial `email` is not allowed in the same request.", - Method: "POST", Path: "/admin/meetingPreferences/personalMeetingRoom/refreshId", Host: HostWebex, - Body: &Body{}, -} - -var MeetingsMeetingQaListQ = &Operation{ - ID: "MeetingsMeetingQaListQ", Area: "meetings", Group: "meeting-qa", Command: "list-q", - Summary: "List Meeting Q and A", - Description: "Lists questions and answers from a meeting, when ready.\n\nNotes:\n\n* Only [meeting instances](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) in state `ended` or `inProgress` are supported for `meetingId`.\n\n* Long result sets will be split into [pages](/docs/basics#pagination).\n\n* This API is paginated by the sum of answers in a meeting, These pagination links are returned in the response header.", - Method: "GET", Path: "/meetings/q_and_a", Host: HostWebex, - Params: []Param{ - {Name: "meetingId", In: InQuery, Flag: "meeting-id", Usage: "A unique identifier for the [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) which the Q&A belongs to."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limits the maximum number of answers in the response, up to 100."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, -} - -var MeetingsMeetingQaListAnswersQuestion = &Operation{ - ID: "MeetingsMeetingQaListAnswersQuestion", Area: "meetings", Group: "meeting-qa", Command: "list-answers-question", - Summary: "List Answers of a Question", - Description: "Lists the answers to a specific question asked in a meeting.\n\n* Only [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) in state `ended` or `inProgress` are supported for `meetingId`.\n\n* Long result sets will be split into [pages](/docs/basics#pagination).", - Method: "GET", Path: "/meetings/q_and_a/{questionId}/answers", Host: HostWebex, - Params: []Param{ - {Name: "questionId", In: InPath, Flag: "question-id", Usage: "The ID of a question."}, - {Name: "meetingId", In: InQuery, Flag: "meeting-id", Usage: "A unique identifier for the [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) which the Q&A belongs to."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the maximum number of Q&A's answers in the response, up to 100."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, -} - -var MeetingsMeetingQualitiesGet = &Operation{ - ID: "MeetingsMeetingQualitiesGet", Area: "meetings", Group: "meeting-qualities", Command: "get", - Summary: "Get Meeting Qualities", - Description: "Get quality data for a meeting, by `meetingId`. Only organization administrators can retrieve meeting quality data.", - Method: "GET", Path: "/meeting/qualities", Host: HostWebex, - Params: []Param{ - {Name: "meetingId", In: InQuery, Flag: "meeting-id", Usage: "Unique identifier for the specific meeting instance. **Note:** The `meetingId` can be obtained via the Meeting List API when meetingType=meeting. The `id` attribute in the Meeting List Response is what is needed, for example, `e5dba9613a9d455aa49f6ffdafb6e7db_I_191395283063545470`."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the maximum number of media sessions in the response."}, - {Name: "offset", In: InQuery, Flag: "offset", Usage: "Offset from the first result that you want to fetch."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "offset", Size: "max", First: 0}}, -} - -var MeetingsSessionTypesListSite = &Operation{ - ID: "MeetingsSessionTypesListSite", Area: "meetings", Group: "session-types", Command: "list-site", - Summary: "List Site Session Types", - Description: "List session types for a specific site.", - Method: "GET", Path: "/admin/meeting/config/sessionTypes", Host: HostWebex, - Params: []Param{ - {Name: "siteUrl", In: InQuery, Flag: "site-url", Usage: "URL of the Webex site to query. If siteUrl is not specified, the query will use the default site for the admin's authorization token used to make the call."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var MeetingsSessionTypesListUser = &Operation{ - ID: "MeetingsSessionTypesListUser", Area: "meetings", Group: "session-types", Command: "list-user", - Summary: "List User Session Type", - Description: "List session types for a specific user.", - Method: "GET", Path: "/admin/meeting/userconfig/sessionTypes", Host: HostWebex, - Params: []Param{ - {Name: "siteUrl", In: InQuery, Flag: "site-url", Usage: "URL of the Webex site to query."}, - {Name: "personId", In: InQuery, Flag: "person-id", Usage: "A unique identifier for the user."}, - {Name: "email", In: InHeader, Flag: "email", Usage: "e.g. `john.andersen@example.com` (string, optional) - The email of the user."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var MeetingsSessionTypesUpdateUser = &Operation{ - ID: "MeetingsSessionTypesUpdateUser", Area: "meetings", Group: "session-types", Command: "update-user", - Summary: "Update User Session Types", - Description: "Assign session types to specific users.\n\n* At least one of the following body parameters is required to update a specific user session type: `personId`, `email`.", - Method: "PUT", Path: "/admin/meeting/userconfig/sessionTypes", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "siteUrl", Flag: "site-url", Type: "string"}, - {Name: "sessionTypeIds", Flag: "session-type-ids", Type: "[]string"}, - {Name: "personId", Flag: "person-id", Type: "string"}, - {Name: "email", Flag: "email", Type: "string"}, - }}, -} - -var MeetingsTranscriptsListMeeting = &Operation{ - ID: "MeetingsTranscriptsListMeeting", Area: "meetings", Group: "transcripts", Command: "list-meeting", - Summary: "List Meeting Transcripts", - Description: "Lists available transcripts of an ended [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances).\n\nUse this operation to list transcripts of an ended [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) when they are ready. Please note that only **meeting instances** in state `ended` are supported for `meetingId`. **Meeting series**, **scheduled meetings** and `in-progress` **meeting instances** are not supported.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.", - Method: "GET", Path: "/meetingTranscripts", Host: HostWebex, - Params: []Param{ - {Name: "max", In: InQuery, Flag: "max", Usage: "Maximum number of transcripts to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`."}, - {Name: "from", In: InQuery, Flag: "from", Usage: "Starting date and time (inclusive) for transcripts to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "Ending date and time (exclusive) for List transcripts to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`."}, - {Name: "meetingId", In: InQuery, Flag: "meeting-id", Usage: "Unique identifier for the [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) to which the transcript belongs. Please note that currently the meeting ID of a scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meeting is not supported for this API. If `meetingId` is not specified, the operation returns an array of transcripts for all meetings of the current user."}, - {Name: "hostEmail", In: InQuery, Flag: "host-email", Usage: "Email address for the meeting host. This parameter is only used if the user or application calling the API has the `admin-level` scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for a meeting that is hosted by that user. If `meetingId` is not specified, it can not support `hostEmail`."}, - {Name: "siteUrl", In: InQuery, Flag: "site-url", Usage: "URL of the Webex site from which the API lists transcripts. If not specified, the API lists transcripts from user's preferred site. All available Webex sites and the preferred site of the user can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, - TimeRange: TimeISO, -} - -var MeetingsTranscriptsListMeetingComplianceOfficer = &Operation{ - ID: "MeetingsTranscriptsListMeetingComplianceOfficer", Area: "meetings", Group: "transcripts", Command: "list-meeting-compliance-officer", - Summary: "List Meeting Transcripts For Compliance Officer", - Description: "Lists available or deleted transcripts of an ended [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) for a specific site.\n\nThe returned list is sorted in descending order by the date and time that the transcript was created.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.", - Method: "GET", Path: "/admin/meetingTranscripts", Host: HostWebex, - Params: []Param{ - {Name: "from", In: InQuery, Flag: "from", Usage: "Starting date and time (inclusive) for transcripts to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "Ending date and time (exclusive) for List transcripts to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Maximum number of transcripts to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`."}, - {Name: "siteUrl", In: InQuery, Flag: "site-url", Usage: "URL of the Webex site from which the API lists transcripts."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, - TimeRange: TimeISO, -} - -var MeetingsTranscriptsDownloadMeeting = &Operation{ - ID: "MeetingsTranscriptsDownloadMeeting", Area: "meetings", Group: "transcripts", Command: "download-meeting", - Summary: "Download a Meeting Transcript", - Description: "Download a meeting transcript from the meeting transcript specified by `transcriptId`.", - Method: "GET", Path: "/meetingTranscripts/{transcriptId}/download", Host: HostWebex, - Params: []Param{ - {Name: "transcriptId", In: InPath, Flag: "transcript-id", Usage: "Unique identifier for the meeting transcript."}, - {Name: "format", In: InQuery, Flag: "format", Usage: "Format for the downloaded meeting transcript."}, - {Name: "hostEmail", In: InQuery, Flag: "host-email", Usage: "Email address for the meeting host. This parameter is only used if the user or application calling the API has the `admin-level` scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for a meeting that is hosted by that user."}, - }, -} - -var MeetingsTranscriptsListSnippetsMeeting = &Operation{ - ID: "MeetingsTranscriptsListSnippetsMeeting", Area: "meetings", Group: "transcripts", Command: "list-snippets-meeting", - Summary: "List Snippets of a Meeting Transcript", - Description: "Lists snippets of a meeting transcript specified by `transcriptId`.\n\nUse this operation to list snippets of a meeting transcript when they are ready.", - Method: "GET", Path: "/meetingTranscripts/{transcriptId}/snippets", Host: HostWebex, - Params: []Param{ - {Name: "transcriptId", In: InPath, Flag: "transcript-id", Usage: "Unique identifier for the meeting transcript to which the snippets belong."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Maximum snippet items to be returned for this query, to support pagination."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, -} - -var MeetingsTranscriptsGetSnippet = &Operation{ - ID: "MeetingsTranscriptsGetSnippet", Area: "meetings", Group: "transcripts", Command: "get-snippet", - Summary: "Get a Transcript Snippet", - Description: "Retrieves details for a transcript snippet specified by `snippetId` from the meeting transcript specified by `transcriptId`.", - Method: "GET", Path: "/meetingTranscripts/{transcriptId}/snippets/{snippetId}", Host: HostWebex, - Params: []Param{ - {Name: "transcriptId", In: InPath, Flag: "transcript-id", Usage: "Unique identifier for the meeting transcript to which the requested snippet belongs."}, - {Name: "snippetId", In: InPath, Flag: "snippet-id", Usage: "Unique identifier for the snippet being requested."}, - }, -} - -var MeetingsTranscriptsUpdateSnippet = &Operation{ - ID: "MeetingsTranscriptsUpdateSnippet", Area: "meetings", Group: "transcripts", Command: "update-snippet", - Summary: "Update a Transcript Snippet", - Description: "Updates details for a transcript snippet specified by `snippetId` from the meeting transcript specified by `transcriptId`.", - Method: "PUT", Path: "/meetingTranscripts/{transcriptId}/snippets/{snippetId}", Host: HostWebex, - Params: []Param{ - {Name: "transcriptId", In: InPath, Flag: "transcript-id", Usage: "Unique identifier for the meeting transcript to which the snippet to be updated belongs."}, - {Name: "snippetId", In: InPath, Flag: "snippet-id", Usage: "Unique identifier for the snippet being updated."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "text", Flag: "text", Type: "string"}, - {Name: "reason", Flag: "reason", Type: "string"}, - }}, -} - -var MeetingsTranscriptsDelete = &Operation{ - ID: "MeetingsTranscriptsDelete", Area: "meetings", Group: "transcripts", Command: "delete", - Summary: "Delete a Transcript", - Description: "Removes a transcript with a specified transcript ID. The deleted transcript cannot be recovered. If a Compliance Officer deletes another user's transcript, the transcript will be inaccessible to regular users (host, attendees), but will be still available to the Compliance Officer.", - Method: "DELETE", Path: "/meetingTranscripts/{transcriptId}", Host: HostWebex, - Params: []Param{ - {Name: "transcriptId", In: InPath, Flag: "transcript-id", Usage: "Unique identifier for the meeting transcript."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "reason", Flag: "reason", Type: "string"}, - {Name: "comment", Flag: "comment", Type: "string"}, - }}, -} - -var MeetingsMeetingSummaryListUsageReports = &Operation{ - ID: "MeetingsMeetingSummaryListUsageReports", Area: "meetings", Group: "meeting-summary", Command: "list-usage-reports", - Summary: "List Meeting Usage Reports", - Description: "List meeting usage reports of all the users on the specified site by an admin. You can specify a date range and the maximum number of meeting usage reports to return.\n\nThe list returned is sorted in descending order by the date and time the meetings were started.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n* `siteUrl` is required, and the meeting usage reports of the specified site are listed. All available Webex sites can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default timezone is `UTC` if not defined.", - Method: "GET", Path: "/meetingReports/usage", Host: HostWebex, - Params: []Param{ - {Name: "siteUrl", In: InQuery, Flag: "site-url", Usage: "URL of the Webex site which the API lists meeting usage reports from. All available Webex sites can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API."}, - {Name: "serviceType", In: InQuery, Flag: "service-type", Usage: "Meeting usage report's service-type. If `serviceType` is specified, the API filters meeting usage reports by service-type. If `serviceType` is not specified, the API returns meeting usage reports by `MeetingCenter` by default. Valid values:\n\n+ `MeetingCenter`\n\n+ `EventCenter`\n\n+ `SupportCenter`\n\n+ `TrainingCenter`"}, - {Name: "from", In: InQuery, Flag: "from", Usage: "Starting date and time for meeting usage reports to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`. The interval between `to` and `from` cannot exceed 30 days and `from` cannot be earlier than 90 days ago."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "Ending date and time for meeting usage reports to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`. The interval between `to` and `from` cannot exceed 30 days."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Maximum number of meetings to include in the meetings usage report in a single page. `max` must be greater than 0 and equal to or less than `1000`."}, - {Name: "timezone", In: InHeader, Flag: "timezone", Usage: "e.g. Asia/Shanghai"}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, - TimeRange: TimeISO, -} - -var MeetingsMeetingSummaryListAttendeeReports = &Operation{ - ID: "MeetingsMeetingSummaryListAttendeeReports", Area: "meetings", Group: "meeting-summary", Command: "list-attendee-reports", - Summary: "List Meeting Attendee Reports", - Description: "Lists of meeting attendee reports by a date range, the maximum number of meeting attendee reports, a meeting ID, a meeting number or a meeting title.\n\nIf the requesting user is an admin, the API returns meeting attendee reports of the meetings hosted by all the users on the specified site filtered by meeting ID, meeting number or meeting title.\n\nIf it's a normal meeting host, the API returns meeting attendee reports of the meetings hosted by the user himself on the specified site filtered by meeting ID, meeting number or meeting title.\n\nThe list returned is grouped by meeting instances. Both the groups and items of each group are sorted in descending order of `joinedTime`. For example, if `meetingId` is specified and it's a meeting series ID, the returned list is grouped by meeting instances of that series. The groups are sorted in descending order of `joinedTime`, and within each group the items are also sorted in descending order of `joinedTime`. Please refer to [Meetings Overview](/docs/meetings) for details of meeting series, scheduled meeting and meeting instance.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n* `siteUrl` is required, and the meeting attendee reports of the specified site are listed. All available Webex sites can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\n* `meetingId`, `meetingNumber` and `meetingTitle` are optional parameters to query the meeting attendee reports, but at least one of them should be specified. If more than one parameter in the sequence of `meetingId`, `meetingNumber`, and `meetingTitle` are specified, the first one in the sequence is used. Currently, only ended meeting instance IDs and meeting series IDs are supported for `meetingId`. IDs of scheduled meetings or personal room meetings are not supported.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default timezone is `UTC` if not defined.", - Method: "GET", Path: "/meetingReports/attendees", Host: HostWebex, - Params: []Param{ - {Name: "siteUrl", In: InQuery, Flag: "site-url", Usage: "URL of the Webex site which the API lists meeting attendee reports from. All available Webex sites can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API."}, - {Name: "from", In: InQuery, Flag: "from", Usage: "Starting date and time for the meeting attendee reports to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`. The interval between `to` and `from` cannot exceed 30 days and `from` cannot be earlier than 90 days ago."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "Ending date and time for the meeting attendee reports to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`. The interval between `to` and `from` cannot exceed 30 days."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Maximum number of meeting attendees to include in the meeting attendee report in a single page. `max` must be greater than 0 and equal to or less than `1000`."}, - {Name: "meetingId", In: InQuery, Flag: "meeting-id", Usage: "Meeting ID for the meeting attendee reports to return. If specified, return meeting attendee reports of the specified meeting; otherwise, return meeting attendee reports of all meetings. Currently, only ended meeting instance IDs are supported. IDs of meeting series, scheduled meetings or personal room meetings are not supported."}, - {Name: "meetingNumber", In: InQuery, Flag: "meeting-number", Usage: "Meeting number for the meeting attendee reports to return. If specified, return meeting attendee reports of the specified meeting; otherwise, return meeting attendee reports of all meetings."}, - {Name: "meetingTitle", In: InQuery, Flag: "meeting-title", Usage: "Meeting title for the meeting attendee reports to return. If specified, return meeting attendee reports of the specified meeting; otherwise, return meeting attendee reports of all meetings."}, - {Name: "timezone", In: InHeader, Flag: "timezone", Usage: "e.g. Asia/Shanghai"}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, - TimeRange: TimeISO, -} - -var MeetingsMeetingsGetAdmin = &Operation{ - ID: "MeetingsMeetingsGetAdmin", Area: "meetings", Group: "meetings", Command: "get-admin", - Summary: "Get a Meeting By an Admin", - Description: "Retrieves details for a meeting with a specified meeting ID by an admin. The following sensitive attributes are hidden from the response: `agenda`, `hostKey`, `password`, `phoneAndVideoSystemPassword`, `panelistPassword`, `phoneAndVideoSystemPanelistPassword`, `webLink`, `sipAddress`, `dialInIpAddress`, `registration` and `telephony.accessCode`.\n\n* If the `meetingId` value specified is for a meeting series and `current` is `true`, the operation returns details for the current scheduled meeting of the series, i.e. the scheduled meeting ready to join or start or the upcoming scheduled meeting of the meeting series.\n\n* If the `meetingId` value specified is for a meeting series and `current` is `false` or `current` is not specified, the operation returns details for the entire meeting series.\n\n* If the `meetingId` value specified is for a scheduled meeting from a meeting series, the operation returns details for that scheduled meeting.\n\n* If the `meetingId` value specified is for a meeting instance which is happening or has happened, the operation returns details for that meeting instance.\n\n* `trackingCodes` is not supported for ended meeting instances.\n\n* To learn more about which attributes are available for different meeting states, please refer to [Available Meeting Attributes for Different Meeting States](/docs/meetings#available-meeting-attributes-for-different-meeting-states).\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) for time stamps in response body, defined in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default value is `UTC` if not specified.", - Method: "GET", Path: "/admin/meetings/{meetingId}", Host: HostWebex, - Params: []Param{ - {Name: "meetingId", In: InPath, Flag: "meeting-id", Usage: "Unique identifier for the meeting being requested."}, - {Name: "current", In: InQuery, Flag: "current", Usage: "Whether or not to retrieve only the current scheduled meeting of the meeting series, i.e. the meeting ready to join or start or the upcoming meeting of the meeting series. If it's `true`, return details for the current scheduled meeting of the series, i.e. the scheduled meeting ready to join or start or the upcoming scheduled meeting of the meeting series. If it's `false` or not specified, return details for the entire meeting series. This parameter only applies to meeting series. The default value is `false`."}, - {Name: "timezone", In: InHeader, Flag: "timezone", Usage: "e.g. UTC"}, - }, -} - -var MeetingsMeetingsListAdmin = &Operation{ - ID: "MeetingsMeetingsListAdmin", Area: "meetings", Group: "meetings", Command: "list-admin", - Summary: "List Meetings By an Admin", - Description: "Retrieves details for meetings by an admin with a specified meeting number or web link. Please note that there are various products in the [Webex Suite](https://www.webex.com/collaboration-suite.html) such as `Meetings` and `Events`. Currently, only meetings of the `Meetings` product are supported by this API, meetings of others in the suite are not supported. Ad-hoc meetings created by [Create a Meeting](/docs/api/v1/meetings/create-a-meeting) with `adhoc` of `true` and a `roomId` will not be listed, but the ended and ongoing ad-hoc meeting instances will be listed. The following sensitive attributes are hidden from the response: `agenda`, `hostKey`, `password`, `phoneAndVideoSystemPassword`, `panelistPassword`, `phoneAndVideoSystemPanelistPassword`, `webLink`, `sipAddress`, `dialInIpAddress`, `registration` and `telephony.accessCode`.\n\n* If `meetingNumber` is specified, the operation returns an array of meeting objects specified by the `meetingNumber`. Each object in the array can be a scheduled meeting or a meeting series depending on whether the `current` parameter is `true` or `false`, and each object contains the simultaneous interpretation object. Please note that `meetingNumber` and `webLink` are mutually exclusive and they cannot be specified simultaneously.\n\n* If `webLink` is specified, the operation returns an array of meeting objects specified by the `webLink`. Each object in the array can be a scheduled meeting or a meeting series depending on whether the `current` parameter is `true` or `false`, and each object contains the simultaneous interpretation object. Please note that `meetingNumber` and `webLink` are mutually exclusive and they cannot be specified simultaneously.\n\n* The `current` parameter only applies to meeting series. If it's `false`, the `start` and `end` attributes of each returned meeting series object are for the first scheduled meeting of that series. If it's `true` or not specified, the `start` and `end` attributes are for the scheduled meeting which is ready to start or join or the upcoming scheduled meeting of that series.\n\n* To learn more about which attributes are available for different meeting states, please refer to [Available Meeting Attributes for Different Meeting States](/docs/meetings#available-meeting-attributes-for-different-meeting-states).\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) for time stamps in response body, defined in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default value is `UTC` if not specified.", - Method: "GET", Path: "/admin/meetings", Host: HostWebex, - Params: []Param{ - {Name: "meetingNumber", In: InQuery, Flag: "meeting-number", Usage: "Meeting number for the meeting objects being requested. `meetingNumber` and `webLink` are mutually exclusive. If it's an exceptional meeting from a meeting series, the exceptional meeting instead of the primary meeting series is returned."}, - {Name: "webLink", In: InQuery, Flag: "web-link", Usage: "URL encoded link to information page for the meeting objects being requested. `meetingNumber` and `webLink` are mutually exclusive."}, - {Name: "current", In: InQuery, Flag: "current", Usage: "Flag identifying to retrieve the current scheduled meeting of the meeting series or the entire meeting series. This parameter only applies to scenarios where `meetingNumber` is specified and the meeting is not an exceptional meeting from a meeting series. If it's `true`, return the scheduled meeting of the meeting series which is ready to join or start or the upcoming scheduled meeting of the meeting series; if it's `false`, return the entire meeting series. The default value is `true`."}, - {Name: "timezone", In: InHeader, Flag: "timezone", Usage: "e.g. UTC"}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var MeetingsMeetingsCreate = &Operation{ - ID: "MeetingsMeetingsCreate", Area: "meetings", Group: "meetings", Command: "create", - Summary: "Create a Meeting", - Description: "Creates a new meeting. Regular users can schedule up to 100 meetings in 24 hours and admin users up to 3000 overall or 800 for a single user. Please note that the failed requests are also counted toward the limits.\n\n* The `spark:all` scope is required when `roomId` is specified.\n\n* If the parameter `adhoc` is `true` and `roomId` is specified, an ad-hoc meeting is created for the target room. An ad-hoc meeting is a non-recurring instant meeting for the target room which is supposed to be started immediately after being created for a quick collaboration. There's only one ad-hoc meeting for a room at the same time. So, if there's already an ongoing ad-hoc meeting for the room, the API returns this ongoing meeting instead of creating a new one. If it's a [direct](/docs/api/v1/rooms/get-room-details) room, both members of the room can create an ad-hoc meeting for the room. If it's a [group](/docs/api/v1/rooms/get-room-details) room, only room members that are in the same [organization](/docs/api/v1/organizations/get-organization-details) as the room can create an ad-hoc meeting for the room. Please note that an ad-hoc meeting is for the purpose of an instant collaboration with people in a room, user should not persist the `id` and `meetingNumber` of the ad-hoc meeting when it's been created since this meeting may become an inactive ad-hoc meeting for the room if it's not been started after being created for a while or it has been started and ended. Each time a user needs an ad-hoc meeting for a room, they should create one instead of reusing the previous persisted one. Moreover, for the same reason, no email will be sent when an ad-hoc meeting is created. Ad-hoc meetings cannot be updated by [Update a Meeting](/docs/api/v1/meetings/update-a-meeting) or deleted by [Delete a Meeting](/docs/api/v1/meetings/delete-a-meeting). Ad-hoc meetings cannot be listed by [List Meetings](/docs/api/v1/meetings/list-meetings) and the scheduled meetings of an ad-hoc meeting cannot be listed by [List Meetings of a Meeting Series](/docs/api/v1/meetings/list-meetings-of-a-meeting-series), but the ended and ongoing instances of ad-hoc meetings can be listed by [List Meetings](/docs/api/v1/meetings/list-meetings) and [List Meetings of a Meeting Series](/docs/api/v1/meetings/list-meetings-of-a-meeting-series).\n\n* If the parameter `adhoc` is `true`, `roomId` is required and the others are optional or ignored.\n\n* The default value of `title` for an ad-hoc meeting is the user's name if not specified. The following parameters for an ad-hoc meeting have default values and the user's input values will be ignored: `scheduledType` is always `meeting`; `start` and `end` are 5 minutes after the current time and 20 minutes after the current time respectively; `timezone` is `UTC`; `allowAnyUserToBeCoHost`, `allowAuthenticatedDevices`, `enabledJoinBeforeHost`, `enableConnectAudioBeforeHost` are always `true`; `allowFirstUserToBeCoHost`, `enableAutomaticLock`, `publicMeeting`, `sendEmail` are always `false`; `invitees` is the room members except \"me\"; `joinBeforeHostMinutes` is 5; `automaticLockMinutes` is null; `unlockedMeetingJoinSecurity` is `allowJoinWithLobby`. An ad-hoc meeting can be started immediately even if the `start` is 5 minutes after the current time.\n\n* The following parameters are not supported and will be ignored for an ad-hoc meeting: `templateId`, `recurrence`, `excludePassword`, `reminderTime`, `registration`, `integrationTags`, `enabledWebcastView`, and `panelistPassword`.\n\n* If the value of the parameter `recurrence` is null, a non-recurring meeting is created.\n\n* If the parameter `recurrence` has a value, a recurring meeting is created based on the rule defined by the value of `recurrence`. For a non-recurring meeting which has no `recurrence` value set, its `meetingType` is also `meetingSeries` which is a meeting series with only one occurrence in Webex meeting modeling. If you specify a `recurrence` like `FREQ=DAILY;INTERVAL=1` which never ends, the furthest date of the series is unlimited. You can also specify a `recurrence` with a very distant ending date in the future, e.g. `FREQ=DAILY;INTERVAL=1;UNTIL=21241001T000000Z`, but the actual furthest date accepted for the recurring meeting is five years from now. Specifically, if it has an ending date, there can be up to 5 occurrences for a yearly meeting, 60 occurrences for a monthly meeting, 261 occurrences for a weekly meeting, or 1826 occurrences for a daily meeting.\n\n* If the parameter `templateId` has a value, the meeting is created based on the meeting template specified by `templateId`. The list of meeting templates that is available for the authenticated user can be retrieved from [List Meeting Templates](/docs/api/v1/meetings/list-meeting-templates).\n\n* If the parameter `siteUrl` has a value, the meeting is created on the specified site. Otherwise, the meeting is created on the user's preferred site. All available Webex sites and preferred site of the user can be retrieved by `Get Site List` API.\n\n* If the parameter `scheduledType` equals \"personalRoomMeeting\", the meeting is created in the user's [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings).\n\n* If the parameter `roomId` has a value, the meeting is created for the Webex space specified by `roomId`. If `roomId` is specified but the user calling the API is not a member of the Webex space specified by `roomId`, the API will fail even if the user has the admin-level scopes or he is calling the API on behalf of another user which is specified by `hostEmail` and is a member of the Webex space.\n\n* If the parameter `enabledAudioWatermark` is `true`, `scheduledType` equals or defaults to `meeting`, and `audioConnectionOptions.audioConnectionType` equals `VoIP`, the audio for this meeting will have a watermark. In this case, a unique identifier is embedded into the audio that plays out of each Webex app and device. An administrator can use this watermark when analyzing an unauthorized recording to identify which Webex app or device was the source of the recording.\n\n* If the parameter `enabledVisualWatermark` is `true`, the video for this meeting will have a watermark. In this case, Webex superimposes a watermark image pattern on top of the meeting video and shared content to deter participants from leaking meeting information. Each participant viewing the meeting sees a watermark image pattern with their email address. If the participant is not signed in, the watermark image pattern includes their display name and email address.\n\n* The default value of `visualWatermarkOpacity` is 10 if not specified. The value must be between 5 and 80, inclusive. A smaller value means less distraction for meeting participants, while a larger value shows a clearer watermark. It's supported when `enabledVisualWatermark` is `true`.\n\n* When `enabledLiveStream` is `true`, `liveStream` must be specified. With these setting, the RTMP streaming specified by `liveStream.rtmpUrl` can be started and viewed during the meeting without any ad-hoc settings.\n\n* The `registration` can be specified when creating a meeting, but it can't be updated by [Update a Meeting](/docs/api/v1/meetings/update-a-meeting) or [Patch a Meeting](/docs/api/v1/meetings/patch-a-meeting). Create a registration form for a meeting that doesn't have one or update the registration form for a meeting that already has one by using [Update Meeting Registration Form](/docs/api/v1/meetings/update-meeting-registration-form). Delete the registration form for a meeting by using [Delete Meeting Registration Form](/docs/api/v1/meetings/delete-meeting-registration-form).\n\n* You can't create a meeting that starts 10 years or more in the future.\n\n* If all meeting invitees of a meeting should not receive emails, the host can create a meeting with invitees, and the parameter `sendEmail` is set to `false`. If only some meeting invitees should not receive emails and others can, the host should not invite these invitees along with creating a meeting request. Instead, the host should add the invitees by [Create a Meeting Invitee](/docs/api/v1/meeting-invitees/create-a-meeting-invitee) or [Create Meeting Invitees](/docs/api/v1/meeting-invitees/create-meeting-invitees) with the parameter `sendEmail` is set to `false` after the meeting has been created.", - Method: "POST", Path: "/meetings", Host: HostWebex, - Body: &Body{}, -} - -var MeetingsMeetingsList = &Operation{ - ID: "MeetingsMeetingsList", Area: "meetings", Group: "meetings", Command: "list", - Summary: "List Meetings", - Description: "
The previous `List Meetings of a Meeting Series` API is merged into the [List Meetings](/docs/api/v1/meetings/list-meetings) API.
\n\nRetrieves details for meetings with a specified meeting number, web link, meeting type, etc. Please note that there are various products in the [Webex Suite](https://www.webex.com/collaboration-suite.html) such as `Meetings` and `Events`. Currently, only meetings of the `Meetings` product are supported by this API, meetings of others in the suite are not supported. Ad-hoc meetings created by [Create a Meeting](/docs/api/v1/meetings/create-a-meeting) with `adhoc` of `true` and a `roomId` will not be listed, but the ended and ongoing ad-hoc meeting instances will be listed.\n\nLists scheduled meeting and meeting instances of a meeting series identified by `meetingSeriesId`. Scheduled meetings of an ad-hoc meeting created by [Create a Meeting](/docs/api/v1/meetings/create-a-meeting) with `adhoc` of `true` and a `roomId` are not listed, but the ended and ongoing meeting instances of it are. Each _scheduled meeting_ or _meeting_ instance of a _meeting series_ has its own `start`, `end`, etc. Thus, for example, when a daily meeting has been scheduled from `2019-04-01` to `2019-04-10`, there are 10 scheduled meeting instances in this series, one instance for each day, and each one has its own attributes. When a scheduled meeting has been started and ended or is happening, there are even more ended or in-progress meeting instances.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n* The default value of `meetingSeries` will be used if `meetingType` is not specified. When listing meetings with `meetingType=meetingSeries` implicitly or explicitly, the API returns all the recurring meeting series where the user is the meeting host or an invitee to the meeting. Please note that a meeting with no `recurrence` attribute is considered a meeting series with only one occurrence and it can also be listed with `meetingType=meetingSeries`. A recurring meeting series may have multiple occurrences which are scattered over weeks, months, or years. So, any meeting series that overlaps with the time range specified by `from` and `to` will be listed. For example, a monthly meeting series with `start=2024-01-01T10:00:00Z`, `end=2024-01-01T11:00:00Z` and `recurrence=FREQ=MONTHLY;INTERVAL=1;BYMONTHDAY=1;UNTIL=20250210T000000Z` can be listed with `meetingType=meetingSeries&from=2024-10-01&to=2024-11-01` even if the `start` and `end` are not in the specified time range.\n\n* If `meetingType` is specified and equals `meeting`, it lists ongoing and ended instances of the meeting series. The default value of `from` and `to` is: `from` equals the current date and time minus 7 days, and `to` equals the current date and time.\n\n* If `meetingSeriesId` is specified, `meetingNumber`, `webLink`, `roomId`, `current`, `integrationTag`, `scheduledType`, `siteUrl` will be ignored.\n\n* If `meetingNumber` is specified, the operation returns an array of meeting objects specified by the `meetingNumber`. Each object in the array can be a scheduled meeting or a meeting series depending on whether the `current` parameter is `true` or `false`, and each object contains the simultaneous interpretation object. When `meetingNumber` is specified, parameters of `from`, `to`, `meetingType`, `state`, `isModified` and `siteUrl` will be ignored. Please note that `meetingNumber`, `webLink` and `roomId` are mutually exclusive and they cannot be specified simultaneously.\n\n* If `webLink` is specified, the operation returns an array of meeting objects specified by the `webLink`. Each object in the array can be a scheduled meeting or a meeting series depending on whether the `current` parameter is `true` or `false`, and each object contains the simultaneous interpretation object. When `webLink` is specified, parameters of `from`, `to`, `meetingType`, `state`, `isModified` and `siteUrl` will be ignored. Please note that `meetingNumber`, `webLink` and `roomId` are mutually exclusive and they cannot be specified simultaneously.\n\n* If `roomId` is specified, the operation returns an array of meeting objects of the Webex space specified by the `roomId`. When `roomId` is specified, parameters of `current`, `meetingType`, `state` and `isModified` will be ignored. The meeting objects are queried on the user's preferred site if no `siteUrl` is specified; otherwise, queried on the specified site. `meetingNumber`, `webLink` and `roomId` are mutually exclusive and they cannot be specified simultaneously.\n\n* If `state` parameter is specified, the returned array only has items in the specified state. If `state` is not specified, return items of all states.\n\n* If `meetingType` equals \"meetingSeries\", the `scheduledType` parameter can be \"meeting\", \"webinar\" or null. If `scheduledType` is specified, the returned array only has items of the specified scheduled type; otherwise, it has items of \"meeting\" and \"webinar\".\n\n* If `meetingType` equals \"scheduledMeeting\", the `scheduledType` parameter can be \"meeting\", \"webinar\", \"personalRoomMeeting\" or null. If `scheduledType` is specified, the returned array only has items of the specified scheduled type; otherwise, it has items of all scheduled types.\n\n* If `meetingType` equals \"meeting\", the `scheduledType` parameter can be \"meeting\", \"webinar\" or null. If `scheduledType` is specified, the returned array only has items of the specified scheduled type; otherwise, it has items of \"meeting\" and \"webinar\". Please note that ended or in-progress meeting instances of [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) also fall into the category of \"meeting\" `scheduledType`.\n\n* If `meetingType` equals \"meeting\", a maximum of 10000 meeting instances can be listed even if pagination is enabled.\n\n* If `isModified` parameter is specified, the returned array only has items which have been modified to exceptional meetings. This parameter only applies to scheduled meeting.\n\n* If any of the `hasChat`, `hasRecording`, `hasTranscription`, `hasSummary`, `hasClosedCaption`, `hasPolls `, `hasQA` and `hasSlido` parameters is specified, the `meetingType` must be \"meeting\" and `state` must be \"ended\". These parameters are null by default.\n\n* The `current` parameter only applies to meeting series. If it's `false`, the `start` and `end` attributes of each returned meeting series object are for the first scheduled meeting of that series. If it's `true` or not specified, the `start` and `end` attributes are for the scheduled meeting which is ready to start or join or the upcoming scheduled meeting of that series.\n\n* If `from` and `to` are specified, the operation returns an array of meeting objects in that specified time range.\n\n* If the parameter `siteUrl` has a value, the operation lists meetings on the specified site; otherwise, lists meetings on the user's all sites. All available Webex sites of the user can be retrieved by `Get Site List` API.\n\n* `trackingCodes` is not supported for ended meeting instances.\n\n* A full admin or a content admin can list all the ended and ongoing meeting instances of the organization he manages with the `meeting:admin_schedule_read` scope and `meetingType=meeting` parameter.\n\n* To learn more about which attributes are available for different meeting states, please refer to [Available Meeting Attributes for Different Meeting States](/docs/meetings#available-meeting-attributes-for-different-meeting-states).\n\n#### Request Header\n\n* `password`: Meeting password. Required when the meeting is protected by a password and the current user is not privileged to view it if they are not a host, cohost or invitee of the meeting.\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) for time stamps in response body, defined in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default value is `UTC` if not specified.", - Method: "GET", Path: "/meetings", Host: HostWebex, - Params: []Param{ - {Name: "meetingNumber", In: InQuery, Flag: "meeting-number", Usage: "Meeting number for the meeting objects being requested. `meetingNumber`, `webLink` and `roomId` are mutually exclusive. If it's an exceptional meeting from a meeting series, the exceptional meeting instead of the primary meeting series is returned."}, - {Name: "webLink", In: InQuery, Flag: "web-link", Usage: "URL encoded link to information page for the meeting objects being requested. `meetingNumber`, `webLink` and `roomId` are mutually exclusive."}, - {Name: "roomId", In: InQuery, Flag: "room-id", Usage: "Associated Webex space ID for the meeting objects being requested. `meetingNumber`, `webLink` and `roomId` are mutually exclusive."}, - {Name: "meetingSeriesId", In: InQuery, Flag: "meeting-series-id", Usage: "Unique identifier for the meeting series. The meeting ID of a scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meeting is not supported. If `meetingSeriesId` is specified, it lists all occurrences and instances of the meeting series by default; with `meetingType` of `scheduledMeeting`, it lists occurrences; with `meetingType` of `meeting`, it lists ongoing and ended instances."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the maximum number of meetings in the response, up to 100. This parameter is ignored if `meetingNumber`, `webLink` or `roomId` is specified. The default value is 10."}, - {Name: "from", In: InQuery, Flag: "from", Usage: "Start date and time (inclusive) for the range for which meetings are to be returned in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`. This parameter will be ignored if `meetingNumber`, `webLink` or `roomId` is specified.\n\nWhen `meetingType` is `meetingSeries`(either explicitly set or by default), if `to` is specified, the default value for `from` is `to` minus 7 days. If `to` is also not specified, the default value for `from` is the current date and time. When `meetingType` is `scheduledMeeting`, `from` is the same as above. When `meetingType` is `meeting`, if `to` is specified, the default value for `from` is `to` minus 7 days. If `to` is also not specified, the default value for `from` is 7 days before the current date and time."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "End date and time (exclusive) for the range for which meetings are to be returned in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`. This parameter will be ignored if `meetingNumber`, `webLink` or `roomId` is specified.\n\nWhen `meetingType` is `meetingSeries`(either explicitly set or by default), if `from` is specified, the default value for `to` is `from` plus 7 days. If `from` is also not specified, the default value for `to` is 7 days after the current date and time. When `meetingType` is `scheduledMeeting`, `to` is the same as above. When `meetingType` is `meeting`, if `from` is specified, the default value for `to` is `from` plus 7 days. If `from` is also not specified, the default value for `to` is the current date and time."}, - {Name: "meetingType", In: InQuery, Flag: "meeting-type", Usage: "Meeting type for the meeting objects being requested. This parameter will be ignored if `meetingNumber`, `webLink` or `roomId` is specified."}, - {Name: "state", In: InQuery, Flag: "state", Usage: "Meeting state for the meeting objects being requested. If not specified, return meetings of all states. This parameter will be ignored if `meetingNumber`, `webLink` or `roomId` is specified. Details of an `ended` meeting will only be available 15 minutes after the meeting has ended. `inProgress` meetings are not fully supported. The API will try to return details of an `inProgress` meeting 15 minutes after the meeting starts. However, it may take longer depending on the traffic. See the [Webex Meetings](/docs/meetings#meeting-states) guide for more information about the states of meetings."}, - {Name: "scheduledType", In: InQuery, Flag: "scheduled-type", Usage: "Scheduled type for the meeting objects being requested."}, - {Name: "isModified", In: InQuery, Flag: "is-modified", Usage: "Flag identifying whether a meeting has been modified. Only applies to scheduled meetings. If `true`, only return modified scheduled meetings; if `false`, only return unmodified scheduled meetings; if not specified, all scheduled meetings will be returned."}, - {Name: "hasChat", In: InQuery, Flag: "has-chat", Usage: "Flag identifying whether a meeting has a chat log. Only applies to ended meeting instances. If `true`, only return meeting instances which have chats; if `false`, only return meeting instances which have no chats; if not specified, all meeting instances will be returned."}, - {Name: "hasRecording", In: InQuery, Flag: "has-recording", Usage: "Flag identifying meetings which have been recorded. Only applies to ended meeting instances. If true, only return meeting instances which have been recorded; if false, only return meeting instances which have not been recorded; if not specified, all meeting instances will be returned."}, - {Name: "hasTranscription", In: InQuery, Flag: "has-transcription", Usage: "Flag identifying meetings with transcripts. Only applies to ended meeting instances. If `true`, only return meeting instances which have transcripts; if `false`, only return meeting instances which have no transcripts; if not specified, all meeting instances will be returned."}, - {Name: "hasSummary", In: InQuery, Flag: "has-summary", Usage: "Flag identifying meetings with summaries. Only applies to ended meeting instances. If `true`, only return meeting instances which have summaries; if `false`, only return meeting instances which have no summaries; if not specified, all meeting instances will be returned."}, - {Name: "hasClosedCaption", In: InQuery, Flag: "has-closed-caption", Usage: "Flag identifying meetings with closed captions. Only applies to ended meeting instances. If `true`, only return meeting instances which have closed captions; if `false`, only return meeting instances which have no closed captions; if not specified, all meeting instances will be returned."}, - {Name: "hasPolls", In: InQuery, Flag: "has-polls", Usage: "Flag identifying meetings with polls. Only applies to ended meeting instances. If `true`, only return meeting instances which have polls; if `false`, only return meeting instances which have no polls; if not specified, all meeting instances will be returned."}, - {Name: "hasQA", In: InQuery, Flag: "has-qa", Usage: "Flag identifying meetings with Q&A. Only applies to ended meeting instances. If `true`, only return meeting instances which have Q&A; if `false`, only return meeting instances which have no Q&A; if not specified, all meeting instances will be returned."}, - {Name: "hasSlido", In: InQuery, Flag: "has-slido", Usage: "Flag identifying meetings with Slido interactions. Only applies to ended meeting instances. If `true`, only return meeting instances which have Slido interactions like Q&A or polling; if `false`, only return meeting instances which have no Slido interactions; if not specified, all meeting instances will be returned."}, - {Name: "current", In: InQuery, Flag: "current", Usage: "Flag identifying to retrieve the current scheduled meeting of the meeting series or the entire meeting series. This parameter only applies to scenarios where the meeting is not an exceptional meeting from a meeting series. If it's `true`, return the scheduled meeting of the meeting series which is ready to join or start or the upcoming scheduled meeting of the meeting series; if it's `false`, return the entire meeting series."}, - {Name: "hostEmail", In: InQuery, Flag: "host-email", Usage: "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API returns meetings as if the user calling the API were the user of `hostEmail` themself, and the meetings returned by the API include the meetings where the user of `hostEmail` is the meeting host and those where they are an invitee."}, - {Name: "siteUrl", In: InQuery, Flag: "site-url", Usage: "URL of the Webex site which the API lists meetings from. If not specified, the API lists meetings from user's all sites. All available Webex sites of the user can be retrieved by `Get Site List` API."}, - {Name: "integrationTag", In: InQuery, Flag: "integration-tag", Usage: "External key created by an integration application. This parameter is used by the integration application to query meetings by a key in its own domain such as a Zendesk ticket ID, a Jira ID, a Salesforce Opportunity ID, etc. An integrationTag created by one client cannot be accessed or used as a filtering parameter by another client. For example, if a meeting has an `integrationTag` of \"Sales\" which is created by the client behind the developer portal, then this integrationTag can't be accessed on the meeting or its recordings by another client. Neither can it be used to filter meetings or recordings by a client other than the one that created the integrationTag of \"Sales\"."}, - {Name: "password", In: InHeader, Flag: "password", Usage: "e.g. BgJep@4323"}, - {Name: "timezone", In: InHeader, Flag: "timezone", Usage: "e.g. UTC"}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, - TimeRange: TimeISO, -} - -var MeetingsMeetingsGet = &Operation{ - ID: "MeetingsMeetingsGet", Area: "meetings", Group: "meetings", Command: "get", - Summary: "Get a Meeting", - Description: "Retrieves details for a meeting with a specified meeting ID.\n\n* If the `meetingId` value specified is for a meeting series and `current` is `true`, the operation returns details for the current scheduled meeting of the series, i.e. the scheduled meeting ready to join or start or the upcoming scheduled meeting of the meeting series.\n\n* If the `meetingId` value specified is for a meeting series and `current` is `false` or `current` is not specified, the operation returns details for the entire meeting series.\n\n* If the `meetingId` value specified is for a scheduled meeting from a meeting series, the operation returns details for that scheduled meeting.\n\n* If the `meetingId` value specified is for a meeting instance which is happening or has happened, the operation returns details for that meeting instance.\n\n* `trackingCodes` is not supported for ended meeting instances.\n\n* To learn more about which attributes are available for different meeting states, please refer to [Available Meeting Attributes for Different Meeting States](/docs/meetings#available-meeting-attributes-for-different-meeting-states).\n\n#### Request Header\n\n* `password`: Meeting password. Required when the meeting is protected by a password and the current user is not privileged to view it if they are not a host, cohost or invitee of the meeting.\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) for time stamps in response body, defined in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default value is `UTC` if not specified.", - Method: "GET", Path: "/meetings/{meetingId}", Host: HostWebex, - Params: []Param{ - {Name: "meetingId", In: InPath, Flag: "meeting-id", Usage: "Unique identifier for the meeting being requested."}, - {Name: "current", In: InQuery, Flag: "current", Usage: "Whether or not to retrieve only the current scheduled meeting of the meeting series, i.e. the meeting ready to join or start or the upcoming meeting of the meeting series. If it's `true`, return details for the current scheduled meeting of the series, i.e. the scheduled meeting ready to join or start or the upcoming scheduled meeting of the meeting series. If it's `false` or not specified, return details for the entire meeting series. This parameter only applies to meeting series."}, - {Name: "hostEmail", In: InQuery, Flag: "host-email", Usage: "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for a meeting that is hosted by that user."}, - {Name: "password", In: InHeader, Flag: "password", Usage: "e.g. BgJep@4323"}, - {Name: "timezone", In: InHeader, Flag: "timezone", Usage: "e.g. UTC"}, - }, -} - -var MeetingsMeetingsPatch = &Operation{ - ID: "MeetingsMeetingsPatch", Area: "meetings", Group: "meetings", Command: "patch", - Summary: "Patch a Meeting", - Description: "
\nIf only guests are waiting in the lobby and the host or cohost has not started the meeting, the meeting state remains `inProgress` for 5 minutes after the last guest leaves. The meeting cannot be patched during this time. If the meeting is started by the host or cohost and then ended normally, it can be patched immediately after it ends.\n
\n\nUpdates details for a meeting with a specified meeting ID. This operation applies to meeting series and scheduled meetings. It doesn't apply to ended or in-progress meeting instances. Ad-hoc meetings created by [Create a Meeting](/docs/api/v1/meetings/create-a-meeting) with `adhoc` of `true` and a `roomId` cannot be updated.\n\n* If the `meetingId` value specified is for a scheduled meeting, the operation updates that scheduled meeting without impact on other scheduled meeting of the parent meeting series.\n\n* If the `meetingId` value specified is for a meeting series, the operation updates the entire meeting series. **Note**: If the value of `start`, `end`, or `recurrence` for the meeting series is changed, any exceptional scheduled meeting in this series is cancelled when the meeting series is updated.\n\n* The `agenda`, `recurrence`, and `trackingCodes` attributes can be specified as `null` so that these attributes become null and hidden from the response after the patch. Note that it's the keyword `null` not the string \"null\".\n\n* If the parameter `recurrence` has a value, a recurring meeting is created based on the rule defined by the value of `recurrence`. For a non-recurring meeting which has no `recurrence` value set, its `meetingType` is also `meetingSeries` which is a meeting series with only one occurrence in Webex meeting modeling. If you specify a `recurrence` like `FREQ=DAILY;INTERVAL=1` which never ends, the furthest date of the series is unlimited. You can also specify a `recurrence` with a very distant ending date in the future, e.g. `FREQ=DAILY;INTERVAL=1;UNTIL=21241001T000000Z`, but the actual furthest date accepted for the recurring meeting is five years from now. Specifically, if it has an ending date, there can be up to 5 occurrences for a yearly meeting, 60 occurrences for a monthly meeting, 261 occurrences for a weekly meeting, or 1826 occurrences for a daily meeting.\n\n* You can't update a meeting that starts 10 years or more in the future.\n\n* Updating a meeting in the API that was created via a calendar connector is not allowed. The meeting may be updated in Webex, but the calendar event may not be updated, resulting in duplicate entries. This action is therefore blocked. In case you must overwrite this behavior, please contact devsupport@webex.com.", - Method: "PATCH", Path: "/meetings/{meetingId}", Host: HostWebex, - Params: []Param{ - {Name: "meetingId", In: InPath, Flag: "meeting-id", Usage: "Unique identifier for the meeting to be updated. This parameter applies to meeting series and scheduled meetings. It doesn't apply to ended or in-progress meeting instances. Please note that currently meeting ID of a scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meeting is not supported for this API."}, - }, - Body: &Body{}, -} - -var MeetingsMeetingsUpdate = &Operation{ - ID: "MeetingsMeetingsUpdate", Area: "meetings", Group: "meetings", Command: "update", - Summary: "Update a Meeting", - Description: "
\nThe PUT method is still supported and behaves the same as before, will be deprecated in the future. Use the PATCH method instead.\n
\n\n
\nIf only guests are waiting in the lobby and the host or cohost has not started the meeting, the meeting state remains `inProgress` for 5 minutes after the last guest leaves. The meeting cannot be updated during this time. If the meeting is started by the host or cohost and then ended normally, it can be updated immediately after it ends.\n
\n\nUpdates details for a meeting with a specified meeting ID. This operation applies to meeting series and scheduled meetings. It doesn't apply to ended or in-progress meeting instances. Ad-hoc meetings created by [Create a Meeting](/docs/api/v1/meetings/create-a-meeting) with `adhoc` of `true` and a `roomId` cannot be updated.\n\n* If the `meetingId` value specified is for a scheduled meeting, the operation updates that scheduled meeting without impact on other scheduled meeting of the parent meeting series.\n\n* If the `meetingId` value specified is for a meeting series, the operation updates the entire meeting series. **Note**: If the value of `start`, `end`, or `recurrence` for the meeting series is changed, any exceptional scheduled meeting in this series is cancelled when the meeting series is updated.\n\n* If the parameter `recurrence` has a value, a recurring meeting is created based on the rule defined by the value of `recurrence`. For a non-recurring meeting which has no `recurrence` value set, its `meetingType` is also `meetingSeries` which is a meeting series with only one occurrence in Webex meeting modeling. If you specify a `recurrence` like `FREQ=DAILY;INTERVAL=1` which never ends, the furthest date of the series is unlimited. You can also specify a `recurrence` with a very distant ending date in the future, e.g. `FREQ=DAILY;INTERVAL=1;UNTIL=21241001T000000Z`, but the actual furthest date accepted for the recurring meeting is five years from now. Specifically, if it has an ending date, there can be up to 5 occurrences for a yearly meeting, 60 occurrences for a monthly meeting, 261 occurrences for a weekly meeting, or 1826 occurrences for a daily meeting.\n\n* You can't update a meeting that starts 10 years or more in the future.\n\n* Updating a meeting created using the API via a calendar connector is not supported. While the meeting may be updated in Webex, the calendar event may not be updated resulting in duplicate entries. If you need to override this behavior, contact devsupport@webex.com.", - Method: "PUT", Path: "/meetings/{meetingId}", Host: HostWebex, - Params: []Param{ - {Name: "meetingId", In: InPath, Flag: "meeting-id", Usage: "Unique identifier for the meeting to be updated. This parameter applies to meeting series and scheduled meetings. It doesn't apply to ended or in-progress meeting instances. Please note that currently meeting ID of a scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meeting is not supported for this API."}, - }, - Body: &Body{}, -} - -var MeetingsMeetingsDelete = &Operation{ - ID: "MeetingsMeetingsDelete", Area: "meetings", Group: "meetings", Command: "delete", - Summary: "Delete a Meeting", - Description: "
\nIf only guests are waiting in the lobby and the host or cohost has not started the meeting, the meeting state remains `inProgress` for 5 minutes after the last guest leaves. The meeting cannot be deleted during this time. If the meeting is started by the host or cohost and then ended normally, it can be deleted immediately after it ends.\n
\n\nDeletes a meeting with a specified meeting ID. The deleted meeting cannot be recovered. This operation applies to meeting series and scheduled meetings. It doesn't apply to ended or in-progress meeting instances. Ad-hoc meetings created by [Create a Meeting](/docs/api/v1/meetings/create-a-meeting) with `adhoc` of `true` and a `roomId` cannot be deleted.\n\n* If the `meetingId` value specified is for a scheduled meeting, the operation deletes that scheduled meeting without impact on other scheduled meeting of the parent meeting series.\n\n* If the `meetingId` value specified is for a meeting series, the operation deletes the entire meeting series.", - Method: "DELETE", Path: "/meetings/{meetingId}", Host: HostWebex, - Params: []Param{ - {Name: "meetingId", In: InPath, Flag: "meeting-id", Usage: "Unique identifier for the meeting to be deleted. This parameter applies to meeting series and scheduled meetings. It doesn't apply to ended or in-progress meeting instances."}, - {Name: "hostEmail", In: InQuery, Flag: "host-email", Usage: "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will delete a meeting that is hosted by that user."}, - {Name: "sendEmail", In: InQuery, Flag: "send-email", Usage: "Whether or not to send emails to host and invitees. It is an optional field and default value is true."}, - }, -} - -var MeetingsMeetingsJoin = &Operation{ - ID: "MeetingsMeetingsJoin", Area: "meetings", Group: "meetings", Command: "join", - Summary: "Join a Meeting", - Description: "Retrieves links for a meeting with a specified `meetingId`, `meetingNumber`, or `webLink` that allow users to start or join the meeting directly without logging in and entering a password.\n\n* Please note that `meetingId`, `meetingNumber` and `webLink` are mutually exclusive and they cannot be specified simultaneously.\n\n* If `joinDirectly` is true or not specified, the response will have HTTP response code 302 and the request will be redirected to `joinLink`; otherwise, the response will have HTTP response code 200 and `joinLink` will be returned in response body.\n\n* Only the meeting host or cohost can generate the `startLink`.\n\n* An admin user or a [Service App](/docs/service-apps) can generate the `startLink` and `joinLink` on behalf of another meeting host using the `hostEmail` parameter. When a [Service App](/docs/service-apps) generates the `startLink` and `joinLink`, the `hostEmail` parameter is required. The `hostEmail` parameter only applies to meetings, not webinars.\n\n* For Service Apps, `hostEmail` must be provided in the request.\n\n* Generating a join link or a start link before the time specified by `joinBeforeHostMinutes` for a webinar is not supported.\n\n* The `joinLink` and `startLink` generated by the API only work in a web browser, not in mobile apps. When the `joinLink` or `startLink` is used in a mobile app, the user can't join or start the meeting directly by the dial-in or dial-out phone numbers displayed in the app.\n\n* When `createJoinLinkAsWebLink` or `createStartLinkAsWebLink` is set to true, a user cannot join or start the meeting using the `joinLink` or `startLink` returned in the response, and must complete the login flow. Those options are typically useful if mandatory user login is configured in Control Hub.\n\n* Appending the parameter `&launchApp=true` to the weblink will launch directly into the browser experience without showing the user the download selection for the native client.\n\n* [Embedded Apps](/docs/embedded-apps) are not supported in a meeting which is started from the `startLink` generated by this API.\n\n
When the `email` or `displayName` is omitted from the API request, the backend inserts the data from the user making the request. That may lead to situations where an attendee is shown in the roster with the hostname which should be avoided. In the future, we will make those two fields required.
", - Method: "POST", Path: "/meetings/join", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "meetingId", Flag: "meeting-id", Type: "string"}, - {Name: "meetingNumber", Flag: "meeting-number", Type: "string"}, - {Name: "webLink", Flag: "web-link", Type: "string"}, - {Name: "joinDirectly", Flag: "join-directly", Type: "bool"}, - {Name: "email", Flag: "email", Type: "string"}, - {Name: "displayName", Flag: "display-name", Type: "string"}, - {Name: "password", Flag: "password", Type: "string"}, - {Name: "expirationMinutes", Flag: "expiration-minutes", Type: "int64"}, - {Name: "registrationId", Flag: "registration-id", Type: "string"}, - {Name: "hostEmail", Flag: "host-email", Type: "string"}, - {Name: "createJoinLinkAsWebLink", Flag: "create-join-link-as-web-link", Type: "bool"}, - {Name: "createStartLinkAsWebLink", Flag: "create-start-link-as-web-link", Type: "bool"}, - }}, -} - -var MeetingsMeetingsListTemplates = &Operation{ - ID: "MeetingsMeetingsListTemplates", Area: "meetings", Group: "meetings", Command: "list-templates", - Summary: "List Meeting Templates", - Description: "Retrieves the list of meeting templates that is available for the authenticated user.\n\nThere are separate lists of meeting templates for different `templateType`, `locale` and `siteUrl`.\n\n* If `templateType` is specified, the operation returns an array of meeting template objects specified by the `templateType`; otherwise, returns an array of meeting template objects of all template types.\n\n* If `locale` is specified, the operation returns an array of meeting template objects specified by the `locale`; otherwise, returns an array of meeting template objects of the default `en_US` locale. Refer to [Meeting Template Locales](/docs/meetings#meeting-template-locales) for all the locales supported by Webex.\n\n* If the parameter `siteUrl` has a value, the operation lists meeting templates on the specified site; otherwise, lists meeting templates on the user's preferred site. All available Webex sites and preferred site of the user can be retrieved by `Get Site List` API.", - Method: "GET", Path: "/meetings/templates", Host: HostWebex, - Params: []Param{ - {Name: "templateType", In: InQuery, Flag: "template-type", Usage: "Meeting template type for the meeting template objects being requested. If not specified, return meeting templates of all types."}, - {Name: "locale", In: InQuery, Flag: "locale", Usage: "Locale for the meeting template objects being requested. If not specified, return meeting templates of the default `en_US` locale. Refer to [Meeting Template Locales](/docs/meetings#meeting-template-locales) for all the locales supported by Webex."}, - {Name: "isDefault", In: InQuery, Flag: "is-default", Usage: "The value is `true` or `false`. If it's `true`, return the default meeting templates; if it's `false`, return the non-default meeting templates. If it's not specified, return both default and non-default meeting templates."}, - {Name: "isStandard", In: InQuery, Flag: "is-standard", Usage: "The value is `true` or `false`. If it's `true`, return the standard meeting templates; if it's `false`, return the non-standard meeting templates. If it's not specified, return both standard and non-standard meeting templates."}, - {Name: "hostEmail", In: InQuery, Flag: "host-email", Usage: "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will return meeting templates that are available for that user."}, - {Name: "siteUrl", In: InQuery, Flag: "site-url", Usage: "URL of the Webex site which the API lists meeting templates from. If not specified, the API lists meeting templates from user's preferred site. All available Webex sites and preferred site of the user can be retrieved by `Get Site List` API."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var MeetingsMeetingsGetTemplate = &Operation{ - ID: "MeetingsMeetingsGetTemplate", Area: "meetings", Group: "meetings", Command: "get-template", - Summary: "Get a Meeting Template", - Description: "Retrieves details for a meeting template with a specified meeting template ID.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) for time stamps in response body, defined in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default value is `UTC` if not specified.", - Method: "GET", Path: "/meetings/templates/{templateId}", Host: HostWebex, - Params: []Param{ - {Name: "templateId", In: InPath, Flag: "template-id", Usage: "Unique identifier for the meeting template being requested."}, - {Name: "hostEmail", In: InQuery, Flag: "host-email", Usage: "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will return the meeting template that is available for that user."}, - {Name: "timezone", In: InHeader, Flag: "timezone", Usage: "e.g. UTC"}, - }, -} - -var MeetingsMeetingsGetControlStatus = &Operation{ - ID: "MeetingsMeetingsGetControlStatus", Area: "meetings", Group: "meetings", Command: "get-control-status", - Summary: "Get Meeting Control Status", - Description: "Get the meeting control of a live meeting, which is consisted of meeting control status on \"locked\" and \"recording\" to reflect whether the meeting is currently locked and there is recording in progress.", - Method: "GET", Path: "/meetings/controls", Host: HostWebex, - Params: []Param{ - {Name: "meetingId", In: InQuery, Flag: "meeting-id", Usage: "Unique identifier for the meeting. Does not support meeting IDs for a scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meeting."}, - }, -} - -var MeetingsMeetingsUpdateControlStatus = &Operation{ - ID: "MeetingsMeetingsUpdateControlStatus", Area: "meetings", Group: "meetings", Command: "update-control-status", - Summary: "Update Meeting Control Status", - Description: "To start, pause, resume, or stop a meeting recording; To lock or unlock an on-going meeting.", - Method: "PUT", Path: "/meetings/controls", Host: HostWebex, - Params: []Param{ - {Name: "meetingId", In: InQuery, Flag: "meeting-id", Usage: "Unique identifier for the meeting. Does not support meeting IDs for a scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meeting."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "recordingStarted", Flag: "recording-started", Type: "bool"}, - {Name: "recordingPaused", Flag: "recording-paused", Type: "bool"}, - {Name: "locked", Flag: "locked", Type: "bool"}, - }}, -} - -var MeetingsMeetingsListSessionTypes = &Operation{ - ID: "MeetingsMeetingsListSessionTypes", Area: "meetings", Group: "meetings", Command: "list-session-types", - Summary: "List Meeting Session Types", - Description: "List all the meeting session types enabled for a given user.", - Method: "GET", Path: "/meetings/sessionTypes", Host: HostWebex, - Params: []Param{ - {Name: "hostEmail", In: InQuery, Flag: "host-email", Usage: "Email address for the user. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will list all the meeting session types enabled for the user."}, - {Name: "siteUrl", In: InQuery, Flag: "site-url", Usage: "Webex site URL to query. If `siteUrl` is not specified, the users' preferred site will be used. If the authorization token has the admin-level scopes, the admin can set the Webex site URL on behalf of the user specified in the `hostEmail` parameter."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var MeetingsMeetingsGetSessionType = &Operation{ - ID: "MeetingsMeetingsGetSessionType", Area: "meetings", Group: "meetings", Command: "get-session-type", - Summary: "Get a Meeting Session Type", - Description: "Retrieves details for a meeting session type with a specified session type ID.", - Method: "GET", Path: "/meetings/sessionTypes/{sessionTypeId}", Host: HostWebex, - Params: []Param{ - {Name: "sessionTypeId", In: InPath, Flag: "session-type-id", Usage: "A unique identifier for the sessionType."}, - {Name: "hostEmail", In: InQuery, Flag: "host-email", Usage: "Email address for the user. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will get a meeting session type with the specified session type ID enabled for the user."}, - {Name: "siteUrl", In: InQuery, Flag: "site-url", Usage: "Webex site URL to query. If `siteUrl` is not specified, the users' preferred site will be used. If the authorization token has the admin-level scopes, the admin can set the Webex site URL on behalf of the user specified in the `hostEmail` parameter."}, - }, -} - -var MeetingsMeetingsGetRegistrationForm = &Operation{ - ID: "MeetingsMeetingsGetRegistrationForm", Area: "meetings", Group: "meetings", Command: "get-registration-form", - Summary: "Get registration form for a meeting", - Description: "Get a meeting's registration form to understand which fields are required.", - Method: "GET", Path: "/meetings/{meetingId}/registration", Host: HostWebex, - Params: []Param{ - {Name: "meetingId", In: InPath, Flag: "meeting-id", Usage: "Unique identifier for the meeting. Only the ID of the meeting series is supported for meetingId. IDs of scheduled meetings, meeting instances, or scheduled personal room meetings are not supported. See the [Meetings Overview](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) for more information about meeting types."}, - {Name: "current", In: InQuery, Flag: "current", Usage: "Whether or not to retrieve only the current scheduled meeting of the meeting series, i.e. the meeting ready to join or start or the upcoming meeting of the meeting series. If it's `true`, return details for the current scheduled meeting of the series, i.e. the scheduled meeting ready to join or start or the upcoming scheduled meeting of the meeting series. If it's `false` or not specified, return details for the entire meeting series. This parameter only applies to meeting series."}, - {Name: "hostEmail", In: InQuery, Flag: "host-email", Usage: "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for a meeting that is hosted by that user."}, - }, -} - -var MeetingsMeetingsUpdateRegistrationForm = &Operation{ - ID: "MeetingsMeetingsUpdateRegistrationForm", Area: "meetings", Group: "meetings", Command: "update-registration-form", - Summary: "Update Meeting Registration Form", - Description: "Enable or update a registration form for a meeting.", - Method: "PUT", Path: "/meetings/{meetingId}/registration", Host: HostWebex, - Params: []Param{ - {Name: "meetingId", In: InPath, Flag: "meeting-id", Usage: "Unique identifier for the meeting. Only the ID of the meeting series is supported for meetingId. IDs of scheduled meetings, meeting instances, or scheduled personal room meetings are not supported. See the [Meetings Overview](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) for more information about meeting types."}, - }, - Body: &Body{}, -} - -var MeetingsMeetingsDeleteRegistrationForm = &Operation{ - ID: "MeetingsMeetingsDeleteRegistrationForm", Area: "meetings", Group: "meetings", Command: "delete-registration-form", - Summary: "Delete Meeting Registration Form", - Description: "Disable the registration form for a meeting.", - Method: "DELETE", Path: "/meetings/{meetingId}/registration", Host: HostWebex, - Params: []Param{ - {Name: "meetingId", In: InPath, Flag: "meeting-id", Usage: "Unique identifier for the meeting. Only the ID of the meeting series is supported for meetingId. IDs of scheduled meetings, meeting instances, or scheduled personal room meetings are not supported. See the [Meetings Overview](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) for more information about meeting types."}, - {Name: "hostEmail", In: InHeader, Flag: "host-email", Usage: "e.g. `brenda.song@example.com` (string, optional) - Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin on-behalf-of scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for an interpreter of the meeting that is hosted by that user."}, - }, -} - -var MeetingsMeetingsRegisterRegistrant = &Operation{ - ID: "MeetingsMeetingsRegisterRegistrant", Area: "meetings", Group: "meetings", Command: "register-registrant", - Summary: "Register a Meeting Registrant", - Description: "Register a new registrant for a meeting. When a meeting or webinar is created, this API can only be used if Registration is checked on the page or the registration attribute is specified through the [Create a Meeting](/docs/api/v1/meetings/create-a-meeting) API.", - Method: "POST", Path: "/meetings/{meetingId}/registrants", Host: HostWebex, - Params: []Param{ - {Name: "meetingId", In: InPath, Flag: "meeting-id", Usage: "Unique identifier for the meeting. Only the ID of the meeting series is supported for meetingId. IDs of scheduled meetings, meeting instances, or scheduled personal room meetings are not supported. See the [Meetings Overview](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) for more information about meeting types."}, - {Name: "current", In: InQuery, Flag: "current", Usage: "Whether or not to retrieve only the current scheduled meeting of the meeting series, i.e. the meeting ready to join or start or the upcoming meeting of the meeting series. If it's `true`, return details for the current scheduled meeting of the series, i.e. the scheduled meeting ready to join or start or the upcoming scheduled meeting of the meeting series. If it's `false` or not specified, return details for the entire meeting series. This parameter only applies to meeting series."}, - {Name: "hostEmail", In: InQuery, Flag: "host-email", Usage: "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for a meeting that is hosted by that user."}, - }, - Body: &Body{}, -} - -var MeetingsMeetingsListRegistrants = &Operation{ - ID: "MeetingsMeetingsListRegistrants", Area: "meetings", Group: "meetings", Command: "list-registrants", - Summary: "List Meeting Registrants", - Description: "Meeting's host and cohost can retrieve the list of registrants for a meeting with a specified meeting Id.", - Method: "GET", Path: "/meetings/{meetingId}/registrants", Host: HostWebex, - Params: []Param{ - {Name: "meetingId", In: InPath, Flag: "meeting-id", Usage: "Unique identifier for the meeting. Only the ID of the meeting series is supported for meetingId. IDs of scheduled meetings, meeting instances, or scheduled personal room meetings are not supported. See the [Meetings Overview](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) for more information about meeting types."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the maximum number of registrants in the response, up to 100. The default is 10."}, - {Name: "hostEmail", In: InQuery, Flag: "host-email", Usage: "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for a meeting that is hosted by that user."}, - {Name: "current", In: InQuery, Flag: "current", Usage: "Whether or not to retrieve only the current scheduled meeting of the meeting series, i.e. the meeting ready to join or start or the upcoming meeting of the meeting series. If it's `true`, return details for the current scheduled meeting of the series, i.e. the scheduled meeting ready to join or start or the upcoming scheduled meeting of the meeting series. If it's `false` or not specified, return details for the entire meeting series. This parameter only applies to meeting series."}, - {Name: "email", In: InQuery, Flag: "email", Usage: "Registrant's email to filter registrants."}, - {Name: "registrationTimeFrom", In: InQuery, Flag: "registration-time-from", Usage: "The time registrants register a meeting starts from the specified date and time (inclusive) in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. If `registrationTimeFrom` is not specified, it equals `registrationTimeTo` minus 7 days."}, - {Name: "registrationTimeTo", In: InQuery, Flag: "registration-time-to", Usage: "The time registrants register a meeting before the specified date and time (exclusive) in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. If `registrationTimeTo` is not specified, it equals `registrationTimeFrom` plus 7 days. The interval between `registrationTimeFrom` and `registrationTimeTo` must be within 90 days."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, -} - -var MeetingsMeetingsBatchRegisterRegistrants = &Operation{ - ID: "MeetingsMeetingsBatchRegisterRegistrants", Area: "meetings", Group: "meetings", Command: "batch-register-registrants", - Summary: "Batch register Meeting Registrants", - Description: "Bulk register new registrants for a meeting. When a meeting or webinar is created, this API can only be used if Registration is checked on the page or the registration attribute is specified through the [Create a Meeting](/docs/api/v1/meetings/create-a-meeting) API.", - Method: "POST", Path: "/meetings/{meetingId}/registrants/bulkInsert", Host: HostWebex, - Params: []Param{ - {Name: "meetingId", In: InPath, Flag: "meeting-id", Usage: "Unique identifier for the meeting. Only the ID of the meeting series is supported for meetingId. IDs of scheduled meetings, meeting instances, or scheduled personal room meetings are not supported. See the [Meetings Overview](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) for more information about meeting types."}, - {Name: "current", In: InQuery, Flag: "current", Usage: "Whether or not to retrieve only the current scheduled meeting of the meeting series, i.e. the meeting ready to join or start or the upcoming meeting of the meeting series. If it's `true`, return details for the current scheduled meeting of the series, i.e. the scheduled meeting ready to join or start or the upcoming scheduled meeting of the meeting series. If it's `false` or not specified, return details for the entire meeting series. This parameter only applies to meeting series."}, - {Name: "hostEmail", In: InQuery, Flag: "host-email", Usage: "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for a meeting that is hosted by that user."}, - }, - Body: &Body{}, -} - -var MeetingsMeetingsGetDetailedInformationRegistrant = &Operation{ - ID: "MeetingsMeetingsGetDetailedInformationRegistrant", Area: "meetings", Group: "meetings", Command: "get-detailed-information-registrant", - Summary: "Get Detailed Information for a Meeting Registrant", - Description: "Retrieves details for a meeting registrant with a specified registrant Id.", - Method: "GET", Path: "/meetings/{meetingId}/registrants/{registrantId}", Host: HostWebex, - Params: []Param{ - {Name: "meetingId", In: InPath, Flag: "meeting-id", Usage: "Unique identifier for the meeting. Only the ID of the meeting series is supported for meetingId. IDs of scheduled meetings, meeting instances, or scheduled personal room meetings are not supported. See the [Meetings Overview](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) for more information about meeting types."}, - {Name: "registrantId", In: InPath, Flag: "registrant-id", Usage: "Unique identifier for the registrant"}, - {Name: "current", In: InQuery, Flag: "current", Usage: "Whether or not to retrieve only the current scheduled meeting of the meeting series, i.e. the meeting ready to join or start or the upcoming meeting of the meeting series. If it's `true`, return details for the current scheduled meeting of the series, i.e. the scheduled meeting ready to join or start or the upcoming scheduled meeting of the meeting series. If it's `false` or not specified, return details for the entire meeting series. This parameter only applies to meeting series."}, - {Name: "hostEmail", In: InQuery, Flag: "host-email", Usage: "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for a meeting that is hosted by that user."}, - }, -} - -var MeetingsMeetingsDeleteRegistrant = &Operation{ - ID: "MeetingsMeetingsDeleteRegistrant", Area: "meetings", Group: "meetings", Command: "delete-registrant", - Summary: "Delete a Meeting Registrant", - Description: "Meeting's host or cohost can delete a registrant with a specified registrant ID.", - Method: "DELETE", Path: "/meetings/{meetingId}/registrants/{registrantId}", Host: HostWebex, - Params: []Param{ - {Name: "meetingId", In: InPath, Flag: "meeting-id", Usage: "Unique identifier for the meeting. Only the ID of the meeting series is supported for meetingId. IDs of scheduled meetings, meeting instances, or scheduled personal room meetings are not supported. See the [Meetings Overview](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) for more information about meeting types."}, - {Name: "registrantId", In: InPath, Flag: "registrant-id", Usage: "Unique identifier for the registrant."}, - {Name: "current", In: InQuery, Flag: "current", Usage: "Whether or not to retrieve only the current scheduled meeting of the meeting series, i.e. the meeting ready to join or start or the upcoming meeting of the meeting series. If it's `true`, return details for the current scheduled meeting of the series, i.e. the scheduled meeting ready to join or start or the upcoming scheduled meeting of the meeting series. If it's `false` or not specified, return details for the entire meeting series. This parameter only applies to meeting series."}, - {Name: "hostEmail", In: InQuery, Flag: "host-email", Usage: "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for a meeting that is hosted by that user."}, - }, -} - -var MeetingsMeetingsQueryRegistrants = &Operation{ - ID: "MeetingsMeetingsQueryRegistrants", Area: "meetings", Group: "meetings", Command: "query-registrants", - Summary: "Query Meeting Registrants", - Description: "Meeting's host and cohost can query the list of registrants for a meeting with a specified meeting ID and registrants email.", - Method: "POST", Path: "/meetings/{meetingId}/registrants/query", Host: HostWebex, - Params: []Param{ - {Name: "meetingId", In: InPath, Flag: "meeting-id", Usage: "Unique identifier for the meeting. Only the ID of the meeting series is supported for meetingId. IDs of scheduled meetings, meeting instances, or scheduled personal room meetings are not supported. See the [Meetings Overview](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) for more information about meeting types."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the maximum number of registrants in the response, up to 100. The default is 10."}, - {Name: "current", In: InQuery, Flag: "current", Usage: "Whether or not to retrieve only the current scheduled meeting of the meeting series, i.e. the meeting ready to join or start or the upcoming meeting of the meeting series. If it's `true`, return details for the current scheduled meeting of the series, i.e. the scheduled meeting ready to join or start or the upcoming scheduled meeting of the meeting series. If it's `false` or not specified, return details for the entire meeting series. This parameter only applies to meeting series."}, - {Name: "hostEmail", In: InQuery, Flag: "host-email", Usage: "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for a meeting that is hosted by that user."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "emails", Flag: "emails", Type: "[]string"}, - {Name: "status", Flag: "status", Type: "string"}, - {Name: "orderType", Flag: "order-type", Type: "string"}, - {Name: "orderBy", Flag: "order-by", Type: "string"}, - }}, -} - -var MeetingsMeetingsBatchUpdateRegistrantsStatus = &Operation{ - ID: "MeetingsMeetingsBatchUpdateRegistrantsStatus", Area: "meetings", Group: "meetings", Command: "batch-update-registrants-status", - Summary: "Batch Update Meeting Registrants status", - Description: "Meeting's host or cohost can update the set of registrants for a meeting. `cancel` means the registrant(s) will be moved back to the registration list. `bulkDelete` means the registrant(s) will be deleted.", - Method: "POST", Path: "/meetings/{meetingId}/registrants/{statusOpType}", Host: HostWebex, - Params: []Param{ - {Name: "meetingId", In: InPath, Flag: "meeting-id", Usage: "Unique identifier for the meeting. Only the ID of the meeting series is supported for meetingId. IDs of scheduled meetings, meeting instances, or scheduled personal room meetings are not supported. See the [Meetings Overview](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) for more information about meeting types."}, - {Name: "statusOpType", In: InPath, Flag: "status-op-type", Usage: "Update registrant's status."}, - {Name: "current", In: InQuery, Flag: "current", Usage: "Whether or not to retrieve only the current scheduled meeting of the meeting series, i.e. the meeting ready to join or start or the upcoming meeting of the meeting series. If it's `true`, return details for the current scheduled meeting of the series, i.e. the scheduled meeting ready to join or start or the upcoming scheduled meeting of the meeting series. If it's `false` or not specified, return details for the entire meeting series. This parameter only applies to meeting series.\n + Default: `false`\n"}, - {Name: "hostEmail", In: InQuery, Flag: "host-email", Usage: "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for a meeting that is hosted by that user."}, - }, - Body: &Body{}, -} - -var MeetingsMeetingsUpdateSimultaneousInterpretation = &Operation{ - ID: "MeetingsMeetingsUpdateSimultaneousInterpretation", Area: "meetings", Group: "meetings", Command: "update-simultaneous-interpretation", - Summary: "Update Meeting Simultaneous interpretation", - Description: "Updates simultaneous interpretation options of a meeting with a specified meeting ID. This operation applies to meeting series and scheduled meetings. It doesn't apply to ended or in-progress meeting instances.", - Method: "PUT", Path: "/meetings/{meetingId}/simultaneousInterpretation", Host: HostWebex, - Params: []Param{ - {Name: "meetingId", In: InPath, Flag: "meeting-id", Usage: "Unique identifier for the meeting. Does not support meeting IDs for a scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meeting."}, - }, - Body: &Body{}, -} - -var MeetingsMeetingsCreateInterpreter = &Operation{ - ID: "MeetingsMeetingsCreateInterpreter", Area: "meetings", Group: "meetings", Command: "create-interpreter", - Summary: "Create a Meeting Interpreter", - Description: "Assign an interpreter to a bi-directional simultaneous interpretation language channel for a meeting.", - Method: "POST", Path: "/meetings/{meetingId}/interpreters", Host: HostWebex, - Params: []Param{ - {Name: "meetingId", In: InPath, Flag: "meeting-id", Usage: "Unique identifier for the meeting to which the interpreter is to be assigned."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "languageCode1", Flag: "language-code1", Type: "string"}, - {Name: "languageCode2", Flag: "language-code2", Type: "string"}, - {Name: "email", Flag: "email", Type: "string"}, - {Name: "displayName", Flag: "display-name", Type: "string"}, - {Name: "hostEmail", Flag: "host-email", Type: "string"}, - {Name: "sendEmail", Flag: "send-email", Type: "bool"}, - }}, -} - -var MeetingsMeetingsListInterpreters = &Operation{ - ID: "MeetingsMeetingsListInterpreters", Area: "meetings", Group: "meetings", Command: "list-interpreters", - Summary: "List Meeting Interpreters", - Description: "Lists meeting interpreters for a meeting with a specified `meetingId`.\n\nThis operation can be used for meeting series, scheduled meeting and ended or ongoing meeting instance objects. If the specified `meetingId` is for a meeting series, the interpreters for the series will be listed; if the `meetingId` is for a scheduled meeting, the interpreters for the particular scheduled meeting will be listed; if the `meetingId` is for an ended or ongoing meeting instance, the interpreters for the particular meeting instance will be listed. See the [Webex Meetings](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) guide for more information about the types of meetings.\n\nThe list returned is sorted in descending order by when interpreters were created.", - Method: "GET", Path: "/meetings/{meetingId}/interpreters", Host: HostWebex, - Params: []Param{ - {Name: "meetingId", In: InPath, Flag: "meeting-id", Usage: "Unique identifier for the meeting for which interpreters are being requested. The meeting can be meeting series, scheduled meeting or meeting instance which has ended or is ongoing. Please note that currently meeting ID of a scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meeting is not supported for this API."}, - {Name: "hostEmail", In: InQuery, Flag: "host-email", Usage: "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin on-behalf-of scopes. If set, the admin may specify the email of a user in a site they manage and the API will return interpreters of the meeting that is hosted by that user."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var MeetingsMeetingsGetInterpreter = &Operation{ - ID: "MeetingsMeetingsGetInterpreter", Area: "meetings", Group: "meetings", Command: "get-interpreter", - Summary: "Get a Meeting Interpreter", - Description: "Retrieves details for a meeting interpreter identified by `meetingId` and `interpreterId` in the URI.", - Method: "GET", Path: "/meetings/{meetingId}/interpreters/{interpreterId}", Host: HostWebex, - Params: []Param{ - {Name: "meetingId", In: InPath, Flag: "meeting-id", Usage: "Unique identifier for the meeting to which the interpreter has been assigned."}, - {Name: "interpreterId", In: InPath, Flag: "interpreter-id", Usage: "Unique identifier for the interpreter whose details are being requested."}, - {Name: "hostEmail", In: InQuery, Flag: "host-email", Usage: "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin on-behalf-of scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for an interpreter of the meeting that is hosted by that user."}, - }, -} - -var MeetingsMeetingsUpdateInterpreter = &Operation{ - ID: "MeetingsMeetingsUpdateInterpreter", Area: "meetings", Group: "meetings", Command: "update-interpreter", - Summary: "Update a Meeting Interpreter", - Description: "Updates details for a meeting interpreter identified by `meetingId` and `interpreterId` in the URI.", - Method: "PUT", Path: "/meetings/{meetingId}/interpreters/{interpreterId}", Host: HostWebex, - Params: []Param{ - {Name: "meetingId", In: InPath, Flag: "meeting-id", Usage: "Unique identifier for the meeting whose interpreters were belong to."}, - {Name: "interpreterId", In: InPath, Flag: "interpreter-id", Usage: "Unique identifier for the interpreter whose details are being requested."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "languageCode1", Flag: "language-code1", Type: "string"}, - {Name: "languageCode2", Flag: "language-code2", Type: "string"}, - {Name: "email", Flag: "email", Type: "string"}, - {Name: "displayName", Flag: "display-name", Type: "string"}, - {Name: "hostEmail", Flag: "host-email", Type: "string"}, - {Name: "sendEmail", Flag: "send-email", Type: "bool"}, - }}, -} - -var MeetingsMeetingsDeleteInterpreter = &Operation{ - ID: "MeetingsMeetingsDeleteInterpreter", Area: "meetings", Group: "meetings", Command: "delete-interpreter", - Summary: "Delete a Meeting Interpreter", - Description: "Removes a meeting interpreter identified by `meetingId` and `interpreterId` in the URI. The deleted meeting interpreter cannot be recovered.", - Method: "DELETE", Path: "/meetings/{meetingId}/interpreters/{interpreterId}", Host: HostWebex, - Params: []Param{ - {Name: "meetingId", In: InPath, Flag: "meeting-id", Usage: "Unique identifier for the meeting whose interpreters were belong to."}, - {Name: "interpreterId", In: InPath, Flag: "interpreter-id", Usage: "Unique identifier for the interpreter to be removed."}, - {Name: "hostEmail", In: InQuery, Flag: "host-email", Usage: "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin on-behalf-of scopes. If set, the admin may specify the email of a user in a site they manage and the API will delete an interpreter of the meeting that is hosted by that user."}, - {Name: "sendEmail", In: InQuery, Flag: "send-email", Usage: "If `true`, send email to the interpreter."}, - }, -} - -var MeetingsMeetingsListBreakoutSessions = &Operation{ - ID: "MeetingsMeetingsListBreakoutSessions", Area: "meetings", Group: "meetings", Command: "list-breakout-sessions", - Summary: "List Meeting Breakout Sessions", - Description: "Lists meeting breakout sessions for a meeting with a specified `meetingId`.\n\nThis operation can be used for meeting series, scheduled meeting and ended or ongoing meeting instance objects. See the [Webex Meetings](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) guide for more information about the types of meetings.\n\n* If the meeting of `meetingId` is in progress, the operation returns the breakout sessions which are currently held in the meeting.\n\n* If the meeting of `meetingId` is ended meeting instance, the operation returns the breakout sessions which happended during the meeting instance.\n\n* Otherwise, if it's a meeting series or scheduled meeting and it's not in progress, the operation returns the breakout sessions which are created when the meeting is scheduled.", - Method: "GET", Path: "/meetings/{meetingId}/breakoutSessions", Host: HostWebex, - Params: []Param{ - {Name: "meetingId", In: InPath, Flag: "meeting-id", Usage: "Unique identifier for the meeting. This parameter applies to meeting series, scheduled meeting and ended or ongoing meeting instance objects. Please note that currently meeting ID of a scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meeting is not supported for this API."}, - {Name: "hostEmail", In: InHeader, Flag: "host-email", Usage: "e.g. `john.andersen@example.com` (string, optional) - Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for a meeting that is hosted by that user."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var MeetingsMeetingsUpdateBreakoutSessions = &Operation{ - ID: "MeetingsMeetingsUpdateBreakoutSessions", Area: "meetings", Group: "meetings", Command: "update-breakout-sessions", - Summary: "Update Meeting Breakout Sessions", - Description: "Updates breakout sessions of a meeting with a specified meeting ID in the pre-meeting state. This operation applies to meeting series and scheduled meetings.", - Method: "PUT", Path: "/meetings/{meetingId}/breakoutSessions", Host: HostWebex, - Params: []Param{ - {Name: "meetingId", In: InPath, Flag: "meeting-id", Usage: "Unique identifier for the meeting. Does not support meeting IDs for a scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meeting."}, - }, - Body: &Body{}, -} - -var MeetingsMeetingsDeleteBreakoutSessions = &Operation{ - ID: "MeetingsMeetingsDeleteBreakoutSessions", Area: "meetings", Group: "meetings", Command: "delete-breakout-sessions", - Summary: "Delete Meeting Breakout Sessions", - Description: "Deletes breakout sessions with a specified meeting ID. The deleted breakout sessions cannot be recovered. The value of `enabledBreakoutSessions` attribute is set to `false` automatically.\nThis operation applies to meeting series and scheduled meetings. It doesn't apply to ended or in-progress meeting instances.", - Method: "DELETE", Path: "/meetings/{meetingId}/breakoutSessions", Host: HostWebex, - Params: []Param{ - {Name: "meetingId", In: InPath, Flag: "meeting-id", Usage: "Unique identifier for the meeting. This parameter applies to meeting series and scheduled meetings. It doesn't apply to ended or in-progress meeting instances."}, - {Name: "sendEmail", In: InQuery, Flag: "send-email", Usage: "Whether or not to send emails to host and invitees. It is an optional field and default value is true."}, - {Name: "hostEmail", In: InHeader, Flag: "host-email", Usage: "e.g. `john.andersen@example.com` (string, optional) - Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will delete breakout sessions that are created by that user."}, - }, -} - -var MeetingsMeetingsGetSurvey = &Operation{ - ID: "MeetingsMeetingsGetSurvey", Area: "meetings", Group: "meetings", Command: "get-survey", - Summary: "Get a Meeting Survey", - Description: "Retrieves details for a meeting survey identified by `meetingId`.\n\n#### Request Header\n\n* `hostEmail`: Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin on-behalf-of scopes. If set, the admin may specify the email of a user in a site they manage and the API will return survey details of that user.", - Method: "GET", Path: "/meetings/{meetingId}/survey", Host: HostWebex, - Params: []Param{ - {Name: "meetingId", In: InPath, Flag: "meeting-id", Usage: "Unique identifier for the meeting. Please note that only the meeting ID of a scheduled webinar is supported for this API."}, - {Name: "hostEmail", In: InHeader, Flag: "host-email", Usage: "e.g. john.andersen@example.com"}, - }, -} - -var MeetingsMeetingsListSurveyResults = &Operation{ - ID: "MeetingsMeetingsListSurveyResults", Area: "meetings", Group: "meetings", Command: "list-survey-results", - Summary: "List Meeting Survey Results", - Description: "Retrieves results for a meeting survey identified by `meetingId`.\n\n#### Request Header\n\n* `timezone`: Time zone for time stamps in response body, defined in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default value is `UTC` if not specified.\n\n* `hostEmail`: Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin on-behalf-of scopes. If set, the admin may specify the email of a user in a site they manage and the API will return the survey results of that user.", - Method: "GET", Path: "/meetings/{meetingId}/surveyResults", Host: HostWebex, - Params: []Param{ - {Name: "meetingId", In: InPath, Flag: "meeting-id", Usage: "Unique identifier for the meeting. Please note that only the meeting ID of a scheduled webinar is supported for this API."}, - {Name: "meetingStartTimeFrom", In: InQuery, Flag: "meeting-start-time-from", Usage: "Start date and time (inclusive) in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format for the meeting objects being requested. `meetingStartTimeFrom` cannot be after `meetingStartTimeTo`. This parameter will be ignored if `meetingId` is the unique identifier for the specific meeting instance.\nWhen `meetingId` is not the unique identifier for the specific meeting instance, the `meetingStartTimeFrom`, if not specified, equals `meetingStartTimeTo` minus `1` month; if `meetingStartTimeTo` is also not specified, the default value for `meetingStartTimeFrom` is `1` month before the current date and time.\n"}, - {Name: "meetingStartTimeTo", In: InQuery, Flag: "meeting-start-time-to", Usage: "End date and time (exclusive) in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format for the meeting objects being requested. `meetingStartTimeTo` cannot be prior to `meetingStartTimeFrom`. This parameter will be ignored if `meetingId` is the unique identifier for the specific meeting instance.\nWhen `meetingId` is not the unique identifier for the specific meeting instance, if `meetingStartTimeFrom` is also not specified, the default value for `meetingStartTimeTo` is the current date and time;For example,if `meetingStartTimeFrom` is a month ago, the default value for `meetingStartTimeTo` is `1` month after `meetingStartTimeFrom`.Otherwise it is the current date and time.\n"}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the maximum number of meetings in the response, up to 100. The default is 10."}, - {Name: "timezone", In: InHeader, Flag: "timezone", Usage: "e.g. UTC"}, - {Name: "hostEmail", In: InHeader, Flag: "host-email", Usage: "e.g. john.andersen@example.com"}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, -} - -var MeetingsMeetingsGetSurveyLinks = &Operation{ - ID: "MeetingsMeetingsGetSurveyLinks", Area: "meetings", Group: "meetings", Command: "get-survey-links", - Summary: "Get Meeting Survey Links", - Description: "Get survey links of a meeting for different users.\n\n#### Request Header\n\n* `timezone`: Time zone for the `meetingStartTimeFrom` and `meetingStartTimeTo` parameters and defined in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default value is `UTC` if not specified.", - Method: "POST", Path: "/meetings/{meetingId}/surveyLinks", Host: HostWebex, - Params: []Param{ - {Name: "meetingId", In: InPath, Flag: "meeting-id", Usage: "Unique identifier for the meeting. Only applies to webinars. Meetings and personal room meetings are not supported."}, - {Name: "timezone", In: InHeader, Flag: "timezone", Usage: "e.g. UTC"}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "hostEmail", Flag: "host-email", Type: "string"}, - {Name: "meetingStartTimeFrom", Flag: "meeting-start-time-from", Type: "string"}, - {Name: "meetingStartTimeTo", Flag: "meeting-start-time-to", Type: "string"}, - {Name: "emails", Flag: "emails", Type: "[]string"}, - }}, -} - -var MeetingsMeetingsCreateInvitationSources = &Operation{ - ID: "MeetingsMeetingsCreateInvitationSources", Area: "meetings", Group: "meetings", Command: "create-invitation-sources", - Summary: "Create Invitation Sources", - Description: "Creates one or more invitation sources for a meeting.", - Method: "POST", Path: "/meetings/{meetingId}/invitationSources", Host: HostWebex, - Params: []Param{ - {Name: "meetingId", In: InPath, Flag: "meeting-id", Usage: "Unique identifier for the meeting. Only the meeting ID of a scheduled webinar is supported for this API."}, - }, - Body: &Body{}, -} - -var MeetingsMeetingsListInvitationSources = &Operation{ - ID: "MeetingsMeetingsListInvitationSources", Area: "meetings", Group: "meetings", Command: "list-invitation-sources", - Summary: "List Invitation Sources", - Description: "Lists invitation sources for a meeting.\n\n#### Request Header\n\n* `hostEmail`: Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin on-behalf-of scopes. If set, the admin may specify the email of a user in a site they manage and the API will return recording details of that user.\n\n* `personId`: Unique identifier for the meeting host. This attribute should only be set if the user or application calling the API has the admin-level scopes. When used, the admin may specify the email of a user in a site they manage to be the meeting host.", - Method: "GET", Path: "/meetings/{meetingId}/invitationSources", Host: HostWebex, - Params: []Param{ - {Name: "meetingId", In: InPath, Flag: "meeting-id", Usage: "Unique identifier for the meeting. Only the meeting ID of a scheduled webinar is supported for this API."}, - {Name: "hostEmail", In: InHeader, Flag: "host-email", Usage: "e.g. john.andersen@example.com"}, - {Name: "personId", In: InHeader, Flag: "person-id", Usage: "e.g. Y2lzY29zcGFyazovL3VzL1BFT1BMRS8yNWJiZjgzMS01YmU5LTRjMjUtYjRiMC05YjU5MmM4YTA4NmI"}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var MeetingsMeetingsListTrackingCodes = &Operation{ - ID: "MeetingsMeetingsListTrackingCodes", Area: "meetings", Group: "meetings", Command: "list-tracking-codes", - Summary: "List Meeting Tracking Codes", - Description: "Lists tracking codes on a site by a meeting host. The result indicates which tracking codes and what options can be used to create or update a meeting on the specified site.\n\n* The `options` here differ from those in the [site-level tracking codes](/docs/api/v1/tracking-codes/get-a-tracking-code) and the [user-level tracking codes](/docs/api/v1/tracking-codes/get-user-tracking-codes). It is the result of a selective combination of the two.\n\n* For a tracking code, if there is no user-level tracking code, the API returns the site-level options, and the `defaultValue` of the site-level default option is `true`. If there is a user-level tracking code, it is merged into the `options`. Meanwhile, the `defaultValue` of this user-level option is `true` and the site-level default option becomes non default.\n\n* If `siteUrl` is specified, tracking codes of the specified site will be listed; otherwise, tracking codes of the user's preferred site will be listed. All available Webex sites and the preferred sites of a user can be retrieved by [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.", - Method: "GET", Path: "/meetings/trackingCodes", Host: HostWebex, - Params: []Param{ - {Name: "siteUrl", In: InQuery, Flag: "site-url", Usage: "URL of the Webex site which the API retrieves the tracking code from. If not specified, the API retrieves the tracking code from the user's preferred site. All available Webex sites and preferred sites of a user can be retrieved by [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API."}, - {Name: "service", In: InQuery, Flag: "service", Usage: "Service for schedule or sign-up pages."}, - {Name: "hostEmail", In: InQuery, Flag: "host-email", Usage: "Email address for the meeting host. This parameter is only used if a user or application calling the API has the admin-level scopes. The admin may specify the email of a user on a site they manage and the API will return meeting participants of the meetings that are hosted by that user."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var MeetingsMeetingsReassignHost = &Operation{ - ID: "MeetingsMeetingsReassignHost", Area: "meetings", Group: "meetings", Command: "reassign-host", - Summary: "Reassign Meetings to a New Host", - Description: "Reassigns a list of meetings to a new host by an admin user.\n\nAll the meetings of `meetingIds` should belong to the same site, which is the `siteUrl` in the request header, if specified, or the admin user's preferred site, if not specified. All available Webex sites and the preferred sites of a user can be retrieved by [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\nIf the user of `hostEmail` is not qualified to be a host of the target site, the API returns an error with the HTTP status code `403`. If all the meetings referenced by `meetingIds` have been reassigned the new host successfully, the API returns an empty response with the HTTP status code `204`. Otherwise, if all the meetings of `meetingIds` fail or some of them fail, the API returns a \"Multi-Status\" response with status code of `207`, and individual errors for each meeting in the response body.\n\nIf a meeting already has several ended meeting instances before it's assigned to a new host, the existing ended instances are accessible to the original host and not accessible to the new host, but the new meeting instances which happen after the reassignment are only accessible to the new host.\n\nAfter the reassignment, the original host will receive an email of meeting cancellation. However, the meeting in the original host's calendar will not necessarily be removed because user's calendar, e.g. Outlook calendar, is not managed by the meeting system directly.\n\n**Note**: Only IDs of meeting series are supported for the `meetingIds`. IDs of scheduled meetings, meeting instances, or scheduled personal room meetings are not supported. To learn more about different types of meetings, please refer to [Meeting Series, Scheduled Meetings, and Meeting Instances](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances).\n\nThere are several limitations when reassigning meetings:\n\n* Users cannot assign an in-progress meeting.\n\n* Users cannot assign a meeting to a user who is not a Webex user, or an attendee who does not have host privilege.\n\n* Users cannot assign a meeting with calling/callback to a host user who does not have calling/callback privileges\n\n* Users cannot assign a meeting with session type A to a host user who does not have session type A privileges.\n\n* Users cannot assign an MC or Webinar to a new host who does not have an MC license or a Webinar license.\n\n* Users cannot assign a TC/EC1.0/SC meeting, or a meeting that is created by on-behalf to a new host.\n\n* Users can reassign hosts for meetings from third-party integrations, such as Outlook or Google. Note that this is not recommended because it may result in inconsistent data between both parties.\n\n#### Request Header\n\n* `siteUrl`: Optional request header parameter. All the meetings of `meetingIds` should belong to the site referenced by siteUrl if specified. Otherwise, the meetings should belong to the admin user's preferred sites. All available Webex sites and the preferred sites of a user can be retrieved by [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.", - Method: "POST", Path: "/meetings/reassignHost", Host: HostWebex, - Params: []Param{ - {Name: "siteUrl", In: InHeader, Flag: "site-url", Usage: "e.g. example.webex.com"}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "hostEmail", Flag: "host-email", Type: "string"}, - {Name: "meetingIds", Flag: "meeting-ids", Type: "[]string"}, - }}, -} - -var MeetingsMeetingsEnd = &Operation{ - ID: "MeetingsMeetingsEnd", Area: "meetings", Group: "meetings", Command: "end", - Summary: "End a Meeting", - Description: "Ends a meeting with a specified meeting ID. This operation applies to meeting series, scheduled meetings, and in-progress meetings. Only the meeting host, cohost, or compliance officer can end a meeting with this API.\n\n* If the `meetingId` value specified is for a scheduled meeting, the operation ends that meeting without impacting other scheduled meetings of the parent meeting series.\n\n* If the `meetingId` value specified is for a meeting series, the operation ends the current meeting occurrence.", - Method: "POST", Path: "/meetings/{meetingId}/end", Host: HostWebex, - Params: []Param{ - {Name: "meetingId", In: InPath, Flag: "meeting-id", Usage: "Unique identifier for the meeting to be ended."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "reason", Flag: "reason", Type: "string"}, - }}, -} - -var MeetingsMeetingsBatchApproveRegistrants = &Operation{ - ID: "MeetingsMeetingsBatchApproveRegistrants", Area: "meetings", Group: "meetings", Command: "batch-approve-registrants", - Summary: "Batch Approve Meeting Registrants", - Description: "Batch approve a set of registrants for a meeting by the meeting host or cohost.", - Method: "POST", Path: "/meetings/{meetingId}/registrants/approve", Host: HostWebex, - Params: []Param{ - {Name: "meetingId", In: InPath, Flag: "meeting-id", Usage: "Unique identifier for the meeting. Only the ID of the meeting series is supported for meetingId. IDs of scheduled meetings, meeting instances, or scheduled personal room meetings are not supported. See the [Meetings Overview](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) for more information about meeting types."}, - {Name: "current", In: InQuery, Flag: "current", Usage: "Whether or not to retrieve only the current scheduled meeting of the meeting series, i.e. the meeting ready to join or start or the upcoming meeting of the meeting series. If it's `true`, return details for the current scheduled meeting of the series, i.e. the scheduled meeting ready to join or start or the upcoming scheduled meeting of the meeting series. If it's `false` or not specified, return details for the entire meeting series. This parameter only applies to meeting series.\n + Default: `false`\n"}, - {Name: "hostEmail", In: InQuery, Flag: "host-email", Usage: "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for a meeting that is hosted by that user."}, - }, - Body: &Body{}, -} - -var MeetingsMeetingsBatchRejectRegistrants = &Operation{ - ID: "MeetingsMeetingsBatchRejectRegistrants", Area: "meetings", Group: "meetings", Command: "batch-reject-registrants", - Summary: "Batch Reject Meeting Registrants", - Description: "Batch reject a set of registrants for a meeting by the meeting host or cohost.", - Method: "POST", Path: "/meetings/{meetingId}/registrants/reject", Host: HostWebex, - Params: []Param{ - {Name: "meetingId", In: InPath, Flag: "meeting-id", Usage: "Unique identifier for the meeting. Only the ID of the meeting series is supported for meetingId. IDs of scheduled meetings, meeting instances, or scheduled personal room meetings are not supported. See the [Meetings Overview](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) for more information about meeting types."}, - {Name: "current", In: InQuery, Flag: "current", Usage: "Whether or not to retrieve only the current scheduled meeting of the meeting series, i.e. the meeting ready to join or start or the upcoming meeting of the meeting series. If it's `true`, return details for the current scheduled meeting of the series, i.e. the scheduled meeting ready to join or start or the upcoming scheduled meeting of the meeting series. If it's `false` or not specified, return details for the entire meeting series. This parameter only applies to meeting series.\n + Default: `false`\n"}, - {Name: "hostEmail", In: InQuery, Flag: "host-email", Usage: "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for a meeting that is hosted by that user."}, - }, - Body: &Body{}, -} - -var MeetingsMeetingsBatchCancelRegistrants = &Operation{ - ID: "MeetingsMeetingsBatchCancelRegistrants", Area: "meetings", Group: "meetings", Command: "batch-cancel-registrants", - Summary: "Batch Cancel Meeting Registrants", - Description: "Batch cancel a set of registrants for a meeting by the meeting host or cohost.", - Method: "POST", Path: "/meetings/{meetingId}/registrants/cancel", Host: HostWebex, - Params: []Param{ - {Name: "meetingId", In: InPath, Flag: "meeting-id", Usage: "Unique identifier for the meeting. Only the ID of the meeting series is supported for meetingId. IDs of scheduled meetings, meeting instances, or scheduled personal room meetings are not supported. See the [Meetings Overview](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) for more information about meeting types."}, - {Name: "current", In: InQuery, Flag: "current", Usage: "Whether or not to retrieve only the current scheduled meeting of the meeting series, i.e. the meeting ready to join or start or the upcoming meeting of the meeting series. If it's `true`, return details for the current scheduled meeting of the series, i.e. the scheduled meeting ready to join or start or the upcoming scheduled meeting of the meeting series. If it's `false` or not specified, return details for the entire meeting series. This parameter only applies to meeting series.\n + Default: `false`\n"}, - {Name: "hostEmail", In: InQuery, Flag: "host-email", Usage: "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for a meeting that is hosted by that user."}, - }, - Body: &Body{}, -} - -var MeetingsMeetingsBatchDeleteRegistrants = &Operation{ - ID: "MeetingsMeetingsBatchDeleteRegistrants", Area: "meetings", Group: "meetings", Command: "batch-delete-registrants", - Summary: "Batch Delete Meeting Registrants", - Description: "Batch delete a set of registrants for a meeting by the meeting host or cohost.", - Method: "POST", Path: "/meetings/{meetingId}/registrants/bulkDelete", Host: HostWebex, - Params: []Param{ - {Name: "meetingId", In: InPath, Flag: "meeting-id", Usage: "Unique identifier for the meeting. Only the ID of the meeting series is supported for meetingId. IDs of scheduled meetings, meeting instances, or scheduled personal room meetings are not supported. See the [Meetings Overview](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) for more information about meeting types."}, - {Name: "current", In: InQuery, Flag: "current", Usage: "Whether or not to retrieve only the current scheduled meeting of the meeting series, i.e. the meeting ready to join or start or the upcoming meeting of the meeting series. If it's `true`, return details for the current scheduled meeting of the series, i.e. the scheduled meeting ready to join or start or the upcoming scheduled meeting of the meeting series. If it's `false` or not specified, return details for the entire meeting series. This parameter only applies to meeting series.\n + Default: `false`\n"}, - {Name: "hostEmail", In: InQuery, Flag: "host-email", Usage: "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for a meeting that is hosted by that user."}, - }, - Body: &Body{}, -} - -var MeetingsMeetingsListGroup = &Operation{ - ID: "MeetingsMeetingsListGroup", Area: "meetings", Group: "meetings", Command: "list-group", - Summary: "List Group Meetings", - Description: "List group meetings with a specified meeting number or web link by a service app which has group meeting access. You can specify the `personId` parameter or `hostEmail` header of whom the meetings will be retrieved. Please note that there are various products in the [Webex Suite](https://www.webex.com/collaboration-suite.html) such as `Meetings` and `Events`. Currently, only meetings of the `Meetings` product are supported by this API, meetings of others in the suite are not supported. Ad-hoc meetings created by [Create a Meeting](/docs/api/v1/meetings/create-a-meeting) with `adhoc` of `true` and a `roomId` will not be listed.\n\n* One of the `personId` parameter and `hostEmail` header must be specified so that only meetings hosted by the person of `personId` or `hostEmail` will be listed.\n\n* `meetingNumber` and `webLink` are mutually exclusive and they cannot be specified simultaneously, but one of them must be specified. The operation returns an array of meeting objects specified by the `meetingNumber` or `webLink`.\n\n* Each object in the array can be a scheduled meeting or a meeting series depending on whether the `current` parameter is `true` or `false`. If it's `false`, the `start` and `end` attributes are for the first scheduled meeting of that series. If it's `true` or not specified, the `start` and `end` attributes are for the scheduled meeting which is ready to start or join or the upcoming scheduled meeting of that series.\n\n* To learn more about which attributes are available for different meeting states, please refer to [Available Meeting Attributes for Different Meeting States](/docs/meetings#available-meeting-attributes-for-different-meeting-states).\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) for time stamps in response body, defined in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default value is `UTC` if not specified.\n\n* `hostEmail`: Email of the user whose meetings will be retrieved. The `hostEmail` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified.", - Method: "GET", Path: "/group/meetings", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InQuery, Flag: "person-id", Usage: "Person ID of the user whose meetings will be retrieved. The person ID can be retrieved from the [People APIs](/docs/api/v1/people), e.g. [Lit People](/docs/api/v1/people/list-people). Note that a person ID retrieved from the People APIs is a Base64-encoded string, e.g. `Y2lzY29zcGFyazovL3VzL1BFT1BMRS9kNDdiMmU3ZC01ZTBmLTRmNjktYWVmNC1lNGZmOTBhZWE3Yzk`. The person ID in the raw UUID format which is the last part of the Base64-decoded string, e.g. `d47b2e7d-5e0f-4f69-aef4-e4ff90aea7c9`, is also supported. The `personId` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified."}, - {Name: "meetingNumber", In: InQuery, Flag: "meeting-number", Usage: "Meeting number for the meeting objects being requested. `meetingNumber` and `webLink` are mutually exclusive. If it's an exceptional meeting from a meeting series, the exceptional meeting instead of the primary meeting series is returned."}, - {Name: "webLink", In: InQuery, Flag: "web-link", Usage: "URL encoded link to information page for the meeting objects being requested. `meetingNumber` and `webLink` are mutually exclusive."}, - {Name: "current", In: InQuery, Flag: "current", Usage: "Flag identifying to retrieve the current scheduled meeting of the meeting series or the entire meeting series. This parameter only applies to scenarios where the meeting is not an exceptional meeting from a meeting series. If it's `true`, return the scheduled meeting of the meeting series which is ready to join or start or the upcoming scheduled meeting of the meeting series; if it's `false`, return the entire meeting series. The default value is `true`."}, - {Name: "timezone", In: InHeader, Flag: "timezone", Usage: "[Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) for time stamps in response body, defined in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default value is `UTC` if not specified."}, - {Name: "hostEmail", In: InHeader, Flag: "host-email", Usage: "Email of the user whose meetings will be retrieved. The `hostEmail` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var MeetingsMeetingsPatchGroup = &Operation{ - ID: "MeetingsMeetingsPatchGroup", Area: "meetings", Group: "meetings", Command: "patch-group", - Summary: "Patch a Group Meeting", - Description: "Patches details for a group meeting with a specified meeting ID by a service app which has group meeting access. This operation applies to meeting series and scheduled meetings. It doesn't apply to ended or in-progress meeting instances. Ad-hoc meetings created by [Create a Meeting](/docs/api/v1/meetings/create-a-meeting) with `adhoc` of `true` and a `roomId` cannot be updated.\n\n* One of the `personId` parameter and `hostEmail` header must be specified so that only meetings hosted by the person of `personId` or `hostEmail` will be patch.\n\n* If the `meetingId` value specified is for a scheduled meeting, the operation updates that scheduled meeting without impact on other scheduled meeting of the parent meeting series.\n\n* If the `meetingId` value specified is for a meeting series, the operation updates the entire meeting series. **Note**: If the value of `start`, `end`, or `recurrence` for the meeting series is changed, any exceptional scheduled meeting in this series is cancelled when the meeting series is updated.\n\n* The `agenda`, `recurrence`, and `trackingCodes` attributes can be specified as `null` so that these attributes become null and hidden from the response after the patch. Note that it's the keyword `null` not the string \"null\".\n\n* If the parameter `recurrence` has a value, a recurring meeting is created based on the rule defined by the value of `recurrence`. For a non-recurring meeting which has no `recurrence` value set, its `meetingType` is also `meetingSeries` which is a meeting series with only one occurrence in Webex meeting modeling. If you specify a `recurrence` like `FREQ=DAILY;INTERVAL=1` which never ends, the furthest date of the series is unlimited. You can also specify a `recurrence` with a very distant ending date in the future, e.g. `FREQ=DAILY;INTERVAL=1;UNTIL=21241001T000000Z`, but the actual furthest date accepted for the recurring meeting is five years from now. Specifically, if it has an ending date, there can be up to 5 occurrences for a yearly meeting, 60 occurrences for a monthly meeting, 261 occurrences for a weekly meeting, or 1826 occurrences for a daily meeting.\n\n* You can't update a meeting that starts 10 years or more in the future.\n\n* Updating a meeting in the API that was created via a calendar connector is not allowed. The meeting may be updated in Webex, but the calendar event may not be updated, resulting in duplicate entries. This action is therefore blocked. In case you must overwrite this behavior, please contact devsupport@webex.com.\n\n#### Request Header\n\n* `hostEmail`: Email of the user whose meeting will be patched. The `hostEmail` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified.", - Method: "PATCH", Path: "/group/meetings/{meetingId}", Host: HostWebex, - Params: []Param{ - {Name: "meetingId", In: InPath, Flag: "meeting-id", Usage: "Unique identifier for the meeting to be updated. This parameter applies to meeting series and scheduled meetings. It doesn't apply to ended or in-progress meeting instances. Please note that currently meeting ID of a scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meeting is not supported for this API."}, - {Name: "personId", In: InQuery, Flag: "person-id", Usage: "Person ID of the user whose meeting will be patched. The person ID can be retrieved from the [People APIs](/docs/api/v1/people), e.g. [Lit People](/docs/api/v1/people/list-people). Note that a person ID retrieved from the People APIs is a Base64-encoded string, e.g. `Y2lzY29zcGFyazovL3VzL1BFT1BMRS9kNDdiMmU3ZC01ZTBmLTRmNjktYWVmNC1lNGZmOTBhZWE3Yzk`. The person ID in the raw UUID format which is the last part of the Base64-decoded string, e.g. `d47b2e7d-5e0f-4f69-aef4-e4ff90aea7c9`, is also supported. The `personId` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified."}, - {Name: "hostEmail", In: InHeader, Flag: "host-email", Usage: "Email of the user whose meetings will be patched. The `hostEmail` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified."}, - }, - Body: &Body{}, -} - -var MeetingsMeetingsUpdateGroupControlStatus = &Operation{ - ID: "MeetingsMeetingsUpdateGroupControlStatus", Area: "meetings", Group: "meetings", Command: "update-group-control-status", - Summary: "Update Group Meeting Control Status", - Description: "Update meeting recording control status by a service app which has group meeting access. The service app can use this API to start, stop, pause, or resume meeting recording by providing an `action` value. The `personId` parameter or `hostEmail` header of the person to whom the meeting belongs must be specified. The service app which invokes the API manages one or more groups, and it also manages one or more sites. The user specified by `hostEmail` or `personId` must be in a group that is managed by the service app. The meeting specified by `meetingId` must be on a site that is managed by the service app. Please note that once the meeting recording has been controlled by a person in the meeting, the recording control of this meeting can no longer be controlled by the service app via the API.", - Method: "POST", Path: "/group/meetings/controls", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InQuery, Flag: "person-id", Usage: "Person ID of the user whose meeting control will be updated. The person ID can be retrieved from the [People APIs](/docs/api/v1/people), e.g. [Lit People](/docs/api/v1/people/list-people). Note that a person ID retrieved from the People APIs is a Base64-encoded string, e.g. `Y2lzY29zcGFyazovL3VzL1BFT1BMRS9kNDdiMmU3ZC01ZTBmLTRmNjktYWVmNC1lNGZmOTBhZWE3Yzk`. The person ID in the raw UUID format which is the last part of the Base64-decoded string, e.g. `d47b2e7d-5e0f-4f69-aef4-e4ff90aea7c9`, is also supported. The `personId` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified."}, - {Name: "hostEmail", In: InHeader, Flag: "host-email", Usage: "Email of the user whose meeting control will be updated. The `hostEmail` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "meetingId", Flag: "meeting-id", Type: "string"}, - {Name: "action", Flag: "action", Type: "string"}, - }}, -} - -var MeetingsTrackingCodesList = &Operation{ - ID: "MeetingsTrackingCodesList", Area: "meetings", Group: "tracking-codes", Command: "list", - Summary: "List Tracking Codes", - Description: "Lists tracking codes on a site by an admin user.\n\n* If `siteUrl` is specified, tracking codes of the specified site will be listed; otherwise, tracking codes of the user's preferred site will be listed. All available Webex sites and the preferred sites of a user can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\n* Admins can switch any Control Hub managed site from using classic tracking codes to mapped tracking codes in Control Hub. This is a one-time irreversible operation. Once the tracking codes are mapped to custom or user profile attributes, the response returns the mapped tracking codes.", - Method: "GET", Path: "/admin/meeting/config/trackingCodes", Host: HostWebex, - Params: []Param{ - {Name: "siteUrl", In: InQuery, Flag: "site-url", Usage: "URL of the Webex site which the API retrieves the tracking code from. If not specified, the API retrieves the tracking code from the user's preferred site. All available Webex sites and preferred sites of a user can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var MeetingsTrackingCodesCreate = &Operation{ - ID: "MeetingsTrackingCodesCreate", Area: "meetings", Group: "tracking-codes", Command: "create", - Summary: "Create a Tracking Code", - Description: "Create a new tracking code by an admin user.\n\n* The `siteUrl` is required. The operation creates a tracking code for the specified site. All or a user's available Webex sites can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\n* The `inputMode` of `hostProfileSelect` is only available for a host profile and sign-up pages and does not apply to the meeting scheduler page or the meeting start page. The value for `scheduleStartCodes` must be `null` or the value for all services must be `notUsed` when the `inputMode` is `hostProfileSelect`.\n\n* The `hostProfileCode` of `required` is only allowed for a Site Admin managed site, and not for a Control Hub managed site.\n\n* When the `hostProfileCode` is `adminSet`, only `adminSet`, `notUsed`, and `notApplicable` are available for the types of `scheduleStartCodes`. When the `hostProfileCode` is not `adminSet`, only `optional`, `required`, `notUsed`, and `notApplicable` are available for `scheduleStartCodes`.\n\n* If the type of the `All` service has a value other than `notApplicable`, and another service, e.g. `EventCenter`, is missing from the `scheduleStartCodes`, then the type of this missing `EventCenter` service shares the same type as the `All` service. If the type of `All` service has a value other than `notApplicable`, and another service, e.g. `EventCenter`, has a type, then the type specified should be the same as the `All` service.\n\n* If the `All` service is missing from the `scheduleStartCodes`, any of the other four services, e.g. `EventCenter`, have a default type of `notUsed` if it is also missing from the `scheduleStartCodes`.\n\n* Admins can switch any Control Hub managed site from using classic tracking codes to mapped tracking codes in Control Hub, this is a one-time irreversible operation. Once the tracking codes are mapped to custom or user profile attributes, they cannot create tracking codes when the mapping process is in progress or the mapping process is completed.", - Method: "POST", Path: "/admin/meeting/config/trackingCodes", Host: HostWebex, - Body: &Body{}, -} - -var MeetingsTrackingCodesGet = &Operation{ - ID: "MeetingsTrackingCodesGet", Area: "meetings", Group: "tracking-codes", Command: "get", - Summary: "Get a Tracking Code", - Description: "Retrieves details for a tracking code by an admin user.\n\n* If `siteUrl` is specified, the tracking code is retrieved from the specified site; otherwise, the tracking code is retrieved from the user's preferred site. All available Webex sites and the preferred sites of a user can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\n* Admins can switch any Control Hub managed site from using classic tracking codes to mapped tracking codes in Control Hub, this is a one-time irreversible operation. Once the tracking codes are mapped to custom or user profile attributes, the response returns details for a mapped tracking code.", - Method: "GET", Path: "/admin/meeting/config/trackingCodes/{trackingCodeId}", Host: HostWebex, - Params: []Param{ - {Name: "trackingCodeId", In: InPath, Flag: "tracking-code-id", Usage: "Unique identifier for the tracking code whose details are being requested."}, - {Name: "siteUrl", In: InQuery, Flag: "site-url", Usage: "URL of the Webex site which the API retrieves the tracking code from. If not specified, the API retrieves the tracking code from the user's preferred site. All available Webex sites and the preferred sites of a user can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API."}, - }, -} - -var MeetingsTrackingCodesUpdate = &Operation{ - ID: "MeetingsTrackingCodesUpdate", Area: "meetings", Group: "tracking-codes", Command: "update", - Summary: "Update a Tracking Code", - Description: "Updates details for a tracking code by an admin user.\n\n* The `siteUrl` is required. The operation updates a tracking code for the specified site. All of a user's available Webex sites can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\n* The `inputMode` of `hostProfileSelect` is only available for the host profile and sign-up pages and it doesn't apply to the meeting scheduler page or meeting start page. Therefore, `scheduleStartCodes` must be `null` or type of all services must be `notUsed` when the `inputMode` is `hostProfileSelect`.\n\n* Currently, the `hostProfileCode` of `required` is only allowed for a Site Admin managed site, and not allowed for a Control Hub managed site.\n\n* When the `hostProfileCode` is `adminSet`, only `adminSet`, `notUsed` and `notApplicable` are available for the types of `scheduleStartCodes`. When the `hostProfileCode` is not `adminSet`, only `optional`, `required`, `notUsed` and `notApplicable` are available for types of `scheduleStartCodes`.\n\n* If the type of the `All` service has a value other than `notApplicable`, and another service, e.g. `EventCenter`, is missing from the `scheduleStartCodes`, then the type of this missing `EventCenter` service shares the same type as the `All` service silently. If the type of `All` service has a value other than `notApplicable`, and another service, e.g. `EventCenter`, has a type, then the type specified should be the same as the `All` service.\n\n* If the `All` service is missing from the `scheduleStartCodes`, any of the other four services, e.g. `EventCenter`, has a default type of `notUsed` if that service is also missing from the `scheduleStartCodes`.\n\n* Admins can switch any Control Hub managed site from using classic tracking codes to mapped tracking codes in Control Hub, this is a one-time irreversible operation. Once the tracking codes are mapped to custom or user profile attributes, they cannot update tracking codes when the mapping process is in progress or the mapping process is completed.", - Method: "PUT", Path: "/admin/meeting/config/trackingCodes/{trackingCodeId}", Host: HostWebex, - Params: []Param{ - {Name: "trackingCodeId", In: InPath, Flag: "tracking-code-id"}, - }, - Body: &Body{}, -} - -var MeetingsTrackingCodesDelete = &Operation{ - ID: "MeetingsTrackingCodesDelete", Area: "meetings", Group: "tracking-codes", Command: "delete", - Summary: "Delete a Tracking Code", - Description: "Deletes a tracking code by an admin user.\n\n* The `siteUrl` is required. The operation deletes a tracking code for the specified site. All of a user's available Webex sites can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\n* Admins can switch any Control Hub managed site from using classic tracking codes to mapped tracking codes in Control Hub, this is a one-time irreversible operation. Once the tracking codes are mapped to custom or user profile attributes, they cannot delete tracking codes when the mapping process is in progress or the mapping process is completed.", - Method: "DELETE", Path: "/admin/meeting/config/trackingCodes/{trackingCodeId}", Host: HostWebex, - Params: []Param{ - {Name: "trackingCodeId", In: InPath, Flag: "tracking-code-id", Usage: "Unique identifier for the tracking code to be deleted."}, - {Name: "siteUrl", In: InQuery, Flag: "site-url", Usage: "URL of the Webex site from which the API deletes the tracking code. All available Webex sites and preferred sites of a user can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API."}, - }, -} - -var MeetingsTrackingCodesGetUser = &Operation{ - ID: "MeetingsTrackingCodesGetUser", Area: "meetings", Group: "tracking-codes", Command: "get-user", - Summary: "Get User Tracking Codes", - Description: "Lists user's tracking codes by an admin user.\n\n* At least one parameter, either `personId`, or `email` is required. `personId` must come before `email` if both are specified. Please note that `email` is specified in the request header.\n\n* If `siteUrl` is specified, the tracking codes of the specified site will be listed; otherwise, the tracking codes of a user's preferred site are listed. All available Webex sites and preferred sites of a user can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API. Please note that the user here is the admin user who invokes the API, not the user specified by `personId` or email.\n\n* Admins can switch any Control Hub managed site from using classic tracking codes to mapped tracking codes in Control Hub, this is a one-time irreversible operation. Once the tracking codes are mapped to custom or user profile attributes, the response returns the user's mapped tracking codes.\n\n#### Request Header\n\n* `email`: Email address for the user whose tracking codes are being retrieved. The admin users can specify the email of a user on a site they manage and the API returns details for the user's tracking codes. At least one parameter of `personId` or `email` is required.", - Method: "GET", Path: "/admin/meeting/userconfig/trackingCodes", Host: HostWebex, - Params: []Param{ - {Name: "siteUrl", In: InQuery, Flag: "site-url", Usage: "URL of the Webex site from which the API retrieves the tracking code. If not specified, the API retrieves the tracking code from the user's preferred site. All available Webex sites and preferred sites of a user can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API."}, - {Name: "personId", In: InQuery, Flag: "person-id", Usage: "Unique identifier for the user whose tracking codes are being retrieved. The admin user can specify the `personId` of a user on a site they manage and the API returns details for the user's tracking codes. At least one parameter of `personId` or `email` is required."}, - {Name: "email", In: InHeader, Flag: "email", Usage: "e.g. john.andersen@example.com"}, - }, -} - -var MeetingsTrackingCodesUpdateUser = &Operation{ - ID: "MeetingsTrackingCodesUpdateUser", Area: "meetings", Group: "tracking-codes", Command: "update-user", - Summary: "Update User Tracking Codes", - Description: "Updates tracking codes for a specified user by an admin user.\n\n* The `siteUrl` is required. The operation updates a user's tracking code on the specified site. All a user's available Webex sites can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API. Please note that the user here is the admin user who invokes the API, not the user specified by `personId` or `email`.\n\n* A name that is not found in the site-level tracking codes cannot be set for a user's tracking codes. All available site-level tracking codes for a site can be retrieved by the [List Tracking Codes](/docs/api/v1/tracking-codes/list-tracking-codes) API.\n\n* If the `inputMode` of a user's tracking code is `select` or `hostProfileSelect`, its value must be one of the site-level options of that tracking code. All available site-level tracking codes for a site can be retrieved by the [List Tracking Codes](/docs/api/v1/tracking-codes/list-tracking-codes) API.\n\n* Admins can switch any Control Hub managed site from using classic tracking codes to mapped tracking codes in Control Hub, this is a one-time irreversible operation. Once the tracking codes are mapped to custom or user profile attributes, they cannot update user's tracking codes when the mapping process is in progress or the mapping process is completed.", - Method: "PUT", Path: "/admin/meeting/userconfig/trackingCodes", Host: HostWebex, - Body: &Body{}, -} - -var MeetingsPeopleList = &Operation{ - ID: "MeetingsPeopleList", Area: "meetings", Group: "people", Command: "list", - Summary: "List People", - Description: "List people in your organization. For most users, either the `email` or `displayName` parameter is required. Admin users can omit these fields and list all users in their organization.\n\nResponse properties associated with a user's presence status, such as `status` or `lastActivity`, will only be returned for people within your organization or an organization you manage. Presence information will not be returned if the authenticated user has [disabled status sharing](https://help.webex.com/nkzs6wl/). Calling /people frequently to poll `status` information for a large set of users will quickly lead to `429` errors and throttling of such requests and is therefore discouraged.\n\nAdmin users can include `Webex Calling` (BroadCloud) user details in the response by specifying `callingData` parameter as `true`. Admin users can list all users in a location. Admin users will receive an enriched payload with additional administrative fields like `licenses`,`roles`, `locations` etc. These fields are shown when accessing a user via GET /people/{id}, not when doing a GET /people?id=\n\nLookup by `email` is only supported for people within the same org or where a partner admin relationship is in place.\n\nLookup by `roles` is only supported for Admin users for the people within the same org.\n\nLong result sets will be split into [pages](/docs/basics#pagination).", - Method: "GET", Path: "/people", Host: HostWebex, - Params: []Param{ - {Name: "email", In: InQuery, Flag: "email", Usage: "List people with this email address. For non-admin requests, either this or `displayName` are required. With the exception of partner admins and a managed org relationship, people lookup by email is only available for users in the same org."}, - {Name: "displayName", In: InQuery, Flag: "display-name", Usage: "List people whose name starts with this string. For non-admin requests, either this or email are required."}, - {Name: "id", In: InQuery, Flag: "id", Usage: "List people by ID. Accepts up to 85 person IDs separated by commas. If this parameter is provided then presence information (such as the `lastActivity` or `status` properties) will not be included in the response."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List people in this organization. Only admin users of another organization (such as partners) may use this parameter."}, - {Name: "roles", In: InQuery, Flag: "roles", Usage: "List of roleIds separated by commas."}, - {Name: "callingData", In: InQuery, Flag: "calling-data", Usage: "Include Webex Calling user details in the response."}, - {Name: "locationId", In: InQuery, Flag: "location-id", Usage: "List people present in this location."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the maximum number of people in the response. If `callingData`=true, then `max` will not be more than 100. If `locationId` is specified then `max` will not be more than 50."}, - {Name: "excludeStatus", In: InQuery, Flag: "exclude-status", Usage: "Omit people status/availability to enhance query performance."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, -} - -var MeetingsPeopleCreatePerson = &Operation{ - ID: "MeetingsPeopleCreatePerson", Area: "meetings", Group: "people", Command: "create-person", - Summary: "Create a Person", - Description: "Create a new user account for a given organization. Only an admin can create a new user account.\n\nAt least one of the following body parameters is required to create a new user: `displayName`, `firstName`, `lastName`.\n\nCurrently, users may have only one email address associated with their account. The `emails` parameter is an array, which accepts multiple values to allow for future expansion, but currently only one email address will be used for the new user.\n\nAdmin users can include `Webex calling` (BroadCloud) user details in the response by specifying `callingData` parameter as true. It may happen that the POST request with calling data returns a 400 status, but the person was created still. One way to get into this state is if an invalid phone number is assigned to a user. The people API aggregates calls to several other microservices, and one may have failed. A best practice is to check if the user exists before retrying. This can be done with the user's email address and a GET /people.\n\nWhen doing attendee management, append `#attendee` to the `siteUrl` parameter (e.g. `mysite.webex.com#attendee`) to make the new user an attendee for a site.\n\n**NOTES**:\n\n* For creating a `Webex Calling` user, you must provide `phoneNumbers` or `extension`, `locationId`, and `licenses` string in the same request.\n\n* `SipAddresses` are asigned via an asynchronous process. This means that the POST response may not show the SIPAddresses immediately. Instead you can verify them with a separate GET to /people, after they were newly configured.\n\n* When assigning multiple licenses in a single request, the system will assign all valid and available licenses. If any requested licenses cannot be assigned, the operation will continue with the remaining licenses. As a result, it is possible that not all requested licenses are assigned to the user.", - Method: "POST", Path: "/people", Host: HostWebex, - Params: []Param{ - {Name: "callingData", In: InQuery, Flag: "calling-data", Usage: "Include Webex Calling user details in the response."}, - {Name: "minResponse", In: InQuery, Flag: "min-response", Usage: "Set to `true` to improve performance by omitting person details and returning only the ID in the response when successful. If unsuccessful the response will have optional error details."}, - }, - Body: &Body{}, -} - -var MeetingsPeopleGetPerson = &Operation{ - ID: "MeetingsPeopleGetPerson", Area: "meetings", Group: "people", Command: "get-person", - Summary: "Get Person Details", - Description: "Shows details for a person, by ID.\n\nResponse properties associated with a user's presence status, such as `status` or `lastActivity`, will only be displayed for people within your organization or an organization you manage. Presence information will not be shown if the authenticated user has [disabled status sharing](https://help.webex.com/nkzs6wl/).\n\nAdmin users can include `Webex Calling` (BroadCloud) user details in the response by specifying `callingData` parameter as `true`.\n\nSpecify the person ID in the `personId` parameter in the URI.", - Method: "GET", Path: "/people/{personId}", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - {Name: "callingData", In: InQuery, Flag: "calling-data", Usage: "Include Webex Calling user details in the response."}, - }, -} - -var MeetingsPeopleUpdatePerson = &Operation{ - ID: "MeetingsPeopleUpdatePerson", Area: "meetings", Group: "people", Command: "update-person", - Summary: "Update a Person", - Description: "Update details for a person, by ID.\n\nSpecify the person ID in the `personId` parameter in the URI. Only an admin can update a person details.\n\nInclude all details for the person. This action expects all user details to be present in the request. A common approach is to first [GET the person's details](/docs/api/v1/people/get-person-details), make changes, then PUT both the changed and unchanged values.\n\nAdmin users can include `Webex Calling` (BroadCloud) user details in the response by specifying `callingData` parameter as true.\n\nWhen doing attendee management, to update a user from host role to an attendee for a site append `#attendee` to the respective `siteUrl` and remove the meeting host license for this site from the license array.\nTo update a person from an attendee role to a host for a site, add the meeting license for this site in the meeting array, and remove that site from the `siteurl` parameter.\n\nTo remove the attendee privilege for a user on a meeting site, remove the `sitename#attendee` from the `siteUrl`s array. The `showAllTypes` parameter must be set to `true`.\n\n**NOTE**:\n\n* When assigning a Webex Calling license, either a telephone number or extension must already be assigned to the person or provided in the request payload.\n\n* When `callingData` is set to `true`, a Webex Calling license must be included in the `licenses` array.\n\n* The `locationId` can only be set when assigning a calling license to a user. It cannot be changed if a user is already an existing calling user.\n\n* The `extension` field should be used to update the Webex Calling extension for a person. The extension value should not include the location routing prefix. The `work_extension` type in the `phoneNumbers` object as seen in the response payload of [List People](/docs/api/v1/people/list-people) or [Get Person Details](/docs/api/v1/people/get-person-details), cannot be used to set the Webex Calling extension for a person.\n\n* When updating a user with multiple email addresses using a PUT request, ensure that the primary email address is listed first in the array. Note that the order of email addresses returned by a GET request is not guaranteed..\n\n* The People API is a combination of several microservices, each responsible for specific attributes of a person. As a result, a PUT request that returns an error response code may still have altered some values of the person's data. Therefore, it is recommended to perform a GET request after encountering an error to verify the current state of the resource. \n\n* Some licenses are implicitly assigned by the system and cannot be admin controlled. They are necessary for the baseline function of the Webex system. If you get an error about implicitly assigned licensed that cannot be removed, please ensure you have the corresponding license in your PUT request.\n\n* When assigning multiple licenses in a single request, the system will assign all valid and available licenses. If any requested licenses cannot be assigned, the operation will continue with the remaining licenses. As a result, it is possible that not all requested licenses are assigned to the user.", - Method: "PUT", Path: "/people/{personId}", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - {Name: "callingData", In: InQuery, Flag: "calling-data", Usage: "Include Webex Calling user details in the response."}, - {Name: "showAllTypes", In: InQuery, Flag: "show-all-types", Usage: "Include additional user data like `#attendee` role."}, - {Name: "minResponse", In: InQuery, Flag: "min-response", Usage: "Set to `true` to improve performance by omitting person details in the response. If unsuccessful the response will have optional error details."}, - }, - Body: &Body{}, -} - -var MeetingsPeopleDeletePerson = &Operation{ - ID: "MeetingsPeopleDeletePerson", Area: "meetings", Group: "people", Command: "delete-person", - Summary: "Delete a Person", - Description: "Remove a person from the system.\n\n**Required Administrator Roles:**\n\nThe following administrators have permission to use this API:\n\n**Customer Organization:**\n- Full administrator\n- User administrator\n\n**Partner/External Access:**\n- External full administrator\n\n**Note:** External read-only administrators, provisioning administrators, and device administrators cannot delete users.\n\nSpecify the person ID in the `personId` parameter in the URI.", - Method: "DELETE", Path: "/people/{personId}", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - }, -} - -var MeetingsPeopleGetMyOwn = &Operation{ - ID: "MeetingsPeopleGetMyOwn", Area: "meetings", Group: "people", Command: "get-my-own", - Summary: "Get My Own Details", - Description: "Get profile details for the authenticated user. This is the same as GET `/people/{personId}` using the Person ID associated with your Auth token.\n\nAdmin users can include `Webex Calling` (BroadCloud) user details in the response by specifying `callingData` parameter as true.", - Method: "GET", Path: "/people/me", Host: HostWebex, - Params: []Param{ - {Name: "callingData", In: InQuery, Flag: "calling-data", Usage: "Include Webex Calling user details in the response."}, - }, -} - -var MeetingsRecordingReportListAuditSummaries = &Operation{ - ID: "MeetingsRecordingReportListAuditSummaries", Area: "meetings", Group: "recording-report", Command: "list-audit-summaries", - Summary: "List of Recording Audit Report Summaries", - Description: "Lists of recording audit report summaries. You can specify a date range and the maximum number of recording audit report summaries to return.\n\nOnly recording audit report summaries of meetings hosted by or shared with the authenticated user will be listed.\n\nThe list returned is sorted in descending order by the date and time that the recordings were created.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n* If `siteUrl` is specified, the recording audit report summaries of the specified site will be listed; otherwise, recording audit report summaries of the user's preferred site will be listed. All available Webex sites and the preferred site of the user can be retrieved by the `Get Site List` API.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.", - Method: "GET", Path: "/recordingReport/accessSummary", Host: HostWebex, - Params: []Param{ - {Name: "max", In: InQuery, Flag: "max", Usage: "Maximum number of recording audit report summaries to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`."}, - {Name: "from", In: InQuery, Flag: "from", Usage: "Starting date and time (inclusive) for recording audit report summaries to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`. Please note that the interval between `to` and `from` cannot exceed 90 days and the interval between the current time and `from` cannot exceed 365 days."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "Ending date and time (exclusive) for recording audit report summaries to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`. Please note that the interval between `to` and `from` cannot exceed 90 days and the interval between the current time and `from` cannot exceed 365 days."}, - {Name: "hostEmail", In: InQuery, Flag: "host-email", Usage: "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin on-behalf-of scopes. If set, the admin may specify the email of a user in a site they manage and the API will return recording audit report summaries of that user. If a special value of `all` is set for `hostEmail`, the admin can list recording audit report summaries of all users on the target site, not of a single user."}, - {Name: "siteUrl", In: InQuery, Flag: "site-url", Usage: "URL of the Webex site which the API lists recording audit report summaries from. If not specified, the API lists summary audit report for recordings from the user's preferred site. All available Webex sites and the preferred site of the user can be retrieved by `Get Site List` API."}, - {Name: "timezone", In: InHeader, Flag: "timezone", Usage: "e.g. UTC"}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, - TimeRange: TimeISO, -} - -var MeetingsRecordingReportGetAudit = &Operation{ - ID: "MeetingsRecordingReportGetAudit", Area: "meetings", Group: "recording-report", Command: "get-audit", - Summary: "Get Recording Audit Report Details", - Description: "Retrieves details for a recording audit report with a specified recording ID.\n\nOnly recording audit report details of meetings hosted by or shared with the authenticated user may be retrieved.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.", - Method: "GET", Path: "/recordingReport/accessDetail", Host: HostWebex, - Params: []Param{ - {Name: "recordingId", In: InQuery, Flag: "recording-id", Usage: "A unique identifier for the recording."}, - {Name: "hostEmail", In: InQuery, Flag: "host-email", Usage: "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin on-behalf-of scopes. If set, the admin may specify the email of a user in a site they manage and the API will return recording details of that user."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Maximum number of recording audit report details to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`."}, - {Name: "timezone", In: InHeader, Flag: "timezone", Usage: "e.g. UTC"}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, -} - -var MeetingsRecordingReportListMeetingArchiveSummaries = &Operation{ - ID: "MeetingsRecordingReportListMeetingArchiveSummaries", Area: "meetings", Group: "recording-report", Command: "list-meeting-archive-summaries", - Summary: "List Meeting Archive Summaries", - Description: "Lists of meeting archive summaries. You can specify a date range and the maximum number of meeting archive summaries to return.\n\nMeeting archive summaries are only available to full administrators, not even the meeting host.\n\nThe list returned is sorted in descending order by the date and time that the archives were created.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n* If `siteUrl` is specified, the meeting archive summaries of the specified site will be listed; otherwise, meeting archive summaries of the user's preferred site will be listed. All available Webex sites and the preferred site of the user can be retrieved by the `Get Site List` API.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.", - Method: "GET", Path: "/recordingReport/meetingArchiveSummaries", Host: HostWebex, - Params: []Param{ - {Name: "max", In: InQuery, Flag: "max", Usage: "Maximum number of meeting archive summaries to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`."}, - {Name: "from", In: InQuery, Flag: "from", Usage: "Starting date and time (inclusive) for meeting archive summaries to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`. Please note that the interval between `to` and `from` cannot exceed 30 days."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "Ending date and time (exclusive) for meeting archive summaries to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`. Please note that the interval between `to` and `from` cannot exceed 30 days."}, - {Name: "siteUrl", In: InQuery, Flag: "site-url", Usage: "URL of the Webex site which the API lists meeting archive summaries from. If not specified, the API lists meeting archive summaries for recordings from the user's preferred site. All available Webex sites and the preferred site of the user can be retrieved by `Get Site List` API."}, - {Name: "timezone", In: InHeader, Flag: "timezone", Usage: "e.g. UTC"}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, - TimeRange: TimeISO, -} - -var MeetingsRecordingReportGetMeetingArchive = &Operation{ - ID: "MeetingsRecordingReportGetMeetingArchive", Area: "meetings", Group: "recording-report", Command: "get-meeting-archive", - Summary: "Get Meeting Archive Details", - Description: "Retrieves details for a meeting archive report with a specified archive ID, which contains recording metadata.\n\nMeeting archive details are only available to full administrators, not even the meeting host.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.", - Method: "GET", Path: "/recordingReport/meetingArchives/{archiveId}", Host: HostWebex, - Params: []Param{ - {Name: "archiveId", In: InPath, Flag: "archive-id", Usage: "A unique identifier for the meeting archive summary."}, - {Name: "timezone", In: InHeader, Flag: "timezone", Usage: "e.g. UTC"}, - }, -} - -var MeetingsRecordingsList = &Operation{ - ID: "MeetingsRecordingsList", Area: "meetings", Group: "recordings", Command: "list", - Summary: "List Recordings", - Description: "
This API is still supported and behaves the same as before, but will be deprecated in the future. Due to limited support for special characters when filtering recordings by `topic`, it is recommended to use the new [Query Recordings](/docs/api/v1/recordings/query-recordings) API instead.
\n\nLists recordings. You can specify a date range, a parent meeting ID, and the maximum number of recordings to return.\n\nOnly recordings of meetings hosted by or shared with the authenticated user will be listed.\n\nThe list returned is sorted in descending order by the date and time that the recordings were created.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n* If `meetingId` is specified, only recordings associated with the specified meeting will be listed. **NOTE**: when `meetingId` is specified, parameter of `siteUrl` will be ignored.\n\n* If `siteUrl` is specified, recordings of the specified site will be listed; otherwise, the API lists recordings of all the user's sites. All available Webex sites and preferred site of the user can be retrieved by [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\n#### Request Header\n\n* `timezone`: *[Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.*", - Method: "GET", Path: "/recordings", Host: HostWebex, - Params: []Param{ - {Name: "max", In: InQuery, Flag: "max", Usage: "Maximum number of recordings to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`."}, - {Name: "from", In: InQuery, Flag: "from", Usage: "Starting date and time (inclusive) for recordings to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "Ending date and time (exclusive) for List recordings to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`."}, - {Name: "meetingId", In: InQuery, Flag: "meeting-id", Usage: "Unique identifier for the parent meeting series, scheduled meeting, or meeting instance for which recordings are being requested. If a meeting series ID is specified, the operation returns an array of recordings for the specified meeting series. If a scheduled meeting ID is specified, the operation returns an array of recordings for the specified scheduled meeting. If a meeting instance ID is specified, the operation returns an array of recordings for the specified meeting instance. If no ID is specified, the operation returns an array of recordings for all meetings of the current user. When `meetingId` is specified, the `siteUrl` parameter is ignored."}, - {Name: "hostEmail", In: InQuery, Flag: "host-email", Usage: "Email address for the meeting host. This parameter is only used if the user or application calling the API has the required [admin-level meeting scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will return recordings of that user."}, - {Name: "siteUrl", In: InQuery, Flag: "site-url", Usage: "URL of the Webex site from which the API lists recordings. If not specified, the API lists recordings from all of a user's sites. All available Webex sites and the preferred site of the user can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API."}, - {Name: "integrationTag", In: InQuery, Flag: "integration-tag", Usage: "External key of the parent meeting created by an integration application. This parameter is used by the integration application to query recordings by a key in its own domain, such as a Zendesk ticket ID, a Jira ID, a Salesforce Opportunity ID, etc. An integrationTag created by one client cannot be accessed or used as a filtering parameter by another client. For example, if a meeting has an `integrationTag` of \"Sales\" which is created by the client behind the developer portal, then this integrationTag can't be accessed on the meeting or its recordings by another client. Neither can it be used to filter meetings or recordings by a client other than the one that created the integrationTag of \"Sales\"."}, - {Name: "topic", In: InQuery, Flag: "topic", Usage: "Recording's topic. If specified, the API filters recordings by topic in a case-insensitive manner."}, - {Name: "format", In: InQuery, Flag: "format", Usage: "Recording's file format. If specified, the API filters recordings by format."}, - {Name: "serviceType", In: InQuery, Flag: "service-type", Usage: "The service type for recordings. If this item is specified, the API filters recordings by service-type."}, - {Name: "status", In: InQuery, Flag: "status", Usage: "Recording's status. If not specified or `available`, retrieves recordings that are available. Otherwise, if specified as `deleted`, retrieves recordings that have been moved into the recycle bin. The `purged` status only applies if the user calling the API is a Compliance Officer and `meetingId` is specified."}, - {Name: "timezone", In: InHeader, Flag: "timezone", Usage: "e.g. UTC"}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, - TimeRange: TimeISO, -} - -var MeetingsRecordingsListAdminComplianceOfficer = &Operation{ - ID: "MeetingsRecordingsListAdminComplianceOfficer", Area: "meetings", Group: "recordings", Command: "list-admin-compliance-officer", - Summary: "List Recordings For an Admin or Compliance Officer", - Description: "
This API is still supported and behaves the same as before, but will be deprecated in the future. Due to limited support for special characters when filtering recordings by `topic`, it is recommended to use the new [Query Recordings For an Admin or Compliance Officer](/docs/api/v1/recordings/query-recordings-for-an-admin-or-compliance-officer) API instead.
\n\nList recordings for an admin or compliance officer. You can specify a date range, a parent meeting ID, and the maximum number of recordings to return.\n\nThe list returned is sorted in descending order by the date and time that the recordings were created.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n* If `meetingId` is specified, only recordings associated with the specified meeting will be listed. Please note that when `meetingId` is specified, parameters of `siteUrl`, `from`, and `to` will be ignored.\n\n* If `siteUrl` is specified, all the recordings on the specified site are listed; otherwise, all the recordings on the admin user's or compliance officer's preferred site are listed. All the available Webex sites and the admin user's or compliance officer's preferred site can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\n#### Request Header\n\n* `timezone`: *[Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.*", - Method: "GET", Path: "/admin/recordings", Host: HostWebex, - Params: []Param{ - {Name: "max", In: InQuery, Flag: "max", Usage: "Maximum number of recordings to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`."}, - {Name: "from", In: InQuery, Flag: "from", Usage: "Starting date and time (inclusive) for recordings to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`. The interval between `from` and `to` must be within 30 days. If `to` is specified, the default value for `from` is `to` minus 7 days. If `to` is also not specified, the default value for `from` is current date and time minus 7 days."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "Ending date and time (exclusive) for List recordings to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`. The interval between `from` and `to` must be within 30 days. If `from` is specified, the default value for `to` is `from` plus 7 days. If `from` is also not specified, the default value for `to` is the current date and time."}, - {Name: "meetingId", In: InQuery, Flag: "meeting-id", Usage: "Unique identifier for the parent meeting series, scheduled meeting, or meeting instance for which recordings are being requested. If a meeting series ID is specified, the operation returns an array of recordings for the specified meeting series. If a scheduled meeting ID is specified, the operation returns an array of recordings for the specified scheduled meeting. If a meeting instance ID is specified, the operation returns an array of recordings for the specified meeting instance. If not specified, the operation returns an array of recordings for all the current user's meetings. When `meetingId` is specified, the `siteUrl` parameter is ignored."}, - {Name: "siteUrl", In: InQuery, Flag: "site-url", Usage: "URL of the Webex site which the API lists recordings from. If not specified, the API lists recordings from user's preferred site. All available Webex sites and preferred site of the user can be retrieved by [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API."}, - {Name: "integrationTag", In: InQuery, Flag: "integration-tag", Usage: "External key of the parent meeting created by an integration application. This parameter is used by the integration application to query recordings by a key in its own domain such as a Zendesk ticket ID, a Jira ID, a Salesforce Opportunity ID, etc. An integrationTag created by one client cannot be accessed or used as a filtering parameter by another client. For example, if a meeting has an `integrationTag` of \"Sales\" which is created by the client behind the developer portal, then this integrationTag can't be accessed on the meeting or its recordings by another client. Neither can it be used to filter meetings or recordings by a client other than the one that created the integrationTag of \"Sales\"."}, - {Name: "topic", In: InQuery, Flag: "topic", Usage: "Recording topic. If specified, the API filters recordings by topic in a case-insensitive manner."}, - {Name: "format", In: InQuery, Flag: "format", Usage: "Recording's file format. If specified, the API filters recordings by format."}, - {Name: "serviceType", In: InQuery, Flag: "service-type", Usage: "The service type for recordings. If specified, the API filters recordings by service type."}, - {Name: "status", In: InQuery, Flag: "status", Usage: "Recording's status. If not specified or `available`, retrieves recordings that are available. If specified as `deleted`, retrieves recordings that have been moved to the recycle bin. Otherwise, if specified as `purged`, retrieves recordings that have been purged from the recycle bin."}, - {Name: "timezone", In: InHeader, Flag: "timezone", Usage: "e.g. UTC"}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, - TimeRange: TimeISO, -} - -var MeetingsRecordingsDeleteAdmin = &Operation{ - ID: "MeetingsRecordingsDeleteAdmin", Area: "meetings", Group: "recordings", Command: "delete-admin", - Summary: "Delete a Recording By an Admin", - Description: "Removes a recording with a specified recording ID by an admin. The deleted recording cannot be recovered. It will be inaccessible to regular users (host, attendees and shared) or an admin, but it will be still available to the Compliance Officer.\n\nAny recording on a site which is managed by the admin can be deleted by him.\n\nThe `temporaryDirectDownloadLinks` of a recording which are retrieved by the [Get Recording Details](/docs/api/v1/recordings/get-recording-details) API are still available to Compliance Officers even if the recording has been deleted.", - Method: "DELETE", Path: "/admin/recordings/{recordingId}", Host: HostWebex, - Params: []Param{ - {Name: "recordingId", In: InPath, Flag: "recording-id", Usage: "A unique identifier for the recording."}, - }, -} - -var MeetingsRecordingsGet = &Operation{ - ID: "MeetingsRecordingsGet", Area: "meetings", Group: "recordings", Command: "get", - Summary: "Get Recording Details", - Description: "Retrieves details for a recording with a specified recording ID.\n\nOnly recordings of meetings hosted by or shared with the authenticated user may be retrieved.\n\n#### Request Header\n\n* `timezone`: *[Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.*\n\n* `siteUrl`: Optional request header parameter. If specified, retrieve the recording details from that site; otherwise, retrieve it from the site which is implied based on the recording ID.", - Method: "GET", Path: "/recordings/{recordingId}", Host: HostWebex, - Params: []Param{ - {Name: "recordingId", In: InPath, Flag: "recording-id", Usage: "A unique identifier for the recording."}, - {Name: "hostEmail", In: InQuery, Flag: "host-email", Usage: "Email address for the meeting host. Only used if the user or application calling the API has required [admin-level meeting scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage, and the API will return recording details of that user."}, - {Name: "timezone", In: InHeader, Flag: "timezone", Usage: "e.g. UTC"}, - {Name: "siteUrl", In: InHeader, Flag: "site-url", Usage: "e.g. example.webex.com"}, - }, -} - -var MeetingsRecordingsDelete = &Operation{ - ID: "MeetingsRecordingsDelete", Area: "meetings", Group: "recordings", Command: "delete", - Summary: "Delete a Recording", - Description: "Removes a recording with a specified recording ID. The deleted recording cannot be recovered. If a Compliance Officer deletes another user's recording, the recording will be inaccessible to regular users (host, attendees and shared), but will be still available to the Compliance Officer.\n\nOnly recordings of meetings hosted by the authenticated user can be deleted.\n\nThe `temporaryDirectDownloadLinks` of a recording which are retrieved by the [Get Recording Details](/docs/api/v1/recordings/get-recording-details) API are still available to Compliance Officers even if the recording has been deleted.", - Method: "DELETE", Path: "/recordings/{recordingId}", Host: HostWebex, - Params: []Param{ - {Name: "recordingId", In: InPath, Flag: "recording-id", Usage: "A unique identifier for the recording."}, - {Name: "hostEmail", In: InQuery, Flag: "host-email", Usage: "Email address for the meeting host. Only used if the user or application calling the API has the required [admin-level meeting scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will delete a recording of that user."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "reason", Flag: "reason", Type: "string"}, - {Name: "comment", Flag: "comment", Type: "string"}, - }}, -} - -var MeetingsRecordingsMoveRecycleBin = &Operation{ - ID: "MeetingsRecordingsMoveRecycleBin", Area: "meetings", Group: "recordings", Command: "move-recycle-bin", - Summary: "Move Recordings into the Recycle Bin", - Description: "Move recordings into the recycle bin with recording IDs. Recordings in the recycle bin can be recovered by [Restore Recordings from Recycle Bin](/docs/api/v1/recordings/restore-recordings-from-recycle-bin) API. If you'd like to empty recordings from the recycle bin, you can use [Purge Recordings from Recycle Bin](/docs/api/v1/recordings/purge-recordings-from-recycle-bin) API to purge all or some of them.\n\nOnly recordings of meetings hosted by the authenticated user can be moved into the recycle bin.\n\n* `recordingIds` should not be empty and its maximum size is `100`.\n\n* All the IDs of `recordingIds` should belong to the site of `siteUrl` or the user's preferred site if `siteUrl` is not specified.", - Method: "POST", Path: "/recordings/softDelete", Host: HostWebex, - Params: []Param{ - {Name: "hostEmail", In: InQuery, Flag: "host-email", Usage: "Email address for the meeting host. Only used if the user or application calling the API has the required [admin-level meeting scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will move recordings into recycle bin of that user"}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "recordingIds", Flag: "recording-ids", Type: "[]string"}, - {Name: "siteUrl", Flag: "site-url", Type: "string"}, - }}, -} - -var MeetingsRecordingsRestoreRecycleBin = &Operation{ - ID: "MeetingsRecordingsRestoreRecycleBin", Area: "meetings", Group: "recordings", Command: "restore-recycle-bin", - Summary: "Restore Recordings from Recycle Bin", - Description: "Restore all or some recordings from the recycle bin. Only recordings of meetings hosted by the authenticated user can be restored from recycle bin.\n\n* If `restoreAll` is `true`, `recordingIds` should be empty.\n\n* If `restoreAll` is `false`, `recordingIds` should not be empty and its maximum size is `100`.\n\n* All the IDs of `recordingIds` should belong to the site of `siteUrl` or the user's preferred site if `siteUrl` is not specified.", - Method: "POST", Path: "/recordings/restore", Host: HostWebex, - Params: []Param{ - {Name: "hostEmail", In: InQuery, Flag: "host-email", Usage: "Email address for the meeting host. This parameter is only used if the user or application calling the API has the required [admin-level meeting scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will restore recordings of that user."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "restoreAll", Flag: "restore-all", Type: "bool"}, - {Name: "recordingIds", Flag: "recording-ids", Type: "[]string"}, - {Name: "siteUrl", Flag: "site-url", Type: "string"}, - }}, -} - -var MeetingsRecordingsPurgeRecycleBin = &Operation{ - ID: "MeetingsRecordingsPurgeRecycleBin", Area: "meetings", Group: "recordings", Command: "purge-recycle-bin", - Summary: "Purge Recordings from Recycle Bin", - Description: "Purge recordings from recycle bin with recording IDs or purge all the recordings that are in the recycle bin.\n\nOnly recordings of meetings hosted by the authenticated user can be purged from recycle bin.\n\n* If `purgeAll` is `true`, `recordingIds` should be empty.\n\n* If `purgeAll` is `false`, `recordingIds` should not be empty and its maximum size is `100`.\n\n* All the IDs of `recordingIds` should belong to the site of `siteUrl` or the user's preferred site if `siteUrl` is not specified.", - Method: "POST", Path: "/recordings/purge", Host: HostWebex, - Params: []Param{ - {Name: "hostEmail", In: InQuery, Flag: "host-email", Usage: "Email address for the meeting host. Only used if the user or application calling the API has the required [admin-level meeting scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will purge recordings from recycle bin of that user."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "purgeAll", Flag: "purge-all", Type: "bool"}, - {Name: "recordingIds", Flag: "recording-ids", Type: "[]string"}, - {Name: "siteUrl", Flag: "site-url", Type: "string"}, - }}, -} - -var MeetingsRecordingsShare = &Operation{ - ID: "MeetingsRecordingsShare", Area: "meetings", Group: "recordings", Command: "share", - Summary: "Share a Recording", - Description: "Share or unshare a recording with other users by recording ID and email addresses.", - Method: "POST", Path: "/recordings/{recordingId}/accessList", Host: HostWebex, - Params: []Param{ - {Name: "recordingId", In: InPath, Flag: "recording-id", Usage: "A unique identifier for the recording."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "hostEmail", Flag: "host-email", Type: "string"}, - {Name: "addEmails", Flag: "add-emails", Type: "[]string"}, - {Name: "removeEmails", Flag: "remove-emails", Type: "[]string"}, - {Name: "sendEmail", Flag: "send-email", Type: "bool"}, - }}, -} - -var MeetingsRecordingsListGroup = &Operation{ - ID: "MeetingsRecordingsListGroup", Area: "meetings", Group: "recordings", Command: "list-group", - Summary: "List Group Recordings", - Description: "List group recordings for a service app which has group recording access. You can specify a date range, the maximum number of recordings to return, and `personId` or `hostEmail` of whom the recordings will be retrieved.\n\n* The list returned is sorted in descending order by the date and time that the recordings were created.\n\n* Only recordings which are in the `available` status and not shared by others can be listed. Those in the `deleted` or `purged` status or shared by others can't be listed.\n\n* Long result sets are split into [pages](/docs/basics#pagination).\n\n* If `siteUrl` is specified, the API lists group recordings on the specified site; otherwise, the API lists group recordings on all the sites managed by the service app. All the sites managed by a service app can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\n* One of the `personId` parameter and `hostEmail` header must be specified so that only recordings of meetings hosted by the person of `personId` or `hostEmail` will be returned.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.\n\n* `hostEmail`: Email of the user whose recordings will be retrieved. The `hostEmail` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified.", - Method: "GET", Path: "/group/recordings", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InQuery, Flag: "person-id", Usage: "Person ID of the user whose recordings will be retrieved. The person ID can be retrieved from the [People APIs](/docs/api/v1/people), e.g. [Lit People](/docs/api/v1/people/list-people). Note that a person ID retrieved from the People APIs is a Base64-encoded string, e.g. `Y2lzY29zcGFyazovL3VzL1BFT1BMRS9kNDdiMmU3ZC01ZTBmLTRmNjktYWVmNC1lNGZmOTBhZWE3Yzk`. The person ID in the raw UUID format which is the last part of the Base64-decoded string, e.g. `d47b2e7d-5e0f-4f69-aef4-e4ff90aea7c9`, is also supported. The `personId` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Maximum number of recordings to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`."}, - {Name: "from", In: InQuery, Flag: "from", Usage: "Starting date and time (inclusive) for recordings to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`. The interval between `from` and `to` must be within 30 days."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "Ending date and time (exclusive) for List recordings to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`. The interval between `from` and `to` must be within 30 days."}, - {Name: "siteUrl", In: InQuery, Flag: "site-url", Usage: "URL of the Webex site which the API lists recordings from. If not specified, the API lists recordings from user's preferred site. All available Webex sites and preferred site of the user can be retrieved by [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API."}, - {Name: "integrationTag", In: InQuery, Flag: "integration-tag", Usage: "External key of the parent meeting created by an integration application. This parameter is used by the integration application to query recordings by a key in its own domain such as a Zendesk ticket ID, a Jira ID, a Salesforce Opportunity ID, etc. An integrationTag created by one client cannot be accessed or used as a filtering parameter by another client. For example, if a meeting has an `integrationTag` of \"Sales\" which is created by the client behind the developer portal, then this integrationTag can't be accessed on the meeting or its recordings by another client. Neither can it be used to filter meetings or recordings by a client other than the one that created the integrationTag of \"Sales\"."}, - {Name: "format", In: InQuery, Flag: "format", Usage: "Recording's file format. If specified, the API filters recordings by format."}, - {Name: "serviceType", In: InQuery, Flag: "service-type", Usage: "The service type for recordings. If specified, the API filters recordings by service type."}, - {Name: "timezone", In: InHeader, Flag: "timezone", Usage: "e.g. UTC"}, - {Name: "hostEmail", In: InHeader, Flag: "host-email", Usage: "Email of the user whose recordings will be retrieved. The `hostEmail` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, - TimeRange: TimeISO, -} - -var MeetingsRecordingsGetGroup = &Operation{ - ID: "MeetingsRecordingsGetGroup", Area: "meetings", Group: "recordings", Command: "get-group", - Summary: "Get Group Recording Details", - Description: "Retrieves details for a group recording for a service app which has group recording access.\n\n* Only recordings which are in the `available` status and not shared by others can be listed. Those in the `deleted` or `purged` status or shared by others can't be listed.\n\n* One of the `personId` parameter and `hostEmail` header must be specified so that only recordings of meetings hosted by the person of `personId` or `hostEmail` will be returned.\n\n#### Request Header\n\n* `timezone`: *[Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.*\n\n* `hostEmail`: Email of the user whose recordings will be retrieved. The `hostEmail` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified.", - Method: "GET", Path: "/group/recordings/{recordingId}", Host: HostWebex, - Params: []Param{ - {Name: "recordingId", In: InPath, Flag: "recording-id", Usage: "A unique identifier for the recording."}, - {Name: "personId", In: InQuery, Flag: "person-id", Usage: "Person ID of the user whose recordings will be retrieved. The person ID can be retrieved from the [People APIs](/docs/api/v1/people), e.g. [Lit People](/docs/api/v1/people/list-people). Note that a person ID retrieved from the People APIs is a Base64-encoded string, e.g. `Y2lzY29zcGFyazovL3VzL1BFT1BMRS9kNDdiMmU3ZC01ZTBmLTRmNjktYWVmNC1lNGZmOTBhZWE3Yzk`. The person ID in the raw UUID format which is the last part of the Base64-decoded string, e.g. `d47b2e7d-5e0f-4f69-aef4-e4ff90aea7c9`, is also supported. The `personId` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified."}, - {Name: "timezone", In: InHeader, Flag: "timezone", Usage: "e.g. UTC"}, - {Name: "hostEmail", In: InHeader, Flag: "host-email", Usage: "Email of the user whose recordings will be retrieved. The `hostEmail` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified."}, - }, -} - -var MeetingsRecordingsShareLink = &Operation{ - ID: "MeetingsRecordingsShareLink", Area: "meetings", Group: "recordings", Command: "share-link", - Summary: "Share a Recording Link", - Description: "Share or unshare a recording with other users by recording link and email addresses.", - Method: "POST", Path: "/recordings/accessList", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "hostEmail", Flag: "host-email", Type: "string"}, - {Name: "webShareLink", Flag: "web-share-link", Type: "string"}, - {Name: "addEmails", Flag: "add-emails", Type: "[]string"}, - {Name: "removeEmails", Flag: "remove-emails", Type: "[]string"}, - {Name: "sendEmail", Flag: "send-email", Type: "bool"}, - }}, -} - -var MeetingsRecordingsQuery = &Operation{ - ID: "MeetingsRecordingsQuery", Area: "meetings", Group: "recordings", Command: "query", - Summary: "Query Recordings", - Description: "Queries recordings with filters in the request body. You can specify a date range, a parent meeting ID, the maximum number of recordings to return, and additional filters such as siteUrl, integrationTag, hostEmail, topic, format, serviceType, and status.\n\nOnly recordings of meetings hosted by or shared with the authenticated user will be listed.\n\nThe list returned is sorted in descending order by the date and time that the recordings were created.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n* If `meetingId` is specified, only recordings associated with the specified meeting will be listed. **NOTE**: when `meetingId` is specified, parameter of `siteUrl` will be ignored.\n\n* If `siteUrl` is specified, recordings of the specified site will be listed; otherwise, the API lists recordings of all the user's sites. All available Webex sites and preferred site of the user can be retrieved by [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\n#### Request Header\n\n* `timezone`: *[Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.*", - Method: "POST", Path: "/recordings/query", Host: HostWebex, - Params: []Param{ - {Name: "timezone", In: InHeader, Flag: "timezone", Usage: "e.g. UTC"}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "max", Flag: "max", Type: "int64"}, - {Name: "from", Flag: "from", Type: "string"}, - {Name: "to", Flag: "to", Type: "string"}, - {Name: "meetingId", Flag: "meeting-id", Type: "string"}, - {Name: "siteUrl", Flag: "site-url", Type: "string"}, - {Name: "integrationTag", Flag: "integration-tag", Type: "string"}, - {Name: "hostEmail", Flag: "host-email", Type: "string"}, - {Name: "topic", Flag: "topic", Type: "string"}, - {Name: "format", Flag: "format", Type: "string"}, - {Name: "serviceType", Flag: "service-type", Type: "string"}, - {Name: "status", Flag: "status", Type: "string"}, - }}, -} - -var MeetingsRecordingsQueryAdminComplianceOfficer = &Operation{ - ID: "MeetingsRecordingsQueryAdminComplianceOfficer", Area: "meetings", Group: "recordings", Command: "query-admin-compliance-officer", - Summary: "Query Recordings For an Admin or Compliance Officer", - Description: "Queries recordings for an admin or compliance officer with filters in the request body. You can specify a date range, a parent meeting ID, the maximum number of recordings to return, and additional filters such as siteUrl, integrationTag, topic, format, serviceType, and status.\n\nThe list returned is sorted in descending order by the date and time that the recordings were created.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n* If `meetingId` is specified, only recordings associated with the specified meeting will be listed. Please note that when `meetingId` is specified, parameters of `siteUrl`, `from`, and `to` will be ignored.\n\n* If `siteUrl` is specified, all the recordings on the specified site are listed; otherwise, all the recordings on the admin user's or compliance officer's preferred site are listed. All the available Webex sites and the admin user's or compliance officer's preferred site can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\n#### Request Header\n\n* `timezone`: *[Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.*", - Method: "POST", Path: "/admin/recordings/query", Host: HostWebex, - Params: []Param{ - {Name: "timezone", In: InHeader, Flag: "timezone", Usage: "e.g. UTC"}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "max", Flag: "max", Type: "int64"}, - {Name: "from", Flag: "from", Type: "string"}, - {Name: "to", Flag: "to", Type: "string"}, - {Name: "meetingId", Flag: "meeting-id", Type: "string"}, - {Name: "siteUrl", Flag: "site-url", Type: "string"}, - {Name: "integrationTag", Flag: "integration-tag", Type: "string"}, - {Name: "topic", Flag: "topic", Type: "string"}, - {Name: "format", Flag: "format", Type: "string"}, - {Name: "serviceType", Flag: "service-type", Type: "string"}, - {Name: "status", Flag: "status", Type: "string"}, - {Name: "timezone", Flag: "timezone", Type: "string"}, - }}, -} - -var MeetingsSiteGetMeetingCommonSettingsConfiguration = &Operation{ - ID: "MeetingsSiteGetMeetingCommonSettingsConfiguration", Area: "meetings", Group: "site", Command: "get-meeting-common-settings-configuration", - Summary: "Get Meeting Common Settings Configuration", - Description: "Site administrators can use this API to get a list of functions, options, and privileges that are configured for their Webex service sites.\n\n* If `siteUrl` is specified, common settings of the meeting's configuration of the specified site will be queried; otherwise, the API will query from the site administrator's preferred site. All available Webex sites and preferred site of the user can be retrieved by [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.", - Method: "GET", Path: "/admin/meeting/config/commonSettings", Host: HostWebex, - Params: []Param{ - {Name: "siteUrl", In: InQuery, Flag: "site-url", Usage: "URL of the Webex site which the API queries common settings of the meeting's configuration from. If not specified, the API will query from the site administrator's preferred site. All available Webex sites and the preferred site of the user can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API."}, - }, -} - -var MeetingsSiteUpdateMeetingCommonSettingsConfiguration = &Operation{ - ID: "MeetingsSiteUpdateMeetingCommonSettingsConfiguration", Area: "meetings", Group: "site", Command: "update-meeting-common-settings-configuration", - Summary: "Update Meeting Common Settings Configuration", - Description: "Site administrators can use this API to update the option of features, options and privileges that are configured for their WebEx service sites.", - Method: "PATCH", Path: "/admin/meeting/config/commonSettings", Host: HostWebex, - Body: &Body{}, -} - -var MeetingsSlidoListComplianceEvents = &Operation{ - ID: "MeetingsSlidoListComplianceEvents", Area: "meetings", Group: "slido", Command: "list-compliance-events", - Summary: "List Compliance Events", - Description: "Lists events representing actions that occurred during a Slido Secure Premium session (creating a poll, modifying a poll, activating a poll, posting an answer, etc.)\n\nEvents capture who performed the action and on what resource.\n\nThe events are paginated by the server into pages of max 256 items per page without any order.\n\nThe events are available within 15 minutes after they happened.\n\nEvery resource has properties:\n* type - event type\n\n* ... event specific ids\n\n* ... event specific properties\n", - Method: "GET", Path: "/slido/compliance/events", Host: HostWebex, - Params: []Param{ - {Name: "sessionOrgId", In: InQuery, Flag: "session-org-id", Usage: "Webex organization UUID."}, - {Name: "sessionId", In: InQuery, Flag: "session-id", Usage: "Webex meeting instance ID (`{meetingSeriesId}_I_{conferenceId}`)."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Pagination token. Returned in the response body as the `next` property."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var MeetingsVideoMeshListClustersAvailability = &Operation{ - ID: "MeetingsVideoMeshListClustersAvailability", Area: "meetings", Group: "video-mesh", Command: "list-clusters-availability", - Summary: "List Clusters Availability", - Description: "Returns the availability details for all Video Mesh clusters in an organization.", - Method: "GET", Path: "/videoMesh/clusters/availability", Host: HostWebex, - Params: []Param{ - {Name: "from", In: InQuery, Flag: "from", Usage: "The starting date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "The ending date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "The unique ID for the organization."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, - TimeRange: TimeISO, -} - -var MeetingsVideoMeshGetClusterAvailability = &Operation{ - ID: "MeetingsVideoMeshGetClusterAvailability", Area: "meetings", Group: "video-mesh", Command: "get-cluster-availability", - Summary: "Get Cluster Availability", - Description: "Returns the availability details of a single Video Mesh cluster in an organization.", - Method: "GET", Path: "/videoMesh/clusters/availability/{clusterId}", Host: HostWebex, - Params: []Param{ - {Name: "clusterId", In: InPath, Flag: "cluster-id", Usage: "The unique Video Mesh clusterID"}, - {Name: "from", In: InQuery, Flag: "from", Usage: "The starting date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "The ending date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format."}, - }, - TimeRange: TimeISO, -} - -var MeetingsVideoMeshListNodeAvailability = &Operation{ - ID: "MeetingsVideoMeshListNodeAvailability", Area: "meetings", Group: "video-mesh", Command: "list-node-availability", - Summary: "List Node Availability", - Description: "Returns the availability details of all nodes in a Video Mesh cluster.", - Method: "GET", Path: "/videoMesh/nodes/availability", Host: HostWebex, - Params: []Param{ - {Name: "from", In: InQuery, Flag: "from", Usage: "The starting date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "The ending date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format."}, - {Name: "clusterId", In: InQuery, Flag: "cluster-id", Usage: "The unique Video Mesh cluster ID."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, - TimeRange: TimeISO, -} - -var MeetingsVideoMeshGetNodeAvailability = &Operation{ - ID: "MeetingsVideoMeshGetNodeAvailability", Area: "meetings", Group: "video-mesh", Command: "get-node-availability", - Summary: "Get Node Availability", - Description: "Returns the availability details of a single node in a Video Mesh cluster.", - Method: "GET", Path: "/videoMesh/nodes/availability/{nodeId}", Host: HostWebex, - Params: []Param{ - {Name: "nodeId", In: InPath, Flag: "node-id", Usage: "The unique Video Mesh node ID."}, - {Name: "from", In: InQuery, Flag: "from", Usage: "The starting date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "The ending date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format."}, - }, - TimeRange: TimeISO, -} - -var MeetingsVideoMeshListMediaHealthMonitoringToolTestResultsV2 = &Operation{ - ID: "MeetingsVideoMeshListMediaHealthMonitoringToolTestResultsV2", Area: "meetings", Group: "video-mesh", Command: "list-media-health-monitoring-tool-test-results-v2", - Summary: "List Media Health Monitoring Tool Test results V2", - Description: "Returns the test results of the Media Health Monitoring Tool tests for an organization.\n\n
\n\nChanges in V2:\n\n
\n\nOn-demand test results can be obtained along with the periodic tests that are executed on Video Mesh nodes.", - Method: "GET", Path: "/videoMesh/testResults/mediaHealthMonitorTest", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Unique ID of the organization."}, - {Name: "triggerType", In: InQuery, Flag: "trigger-type", Usage: "Trigger type."}, - {Name: "from", In: InQuery, Flag: "from", Usage: "The start date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. The `from` parameter cannot have date and time values that exceed `to`."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "The end date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, - TimeRange: TimeISO, -} - -var MeetingsVideoMeshGetMediaHealthMonitoringToolTestResultsClustersV2 = &Operation{ - ID: "MeetingsVideoMeshGetMediaHealthMonitoringToolTestResultsClustersV2", Area: "meetings", Group: "video-mesh", Command: "get-media-health-monitoring-tool-test-results-clusters-v2", - Summary: "Get Media Health Monitoring Tool Test results for clusters V2", - Description: "Returns the test results of the Media Health Monitoring Tool tests for a single Video Mesh cluster.\n\n
\n\nChanges in V2:\n\n
\n\nOn-demand test results can be obtained along with the periodic tests that are executed on Video Mesh nodes.", - Method: "GET", Path: "/videoMesh/testResults/mediaHealthMonitorTest/clusters", Host: HostWebex, - Params: []Param{ - {Name: "clusterId", In: InQuery, Flag: "cluster-id", Usage: "Unique ID of the Video Mesh cluster."}, - {Name: "triggerType", In: InQuery, Flag: "trigger-type", Usage: "Trigger type."}, - {Name: "from", In: InQuery, Flag: "from", Usage: "The start date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. The `from` parameter cannot have date and time values that exceed `to`."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "The end date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format."}, - }, - TimeRange: TimeISO, -} - -var MeetingsVideoMeshGetMediaHealthMonitoringToolTestResultsNodeV2 = &Operation{ - ID: "MeetingsVideoMeshGetMediaHealthMonitoringToolTestResultsNodeV2", Area: "meetings", Group: "video-mesh", Command: "get-media-health-monitoring-tool-test-results-node-v2", - Summary: "Get Media Health Monitoring Tool Test results for node V2", - Description: "Returns the test results of the Media Health Monitoring Tool tests for a single Video Mesh node.\n\n
\n\nChanges in V2:\n\n
\n\nOn-demand test results can be obtained along with the periodic tests that are executed on Video Mesh nodes.", - Method: "GET", Path: "/videoMesh/testResults/mediaHealthMonitorTest/nodes", Host: HostWebex, - Params: []Param{ - {Name: "nodeId", In: InQuery, Flag: "node-id", Usage: "Unique ID of the Video Mesh node."}, - {Name: "triggerType", In: InQuery, Flag: "trigger-type", Usage: "Trigger type."}, - {Name: "from", In: InQuery, Flag: "from", Usage: "The start date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. The `from` parameter cannot have date and time values that exceed `to`."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "The end date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format."}, - }, - TimeRange: TimeISO, -} - -var MeetingsVideoMeshListOverflowCloud = &Operation{ - ID: "MeetingsVideoMeshListOverflowCloud", Area: "meetings", Group: "video-mesh", Command: "list-overflow-cloud", - Summary: "List Overflow to Cloud details", - Description: "Returns details of overflows to the cloud in an organization.", - Method: "GET", Path: "/videoMesh/cloudOverflow", Host: HostWebex, - Params: []Param{ - {Name: "from", In: InQuery, Flag: "from", Usage: "The starting date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "The ending date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "The unique Video Mesh organization ID."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, - TimeRange: TimeISO, -} - -var MeetingsVideoMeshListClusterRedirect = &Operation{ - ID: "MeetingsVideoMeshListClusterRedirect", Area: "meetings", Group: "video-mesh", Command: "list-cluster-redirect", - Summary: "List Cluster Redirect details", - Description: "Returns the redirect details of all Video Mesh clusters in an organization.", - Method: "GET", Path: "/videoMesh/callRedirects", Host: HostWebex, - Params: []Param{ - {Name: "from", In: InQuery, Flag: "from", Usage: "The starting date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "The ending date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "The unique Video Mesh organization ID."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, - TimeRange: TimeISO, -} - -var MeetingsVideoMeshGetClusterRedirect = &Operation{ - ID: "MeetingsVideoMeshGetClusterRedirect", Area: "meetings", Group: "video-mesh", Command: "get-cluster-redirect", - Summary: "Get Cluster Redirect details", - Description: "Returns details of cluster redirects for a single Video Mesh cluster.", - Method: "GET", Path: "/videoMesh/clusters/callRedirects", Host: HostWebex, - Params: []Param{ - {Name: "from", In: InQuery, Flag: "from", Usage: "The starting date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "The ending date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format."}, - {Name: "clusterId", In: InQuery, Flag: "cluster-id", Usage: "The unique Video Mesh Cluster ID."}, - }, - TimeRange: TimeISO, -} - -var MeetingsVideoMeshListClustersUtilization = &Operation{ - ID: "MeetingsVideoMeshListClustersUtilization", Area: "meetings", Group: "video-mesh", Command: "list-clusters-utilization", - Summary: "List Clusters Utilization", - Description: "Returns the utilization details of all Video Mesh clusters in an organization.", - Method: "GET", Path: "/videoMesh/utilization", Host: HostWebex, - Params: []Param{ - {Name: "from", In: InQuery, Flag: "from", Usage: "The starting date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "The ending date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "The unique ID for the organization."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, - TimeRange: TimeISO, -} - -var MeetingsVideoMeshGetClusterUtilization = &Operation{ - ID: "MeetingsVideoMeshGetClusterUtilization", Area: "meetings", Group: "video-mesh", Command: "get-cluster-utilization", - Summary: "Get Cluster Utilization details", - Description: "Returns the utilization details for a single Video Mesh cluster.", - Method: "GET", Path: "/videoMesh/clusters/utilization", Host: HostWebex, - Params: []Param{ - {Name: "from", In: InQuery, Flag: "from", Usage: "The starting date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "The ending date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format."}, - {Name: "clusterId", In: InQuery, Flag: "cluster-id", Usage: "The unique Video Mesh Cluster ID."}, - }, - TimeRange: TimeISO, -} - -var MeetingsVideoMeshListReachabilityTestResultsV2 = &Operation{ - ID: "MeetingsVideoMeshListReachabilityTestResultsV2", Area: "meetings", Group: "video-mesh", Command: "list-reachability-test-results-v2", - Summary: "List Reachability Test results V2", - Description: "Returns the test results of the Reachability tests for an organization.\n\n
\n\nChanges in V2:\n\n
\n\n1. On-demand test results can be obtained along with the periodic tests that are executed on Video Mesh nodes.\n\n
\n\n2. You can now view the destination IP address of the destination cluster in the JSON response.", - Method: "GET", Path: "/videoMesh/testResults/reachabilityTest", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Unique ID of the organization."}, - {Name: "triggerType", In: InQuery, Flag: "trigger-type", Usage: "Trigger type."}, - {Name: "from", In: InQuery, Flag: "from", Usage: "The start date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. The `from` parameter cannot have date and time values that exceed `to`."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "The end date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, - TimeRange: TimeISO, -} - -var MeetingsVideoMeshGetReachabilityTestResultsClusterV2 = &Operation{ - ID: "MeetingsVideoMeshGetReachabilityTestResultsClusterV2", Area: "meetings", Group: "video-mesh", Command: "get-reachability-test-results-cluster-v2", - Summary: "Get Reachability Test results for cluster V2", - Description: "Returns the test results of the Reachability tests for a single Video Mesh cluster.\n\n
\n\nChanges in V2:\n\n
\n\n1. On-demand test results can be obtained along with the periodic tests that are executed on Video Mesh nodes.\n\n
\n\n2. You can now view the destination IP address of the destination cluster in the JSON response.", - Method: "GET", Path: "/videoMesh/testResults/reachabilityTest/clusters", Host: HostWebex, - Params: []Param{ - {Name: "clusterId", In: InQuery, Flag: "cluster-id", Usage: "Unique ID of the Video Mesh cluster."}, - {Name: "triggerType", In: InQuery, Flag: "trigger-type", Usage: "Trigger type."}, - {Name: "from", In: InQuery, Flag: "from", Usage: "The start date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. The `from` parameter cannot have date and time values that exceed `to`."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "The end date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format."}, - }, - TimeRange: TimeISO, -} - -var MeetingsVideoMeshGetReachabilityTestResultsNodeV2 = &Operation{ - ID: "MeetingsVideoMeshGetReachabilityTestResultsNodeV2", Area: "meetings", Group: "video-mesh", Command: "get-reachability-test-results-node-v2", - Summary: "Get Reachability Test results for node V2", - Description: "Returns the test results of the Reachability tests for a single Video Mesh node.\n\n
\n\nChanges in V2:\n\n
\n\n1. On-demand test results can be obtained along with the periodic tests that are executed on Video Mesh nodes.\n\n
\n\n2. You can now view the destination IP address of the destination cluster in the JSON response.", - Method: "GET", Path: "/videoMesh/testResults/reachabilityTest/nodes", Host: HostWebex, - Params: []Param{ - {Name: "nodeId", In: InQuery, Flag: "node-id", Usage: "Unique ID of the Video Mesh node."}, - {Name: "triggerType", In: InQuery, Flag: "trigger-type", Usage: "Trigger type."}, - {Name: "from", In: InQuery, Flag: "from", Usage: "The start date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. The `from` parameter cannot have date and time values that exceed `to`."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "The end date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format."}, - }, - TimeRange: TimeISO, -} - -var MeetingsVideoMeshListCluster = &Operation{ - ID: "MeetingsVideoMeshListCluster", Area: "meetings", Group: "video-mesh", Command: "list-cluster", - Summary: "List Cluster Details", - Description: "Returns the cluster details of all Video Mesh clusters in an organization.", - Method: "GET", Path: "/videoMesh/clusters", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "The unique ID for the organization."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var MeetingsVideoMeshGetCluster = &Operation{ - ID: "MeetingsVideoMeshGetCluster", Area: "meetings", Group: "video-mesh", Command: "get-cluster", - Summary: "Get Cluster Details", - Description: "Returns the cluster details for a single Video Mesh cluster.", - Method: "GET", Path: "/videoMesh/clusters/{clusterId}", Host: HostWebex, - Params: []Param{ - {Name: "clusterId", In: InPath, Flag: "cluster-id", Usage: "The unique Video Mesh Cluster ID."}, - }, -} - -var MeetingsVideoMeshTriggerOnDemandTestCluster = &Operation{ - ID: "MeetingsVideoMeshTriggerOnDemandTestCluster", Area: "meetings", Group: "video-mesh", Command: "trigger-on-demand-test-cluster", - Summary: "Trigger on-demand test for cluster", - Description: "Triggers an on-demand test for a cluster.\nThe test is run on a maximum of 10 nodes present in the cluster, chosen at random, or based on input from the user.", - Method: "POST", Path: "/videoMesh/triggerTest/clusters/{clusterId}", Host: HostWebex, - Params: []Param{ - {Name: "clusterId", In: InPath, Flag: "cluster-id", Usage: "Unique ID of the Video Mesh cluster."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "type", Flag: "type", Type: "string"}, - {Name: "nodes", Flag: "nodes", Type: "[]string"}, - }}, -} - -var MeetingsVideoMeshTriggerOnDemandTestNode = &Operation{ - ID: "MeetingsVideoMeshTriggerOnDemandTestNode", Area: "meetings", Group: "video-mesh", Command: "trigger-on-demand-test-node", - Summary: "Trigger on-demand test for node", - Description: "Triggers an on-demand test for a node.", - Method: "POST", Path: "/videoMesh/triggerTest/nodes/{nodeId}", Host: HostWebex, - Params: []Param{ - {Name: "nodeId", In: InPath, Flag: "node-id", Usage: "Unique ID of the Video Mesh node."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "type", Flag: "type", Type: "string"}, - }}, -} - -var MeetingsVideoMeshGetTriggeredTestStatus = &Operation{ - ID: "MeetingsVideoMeshGetTriggeredTestStatus", Area: "meetings", Group: "video-mesh", Command: "get-triggered-test-status", - Summary: "Get Triggered test status", - Description: "Returns the status of the test triggered using the Trigger on-demand test API.", - Method: "GET", Path: "/videoMesh/testStatus", Host: HostWebex, - Params: []Param{ - {Name: "commandId", In: InQuery, Flag: "command-id", Usage: "The unique command ID generated from Trigger on-demand test API."}, - }, -} - -var MeetingsVideoMeshGetTriggeredTestResults = &Operation{ - ID: "MeetingsVideoMeshGetTriggeredTestResults", Area: "meetings", Group: "video-mesh", Command: "get-triggered-test-results", - Summary: "Get Triggered test results", - Description: "Returns the results of the test triggered using the command ID.
\nNOTE: The response format depends on the type of test triggered and it is the same as that of [NetworkTest API](/docs/api/v1/video-mesh/list-network-test-results), [MediaHealthMonitorTest API](/docs/api/v1/video-mesh/list-media-health-monitoring-tool-test-results-v2), and [ReachabilityTest API](/docs/api/v1/video-mesh/list-reachability-test-results-v2) respectively.", - Method: "GET", Path: "/videoMesh/testResults", Host: HostWebex, - Params: []Param{ - {Name: "commandId", In: InQuery, Flag: "command-id", Usage: "The unique command ID generated from Trigger on-demand test API."}, - }, -} - -var MeetingsVideoMeshListNetworkTestResults = &Operation{ - ID: "MeetingsVideoMeshListNetworkTestResults", Area: "meetings", Group: "video-mesh", Command: "list-network-test-results", - Summary: "List Network Test results", - Description: "Returns the test results of the Network tests triggered for an organization. The tests listed below are run as a part of the Network Test execution on the node.\n\nBandwidth Test - Tests the bandwidth parameters of the Video Mesh node's network. The test is run between the Video Mesh node and cloud services.
\nDNS Resolution Test - Tests the resolution of IP addresses related to cloud services, against the DNS servers configured on the Video Mesh node's network.
\nHTTPS Connectivity Test - Tests whether the Video Mesh node is able to connect to cloud services via HTTPS protocol.
\nWebsocket Connectivity Test - Tests whether the Video Mesh node is able to connect to Webex cloud services via Websocket.
", - Method: "GET", Path: "/videoMesh/testResults/networkTest", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Unique ID of the organization."}, - {Name: "triggerType", In: InQuery, Flag: "trigger-type", Usage: "Trigger type."}, - {Name: "from", In: InQuery, Flag: "from", Usage: "The start date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. The `from` parameter cannot have date and time values that exceed `to`."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "The end date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, - TimeRange: TimeISO, -} - -var MeetingsVideoMeshGetNetworkTestResultsCluster = &Operation{ - ID: "MeetingsVideoMeshGetNetworkTestResultsCluster", Area: "meetings", Group: "video-mesh", Command: "get-network-test-results-cluster", - Summary: "Get Network Test results for cluster", - Description: "Returns the test results of the Network tests triggered for a single Video Mesh cluster. The tests listed below are run as a part of the Network Test execution on the node.\n\nBandwidth Test - Tests the bandwidth parameters of the Video Mesh node's network. The test is run between the Video Mesh node and cloud services.
\nDNS Resolution Test - Tests the resolution of IP addresses related to cloud services, against the DNS servers configured on the Video Mesh node's network.
\nHTTPS Connectivity Test - Tests whether the Video Mesh node is able to connect to cloud services via HTTPS protocol.
\nWebsocket Connectivity Test - Tests whether the Video Mesh node is able to connect to Webex cloud services via Websocket.
", - Method: "GET", Path: "/videoMesh/testResults/networkTest/clusters", Host: HostWebex, - Params: []Param{ - {Name: "clusterId", In: InQuery, Flag: "cluster-id", Usage: "Unique ID of the Video Mesh cluster."}, - {Name: "triggerType", In: InQuery, Flag: "trigger-type", Usage: "Trigger type."}, - {Name: "from", In: InQuery, Flag: "from", Usage: "The start date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. The `from` parameter cannot have date and time values that exceed `to`."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "The end date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format."}, - }, - TimeRange: TimeISO, -} - -var MeetingsVideoMeshGetNetworkTestResultsNode = &Operation{ - ID: "MeetingsVideoMeshGetNetworkTestResultsNode", Area: "meetings", Group: "video-mesh", Command: "get-network-test-results-node", - Summary: "Get Network Test results for node", - Description: "Returns the test results of the Network tests triggered for a single Video Mesh node. The tests listed below are run as a part of the Network Test execution on the node.\n\nBandwidth Test - Tests the bandwidth parameters of the Video Mesh node's network. The test is run between the Video Mesh node and cloud services.
\nDNS Resolution Test - Tests the resolution of IP addresses related to cloud services, against the DNS servers configured on the Video Mesh node's network.
\nHTTPS Connectivity Test - Tests whether the Video Mesh node is able to connect to cloud services via HTTPS protocol.
\nWebsocket Connectivity Test - Tests whether the Video Mesh node is able to connect to Webex cloud services via Websocket.
", - Method: "GET", Path: "/videoMesh/testResults/networkTest/nodes", Host: HostWebex, - Params: []Param{ - {Name: "nodeId", In: InQuery, Flag: "node-id", Usage: "Unique ID of the Video Mesh node."}, - {Name: "triggerType", In: InQuery, Flag: "trigger-type", Usage: "Trigger type."}, - {Name: "from", In: InQuery, Flag: "from", Usage: "The start date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. The `from` parameter cannot have date and time values that exceed `to`."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "The end date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format."}, - }, - TimeRange: TimeISO, -} - -var MeetingsVideoMeshListClusterClientTypeDistribution = &Operation{ - ID: "MeetingsVideoMeshListClusterClientTypeDistribution", Area: "meetings", Group: "video-mesh", Command: "list-cluster-client-type-distribution", - Summary: "List Cluster Client Type Distribution details", - Description: "Returns the client type distribution details for all Video Mesh clusters in an organization.", - Method: "GET", Path: "/videoMesh/clientTypeDistribution", Host: HostWebex, - Params: []Param{ - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Unique ID of the organization."}, - {Name: "from", In: InQuery, Flag: "from", Usage: "The start date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. The `from` parameter cannot have date and time values that exceed `to`."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "The end date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format."}, - {Name: "deviceType", In: InQuery, Flag: "device-type", Usage: "Device type(s).\n\n- Possible values:\n `webexDevices` `webexAppVdi` `webexForMobile` `sipEndpoint` `webexForDesktop`"}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, - TimeRange: TimeISO, -} - -var MeetingsVideoMeshGetClusterClientTypeDistribution = &Operation{ - ID: "MeetingsVideoMeshGetClusterClientTypeDistribution", Area: "meetings", Group: "video-mesh", Command: "get-cluster-client-type-distribution", - Summary: "Get Cluster Client Type Distribution details", - Description: "Returns the client type distribution details for a single Video Mesh cluster.", - Method: "GET", Path: "/videoMesh/clientTypeDistribution/clusters", Host: HostWebex, - Params: []Param{ - {Name: "clusterId", In: InQuery, Flag: "cluster-id", Usage: "Unique ID of the Video Mesh cluster."}, - {Name: "from", In: InQuery, Flag: "from", Usage: "The start date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. The `from` parameter cannot have date and time values that exceed `to`."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "The end date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format."}, - {Name: "deviceType", In: InQuery, Flag: "device-type", Usage: "Device type(s).\n\n- Possible values:\n `webexDevices` `webexAppVdi` `webexForMobile` `sipEndpoint` `webexForDesktop`"}, - }, - TimeRange: TimeISO, -} - -var MeetingsVideoMeshListEventThresholdConfiguration = &Operation{ - ID: "MeetingsVideoMeshListEventThresholdConfiguration", Area: "meetings", Group: "video-mesh", Command: "list-event-threshold-configuration", - Summary: "List Event Threshold Configuration", - Description: "Returns the event threshold configurations for `orgId` or `clusterId`, with optional filters `eventName` and `eventScope`.", - Method: "GET", Path: "/videoMesh/eventThresholds", Host: HostWebex, - Params: []Param{ - {Name: "eventName", In: InQuery, Flag: "event-name", Usage: "Event name to fetch threshold details."}, - {Name: "clusterId", In: InQuery, Flag: "cluster-id", Usage: "Unique ID of the Video Mesh Cluster."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "Unique ID of the Organization."}, - {Name: "eventScope", In: InQuery, Flag: "event-scope", Usage: "Scope name to filter events."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var MeetingsVideoMeshUpdateEventThresholdConfiguration = &Operation{ - ID: "MeetingsVideoMeshUpdateEventThresholdConfiguration", Area: "meetings", Group: "video-mesh", Command: "update-event-threshold-configuration", - Summary: "Update Event Threshold Configuration", - Description: "Updates an existing event threshold configuration for given Event Threshold IDs.", - Method: "PATCH", Path: "/videoMesh/eventThresholds", Host: HostWebex, - Body: &Body{}, -} - -var MeetingsVideoMeshGetEventThresholdConfiguration = &Operation{ - ID: "MeetingsVideoMeshGetEventThresholdConfiguration", Area: "meetings", Group: "video-mesh", Command: "get-event-threshold-configuration", - Summary: "Get Event Threshold Configuration", - Description: "Returns the event threshold configurations for `eventThresholdId`.", - Method: "GET", Path: "/videoMesh/eventThresholds/{eventThresholdId}", Host: HostWebex, - Params: []Param{ - {Name: "eventThresholdId", In: InPath, Flag: "event-threshold-id", Usage: "Unique ID of the event threshold configuration."}, - }, -} - -var MeetingsVideoMeshResetEventThresholdConfiguration = &Operation{ - ID: "MeetingsVideoMeshResetEventThresholdConfiguration", Area: "meetings", Group: "video-mesh", Command: "reset-event-threshold-configuration", - Summary: "Reset Event Threshold Configuration", - Description: "Resets the existing event threshold configuration for given Event Threshold IDs to default value. To stop receiving webhook events, use the [Webhooks API](docs/api/v1/webhooks) to delete the webhook in question.", - Method: "POST", Path: "/videoMesh/eventThresholds/reset", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "eventThresholdIds", Flag: "event-threshold-ids", Type: "[]string"}, - }}, -} - -var MeetingsWebhooksList = &Operation{ - ID: "MeetingsWebhooksList", Area: "meetings", Group: "webhooks", Command: "list", - Summary: "List Webhooks", - Description: "List all of your webhooks.", - Method: "GET", Path: "/webhooks", Host: HostWebex, - Params: []Param{ - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the maximum number of webhooks in the response."}, - {Name: "ownedBy", In: InQuery, Flag: "owned-by", Usage: "Limit the result list to org wide webhooks. Only allowed value is `org`."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, -} - -var MeetingsWebhooksCreate = &Operation{ - ID: "MeetingsWebhooksCreate", Area: "meetings", Group: "webhooks", Command: "create", - Summary: "Create a Webhook", - Description: "Creates a webhook.\n\nTo learn more about how to create and use webhooks, see The [Webhooks Guide](/docs/api/guides/webhooks).", - Method: "POST", Path: "/webhooks", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "name", Flag: "name", Type: "string"}, - {Name: "targetUrl", Flag: "target-url", Type: "string"}, - {Name: "resource", Flag: "resource", Type: "string"}, - {Name: "event", Flag: "event", Type: "string"}, - {Name: "filter", Flag: "filter", Type: "string"}, - {Name: "secret", Flag: "secret", Type: "string"}, - {Name: "ownedBy", Flag: "owned-by", Type: "string"}, - }}, -} - -var MeetingsWebhooksGet = &Operation{ - ID: "MeetingsWebhooksGet", Area: "meetings", Group: "webhooks", Command: "get", - Summary: "Get Webhook Details", - Description: "Shows details for a webhook, by ID.\n\nSpecify the webhook ID in the `webhookId` parameter in the URI.", - Method: "GET", Path: "/webhooks/{webhookId}", Host: HostWebex, - Params: []Param{ - {Name: "webhookId", In: InPath, Flag: "webhook-id", Usage: "The unique identifier for the webhook."}, - }, -} - -var MeetingsWebhooksUpdate = &Operation{ - ID: "MeetingsWebhooksUpdate", Area: "meetings", Group: "webhooks", Command: "update", - Summary: "Update a Webhook", - Description: "Updates a webhook, by ID. You cannot use this call to deactivate a webhook, only to activate a webhook that was auto deactivated.\nThe fields that can be updated are `name`, `targetURL`, `secret` and `status`. All other fields, if supplied, are ignored.\n\nSpecify the webhook ID in the `webhookId` parameter in the URI.", - Method: "PUT", Path: "/webhooks/{webhookId}", Host: HostWebex, - Params: []Param{ - {Name: "webhookId", In: InPath, Flag: "webhook-id", Usage: "The unique identifier for the webhook."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "name", Flag: "name", Type: "string"}, - {Name: "targetUrl", Flag: "target-url", Type: "string"}, - {Name: "secret", Flag: "secret", Type: "string"}, - {Name: "ownedBy", Flag: "owned-by", Type: "string"}, - {Name: "status", Flag: "status", Type: "string"}, - }}, -} - -var MeetingsWebhooksDelete = &Operation{ - ID: "MeetingsWebhooksDelete", Area: "meetings", Group: "webhooks", Command: "delete", - Summary: "Delete a Webhook", - Description: "Deletes a webhook, by ID.\n\nSpecify the webhook ID in the `webhookId` parameter in the URI.", - Method: "DELETE", Path: "/webhooks/{webhookId}", Host: HostWebex, - Params: []Param{ - {Name: "webhookId", In: InPath, Flag: "webhook-id", Usage: "The unique identifier for the webhook."}, - }, -} - -var MeetingsSummariesGetMeetingId = &Operation{ - ID: "MeetingsSummariesGetMeetingId", Area: "meetings", Group: "summaries", Command: "get-meeting-id", - Summary: "Get Summary by Meeting ID", - Description: "Get the summary of an ended [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) by the meeting ID.\n\nPlease note that only **meeting instances** in state `ended` are supported, and currently the meeting ID of a meeting series, a scheduled meeting, an in-progress meeting instance, or a scheduled personal room meeting is not supported for this API. This API can only fetch summaries that you have access to, and if a meeting summary is deleted, you won't be able to see it either. And, this is an API for normal user. If you are a compliance officer, please use the Get Summary For Compliance Officer API", - Method: "GET", Path: "/meetingSummaries", Host: HostWebex, - Params: []Param{ - {Name: "meetingId", In: InQuery, Flag: "meeting-id", Usage: "Unique identifier for the [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) to which the summary belongs. Please note that currently the meeting ID of a meeting series, a scheduled meeting, an in-progress meeting instance, or a scheduled personal room meeting is not supported for this API. If `meetingId` is not specified, the query will be rejected."}, - }, -} - -var MeetingsSummariesGetComplianceOfficer = &Operation{ - ID: "MeetingsSummariesGetComplianceOfficer", Area: "meetings", Group: "summaries", Command: "get-compliance-officer", - Summary: "Get Summary For Compliance Officer", - Description: "Lists available or deleted summaries of an ended [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) by meeting ID. This API can only be accessed by compliance officers. With this API, a compliance officer can list summaries of any ended meeting instances in his organization including available and deleted summaries", - Method: "GET", Path: "/admin/meetingSummaries", Host: HostWebex, - Params: []Param{ - {Name: "meetingId", In: InQuery, Flag: "meeting-id", Usage: "Unique identifier for the [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) to which the summary belongs. Please note that currently the meeting ID of a meeting series, a scheduled meeting, an in-progress meeting instance, or a scheduled personal room meeting is not supported for this API. If `meetingId` is not specified, the query will be rejected."}, - }, -} - -var MeetingsSummariesDelete = &Operation{ - ID: "MeetingsSummariesDelete", Area: "meetings", Group: "summaries", Command: "delete", - Summary: "Delete a Summary", - Description: "Removes a summary with a specified summary ID. The deleted summary cannot be recovered. A deleted summary can not be accessed by regular users, i.e. host or attendees, but can be access by compliance officers", - Method: "DELETE", Path: "/meetingSummaries/{summaryId}", Host: HostWebex, - Params: []Param{ - {Name: "summaryId", In: InPath, Flag: "summary-id", Usage: "Unique identifier for the meeting summary."}, - }, -} - -var MeetingsSlidosecurepremiumListComplianceEvents = &Operation{ - ID: "MeetingsSlidosecurepremiumListComplianceEvents", Area: "meetings", Group: "slidosecurepremium", Command: "list-compliance-events", - Summary: "List Compliance Events", - Description: "Lists events representing actions that occurred during a Slido Secure Premium session (creating a poll, modifying a poll, activating a poll, posting an answer, etc.)\n\nEvents capture who performed the action and on what resource.\n\nThe events are paginated by the server into pages of max 256 items per page without any order.\n\nThe events are available within 15 minutes after they happened.\n\nEvery resource has properties:\n* type - event type\n\n* ... event specific ids\n\n* ... event specific properties\n", - Method: "GET", Path: "/slido/compliance/events", Host: HostWebex, - Params: []Param{ - {Name: "sessionOrgId", In: InQuery, Flag: "session-org-id", Usage: "Webex organization UUID."}, - {Name: "sessionId", In: InQuery, Flag: "session-id", Usage: "Webex meeting instance ID (`{meetingSeriesId}_I_{conferenceId}`)."}, - {Name: "start", In: InQuery, Flag: "start", Usage: "Pagination token. Returned in the response body as the `next` property."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var meetingsGroups = []Group{ - {Name: "chats", Summary: "Chats commands"}, - {Name: "closed-captions", Summary: "ClosedCaptions commands"}, - {Name: "invitees", Summary: "Invitees commands"}, - {Name: "messages", Summary: "Messages commands"}, - {Name: "participants", Summary: "Participants commands"}, - {Name: "meeting-polls", Summary: "MeetingPolls commands"}, - {Name: "preferences", Summary: "Preferences commands"}, - {Name: "meeting-qa", Summary: "MeetingQa commands"}, - {Name: "meeting-qualities", Summary: "MeetingQualities commands"}, - {Name: "session-types", Summary: "SessionTypes commands"}, - {Name: "transcripts", Summary: "Transcripts commands"}, - {Name: "meeting-summary", Summary: "MeetingSummary commands"}, - {Name: "meetings", Summary: "Meetings commands"}, - {Name: "tracking-codes", Summary: "TrackingCodes commands"}, - {Name: "people", Summary: "People commands"}, - {Name: "recording-report", Summary: "RecordingReport commands"}, - {Name: "recordings", Summary: "Recordings commands"}, - {Name: "site", Summary: "Site commands"}, - {Name: "slido", Summary: "Slido commands"}, - {Name: "video-mesh", Summary: "VideoMesh commands"}, - {Name: "webhooks", Summary: "Webhooks commands"}, - {Name: "summaries", Summary: "Summaries commands"}, - {Name: "slidosecurepremium", Summary: "Slidosecurepremium commands"}, -} - -var meetingsOperations = []*Operation{ - MeetingsChatsListMeeting, - MeetingsChatsDeleteMeeting, - MeetingsClosedCaptionsListMeeting, - MeetingsClosedCaptionsListMeetingSnippets, - MeetingsClosedCaptionsDownloadMeetingSnippets, - MeetingsInviteesListMeeting, - MeetingsInviteesCreateMeeting, - MeetingsInviteesCreateMeeting2, - MeetingsInviteesGetMeeting, - MeetingsInviteesUpdateMeeting, - MeetingsInviteesDeleteMeeting, - MeetingsMessagesDeleteMeeting, - MeetingsParticipantsListMeeting, - MeetingsParticipantsQueryMeetingEmail, - MeetingsParticipantsGetMeeting, - MeetingsParticipantsUpdate, - MeetingsParticipantsAdmit, - MeetingsParticipantsCallOutSip, - MeetingsParticipantsCancelCallingOutSip, - MeetingsMeetingPollsList, - MeetingsMeetingPollsGetPollresults, - MeetingsMeetingPollsListRespondentsQuestion, - MeetingsPreferencesGetMeeting, - MeetingsPreferencesGetPersonalMeetingRoomOptions, - MeetingsPreferencesUpdatePersonalMeetingRoomOptions, - MeetingsPreferencesGetAudioOptions, - MeetingsPreferencesUpdateAudioOptions, - MeetingsPreferencesGetVideoOptions, - MeetingsPreferencesUpdateVideoOptions, - MeetingsPreferencesGetSchedulingOptions, - MeetingsPreferencesUpdateSchedulingOptions, - MeetingsPreferencesInsertDelegateEmails, - MeetingsPreferencesDeleteDelegateEmails, - MeetingsPreferencesGetSiteList, - MeetingsPreferencesUpdateDefaultSite, - MeetingsPreferencesBatchRefreshPersonalMeetingRoomId, - MeetingsMeetingQaListQ, - MeetingsMeetingQaListAnswersQuestion, - MeetingsMeetingQualitiesGet, - MeetingsSessionTypesListSite, - MeetingsSessionTypesListUser, - MeetingsSessionTypesUpdateUser, - MeetingsTranscriptsListMeeting, - MeetingsTranscriptsListMeetingComplianceOfficer, - MeetingsTranscriptsDownloadMeeting, - MeetingsTranscriptsListSnippetsMeeting, - MeetingsTranscriptsGetSnippet, - MeetingsTranscriptsUpdateSnippet, - MeetingsTranscriptsDelete, - MeetingsMeetingSummaryListUsageReports, - MeetingsMeetingSummaryListAttendeeReports, - MeetingsMeetingsGetAdmin, - MeetingsMeetingsListAdmin, - MeetingsMeetingsCreate, - MeetingsMeetingsList, - MeetingsMeetingsGet, - MeetingsMeetingsPatch, - MeetingsMeetingsUpdate, - MeetingsMeetingsDelete, - MeetingsMeetingsJoin, - MeetingsMeetingsListTemplates, - MeetingsMeetingsGetTemplate, - MeetingsMeetingsGetControlStatus, - MeetingsMeetingsUpdateControlStatus, - MeetingsMeetingsListSessionTypes, - MeetingsMeetingsGetSessionType, - MeetingsMeetingsGetRegistrationForm, - MeetingsMeetingsUpdateRegistrationForm, - MeetingsMeetingsDeleteRegistrationForm, - MeetingsMeetingsRegisterRegistrant, - MeetingsMeetingsListRegistrants, - MeetingsMeetingsBatchRegisterRegistrants, - MeetingsMeetingsGetDetailedInformationRegistrant, - MeetingsMeetingsDeleteRegistrant, - MeetingsMeetingsQueryRegistrants, - MeetingsMeetingsBatchUpdateRegistrantsStatus, - MeetingsMeetingsUpdateSimultaneousInterpretation, - MeetingsMeetingsCreateInterpreter, - MeetingsMeetingsListInterpreters, - MeetingsMeetingsGetInterpreter, - MeetingsMeetingsUpdateInterpreter, - MeetingsMeetingsDeleteInterpreter, - MeetingsMeetingsListBreakoutSessions, - MeetingsMeetingsUpdateBreakoutSessions, - MeetingsMeetingsDeleteBreakoutSessions, - MeetingsMeetingsGetSurvey, - MeetingsMeetingsListSurveyResults, - MeetingsMeetingsGetSurveyLinks, - MeetingsMeetingsCreateInvitationSources, - MeetingsMeetingsListInvitationSources, - MeetingsMeetingsListTrackingCodes, - MeetingsMeetingsReassignHost, - MeetingsMeetingsEnd, - MeetingsMeetingsBatchApproveRegistrants, - MeetingsMeetingsBatchRejectRegistrants, - MeetingsMeetingsBatchCancelRegistrants, - MeetingsMeetingsBatchDeleteRegistrants, - MeetingsMeetingsListGroup, - MeetingsMeetingsPatchGroup, - MeetingsMeetingsUpdateGroupControlStatus, - MeetingsTrackingCodesList, - MeetingsTrackingCodesCreate, - MeetingsTrackingCodesGet, - MeetingsTrackingCodesUpdate, - MeetingsTrackingCodesDelete, - MeetingsTrackingCodesGetUser, - MeetingsTrackingCodesUpdateUser, - MeetingsPeopleList, - MeetingsPeopleCreatePerson, - MeetingsPeopleGetPerson, - MeetingsPeopleUpdatePerson, - MeetingsPeopleDeletePerson, - MeetingsPeopleGetMyOwn, - MeetingsRecordingReportListAuditSummaries, - MeetingsRecordingReportGetAudit, - MeetingsRecordingReportListMeetingArchiveSummaries, - MeetingsRecordingReportGetMeetingArchive, - MeetingsRecordingsList, - MeetingsRecordingsListAdminComplianceOfficer, - MeetingsRecordingsDeleteAdmin, - MeetingsRecordingsGet, - MeetingsRecordingsDelete, - MeetingsRecordingsMoveRecycleBin, - MeetingsRecordingsRestoreRecycleBin, - MeetingsRecordingsPurgeRecycleBin, - MeetingsRecordingsShare, - MeetingsRecordingsListGroup, - MeetingsRecordingsGetGroup, - MeetingsRecordingsShareLink, - MeetingsRecordingsQuery, - MeetingsRecordingsQueryAdminComplianceOfficer, - MeetingsSiteGetMeetingCommonSettingsConfiguration, - MeetingsSiteUpdateMeetingCommonSettingsConfiguration, - MeetingsSlidoListComplianceEvents, - MeetingsVideoMeshListClustersAvailability, - MeetingsVideoMeshGetClusterAvailability, - MeetingsVideoMeshListNodeAvailability, - MeetingsVideoMeshGetNodeAvailability, - MeetingsVideoMeshListMediaHealthMonitoringToolTestResultsV2, - MeetingsVideoMeshGetMediaHealthMonitoringToolTestResultsClustersV2, - MeetingsVideoMeshGetMediaHealthMonitoringToolTestResultsNodeV2, - MeetingsVideoMeshListOverflowCloud, - MeetingsVideoMeshListClusterRedirect, - MeetingsVideoMeshGetClusterRedirect, - MeetingsVideoMeshListClustersUtilization, - MeetingsVideoMeshGetClusterUtilization, - MeetingsVideoMeshListReachabilityTestResultsV2, - MeetingsVideoMeshGetReachabilityTestResultsClusterV2, - MeetingsVideoMeshGetReachabilityTestResultsNodeV2, - MeetingsVideoMeshListCluster, - MeetingsVideoMeshGetCluster, - MeetingsVideoMeshTriggerOnDemandTestCluster, - MeetingsVideoMeshTriggerOnDemandTestNode, - MeetingsVideoMeshGetTriggeredTestStatus, - MeetingsVideoMeshGetTriggeredTestResults, - MeetingsVideoMeshListNetworkTestResults, - MeetingsVideoMeshGetNetworkTestResultsCluster, - MeetingsVideoMeshGetNetworkTestResultsNode, - MeetingsVideoMeshListClusterClientTypeDistribution, - MeetingsVideoMeshGetClusterClientTypeDistribution, - MeetingsVideoMeshListEventThresholdConfiguration, - MeetingsVideoMeshUpdateEventThresholdConfiguration, - MeetingsVideoMeshGetEventThresholdConfiguration, - MeetingsVideoMeshResetEventThresholdConfiguration, - MeetingsWebhooksList, - MeetingsWebhooksCreate, - MeetingsWebhooksGet, - MeetingsWebhooksUpdate, - MeetingsWebhooksDelete, - MeetingsSummariesGetMeetingId, - MeetingsSummariesGetComplianceOfficer, - MeetingsSummariesDelete, - MeetingsSlidosecurepremiumListComplianceEvents, -} diff --git a/pkg/webexops/zz_messaging.go b/pkg/webexops/zz_messaging.go deleted file mode 100644 index 35ba004..0000000 --- a/pkg/webexops/zz_messaging.go +++ /dev/null @@ -1,874 +0,0 @@ -// Code generated by codegen/generate_cli.py; DO NOT EDIT. - -package webexops - -var MessagingAttachmentActionsCreate = &Operation{ - ID: "MessagingAttachmentActionsCreate", Area: "messaging", Group: "attachment-actions", Command: "create", - Summary: "Create an Attachment Action", - Description: "Create a new attachment action.", - Method: "POST", Path: "/attachment/actions", Host: HostWebex, - Body: &Body{}, -} - -var MessagingAttachmentActionsGet = &Operation{ - ID: "MessagingAttachmentActionsGet", Area: "messaging", Group: "attachment-actions", Command: "get", - Summary: "Get Attachment Action Details", - Description: "Shows details for a attachment action, by ID.\n\nSpecify the attachment action ID in the `id` URI parameter.", - Method: "GET", Path: "/attachment/actions/{id}", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "A unique identifier for the attachment action."}, - }, -} - -var MessagingEcmFolderLinkingList = &Operation{ - ID: "MessagingEcmFolderLinkingList", Area: "messaging", Group: "ecm-folder-linking", Command: "list", - Summary: "List ECM folder", - Description: "Lists the ECM folder of a room specified by the `roomId` query parameter.", - Method: "GET", Path: "/room/linkedFolders", Host: HostWebex, - Params: []Param{ - {Name: "roomId", In: InQuery, Flag: "room-id", Usage: "ID of the room for which to list the ECM folder."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var MessagingEcmFolderLinkingCreateConfiguration = &Operation{ - ID: "MessagingEcmFolderLinkingCreateConfiguration", Area: "messaging", Group: "ecm-folder-linking", Command: "create-configuration", - Summary: "Create an ECM folder configuration", - Description: "Adds an existing ECM folder to a room as (default or reference) file storage. There is no data validation happening for the request. Please ensure the correct `driveId` and `itemId.` These can be collected from the MS Graph API. The `contentUrl` and `displayName` are used only for user convenience. The folder will be configured with the MS folder name as `displayName`, and the `contentURL` may be updated or corrected as needed. To assess final configuration, please make a GET request on the linkedFolder.", - Method: "POST", Path: "/room/linkedFolders", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "roomId", Flag: "room-id", Type: "string"}, - {Name: "contentUrl", Flag: "content-url", Type: "string"}, - {Name: "displayName", Flag: "display-name", Type: "string"}, - {Name: "driveId", Flag: "drive-id", Type: "string"}, - {Name: "itemId", Flag: "item-id", Type: "string"}, - {Name: "defaultFolder", Flag: "default-folder", Type: "string"}, - }}, -} - -var MessagingEcmFolderLinkingGet = &Operation{ - ID: "MessagingEcmFolderLinkingGet", Area: "messaging", Group: "ecm-folder-linking", Command: "get", - Summary: "Get ECM Folder Details", - Description: "Get details for a room ECM folder with the specified folder id.", - Method: "GET", Path: "/room/linkedFolders/{id}", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "The unique identifier for the folder."}, - }, -} - -var MessagingEcmFolderLinkingUpdateLinked = &Operation{ - ID: "MessagingEcmFolderLinkingUpdateLinked", Area: "messaging", Group: "ecm-folder-linking", Command: "update-linked", - Summary: "Update an ECM Linked Folder", - Description: "Updates the configuration of the specified Room folder. There is no data validation happening for the request. Please ensure the correct `driveId` and `itemId.` These can be collected from the MS Graph API. The `contentUrl` and `displayName` are used only for user convenience. The folder will be configured with the MS folder name as `displayName`, and the `contentURL` may be updated or corrected as needed. To assess final configuration, please make a GET request on the linkedFolder.", - Method: "PUT", Path: "/room/linkedFolders/{id}", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "The unique identifier for the room folder."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "roomId", Flag: "room-id", Type: "string"}, - {Name: "contentUrl", Flag: "content-url", Type: "string"}, - {Name: "displayName", Flag: "display-name", Type: "string"}, - {Name: "driveId", Flag: "drive-id", Type: "string"}, - {Name: "itemId", Flag: "item-id", Type: "string"}, - {Name: "defaultFolder", Flag: "default-folder", Type: "string"}, - }}, -} - -var MessagingEcmFolderLinkingUnlinkLinked = &Operation{ - ID: "MessagingEcmFolderLinkingUnlinkLinked", Area: "messaging", Group: "ecm-folder-linking", Command: "unlink-linked", - Summary: "Unlink an ECM linked folder", - Description: "Unlinks the room-linked folder with the specified ID from the space.", - Method: "DELETE", Path: "/room/linkedFolders/{id}", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "The unique identifier for the folder to disassociate from the space."}, - }, -} - -var MessagingEventsList = &Operation{ - ID: "MessagingEventsList", Area: "messaging", Group: "events", Command: "list", - Summary: "List Events", - Description: "List events in your organization. Several query parameters are available to filter the events returned in the response.\n\nLong result sets will be split into [pages](/docs/basics#pagination).", - Method: "GET", Path: "/events", Host: HostWebex, - Params: []Param{ - {Name: "resource", In: InQuery, Flag: "resource", Usage: "List events with a specific resource type."}, - {Name: "type", In: InQuery, Flag: "type", Usage: "List events with a specific event type."}, - {Name: "actorId", In: InQuery, Flag: "actor-id", Usage: "List events performed by this person, by person ID."}, - {Name: "from", In: InQuery, Flag: "from", Usage: "List events which occurred after a specific date and time."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "List events that occurred before a specific date and time. If not specified, events up to the present time will be listed. Cannot be set to a future date relative to the current time."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the maximum number of events in the response. Value must be between 1 and 1000, inclusive."}, - {Name: "serviceType", In: InQuery, Flag: "service-type", Usage: "List events for a specific service type. This parameter is only applicable and mandatory when resource is set to `convergedRecordings`."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, - TimeRange: TimeISO, -} - -var MessagingEventsGet = &Operation{ - ID: "MessagingEventsGet", Area: "messaging", Group: "events", Command: "get", - Summary: "Get Event Details", - Description: "Shows details for an event, by event ID.\n\nSpecify the event ID in the `eventId` parameter in the URI.", - Method: "GET", Path: "/events/{eventId}", Host: HostWebex, - Params: []Param{ - {Name: "eventId", In: InPath, Flag: "event-id", Usage: "The unique identifier for the event."}, - }, -} - -var MessagingMembershipsList = &Operation{ - ID: "MessagingMembershipsList", Area: "messaging", Group: "memberships", Command: "list", - Summary: "List Memberships", - Description: "Lists all room memberships. By default, lists memberships for rooms to which the authenticated user belongs.\n\nUse query parameters to filter the response.\n\nUse `roomId` to list memberships for a room, by ID.\n\n**NOTE**: For moderated team spaces, the list of memberships will include only the space moderators if the user is a team member but not a direct participant of the space.\n\nUse either `personId` or `personEmail` to filter the results. The `roomId` parameter is required when using these parameters.\n\nWhen the requester is a compliance officer, they can query by `personId` or `personEmail` **WITHOUT** specifying a `roomId`. The response will include **ALL** memberships for the user where a space is owned by an org to which the user belongs.\n\nLong result sets will be split into [pages](/docs/basics#pagination).", - Method: "GET", Path: "/memberships", Host: HostWebex, - Params: []Param{ - {Name: "roomId", In: InQuery, Flag: "room-id", Usage: "List memberships associated with a room, by ID."}, - {Name: "personId", In: InQuery, Flag: "person-id", Usage: "List memberships associated with a person, by ID. The `roomId` parameter is required when using this parameter."}, - {Name: "personEmail", In: InQuery, Flag: "person-email", Usage: "List memberships associated with a person, by email address. The `roomId` parameter is required when using this parameter."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the maximum number of memberships in the response."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, -} - -var MessagingMembershipsCreate = &Operation{ - ID: "MessagingMembershipsCreate", Area: "messaging", Group: "memberships", Command: "create", - Summary: "Create a Membership", - Description: "Add someone to a room by Person ID or email address, optionally making them a moderator. Compliance Officers cannot add people to empty (team) spaces.", - Method: "POST", Path: "/memberships", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "roomId", Flag: "room-id", Type: "string"}, - {Name: "personId", Flag: "person-id", Type: "string"}, - {Name: "personEmail", Flag: "person-email", Type: "string"}, - {Name: "isModerator", Flag: "is-moderator", Type: "bool"}, - }}, -} - -var MessagingMembershipsGet = &Operation{ - ID: "MessagingMembershipsGet", Area: "messaging", Group: "memberships", Command: "get", - Summary: "Get Membership Details", - Description: "Get details for a membership by ID.\n\nSpecify the membership ID in the `membershipId` URI parameter.", - Method: "GET", Path: "/memberships/{membershipId}", Host: HostWebex, - Params: []Param{ - {Name: "membershipId", In: InPath, Flag: "membership-id", Usage: "The unique identifier for the membership."}, - }, -} - -var MessagingMembershipsUpdate = &Operation{ - ID: "MessagingMembershipsUpdate", Area: "messaging", Group: "memberships", Command: "update", - Summary: "Update a Membership", - Description: "Updates properties for a membership by ID.\n\nSpecify the membership ID in the `membershipId` URI parameter.", - Method: "PUT", Path: "/memberships/{membershipId}", Host: HostWebex, - Params: []Param{ - {Name: "membershipId", In: InPath, Flag: "membership-id", Usage: "The unique identifier for the membership."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "isModerator", Flag: "is-moderator", Type: "bool"}, - {Name: "isRoomHidden", Flag: "is-room-hidden", Type: "bool"}, - }}, -} - -var MessagingMembershipsDelete = &Operation{ - ID: "MessagingMembershipsDelete", Area: "messaging", Group: "memberships", Command: "delete", - Summary: "Delete a Membership", - Description: "Deletes a membership by ID.\n\nSpecify the membership ID in the `membershipId` URI parameter.\n\nThe membership for the last moderator of a [Team](/docs/api/v1/teams)'s General space may not be deleted; [promote another user](/docs/api/v1/team-memberships/update-a-team-membership) to team moderator first.", - Method: "DELETE", Path: "/memberships/{membershipId}", Host: HostWebex, - Params: []Param{ - {Name: "membershipId", In: InPath, Flag: "membership-id", Usage: "The unique identifier for the membership."}, - }, -} - -var MessagingMessagesList = &Operation{ - ID: "MessagingMessagesList", Area: "messaging", Group: "messages", Command: "list", - Summary: "List Messages", - Description: "Lists all messages in a room. Each message will include content attachments if present.\n\nThe list sorts the messages in descending order by creation date.\n\nLong result sets will be split into [pages](/docs/basics#pagination).", - Method: "GET", Path: "/messages", Host: HostWebex, - Params: []Param{ - {Name: "roomId", In: InQuery, Flag: "room-id", Usage: "List messages in a room, by ID."}, - {Name: "parentId", In: InQuery, Flag: "parent-id", Usage: "List messages with a parent, by ID."}, - {Name: "mentionedPeople", In: InQuery, Flag: "mentioned-people", Usage: "List messages with these people mentioned, by ID. Use `me` as a shorthand for the current API user. Only `me` or the person ID of the current user may be specified. Bots must include this parameter to list messages in group rooms (spaces)."}, - {Name: "mentionedPeople", In: InQuery, Flag: "mentioned-people", Usage: "List messages with these people mentioned, by ID. Use `me` as a shorthand for the current API user. Only `me` or the person ID of the current user may be specified. Bots must include this parameter to list messages in group rooms (spaces)."}, - {Name: "before", In: InQuery, Flag: "before", Usage: "List messages sent before a date and time."}, - {Name: "beforeMessage", In: InQuery, Flag: "before-message", Usage: "List messages sent before a message, by ID."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the maximum number of messages in the response. Cannot exceed 100 if used with `mentionedPeople`."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, -} - -var MessagingMessagesCreate = &Operation{ - ID: "MessagingMessagesCreate", Area: "messaging", Group: "messages", Command: "create", - Summary: "Create a Message", - Description: "Post a plain text or [rich text](/docs/basics#formatting-messages) message, and optionally, a [file attachment](/docs/basics#message-attachments) attachment, to a room.\n\nThe `files` parameter is an array, which accepts multiple values to allow for future expansion, but currently only one file may be included with the message. File previews are only rendered for attachments of 1MB or less.", - Method: "POST", Path: "/messages", Host: HostWebex, - Body: &Body{}, - Handwritten: true, -} - -var MessagingMessagesListDirect = &Operation{ - ID: "MessagingMessagesListDirect", Area: "messaging", Group: "messages", Command: "list-direct", - Summary: "List Direct Messages", - Description: "List all messages in a 1:1 (direct) room. Use the `personId` or `personEmail` query parameter to specify the room. Each message will include content attachments if present.\n\nThe list sorts the messages in descending order by creation date.", - Method: "GET", Path: "/messages/direct", Host: HostWebex, - Params: []Param{ - {Name: "parentId", In: InQuery, Flag: "parent-id", Usage: "List messages with a parent, by ID."}, - {Name: "personId", In: InQuery, Flag: "person-id", Usage: "List messages in a 1:1 room, by person ID."}, - {Name: "personEmail", In: InQuery, Flag: "person-email", Usage: "List messages in a 1:1 room, by person email."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var MessagingMessagesEdit = &Operation{ - ID: "MessagingMessagesEdit", Area: "messaging", Group: "messages", Command: "edit", - Summary: "Edit a Message", - Description: "Update a message you have posted not more than 10 times.\n\nSpecify the `messageId` of the message you want to edit.\n\nEdits of messages containing files or attachments are not currently supported.\nIf a user attempts to edit a message containing files or attachments a `400 Bad Request` will be returned by the API with a message stating that the feature is currently unsupported.\n\nThere is also a maximum number of times a user can edit a message. The maximum currently supported is 10 edits per message.\n If a user attempts to edit a message greater that the maximum times allowed the API will return 400 Bad Request with a message stating the edit limit has been reached.\n\nWhile only the `roomId` and `text` or `markdown` attributes are *required* in the request body, a common pattern for editing message is to first call `GET /messages/{id}` for the message you wish to edit and to then update the `text` or `markdown` attribute accordingly, passing the updated message object in the request body of the `PUT /messages/{id}` request.\nWhen this pattern is used on a message that included markdown, the `html` attribute must be deleted prior to making the `PUT` request.", - Method: "PUT", Path: "/messages/{messageId}", Host: HostWebex, - Params: []Param{ - {Name: "messageId", In: InPath, Flag: "message-id", Usage: "The unique identifier for the message."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "roomId", Flag: "room-id", Type: "string"}, - {Name: "text", Flag: "text", Type: "string"}, - {Name: "markdown", Flag: "markdown", Type: "string"}, - }}, -} - -var MessagingMessagesGet = &Operation{ - ID: "MessagingMessagesGet", Area: "messaging", Group: "messages", Command: "get", - Summary: "Get Message Details", - Description: "Show details for a message, by message ID.\n\nSpecify the message ID in the `messageId` parameter in the URI.", - Method: "GET", Path: "/messages/{messageId}", Host: HostWebex, - Params: []Param{ - {Name: "messageId", In: InPath, Flag: "message-id", Usage: "The unique identifier for the message."}, - }, -} - -var MessagingMessagesDelete = &Operation{ - ID: "MessagingMessagesDelete", Area: "messaging", Group: "messages", Command: "delete", - Summary: "Delete a Message", - Description: "Delete a message, by message ID.\n\nSpecify the message ID in the `messageId` parameter in the URI.", - Method: "DELETE", Path: "/messages/{messageId}", Host: HostWebex, - Params: []Param{ - {Name: "messageId", In: InPath, Flag: "message-id", Usage: "The unique identifier for the message."}, - }, -} - -var MessagingPeopleList = &Operation{ - ID: "MessagingPeopleList", Area: "messaging", Group: "people", Command: "list", - Summary: "List People", - Description: "List people in your organization. For most users, either the `email` or `displayName` parameter is required. Admin users can omit these fields and list all users in their organization.\n\nResponse properties associated with a user's presence status, such as `status` or `lastActivity`, will only be returned for people within your organization or an organization you manage. Presence information will not be returned if the authenticated user has [disabled status sharing](https://help.webex.com/nkzs6wl/). Calling /people frequently to poll `status` information for a large set of users will quickly lead to `429` errors and throttling of such requests and is therefore discouraged.\n\nAdmin users can include `Webex Calling` (BroadCloud) user details in the response by specifying `callingData` parameter as `true`. Admin users can list all users in a location. Admin users will receive an enriched payload with additional administrative fields like `licenses`,`roles`, `locations` etc. These fields are shown when accessing a user via GET /people/{id}, not when doing a GET /people?id=\n\nLookup by `email` is only supported for people within the same org or where a partner admin relationship is in place.\n\nLookup by `roles` is only supported for Admin users for the people within the same org.\n\nLong result sets will be split into [pages](/docs/basics#pagination).", - Method: "GET", Path: "/people", Host: HostWebex, - Params: []Param{ - {Name: "email", In: InQuery, Flag: "email", Usage: "List people with this email address. For non-admin requests, either this or `displayName` are required. With the exception of partner admins and a managed org relationship, people lookup by email is only available for users in the same org."}, - {Name: "displayName", In: InQuery, Flag: "display-name", Usage: "List people whose name starts with this string. For non-admin requests, either this or email are required."}, - {Name: "id", In: InQuery, Flag: "id", Usage: "List people by ID. Accepts up to 85 person IDs separated by commas. If this parameter is provided then presence information (such as the `lastActivity` or `status` properties) will not be included in the response."}, - {Name: "orgId", In: InQuery, Flag: "org-id", Usage: "List people in this organization. Only admin users of another organization (such as partners) may use this parameter."}, - {Name: "roles", In: InQuery, Flag: "roles", Usage: "List of roleIds separated by commas."}, - {Name: "callingData", In: InQuery, Flag: "calling-data", Usage: "Include Webex Calling user details in the response."}, - {Name: "locationId", In: InQuery, Flag: "location-id", Usage: "List people present in this location."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the maximum number of people in the response. If `callingData`=true, then `max` will not be more than 100. If `locationId` is specified then `max` will not be more than 50."}, - {Name: "excludeStatus", In: InQuery, Flag: "exclude-status", Usage: "Omit people status/availability to enhance query performance."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, -} - -var MessagingPeopleCreatePerson = &Operation{ - ID: "MessagingPeopleCreatePerson", Area: "messaging", Group: "people", Command: "create-person", - Summary: "Create a Person", - Description: "Create a new user account for a given organization. Only an admin can create a new user account.\n\nAt least one of the following body parameters is required to create a new user: `displayName`, `firstName`, `lastName`.\n\nCurrently, users may have only one email address associated with their account. The `emails` parameter is an array, which accepts multiple values to allow for future expansion, but currently only one email address will be used for the new user.\n\nAdmin users can include `Webex calling` (BroadCloud) user details in the response by specifying `callingData` parameter as true. It may happen that the POST request with calling data returns a 400 status, but the person was created still. One way to get into this state is if an invalid phone number is assigned to a user. The people API aggregates calls to several other microservices, and one may have failed. A best practice is to check if the user exists before retrying. This can be done with the user's email address and a GET /people.\n\nWhen doing attendee management, append `#attendee` to the `siteUrl` parameter (e.g. `mysite.webex.com#attendee`) to make the new user an attendee for a site.\n\n**NOTES**:\n\n* For creating a `Webex Calling` user, you must provide `phoneNumbers` or `extension`, `locationId`, and `licenses` string in the same request.\n\n* `SipAddresses` are asigned via an asynchronous process. This means that the POST response may not show the SIPAddresses immediately. Instead you can verify them with a separate GET to /people, after they were newly configured.\n\n* When assigning multiple licenses in a single request, the system will assign all valid and available licenses. If any requested licenses cannot be assigned, the operation will continue with the remaining licenses. As a result, it is possible that not all requested licenses are assigned to the user.", - Method: "POST", Path: "/people", Host: HostWebex, - Params: []Param{ - {Name: "callingData", In: InQuery, Flag: "calling-data", Usage: "Include Webex Calling user details in the response."}, - {Name: "minResponse", In: InQuery, Flag: "min-response", Usage: "Set to `true` to improve performance by omitting person details and returning only the ID in the response when successful. If unsuccessful the response will have optional error details."}, - }, - Body: &Body{}, -} - -var MessagingPeopleGetPerson = &Operation{ - ID: "MessagingPeopleGetPerson", Area: "messaging", Group: "people", Command: "get-person", - Summary: "Get Person Details", - Description: "Shows details for a person, by ID.\n\nResponse properties associated with a user's presence status, such as `status` or `lastActivity`, will only be displayed for people within your organization or an organization you manage. Presence information will not be shown if the authenticated user has [disabled status sharing](https://help.webex.com/nkzs6wl/).\n\nAdmin users can include `Webex Calling` (BroadCloud) user details in the response by specifying `callingData` parameter as `true`.\n\nSpecify the person ID in the `personId` parameter in the URI.", - Method: "GET", Path: "/people/{personId}", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - {Name: "callingData", In: InQuery, Flag: "calling-data", Usage: "Include Webex Calling user details in the response."}, - }, -} - -var MessagingPeopleUpdatePerson = &Operation{ - ID: "MessagingPeopleUpdatePerson", Area: "messaging", Group: "people", Command: "update-person", - Summary: "Update a Person", - Description: "Update details for a person, by ID.\n\nSpecify the person ID in the `personId` parameter in the URI. Only an admin can update a person details.\n\nInclude all details for the person. This action expects all user details to be present in the request. A common approach is to first [GET the person's details](/docs/api/v1/people/get-person-details), make changes, then PUT both the changed and unchanged values.\n\nAdmin users can include `Webex Calling` (BroadCloud) user details in the response by specifying `callingData` parameter as true.\n\nWhen doing attendee management, to update a user from host role to an attendee for a site append `#attendee` to the respective `siteUrl` and remove the meeting host license for this site from the license array.\nTo update a person from an attendee role to a host for a site, add the meeting license for this site in the meeting array, and remove that site from the `siteurl` parameter.\n\nTo remove the attendee privilege for a user on a meeting site, remove the `sitename#attendee` from the `siteUrl`s array. The `showAllTypes` parameter must be set to `true`.\n\n**NOTE**:\n\n* When assigning a Webex Calling license, either a telephone number or extension must already be assigned to the person or provided in the request payload.\n\n* When `callingData` is set to `true`, a Webex Calling license must be included in the `licenses` array.\n\n* The `locationId` can only be set when assigning a calling license to a user. It cannot be changed if a user is already an existing calling user.\n\n* The `extension` field should be used to update the Webex Calling extension for a person. The extension value should not include the location routing prefix. The `work_extension` type in the `phoneNumbers` object as seen in the response payload of [List People](/docs/api/v1/people/list-people) or [Get Person Details](/docs/api/v1/people/get-person-details), cannot be used to set the Webex Calling extension for a person.\n\n* When updating a user with multiple email addresses using a PUT request, ensure that the primary email address is listed first in the array. Note that the order of email addresses returned by a GET request is not guaranteed..\n\n* The People API is a combination of several microservices, each responsible for specific attributes of a person. As a result, a PUT request that returns an error response code may still have altered some values of the person's data. Therefore, it is recommended to perform a GET request after encountering an error to verify the current state of the resource. \n\n* Some licenses are implicitly assigned by the system and cannot be admin controlled. They are necessary for the baseline function of the Webex system. If you get an error about implicitly assigned licensed that cannot be removed, please ensure you have the corresponding license in your PUT request.\n\n* When assigning multiple licenses in a single request, the system will assign all valid and available licenses. If any requested licenses cannot be assigned, the operation will continue with the remaining licenses. As a result, it is possible that not all requested licenses are assigned to the user.", - Method: "PUT", Path: "/people/{personId}", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - {Name: "callingData", In: InQuery, Flag: "calling-data", Usage: "Include Webex Calling user details in the response."}, - {Name: "showAllTypes", In: InQuery, Flag: "show-all-types", Usage: "Include additional user data like `#attendee` role."}, - {Name: "minResponse", In: InQuery, Flag: "min-response", Usage: "Set to `true` to improve performance by omitting person details in the response. If unsuccessful the response will have optional error details."}, - }, - Body: &Body{}, -} - -var MessagingPeopleDeletePerson = &Operation{ - ID: "MessagingPeopleDeletePerson", Area: "messaging", Group: "people", Command: "delete-person", - Summary: "Delete a Person", - Description: "Remove a person from the system.\n\n**Required Administrator Roles:**\n\nThe following administrators have permission to use this API:\n\n**Customer Organization:**\n- Full administrator\n- User administrator\n\n**Partner/External Access:**\n- External full administrator\n\n**Note:** External read-only administrators, provisioning administrators, and device administrators cannot delete users.\n\nSpecify the person ID in the `personId` parameter in the URI.", - Method: "DELETE", Path: "/people/{personId}", Host: HostWebex, - Params: []Param{ - {Name: "personId", In: InPath, Flag: "person-id", Usage: "A unique identifier for the person."}, - }, -} - -var MessagingPeopleGetMyOwn = &Operation{ - ID: "MessagingPeopleGetMyOwn", Area: "messaging", Group: "people", Command: "get-my-own", - Summary: "Get My Own Details", - Description: "Get profile details for the authenticated user. This is the same as GET `/people/{personId}` using the Person ID associated with your Auth token.\n\nAdmin users can include `Webex Calling` (BroadCloud) user details in the response by specifying `callingData` parameter as true.", - Method: "GET", Path: "/people/me", Host: HostWebex, - Params: []Param{ - {Name: "callingData", In: InQuery, Flag: "calling-data", Usage: "Include Webex Calling user details in the response."}, - }, -} - -var MessagingRoomTabsList = &Operation{ - ID: "MessagingRoomTabsList", Area: "messaging", Group: "room-tabs", Command: "list", - Summary: "List Room Tabs", - Description: "Lists all Room Tabs of a room specified by the `roomId` query parameter.", - Method: "GET", Path: "/room/tabs", Host: HostWebex, - Params: []Param{ - {Name: "roomId", In: InQuery, Flag: "room-id", Usage: "ID of the room for which to list room tabs."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var MessagingRoomTabsCreate = &Operation{ - ID: "MessagingRoomTabsCreate", Area: "messaging", Group: "room-tabs", Command: "create", - Summary: "Create a Room Tab", - Description: "Add a tab with a specified URL to a room.", - Method: "POST", Path: "/room/tabs", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "roomId", Flag: "room-id", Type: "string"}, - {Name: "contentUrl", Flag: "content-url", Type: "string"}, - {Name: "displayName", Flag: "display-name", Type: "string"}, - }}, -} - -var MessagingRoomTabsGet = &Operation{ - ID: "MessagingRoomTabsGet", Area: "messaging", Group: "room-tabs", Command: "get", - Summary: "Get Room Tab Details", - Description: "Get details for a Room Tab with the specified room tab ID.", - Method: "GET", Path: "/room/tabs/{id}", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "The unique identifier for the Room Tab."}, - }, -} - -var MessagingRoomTabsUpdate = &Operation{ - ID: "MessagingRoomTabsUpdate", Area: "messaging", Group: "room-tabs", Command: "update", - Summary: "Update a Room Tab", - Description: "Updates the content URL of the specified Room Tab ID.", - Method: "PUT", Path: "/room/tabs/{id}", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "The unique identifier for the Room Tab."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "roomId", Flag: "room-id", Type: "string"}, - {Name: "contentUrl", Flag: "content-url", Type: "string"}, - {Name: "displayName", Flag: "display-name", Type: "string"}, - }}, -} - -var MessagingRoomTabsDelete = &Operation{ - ID: "MessagingRoomTabsDelete", Area: "messaging", Group: "room-tabs", Command: "delete", - Summary: "Delete a Room Tab", - Description: "Deletes a Room Tab with the specified ID.", - Method: "DELETE", Path: "/room/tabs/{id}", Host: HostWebex, - Params: []Param{ - {Name: "id", In: InPath, Flag: "id", Usage: "The unique identifier for the Room Tab to delete."}, - }, -} - -var MessagingRoomsList = &Operation{ - ID: "MessagingRoomsList", Area: "messaging", Group: "rooms", Command: "list", - Summary: "List Rooms", - Description: "List rooms to which the authenticated user belongs to.\n\nThe `title` of the room for 1:1 rooms will be the display name of the other person. Please use the [memberships API](https://developer.webex.com/docs/api/v1/memberships) to list the people in the space.\n\nLong result sets will be split into [pages](/docs/basics#pagination).\n\nKnown Limitations:\nThe underlying database does not support natural sorting by `lastactivity` and will only sort on limited set of results, which are pulled from the database in order of `roomId`. For users or bots in more than 3000 spaces this can result in anomalies such as spaces that have had recent activity not being returned in the results when sorting by `lastacivity`.", - Method: "GET", Path: "/rooms", Host: HostWebex, - Params: []Param{ - {Name: "teamId", In: InQuery, Flag: "team-id", Usage: "List rooms associated with a team, by ID. Cannot be set in combination with `orgPublicSpaces`."}, - {Name: "type", In: InQuery, Flag: "type", Usage: "List rooms by type. Cannot be set in combination with `orgPublicSpaces`."}, - {Name: "orgPublicSpaces", In: InQuery, Flag: "org-public-spaces", Usage: "Shows the org's public spaces joined and unjoined. When set the result list is sorted by the `madePublic` timestamp."}, - {Name: "from", In: InQuery, Flag: "from", Usage: "Filters rooms, that were made public after this time. See `madePublic` timestamp"}, - {Name: "to", In: InQuery, Flag: "to", Usage: "Filters rooms, that were made public before this time. See `maePublic` timestamp"}, - {Name: "sortBy", In: InQuery, Flag: "sort-by", Usage: "Sort results. Cannot be set in combination with `orgPublicSpaces`."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the maximum number of rooms in the response. Value must be between 1 and 1000, inclusive."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, - TimeRange: TimeISO, -} - -var MessagingRoomsCreate = &Operation{ - ID: "MessagingRoomsCreate", Area: "messaging", Group: "rooms", Command: "create", - Summary: "Create a Room", - Description: "Creates a room. The authenticated user is automatically added as a member of the room. See the [Memberships API](/docs/api/v1/memberships) to learn how to add more people to the room.\n\nTo create a 1:1 room, use the [Create Messages](/docs/api/v1/messages/create-a-message) endpoint to send a message directly to another person by using the `toPersonId` or `toPersonEmail` parameters.\n\nBots are not able to create and simultaneously classify a room. A bot may update a space classification after a person of the same owning organization joined the space as the first human user.\nA space can only be put into announcement mode when it is locked.", - Method: "POST", Path: "/rooms", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "title", Flag: "title", Type: "string"}, - {Name: "teamId", Flag: "team-id", Type: "string"}, - {Name: "classificationId", Flag: "classification-id", Type: "string"}, - {Name: "isLocked", Flag: "is-locked", Type: "bool"}, - {Name: "isPublic", Flag: "is-public", Type: "bool"}, - {Name: "description", Flag: "description", Type: "string"}, - {Name: "isAnnouncementOnly", Flag: "is-announcement-only", Type: "bool"}, - }}, -} - -var MessagingRoomsGet = &Operation{ - ID: "MessagingRoomsGet", Area: "messaging", Group: "rooms", Command: "get", - Summary: "Get Room Details", - Description: "Shows details for a room, by ID.\n\nThe `title` of the room for 1:1 rooms will be the display name of the other person. When a Compliance Officer lists 1:1 rooms, the \"other\" person cannot be determined. This means that the room's title may not be filled in and instead shows \"Empty Title\". Please use the [memberships API](https://developer.webex.com/docs/api/v1/memberships) to list the other person in the space.\n\nSpecify the room ID in the `roomId` parameter in the URI.", - Method: "GET", Path: "/rooms/{roomId}", Host: HostWebex, - Params: []Param{ - {Name: "roomId", In: InPath, Flag: "room-id", Usage: "The unique identifier for the room."}, - }, -} - -var MessagingRoomsUpdate = &Operation{ - ID: "MessagingRoomsUpdate", Area: "messaging", Group: "rooms", Command: "update", - Summary: "Update a Room", - Description: "Updates details for a room, by ID.\n\nSpecify the room ID in the `roomId` parameter in the URI.\nA space can only be put into announcement mode when it is locked.\nAny space participant or compliance officer can convert a space from public to private. Only a compliance officer can convert a space from private to public and only if the space is classified with the lowest category (usually `public`), and the space has a description.\nTo remove a `description` please use a space character ` ` by itself.\n\n
When using this method for moving a space under a team, ensure that all moderators in the space are also team members. If a moderator is not part of the team, demote or remove them as a moderator. Alternatively, add the non-team moderators to the team. This ensures compliance with the requirement that all space moderators must be team members for successful operation execution.\n
\n\n
A Compliance Officer who is not a member of a space can only update the `classificationId`, `isAnnouncementOnly`, `description`, and `isPublic` fields.\n
", - Method: "PUT", Path: "/rooms/{roomId}", Host: HostWebex, - Params: []Param{ - {Name: "roomId", In: InPath, Flag: "room-id", Usage: "The unique identifier for the room."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "title", Flag: "title", Type: "string"}, - {Name: "classificationId", Flag: "classification-id", Type: "string"}, - {Name: "teamId", Flag: "team-id", Type: "string"}, - {Name: "isLocked", Flag: "is-locked", Type: "bool"}, - {Name: "isPublic", Flag: "is-public", Type: "bool"}, - {Name: "description", Flag: "description", Type: "string"}, - {Name: "isAnnouncementOnly", Flag: "is-announcement-only", Type: "bool"}, - {Name: "isReadOnly", Flag: "is-read-only", Type: "bool"}, - }}, -} - -var MessagingRoomsDelete = &Operation{ - ID: "MessagingRoomsDelete", Area: "messaging", Group: "rooms", Command: "delete", - Summary: "Delete a Room", - Description: "Deletes a room, by ID. Deleted rooms cannot be recovered.\nAs a security measure to prevent accidental deletion, when a non moderator deletes the room they are removed from the room instead.\n\nDeleting a room that is part of a team will archive the room instead.\n\nA Compliance Officer has no special privileges, i.e. they cannot delete rooms they are not part of.\n\nSpecify the room ID in the `roomId` parameter in the URI.", - Method: "DELETE", Path: "/rooms/{roomId}", Host: HostWebex, - Params: []Param{ - {Name: "roomId", In: InPath, Flag: "room-id", Usage: "The unique identifier for the room."}, - }, -} - -var MessagingRoomsGetMeeting = &Operation{ - ID: "MessagingRoomsGetMeeting", Area: "messaging", Group: "rooms", Command: "get-meeting", - Summary: "Get Room Meeting Details", - Description: "
\n\nThe meetingInfo API is deprecated and will be EOL on Jan 31, 2025. Meetings in the WSMP must be scheduled and licensed via the meetings backend.\nThe [Create a Meeting](/docs/api/v1/meetings/create-a-meeting) endpoint will provide the SIP address for the meeting to call.\n\n
\n\nShows Webex meeting details for a room such as the SIP address, meeting URL, toll-free and toll dial-in numbers.\n\nSpecify the room ID in the `roomId` parameter in the URI.", - Method: "GET", Path: "/rooms/{roomId}/meetingInfo", Host: HostWebex, - Params: []Param{ - {Name: "roomId", In: InPath, Flag: "room-id", Usage: "The unique identifier for the room."}, - }, -} - -var MessagingTeamMembershipsList = &Operation{ - ID: "MessagingTeamMembershipsList", Area: "messaging", Group: "team-memberships", Command: "list", - Summary: "List Team Memberships", - Description: "Lists all team memberships for a given team, specified by the `teamId` query parameter.\n\nUse query parameters to filter the response.", - Method: "GET", Path: "/team/memberships", Host: HostWebex, - Params: []Param{ - {Name: "teamId", In: InQuery, Flag: "team-id", Usage: "List memberships for a team, by ID."}, - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the maximum number of team memberships in the response."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, -} - -var MessagingTeamMembershipsCreate = &Operation{ - ID: "MessagingTeamMembershipsCreate", Area: "messaging", Group: "team-memberships", Command: "create", - Summary: "Create a Team Membership", - Description: "Add someone to a team by Person ID or email address, optionally making them a moderator.", - Method: "POST", Path: "/team/memberships", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "teamId", Flag: "team-id", Type: "string"}, - {Name: "personId", Flag: "person-id", Type: "string"}, - {Name: "personEmail", Flag: "person-email", Type: "string"}, - {Name: "isModerator", Flag: "is-moderator", Type: "bool"}, - }}, -} - -var MessagingTeamMembershipsGet = &Operation{ - ID: "MessagingTeamMembershipsGet", Area: "messaging", Group: "team-memberships", Command: "get", - Summary: "Get Team Membership Details", - Description: "Shows details for a team membership, by ID.\n\nSpecify the team membership ID in the `membershipId` URI parameter.", - Method: "GET", Path: "/team/memberships/{membershipId}", Host: HostWebex, - Params: []Param{ - {Name: "membershipId", In: InPath, Flag: "membership-id", Usage: "The unique identifier for the team membership."}, - }, -} - -var MessagingTeamMembershipsUpdate = &Operation{ - ID: "MessagingTeamMembershipsUpdate", Area: "messaging", Group: "team-memberships", Command: "update", - Summary: "Update a Team Membership", - Description: "Updates a team membership, by ID.\n\nSpecify the team membership ID in the `membershipId` URI parameter.", - Method: "PUT", Path: "/team/memberships/{membershipId}", Host: HostWebex, - Params: []Param{ - {Name: "membershipId", In: InPath, Flag: "membership-id", Usage: "The unique identifier for the team membership."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "isModerator", Flag: "is-moderator", Type: "bool"}, - }}, -} - -var MessagingTeamMembershipsDelete = &Operation{ - ID: "MessagingTeamMembershipsDelete", Area: "messaging", Group: "team-memberships", Command: "delete", - Summary: "Delete a Team Membership", - Description: "Deletes a team membership, by ID.\n\nSpecify the team membership ID in the `membershipId` URI parameter.\n\nThe team membership for the last moderator of a team may not be deleted; [promote another user](/docs/api/v1/team-memberships/update-a-team-membership) to team moderator first.", - Method: "DELETE", Path: "/team/memberships/{membershipId}", Host: HostWebex, - Params: []Param{ - {Name: "membershipId", In: InPath, Flag: "membership-id", Usage: "The unique identifier for the team membership."}, - }, -} - -var MessagingTeamsList = &Operation{ - ID: "MessagingTeamsList", Area: "messaging", Group: "teams", Command: "list", - Summary: "List Teams", - Description: "Lists teams to which the authenticated user belongs.", - Method: "GET", Path: "/teams", Host: HostWebex, - Params: []Param{ - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the maximum number of teams in the response."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, -} - -var MessagingTeamsCreate = &Operation{ - ID: "MessagingTeamsCreate", Area: "messaging", Group: "teams", Command: "create", - Summary: "Create a Team", - Description: "Creates a team.\n\nThe authenticated user is automatically added as a member of the team. See the [Team Memberships API](/docs/api/v1/team-memberships) to learn how to add more people to the team.", - Method: "POST", Path: "/teams", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "name", Flag: "name", Type: "string"}, - {Name: "description", Flag: "description", Type: "string"}, - }}, -} - -var MessagingTeamsGet = &Operation{ - ID: "MessagingTeamsGet", Area: "messaging", Group: "teams", Command: "get", - Summary: "Get Team Details", - Description: "Shows details for a team, by ID.\n\nSpecify the team ID in the `teamId` parameter in the URI.", - Method: "GET", Path: "/teams/{teamId}", Host: HostWebex, - Params: []Param{ - {Name: "teamId", In: InPath, Flag: "team-id", Usage: "The unique identifier for the team."}, - {Name: "description", In: InQuery, Flag: "description", Usage: "The teams description."}, - }, -} - -var MessagingTeamsUpdate = &Operation{ - ID: "MessagingTeamsUpdate", Area: "messaging", Group: "teams", Command: "update", - Summary: "Update a Team", - Description: "Updates details for a team, by ID.\n\nSpecify the team ID in the `teamId` parameter in the URI.", - Method: "PUT", Path: "/teams/{teamId}", Host: HostWebex, - Params: []Param{ - {Name: "teamId", In: InPath, Flag: "team-id", Usage: "The unique identifier for the team."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "name", Flag: "name", Type: "string"}, - {Name: "description", Flag: "description", Type: "string"}, - }}, -} - -var MessagingTeamsDelete = &Operation{ - ID: "MessagingTeamsDelete", Area: "messaging", Group: "teams", Command: "delete", - Summary: "Delete a Team", - Description: "Deletes a team, by ID.\n\nSpecify the team ID in the `teamId` parameter in the URI.", - Method: "DELETE", Path: "/teams/{teamId}", Host: HostWebex, - Params: []Param{ - {Name: "teamId", In: InPath, Flag: "team-id", Usage: "The unique identifier for the team."}, - }, -} - -var MessagingWebhooksList = &Operation{ - ID: "MessagingWebhooksList", Area: "messaging", Group: "webhooks", Command: "list", - Summary: "List Webhooks", - Description: "List all of your webhooks.", - Method: "GET", Path: "/webhooks", Host: HostWebex, - Params: []Param{ - {Name: "max", In: InQuery, Flag: "max", Usage: "Limit the maximum number of webhooks in the response."}, - {Name: "ownedBy", In: InQuery, Flag: "owned-by", Usage: "Limit the result list to org wide webhooks. Only allowed value is `org`."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "max", First: 0}}, -} - -var MessagingWebhooksCreate = &Operation{ - ID: "MessagingWebhooksCreate", Area: "messaging", Group: "webhooks", Command: "create", - Summary: "Create a Webhook", - Description: "Creates a webhook.\n\nTo learn more about how to create and use webhooks, see The [Webhooks Guide](/docs/api/guides/webhooks).", - Method: "POST", Path: "/webhooks", Host: HostWebex, - Body: &Body{Fields: []BodyField{ - {Name: "name", Flag: "name", Type: "string"}, - {Name: "targetUrl", Flag: "target-url", Type: "string"}, - {Name: "resource", Flag: "resource", Type: "string"}, - {Name: "event", Flag: "event", Type: "string"}, - {Name: "filter", Flag: "filter", Type: "string"}, - {Name: "secret", Flag: "secret", Type: "string"}, - {Name: "ownedBy", Flag: "owned-by", Type: "string"}, - }}, -} - -var MessagingWebhooksGet = &Operation{ - ID: "MessagingWebhooksGet", Area: "messaging", Group: "webhooks", Command: "get", - Summary: "Get Webhook Details", - Description: "Shows details for a webhook, by ID.\n\nSpecify the webhook ID in the `webhookId` parameter in the URI.", - Method: "GET", Path: "/webhooks/{webhookId}", Host: HostWebex, - Params: []Param{ - {Name: "webhookId", In: InPath, Flag: "webhook-id", Usage: "The unique identifier for the webhook."}, - }, -} - -var MessagingWebhooksUpdate = &Operation{ - ID: "MessagingWebhooksUpdate", Area: "messaging", Group: "webhooks", Command: "update", - Summary: "Update a Webhook", - Description: "Updates a webhook, by ID. You cannot use this call to deactivate a webhook, only to activate a webhook that was auto deactivated.\nThe fields that can be updated are `name`, `targetURL`, `secret` and `status`. All other fields, if supplied, are ignored.\n\nSpecify the webhook ID in the `webhookId` parameter in the URI.", - Method: "PUT", Path: "/webhooks/{webhookId}", Host: HostWebex, - Params: []Param{ - {Name: "webhookId", In: InPath, Flag: "webhook-id", Usage: "The unique identifier for the webhook."}, - }, - Body: &Body{Fields: []BodyField{ - {Name: "name", Flag: "name", Type: "string"}, - {Name: "targetUrl", Flag: "target-url", Type: "string"}, - {Name: "secret", Flag: "secret", Type: "string"}, - {Name: "ownedBy", Flag: "owned-by", Type: "string"}, - {Name: "status", Flag: "status", Type: "string"}, - }}, -} - -var MessagingWebhooksDelete = &Operation{ - ID: "MessagingWebhooksDelete", Area: "messaging", Group: "webhooks", Command: "delete", - Summary: "Delete a Webhook", - Description: "Deletes a webhook, by ID.\n\nSpecify the webhook ID in the `webhookId` parameter in the URI.", - Method: "DELETE", Path: "/webhooks/{webhookId}", Host: HostWebex, - Params: []Param{ - {Name: "webhookId", In: InPath, Flag: "webhook-id", Usage: "The unique identifier for the webhook."}, - }, -} - -var MessagingHdsGetTestResultsNode = &Operation{ - ID: "MessagingHdsGetTestResultsNode", Area: "messaging", Group: "hds", Command: "get-test-results-node", - Summary: "Get test results for HDS node", - Description: "Get the latest results of the network tests triggered for a single HDS node. The test results are generated as part of the Network Test execution on the node. The network tests include the Bandwidth Test, DNS Resolution Test, and HTTPS Connectivity Test.\n The results from the latest test run are provided, covering up to the past 90 days if available.\nTo obtain the Node ID needed for this API, use the [Get cluster details API]()", - Method: "GET", Path: "/hds/testResults/nodes/{nodeId}/networkTest", Host: HostWebex, - Params: []Param{ - {Name: "nodeId", In: InPath, Flag: "node-id", Usage: "Unique ID of the HDS node."}, - {Name: "triggerType", In: InQuery, Flag: "trigger-type", Usage: "Trigger type."}, - }, -} - -var MessagingHdsGetCluster = &Operation{ - ID: "MessagingHdsGetCluster", Area: "messaging", Group: "hds", Command: "get-cluster", - Summary: "Get cluster details", - Description: "Retrieve details for a specific HDS cluster, such as the cluster name, cluster status, upgrade schedule, and HDS nodes in the cluster.\nTo obtain the Cluster ID needed for this API, use the [Get organization details API]()", - Method: "GET", Path: "/hds/clusters/{clusterId}", Host: HostWebex, - Params: []Param{ - {Name: "clusterId", In: InPath, Flag: "cluster-id", Usage: "Unique ID of the HDS cluster."}, - }, -} - -var MessagingHdsGetOrg = &Operation{ - ID: "MessagingHdsGetOrg", Area: "messaging", Group: "hds", Command: "get-org", - Summary: "Get organization details", - Description: "Retrieve details for an HDS organization, such as the organization name, type of organization.\nTo obtain the Organization ID needed for this API, use the [Organizations API]()", - Method: "GET", Path: "/hds/organizations/{organizationId}", Host: HostWebex, - Params: []Param{ - {Name: "organizationId", In: InPath, Flag: "organization-id", Usage: "Unique ID of the HDS organization."}, - }, -} - -var MessagingHdsGetNode = &Operation{ - ID: "MessagingHdsGetNode", Area: "messaging", Group: "hds", Command: "get-node", - Summary: "Get node details", - Description: "Retrieve details for a specific HDS node, such as host name, release version, proxy details, deployment and build type, availability details, etc.\nTo obtain the Node ID needed for this API, use the [Get cluster details API]()", - Method: "GET", Path: "/hds/nodes/{nodeId}", Host: HostWebex, - Params: []Param{ - {Name: "nodeId", In: InPath, Flag: "node-id", Usage: "Unique ID of the HDS node"}, - }, -} - -var MessagingHdsGetDatabaseOrg = &Operation{ - ID: "MessagingHdsGetDatabaseOrg", Area: "messaging", Group: "hds", Command: "get-database-org", - Summary: "Get database details for the HDS organization", - Description: "Retrieve details of database information for an HDS organization, such as database type and version used.\nTo obtain the Organization ID needed for this API, use the [Organizations API]()", - Method: "GET", Path: "/hds/organizations/{organizationId}/database/details", Host: HostWebex, - Params: []Param{ - {Name: "organizationId", In: InPath, Flag: "organization-id", Usage: "Unique ID of the HDS organization"}, - }, -} - -var MessagingHdsGetMultiTenantOrg = &Operation{ - ID: "MessagingHdsGetMultiTenantOrg", Area: "messaging", Group: "hds", Command: "get-multi-tenant-org", - Summary: "Get Multi-Tenant HDS organization details", - Description: "Retrieve details of Multi-Tenant HDS organization such as Organization Name and ID, CMK state and state of Tenants Organizations.\nTo obtain the Organization ID needed for this API, use the [Organizations API]()", - Method: "GET", Path: "/hds/organizations/{organizationId}/multiTenant", Host: HostWebex, - Params: []Param{ - {Name: "organizationId", In: InPath, Flag: "organization-id", Usage: "Unique ID of the HDS organization."}, - }, -} - -var MessagingHdsGetAvailabilityCluster = &Operation{ - ID: "MessagingHdsGetAvailabilityCluster", Area: "messaging", Group: "hds", Command: "get-availability-cluster", - Summary: "Get availability details for HDS cluster", - Description: "Get the availability details for an HDS cluster, where each segment specifies the start and end times, as well as the number of online, offline, and total nodes within that segment.\nTo obtain the Cluster ID needed for this API, use the [Get organization details API]()", - Method: "GET", Path: "/hds/clusters/{clusterId}/availability", Host: HostWebex, - Params: []Param{ - {Name: "clusterId", In: InPath, Flag: "cluster-id", Usage: "Unique ID of the HDS cluster."}, - {Name: "from", In: InQuery, Flag: "from", Usage: "The start date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. The 'from' value cannot be later than the 'to' value, and it cannot be more than 1 day older than the current date and time."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "The end date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format."}, - }, - TimeRange: TimeISO, -} - -var MessagingHdsGetDatabaseConfigOrg = &Operation{ - ID: "MessagingHdsGetDatabaseConfigOrg", Area: "messaging", Group: "hds", Command: "get-database-config-org", - Aliases: []string{"get-database-org-2"}, - Summary: "Get database details for the HDS organization", - Description: "Retrieve details of database information for an HDS organization, such as database type and version used.\nTo obtain the Organization ID needed for this API, use the [Organizations API]()", - Method: "GET", Path: "/hds/organizations/{organizationId}/database", Host: HostWebex, - Params: []Param{ - {Name: "organizationId", In: InPath, Flag: "organization-id", Usage: "Unique ID of the HDS organization"}, - }, -} - -var MessagingHdsListTenantsOrg = &Operation{ - ID: "MessagingHdsListTenantsOrg", Area: "messaging", Group: "hds", Command: "list-tenants-org", - Aliases: []string{"get-multi-tenant-org-2"}, - Summary: "Get Multi-Tenant HDS organization details", - Description: "Retrieve details of Multi-Tenant HDS organization such as Organization Name and ID, CMK state and state of Tenants Organizations.\nTo obtain the Organization ID needed for this API, use the [Organizations API]()", - Method: "GET", Path: "/hds/organizations/{organizationId}/tenants", Host: HostWebex, - Params: []Param{ - {Name: "organizationId", In: InPath, Flag: "organization-id", Usage: "Unique ID of the HDS organization."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var MessagingHdsListNodesCluster = &Operation{ - ID: "MessagingHdsListNodesCluster", Area: "messaging", Group: "hds", Command: "list-nodes-cluster", - Summary: "List nodes for an HDS cluster", - Description: "Retrieve a list of all nodes for a specific HDS cluster, including availability, proxy details, deployment type, and release version.\nTo obtain the Cluster ID needed for this API, use the [List clusters for an HDS organization API]()", - Method: "GET", Path: "/hds/clusters/{clusterId}/nodes", Host: HostWebex, - Params: []Param{ - {Name: "clusterId", In: InPath, Flag: "cluster-id", Usage: "Unique ID of the HDS cluster."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var MessagingHdsListClustersOrg = &Operation{ - ID: "MessagingHdsListClustersOrg", Area: "messaging", Group: "hds", Command: "list-clusters-org", - Summary: "List clusters for an HDS organization", - Description: "Retrieve a list of all clusters for a specific HDS organization, including cluster status, release channel, and upgrade schedule details.\nTo obtain the Organization ID needed for this API, use the [Organizations API]()", - Method: "GET", Path: "/hds/organizations/{organizationId}/clusters", Host: HostWebex, - Params: []Param{ - {Name: "organizationId", In: InPath, Flag: "organization-id", Usage: "Unique ID of the HDS organization."}, - }, - Paging: &Paging{Offset: &OffsetPaging{Start: "", Size: "", First: 0}}, -} - -var MessagingHdsGetAlarmsNode = &Operation{ - ID: "MessagingHdsGetAlarmsNode", Area: "messaging", Group: "hds", Command: "get-alarms-node", - Summary: "Get alarms for an HDS node", - Description: "Returns the alarm details for a single HDS node for the provided time range (last 24 hours).\nTo obtain the Node ID needed for this API, use the [List nodes for an HDS cluster API]()", - Method: "GET", Path: "/hds/nodes/{nodeId}/alarms", Host: HostWebex, - Params: []Param{ - {Name: "nodeId", In: InPath, Flag: "node-id", Usage: "Unique ID of the HDS node."}, - {Name: "from", In: InQuery, Flag: "from", Usage: "The start date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "The end date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format."}, - }, - TimeRange: TimeISO, -} - -var MessagingHdsGetUsageNode = &Operation{ - ID: "MessagingHdsGetUsageNode", Area: "messaging", Group: "hds", Command: "get-usage-node", - Summary: "Get resource usage for an HDS node", - Description: "Retrieve CPU, memory, and disk resource usage details for a specific HDS node over the requested time range.\nTo obtain the Node ID needed for this API, use the [List nodes for an HDS cluster API]()", - Method: "GET", Path: "/hds/nodes/{nodeId}/resourceUsage", Host: HostWebex, - Params: []Param{ - {Name: "nodeId", In: InPath, Flag: "node-id", Usage: "Unique ID of the HDS node."}, - {Name: "from", In: InQuery, Flag: "from", Usage: "The start date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format."}, - {Name: "to", In: InQuery, Flag: "to", Usage: "The end date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format."}, - }, - TimeRange: TimeISO, -} - -var messagingGroups = []Group{ - {Name: "attachment-actions", Summary: "AttachmentActions commands"}, - {Name: "ecm-folder-linking", Summary: "EcmFolderLinking commands"}, - {Name: "events", Summary: "Events commands"}, - {Name: "memberships", Summary: "Memberships commands"}, - {Name: "messages", Summary: "Messages commands"}, - {Name: "people", Summary: "People commands"}, - {Name: "room-tabs", Summary: "RoomTabs commands"}, - {Name: "rooms", Summary: "Rooms commands"}, - {Name: "team-memberships", Summary: "TeamMemberships commands"}, - {Name: "teams", Summary: "Teams commands"}, - {Name: "webhooks", Summary: "Webhooks commands"}, - {Name: "hds", Aliases: []string{"hybrid-data-security"}, Summary: "Hds commands"}, -} - -var messagingOperations = []*Operation{ - MessagingAttachmentActionsCreate, - MessagingAttachmentActionsGet, - MessagingEcmFolderLinkingList, - MessagingEcmFolderLinkingCreateConfiguration, - MessagingEcmFolderLinkingGet, - MessagingEcmFolderLinkingUpdateLinked, - MessagingEcmFolderLinkingUnlinkLinked, - MessagingEventsList, - MessagingEventsGet, - MessagingMembershipsList, - MessagingMembershipsCreate, - MessagingMembershipsGet, - MessagingMembershipsUpdate, - MessagingMembershipsDelete, - MessagingMessagesList, - MessagingMessagesCreate, - MessagingMessagesListDirect, - MessagingMessagesEdit, - MessagingMessagesGet, - MessagingMessagesDelete, - MessagingPeopleList, - MessagingPeopleCreatePerson, - MessagingPeopleGetPerson, - MessagingPeopleUpdatePerson, - MessagingPeopleDeletePerson, - MessagingPeopleGetMyOwn, - MessagingRoomTabsList, - MessagingRoomTabsCreate, - MessagingRoomTabsGet, - MessagingRoomTabsUpdate, - MessagingRoomTabsDelete, - MessagingRoomsList, - MessagingRoomsCreate, - MessagingRoomsGet, - MessagingRoomsUpdate, - MessagingRoomsDelete, - MessagingRoomsGetMeeting, - MessagingTeamMembershipsList, - MessagingTeamMembershipsCreate, - MessagingTeamMembershipsGet, - MessagingTeamMembershipsUpdate, - MessagingTeamMembershipsDelete, - MessagingTeamsList, - MessagingTeamsCreate, - MessagingTeamsGet, - MessagingTeamsUpdate, - MessagingTeamsDelete, - MessagingWebhooksList, - MessagingWebhooksCreate, - MessagingWebhooksGet, - MessagingWebhooksUpdate, - MessagingWebhooksDelete, - MessagingHdsGetTestResultsNode, - MessagingHdsGetCluster, - MessagingHdsGetOrg, - MessagingHdsGetNode, - MessagingHdsGetDatabaseOrg, - MessagingHdsGetMultiTenantOrg, - MessagingHdsGetAvailabilityCluster, - MessagingHdsGetDatabaseConfigOrg, - MessagingHdsListTenantsOrg, - MessagingHdsListNodesCluster, - MessagingHdsListClustersOrg, - MessagingHdsGetAlarmsNode, - MessagingHdsGetUsageNode, -} diff --git a/site/astro.config.mjs b/site/astro.config.mjs index ef3f2be..477d586 100644 --- a/site/astro.config.mjs +++ b/site/astro.config.mjs @@ -25,7 +25,6 @@ export default defineConfig({ ]}, { label: 'Integrations', items: [ { label: 'Coding Agent Skill', slug: 'agent-skill' }, - { label: 'Go SDK', slug: 'sdk' }, ]}, ], }), diff --git a/site/src/content/docs/getting-started.mdx b/site/src/content/docs/getting-started.mdx index 60b796f..174fb91 100644 --- a/site/src/content/docs/getting-started.mdx +++ b/site/src/content/docs/getting-started.mdx @@ -87,11 +87,6 @@ webex messaging [flags] # Webex Messaging APIs | `--output json\|table\|csv\|raw` | Output format (default: json) | | `--debug` | Show HTTP request/response details | | `--paginate` | Auto-paginate list results (ignored by commands that return one object) | -| `--dry-run` | Print write requests without executing them | -| `--region ` | Data region for region-specific hosts (Detailed Call History) | -| `--cc-region ` | Contact Center data center: `us1` (default), `eu1`, `eu2`, `anz1`, `ca1`, `jp1`, `sg1` | - -A Contact Center update replaces the whole object: fields the body leaves out are cleared. Get the object first and send the full body back with your changes. ## Admin Examples diff --git a/site/src/content/docs/sdk.mdx b/site/src/content/docs/sdk.mdx deleted file mode 100644 index 61563d1..0000000 --- a/site/src/content/docs/sdk.mdx +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: Go SDK -description: The Go packages the CLI is built on, for use in other programs. ---- - -The CLI is built on a Go SDK in `pkg/`. Other programs import it as `github.com/Cloverhound/webex-cli/pkg/...`; Webex Admin Studio is built on it. The packages hold no process-wide state, and every call takes a context. - -| Package | What it is | -|---|---| -| `webexapi` | HTTP transport: 401 refresh, 429 retry, structured errors, lists that fail instead of ending short, hosts for every data region and Contact Center data center, org ID conversion, Contact Center pacing. | -| `webexops` | Every API operation as data, generated from Cisco's Postman collections: route, parameters, body fields, paging. `Call` sends one. | -| `resource` | Object types as data: fields, JSON paths, write mode, and the operations each type uses. | -| `catalog` | The object types, and which can be written. | -| `webex` | Reads and writes objects by type. | -| `guard` | The write protocol: a conflict check before a write, a read-back after it, and a stop after a failure. | -| `changeset` | The change set file format that Webex Admin Studio imports and exports. | -| `aiagent` | AI Agent Studio's private routes: agent token lookup and credential redaction. | -| `fakeapi` | A fake Webex for tests, with fault injection. | - -## Calling an operation - -Each operation is an exported variable named after its CLI command, such as `webexops.CCTeamGet` for `webex cc team get`. A program that uses one fails to build when a Postman refresh drops or renames it. - -```go -hosts, err := webexapi.NewHosts("us1", "us") // Contact Center data center, data region -api := &webexapi.Client{ - Token: func(ctx context.Context) (string, error) { return token, nil }, - MaxRetries: 3, -} -resp, err := webexops.Call(ctx, api, hosts, webexops.CCTeamGet, webexops.Args{ - Path: map[string]string{"orgid": orgUUID, "id": teamID}, -}) -``` - -`Args` names parameters as the API does. A path parameter without a value, or a parameter the operation does not have, is an error, so a misspelled name is never silently dropped. Bodies and responses are JSON: Postman's example bodies do not match what Webex returns, so generated types would be wrong. - -## Objects by type - -```go -c := &webex.Client{API: api, Hosts: hosts, OrgUUID: orgUUID} -queue, _ := catalog.ByName("cc_queue") - -queues, err := c.List(ctx, queue) // every queue, fields by name -q, err := c.Read(ctx, queue, queues[0].Key) - -planned := resource.Values{} -for k, v := range q.Values { - planned[k] = v -} -planned["max_time_in_queue"] = int64(900) - -g := &guard.Guard{API: c, Writable: true} -values, err := g.Update(ctx, queue, q.Key, q.Values, planned) -``` - -`guard.Update` re-reads the object and refuses if it changed since `q` was read, sends the change the way the route needs (the whole object for a Contact Center `PUT`), and reads the result back. A `*guard.Failure` says whether Webex refused the write, whether its outcome is unknown, or whether the object ended up different from the plan. - -## Regions - -`webexapi.NewHosts` takes the org's Contact Center data center (`us1`, `eu1`, `eu2`, `anz1`, `ca1`, `jp1`, `sg1`) and data region (`us`, `ca`, `eu`, `eun`, `in`, `au`). Each Contact Center data center has its own AI Agent Studio host. Contact Center refuses bursts of more than about 25 requests a second; give the client a `webexapi.Pacer` on the Contact Center host as `BeforeSend` to stay below that. diff --git a/skill/SKILL.md b/skill/SKILL.md index 5f69302..0291969 100644 --- a/skill/SKILL.md +++ b/skill/SKILL.md @@ -24,8 +24,6 @@ The CLI supports OAuth login with tokens stored in the OS keyring, or in a crede ```bash webex auth status # Show current user, org, token expiry webex auth list # List all stored users -webex auth token --output json # Access token with its expiry, user, and org -webex auth token --min-ttl 30m # Refresh first if under 30 minutes remain webex auth switch # Change default user webex auth set-folder-default # Set default user for current folder webex auth clear-folder-default # Remove folder default @@ -70,11 +68,6 @@ Aliases: `devices` for `device`, `meeting` for `meetings`, `msg` for `messaging` - `--paginate` — Auto-paginate list results - `--dry-run` — Print write requests (POST/PUT/DELETE/PATCH) without executing them; read operations still run normally - `--region us|ca|eu|eun|in|au` — Data region for region-specific hosts, used by `calling reports-detailed-call-history` (default: `us`). Also settable with `webex config set region ` or `WEBEX_REGION`. A `451` error means the org's data lives in another region — the error names the correct one. -- `--cc-region us1|eu1|eu2|anz1|ca1|jp1|sg1` — Contact Center data center, which picks the Contact Center and AI Agent Studio hosts (default: `us1`). Also `webex config set cc-region ` or `WEBEX_CC_REGION`. Ask the user which data center the org is in if Contact Center calls fail for an org outside the US. - -## Contact Center Updates Replace the Whole Object - -A Contact Center `update` (PUT) replaces the whole object: `webex cc team update --id X --body '{"name":"New"}'` clears every field the body leaves out. Get the object first, change the fields you mean to, and send the full body back. ## Contact Center `--orgid` Handling diff --git a/skill/cc/SKILL.md b/skill/cc/SKILL.md index 1d7caaa..fa860ca 100644 --- a/skill/cc/SKILL.md +++ b/skill/cc/SKILL.md @@ -345,7 +345,6 @@ webex cc address-book delete-entry-id --id | `bulk-export` | `--page`, `--page-size` | | `get` (aliases: `get-id`) | `--id` *(required)* | | `list-references` | `--id` *(required)*, `--type`, `--page`, `--page-size` | -| `list-v1` | `--page`, `--page-size` | | `create` | `--body`, `--body-file` | | `bulk-save` | `--body`, `--body-file` | | `update` (aliases: `update-id`) | `--id` *(required)*, `--body`, `--body-file` | @@ -451,7 +450,6 @@ webex cc address-book delete-entry-id --id | `list-team-csqs-team-id` | `--id` *(required)* | | `list-agent-csqs-ci-user-id` | `--ci-user-id` *(required)* | | `list-skill-csqs-ci-user-id` | `--id` *(required)* | -| `list-v2` | `--page`, `--page-size` | | `create` | `--body`, `--body-file` | | `bulk-save` | `--body`, `--body-file` | | `delete-references` (aliases: `delete-csq-references`) | `--body`, `--body-file` | @@ -529,7 +527,6 @@ webex cc address-book delete-entry-id --id | `bulk-export` | `--type`, `--page`, `--page-size` | | `get` (aliases: `get-id`) | `--id` *(required)*, `--include-names` | | `list-references` | `--id` *(required)*, `--type`, `--page`, `--page-size` | -| `list-v1` | `--page`, `--page-size` | | `create` | `--body`, `--body-file` | | `bulk-save` | `--body`, `--body-file` | | `purge-inactive` | `--next-start-id` | @@ -593,7 +590,6 @@ webex cc address-book delete-entry-id --id | `bulk-export` | `--page`, `--page-size` | | `get` (aliases: `get-id`) | `--id` *(required)* | | `list-references` | `--id` *(required)*, `--type`, `--page`, `--page-size` | -| `list-v1` | `--page`, `--page-size` | | `create` | `--active`, `--multimedia-profile-id`, `--name`, `--organization-id`, `--id`, `--version`, `--description`, `--system-default`, `--body`, `--body-file` | | `bulk-save` | `--body`, `--body-file` | | `purge-inactive` | `--next-start-id` | @@ -608,7 +604,6 @@ webex cc address-book delete-entry-id --id | `bulk-export` | `--page`, `--page-size` | | `get` (aliases: `get-id`) | `--id` *(required)* | | `list-references` | `--id` *(required)*, `--type`, `--page`, `--page-size` | -| `list-v1` | `--page`, `--page-size` | | `create` | `--body`, `--body-file` | | `bulk-save` | `--body`, `--body-file` | | `purge-inactive` | `--next-start-id` | @@ -637,7 +632,6 @@ webex cc address-book delete-entry-id --id | `bulk-export` | `--page`, `--page-size` | | `get` (aliases: `get-id`) | `--id` *(required)* | | `list-references` | `--id` *(required)*, `--type`, `--page`, `--page-size` | -| `list-v1` | `--page`, `--page-size` | | `create` | `--active`, `--name`, `--rank-queues-for-team`, `--site-id`, `--team-status`, `--team-type`, `--organization-id`, `--id`, `--version`, `--dialed-number`, `--capacity`, `--desktop-layout-id`, `--skill-profile-id`, `--multi-media-profile-id`, `--user-ids`, `--description`, `--system-default`, `--queue-rankings`, `--created-time`, `--last-updated-time`, `--body`, `--body-file` | | `bulk-save` | `--body`, `--body-file` | | `purge-inactive` | `--next-start-id` | @@ -672,7 +666,6 @@ webex cc address-book delete-entry-id --id | `list-references` | `--id` *(required)*, `--type`, `--page`, `--page-size` | | `get-dynamic-skill-id` | `--skill-id` *(required)*, `--search`, `--page`, `--page-size` | | `list-by-call-monitoring-config` (aliases: `list-call-monitoring-id`) | `--id` *(required)*, `--page`, `--page-size` | -| `list-v1` | `--page`, `--page-size` | | `get-agents-matching-skill-requirements` | `--search`, `--page`, `--page-size`, `--body`, `--body-file` | | `list-by-ids` (aliases: `get-ids`) | `--page`, `--page-size`, `--user-ids`, `--search`, `--queue-id`, `--body`, `--body-file` | | `update` (aliases: `update-id`) | `--id` *(required)*, `--body`, `--body-file` | diff --git a/testdata/golden/commands.json b/testdata/golden/commands.json deleted file mode 100644 index cab91d8..0000000 --- a/testdata/golden/commands.json +++ /dev/null @@ -1,78882 +0,0 @@ -[ - { - "path": "webex", - "short": "Webex CLI — manage Webex APIs", - "long": "A command-line interface for Webex APIs — Admin, Calling, Contact Center, Devices, Meetings, and Messaging.", - "flags": [ - { - "name": "cc-region", - "type": "string", - "usage": "Contact Center data center: us1, eu1, eu2, anz1, ca1, jp1, sg1 (default us1)" - }, - { - "name": "debug", - "type": "bool", - "default": "false", - "usage": "Enable debug logging of HTTP requests" - }, - { - "name": "dry-run", - "type": "bool", - "default": "false", - "usage": "Print write requests without executing them" - }, - { - "name": "max-retry", - "type": "int", - "default": "3", - "usage": "Max number of 429 retries before giving up (0 = no retries)" - }, - { - "name": "max-retry-timer", - "type": "int", - "default": "60", - "usage": "Max total seconds to wait across all 429 retries (0 = unlimited)" - }, - { - "name": "organization", - "type": "string", - "usage": "Override organization ID for this command" - }, - { - "name": "output", - "type": "string", - "default": "json", - "usage": "Output format: json, table, csv, raw" - }, - { - "name": "paginate", - "type": "bool", - "default": "false", - "usage": "Auto-paginate list results" - }, - { - "name": "region", - "type": "string", - "usage": "Data region for region-specific APIs: us, ca, eu, eun, in, au (default us)" - }, - { - "name": "token", - "type": "string", - "usage": "Webex API token (overrides stored login)" - }, - { - "name": "user", - "type": "string", - "usage": "Use a specific authenticated user (email)" - } - ] - }, - { - "path": "webex admin", - "short": "Webex Admin APIs", - "long": "Manage Webex Admin resources — people, organizations, licenses, roles, and more." - }, - { - "path": "webex admin admin-audit", - "short": "AdminAudit commands" - }, - { - "path": "webex admin admin-audit list-event-categories", - "short": "List Admin Audit Event Categories", - "long": "Get the list of all admin event categories.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-event-categories" - } - ] - }, - { - "path": "webex admin admin-audit list-events", - "short": "List Admin Audit Events", - "long": "List admin audit events in your organization. Several query parameters are available to filter the response.\n\nLong result sets will be split into [pages](/docs/basics#pagination).\n\n**NOTE**: A maximum of one year of audit events can be returned per request.", - "flags": [ - { - "name": "actor-id", - "type": "string", - "usage": "List events performed by this person, by ID." - }, - { - "name": "event-categories", - "type": "string", - "usage": "List events, by event categories." - }, - { - "name": "from", - "type": "string", - "usage": "List events which occurred after a specific date and time." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-events" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "max", - "type": "string", - "usage": "Limit the maximum number of events in the response. The maximum value is `200`." - }, - { - "name": "offset", - "type": "string", - "usage": "Offset from the first result that you want to fetch." - }, - { - "name": "org-id", - "type": "string", - "usage": "List events in this organization, by ID.", - "hidden": true - }, - { - "name": "to", - "type": "string", - "usage": "List events which occurred before a specific date and time." - } - ] - }, - { - "path": "webex admin analytics", - "short": "Analytics commands" - }, - { - "path": "webex admin analytics historical-data-related-meetings", - "short": "Historical Data related to Meetings", - "long": "Return aggregates of various metrics related to meetings for a given Webex site over a specified time range.\n\n
The base URL for these APIs is **analytics.webexapis.com**, which does not work with the **Try It** feature.
", - "flags": [ - { - "name": "from", - "type": "string", - "usage": "UTC Date starting from which the data needs to be returned" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for historical-data-related-meetings" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "site-url", - "type": "string", - "usage": "URL of the Webex site for which historical data is requested." - }, - { - "name": "to", - "type": "string", - "usage": "UTC Date up to which the data needs to be returned" - } - ] - }, - { - "path": "webex admin analytics historical-data-related-messaging", - "short": "Historical Data related to Messaging", - "long": "Returns daily aggregates of various metrics related to Webex messaging.\n\n
The base URL for these APIs is **analytics.webexapis.com**, which does not work with the **Try It** feature.
", - "flags": [ - { - "name": "from", - "type": "string", - "usage": "UTC date starting from which the data needs to be returned." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for historical-data-related-messaging" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "to", - "type": "string", - "usage": "UTC date up to which the data needs to be returned" - } - ] - }, - { - "path": "webex admin analytics historical-data-related-room-devices", - "short": "Historical Data related to Room Devices", - "long": "Returns daily aggregates of various metrics related to Room Devices.\n\n
The base URL for these APIs is **analytics.webexapis.com**, which does not work with the **Try It** feature.
", - "flags": [ - { - "name": "from", - "type": "string", - "usage": "Starting UTC Date from which historical data should be returned." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for historical-data-related-room-devices" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "to", - "type": "string", - "usage": "Ending UTC Date for which data should be returned." - } - ] - }, - { - "path": "webex admin archive-users", - "short": "ArchiveUsers commands" - }, - { - "path": "webex admin archive-users get", - "short": "Get Archive User", - "long": "The `useruuid` is the unique identifier of a user in the system. It is assigned when the user is created and can be retrieved through **GET Users** API.
\n\n**Authorization**\n\nOAuth token issued by the Identity Broker.\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`.\n- `identity:people_read`.\n\nThe following administrators can use this API:\n\n- `Account in the specified organization with one of the following roles: id_full_admin, id_user_admin, id_readonly_admin`.\n- `Proxy account managing the specified organization with one of the following roles: id_full_admin, id_user_admin, id_readonly_admin`.\n\n
", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "org-id", - "type": "string", - "usage": "The unique identifier for the organization.", - "hidden": true - }, - { - "name": "useruuid", - "type": "string", - "usage": "The unique identifier for the user.", - "required": true - } - ] - }, - { - "path": "webex admin archive-users query", - "short": "Query Archive User", - "long": "Retrieves archived user information for the specified organization. Supported attributes are `id`, which is the unique identifier of a user in the system, and `username`. It is assigned when the user is created and can be retrieved through **GET Users** API.
\n\n**Authorization**\n\nOAuth token issued by the Identity Broker.\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`.\n- `identity:people_read`.\n\nThe following administrators can use this API:\n\n- `Account in the specified organization with one of the following roles: id_full_admin, id_user_admin, id_readonly_admin`.\n- `Proxy account managing the specified organization with one of the following roles: id_full_admin, id_user_admin, id_readonly_admin`.\n\n
", - "flags": [ - { - "name": "filter", - "type": "string", - "usage": "A SCIM-style filter expression used to search archived users. Supported attributes are `username` and `id`, and only the `eq` operator is supported. Examples: - `username eq \"test_user_1@example.com\"` - `id eq \"40929cc6-2df2-4ab5-871c-ec8e38f07b93\"`" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for query" - }, - { - "name": "org-id", - "type": "string", - "usage": "The unique identifier for the organization.", - "hidden": true - } - ] - }, - { - "path": "webex admin authorizations", - "short": "Authorizations commands" - }, - { - "path": "webex admin authorizations delete", - "short": "Delete authorization", - "long": "Deletes an authorization by authorization ID.\n\nSpecify the authorization Id in the `authorizationId` parameter in the URI, which was listed in the list resource.", - "flags": [ - { - "name": "authorization-id", - "type": "string", - "usage": "The unique identifier for the message.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - } - ] - }, - { - "path": "webex admin authorizations delete-org-client-id", - "short": "Delete authorization of org and client ID", - "long": "Deletes an authorization by org ID and client ID.", - "flags": [ - { - "name": "client-id", - "type": "string", - "usage": "The unique oAuth client id." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-org-client-id" - }, - { - "name": "org-id", - "type": "string", - "usage": "The ID of the organization to which this person belongs. If no orgId is specified, use orgId from the OAuth token.", - "hidden": true - } - ] - }, - { - "path": "webex admin authorizations get-expiration-status-token", - "short": "Get expiration status for a token", - "long": "Epoch-based expiration time for the token.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-expiration-status-token" - } - ] - }, - { - "path": "webex admin authorizations list-user", - "short": "List authorizations for a user", - "long": "Lists all authorizations for a user. Either `personId` or `personEmail` must be provided. This API does not support pagination.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-user" - }, - { - "name": "person-email", - "type": "string", - "usage": "List authorizations for this user email." - }, - { - "name": "person-id", - "type": "string", - "usage": "List authorizations for this user id." - } - ] - }, - { - "path": "webex admin classifications", - "short": "Classifications commands" - }, - { - "path": "webex admin classifications list", - "short": "List classifications", - "long": "List all the space classifications configured in your org.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - } - ] - }, - { - "path": "webex admin data-sources", - "short": "DataSources commands" - }, - { - "path": "webex admin data-sources delete", - "short": "Delete a Data Source", - "long": "Deletes a data source by ID.\n\nSpecify the data source ID in the `dataSourceId` URI parameter.", - "flags": [ - { - "name": "data-source-id", - "type": "string", - "usage": "The unique identifier for the data source.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - } - ] - }, - { - "path": "webex admin data-sources get", - "short": "Retrieve Data Source Details", - "long": "Retrieves details for a data source by ID. Use a Service App token with the `spark-admin:datasource_read` scope.", - "flags": [ - { - "name": "data-source-id", - "type": "string", - "usage": "The unique identifier for the data source.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - } - ] - }, - { - "path": "webex admin data-sources get-all", - "short": "Retrieve All Data Sources", - "long": "Lists all data sources registered by the Service App. Requires the `spark-admin:datasource_read` scope.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-all" - } - ] - }, - { - "path": "webex admin data-sources get-schema", - "short": "Retrieve Details of a Specific Data Source Schema", - "long": "Retrieves details for a specific data source schema by schema ID. A valid API access token is required, but no specific scope is needed.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-schema" - }, - { - "name": "schema-id", - "type": "string", - "usage": "The unique identifier for the schema.", - "required": true - } - ] - }, - { - "path": "webex admin data-sources get-schemas", - "short": "Retrieve Data Source Schemas", - "long": "Lists the available data source schemas. A valid API access token is required, but no specific scope is needed.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-schemas" - } - ] - }, - { - "path": "webex admin data-sources register", - "short": "Register a Data Source", - "long": "Register a data source with the Webex BYODS system. Authenticate using a Service App with the `spark-admin:datasource_write` scope.\nSchema IDs determine the types of data Webex sends to the DAP and the expected responses. Use the Data Source Schemas endpoints to inspect the available schemas.", - "flags": [ - { - "name": "audience", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for register" - }, - { - "name": "nonce", - "type": "string" - }, - { - "name": "schema-id", - "type": "string" - }, - { - "name": "subject", - "type": "string" - }, - { - "name": "token-lifetime-minutes", - "type": "int64", - "default": "0" - }, - { - "name": "url", - "type": "string" - } - ] - }, - { - "path": "webex admin data-sources update", - "short": "Update a Data Source", - "long": "Updates a data source. The fields you can update are `audience`, `subject`, `nonce`, `url`, and `tokenLifetimeMinutes`.\nYou can set `status` from `active` to `disabled` only if you provide an `errorMessage`, which may be shown to the customer administrator in Control Hub.\nUpdate tokens before they expire to prevent service interruption.", - "flags": [ - { - "name": "audience", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "data-source-id", - "type": "string", - "usage": "The unique identifier for the data source.", - "required": true - }, - { - "name": "error-message", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "nonce", - "type": "string" - }, - { - "name": "schema-id", - "type": "string" - }, - { - "name": "status", - "type": "string" - }, - { - "name": "subject", - "type": "string" - }, - { - "name": "token-lifetime-minutes", - "type": "int64", - "default": "0" - }, - { - "name": "url", - "type": "string" - } - ] - }, - { - "path": "webex admin domain-management", - "short": "DomainManagement commands" - }, - { - "path": "webex admin domain-management claim", - "short": "Claim Domain", - "long": "This endpoint helps claim the given domain within the specified organization. The domain needs to be verified before it can be claimed.\n\n**Note**\n\n\nThere's an organization-level boolean flag called 'enforceVerifiedDomains'. If this flag is set to false, we won't put any user in the organization into a transient state when verifying or claiming a domain.\nCustomers can still create users within the organization who don't use the verified domains as their email. However, if the flag is set to true, all users in the organization must use one of the verified domains as their email.\nThis flag defines whether the organization enforces user email verification within the organization. If set to true, all users inside the organization must use one of the verified domains.\nThis flag is effective only after the admin has verified at least one email domain.\n\n\n**Possible Error:**\n\n- 400: The request was a Bad Request. This error occurs if the domain is not verified.\n\n**Authorization:**\n\nAn 'OAuth' token issued by the 'Identity Broker' is required to access this endpoint. The token must include one of the following scopes:\n\n- `Identity:Organization`\n\n- `identity:organizations_rw`\n\n**Administrator Roles:**\n\nThe following administrators can use this API:\n\n- `id_full_admin`", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for claim" - }, - { - "name": "org-id", - "type": "string", - "usage": "The Webex Identity-assigned organization identifier for a user's organization.", - "hidden": true - } - ] - }, - { - "path": "webex admin domain-management get-verification-token", - "short": "Get Domain Verification Token", - "long": "This endpoint helps generate a token for a given domain within the specified organization. The user needs to add this token as a 'TXT' record to the DNS server.\n\n**Possible Error:**\n\n- 409: The request encountered a resource conflict. This error occurs if the domain is either claimed by another organization or by the same organization.\n\n**Authorization:**\n\nAn 'OAuth' token issued by the 'Identity Broker' is required to access this endpoint. The token must include one of the following scopes:\n\n- `Identity:Organization`\n\n- `identity:organizations_rw`\n\n**Administrator Roles:**\n\nThe following administrators can use this API:\n\n- `id_full_admin`", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "domain", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-verification-token" - }, - { - "name": "org-id", - "type": "string", - "usage": "The Webex Identity-assigned organization identifier for a user's organization.", - "hidden": true - } - ] - }, - { - "path": "webex admin domain-management unclaim", - "short": "Unclaim Domain", - "long": "This API is used to unclaim a domain for the organization. The domain will remain verified, and domain enforcement will still apply to the given organization.\n\n**Possible Error:**\n\n- 400: The request was a Bad Request. The domain cannot be unclaimed. This error occurs if the requested parameter is invalid.\n\n**Authorization:**\n\nAn 'OAuth' token issued by the 'Identity Broker' is required to access this endpoint. The token must include one of the following scopes:\n\n- `Identity:Organization`\n\n- `identity:organizations_rw`\n\n**Administrator Roles:**\n\nThe following administrators can use this API:\n\n- `id_full_admin`", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "domain", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for unclaim" - }, - { - "name": "org-id", - "type": "string", - "usage": "The Webex Identity-assigned organization identifier for a user's organization.", - "hidden": true - } - ] - }, - { - "path": "webex admin domain-management unverify", - "short": "Unverify Domain", - "long": "After you unclaim the domain, it will still be verified. Domain enforcement will still apply to the organization. The unverify endpoint helps to remove the domain ownership verification for the organization.\n\n**Possible Error:**\n\n- 400: The request was a Bad Request. The domain cannot be unverified. This error occurs if the domain is still claimed.\n\n- 404: The request was Not Found. This error occurs if the domain is not associated with the organization.\n\n**Authorization:**\n\nAn 'OAuth' token issued by the 'Identity Broker' is required to access this endpoint. The token must include one of the following scopes:\n\n- `Identity:Organization`\n\n- `identity:organizations_rw`\n\n**Administrator Roles:**\n\nThe following administrators can use this API:\n\n- `id_full_admin`", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "domain", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for unverify" - }, - { - "name": "org-id", - "type": "string", - "usage": "The Webex Identity-assigned organization identifier for a user's organization.", - "hidden": true - }, - { - "name": "remove-pending", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex admin domain-management verify", - "short": "Verify Domain", - "long": "This endpoint helps verify a given domain within the specified organization. This API verifies domain ownership by looking up and validating the 'TXT' record for the domain.\nOnce verified, domain enforcement will be applied to the organization. Any users in the organization whose email domain doesn't match one of the verified domains will be marked as transient.\n\nIf you want to verify and claim the domain, just set the 'claimDomain' parameter to true. By default, it's set to false, which will only verify the domain.\n\n**Possible Errors:**\n\n- 400: The request was a Bad Request. The domain can't be verified. This error happens if the user didn't request a token before trying to verify the domain.\n\n- 409: The request resulted in a resource conflict. This error occurs if the domain has already been claimed by another organization.\n\n**Authorization:**\n\nAn 'OAuth' token issued by the 'Identity Broker' is required to access this endpoint. The token must include one of the following scopes:\n\n- `Identity:Organization`\n\n- `identity:organizations_rw`\n\n**Administrator Roles:**\n\nThe following administrators can use this API:\n\n- `id_full_admin`", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "claim-domain", - "type": "bool", - "default": "false" - }, - { - "name": "domain", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for verify" - }, - { - "name": "org-id", - "type": "string", - "usage": "The Webex Identity-assigned organization identifier for a user's organization.", - "hidden": true - }, - { - "name": "reserve-domain", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex admin events", - "short": "Events commands" - }, - { - "path": "webex admin events get", - "short": "Get Event Details", - "long": "Shows details for an event, by event ID.\n\nSpecify the event ID in the `eventId` parameter in the URI.", - "flags": [ - { - "name": "event-id", - "type": "string", - "usage": "The unique identifier for the event.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - } - ] - }, - { - "path": "webex admin events list", - "short": "List Events", - "long": "List events in your organization. Several query parameters are available to filter the events returned in the response.\n\nLong result sets will be split into [pages](/docs/basics#pagination).", - "flags": [ - { - "name": "actor-id", - "type": "string", - "usage": "List events performed by this person, by person ID." - }, - { - "name": "from", - "type": "string", - "usage": "List events which occurred after a specific date and time." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "max", - "type": "string", - "usage": "Limit the maximum number of events in the response. Value must be between 1 and 1000, inclusive." - }, - { - "name": "resource", - "type": "string", - "usage": "List events with a specific resource type." - }, - { - "name": "service-type", - "type": "string", - "usage": "List events for a specific service type. This parameter is only applicable and mandatory when resource is set to `convergedRecordings`." - }, - { - "name": "to", - "type": "string", - "usage": "List events that occurred before a specific date and time. If not specified, events up to the present time will be listed. Cannot be set to a future date relative to the current time." - }, - { - "name": "type", - "type": "string", - "usage": "List events with a specific event type." - } - ] - }, - { - "path": "webex admin groups", - "short": "Groups commands" - }, - { - "path": "webex admin groups create", - "short": "Create a Group", - "long": "Create a new group for a given organization. The group may optionally be created with group members.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - } - ] - }, - { - "path": "webex admin groups delete", - "short": "Delete a Group", - "long": "Remove a group from the system.\n\nSpecify the group ID in the `groupId` parameter in the URI.", - "flags": [ - { - "name": "group-id", - "type": "string", - "usage": "A unique identifier for the group.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - } - ] - }, - { - "path": "webex admin groups get", - "short": "Get Group Details", - "long": "Get details for a group, by ID.\n\nOptionally, the members may be retrieved with this request. The maximum number of members returned is 500.", - "flags": [ - { - "name": "group-id", - "type": "string", - "usage": "A unique identifier for the group.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "include-members", - "type": "string", - "usage": "Include the members as part of the response." - } - ] - }, - { - "path": "webex admin groups get-members", - "short": "Get Group Members", - "long": "Gets the members of a group.\n\n* The default maximum members returned is 500.\n\n* Control parameters is available to page through the members and to control the size of the results.", - "flags": [ - { - "name": "count", - "type": "string", - "usage": "Non-negative integer that specifies the desired number of search results per page. Maximum value for the count is 500." - }, - { - "name": "group-id", - "type": "string", - "usage": "A unique identifier for the group.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-members" - }, - { - "name": "start-index", - "type": "string", - "usage": "The index to start for group pagination." - } - ] - }, - { - "path": "webex admin groups list-search", - "short": "List and Search Groups", - "long": "List groups in your organization.\n\n* Set the `includeMembers` parameter to `true` to return group members. The total number of members returned is limited to 500.\n\n* Use the `startIndex` and `count` parameters to page through result set.\n\n* To search for a specific group use the `filter` parameter.\n\n* Use `sortBy` parameter to sort the responses by `id` or `displayName`.", - "flags": [ - { - "name": "attributes", - "type": "string", - "usage": "The attributes to return." - }, - { - "name": "count", - "type": "string", - "usage": "Specifies the desired number of search results per page." - }, - { - "name": "filter", - "type": "string", - "usage": "Searches the group by `displayName` with an operator and a value. The available operators are `eq` (equal) and `sw` (starts with). Only `displayName` can be used to filter results." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-search" - }, - { - "name": "include-members", - "type": "string", - "usage": "Optionally return group members in the response. The maximum number of members returned is 500." - }, - { - "name": "org-id", - "type": "string", - "usage": "List groups in this organization. Only admin users of another organization (such as partners) may use this parameter.", - "hidden": true - }, - { - "name": "sort-by", - "type": "string", - "usage": "Sort the results based by group `displayName`." - }, - { - "name": "sort-order", - "type": "string", - "usage": "Sort results alphabetically by group display name, in ascending or descending order." - }, - { - "name": "start-index", - "type": "string", - "usage": "The index to start for group pagination." - } - ] - }, - { - "path": "webex admin groups update", - "short": "Update a Group", - "long": "Update the group details, by ID.\n\nSpecify the group ID in the `groupId` parameter in the URI.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "group-id", - "type": "string", - "usage": "A unique identifier for the group.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - } - ] - }, - { - "path": "webex admin guest-management", - "short": "GuestManagement commands" - }, - { - "path": "webex admin guest-management create", - "short": "Create a Guest", - "long": "Create a new token for a single guest user. The Service App that creates the guest must have the scope `guest-issuer:write`.\n\nGuests are implicitly created by retrieving the guest access token.\n\nRepeated calls to this API with the same `subject` will create additional tokens without invalidating previous ones. Tokens are valid until the `expiresIn`.\n\nGuests can be renamed by supplying the same `subject` and changing the `displayName.`\n\nTo retrieve a new token for an existing guest, please provide the existing guest's `subject`. Tokens are valid until `expiresIn`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "display-name", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "subject", - "type": "string" - } - ] - }, - { - "path": "webex admin guest-management get-count", - "short": "Get Guest Count", - "long": "To retrieve the number of guests, the scopes `guest-issuer:read` or `guest-issuer:write` are needed.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-count" - } - ] - }, - { - "path": "webex admin hybrid-clusters", - "short": "HybridClusters commands" - }, - { - "path": "webex admin hybrid-clusters get", - "short": "Get Hybrid Cluster Details", - "long": "Shows details for a hybrid cluster, by ID.\n\nOnly an admin auth token with the `spark-admin:hybrid_clusters_read` scope can see cluster details.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "hybrid-cluster-id", - "type": "string", - "usage": "The ID of the cluster.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": " Find the cluster in this specific organization. If this is not specified, the organization of the caller will be used. ", - "hidden": true - } - ] - }, - { - "path": "webex admin hybrid-clusters list", - "short": "List Hybrid Clusters", - "long": "List hybrid clusters for an organization. If no `orgId` is specified, the default is the organization of the authenticated user.\n\nOnly an admin auth token with the `spark-admin:hybrid_clusters_read` scope can list clusters.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "org-id", - "type": "string", - "usage": "List hybrid clusters in this organization. If an organization is not specified, the organization of the caller will be used.", - "hidden": true - } - ] - }, - { - "path": "webex admin hybrid-connectors", - "short": "HybridConnectors commands" - }, - { - "path": "webex admin hybrid-connectors get", - "short": "Get Hybrid Connector Details", - "long": "Shows details for a hybrid connector, by ID.\n\nOnly an admin auth token with the `spark-admin:hybrid_connectors_read` scope can see connector details.", - "flags": [ - { - "name": "connector-id", - "type": "string", - "usage": "The ID of the connector.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - } - ] - }, - { - "path": "webex admin hybrid-connectors list", - "short": "List Hybrid Connectors", - "long": "List hybrid connectors for an organization. If no `orgId` is specified, the default is the organization of the authenticated user.\n\nOnly an admin auth token with the `spark-admin:hybrid_connectors_read` scope can list connectors.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "org-id", - "type": "string", - "usage": "List hybrid connectors in this organization. If an organization is not specified, the organization of the caller will be used.", - "hidden": true - } - ] - }, - { - "path": "webex admin identity-org", - "short": "IdentityOrg commands" - }, - { - "path": "webex admin identity-org generate-otp", - "short": "Generate OTP", - "long": "This API allows an admin to generate a One-Time Password (OTP) for user accounts with `userNameType` set as `partner-upn`. The OTP is used by users to log in to any Webex application, whereupon they are asked to change their password.\nThe OTP generated by this API has a default length of 6 digits and expires in 7 days.\n\nSeveral OTPs can be active for the same user. When the user successfully uses an OTP, all other OTPs are automatically revoked.\n\nThe creation of OTPs is logged in the [Admin Audit Events](https://developer.webex.com/docs/api/v1/admin-audit-events).\n\n**Possible Error:**\n\n- 403: The request was forbidden. OTP generation is restricted to users with a `userNameType` of `partner-upn`. This error occurs if the user does not meet the required criteria for OTP generation.\n\n**Authorization:**\n\nAn OAuth token issued by the Identity Broker is required to access this endpoint. The token must include one of the following scopes:\n\n- `Identity:one_time_password`\nor\n\n- `Identity:Config`\n\n**Administrator Roles:**\n\nThe following administrators have permission to use this API:\n\n- `Org Full Admin`: Can generate OTPs for non-email-type users in their organization.\n\n- `Partner Full Admin`: Can generate OTPs for User/Machine Accounts in Customer Orgs.\n\n- `Org User Admin`: Can generate OTPs for User/Machine Accounts within their organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for generate-otp" - }, - { - "name": "org-id", - "type": "string", - "usage": "The Webex Identity-assigned organization identifier for a user's organization.", - "hidden": true - }, - { - "name": "user-id", - "type": "string", - "usage": "The Common Identity-assigned user identifier for an existing user (`entryUUID`).", - "required": true - } - ] - }, - { - "path": "webex admin identity-org get", - "short": "Get an organization", - "long": "
\n\n**Authorization**\n\nOAuth token rendered by identity broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:organizations_rw`\n\n- `identity:organizations_read`\n\n
", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "org-id", - "type": "string", - "usage": "Webex Identity assigned organization identifier.", - "hidden": true - } - ] - }, - { - "path": "webex admin identity-org update", - "short": "Update an organization", - "long": "
\n\n**Authorization**\n\nOAuth token rendered by identity broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:organizations_rw`\n\n
\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n
\n\n**Usage**:\n\n1. Input JSON must contain schema: \"urn:cisco:codev:identity:organization:core:1.0\".", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "display-name", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "org-id", - "type": "string", - "usage": "Webex Identity assigned organization identifier.", - "hidden": true - }, - { - "name": "preferred-language", - "type": "string" - }, - { - "name": "schemas", - "type": "stringSlice", - "default": "[]" - } - ] - }, - { - "path": "webex admin identity-org update-authentication-configuration-settings", - "short": "Update Organization Authentication Configuration Settings", - "long": "Update the authentication configuration details, by organizationID.\nSpecify the organization ID in the `orgId` parameter in the URI.\n\n
\n\n**Authorization**\n\nOAuth token rendered by identity broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:organizations_rw`\n\n
\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n
\n\n**Usage**:\n\n1. Input JSON must contain schema: \"urn:cisco:codev:identity:idbroker:authnconfig:schemas:1.0\".", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-authentication-configuration-settings" - }, - { - "name": "mfa-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "org-id", - "type": "string", - "usage": "A unique identifier for the org.", - "hidden": true - }, - { - "name": "remember-my-login-id", - "type": "bool", - "default": "false" - }, - { - "name": "remember-my-login-id-duration", - "type": "int64", - "default": "0" - }, - { - "name": "schemas", - "type": "stringSlice", - "default": "[]" - } - ] - }, - { - "path": "webex admin identity-org update-password-policy", - "short": "Update Organization Password Policy", - "long": "Update Organization Password Policy, by organizationID.\nSpecify the organization ID in the `orgId` parameter in the URI.\n\n
\n\n**Authorization**\n\nOAuth token rendered by identity broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:organizations_rw`\n\n
\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n
\n\n**Usage**:\n\n1. Input JSON must contain schema: \"urn:cisco:codev:identity:idbroker:pwdpolicy:schemas:1.0\".", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-password-policy" - }, - { - "name": "history-count", - "type": "string" - }, - { - "name": "max-password-age", - "type": "string" - }, - { - "name": "minimum-cap-alpha", - "type": "string" - }, - { - "name": "minimum-length", - "type": "string" - }, - { - "name": "minimum-low-alpha", - "type": "string" - }, - { - "name": "minimum-numeric", - "type": "string" - }, - { - "name": "minimum-special", - "type": "string" - }, - { - "name": "not-acceptable-strings", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "A unique identifier for the org.", - "hidden": true - }, - { - "name": "schemas", - "type": "stringSlice", - "default": "[]" - } - ] - }, - { - "path": "webex admin licenses", - "short": "Licenses commands" - }, - { - "path": "webex admin licenses assign-users", - "short": "Assign Licenses to Users", - "long": "Assign licenses and attendee `siteUrls` to existing users. Only an admin can assign licenses. Only existing users can be assigned a license. Assign meeting licenses to users outside your organization (Status will be pending until the user accepts the invite)\n\nAt least one of the following body parameters is required to assign license to the user: `email`, `personId`. For Calling license assignment, properties `phoneNumber` or `extension` are required. If `phoneNumber` is not provided then `locationId` is mandatory.\n\nWhen assigning licenses and attendee siteUrls to a user who does not belong to the organization, the licenses and siteUrls remain in pending state until the user accepts them. The `pendingLicenses` and `pendingSiteUrls` are part of the response.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for assign-users" - } - ] - }, - { - "path": "webex admin licenses get-license", - "short": "Get License Details", - "long": "Shows details for a license, by ID.\n\nSpecify the license ID in the `licenseId` parameter in the URI.\nUse the optional query parameter `includeAssignedTo` to get a list of all objects that are assigned with the license. The objects include but not limited to, users including external users. Long result sets will be split into [pages](/docs/basics#pagination).\n\nResponse properties that are not applicable to the license will not be present in the response.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-license" - }, - { - "name": "include-assigned-to", - "type": "string", - "usage": "The type of object to whom the license is assigned to." - }, - { - "name": "license-id", - "type": "string", - "usage": "The unique identifier for the license.", - "required": true - }, - { - "name": "limit", - "type": "string", - "usage": "A limit on the number of users to be returned in the response. Applicable only if `includeAssignedTo` is populated. limit cannot be more than 300." - }, - { - "name": "next", - "type": "string", - "usage": "List the next set of users. Applicable only if `includeAssignedTo` is populated." - } - ] - }, - { - "path": "webex admin licenses list", - "short": "List Licenses", - "long": "List all licenses for a given organization. If no `orgId` is specified, the default is the organization of the authenticated user.\n\nResponse properties that are not applicable to the license will not be present in the response.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "org-id", - "type": "string", - "usage": "List licenses for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex admin live-monitoring", - "short": "LiveMonitoring commands" - }, - { - "path": "webex admin live-monitoring get-meeting-metrics-categorized-country", - "short": "Get Live Meeting metrics categorized by Country", - "long": "Retrieve live meeting metrics categorized by country for a specific meeting site or for all meeting sites owned by the customer. \n\nTo retrieve live monitoring information, you must use an administrator token with the `analytics:read_all` [scope](/docs/integrations#scopes). The authenticated user must be a read-only or full administrator of the organization to which the meeting belongs and must not be an external administrator.\n\nTo use this endpoint, the org needs to be licensed for the Webex Pro Pack.\n\nA rate limit of one API call per minute applies to each customer organization", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-meeting-metrics-categorized-country" - }, - { - "name": "site-ids", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "site-url", - "type": "string" - } - ] - }, - { - "path": "webex admin meeting-qualities", - "short": "MeetingQualities commands" - }, - { - "path": "webex admin meeting-qualities get", - "short": "Get Meeting Qualities", - "long": "Get quality data for a meeting, by `meetingId`. Only organization administrators can retrieve meeting quality data.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the maximum number of media sessions in the response." - }, - { - "name": "meeting-id", - "type": "string", - "usage": "Unique identifier for the specific meeting instance. **Note:** The `meetingId` can be obtained via the Meeting List API when meetingType=meeting. The `id` attribute in the Meeting List Response is what is needed, for example, `e5dba9613a9d455aa49f6ffdafb6e7db_I_191395283063545470`." - }, - { - "name": "offset", - "type": "string", - "usage": "Offset from the first result that you want to fetch." - } - ] - }, - { - "path": "webex admin org-contacts", - "short": "OrgContacts commands" - }, - { - "path": "webex admin org-contacts bulk-create-update", - "short": "Bulk Create or Update Contacts", - "long": "Create or update contacts in bulk. Update an existing contact by specifying the contact ID in the `contactId` parameter in the request body.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-create-update" - }, - { - "name": "orgid", - "type": "string", - "usage": "Webex Identity assigned organization identifier for the user's organization or the organization he manages.", - "hidden": true - } - ] - }, - { - "path": "webex admin org-contacts bulk-delete", - "short": "Bulk Delete Contacts", - "long": "Delete contacts in bulk.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-delete" - }, - { - "name": "object-ids", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "orgid", - "type": "string", - "usage": "Webex Identity assigned organization identifier for the user's organization or the organization he manages.", - "hidden": true - }, - { - "name": "schemas", - "type": "string" - } - ] - }, - { - "path": "webex admin org-contacts create", - "short": "Create a Contact", - "long": "Creating a new contact for a given organization requires an org admin role.\n\nAt least one of the following body parameters: `phoneNumbers`, `emails`, `sipAddresses` is required to create a new contact for source \"CH\",\n`displayName` is required to create a new contact for source \"Webex4Broadworks\".\n\nUse the optional `groupIds` field to add group IDs in an array within the organisation contact. This will become a group contact.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "orgid", - "type": "string", - "usage": "Webex Identity assigned organization identifier for the user's organization or the organization he manages.", - "hidden": true - } - ] - }, - { - "path": "webex admin org-contacts delete", - "short": "Delete a Contact", - "long": "Remove a contact from the organization. Only an admin can remove a contact.\n\nSpecify the organization ID in the `orgId` parameter in the URI, and specify the contact ID in the `contactId` parameter in the URI.", - "flags": [ - { - "name": "contact-id", - "type": "string", - "usage": "The contact ID.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "orgid", - "type": "string", - "usage": "Webex Identity assigned organization identifier for the user's organization or the organization he manages.", - "hidden": true - } - ] - }, - { - "path": "webex admin org-contacts get", - "short": "Get a Contact", - "long": "Shows details for an organization contact by ID.\nSpecify the organization ID in the `orgId` parameter in the URI, and specify the contact ID in the `contactId` parameter in the URI.\n\n**NOTE**:\nThe `orgId` used in the path for this API are the org UUIDs. They follow a xxxx-xxxx-xxxx-xxxx pattern. If you have an orgId in base64 encoded format (starting with Y2.....) you need to base64 decode the id and extract the UUID from the slug, before you use it in your API call.", - "flags": [ - { - "name": "contact-id", - "type": "string", - "usage": "The contact ID.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "orgid", - "type": "string", - "usage": "Webex Identity assigned organization identifier for the user's organization or the organization he manages.", - "hidden": true - } - ] - }, - { - "path": "webex admin org-contacts list", - "short": "List Contacts", - "long": "List contacts in the organization. The default limit is `100`.\n\n`keyword` can be the value of \"displayName\", \"firstName\", \"lastName\", \"email\". An empty string of `keyword` means get all contacts.\n\n`groupIds` is a comma separated list group IDs. Results are filtered based on those group IDs.\n\nLong result sets will be split into [pages](/docs/basics#pagination).", - "flags": [ - { - "name": "group-ids", - "type": "string", - "usage": "Filter contacts based on groups." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "keyword", - "type": "string", - "usage": "List contacts with a keyword." - }, - { - "name": "limit", - "type": "string", - "usage": "Limit the maximum number of contact in the response. + Default: 100 " - }, - { - "name": "orgid", - "type": "string", - "usage": "The organization ID.", - "hidden": true - }, - { - "name": "source", - "type": "string", - "usage": "List contacts with source." - } - ] - }, - { - "path": "webex admin org-contacts update", - "short": "Update a Contact", - "long": "Update details for contact by ID. Only an admin can update a contact.\nSpecify the organization ID in the `orgId` parameter in the URI, and specify the contact ID in the `contactId` parameter in the URI.\n\nUse the optional `groupIds` field to update the group IDs by changing the existing array. You can add or remove one or all groups. To remove all associated groups, pass an empty array in the `groupIds` field.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "contact-id", - "type": "string", - "usage": "The contact ID.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "orgid", - "type": "string", - "usage": "Webex Identity assigned organization identifier for the user's organization or the organization he manages.", - "hidden": true - } - ] - }, - { - "path": "webex admin organizations", - "short": "Organizations commands" - }, - { - "path": "webex admin organizations delete", - "short": "Delete Organization", - "long": "Deletes an organization, by ID. It may take up to 10 minutes for the organization to be deleted after the response is returned.\n

\nSpecify the org ID in the `orgId` parameter in the URI.\n\n
Deleting your organization permanently deletes all of the information associated with your organization and is irreversible.
\n\nDeleting an Organization may fail with a HTTP 409 Conflict response and encounter one or more of the errors described below. Resolve these conditions to allow the delete to succeed.\n

\n\n+ Org cannot be deleted as it has Linked sites.\n\n+ Org cannot be deleted as it has active subscriptions or licenses.\n\n+ Org cannot be deleted as [Directory Synchronization](https://developer.webex.com/docs/api/v1/broadworks-enterprises/get-directory-sync-status-for-an-enterprise) is enabled.\n\n+ Org cannot be deleted as it has more than 1 user.\n\n+ Org cannot be deleted as it has more than 1 managed by relationship.\n\n+ Org cannot be deleted as it has managed orgs.\n\n
\nWhen deleting a Webex for BroadWorks Organization with BroadWorks Directory Synchronization enabled, a prerequisite is to disable BroadWorks Directory Synchronization for the given Organization. Refer to the [Organization Deletion](https://developer.webex.com/docs/api/guides/webex-for-broadworks-developers-guide#organization-deletion) section of the [Webex for BroadWorks](/docs/api/guides/webex-for-broadworks-developers-guide) guide for more information.\n
", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "org-id", - "type": "string", - "usage": "The unique identifier for the organization.", - "hidden": true - } - ] - }, - { - "path": "webex admin organizations get", - "short": "Get Organization Details", - "long": "Shows details for an organization, by ID.\n\nSpecify the org ID in the `orgId` parameter in the URI.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "org-id", - "type": "string", - "usage": "The unique identifier for the organization.", - "hidden": true - } - ] - }, - { - "path": "webex admin organizations list", - "short": "List Organizations", - "long": "List all organizations visible by your account. The results will not be [paginated](/docs/basics#pagination).", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - } - ] - }, - { - "path": "webex admin partner-administrators", - "short": "PartnerAdministrators commands" - }, - { - "path": "webex admin partner-administrators assign-admin-customer", - "short": "Assign partner admin to a customer", - "long": "Assign a specific Partner Admin to a customer organization. The partner admin is a user that has the Partner Administrator role.\nOther partner roles, such as Partner Full Administrator are not applicable for this API, since this role manages all customer organizations.\n\nThis API can be used b a Partner Full Admin.\n\nSpecify the `orgId` and the `personId` in the path param.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for assign-admin-customer" - }, - { - "name": "org-id", - "type": "string", - "usage": "The ID of the customer organization.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "User ID of the partner admin in the partners org.", - "required": true - } - ] - }, - { - "path": "webex admin partner-administrators get-all-admins-assigned-customer", - "short": "Get all partner admins assigned to a customer", - "long": "For a given customer, get all the partner admins with their role details. This does not include partner admins who have access through Customer Groups.\nThis API can be used by Partner Full Admins.\n\nSpecify the `orgId` in the path parameter.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-all-admins-assigned-customer" - }, - { - "name": "org-id", - "type": "string", - "usage": "List partner admins associated with this customer org ID.", - "hidden": true - } - ] - }, - { - "path": "webex admin partner-administrators get-all-customers-managed-admin", - "short": "Get all customers managed by a partner admin", - "long": "Get all customer organizations managed by given partner admin, in the `managedBy` request parameter. The `managedBy` user typically has the role of a Partner Admin. In case where a Partner Full Admin or Partner Read-Only admin is selected an error like \"The user already has access to all customers managed by their partner organization.\" is shown as a Partner Admin (Full and Read-Only) is able to manage all customers by default. This does not include customers managed through Customer Groups.\n\nThis API can be invoked by Partner Full Admin and Partner Readonly Admin.\nSpecify the `personId` in the `managedBy` parameter in the URI.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-all-customers-managed-admin" - }, - { - "name": "managed-by", - "type": "string", - "usage": "List customer orgs associated with this person ID." - } - ] - }, - { - "path": "webex admin partner-administrators revoke-all-admin-roles-person-id", - "short": "Revoke all partner admin roles for a given person ID", - "long": "Revoke all partner administrator roles from a user, thereby revoking access to Partner Hub and all managed customer organizations.\nThis action does not grant or revoke Control Hub administrator roles (e.g. Full Administrator, User and Device Administrator, etc.).\nThis API can be used by Partner Full Admin.\nSpecify the `personId` in the path param.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for revoke-all-admin-roles-person-id" - }, - { - "name": "person-id", - "type": "string", - "usage": "ID of the user whose partner roles needs to be revoked.", - "required": true - } - ] - }, - { - "path": "webex admin partner-administrators unassign-admin-customer", - "short": "Unassign partner admin from a customer", - "long": "Unassign a specific partner admin from a customer organization. Unassigning a customer organization from a partner admin does not remove the role from the user. If a partner admin is also managing the customer organization through a Customer Group, they will continue to have access.\nThis API can be used by Partner Full Admin.\n\nSpecify the `orgId` and the `personId` in the path param.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for unassign-admin-customer" - }, - { - "name": "org-id", - "type": "string", - "usage": "The ID of the customer organization.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "User ID of the partner admin in the partners org.", - "required": true - } - ] - }, - { - "path": "webex admin partner-reports-templates", - "short": "PartnerReportsTemplates commands" - }, - { - "path": "webex admin partner-reports-templates create", - "short": "Create a Report", - "long": "Create a new report. A new report can be created using `templateId` available from the _List Report Templates_ API. For each `templateId`, there are a set of validation rules that need to be followed.\n\nThe `templateId` parameter is a number. However, it is a limitation of developer.webex.com platform that it is passed as a string when you try to test the API from here.\n\nTo access this endpoint, you must use an administrator token with `spark-admin:reports_write` and `identity:people_read` scopes.\n\n**Notes**:\n\n
CSV reports for Webex suite services are only created for organizations in the specified region. Organizations based in a different region will require a separate request with region specified.
\n\n
When no region is specified, the request defaults to Partner organization's home region. A request against a region where there are no organizations will return blank CSV files.
", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "end-date", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "on-behalf-of-sub-partner-org-id", - "type": "string", - "usage": "The encoded organization ID for the sub partner." - }, - { - "name": "region-id", - "type": "string" - }, - { - "name": "start-date", - "type": "string" - }, - { - "name": "template-id", - "type": "int64", - "default": "0" - } - ] - }, - { - "path": "webex admin partner-reports-templates delete", - "short": "Delete a Report", - "long": "Remove a report from the system.\n\nSpecify the report ID in the `reportId` parameter in the URI\n\nTo access this endpoint, you must use an administrator token with `spark-admin:reports_write` scope.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "on-behalf-of-sub-partner-org-id", - "type": "string", - "usage": "The encoded organization ID for the sub partner." - }, - { - "name": "report-id", - "type": "string", - "usage": "The unique identifier for the report.", - "required": true - } - ] - }, - { - "path": "webex admin partner-reports-templates get", - "short": "Get Report Details", - "long": "Shows details for a report by report ID.\n\nSpecify the report ID in the `reportId` parameter in the URI.\n\nTo access this endpoint, you must use an administrator token with `spark-admin:reports_read` and `identity:people_read` scopes.\n\n**Notes**:\n\n
Reports are usually provided in zip format. A content-header application/zip or application/octet-stream does indicate the zip format. There is usually no .zip file extension.
", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "on-behalf-of-sub-partner-org-id", - "type": "string", - "usage": "The encoded organization ID for the sub partner." - }, - { - "name": "report-id", - "type": "string", - "usage": "The unique identifier for the report.", - "required": true - } - ] - }, - { - "path": "webex admin partner-reports-templates list", - "short": "List Reports", - "long": "Lists all reports previously generated from a given region. Use query parameters to filter the response. The parameters are optional.\n\nTo access this endpoint, you must use an administrator token with `spark-admin:reports_read` and `identity:people_read` scopes.\n\n
CSV reports for Webex suite services are only supported for organizations based in one region per API request. Organizations based in a different region will require a separate request with region specified.
\n\n
When no region is specified, the request defaults to Partner organization's home region.
\n\n
Reports are usually provided in zip format. A content-header application/zip or application/octet-stream does indicate the zip format. There is usually no .zip file extension.
", - "flags": [ - { - "name": "from", - "type": "string", - "usage": "List reports that were created on or after this date." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "on-behalf-of-sub-partner-org-id", - "type": "string", - "usage": "The encoded organization ID for the sub partner." - }, - { - "name": "region-id", - "type": "string", - "usage": "Data in the report will be from organizations in this region, for example, US, CA, or EU." - }, - { - "name": "service", - "type": "string", - "usage": "List reports which use this service." - }, - { - "name": "template-id", - "type": "string", - "usage": "List reports with this report template ID." - }, - { - "name": "to", - "type": "string", - "usage": "List reports that were created before this date." - } - ] - }, - { - "path": "webex admin partner-reports-templates list-2", - "short": "List Report Templates", - "long": "List report templates. Report templates are available for use with the Partner Reports API.\n\nTo access this endpoint, you must use an administrator token with `spark-admin:reports_read` and `identity:people_read` [scopes](/docs/integrations#scopes). The authenticated user must be a Partner full administrator or Partner read-only administrator of the organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-2" - }, - { - "name": "on-behalf-of-sub-partner-org-id", - "type": "string", - "usage": "The encoded organization ID for the sub partner." - } - ] - }, - { - "path": "webex admin partner-tags", - "short": "PartnerTags commands" - }, - { - "path": "webex admin partner-tags create-replace-customer-provided-ones", - "short": "Create or Replace existing customer tags with the provided ones", - "long": "Assign or replace tag(s) which for a customer organization. If the tag doesn't already exist, a new one is created and assigned to the customer automatically.\nThis API can be used by partner full admins and partner admins. \nEach tag has a character limit of 25. Currently, there is a limit of 5 tags per organization when creating tags. To remove all the tags, pass an empty array.\nSpecify the customer organization ID in the `orgId` parameter in the URI.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-replace-customer-provided-ones" - }, - { - "name": "org-id", - "type": "string", - "usage": "The unique identifier for the customer organization.", - "hidden": true - } - ] - }, - { - "path": "webex admin partner-tags create-replace-subscription-provided-ones", - "short": "Create or Replace existing subscription tags with the provided ones", - "long": "Assign or replace tags specific to each subscription for an organization. Each organization may have one or more subscriptions.\nThis API can be used by partner full admins and partner admins. \nCurrently there is a limit of 5 tags per subscription when creating tags. To remove all the tags, pass an empty array.\nSpecify the customer organization ID in the `orgId` parameter in the URI and subscription ID in `subscriptionId` parameter", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-replace-subscription-provided-ones" - }, - { - "name": "org-id", - "type": "string", - "usage": "The unique identifier for the customer organization.", - "hidden": true - }, - { - "name": "subscription-id", - "type": "string", - "usage": "The unique identifier for the subscription.", - "required": true - } - ] - }, - { - "path": "webex admin partner-tags get-all-customer", - "short": "Retrieve all customer tags", - "long": "Retrieves all tags which are being used by any customer organizations. Once a tag is unassigned from the last customer, it is automatically removed and is not returned by this API.\nThis API can be used by a partner full admin, a read-only partner, or an partner admin. \nThe `type` can have the value ORGANIZATION or SUBSCRIPTION. If not provided, the value is ORGANIZATION", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-all-customer" - }, - { - "name": "type", - "type": "string", - "usage": "List tags associated with an organization." - } - ] - }, - { - "path": "webex admin partner-tags get-all-customers-set", - "short": "Fetch all customers for a given set of tags", - "long": "For a set of tags, retrieve all customer organizations that match any one of the tags.\nThis API can be used by a partner full admin, a read-only partner, or an partner admin.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-all-customers-set" - }, - { - "name": "max", - "type": "string", - "usage": "Value must be between 1 and 100, inclusive." - }, - { - "name": "tags", - "type": "string", - "usage": "A comma separated list of tags to filter by." - } - ] - }, - { - "path": "webex admin partner-tags get-customer-org", - "short": "Get customer organization's tags", - "long": "Retrieve tags associated with a customer organization based on the `orgId` provided.\nThis API can be used by a partner full admin, a read-only partner, or an partner admin. \nSpecify the customer orgId in the `orgId` parameter in the URI.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-customer-org" - }, - { - "name": "org-id", - "type": "string", - "usage": "Fetch all customers and associated tags for the customer.", - "hidden": true - } - ] - }, - { - "path": "webex admin partner-tags get-subscription", - "short": "Fetch a Subscription", - "long": "For a given partner org, customer org and external subscription id, fetch subscription details with its associated tags.\nThis API can be used by partner full admins, partner admins and admin read-only partners.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-subscription" - }, - { - "name": "org-id", - "type": "string", - "usage": "The unique identifier for the customer organization.", - "hidden": true - }, - { - "name": "subscription-id", - "type": "string", - "usage": "The unique identifier for the subscription.", - "required": true - } - ] - }, - { - "path": "webex admin partner-tags subscription-list-name-set", - "short": "Subscription List on a given tag name or a set of tags", - "long": "For a partner organization fetch all it's subscriptions with their tag list for a given tag names.\nThis API can be used by partner full admins, partner admins and admin read-only partners.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for subscription-list-name-set" - }, - { - "name": "max", - "type": "string", - "usage": "Value must be between 1 and 100, inclusive." - }, - { - "name": "tags", - "type": "string", - "usage": "A comma separated list of tags to filter by." - } - ] - }, - { - "path": "webex admin people", - "short": "People commands" - }, - { - "path": "webex admin people create-person", - "short": "Create a Person", - "long": "Create a new user account for a given organization. Only an admin can create a new user account.\n\nAt least one of the following body parameters is required to create a new user: `displayName`, `firstName`, `lastName`.\n\nCurrently, users may have only one email address associated with their account. The `emails` parameter is an array, which accepts multiple values to allow for future expansion, but currently only one email address will be used for the new user.\n\nAdmin users can include `Webex calling` (BroadCloud) user details in the response by specifying `callingData` parameter as true. It may happen that the POST request with calling data returns a 400 status, but the person was created still. One way to get into this state is if an invalid phone number is assigned to a user. The people API aggregates calls to several other microservices, and one may have failed. A best practice is to check if the user exists before retrying. This can be done with the user's email address and a GET /people.\n\nWhen doing attendee management, append `#attendee` to the `siteUrl` parameter (e.g. `mysite.webex.com#attendee`) to make the new user an attendee for a site.\n\n**NOTES**:\n\n* For creating a `Webex Calling` user, you must provide `phoneNumbers` or `extension`, `locationId`, and `licenses` string in the same request.\n\n* `SipAddresses` are asigned via an asynchronous process. This means that the POST response may not show the SIPAddresses immediately. Instead you can verify them with a separate GET to /people, after they were newly configured.\n\n* When assigning multiple licenses in a single request, the system will assign all valid and available licenses. If any requested licenses cannot be assigned, the operation will continue with the remaining licenses. As a result, it is possible that not all requested licenses are assigned to the user.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calling-data", - "type": "string", - "usage": "Include Webex Calling user details in the response." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-person" - }, - { - "name": "min-response", - "type": "string", - "usage": "Set to `true` to improve performance by omitting person details and returning only the ID in the response when successful. If unsuccessful the response will have optional error details." - } - ] - }, - { - "path": "webex admin people delete-person", - "short": "Delete a Person", - "long": "Remove a person from the system.\n\n**Required Administrator Roles:**\n\nThe following administrators have permission to use this API:\n\n**Customer Organization:**\n- Full administrator\n- User administrator\n\n**Partner/External Access:**\n- External full administrator\n\n**Note:** External read-only administrators, provisioning administrators, and device administrators cannot delete users.\n\nSpecify the person ID in the `personId` parameter in the URI.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-person" - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex admin people get-my-own", - "short": "Get My Own Details", - "long": "Get profile details for the authenticated user. This is the same as GET `/people/{personId}` using the Person ID associated with your Auth token.\n\nAdmin users can include `Webex Calling` (BroadCloud) user details in the response by specifying `callingData` parameter as true.", - "flags": [ - { - "name": "calling-data", - "type": "string", - "usage": "Include Webex Calling user details in the response." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-my-own" - } - ] - }, - { - "path": "webex admin people get-person", - "short": "Get Person Details", - "long": "Shows details for a person, by ID.\n\nResponse properties associated with a user's presence status, such as `status` or `lastActivity`, will only be displayed for people within your organization or an organization you manage. Presence information will not be shown if the authenticated user has [disabled status sharing](https://help.webex.com/nkzs6wl/).\n\nAdmin users can include `Webex Calling` (BroadCloud) user details in the response by specifying `callingData` parameter as `true`.\n\nSpecify the person ID in the `personId` parameter in the URI.", - "flags": [ - { - "name": "calling-data", - "type": "string", - "usage": "Include Webex Calling user details in the response." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-person" - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex admin people list", - "short": "List People", - "long": "List people in your organization. For most users, either the `email` or `displayName` parameter is required. Admin users can omit these fields and list all users in their organization.\n\nResponse properties associated with a user's presence status, such as `status` or `lastActivity`, will only be returned for people within your organization or an organization you manage. Presence information will not be returned if the authenticated user has [disabled status sharing](https://help.webex.com/nkzs6wl/). Calling /people frequently to poll `status` information for a large set of users will quickly lead to `429` errors and throttling of such requests and is therefore discouraged.\n\nAdmin users can include `Webex Calling` (BroadCloud) user details in the response by specifying `callingData` parameter as `true`. Admin users can list all users in a location. Admin users will receive an enriched payload with additional administrative fields like `licenses`,`roles`, `locations` etc. These fields are shown when accessing a user via GET /people/{id}, not when doing a GET /people?id=\n\nLookup by `email` is only supported for people within the same org or where a partner admin relationship is in place.\n\nLookup by `roles` is only supported for Admin users for the people within the same org.\n\nLong result sets will be split into [pages](/docs/basics#pagination).", - "flags": [ - { - "name": "calling-data", - "type": "string", - "usage": "Include Webex Calling user details in the response." - }, - { - "name": "display-name", - "type": "string", - "usage": "List people whose name starts with this string. For non-admin requests, either this or email are required." - }, - { - "name": "email", - "type": "string", - "usage": "List people with this email address. For non-admin requests, either this or `displayName` are required. With the exception of partner admins and a managed org relationship, people lookup by email is only available for users in the same org." - }, - { - "name": "exclude-status", - "type": "string", - "usage": "Omit people status/availability to enhance query performance." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "id", - "type": "string", - "usage": "List people by ID. Accepts up to 85 person IDs separated by commas. If this parameter is provided then presence information (such as the `lastActivity` or `status` properties) will not be included in the response." - }, - { - "name": "location-id", - "type": "string", - "usage": "List people present in this location." - }, - { - "name": "max", - "type": "string", - "usage": "Limit the maximum number of people in the response. If `callingData`=true, then `max` will not be more than 100. If `locationId` is specified then `max` will not be more than 50." - }, - { - "name": "org-id", - "type": "string", - "usage": "List people in this organization. Only admin users of another organization (such as partners) may use this parameter.", - "hidden": true - }, - { - "name": "roles", - "type": "string", - "usage": "List of roleIds separated by commas." - } - ] - }, - { - "path": "webex admin people update-person", - "short": "Update a Person", - "long": "Update details for a person, by ID.\n\nSpecify the person ID in the `personId` parameter in the URI. Only an admin can update a person details.\n\nInclude all details for the person. This action expects all user details to be present in the request. A common approach is to first [GET the person's details](/docs/api/v1/people/get-person-details), make changes, then PUT both the changed and unchanged values.\n\nAdmin users can include `Webex Calling` (BroadCloud) user details in the response by specifying `callingData` parameter as true.\n\nWhen doing attendee management, to update a user from host role to an attendee for a site append `#attendee` to the respective `siteUrl` and remove the meeting host license for this site from the license array.\nTo update a person from an attendee role to a host for a site, add the meeting license for this site in the meeting array, and remove that site from the `siteurl` parameter.\n\nTo remove the attendee privilege for a user on a meeting site, remove the `sitename#attendee` from the `siteUrl`s array. The `showAllTypes` parameter must be set to `true`.\n\n**NOTE**:\n\n* When assigning a Webex Calling license, either a telephone number or extension must already be assigned to the person or provided in the request payload.\n\n* When `callingData` is set to `true`, a Webex Calling license must be included in the `licenses` array.\n\n* The `locationId` can only be set when assigning a calling license to a user. It cannot be changed if a user is already an existing calling user.\n\n* The `extension` field should be used to update the Webex Calling extension for a person. The extension value should not include the location routing prefix. The `work_extension` type in the `phoneNumbers` object as seen in the response payload of [List People](/docs/api/v1/people/list-people) or [Get Person Details](/docs/api/v1/people/get-person-details), cannot be used to set the Webex Calling extension for a person.\n\n* When updating a user with multiple email addresses using a PUT request, ensure that the primary email address is listed first in the array. Note that the order of email addresses returned by a GET request is not guaranteed..\n\n* The People API is a combination of several microservices, each responsible for specific attributes of a person. As a result, a PUT request that returns an error response code may still have altered some values of the person's data. Therefore, it is recommended to perform a GET request after encountering an error to verify the current state of the resource. \n\n* Some licenses are implicitly assigned by the system and cannot be admin controlled. They are necessary for the baseline function of the Webex system. If you get an error about implicitly assigned licensed that cannot be removed, please ensure you have the corresponding license in your PUT request.\n\n* When assigning multiple licenses in a single request, the system will assign all valid and available licenses. If any requested licenses cannot be assigned, the operation will continue with the remaining licenses. As a result, it is possible that not all requested licenses are assigned to the user.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calling-data", - "type": "string", - "usage": "Include Webex Calling user details in the response." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-person" - }, - { - "name": "min-response", - "type": "string", - "usage": "Set to `true` to improve performance by omitting person details in the response. If unsuccessful the response will have optional error details." - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - }, - { - "name": "show-all-types", - "type": "string", - "usage": "Include additional user data like `#attendee` role." - } - ] - }, - { - "path": "webex admin recording-report", - "short": "RecordingReport commands" - }, - { - "path": "webex admin recording-report get-audit", - "short": "Get Recording Audit Report Details", - "long": "Retrieves details for a recording audit report with a specified recording ID.\n\nOnly recording audit report details of meetings hosted by or shared with the authenticated user may be retrieved.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-audit" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin on-behalf-of scopes. If set, the admin may specify the email of a user in a site they manage and the API will return recording details of that user." - }, - { - "name": "max", - "type": "string", - "usage": "Maximum number of recording audit report details to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`." - }, - { - "name": "recording-id", - "type": "string", - "usage": "A unique identifier for the recording." - }, - { - "name": "timezone", - "type": "string", - "usage": "e.g. UTC" - } - ] - }, - { - "path": "webex admin recording-report get-meeting-archive", - "short": "Get Meeting Archive Details", - "long": "Retrieves details for a meeting archive report with a specified archive ID, which contains recording metadata.\n\nMeeting archive details are only available to full administrators, not even the meeting host.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.", - "flags": [ - { - "name": "archive-id", - "type": "string", - "usage": "A unique identifier for the meeting archive summary.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-meeting-archive" - }, - { - "name": "timezone", - "type": "string", - "usage": "e.g. UTC" - } - ] - }, - { - "path": "webex admin recording-report list-audit-summaries", - "short": "List of Recording Audit Report Summaries", - "long": "Lists of recording audit report summaries. You can specify a date range and the maximum number of recording audit report summaries to return.\n\nOnly recording audit report summaries of meetings hosted by or shared with the authenticated user will be listed.\n\nThe list returned is sorted in descending order by the date and time that the recordings were created.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n* If `siteUrl` is specified, the recording audit report summaries of the specified site will be listed; otherwise, recording audit report summaries of the user's preferred site will be listed. All available Webex sites and the preferred site of the user can be retrieved by the `Get Site List` API.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.", - "flags": [ - { - "name": "from", - "type": "string", - "usage": "Starting date and time (inclusive) for recording audit report summaries to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`. Please note that the interval between `to` and `from` cannot exceed 90 days and the interval between the current time and `from` cannot exceed 365 days." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-audit-summaries" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin on-behalf-of scopes. If set, the admin may specify the email of a user in a site they manage and the API will return recording audit report summaries of that user. If a special value of `all` is set for `hostEmail`, the admin can list recording audit report summaries of all users on the target site, not of a single user." - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "max", - "type": "string", - "usage": "Maximum number of recording audit report summaries to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`." - }, - { - "name": "site-url", - "type": "string", - "usage": "URL of the Webex site which the API lists recording audit report summaries from. If not specified, the API lists summary audit report for recordings from the user's preferred site. All available Webex sites and the preferred site of the user can be retrieved by `Get Site List` API." - }, - { - "name": "timezone", - "type": "string", - "usage": "e.g. UTC" - }, - { - "name": "to", - "type": "string", - "usage": "Ending date and time (exclusive) for recording audit report summaries to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`. Please note that the interval between `to` and `from` cannot exceed 90 days and the interval between the current time and `from` cannot exceed 365 days." - } - ] - }, - { - "path": "webex admin recording-report list-meeting-archive-summaries", - "short": "List Meeting Archive Summaries", - "long": "Lists of meeting archive summaries. You can specify a date range and the maximum number of meeting archive summaries to return.\n\nMeeting archive summaries are only available to full administrators, not even the meeting host.\n\nThe list returned is sorted in descending order by the date and time that the archives were created.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n* If `siteUrl` is specified, the meeting archive summaries of the specified site will be listed; otherwise, meeting archive summaries of the user's preferred site will be listed. All available Webex sites and the preferred site of the user can be retrieved by the `Get Site List` API.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.", - "flags": [ - { - "name": "from", - "type": "string", - "usage": "Starting date and time (inclusive) for meeting archive summaries to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`. Please note that the interval between `to` and `from` cannot exceed 30 days." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-meeting-archive-summaries" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "max", - "type": "string", - "usage": "Maximum number of meeting archive summaries to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`." - }, - { - "name": "site-url", - "type": "string", - "usage": "URL of the Webex site which the API lists meeting archive summaries from. If not specified, the API lists meeting archive summaries for recordings from the user's preferred site. All available Webex sites and the preferred site of the user can be retrieved by `Get Site List` API." - }, - { - "name": "timezone", - "type": "string", - "usage": "e.g. UTC" - }, - { - "name": "to", - "type": "string", - "usage": "Ending date and time (exclusive) for meeting archive summaries to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`. Please note that the interval between `to` and `from` cannot exceed 30 days." - } - ] - }, - { - "path": "webex admin recordings", - "short": "Recordings commands" - }, - { - "path": "webex admin recordings delete", - "short": "Delete a Recording", - "long": "Removes a recording with a specified recording ID. The deleted recording cannot be recovered. If a Compliance Officer deletes another user's recording, the recording will be inaccessible to regular users (host, attendees and shared), but will be still available to the Compliance Officer.\n\nOnly recordings of meetings hosted by the authenticated user can be deleted.\n\nThe `temporaryDirectDownloadLinks` of a recording which are retrieved by the [Get Recording Details](/docs/api/v1/recordings/get-recording-details) API are still available to Compliance Officers even if the recording has been deleted.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "comment", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email address for the meeting host. Only used if the user or application calling the API has the required [admin-level meeting scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will delete a recording of that user." - }, - { - "name": "reason", - "type": "string" - }, - { - "name": "recording-id", - "type": "string", - "usage": "A unique identifier for the recording.", - "required": true - } - ] - }, - { - "path": "webex admin recordings delete-admin", - "short": "Delete a Recording By an Admin", - "long": "Removes a recording with a specified recording ID by an admin. The deleted recording cannot be recovered. It will be inaccessible to regular users (host, attendees and shared) or an admin, but it will be still available to the Compliance Officer.\n\nAny recording on a site which is managed by the admin can be deleted by him.\n\nThe `temporaryDirectDownloadLinks` of a recording which are retrieved by the [Get Recording Details](/docs/api/v1/recordings/get-recording-details) API are still available to Compliance Officers even if the recording has been deleted.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-admin" - }, - { - "name": "recording-id", - "type": "string", - "usage": "A unique identifier for the recording.", - "required": true - } - ] - }, - { - "path": "webex admin recordings get", - "short": "Get Recording Details", - "long": "Retrieves details for a recording with a specified recording ID.\n\nOnly recordings of meetings hosted by or shared with the authenticated user may be retrieved.\n\n#### Request Header\n\n* `timezone`: *[Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.*\n\n* `siteUrl`: Optional request header parameter. If specified, retrieve the recording details from that site; otherwise, retrieve it from the site which is implied based on the recording ID.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email address for the meeting host. Only used if the user or application calling the API has required [admin-level meeting scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage, and the API will return recording details of that user." - }, - { - "name": "recording-id", - "type": "string", - "usage": "A unique identifier for the recording.", - "required": true - }, - { - "name": "site-url", - "type": "string", - "usage": "e.g. example.webex.com" - }, - { - "name": "timezone", - "type": "string", - "usage": "e.g. UTC" - } - ] - }, - { - "path": "webex admin recordings get-group", - "short": "Get Group Recording Details", - "long": "Retrieves details for a group recording for a service app which has group recording access.\n\n* Only recordings which are in the `available` status and not shared by others can be listed. Those in the `deleted` or `purged` status or shared by others can't be listed.\n\n* One of the `personId` parameter and `hostEmail` header must be specified so that only recordings of meetings hosted by the person of `personId` or `hostEmail` will be returned.\n\n#### Request Header\n\n* `timezone`: *[Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.*\n\n* `hostEmail`: Email of the user whose recordings will be retrieved. The `hostEmail` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-group" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email of the user whose recordings will be retrieved. The `hostEmail` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified." - }, - { - "name": "person-id", - "type": "string", - "usage": "Person ID of the user whose recordings will be retrieved. The person ID can be retrieved from the [People APIs](/docs/api/v1/people), e.g. [Lit People](/docs/api/v1/people/list-people). Note that a person ID retrieved from the People APIs is a Base64-encoded string, e.g. `Y2lzY29zcGFyazovL3VzL1BFT1BMRS9kNDdiMmU3ZC01ZTBmLTRmNjktYWVmNC1lNGZmOTBhZWE3Yzk`. The person ID in the raw UUID format which is the last part of the Base64-decoded string, e.g. `d47b2e7d-5e0f-4f69-aef4-e4ff90aea7c9`, is also supported. The `personId` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified." - }, - { - "name": "recording-id", - "type": "string", - "usage": "A unique identifier for the recording.", - "required": true - }, - { - "name": "timezone", - "type": "string", - "usage": "e.g. UTC" - } - ] - }, - { - "path": "webex admin recordings list", - "short": "List Recordings", - "long": "
This API is still supported and behaves the same as before, but will be deprecated in the future. Due to limited support for special characters when filtering recordings by `topic`, it is recommended to use the new [Query Recordings](/docs/api/v1/recordings/query-recordings) API instead.
\n\nLists recordings. You can specify a date range, a parent meeting ID, and the maximum number of recordings to return.\n\nOnly recordings of meetings hosted by or shared with the authenticated user will be listed.\n\nThe list returned is sorted in descending order by the date and time that the recordings were created.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n* If `meetingId` is specified, only recordings associated with the specified meeting will be listed. **NOTE**: when `meetingId` is specified, parameter of `siteUrl` will be ignored.\n\n* If `siteUrl` is specified, recordings of the specified site will be listed; otherwise, the API lists recordings of all the user's sites. All available Webex sites and preferred site of the user can be retrieved by [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\n#### Request Header\n\n* `timezone`: *[Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.*", - "flags": [ - { - "name": "format", - "type": "string", - "usage": "Recording's file format. If specified, the API filters recordings by format." - }, - { - "name": "from", - "type": "string", - "usage": "Starting date and time (inclusive) for recordings to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email address for the meeting host. This parameter is only used if the user or application calling the API has the required [admin-level meeting scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will return recordings of that user." - }, - { - "name": "integration-tag", - "type": "string", - "usage": "External key of the parent meeting created by an integration application. This parameter is used by the integration application to query recordings by a key in its own domain, such as a Zendesk ticket ID, a Jira ID, a Salesforce Opportunity ID, etc. An integrationTag created by one client cannot be accessed or used as a filtering parameter by another client. For example, if a meeting has an `integrationTag` of \"Sales\" which is created by the client behind the developer portal, then this integrationTag can't be accessed on the meeting or its recordings by another client. Neither can it be used to filter meetings or recordings by a client other than the one that created the integrationTag of \"Sales\"." - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "max", - "type": "string", - "usage": "Maximum number of recordings to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`." - }, - { - "name": "meeting-id", - "type": "string", - "usage": "Unique identifier for the parent meeting series, scheduled meeting, or meeting instance for which recordings are being requested. If a meeting series ID is specified, the operation returns an array of recordings for the specified meeting series. If a scheduled meeting ID is specified, the operation returns an array of recordings for the specified scheduled meeting. If a meeting instance ID is specified, the operation returns an array of recordings for the specified meeting instance. If no ID is specified, the operation returns an array of recordings for all meetings of the current user. When `meetingId` is specified, the `siteUrl` parameter is ignored." - }, - { - "name": "service-type", - "type": "string", - "usage": "The service type for recordings. If this item is specified, the API filters recordings by service-type." - }, - { - "name": "site-url", - "type": "string", - "usage": "URL of the Webex site from which the API lists recordings. If not specified, the API lists recordings from all of a user's sites. All available Webex sites and the preferred site of the user can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API." - }, - { - "name": "status", - "type": "string", - "usage": "Recording's status. If not specified or `available`, retrieves recordings that are available. Otherwise, if specified as `deleted`, retrieves recordings that have been moved into the recycle bin. The `purged` status only applies if the user calling the API is a Compliance Officer and `meetingId` is specified." - }, - { - "name": "timezone", - "type": "string", - "usage": "e.g. UTC" - }, - { - "name": "to", - "type": "string", - "usage": "Ending date and time (exclusive) for List recordings to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`." - }, - { - "name": "topic", - "type": "string", - "usage": "Recording's topic. If specified, the API filters recordings by topic in a case-insensitive manner." - } - ] - }, - { - "path": "webex admin recordings list-admin-compliance-officer", - "short": "List Recordings For an Admin or Compliance Officer", - "long": "
This API is still supported and behaves the same as before, but will be deprecated in the future. Due to limited support for special characters when filtering recordings by `topic`, it is recommended to use the new [Query Recordings For an Admin or Compliance Officer](/docs/api/v1/recordings/query-recordings-for-an-admin-or-compliance-officer) API instead.
\n\nList recordings for an admin or compliance officer. You can specify a date range, a parent meeting ID, and the maximum number of recordings to return.\n\nThe list returned is sorted in descending order by the date and time that the recordings were created.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n* If `meetingId` is specified, only recordings associated with the specified meeting will be listed. Please note that when `meetingId` is specified, parameters of `siteUrl`, `from`, and `to` will be ignored.\n\n* If `siteUrl` is specified, all the recordings on the specified site are listed; otherwise, all the recordings on the admin user's or compliance officer's preferred site are listed. All the available Webex sites and the admin user's or compliance officer's preferred site can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\n#### Request Header\n\n* `timezone`: *[Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.*", - "flags": [ - { - "name": "format", - "type": "string", - "usage": "Recording's file format. If specified, the API filters recordings by format." - }, - { - "name": "from", - "type": "string", - "usage": "Starting date and time (inclusive) for recordings to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`. The interval between `from` and `to` must be within 30 days. If `to` is specified, the default value for `from` is `to` minus 7 days. If `to` is also not specified, the default value for `from` is current date and time minus 7 days." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-admin-compliance-officer" - }, - { - "name": "integration-tag", - "type": "string", - "usage": "External key of the parent meeting created by an integration application. This parameter is used by the integration application to query recordings by a key in its own domain such as a Zendesk ticket ID, a Jira ID, a Salesforce Opportunity ID, etc. An integrationTag created by one client cannot be accessed or used as a filtering parameter by another client. For example, if a meeting has an `integrationTag` of \"Sales\" which is created by the client behind the developer portal, then this integrationTag can't be accessed on the meeting or its recordings by another client. Neither can it be used to filter meetings or recordings by a client other than the one that created the integrationTag of \"Sales\"." - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "max", - "type": "string", - "usage": "Maximum number of recordings to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`." - }, - { - "name": "meeting-id", - "type": "string", - "usage": "Unique identifier for the parent meeting series, scheduled meeting, or meeting instance for which recordings are being requested. If a meeting series ID is specified, the operation returns an array of recordings for the specified meeting series. If a scheduled meeting ID is specified, the operation returns an array of recordings for the specified scheduled meeting. If a meeting instance ID is specified, the operation returns an array of recordings for the specified meeting instance. If not specified, the operation returns an array of recordings for all the current user's meetings. When `meetingId` is specified, the `siteUrl` parameter is ignored." - }, - { - "name": "service-type", - "type": "string", - "usage": "The service type for recordings. If specified, the API filters recordings by service type." - }, - { - "name": "site-url", - "type": "string", - "usage": "URL of the Webex site which the API lists recordings from. If not specified, the API lists recordings from user's preferred site. All available Webex sites and preferred site of the user can be retrieved by [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API." - }, - { - "name": "status", - "type": "string", - "usage": "Recording's status. If not specified or `available`, retrieves recordings that are available. If specified as `deleted`, retrieves recordings that have been moved to the recycle bin. Otherwise, if specified as `purged`, retrieves recordings that have been purged from the recycle bin." - }, - { - "name": "timezone", - "type": "string", - "usage": "e.g. UTC" - }, - { - "name": "to", - "type": "string", - "usage": "Ending date and time (exclusive) for List recordings to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`. The interval between `from` and `to` must be within 30 days. If `from` is specified, the default value for `to` is `from` plus 7 days. If `from` is also not specified, the default value for `to` is the current date and time." - }, - { - "name": "topic", - "type": "string", - "usage": "Recording topic. If specified, the API filters recordings by topic in a case-insensitive manner." - } - ] - }, - { - "path": "webex admin recordings list-group", - "short": "List Group Recordings", - "long": "List group recordings for a service app which has group recording access. You can specify a date range, the maximum number of recordings to return, and `personId` or `hostEmail` of whom the recordings will be retrieved.\n\n* The list returned is sorted in descending order by the date and time that the recordings were created.\n\n* Only recordings which are in the `available` status and not shared by others can be listed. Those in the `deleted` or `purged` status or shared by others can't be listed.\n\n* Long result sets are split into [pages](/docs/basics#pagination).\n\n* If `siteUrl` is specified, the API lists group recordings on the specified site; otherwise, the API lists group recordings on all the sites managed by the service app. All the sites managed by a service app can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\n* One of the `personId` parameter and `hostEmail` header must be specified so that only recordings of meetings hosted by the person of `personId` or `hostEmail` will be returned.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.\n\n* `hostEmail`: Email of the user whose recordings will be retrieved. The `hostEmail` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified.", - "flags": [ - { - "name": "format", - "type": "string", - "usage": "Recording's file format. If specified, the API filters recordings by format." - }, - { - "name": "from", - "type": "string", - "usage": "Starting date and time (inclusive) for recordings to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`. The interval between `from` and `to` must be within 30 days." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-group" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email of the user whose recordings will be retrieved. The `hostEmail` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified." - }, - { - "name": "integration-tag", - "type": "string", - "usage": "External key of the parent meeting created by an integration application. This parameter is used by the integration application to query recordings by a key in its own domain such as a Zendesk ticket ID, a Jira ID, a Salesforce Opportunity ID, etc. An integrationTag created by one client cannot be accessed or used as a filtering parameter by another client. For example, if a meeting has an `integrationTag` of \"Sales\" which is created by the client behind the developer portal, then this integrationTag can't be accessed on the meeting or its recordings by another client. Neither can it be used to filter meetings or recordings by a client other than the one that created the integrationTag of \"Sales\"." - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "max", - "type": "string", - "usage": "Maximum number of recordings to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`." - }, - { - "name": "person-id", - "type": "string", - "usage": "Person ID of the user whose recordings will be retrieved. The person ID can be retrieved from the [People APIs](/docs/api/v1/people), e.g. [Lit People](/docs/api/v1/people/list-people). Note that a person ID retrieved from the People APIs is a Base64-encoded string, e.g. `Y2lzY29zcGFyazovL3VzL1BFT1BMRS9kNDdiMmU3ZC01ZTBmLTRmNjktYWVmNC1lNGZmOTBhZWE3Yzk`. The person ID in the raw UUID format which is the last part of the Base64-decoded string, e.g. `d47b2e7d-5e0f-4f69-aef4-e4ff90aea7c9`, is also supported. The `personId` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified." - }, - { - "name": "service-type", - "type": "string", - "usage": "The service type for recordings. If specified, the API filters recordings by service type." - }, - { - "name": "site-url", - "type": "string", - "usage": "URL of the Webex site which the API lists recordings from. If not specified, the API lists recordings from user's preferred site. All available Webex sites and preferred site of the user can be retrieved by [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API." - }, - { - "name": "timezone", - "type": "string", - "usage": "e.g. UTC" - }, - { - "name": "to", - "type": "string", - "usage": "Ending date and time (exclusive) for List recordings to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`. The interval between `from` and `to` must be within 30 days." - } - ] - }, - { - "path": "webex admin recordings move-recycle-bin", - "short": "Move Recordings into the Recycle Bin", - "long": "Move recordings into the recycle bin with recording IDs. Recordings in the recycle bin can be recovered by [Restore Recordings from Recycle Bin](/docs/api/v1/recordings/restore-recordings-from-recycle-bin) API. If you'd like to empty recordings from the recycle bin, you can use [Purge Recordings from Recycle Bin](/docs/api/v1/recordings/purge-recordings-from-recycle-bin) API to purge all or some of them.\n\nOnly recordings of meetings hosted by the authenticated user can be moved into the recycle bin.\n\n* `recordingIds` should not be empty and its maximum size is `100`.\n\n* All the IDs of `recordingIds` should belong to the site of `siteUrl` or the user's preferred site if `siteUrl` is not specified.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for move-recycle-bin" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email address for the meeting host. Only used if the user or application calling the API has the required [admin-level meeting scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will move recordings into recycle bin of that user" - }, - { - "name": "recording-ids", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "site-url", - "type": "string" - } - ] - }, - { - "path": "webex admin recordings purge-recycle-bin", - "short": "Purge Recordings from Recycle Bin", - "long": "Purge recordings from recycle bin with recording IDs or purge all the recordings that are in the recycle bin.\n\nOnly recordings of meetings hosted by the authenticated user can be purged from recycle bin.\n\n* If `purgeAll` is `true`, `recordingIds` should be empty.\n\n* If `purgeAll` is `false`, `recordingIds` should not be empty and its maximum size is `100`.\n\n* All the IDs of `recordingIds` should belong to the site of `siteUrl` or the user's preferred site if `siteUrl` is not specified.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for purge-recycle-bin" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email address for the meeting host. Only used if the user or application calling the API has the required [admin-level meeting scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will purge recordings from recycle bin of that user." - }, - { - "name": "purge-all", - "type": "bool", - "default": "false" - }, - { - "name": "recording-ids", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "site-url", - "type": "string" - } - ] - }, - { - "path": "webex admin recordings query", - "short": "Query Recordings", - "long": "Queries recordings with filters in the request body. You can specify a date range, a parent meeting ID, the maximum number of recordings to return, and additional filters such as siteUrl, integrationTag, hostEmail, topic, format, serviceType, and status.\n\nOnly recordings of meetings hosted by or shared with the authenticated user will be listed.\n\nThe list returned is sorted in descending order by the date and time that the recordings were created.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n* If `meetingId` is specified, only recordings associated with the specified meeting will be listed. **NOTE**: when `meetingId` is specified, parameter of `siteUrl` will be ignored.\n\n* If `siteUrl` is specified, recordings of the specified site will be listed; otherwise, the API lists recordings of all the user's sites. All available Webex sites and preferred site of the user can be retrieved by [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\n#### Request Header\n\n* `timezone`: *[Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.*", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "format", - "type": "string" - }, - { - "name": "from", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for query" - }, - { - "name": "host-email", - "type": "string" - }, - { - "name": "integration-tag", - "type": "string" - }, - { - "name": "max", - "type": "int64", - "default": "0" - }, - { - "name": "meeting-id", - "type": "string" - }, - { - "name": "service-type", - "type": "string" - }, - { - "name": "site-url", - "type": "string" - }, - { - "name": "status", - "type": "string" - }, - { - "name": "timezone", - "type": "string", - "usage": "e.g. UTC" - }, - { - "name": "to", - "type": "string" - }, - { - "name": "topic", - "type": "string" - } - ] - }, - { - "path": "webex admin recordings query-admin-compliance-officer", - "short": "Query Recordings For an Admin or Compliance Officer", - "long": "Queries recordings for an admin or compliance officer with filters in the request body. You can specify a date range, a parent meeting ID, the maximum number of recordings to return, and additional filters such as siteUrl, integrationTag, topic, format, serviceType, and status.\n\nThe list returned is sorted in descending order by the date and time that the recordings were created.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n* If `meetingId` is specified, only recordings associated with the specified meeting will be listed. Please note that when `meetingId` is specified, parameters of `siteUrl`, `from`, and `to` will be ignored.\n\n* If `siteUrl` is specified, all the recordings on the specified site are listed; otherwise, all the recordings on the admin user's or compliance officer's preferred site are listed. All the available Webex sites and the admin user's or compliance officer's preferred site can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\n#### Request Header\n\n* `timezone`: *[Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.*", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "format", - "type": "string" - }, - { - "name": "from", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for query-admin-compliance-officer" - }, - { - "name": "integration-tag", - "type": "string" - }, - { - "name": "max", - "type": "int64", - "default": "0" - }, - { - "name": "meeting-id", - "type": "string" - }, - { - "name": "service-type", - "type": "string" - }, - { - "name": "site-url", - "type": "string" - }, - { - "name": "status", - "type": "string" - }, - { - "name": "timezone", - "type": "string", - "usage": "e.g. UTC" - }, - { - "name": "to", - "type": "string" - }, - { - "name": "topic", - "type": "string" - } - ] - }, - { - "path": "webex admin recordings restore-recycle-bin", - "short": "Restore Recordings from Recycle Bin", - "long": "Restore all or some recordings from the recycle bin. Only recordings of meetings hosted by the authenticated user can be restored from recycle bin.\n\n* If `restoreAll` is `true`, `recordingIds` should be empty.\n\n* If `restoreAll` is `false`, `recordingIds` should not be empty and its maximum size is `100`.\n\n* All the IDs of `recordingIds` should belong to the site of `siteUrl` or the user's preferred site if `siteUrl` is not specified.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for restore-recycle-bin" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email address for the meeting host. This parameter is only used if the user or application calling the API has the required [admin-level meeting scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will restore recordings of that user." - }, - { - "name": "recording-ids", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "restore-all", - "type": "bool", - "default": "false" - }, - { - "name": "site-url", - "type": "string" - } - ] - }, - { - "path": "webex admin recordings share", - "short": "Share a Recording", - "long": "Share or unshare a recording with other users by recording ID and email addresses.", - "flags": [ - { - "name": "add-emails", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for share" - }, - { - "name": "host-email", - "type": "string" - }, - { - "name": "recording-id", - "type": "string", - "usage": "A unique identifier for the recording.", - "required": true - }, - { - "name": "remove-emails", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "send-email", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex admin recordings share-link", - "short": "Share a Recording Link", - "long": "Share or unshare a recording with other users by recording link and email addresses.", - "flags": [ - { - "name": "add-emails", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for share-link" - }, - { - "name": "host-email", - "type": "string" - }, - { - "name": "remove-emails", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "send-email", - "type": "bool", - "default": "false" - }, - { - "name": "web-share-link", - "type": "string" - } - ] - }, - { - "path": "webex admin report-templates", - "short": "ReportTemplates commands" - }, - { - "path": "webex admin report-templates list", - "short": "List Report Templates", - "long": "List all the available report templates that can be generated.\n\nCSV (comma separated value) reports for Webex services are only supported for organizations based in the North American region. Organizations based in other regions will return blank CSV files for any Webex reports.\n\n#### Validation Fields\n\nEach template includes validation rules that specify which fields are required when generating a report using the [Reports API](/docs/api/v1/reports). The possible validation field values are:\n\n- **templateId**: The unique identifier of the report template to use. This is always required when creating a report.\n- **siteList**: A comma-separated list of Webex sites (e.g., \"cisco.webex.com\"). Required for site-based templates, typically for Webex Meetings reports.\n- **subIds**: Subscription IDs for the report. Required for certain enterprise agreement templates, particularly for Webex Onboarding service reports.\n- **startDate**: The start date for the report data range in YYYY-MM-DD format. Required for date-range based templates.\n- **endDate**: The end date for the report data range in YYYY-MM-DD format. Required for date-range based templates.\n\nWhen creating a report, ensure you provide all fields marked as \"required\": \"yes\" in the template's validation rules.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - } - ] - }, - { - "path": "webex admin reports", - "short": "Reports commands" - }, - { - "path": "webex admin reports create", - "short": "Create a Report", - "long": "Create a new report. For each `templateId`, there are a set of validation rules that need to be followed. For example, for templates belonging to Webex, the user needs to provide `siteUrl`. These validation rules can be retrieved via the [Report Templates API](/docs/api/v1/report-templates).\n\nThe 'templateId' parameter is a number. However, it is a limitation of developer.webex.com platform that it is passed as a string when you try to test the API from here.\n\nCSV reports for Webex suite services are only supported for organizations based in the North American region. Organizations based in a different region will return blank CSV files for any Teams reports.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "end-date", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "site-list", - "type": "string" - }, - { - "name": "start-date", - "type": "string" - }, - { - "name": "template-id", - "type": "int64", - "default": "0" - }, - { - "name": "time-zone", - "type": "string" - } - ] - }, - { - "path": "webex admin reports delete", - "short": "Delete a Report", - "long": "Remove a report from the system.\n\nSpecify the report ID in the `reportId` parameter in the URI\n\nCSV reports for Webex suite services are only supported for organizations based in the North American region. Organizations based in a different region will return blank CSV files for any Teams reports.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "report-id", - "type": "string", - "usage": "The unique identifier for the report.", - "required": true - } - ] - }, - { - "path": "webex admin reports get", - "short": "Get Report Details", - "long": "Shows details for a report, by report ID.\n\nSpecify the report ID in the `reportId` parameter in the URI.\n\n**Notes**:\nCSV reports for Webex suite services are only supported for organizations based in the North American region. Organizations based in a different region will return blank CSV files for any Teams reports.\n\nReports are usually provided in zip format. A Content-header `application/zip` or `application/octet-stream` does indicate the zip format. There is usually no .zip file extension.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "report-id", - "type": "string", - "usage": "The unique identifier for the report.", - "required": true - } - ] - }, - { - "path": "webex admin reports list", - "short": "List Reports", - "long": "Lists all reports. Use query parameters to filter the response. The parameters are optional. However, `from` and `to` parameters should be provided together.\n\n**Notes**:\nCSV reports for Webex suite services are only supported for organizations based in the North American region. Organizations based in a different region will return blank CSV files for any Teams reports.\n\nReports are usually provided in zip format. A Content-header `application/zip` or `application/octet-stream` does indicate the zip format. There is usually no .zip file extension.", - "flags": [ - { - "name": "from", - "type": "string", - "usage": "List reports that were created on or after this date." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "report-id", - "type": "string", - "usage": "List reports by ID." - }, - { - "name": "service", - "type": "string", - "usage": "List reports which use this service." - }, - { - "name": "template-id", - "type": "string", - "usage": "List reports with this report template ID." - }, - { - "name": "to", - "type": "string", - "usage": "List reports that were created before this date." - } - ] - }, - { - "path": "webex admin resource-groups", - "short": "ResourceGroups commands" - }, - { - "path": "webex admin resource-groups get", - "short": "Get Resource Group Details", - "long": "Shows details for a resource group, by ID.\n\nSpecify the resource group ID in the `resourceGroupId` parameter in the URI.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "resource-group-id", - "type": "string", - "usage": "The unique identifier for the resource group.", - "required": true - } - ] - }, - { - "path": "webex admin resource-groups list", - "short": "List Resource Groups", - "long": "List resource groups.\n\nUse query parameters to filter the response.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "org-id", - "type": "string", - "usage": "List resource groups in this organization. Only admin users of another organization (such as partners) may use this parameter.", - "hidden": true - } - ] - }, - { - "path": "webex admin resource-memberships", - "short": "ResourceMemberships commands" - }, - { - "path": "webex admin resource-memberships get-group", - "short": "Get Resource Group Membership Details", - "long": "Shows details for a resource group membership, by ID.\n\nSpecify the resource group membership ID in the `resourceGroupMembershipId` URI parameter.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-group" - }, - { - "name": "resource-group-membership-id", - "type": "string", - "usage": "The unique identifier for the resource group membership.", - "required": true - } - ] - }, - { - "path": "webex admin resource-memberships list-group", - "short": "List Resource Group Memberships", - "long": "Lists all resource group memberships for an organization.\n\nUse query parameters to filter the response.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-group" - }, - { - "name": "license-id", - "type": "string", - "usage": "List resource group memberships for a license, by ID." - }, - { - "name": "max", - "type": "string", - "usage": "Limit the maximum number of resource group memberships in the response." - }, - { - "name": "person-id", - "type": "string", - "usage": "List resource group memberships for a person, by ID." - }, - { - "name": "person-org-id", - "type": "string", - "usage": "List resource group memberships for an organization, by ID." - }, - { - "name": "status", - "type": "string", - "usage": "Limit resource group memberships to a specific status." - } - ] - }, - { - "path": "webex admin resource-memberships list-group-v2", - "short": "List Resource Group Memberships V2", - "long": "Lists all resource group memberships for an organization having filtering option based on entity type (User / Workspace).\n\nUse query parameters to filter the response.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-group-v2" - }, - { - "name": "id", - "type": "string", - "usage": "List resource group memberships by ID." - }, - { - "name": "license-id", - "type": "string", - "usage": "List resource group memberships for a license, by ID." - }, - { - "name": "max", - "type": "string", - "usage": "Limit the maximum number of resource group memberships in the response." - }, - { - "name": "org-id", - "type": "string", - "usage": "List resource group memberships for an organization, by ID.", - "hidden": true - }, - { - "name": "status", - "type": "string", - "usage": "Limit resource group memberships to a specific status." - }, - { - "name": "type", - "type": "string", - "usage": "List resource group memberships for an organization, by type. If left blank it will include both User and Workspace type." - } - ] - }, - { - "path": "webex admin resource-memberships update-group", - "short": "Update a Resource Group Membership", - "long": "Updates a resource group membership, by ID.\n\nSpecify the resource group membership ID in the `resourceGroupMembershipId` URI parameter.\n\nOnly the `resourceGroupId` can be changed with this action. Resource group memberships with a `status` of \"pending\" cannot be updated. For more information about resource group memberships, see the [Managing Hybrid Services](/docs/api/guides/managing-hybrid-services-licenses#webex-resource-groups) guide.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-group" - }, - { - "name": "license-id", - "type": "string" - }, - { - "name": "person-id", - "type": "string" - }, - { - "name": "person-org-id", - "type": "string" - }, - { - "name": "resource-group-id", - "type": "string" - }, - { - "name": "resource-group-membership-id", - "type": "string", - "usage": "The unique identifier for the resource group membership.", - "required": true - }, - { - "name": "status", - "type": "string" - } - ] - }, - { - "path": "webex admin roles", - "short": "Roles commands" - }, - { - "path": "webex admin roles get", - "short": "Get Role Details", - "long": "Shows details for a role, by ID.\n\nSpecify the role ID in the `roleId` parameter in the URI.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "role-id", - "type": "string", - "usage": "The unique identifier for the role.", - "required": true - } - ] - }, - { - "path": "webex admin roles list", - "short": "List Roles", - "long": "List all roles. Must be called by an admin user.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - } - ] - }, - { - "path": "webex admin scim-2-bulk", - "short": "Scim2Bulk commands" - }, - { - "path": "webex admin scim-2-bulk user-api", - "short": "User bulk API", - "long": "
\n\n**Authorization**\n\nOAuth token rendered by Identity Broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n
\n\n**Usage**:\n\n1. The input JSON must conform to the following schema: 'urn:ietf:params:scim:api:messages:2.0:BulkRequest'.\n\n1. The request must be accompanied with a body in JSON format according to the standard SCIM schema definition.\n The maximum number of operations in a request is 100; an error is thrown if the limit is exceeded.\n\n1. `failOnErrors` parameter\n\n An integer specifies the number of errors that the service provider will accept before the operation is terminated and an error response is returned.\n It is OPTIONAL in a request.\n Maximum number of operations allowed to fail before the server stops processing the request. The value must be between 1 and 100.\n\n1. `operations` parameter\n\n Contains a list of bulk operations for POST/PATCH/DELETE operations. (REQUIRED)\n + `operations.method`\n\n The HTTP method of the current operation. Possible values are POST, PATCH or DELETE.\n + `operations.path`\n\n The Resource's relative path. If the method is POST the value must specify a Resource type endpoint;\n e.g., /Users or /Groups whereas all other method values must specify the path to a specific Resource;\n e.g., /Users/2819c223-7f76-453a-919d-413861904646.\n + `operations.data`\n\n The Resource data as it would appear for a single POST or PATCH Resource operation.\n It is REQUIRED in a request when method is POST and PATCH.\n Refer to corresponding wiki for SCIM 2.0 POST, PATCH and DELETE API.\n + `operations.bulkId`\n\n The transient identifier of a newly created resource, unique within a bulk request and created by the client.\n The bulkId serves as a surrogate resource id enabling clients to uniquely identify newly created resources in the response and cross-reference new resources in and across operations within a bulk request.\n It is REQUIRED when \"method\" is \"POST\".", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for user-api" - }, - { - "name": "org-id", - "type": "string", - "usage": "Webex Identity assigned organization identifier for user's organization.", - "hidden": true - } - ] - }, - { - "path": "webex admin scim-2-groups", - "short": "Scim2Groups commands" - }, - { - "path": "webex admin scim-2-groups create", - "short": "Create a group", - "long": "Create a new group for a given organization. The group may optionally be created with group members.\n\n
\n\n**Authorization**\n\nOAuth token returned by Identity Broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n
\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n- `id_group_admin`\n\n
\n\n**Usage**:\n\n1. The input JSON must conform to one of the following schemas:\n - `urn:ietf:params:scim:schemas:core:2.0:Group`\n - `urn:scim:schemas:extension:cisco:webexidentity:2.0:Group`\n\n1. Unrecognized schemas (ID/section) are ignored.\n\n1. Read-only attributes provided as input values are ignored.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "org-id", - "type": "string", - "usage": "The ID of the organization to which this group belongs. If not specified, the organization ID from the OAuth token is used.", - "hidden": true - } - ] - }, - { - "path": "webex admin scim-2-groups delete", - "short": "Delete a group", - "long": "Remove a group from the system.\n\nSpecify the group ID in the `groupId` parameter in the URI.\n\n
\n\n**Authorization**\n\nOAuth token rendered by Identity Broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n
\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n- `id_group_admin`", - "flags": [ - { - "name": "group-id", - "type": "string", - "usage": "A unique identifier for the group.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "org-id", - "type": "string", - "usage": "The ID of the organization to which this group belongs. If not specified, the organization ID from the OAuth token is used.", - "hidden": true - } - ] - }, - { - "path": "webex admin scim-2-groups get", - "short": "Get a group", - "long": "Retrieve details for a group, by ID.\n\nOptionally, members can be retrieved with this request. The maximum number of members returned is 500.\n\n
\n\n**Authorization**\n\nOAuth token rendered by Identity Broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n- `identity:people_read`\n\n
\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n- `id_group_admin`\n\n- `id_readonly_admin`\n\n- `id_device_admin`", - "flags": [ - { - "name": "excluded-attributes", - "type": "string", - "usage": "Attributes to be excluded from the return." - }, - { - "name": "group-id", - "type": "string", - "usage": "A unique identifier for the group.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "org-id", - "type": "string", - "usage": "The ID of the organization to which this group belongs. If not specified, the organization ID from the OAuth token is used.", - "hidden": true - } - ] - }, - { - "path": "webex admin scim-2-groups get-members", - "short": "Get Group Members", - "long": "Returns the members of a group.\n\n- The default maximum number of members returned is 500.\n\n- Control parameters are available to page through the members and to control the size of the results.\n\n- Long result sets are split into [pages](/docs/basics#pagination).\n\n**Note**\nLocation groups are different from SCIM groups. You cannot search for identities in a location via groups.\n\n
\n\n**Authorization**\n\nOAuth token returned by the Identity Broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n- `identity:people_read`\n\n
\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n- `id_group_admin`\n\n- `id_readonly_admin`\n\n- `id_device_admin`", - "flags": [ - { - "name": "count", - "type": "string", - "usage": "Non-negative integer that specifies the desired number of search results per page. The maximum value for the count is 500." - }, - { - "name": "group-id", - "type": "string", - "usage": "A unique identifier for the group.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-members" - }, - { - "name": "member-type", - "type": "string", - "usage": "Filter the members by member type. Sample data: `user`, `machine`, `group`." - }, - { - "name": "org-id", - "type": "string", - "usage": "The ID of the organization to which this group belongs. If not specified, the organization ID from the OAuth token is used.", - "hidden": true - }, - { - "name": "start-index", - "type": "string", - "usage": "The index to start for group pagination." - } - ] - }, - { - "path": "webex admin scim-2-groups search", - "short": "Search groups", - "long": "Retrieve a list of groups in the organization.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n
\n\n**Authorization**\n\nAn OAuth token rendered by Identity Broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n- `identity:people_read`\n\n
\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n- `id_group_admin`\n\n- `id_readonly_admin`\n\n- `id_device_admin`", - "flags": [ - { - "name": "attributes", - "type": "string", - "usage": "The attributes to return." - }, - { - "name": "count", - "type": "string", - "usage": "An integer indicating the desired maximum number of query results per page. The default is 100." - }, - { - "name": "excluded-attributes", - "type": "string", - "usage": "Attributes to be excluded from the return." - }, - { - "name": "filter", - "type": "string", - "usage": "The url encoded filter. The example content is 'displayName Eq \"group1@example.com\" or displayName Eq \"group2@example.com\"'. For more filter patterns, see https://datatracker.ietf.org/doc/html/rfc7644#section-3.4.2.2. If the value is empty, the API returns all groups under the organization. " - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for search" - }, - { - "name": "include-members", - "type": "string", - "usage": "Default \"false\". If false, no members returned." - }, - { - "name": "member-type", - "type": "string", - "usage": "Filter the members by member type. Sample data: `user`, `machine`, `group`." - }, - { - "name": "org-id", - "type": "string", - "usage": "The ID of the organization to which this group belongs. If not specified, the organization ID from the OAuth token is used.", - "hidden": true - }, - { - "name": "sort-by", - "type": "string", - "usage": "A string indicating the attribute whose value be used to order the returned responses. Now we only allow `displayName, id, meta.lastModified` to sort." - }, - { - "name": "sort-order", - "type": "string", - "usage": "A string indicating the order in which the `sortBy` parameter is applied. Allowed values are `ascending` and `descending`." - }, - { - "name": "start-index", - "type": "string", - "usage": "An integer indicating the 1-based index of the first query result. The default is 1." - } - ] - }, - { - "path": "webex admin scim-2-groups update-patch", - "short": "Update a group with PATCH", - "long": "Update group attributes with PATCH.\n\nSpecify the group ID in the `groupId` parameter in the URI.\n\n
\n\n**Authorization**\n\nOAuth token returned by Identity Broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n
\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n- `id_group_admin`\n\n
\n\n**Usage**:\n\n1. The input JSON must conform to one of the following schemas:\n - `urn:ietf:params:scim:schemas:core:2.0:Group`\n - `urn:scim:schemas:extension:cisco:webexidentity:2.0:Group`\n\n1. Unrecognized schemas (ID/section) are ignored.\n\n1. Read-only attributes provided as input values are ignored.\n\n1. Each operation on an attribute must be compatible with the attribute's mutability.\n\n1. Each PATCH operation represents a single action to be applied to the\n same SCIM resource specified by the request URI. Operations are\n applied sequentially in the order they appear in the array. Each\n operation in the sequence is applied to the target resource; the\n resulting resource becomes the target of the next operation.\n Evaluation continues until all operations are successfully applied or\n until an error condition is encountered.\n\n
\n\n**Add operations**:\n\nThe `add` operation is used to add a new attribute value to an existing resource. The operation must contain a `value` member whose content specifies the value to be added. The value may be a quoted value, or it may be a JSON object containing the sub-attributes of the complex attribute specified in the operation's `path`. The result of the add operation depends upon the target location indicated by `path` references:\n\n
\n\n- If omitted, the target location is assumed to be the resource itself. The `value` parameter contains a set of attributes to be added to the resource.\n\n- If the target location does not exist, the attribute and value are added.\n\n- If the target location specifies a complex attribute, a set of sub-attributes shall be specified in the `value` parameter.\n\n- If the target location specifies a multi-valued attribute, a new value is added to the attribute.\n\n- If the target location specifies a single-valued attribute, the existing value is replaced.\n\n- If the target location specifies an attribute that does not exist (has no value), the attribute is added with the new value.\n\n- If the target location exists, the value is replaced.\n\n- If the target location already contains the value specified, no changes should be made to the resource.\n\n
\n\n**Replace operations**:\n\nThe `replace` operation replaces the value at the target location specified by the `path`. The operation performs the following functions, depending on the target location specified by `path`:\n\n
\n\n- If the `path` parameter is omitted, the target is assumed to be the resource itself. In this case, the `value` attribute shall contain a list of one or more attributes that are to be replaced.\n\n- If the target location is a single-value attribute, the value of the attribute is replaced.\n\n- If the target location is a multi-valued attribute and no filter is specified, the attribute and all values are replaced.\n\n- If the target location path specifies an attribute that does not exist, the service provider shall treat the operation as an \"add\".\n\n- If the target location specifies a complex attribute, a set of sub-attributes SHALL be specified in the `value` parameter, which replaces any existing values or adds where an attribute did not previously exist. Sub-attributes that are not specified in the `value` parameters are left unchanged.\n\n- If the target location is a multi-valued attribute and a value selection (\"valuePath\") filter is specified that matches one or more values of the multi-valued attribute, then all matching record values will be replaced.\n\n- If the target location is a complex multi-valued attribute with a value selection filter (\"valuePath\") and a specific sub-attribute (e.g., \"addresses[type eq \"work\"].streetAddress\"), the matching sub-attribute of all matching records is replaced.\n\n- If the target location is a multi-valued attribute for which a value selection filter (\"valuePath\") has been supplied and no record match was made, the service provider will indicate the failure by returning HTTP status code 400 and a `scimType` error code of `noTarget`.\n\n
\n\n**Remove operations**:\n\nThe `remove` operation removes the value at the target location specified by the required attribute `path`. The operation performs the following functions, depending on the target location specified by `path`:\n\n
\n\n- If `path` is unspecified, the operation fails with HTTP status code 400 and a \"scimType\" error code of \"noTarget\".\n\n- If the target location is a single-value attribute, the attribute and its associated value is removed, and the attribute will be considered unassigned.\n\n- If the target location is a multi-valued attribute and no filter is specified, the attribute and all values are removed, and the attribute SHALL be considered unassigned.\n\n- If the target location is a multi-valued attribute and a complex filter is specified comparing a `value`, the values matched by the filter are removed. If no other values remain after the removal of the selected values, the multi-valued attribute will be considered unassigned.\n\n- If the target location is a complex multi-valued attribute and a complex filter is specified based on the attribute`s sub-attributes, the matching records are removed. Sub-attributes whose values have been removed will be considered unassigned. If the complex multi-valued attribute has no remaining records, the attribute will be considered unassigned.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "group-id", - "type": "string", - "usage": "A unique identifier for the group.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-patch" - }, - { - "name": "org-id", - "type": "string", - "usage": "The ID of the organization to which this group belongs. If not specified, the organization ID from the OAuth token is used.", - "hidden": true - } - ] - }, - { - "path": "webex admin scim-2-groups update-put", - "short": "Update a group with PUT", - "long": "Replace the contents of the Group.\n\nSpecify the group ID in the `groupId` parameter in the URI.\n\n
\n\n**Authorization**\n\nOAuth token returned by Identity Broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n
\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n- `id_group_admin`\n\n
\n\n**Usage**:\n\n1. The input JSON must conform to one of the following schemas:\n - `urn:ietf:params:scim:schemas:core:2.0:Group`\n - `urn:scim:schemas:extension:cisco:webexidentity:2.0:Group`\n\n1. Unrecognized schemas (ID/section) are ignored.\n\n1. Read-only attributes provided as input values are ignored.\n\n1. The group `id` is not changed.\n\n1. All attributes are cleaned up if a new value is not provided by the client.\n\n1. The values, `meta` and `created` are not changed.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "group-id", - "type": "string", - "usage": "A unique identifier for the group.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-put" - }, - { - "name": "org-id", - "type": "string", - "usage": "The ID of the organization to which this group belongs. If not specified, the organization ID from the OAuth token is used.", - "hidden": true - } - ] - }, - { - "path": "webex admin scim-2-schemas", - "short": "Scim2Schemas commands" - }, - { - "path": "webex admin scim-2-schemas get-group", - "short": "Get Group Schema", - "long": "This API allows the service client to get all the `Group` schemas information from CI.\n\n**Authorization:**\n\nOAuth token rendered by Identity Broker.\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n- `identity:organizations_rw`\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n- `id_user_admin`\n\n- `id_readonly_admin`\n\n- `id_device_admin`", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-group" - } - ] - }, - { - "path": "webex admin scim-2-schemas get-group-id", - "short": "Get Schema using Group Schema ID", - "long": "This API allows the service client to get the Group/User Schema using `Schema Id` from CI.\n\nExample:\n\n- `urn:ietf:params:scim:schemas:core:2.0:Group` is one of the `Group Schema Id`. Using this particular ID, we can fetch all information related to it.\n\n- `urn:ietf:params:scim:schemas:extension:enterprise:2.0:User` is one of the `User Schema Id`. Using this particular ID, we can fetch all information related to it.\n\n**Authorization:**\n\nOAuth token rendered by Identity Broker.\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n- `identity:organizations_rw`\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n- `id_user_admin`\n\n- `id_readonly_admin`\n\n- `id_device_admin`", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-group-id" - }, - { - "name": "schema-id", - "type": "string", - "usage": "The Schema Id of Group/User Schema", - "required": true - } - ] - }, - { - "path": "webex admin scim-2-schemas get-user", - "short": "Get User Schema", - "long": "This API allows the service client to get all the `User` schemas information from CI.\n\n**Authorization:**\n\nOAuth token rendered by Identity Broker.\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n- `identity:organizations_rw`\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n- `id_user_admin`\n\n- `id_readonly_admin`\n\n- `id_device_admin`", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-user" - } - ] - }, - { - "path": "webex admin scim-2-users", - "short": "Scim2Users commands" - }, - { - "path": "webex admin scim-2-users create", - "short": "Create a user", - "long": "The SCIM 2 /Users API provides a programmatic way to manage users in Webex Identity using The Internet Engineering Task Force standard SCIM 2.0 standard as specified by [RFC 7643 SCIM 2.0 Core Schema ](https://datatracker.ietf.org/doc/html/rfc7643) and [RFC 7644 SCIM 2.0 Core Protocol](https://datatracker.ietf.org/doc/html/rfc7644). The WebEx SCIM 2.0 APIs allow clients supporting the SCIM 2.0 standard to manage users, and groups within Webex. Webex supports the following SCIM 2.0 Schemas:\n\n• urn:ietf:params:scim:schemas:core:2.0:User\n\n• urn:ietf:params:scim:schemas:extension:enterprise:2.0:User\n\n• urn:scim:schemas:extension:cisco:webexidentity:2.0:User\n\n
\n\n**Authorization**\n\nOAuth token rendered by Identity Broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n
\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n- `id_user_admin`\n\n
\n\n**Usage**:\n\n1. Input JSON must contain schema: \"urn:ietf:params:scim:schemas:core:2.0:User\".\n\n2. Support 3 schemas :\n - \"urn:ietf:params:scim:schemas:core:2.0:User\"\n - \"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User\"\n - \"urn:scim:schemas:extension:cisco:webexidentity:2.0:User\"\n\n3. Unrecognized schemas (ID/section) are ignored.\n\n4. Read-only attributes provided as input values are ignored.\n\n The following roles cannot be assigned to a user:\n\n1. Location Admin\n\n2. Webex Site Admin", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "org-id", - "type": "string", - "usage": "Webex Identity assigned organization identifier for user's organization.", - "hidden": true - } - ] - }, - { - "path": "webex admin scim-2-users delete", - "short": "Delete a user", - "long": "
\n\n**Authorization**\n\nOAuth token rendered by Identity Broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n
\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n- `id_user_admin`\n\n
", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "org-id", - "type": "string", - "usage": "Webex Identity assigned organization identifier for user's organization.", - "hidden": true - }, - { - "name": "user-id", - "type": "string", - "usage": "Webex Identity assigned user identifier.", - "required": true - } - ] - }, - { - "path": "webex admin scim-2-users get", - "short": "Get a user", - "long": "
\n\n**Authorization**\n\nOAuth token rendered by Identity Broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n- `identity:people_read`\n\n
\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n- `id_user_admin`\n\n- `id_readonly_admin`\n\n- `id_device_admin`\n\n
", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "org-id", - "type": "string", - "usage": "Webex Identity assigned organization identifier for user's organization.", - "hidden": true - }, - { - "name": "user-id", - "type": "string", - "usage": "Webex Identity assigned user identifier.", - "required": true - } - ] - }, - { - "path": "webex admin scim-2-users get-me", - "short": "Get Me", - "long": "
\n\n**Authorization**\n\nOAuth token rendered by Identity Broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n- `identity:people_read`\n\n
\n\nThe API can be used by any user to retrieve user information using their own access token.\n\n
", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-me" - } - ] - }, - { - "path": "webex admin scim-2-users search", - "short": "Search users", - "long": "
\n\n**Authorization**\n\nOAuth token rendered by Identity Broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n- `identity:people_read`\n\n
\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n- `id_user_admin`\n\n- `id_readonly_admin`\n\n- `id_device_admin`\n\n
", - "flags": [ - { - "name": "attributes", - "type": "string", - "usage": "A multi-valued list of string names for resource attributes to return in the response, like 'userName,department,emails'. It supports the SCIM id 'urn:ietf:params:scim:schemas:extension:enterprise:2.0:User,userName'. The default is empty, all attributes will be returned" - }, - { - "name": "count", - "type": "string", - "usage": "An integer for the maximum number of query results per page. The default is 100." - }, - { - "name": "excluded-attributes", - "type": "string", - "usage": "A multi-valued list of strings names for resource attributes to be removed from the default set of attributes to return. The default is empty, all attributes will be returned" - }, - { - "name": "filter", - "type": "string", - "usage": "The URL encoded filter. If the value is empty, the API will return all users under the organization. The examples below show some search filters: - `userName` eq \"user1@example.com\" - `userName` sw \"user1@example\" - `userName` ew \"example\" - `phoneNumbers` [ type eq \"mobile\" and value eq \"14170120\"] - `urn:scim:schemas:extension:cisco:webexidentity:2.0:User:meta.organizationId` eq \"0ae87ade-8c8a-4952-af08-318798958d0c\" - For more filter patterns, please check [filtering](https://datatracker.ietf.org/doc/html/rfc7644#section-3.4.2.2). | **Attributes** | **Operators** | |-----|-----| | **SCIM Core**                              | ---- | | `id` | eq | | `userName` | eq sw ew | | `name.familyName` | eq sw ew | | `name.givenName` | eq sw | | `name.middleName` | eq sw | | `name.formatted` | eq sw | | `displayName` | eq sw ew | | `nickName` | eq sw ew | | `emails.display` | eq sw ew | | `emails.value` | eq sw ew | | `phoneNumbers.value` | eq sw ew | | `phoneNumbers.display` | eq sw ew | | **Enterprise Extensions** | ---- | | `employeeNumber` | eq sw ew | | `costCenter` | eq sw ew | | `organization` | eq sw ew | | `division` | eq sw ew | | `department` | eq sw ew | | `manager.value` | eq | | `manager.displayName` | eq sw ew |" - }, - { - "name": "group-usage-types", - "type": "string", - "usage": "Returns groups with details of the specified group type." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for search" - }, - { - "name": "include-group-details", - "type": "string", - "usage": "Define whether the group information with details needs to be returned. The default is false." - }, - { - "name": "org-id", - "type": "string", - "usage": "Webex Identity assigned organization identifier for user's organization.", - "hidden": true - }, - { - "name": "return-groups", - "type": "string", - "usage": "Define whether the group information needs to be returned. The default is false." - }, - { - "name": "sort-by", - "type": "string", - "usage": "A string for the attribute whose value can be used to order the returned responses. Now we only allow `userName`, `id`, `meta.lastModified` to sort." - }, - { - "name": "sort-order", - "type": "string", - "usage": "A string for the order in which the 'sortBy' parameter is applied. Allowed values are 'ascending' and 'descending'." - }, - { - "name": "start-index", - "type": "string", - "usage": "An integer for the 1-based index of the first query result. The default is 1." - } - ] - }, - { - "path": "webex admin scim-2-users update-patch", - "short": "Update a user with PATCH", - "long": "
\n\n**Authorization**\n\nOAuth token rendered by Identity Broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n
\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n- `id_user_admin`\n\n
\n\n**Usage**:\n\n1. The PATCH API replaces individual attributes and roles of the user's data in the request body.\n The PATCH API supports `add`, `remove`, and `replace` operations on any individual\n attribute or role allowing only specific attributes of the user's object to be modified.\n\n2. Each operation against an attribute must be compatible with the attribute's mutability.\n\n3. Each PATCH operation represents a single action to be applied to the\n same SCIM resource specified by the request URI. Operations are\n applied sequentially in the order they appear in the array. Each\n operation in the sequence is applied to the target resource; the\n resulting resource becomes the target of the next operation.\n Evaluation continues until all operations are successfully applied or\n until an error condition is encountered.\n\n
\n\n**Add operations**:\n\nThe `add` operation adds a new attribute value to an existing resource.\nThe operation must contain a `value` member whose content specifies the value to be added.\nThe value may be a quoted value, or it may be a JSON object containing the sub-attributes of the complex attribute specified in the operation's `path`.\nThe result of the add operation depends upon the target `path` reference locations:\n\n
\n\n- If omitted, the target location is assumed to be the resource itself. The `value` parameter contains a set of attributes to be added to the resource.\n\n- If the target location does not exist, the attribute and value are added.\n\n- If the target location specifies a complex attribute, a set of sub-attributes shall be specified in the `value` parameter.\n\n- If the target location specifies a multi-valued attribute, a new value is added to the attribute.\n\n- If the target location specifies a single-valued attribute, the existing value is replaced.\n\n- If the target location specifies an attribute that does not exist (has no value), the attribute is added with the new value.\n\n- If the target location exists, the value is replaced.\n\n- If the target location already contains the value specified, no changes should be made to the resource.\n\n
\n\n**Replace operations**:\n\nThe `replace` operation replaces the value at the target location specified by the `path`.\nThe operation performs the following functions, depending on the target location specified by `path`:\n\n
\n\n- If the `path` parameter is omitted, the target is assumed to be the resource itself. In this case, the `value` attribute shall contain a list of one or more attributes to be replaced.\n\n- If the target location is a single-value attribute, the value of the attribute is replaced.\n\n- If the target location is a multi-valued attribute and no filter is specified, the attribute and all values are replaced.\n\n- If the target location path specifies an attribute that does not exist, the service provider shall treat the operation as an \"add\".\n\n- If the target location specifies a complex attribute, a set of sub-attributes SHALL be specified in the `value` parameter, which replaces any existing values or adds where an attribute did not previously exist. Sub-attributes not specified in the `value` parameters are left unchanged.\n\n- If the target location is a multi-valued attribute and a value selection (\"valuePath\") filter is specified that matches one or more values of the multi-valued attribute, then all matching record values will be replaced.\n\n- If the target location is a complex multi-valued attribute with a value selection filter (\"valuePath\") and a specific sub-attribute (e.g., \"addresses[type eq \"work\"].streetAddress\"), the matching sub-attribute of all matching records is replaced.\n\n- If the target location is a multi-valued attribute for which a value selection filter (\"valuePath\") has been supplied and no record match was made, the service provider will return failure as HTTP status code 400 and a `scimType` error code of \"noTarget\".\n\n
\n\n**Remove operations**:\n\nThe `remove` operation removes the value at the target location specified by the required attribute `path`. The operation performs the following functions, depending on the target location specified by `path`:\n\n
\n\n- If `path` is unspecified, the operation fails with HTTP status code 400 and a \"scimType\" error code of \"noTarget\".\n\n- If the target location is a single-value attribute, the attribute and its associated value is removed, and the attribute will be considered unassigned.\n\n- If the target location is a multi-valued attribute and no filter is specified, the attribute and all values are removed, and the attribute SHALL be considered unassigned.\n\n- If the target location is a multi-valued attribute and a complex filter is specified comparing a `value`, the values matched by the filter are removed. If no other values remain after the removal of the selected values, the multi-valued attribute will be considered unassigned.\n\n- If the target location is a complex multi-valued attribute and a complex filter is specified based on the attribute's sub-attributes, the matching records are removed. Sub-attributes whose values have been removed will be considered unassigned. If the complex multi-valued attribute has no remaining records, the attribute will be considered unassigned.\n\n The following roles cannot be assigned to a user:\n\n1. Location Admin\n\n2. Webex Site Admin \n\n
\n\n**NOTE**:\n\nOnce a user's role or managed roles are changed, all tokens associated with that user will be invalidated.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-patch" - }, - { - "name": "org-id", - "type": "string", - "usage": "Webex Identity assigned organization identifier for user's organization.", - "hidden": true - }, - { - "name": "user-id", - "type": "string", - "usage": "Webex Identity assigned user identifier.", - "required": true - } - ] - }, - { - "path": "webex admin scim-2-users update-put", - "short": "Update a user with PUT", - "long": "
\n\n**Authorization**\n\nOAuth token rendered by Identity Broker.\n\n
\n\nOne of the following OAuth scopes is required:\n\n- `identity:people_rw`\n\n
\n\nThe following administrators can use this API:\n\n- `id_full_admin`\n\n- `id_user_admin`\n\n
\n\n**Usage**:\n\n1. Input JSON must contain schema: \"urn:ietf:params:scim:schemas:core:2.0:User\".\n\n2. Support 3 schemas :\n - \"urn:ietf:params:scim:schemas:core:2.0:User\"\n - \"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User\"\n - \"urn:scim:schemas:extension:cisco:webexidentity:2.0:User\"\n\n3. Unrecognized schemas (ID/section) are ignored.\n\n4. Read-only attributes provided as input values are ignored.\n\n5. User `id` will not be changed.\n\n6. `meta`.`created` will not be changed.\n\n7. The PUT API replaces the contents of the user's data with the data in the request body. All attributes specified in the request body will replace all existing attributes for the `userId` specified in the URL. Should you wish to replace or change some attributes as opposed to all attributes please refer to the SCIM PATCH operation https://developer.webex.com/docs/api/v1/scim2-user/update-a-user-with-patch.\n\n
\n\n**NOTE**:\n\nOnce a user's role or managed roles are changed, all tokens associated with that user will be invalidated.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-put" - }, - { - "name": "org-id", - "type": "string", - "usage": "Webex Identity assigned organization identifier for user's organization.", - "hidden": true - }, - { - "name": "user-id", - "type": "string", - "usage": "Webex Identity assigned user identifier.", - "required": true - } - ] - }, - { - "path": "webex admin security-audit", - "short": "SecurityAudit commands" - }, - { - "path": "webex admin security-audit list-events", - "short": "List Security Audit Events", - "long": "List Security Audit Events. This API currently returns user sign-in and sign-out data.\nTo call this API the `audit:events_read` scope must be selected for the Integration or Service App and authorized by a Full Admin.\n\nSeveral query parameters are available to filter the response.\n\nLong result sets will be split into multiple [pages](/docs/basics#pagination)\n\n**NOTE**: A maximum of one year of audit events can be returned per request.", - "flags": [ - { - "name": "actor-id", - "type": "string", - "usage": "List events performed by this person, by ID." - }, - { - "name": "end-time", - "type": "string", - "usage": "List events which occurred before a specific date and time." - }, - { - "name": "event-categories", - "type": "string", - "usage": "List events, by event categories." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-events" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the maximum number of events in the response. The maximum value is `1000`." - }, - { - "name": "org-id", - "type": "string", - "usage": "List events in this organization, by ID.", - "hidden": true - }, - { - "name": "start-time", - "type": "string", - "usage": "List events which occurred after a specific date and time." - } - ] - }, - { - "path": "webex admin send-activation-email", - "short": "SendActivationEmail commands" - }, - { - "path": "webex admin send-activation-email get-bulk-resend-job-errors", - "short": "Get Bulk Activation Email Resend Job Errors", - "long": "Get errors of an activation email resend job by its job ID.\n\nRequires a full or user administrator auth token with a scope of `spark-admin:people_write` or read-only administrator auth token with a scope of `spark-admin:people_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-bulk-resend-job-errors" - }, - { - "name": "job-id", - "type": "string", - "usage": "Retrieve job status for this `jobId`.", - "required": true - }, - { - "name": "max", - "type": "string", - "usage": "Limit the maximum number of errors in the response." - }, - { - "name": "org-id", - "type": "string", - "usage": "Check job status for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex admin send-activation-email get-bulk-resend-job-status", - "short": "Get Bulk Activation Email Resend Job Status", - "long": "Get the details of an activation email resend job by its job ID.\n\nRequires a full or user administrator auth token with a scope of `spark-admin:people_write` or read-only administrator auth token with a scope of `spark-admin:people_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-bulk-resend-job-status" - }, - { - "name": "job-id", - "type": "string", - "usage": "Retrieve job status for this `jobId`.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Check job status for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex admin send-activation-email initiate-bulk-resend-job", - "short": "Initiate Bulk Activation Email Resend Job", - "long": "Initiate a bulk activation email resend job that sends an activation email to all eligible users in an organization. Only a single instance of the job can be running for an organization.\n\nRequires a full or user administrator auth token with a scope of `spark-admin:people_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for initiate-bulk-resend-job" - }, - { - "name": "org-id", - "type": "string", - "usage": "Initiate job for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex admin service-apps", - "short": "ServiceApps commands" - }, - { - "path": "webex admin service-apps create-access-token", - "short": "Create Service App Access Token", - "long": "Retrieves an organization specific token pair for an already authorized Service App. Service Apps use machine accounts to make API calls on behalf of an organization, independent of individual user life cycles.\n\nThis endpoint allows you to programmatically retrieve access and refresh tokens after a Full Admin has authorized your Service App in Control Hub.\n\nTo call this endpoint, you need an integration with the spark:applications_token scope.", - "flags": [ - { - "name": "application-id", - "type": "string", - "usage": "The unique identifier of the Service App", - "required": true - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "client-id", - "type": "string" - }, - { - "name": "client-secret", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-access-token" - }, - { - "name": "target-org-id", - "type": "string" - } - ] - }, - { - "path": "webex admin settings", - "short": "Settings commands" - }, - { - "path": "webex admin settings create-update-org", - "short": "Create or Update an Organization Setting", - "long": "This endpoint creates or updates the specified setting for the given organization; however, the 'name' of the setting cannot be modified. It is accessible with the scope 'identity:organizations_rw'.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-update-org" - }, - { - "name": "key", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "The Webex organization id in Control Hub UUID or API orgId format.", - "hidden": true - }, - { - "name": "value", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex admin settings get-org", - "short": "Get an Organization Setting", - "long": "This endpoint retrieves the specified setting for the given organization and is accessible with the scope 'identity:organizations_read'.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-org" - }, - { - "name": "org-id", - "type": "string", - "usage": "The Webex organization id in Control Hub UUID or API orgId format.", - "hidden": true - }, - { - "name": "setting-key", - "type": "string", - "usage": "The key of the setting.", - "required": true - } - ] - }, - { - "path": "webex admin workspace-locations", - "short": "WorkspaceLocations commands" - }, - { - "path": "webex admin workspace-locations create", - "short": "Create a Workspace Location", - "long": "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nCreate a location. The `cityName` and `notes` parameters are optional, and omitting them will result in the creation of a location without values for those attributes.\nRequires an administrator auth token with the `spark-admin:workspace_locations_write` scope.", - "flags": [ - { - "name": "address", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "city-name", - "type": "string" - }, - { - "name": "country-code", - "type": "string" - }, - { - "name": "display-name", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "latitude", - "type": "int64", - "default": "0" - }, - { - "name": "longitude", - "type": "int64", - "default": "0" - }, - { - "name": "notes", - "type": "string" - } - ] - }, - { - "path": "webex admin workspace-locations create-floor", - "short": "Create a Workspace Location Floor", - "long": "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nCreate a new floor in the given location. The `displayName` parameter is optional, and omitting it will result in the creation of a floor without that value set.\nRequires an administrator auth token with the `spark-admin:workspace_locations_write` scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "display-name", - "type": "string" - }, - { - "name": "floor-number", - "type": "int64", - "default": "0" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-floor" - }, - { - "name": "location-id", - "type": "string", - "usage": "A unique identifier for the location.", - "required": true - } - ] - }, - { - "path": "webex admin workspace-locations delete", - "short": "Delete a Workspace Location", - "long": "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nDeletes a location, by ID. The workspaces associated to that location will no longer have a location, but a new location can be reassigned to them.\nRequires an administrator auth token with the `spark-admin:workspace_locations_write` scope.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "location-id", - "type": "string", - "usage": "A unique identifier for the location.", - "required": true - } - ] - }, - { - "path": "webex admin workspace-locations delete-floor", - "short": "Delete a Workspace Location Floor", - "long": "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nDeletes a floor, by ID.\nRequires an administrator auth token with the `spark-admin:workspace_locations_write` scope.", - "flags": [ - { - "name": "floor-id", - "type": "string", - "usage": "A unique identifier for the floor.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-floor" - }, - { - "name": "location-id", - "type": "string", - "usage": "A unique identifier for the location.", - "required": true - } - ] - }, - { - "path": "webex admin workspace-locations get", - "short": "Get a Workspace Location Details", - "long": "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nShows details for a location, by ID. Specify the location ID in the `locationId` parameter in the URI.\nRequires an administrator auth token with the `spark-admin:workspace_locations_read` scope.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "location-id", - "type": "string", - "usage": "A unique identifier for the location.", - "required": true - } - ] - }, - { - "path": "webex admin workspace-locations get-floor", - "short": "Get a Workspace Location Floor Details", - "long": "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nShows details for a floor, by ID. Specify the floor ID in the `floorId` parameter in the URI.\nRequires an administrator auth token with the `spark-admin:workspace_locations_read` scope.", - "flags": [ - { - "name": "floor-id", - "type": "string", - "usage": "A unique identifier for the floor.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-floor" - }, - { - "name": "location-id", - "type": "string", - "usage": "A unique identifier for the location.", - "required": true - } - ] - }, - { - "path": "webex admin workspace-locations list", - "short": "List Workspace Locations", - "long": "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nList workspace locations. Use query parameters to filter the response. The `orgId` parameter can only be used by admin users of another\norganization (such as partners). The `displayName`, `address`, `countryCode` and `cityName` parameters are all optional.\nRequires an administrator auth token with the `spark-admin:workspace_locations_read` scope.", - "flags": [ - { - "name": "address", - "type": "string", - "usage": "Location address." - }, - { - "name": "city-name", - "type": "string", - "usage": "Location city name." - }, - { - "name": "country-code", - "type": "string", - "usage": "Location country code (ISO 3166-1)." - }, - { - "name": "display-name", - "type": "string", - "usage": "Location display name." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "org-id", - "type": "string", - "usage": "List workspace locations in this organization. Only admin users of another organization (such as partners) may use this parameter.", - "hidden": true - } - ] - }, - { - "path": "webex admin workspace-locations list-floors", - "short": "List Workspace Location Floors", - "long": "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nList workspace location floors.\nRequires an administrator auth token with the `spark-admin:workspace_locations_read` scope.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-floors" - }, - { - "name": "location-id", - "type": "string", - "usage": "A unique identifier for the location.", - "required": true - } - ] - }, - { - "path": "webex admin workspace-locations update", - "short": "Update a Workspace Location", - "long": "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nUpdates details for a location, by ID. Specify the location ID in the `locationId` parameter in the URI. The request should include all details for the location returned in a previous call to [Get Workspace Location Details](/docs/api/v1/workspace-locations/get-a-workspace-location-details). Omitting the optional `cityName` or `notes` fields will result in those fields no longer being defined for the location.\nRequires an administrator auth token with the `spark-admin:workspace_locations_write` scope.", - "flags": [ - { - "name": "address", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "city-name", - "type": "string" - }, - { - "name": "country-code", - "type": "string" - }, - { - "name": "display-name", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "id", - "type": "string" - }, - { - "name": "latitude", - "type": "int64", - "default": "0" - }, - { - "name": "location-id", - "type": "string", - "usage": "A unique identifier for the location.", - "required": true - }, - { - "name": "longitude", - "type": "int64", - "default": "0" - }, - { - "name": "notes", - "type": "string" - } - ] - }, - { - "path": "webex admin workspace-locations update-floor", - "short": "Update a Workspace Location Floor", - "long": "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nUpdates details for a floor, by ID. Specify the floor ID in the `floorId` parameter in the URI. Include all details for the floor returned by a previous call to [Get Workspace Location Floor Details](/docs/api/v1/workspace-locations/get-a-workspace-location-details). Omitting the optional `displayName` field will result in that field no longer being defined for the floor.\nRequires an administrator auth token with the `spark-admin:workspace_locations_write` scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "display-name", - "type": "string" - }, - { - "name": "floor-id", - "type": "string", - "usage": "A unique identifier for the floor.", - "required": true - }, - { - "name": "floor-number", - "type": "int64", - "default": "0" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-floor" - }, - { - "name": "location-id", - "type": "string", - "usage": "A unique identifier for the location.", - "required": true - } - ] - }, - { - "path": "webex admin workspace-metrics", - "short": "WorkspaceMetrics commands" - }, - { - "path": "webex admin workspace-metrics duration", - "short": "Workspace Duration Metrics", - "long": "Get metrics for how much time a workspace has been in the state given by the `measurement` parameter.\n\nFor example, if the measurement is `timeBooked` then the duration for which the workspace has been booked is returned. The `workspaceId` parameter indicates which workspace to fetch metrics for. If no `measurement` is given, the default value is `timeUsed`.\n\n* When executing a query, the result bucket start times will default to the start of an hour or a day, depending on\nthe aggregation interval. However, the buckets will not contain data from outside the requested time range. For example, when\npassing `from=2020-10-21T10:34:56.000Z` and `aggregation=hourly`, the first output bucket would start at `2020-10-21T10:00:00.000Z`,\nbut the bucket would only aggregate data timestamped after `10:34:56`.\n\n* For aggregation mode `hourly`, the maximum time span is 48 hours. For aggregation mode `daily`, the maximum\ntime span is 30 days.", - "flags": [ - { - "name": "aggregation", - "type": "string", - "usage": "Unit of time over which to aggregate measurements." - }, - { - "name": "from", - "type": "string", - "usage": "Include data points after a specific date and time (ISO 8601 timestamp)." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for duration" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "measurement", - "type": "string", - "usage": "The measurement to return duration for." - }, - { - "name": "to", - "type": "string", - "usage": "Include data points before a specific date and time (ISO 8601 timestamp)." - }, - { - "name": "workspace-id", - "type": "string", - "usage": "ID of the workspace to get metrics for." - } - ] - }, - { - "path": "webex admin workspace-metrics workspace-metrics", - "short": "Workspace Metrics", - "long": "Get metric data for the specified workspace and metric name, optionally aggregated over a specified time period.\n\n* The `workspaceId` and `metricName` parameters indicate which workspace to fetch metrics for and what kind of metrics to get.\n\n* When executing an aggregated query, the result bucket start times will be truncated to the start of an hour or a day, depending on\nthe aggregation interval. However, the buckets will not contain data from outside the requested time range. For example, when\npassing `from=2020-10-21T10:34:56.000Z` and `aggregation=hourly`, the first output bucket would start at `2020-10-21T10:00:00.000Z`,\nbut the bucket would only aggregate data timestamped after `10:34:56`.\n\n* For aggregation modes `none` and `hourly`, the maximum time span is 48 hours. For aggregation mode `daily`, the maximum\ntime span is 30 days.\n\n* If the aggregation mode query parameter is set to `none`, the returned data in the response will be an array of items with the `deviceId`, `timestamp` and the raw `value`.\n\n* If the aggregation mode is `hourly` or `daily`, the returned data in the response will be an array of items with the `start` and `end` of the aggregation time bucket, and the `mean`, `max` and `min` values of the requested value. Note that zeroes and negative values are ignored. For example, this means that the `peopleCount` mean value should be interpreted as the average number of people in the room _when it is in use_.", - "flags": [ - { - "name": "aggregation", - "type": "string", - "usage": "Time unit over which to aggregate measurements." - }, - { - "name": "from", - "type": "string", - "usage": "List only data points after a specific date and time (ISO 8601 timestamp)" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for workspace-metrics" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "metric-name", - "type": "string", - "usage": "The type of data to extract." - }, - { - "name": "sort-by", - "type": "string", - "usage": "Sort results." - }, - { - "name": "to", - "type": "string", - "usage": "List data points before a specific date and time (ISO 8601 timestamp)" - }, - { - "name": "unit", - "type": "string", - "usage": "Output data unit (only a valid parameter if `metricName` is `temperature`)." - }, - { - "name": "workspace-id", - "type": "string", - "usage": "ID of the workspace to get metrics for." - } - ] - }, - { - "path": "webex agent-setup", - "short": "Print setup instructions for an AI agent", - "long": "Print a skill that tells an AI agent how to install the CLI and sign in. Run it with npx -y @cloverhound/webex-cli agent-setup." - }, - { - "path": "webex auth", - "short": "Manage authentication", - "long": "View and manage authenticated users, check token status, and switch between users." - }, - { - "path": "webex auth clear-folder-default", - "short": "Remove the folder default user for the current directory" - }, - { - "path": "webex auth clear-org", - "short": "Clear the persistent organization override", - "long": "Remove the default organization override, reverting to the login user's home org." - }, - { - "path": "webex auth export", - "short": "Print a stored refresh token for use as $WEBEX_REFRESH_TOKEN", - "long": "Prints the refresh token of a stored login so a login made on one machine can\nseed a CI secret or an unattended agent through $WEBEX_REFRESH_TOKEN. The user\nis the email given, else the one --user, $WEBEX_USER, the folder default, or the\ndefault user selects. Anyone holding the token can act as that user until it\nexpires (about 90 days after its last use), so treat it as a password.\n\nIn read-only mode only read-only logins can be exported, and the consumer must\nnot be in read-only mode, which refuses $WEBEX_REFRESH_TOKEN.\n\nThe token is printed alone on stdout. Confirm at the prompt, or pass --yes\nwhen there is no terminal.", - "flags": [ - { - "name": "yes", - "type": "bool", - "default": "false", - "usage": "Print without asking for confirmation" - } - ] - }, - { - "path": "webex auth list", - "short": "List all authenticated users" - }, - { - "path": "webex auth set-folder-default", - "short": "Set the default user for the current folder", - "long": "Associates a Webex user with the current working directory. When running commands from this folder, this user's credentials will be used automatically." - }, - { - "path": "webex auth set-org", - "short": "Set a persistent organization override", - "long": "Set a default organization ID that will be used for all commands unless overridden by --organization." - }, - { - "path": "webex auth status", - "short": "Show current authentication status" - }, - { - "path": "webex auth switch", - "short": "Switch the default user" - }, - { - "path": "webex auth token", - "short": "Print the current access token", - "long": "Print the access token for the active user, refreshing it if expired. Useful for making manual API calls with curl.\n\n--output json prints the token with its expiry, user and organization. --min-ttl\nrefreshes the token if less than that time remains, for handing it to a\nlong-running process. It needs a stored login.", - "flags": [ - { - "name": "min-ttl", - "type": "duration", - "default": "0s", - "usage": "Refresh the token if less than this time remains (e.g. 30m)" - } - ] - }, - { - "path": "webex calling", - "short": "Webex Cloud Calling APIs", - "long": "Manage Webex Cloud Calling resources — telephony config, devices, users, locations, and more." - }, - { - "path": "webex calling announcement-playlist", - "short": "AnnouncementPlaylist commands" - }, - { - "path": "webex calling announcement-playlist create", - "short": "Create Announcement Playlist", - "long": "Create announcement Playlist at an organization level. A maximum of 25 announcement files can be included in a single playlist.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "announcement-ids", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "Create an announcement playlist in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling announcement-playlist delete", - "short": "Delete Announcement Playlist", - "long": "Delete an announcement playlist for an organization.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "org-id", - "type": "string", - "usage": "Delete an announcement playlist in this organization.", - "hidden": true - }, - { - "name": "playlist-id", - "type": "string", - "usage": "Unique identifier of an announcement playlist.", - "required": true - } - ] - }, - { - "path": "webex calling announcement-playlist get", - "short": "Get Announcement Playlist", - "long": "Fetch details of announcement playlist by its ID at an organization level.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "org-id", - "type": "string", - "usage": "Get an announcement playlist in this organization.", - "hidden": true - }, - { - "name": "playlist-id", - "type": "string", - "usage": "Unique identifier of an announcement playlist.", - "required": true - } - ] - }, - { - "path": "webex calling announcement-playlist list", - "short": "List Announcement Playlists", - "long": "Fetch a list of announcement playlist at an organization.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "org-id", - "type": "string", - "usage": "Get announcements playlist in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling announcement-playlist list-locations", - "short": "List Playlist Locations", - "long": "Fetch list of locations which are assigned to the given announcement playlist\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-locations" - }, - { - "name": "org-id", - "type": "string", - "usage": "Get location associated to a playlist in this organization.", - "hidden": true - }, - { - "name": "playlist-id", - "type": "string", - "usage": "Unique identifier of playlist.", - "required": true - } - ] - }, - { - "path": "webex calling announcement-playlist update", - "short": "Update Announcement Playlist", - "long": "Modify an existing announcement playlist at an organization level.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "announcement-ids", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "Modify an announcement playlist in this organization.", - "hidden": true - }, - { - "name": "playlist-id", - "type": "string", - "usage": "Unique identifier of an announcement playlist.", - "required": true - } - ] - }, - { - "path": "webex calling announcement-playlist update-locations", - "short": "Update Playlist Locations", - "long": "Modify list of assigned locations or add new locations to the announcement playlist. This will assing the playlist to the location's music on hold.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-locations" - }, - { - "name": "location-ids", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "org-id", - "type": "string", - "usage": "Modify an assign location for announcement playlist for organization.", - "hidden": true - }, - { - "name": "playlist-id", - "type": "string", - "usage": "Unique identifier of an announcement playlist.", - "required": true - } - ] - }, - { - "path": "webex calling announcement-repository", - "short": "AnnouncementRepository commands" - }, - { - "path": "webex calling announcement-repository delete-greeting-location", - "short": "Delete an announcement greeting in a location", - "long": "Delete an announcement greeting in a location.\n\nThis API requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "announcement-id", - "type": "string", - "usage": "Unique identifier of an announcement.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-greeting-location" - }, - { - "name": "location-id", - "type": "string", - "usage": "Unique identifier of a location where announcement is being created.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Delete an announcement for location in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling announcement-repository delete-greeting-org", - "short": "Delete an announcement greeting of the organization", - "long": "Delete an announcement greeting for an organization.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "announcement-id", - "type": "string", - "usage": "Unique identifier of an announcement.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-greeting-org" - }, - { - "name": "org-id", - "type": "string", - "usage": "Delete an announcement in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling announcement-repository generate-text-to-speech-prompt", - "short": "Generate a Text-to-Speech Prompt", - "long": "Generate a text-to-speech prompt from the provided text, voice, and language.\n\nText-to-speech (TTS) efficiently generates prompts, greetings, and announcements by converting written text into synthesized audio using the specified voice. The generated audio functions like a recorded WAV file, eliminating the need for manual recording.\n\nThis API requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for generate-text-to-speech-prompt" - }, - { - "name": "language-code", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "Generate text-to-speech for this organization.", - "hidden": true - }, - { - "name": "text", - "type": "string" - }, - { - "name": "voice", - "type": "string" - } - ] - }, - { - "path": "webex calling announcement-repository get-binary-greeting", - "short": "Fetch details of a binary announcement greeting at the organization level", - "long": "Fetch details of a binary announcement greeting by its ID at an organization level.\n\nAn admin can upload a file at an organization level. This file will be uploaded to the announcement repository.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "announcement-id", - "type": "string", - "usage": "Unique identifier of an announcement.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-binary-greeting" - }, - { - "name": "org-id", - "type": "string", - "usage": "Get an announcement in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling announcement-repository get-binary-greeting-2", - "short": "Fetch details of a binary announcement greeting at location level", - "long": "Fetch details of a binary announcement greeting by its ID at a location level.\n\nAn admin can upload a file at a location level. This file will be uploaded to the announcement repository.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "announcement-id", - "type": "string", - "usage": "Unique identifier of an announcement.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-binary-greeting-2" - }, - { - "name": "location-id", - "type": "string", - "usage": "Unique identifier of a location where an announcement is being created.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Fetch an announcement for location in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling announcement-repository get-text-to-speech-generation-status", - "short": "Get Text-to-Speech Generation Status", - "long": "Get the status of a text-to-speech generation request by its ID. If the status is SUCCESS, the response includes `promptUrl`, `kmsKeyUri`, and `fileUri` to preview or use the audio prompt.\n\nTo preview the audio prompt:\n\n1. Download the KMS key - use the Webex Node.js SDK and provide `kmsKeyUri` to download the key from KMS.\n\n2. Download the encrypted audio - The encrypted audio file content is stored in cloud and can be retrieved using `promptURL`.\n\n3. Decrypt the audio content - Use the jose library to decrypt the content downloaded from `promptUrl` using the downloaded key.\n\nText-to-speech (TTS) efficiently generates prompts, greetings, and announcements by converting written text into synthesized audio using the specified voice. The generated audio functions like a recorded WAV file, eliminating the need for manual recording.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-text-to-speech-generation-status" - }, - { - "name": "org-id", - "type": "string", - "usage": "Get text-to-speech status for this organization.", - "hidden": true - }, - { - "name": "tts-id", - "type": "string", - "usage": "Unique identifier of the text-to-speech generation request.", - "required": true - } - ] - }, - { - "path": "webex calling announcement-repository get-text-to-speech-usage", - "short": "Get Text-to-Speech Usage", - "long": "Retrieve text-to-speech usage information, including the number of API calls made, the maximum allowed within the time window, and the timestamp indicating when the usage will reset.\n\nText-to-speech (TTS) efficiently generates prompts, greetings, and announcements by converting written text into synthesized audio using the specified voice. The generated audio functions like a recorded WAV file, eliminating the need for manual recording.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-text-to-speech-usage" - }, - { - "name": "org-id", - "type": "string", - "usage": "Get text-to-speech usage for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling announcement-repository get-usage", - "short": "Fetch repository usage for announcements for an organization", - "long": "Retrieves repository usage for announcements for an organization.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-usage" - }, - { - "name": "org-id", - "type": "string", - "usage": "Get announcement usage in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling announcement-repository get-usage-location", - "short": "Fetch repository usage for announcements in a location", - "long": "Retrieves repository usage for announcements in a location.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-usage-location" - }, - { - "name": "location-id", - "type": "string", - "usage": "Unique identifier of a location where an announcement is being created.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Get announcement usage for location in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling announcement-repository list-greetings", - "short": "Fetch list of announcement greetings on location and organization level", - "long": "Fetch a list of binary announcement greetings at an organization as well as location level.\n\nAn admin can upload a file at an organization level. This file will be uploaded to the announcement repository.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "file-name", - "type": "string", - "usage": "Return the list of announcements with the given fileName." - }, - { - "name": "file-type", - "type": "string", - "usage": "Return the list of announcement files for this fileType." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-greetings" - }, - { - "name": "location-id", - "type": "string", - "usage": "Return the list of enterprise or Location announcement files. Without this parameter, the Enterprise level announcements are returned." - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of objects returned to this maximum count." - }, - { - "name": "media-file-type", - "type": "string", - "usage": "Return the list of announcement files for this mediaFileType." - }, - { - "name": "name", - "type": "string", - "usage": "Return the list of announcement files for this announcement label." - }, - { - "name": "order", - "type": "string", - "usage": "Sort the list according to fileName or fileSize. The default sort will be in Ascending order." - }, - { - "name": "org-id", - "type": "string", - "usage": "Get announcements in this organization.", - "hidden": true - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching objects." - } - ] - }, - { - "path": "webex calling announcement-repository list-text-to-speech-voices", - "short": "List Text-to-Speech Voices", - "long": "Fetch a list of available text-to-speech voices. Use the returned voice ID in the generation request.\n\nText-to-speech (TTS) efficiently generates prompts, greetings, and announcements by converting written text into synthesized audio using the specified voice. The generated audio functions like a recorded WAV file, eliminating the need for manual recording.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-text-to-speech-voices" - }, - { - "name": "org-id", - "type": "string", - "usage": "List text-to-speech voices supported for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling announcement-repository update-binary-greeting", - "short": "Update Binary Announcement Greeting", - "long": "Update an existing announcement greeting (WAV) at the organization level.\n\nUses multipart/form-data with a \"name\" text field and a \"file\" binary part.\n\nExamples:\n webex calling announcement-repository update-binary-greeting --file greeting.wav --name \"Updated Greeting\" --announcement-id \n webex calling announcement-repository update-binary-greeting --file greeting.wav --name \"Updated Greeting\" --announcement-id --dry-run", - "flags": [ - { - "name": "announcement-id", - "type": "string", - "usage": "Announcement ID", - "required": true - }, - { - "name": "file", - "type": "string", - "usage": "Path to WAV file to upload", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-binary-greeting" - }, - { - "name": "name", - "type": "string", - "usage": "Announcement name", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization ID", - "hidden": true - } - ] - }, - { - "path": "webex calling announcement-repository update-binary-greeting-2", - "short": "Update Binary Announcement Greeting at Location", - "long": "Update an existing announcement greeting (WAV) at a specific location.\n\nUses multipart/form-data with a \"name\" text field and a \"file\" binary part.\n\nExamples:\n webex calling announcement-repository update-binary-greeting-2 --file greeting.wav --name \"Updated Greeting\" --location-id --announcement-id ", - "flags": [ - { - "name": "announcement-id", - "type": "string", - "usage": "Announcement ID", - "required": true - }, - { - "name": "file", - "type": "string", - "usage": "Path to WAV file to upload", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-binary-greeting-2" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location ID", - "required": true - }, - { - "name": "name", - "type": "string", - "usage": "Announcement name", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization ID", - "hidden": true - } - ] - }, - { - "path": "webex calling announcement-repository upload-binary-greeting", - "short": "Upload Binary Announcement Greeting", - "long": "Upload an announcement greeting (WAV) at the organization level.\n\nUses multipart/form-data with a \"name\" text field and a \"file\" binary part.\n\nExamples:\n webex calling announcement-repository upload-binary-greeting --file greeting.wav --name \"Main Greeting\"\n webex calling announcement-repository upload-binary-greeting --file greeting.wav --name \"Main Greeting\" --dry-run", - "flags": [ - { - "name": "file", - "type": "string", - "usage": "Path to WAV file to upload", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for upload-binary-greeting" - }, - { - "name": "name", - "type": "string", - "usage": "Announcement name", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization ID", - "hidden": true - } - ] - }, - { - "path": "webex calling announcement-repository upload-binary-greeting-2", - "short": "Upload Binary Announcement Greeting at Location", - "long": "Upload an announcement greeting (WAV) at a specific location.\n\nUses multipart/form-data with a \"name\" text field and a \"file\" binary part.\n\nExamples:\n webex calling announcement-repository upload-binary-greeting-2 --file greeting.wav --name \"Lobby Greeting\" --location-id \n webex calling announcement-repository upload-binary-greeting-2 --file greeting.wav --name \"Lobby Greeting\" --location-id --dry-run", - "flags": [ - { - "name": "file", - "type": "string", - "usage": "Path to WAV file to upload", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for upload-binary-greeting-2" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location ID", - "required": true - }, - { - "name": "name", - "type": "string", - "usage": "Announcement name", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization ID", - "hidden": true - } - ] - }, - { - "path": "webex calling auto-attendant", - "short": "AutoAttendant commands" - }, - { - "path": "webex calling auto-attendant create", - "short": "Create an Auto Attendant", - "long": "Create new Auto Attendant for the given location.\n\nAuto attendants play customized prompts and provide callers with menu options for routing their calls through your system.\n\nCreating an auto attendant requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "location-id", - "type": "string", - "usage": "Create the auto attendant for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Create the auto attendant for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling auto-attendant create-selective-forward-rule", - "short": "Create a Selective Call Forwarding Rule for an Auto Attendant", - "long": "Create a Selective Call Forwarding Rule for the designated Auto Attendant.\n\nA selective call forwarding rule for an auto attendant allows calls to be forwarded or not forwarded to the designated number, based on the defined criteria.\n\nNote that the list of existing call forward rules is available in the auto attendant's call forwarding settings.\n\nCreating a selective call forwarding rule for an auto attendant requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: The Call Forwarding Rule ID will change upon modification of the Call Forwarding Rule name.", - "flags": [ - { - "name": "auto-attendant-id", - "type": "string", - "usage": "Create the rule for this auto attendant.", - "required": true - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-selective-forward-rule" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location in which the auto attendant exists.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Create the auto attendant rule for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling auto-attendant delete", - "short": "Delete an Auto Attendant", - "long": "Delete the designated Auto Attendant.\n\nAuto attendants play customized prompts and provide callers with menu options for routing their calls through your system.\n\nDeleting an auto attendant requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "auto-attendant-id", - "type": "string", - "usage": "Delete the auto attendant with the matching ID.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location from which to delete an auto attendant.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Delete the auto attendant from this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling auto-attendant delete-announcement-file", - "short": "Delete a Auto Attendant Announcement File", - "long": "Delete an announcement file for the designated auto attendant.\n\nAuto Attendant announcement files contain messages and music that callers hear while waiting in the queue. A auto attendant can be configured to play whatever subset of these announcement files is desired.\n\nDeleting an announcement file for a auto attendant requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "auto-attendant-id", - "type": "string", - "usage": "Delete an announcement for the auto attendant with this identifier.", - "required": true - }, - { - "name": "file-name", - "type": "string", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-announcement-file" - }, - { - "name": "location-id", - "type": "string", - "usage": "Delete an announcement for a auto attendant in this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Delete auto attendant announcement from this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling auto-attendant delete-selective-forward-rule", - "short": "Delete a Selective Call Forwarding Rule for an Auto Attendant", - "long": "Delete a Selective Call Forwarding Rule for the designated Auto Attendant.\n\nA selective call forwarding rule for an auto attendant allows calls to be forwarded or not forwarded to the designated number, based on the defined criteria.\n\nNote that the list of existing call forward rules is available in the auto attendant's call forwarding settings.\n\nDeleting a selective call forwarding rule for an auto attendant requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: The Call Forwarding Rule ID will change upon modification of the Call Forwarding Rule name.", - "flags": [ - { - "name": "auto-attendant-id", - "type": "string", - "usage": "Delete the rule for this auto attendant.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-selective-forward-rule" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location in which this auto attendant exists.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Delete auto attendant rule from this organization.", - "hidden": true - }, - { - "name": "rule-id", - "type": "string", - "usage": "Auto attendant rule you are deleting.", - "required": true - } - ] - }, - { - "path": "webex calling auto-attendant get", - "short": "Get Details for an Auto Attendant", - "long": "Retrieve an Auto Attendant details.\n\nAuto attendants play customized prompts and provide callers with menu options for routing their calls through your system.\n\nRetrieving an auto attendant details requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "auto-attendant-id", - "type": "string", - "usage": "Retrieve the auto attendant with the matching ID.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "location-id", - "type": "string", - "usage": "Retrieve an auto attendant details in this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve auto attendant details from this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling auto-attendant get-alternate-numbers", - "short": "Get Auto Attendant Alternate Available Phone Numbers", - "long": "List the service and standard PSTN numbers that are available to be assigned as the auto attendant's alternate number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-alternate-numbers" - }, - { - "name": "location-id", - "type": "string", - "usage": "Return the list of phone numbers for this location within the given organization. The maximum length is 36.", - "required": true - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of phone numbers returned to this maximum count. The default is 2000." - }, - { - "name": "org-id", - "type": "string", - "usage": "List numbers for this organization.", - "hidden": true - }, - { - "name": "phone-number", - "type": "string", - "usage": "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching phone numbers. The default is 0." - } - ] - }, - { - "path": "webex calling auto-attendant get-call-forward", - "short": "Get Call Forwarding Settings for an Auto Attendant", - "long": "Retrieve Call Forwarding settings for the designated Auto Attendant including the list of call forwarding rules.\n\nThe call forwarding feature allows you to direct all incoming calls based on specific criteria that you define.\nBelow are the available options for configuring your call forwarding:\n1. Always forward calls to a designated number.\n2. Forward calls to a designated number based on certain criteria.\n3. Forward calls using different modes.\n\nRetrieving call forwarding settings for an auto attendant requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "auto-attendant-id", - "type": "string", - "usage": "Retrieve the call forwarding settings for this auto attendant.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-call-forward" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location in which this auto attendant exists.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve auto attendant forwarding settings from this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling auto-attendant get-forward-available-numbers", - "short": "Get Auto Attendant Call Forward Available Phone Numbers", - "long": "List the service and standard PSTN numbers that are available to be assigned as the auto attendant's call forward number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are assigned to an owning entity.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "extension", - "type": "string", - "usage": "Returns the list of PSTN phone numbers with the given `extension`." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-forward-available-numbers" - }, - { - "name": "location-id", - "type": "string", - "usage": "Return the list of phone numbers for this location within the given organization. The maximum length is 36.", - "required": true - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of phone numbers returned to this maximum count. The default is 2000." - }, - { - "name": "org-id", - "type": "string", - "usage": "List numbers for this organization.", - "hidden": true - }, - { - "name": "owner-name", - "type": "string", - "usage": "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255." - }, - { - "name": "phone-number", - "type": "string", - "usage": "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching phone numbers. The default is 0." - } - ] - }, - { - "path": "webex calling auto-attendant get-primary-numbers", - "short": "Get Auto Attendant Primary Available Phone Numbers", - "long": "List the service and standard PSTN numbers that are available to be assigned as the auto attendant's primary phone number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-primary-numbers" - }, - { - "name": "location-id", - "type": "string", - "usage": "Return the list of phone numbers for this location within the given organization. The maximum length is 36.", - "required": true - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of phone numbers returned to this maximum count. The default is 2000." - }, - { - "name": "org-id", - "type": "string", - "usage": "List numbers for this organization.", - "hidden": true - }, - { - "name": "phone-number", - "type": "string", - "usage": "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching phone numbers. The default is 0." - } - ] - }, - { - "path": "webex calling auto-attendant get-selective-forward-rule", - "short": "Get Selective Call Forwarding Rule for an Auto Attendant", - "long": "Retrieve a Selective Call Forwarding Rule's settings for the designated Auto Attendant.\n\nA selective call forwarding rule for an auto attendant allows calls to be forwarded or not forwarded to the designated number, based on the defined criteria.\n\nNote that the list of existing call forward rules is available in the auto attendant's call forwarding settings.\n\nRetrieving a selective call forwarding rule's settings for an auto attendant requires a full or read-only administrator or location administrator\n\n**NOTE**: The Call Forwarding Rule ID will change upon modification of the Call Forwarding Rule name.", - "flags": [ - { - "name": "auto-attendant-id", - "type": "string", - "usage": "Retrieve settings for a rule for this auto attendant.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-selective-forward-rule" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location in which this auto attendant exists.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve auto attendant rule settings for this organization.", - "hidden": true - }, - { - "name": "rule-id", - "type": "string", - "usage": "Auto attendant rule you are retrieving settings for.", - "required": true - } - ] - }, - { - "path": "webex calling auto-attendant list", - "short": "Read the List of Auto Attendants", - "long": "List all Auto Attendants for the organization.\n\nAuto attendants play customized prompts and provide callers with menu options for routing their calls through your system.\n\nRetrieving this list requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "location-id", - "type": "string", - "usage": "Return the list of auto attendants for this location." - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of objects returned to this maximum count." - }, - { - "name": "name", - "type": "string", - "usage": "Only return auto attendants with the matching name." - }, - { - "name": "org-id", - "type": "string", - "usage": "List auto attendants for this organization.", - "hidden": true - }, - { - "name": "phone-number", - "type": "string", - "usage": "Only return auto attendants with the matching phone number." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching objects." - } - ] - }, - { - "path": "webex calling auto-attendant list-announcement-files", - "short": "Read the List of Auto Attendant Announcement Files", - "long": "List file info for all auto attendant announcement files associated with this auto attendant.\n\nAuto attendant announcement files contain messages and music that callers hear while waiting in the queue. A auto attendant can be configured to play whatever subset of these announcement files is desired.\n\nRetrieving this list of files requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.\n\nNote that uploading of announcement files via API is not currently supported, but is available via Webex Control Hub.", - "flags": [ - { - "name": "auto-attendant-id", - "type": "string", - "usage": "Retrieve announcement files for the auto attendant with this identifier.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-announcement-files" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location in which this auto attendant exists.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve announcement files for a auto attendant from this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling auto-attendant switch-mode-call-forward", - "short": "Switch Mode for Call Forwarding Settings for an Auto Attendant", - "long": "Switches the current operating mode of the `Auto Attendant` to the mode as per normal operations.\n\nOperating modes allow call forwarding to be configured based on predefined schedules, enabling different routing behaviors during business hours, after hours, or holidays.\n\nSwitching operating mode for an `auto attendant` requires a full, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "auto-attendant-id", - "type": "string", - "usage": "Switch operating mode to normal operations for this `auto attendant`.", - "required": true - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for switch-mode-call-forward" - }, - { - "name": "location-id", - "type": "string", - "usage": "`Location` in which this `auto attendant` exists.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Switch operating mode as per normal operations for the `auto attendant` from this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling auto-attendant update", - "short": "Update an Auto Attendant", - "long": "Update the designated Auto Attendant.\n\nAuto attendants play customized prompts and provide callers with menu options for routing their calls through your system.\n\nUpdating an auto attendant requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "auto-attendant-id", - "type": "string", - "usage": "Update an auto attendant with the matching ID.", - "required": true - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location in which this auto attendant exists.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Update an auto attendant from this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling auto-attendant update-call-forward", - "short": "Update Call Forwarding Settings for an Auto Attendant", - "long": "Update Call Forwarding settings for the designated Auto Attendant.\n\nThe call forwarding feature allows you to direct all incoming calls based on specific criteria that you define.\nBelow are the available options for configuring your call forwarding:\n1. Always forward calls to a designated number.\n2. Forward calls to a designated number based on certain criteria.\n3. Forward calls using different modes.\n\nUpdating call forwarding settings for an auto attendant requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "auto-attendant-id", - "type": "string", - "usage": "Update call forwarding settings for this auto attendant.", - "required": true - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-call-forward" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location in which this auto attendant exists.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Update auto attendant forwarding settings from this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling auto-attendant update-selective-forward-rule", - "short": "Update Selective Call Forwarding Rule for an Auto Attendant", - "long": "Update a Selective Call Forwarding Rule's settings for the designated Auto Attendant.\n\nA selective call forwarding rule for an auto attendant allows calls to be forwarded or not forwarded to the designated number, based on the defined criteria.\n\nNote that the list of existing call forward rules is available in the auto attendant's call forwarding settings.\n\nUpdating a selective call forwarding rule's settings for an auto attendant requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: The Call Forwarding Rule ID will change upon modification of the Call Forwarding Rule name.", - "flags": [ - { - "name": "auto-attendant-id", - "type": "string", - "usage": "Update settings for a rule for this auto attendant.", - "required": true - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-selective-forward-rule" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location in which this auto attendant exists.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Update auto attendant rule settings for this organization.", - "hidden": true - }, - { - "name": "rule-id", - "type": "string", - "usage": "Auto attendant rule you are updating settings for.", - "required": true - } - ] - }, - { - "path": "webex calling call-controls", - "short": "CallControls commands" - }, - { - "path": "webex calling call-controls answer", - "short": "Answer", - "long": "Answer an incoming call. When no endpointId is specified, the call is answered on the user's primary device. When an endpointId is specified, the call is answered on the device or application identified by the endpointId. The answer API is rejected if the device is not alerting for the call or the device does not support answer via API.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "call-id", - "type": "string" - }, - { - "name": "endpoint-id", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for answer" - }, - { - "name": "line-owner-id", - "type": "string" - } - ] - }, - { - "path": "webex calling call-controls answer-member-id", - "short": "Answer by Member ID", - "long": "Answer an incoming call. When no endpointId is specified, the call is answered on the user's primary device. When an endpointId is specified, the call is answered on the device or application identified by the endpointId. The answer API is rejected if the device is not alerting for the call or the device does not support answer via API.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "call-id", - "type": "string" - }, - { - "name": "endpoint-id", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for answer-member-id" - }, - { - "name": "member-id", - "type": "string", - "usage": "Unique identifier for the member. Member ID can be one of the following: person, workspace, or virtual line", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Id of the organization to which the member belongs. If not provided, the orgId of the Service App is used. If provided, the organization must be the same as or managed by the Service App's organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling call-controls barge", - "short": "Barge In", - "long": "Barge-in on another user's answered call. A new call is initiated to perform the barge-in in a similar manner to the dial command.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "endpoint-id", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for barge" - }, - { - "name": "line-owner-id", - "type": "string" - }, - { - "name": "single-number-reach-phone-number", - "type": "string" - }, - { - "name": "target", - "type": "string" - } - ] - }, - { - "path": "webex calling call-controls dial", - "short": "Dial", - "long": "Initiate an outbound call to a specified destination. This is also commonly referred to as Click to Call or Click to Dial. Alerts occur on all the devices belonging to a user unless an optional endpointId is specified in which case only the device or application identified by the endpointId is alerted. When a user answers an alerting device, an outbound call is placed from that device to the destination.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "destination", - "type": "string" - }, - { - "name": "endpoint-id", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for dial" - }, - { - "name": "line-owner-id", - "type": "string" - }, - { - "name": "single-number-reach-phone-number", - "type": "string" - } - ] - }, - { - "path": "webex calling call-controls dial-member-id", - "short": "Dial by Member ID", - "long": "Initiate an outbound call to a specified destination. This is also commonly referred to as Click to Call or Click to Dial. Alerts occur on all the devices belonging to a user unless an optional endpointId is specified in which case only the device or application identified by the endpointId is alerted. When a user answers an alerting device, an outbound call is placed from that device to the destination.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "destination", - "type": "string" - }, - { - "name": "endpoint-id", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for dial-member-id" - }, - { - "name": "member-id", - "type": "string", - "usage": "Unique identifier for the member. Member ID can be one of the following: person, workspace, or virtual line", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Id of the organization to which the member belongs. If not provided, the orgId of the Service App is used. If provided, the organization must be the same as or managed by the Service App's organization.", - "hidden": true - }, - { - "name": "single-number-reach-phone-number", - "type": "string" - } - ] - }, - { - "path": "webex calling call-controls divert", - "short": "Divert", - "long": "Divert a call to a destination or a user's voicemail. This is also commonly referred to as a Blind Transfer.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "call-id", - "type": "string" - }, - { - "name": "destination", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for divert" - }, - { - "name": "line-owner-id", - "type": "string" - }, - { - "name": "to-voicemail", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling call-controls get", - "short": "Retrieve", - "long": "Retrieve a parked call. A new call is initiated to perform the retrieval in a similar manner to the dial command. The number field from the park command response can be used as the destination for the retrieve command.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "destination", - "type": "string" - }, - { - "name": "endpoint-id", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "line-owner-id", - "type": "string" - }, - { - "name": "single-number-reach-phone-number", - "type": "string" - } - ] - }, - { - "path": "webex calling call-controls get-2", - "short": "Get Call Details", - "long": "Get the details of the specified active call for the user.", - "flags": [ - { - "name": "call-id", - "type": "string", - "usage": "The call identifier of the call.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-2" - }, - { - "name": "line-owner-id", - "type": "string", - "usage": "The ID of a user, workspace, or virtual line for which there is a secondary line on a device owned by the user invoking the API." - } - ] - }, - { - "path": "webex calling call-controls get-member-id", - "short": "Get Call Details by Member ID", - "long": "Get the details of the specified active call for the member.", - "flags": [ - { - "name": "call-id", - "type": "string", - "usage": "The call identifier of the call.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-member-id" - }, - { - "name": "member-id", - "type": "string", - "usage": "Unique identifier for the member. Member ID can be one of the following: person, workspace, or virtual line", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Id of the organization to which the member belongs. If not provided, the orgId of the Service App is used. If provided, the organization must be the same as or managed by the Service App's organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling call-controls hangup", - "short": "Hangup", - "long": "Hangup a call. If used on an unanswered incoming call, the call is rejected and sent to busy.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "call-id", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for hangup" - }, - { - "name": "line-owner-id", - "type": "string" - } - ] - }, - { - "path": "webex calling call-controls hangup-member-id", - "short": "Hangup by Member ID", - "long": "Hangup a call. If used on an unanswered incoming call, the call is rejected and sent to busy.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "call-id", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for hangup-member-id" - }, - { - "name": "member-id", - "type": "string", - "usage": "Unique identifier for the member. Member ID can be one of the following: person, workspace, or virtual line", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Id of the organization to which the member belongs. If not provided, the orgId of the Service App is used. If provided, the organization must be the same as or managed by the Service App's organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling call-controls hold", - "short": "Hold", - "long": "Hold a connected call.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "call-id", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for hold" - }, - { - "name": "line-owner-id", - "type": "string" - } - ] - }, - { - "path": "webex calling call-controls list", - "short": "List Calls", - "long": "Get the list of details for all active calls associated with the user.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "line-owner-id", - "type": "string", - "usage": "The ID of a user, workspace, or virtual line for which there is a secondary line on a device owned by the user invoking the API." - } - ] - }, - { - "path": "webex calling call-controls list-history", - "short": "List Call History", - "long": "Get the list of call history records for the user. A maximum of 20 call history records per type (`placed`, `missed`, `received`) are returned.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-history" - }, - { - "name": "type", - "type": "string", - "usage": "The type of call history records to retrieve. If not specified, then all call history records are retrieved." - } - ] - }, - { - "path": "webex calling call-controls list-member-id", - "short": "List Calls by Member ID", - "long": "Get the list of details for all active calls associated with the member.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-member-id" - }, - { - "name": "member-id", - "type": "string", - "usage": "Unique identifier for the member. Member ID can be one of the following: person, workspace, or virtual line", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Id of the organization to which the member belongs. If not provided, the orgId of the Service App is used. If provided, the organization must be the same as or managed by the Service App's organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling call-controls mute", - "short": "Mute", - "long": "Mute a call. This API can only be used for a call that reports itself as mute capable via the muteCapable field in the call details.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "call-id", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for mute" - }, - { - "name": "line-owner-id", - "type": "string" - } - ] - }, - { - "path": "webex calling call-controls park", - "short": "Park", - "long": "Park a connected call. The number field in the response can be used as the destination for the retrieve command to retrieve the parked call.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "call-id", - "type": "string" - }, - { - "name": "destination", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for park" - }, - { - "name": "is-group-park", - "type": "bool", - "default": "false" - }, - { - "name": "line-owner-id", - "type": "string" - } - ] - }, - { - "path": "webex calling call-controls pause-recording", - "short": "Pause Recording", - "long": "Pause recording on a call. Use of this API is only valid when a call is being recorded and the user's call recording mode is set to \"On Demand\" or \"Always with Pause/Resume\".", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "call-id", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for pause-recording" - }, - { - "name": "line-owner-id", - "type": "string" - } - ] - }, - { - "path": "webex calling call-controls pickup", - "short": "Pickup", - "long": "Picks up an incoming call to another user. A new call is initiated to perform the pickup in a similar manner to the dial command. When target is not present, the API pickups up a call from the user's call pickup group. When target is present, the API pickups an incoming call from the specified target user.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "endpoint-id", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for pickup" - }, - { - "name": "line-owner-id", - "type": "string" - }, - { - "name": "single-number-reach-phone-number", - "type": "string" - }, - { - "name": "target", - "type": "string" - } - ] - }, - { - "path": "webex calling call-controls pull", - "short": "Pull", - "long": "Pull a call from one device to another. A temporary new call is initiated to perform the call pull in a similar manner to the dial command. When a user answers an alerting device, the device is connected to the pulled call and the new call created for the call pull is released.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "endpoint-id", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for pull" - }, - { - "name": "line-owner-id", - "type": "string" - } - ] - }, - { - "path": "webex calling call-controls push", - "short": "Push", - "long": "Pushes a call from the assistant to the executive the call is associated with. Use of this API is only valid when the assistant's call is associated with an executive.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "call-id", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for push" - }, - { - "name": "line-owner-id", - "type": "string" - } - ] - }, - { - "path": "webex calling call-controls reject", - "short": "Reject", - "long": "Reject an unanswered incoming call.", - "flags": [ - { - "name": "action", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "call-id", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for reject" - }, - { - "name": "line-owner-id", - "type": "string" - } - ] - }, - { - "path": "webex calling call-controls resume", - "short": "Resume", - "long": "Resume a held call.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "call-id", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for resume" - }, - { - "name": "line-owner-id", - "type": "string" - } - ] - }, - { - "path": "webex calling call-controls resume-recording", - "short": "Resume Recording", - "long": "Resume recording a call. Use of this API is only valid when a call's recording is paused and the user's call recording mode is set to \"On Demand\" or \"Always with Pause/Resume\".", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "call-id", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for resume-recording" - }, - { - "name": "line-owner-id", - "type": "string" - } - ] - }, - { - "path": "webex calling call-controls start-recording", - "short": "Start Recording", - "long": "Start recording a call. Use of this API is only valid when the user's call recording mode is set to \"On Demand\".", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "call-id", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for start-recording" - }, - { - "name": "line-owner-id", - "type": "string" - } - ] - }, - { - "path": "webex calling call-controls stop-recording", - "short": "Stop Recording", - "long": "Stop recording a call. Use of this API is only valid when a call is being recorded and the user's call recording mode is set to \"On Demand\".", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "call-id", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for stop-recording" - }, - { - "name": "line-owner-id", - "type": "string" - } - ] - }, - { - "path": "webex calling call-controls transfer", - "short": "Transfer", - "long": "Transfer two calls together.\n\nUnanswered incoming calls cannot be transferred but can be diverted using the divert API.\n\nIf the user has only two calls and wants to transfer them together, the `callId1` and `callId2` parameters are optional and when not provided the calls are automatically selected and transferred.\n\nIf the user has more than two calls and wants to transfer two of them together, the `callId1` and `callId2` parameters are mandatory to specify which calls are being transferred. Those are also commonly referred to as Attended Transfer, Consultative Transfer, or Supervised Transfer and will return a `204` response.\n\nIf the user wants to transfer one call to a new destination but only when the destination responds, the `callId1` and destination parameters are mandatory to specify the call being transferred and the destination.\n\nThis is referred to as a Mute Transfer and is similar to the divert API with the difference of waiting for the destination to respond prior to transferring the call. If the destination does not respond, the call is not transferred. This will return a `201` response.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "call-id1", - "type": "string" - }, - { - "name": "call-id2", - "type": "string" - }, - { - "name": "destination", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for transfer" - }, - { - "name": "line-owner-id", - "type": "string" - } - ] - }, - { - "path": "webex calling call-controls transmit-dtmf", - "short": "Transmit DTMF", - "long": "Transmit DTMF digits to a call.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "call-id", - "type": "string" - }, - { - "name": "dtmf", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for transmit-dtmf" - }, - { - "name": "line-owner-id", - "type": "string" - } - ] - }, - { - "path": "webex calling call-controls unmute", - "short": "Unmute", - "long": "Unmute a call. This API can only be used for a call that reports itself as mute capable via the muteCapable field in the call details.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "call-id", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for unmute" - }, - { - "name": "line-owner-id", - "type": "string" - } - ] - }, - { - "path": "webex calling call-controls-for-me", - "short": "CallControlsForMe commands" - }, - { - "path": "webex calling call-controls-for-me answer", - "short": "Answer", - "long": "Answer an incoming call. When no endpointId is specified, the call is answered on the user's primary device. When an endpointId is specified, the call is answered on the device or application identified by the endpointId. The answer API is rejected if the device is not alerting for the call or the device does not support answer via API.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "call-id", - "type": "string" - }, - { - "name": "endpoint-id", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for answer" - }, - { - "name": "line-owner-id", - "type": "string" - } - ] - }, - { - "path": "webex calling call-controls-for-me dial", - "short": "Dial", - "long": "Initiate an outbound call to a specified destination. This is also commonly referred to as Click to Call or Click to Dial. Alerts occur on all the devices belonging to a user unless an optional endpointId is specified in which case only the device or application identified by the endpointId is alerted. When a user answers an alerting device, an outbound call is placed from that device to the destination.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "destination", - "type": "string" - }, - { - "name": "endpoint-id", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for dial" - }, - { - "name": "line-owner-id", - "type": "string" - }, - { - "name": "single-number-reach-phone-number", - "type": "string" - } - ] - }, - { - "path": "webex calling call-controls-for-me get", - "short": "Get Call Details", - "long": "Get the details of the specified active call for the user.", - "flags": [ - { - "name": "call-id", - "type": "string", - "usage": "The call identifier of the call.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "line-owner-id", - "type": "string", - "usage": "The ID of a user, workspace, or virtual line for which there is a secondary line on a device owned by the user invoking the API." - } - ] - }, - { - "path": "webex calling call-controls-for-me hangup", - "short": "Hangup", - "long": "Hangup a call. If used on an unanswered incoming call, the call is rejected and sent to busy.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "call-id", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for hangup" - }, - { - "name": "line-owner-id", - "type": "string" - } - ] - }, - { - "path": "webex calling call-controls-for-me list", - "short": "List Calls", - "long": "Get the list of details for all active calls associated with the user.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "line-owner-id", - "type": "string", - "usage": "The ID of a user, workspace, or virtual line for which there is a secondary line on a device owned by the user invoking the API." - } - ] - }, - { - "path": "webex calling call-park", - "short": "CallPark commands" - }, - { - "path": "webex calling call-park create", - "short": "Create a Call Park", - "long": "Create new Call Parks for the given location.\n\nCall Park allows call recipients to place a call on hold so that it can be retrieved from another device.\n\nCreating a call park requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: The Call Park ID will change upon modification of the Call Park name.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "location-id", - "type": "string", - "usage": "Create the call park for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Create the call park for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling call-park create-extension", - "short": "Create a Call Park Extension", - "long": "Create new Call Park Extensions for the given location.\n\nCall Park Extension enables a call recipient to park a call to an extension, so someone else within the same Organization can retrieve the parked call by dialing that extension. Call Park Extensions can be added as monitored lines by users' Cisco phones, so users can park and retrieve calls by pressing the associated phone line key.\n\nCreating a call park extension requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "extension", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-extension" - }, - { - "name": "location-id", - "type": "string", - "usage": "Create the call park extension for this location.", - "required": true - }, - { - "name": "name", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "Create the call park extension for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling call-park delete", - "short": "Delete a Call Park", - "long": "Delete the designated Call Park.\n\nCall Park allows call recipients to place a call on hold so that it can be retrieved from another device.\n\nDeleting a call park requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: The Call Park ID will change upon modification of the Call Park name.", - "flags": [ - { - "name": "call-park-id", - "type": "string", - "usage": "Delete the call park with the matching ID.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location from which to delete a call park.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Delete the call park from this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling call-park delete-extension", - "short": "Delete a Call Park Extension", - "long": "Delete the designated Call Park Extension.\n\nCall Park Extension enables a call recipient to park a call to an extension, so someone else within the same Organization can retrieve the parked call by dialing that extension. Call Park Extensions can be added as monitored lines by users' Cisco phones, so users can park and retrieve calls by pressing the associated phone line key.\n\nDeleting a call park extension requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "call-park-extension-id", - "type": "string", - "usage": "Delete the call park extension with the matching ID.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-extension" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location from which to delete a call park extension.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Delete the call park extension from this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling call-park get", - "short": "Get Details for a Call Park", - "long": "Retrieve Call Park details.\n\nCall Park allows call recipients to place a call on hold so that it can be retrieved from another device.\n\nRetrieving call park details requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.\n\n**NOTE**: The Call Park ID will change upon modification of the Call Park name.", - "flags": [ - { - "name": "call-park-id", - "type": "string", - "usage": "Retrieve settings for a call park with the matching ID.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "location-id", - "type": "string", - "usage": "Retrieve settings for a call park in this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve call park settings from this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling call-park get-2", - "short": "Get Call Park Settings", - "long": "Retrieve Call Park Settings from call parks for a given location.\n\nCall Park allows call recipients to place a call on hold so that it can be retrieved from another device.\n\nRetrieving settings from call parks requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-2" - }, - { - "name": "location-id", - "type": "string", - "usage": "Return the call park settings for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Return the call park settings for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling call-park get-available-agents", - "short": "Get available agents from Call Parks", - "long": "Retrieve available agents from call parks for a given location.\n\nCall Park allows call recipients to place a call on hold so that it can be retrieved from another device.\n\nRetrieving available agents from call parks requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "call-park-name", - "type": "string", - "usage": "Only return available agents from call parks with the matching name." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-available-agents" - }, - { - "name": "location-id", - "type": "string", - "usage": "Return the available agents for this location.", - "required": true - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of available agents returned to this maximum count." - }, - { - "name": "name", - "type": "string", - "usage": "Only return available agents with the matching name." - }, - { - "name": "order", - "type": "string", - "usage": "Order the available agents according to the designated fields. Up to three vertical bar (|) separated sort order fields may be specified. Available sort fields: fname, lname, number and extension. The maximum supported sort order value is 3." - }, - { - "name": "org-id", - "type": "string", - "usage": "Return the available agents for this organization.", - "hidden": true - }, - { - "name": "phone-number", - "type": "string", - "usage": "Only return available agents with the matching primary number." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching available agents." - } - ] - }, - { - "path": "webex calling call-park get-available-recall-hunt-groups", - "short": "Get available recall hunt groups from Call Parks", - "long": "Retrieve available recall hunt groups from call parks for a given location.\n\nCall Park allows call recipients to place a call on hold so that it can be retrieved from another device.\n\nRetrieving available recall hunt groups from call parks requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-available-recall-hunt-groups" - }, - { - "name": "location-id", - "type": "string", - "usage": "Return the available recall hunt groups for this location.", - "required": true - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of available recall hunt groups returned to this maximum count." - }, - { - "name": "name", - "type": "string", - "usage": "Only return available recall hunt groups with the matching name." - }, - { - "name": "order", - "type": "string", - "usage": "Order the available recall hunt groups according to the designated fields. Available sort fields: lname." - }, - { - "name": "org-id", - "type": "string", - "usage": "Return the available recall hunt groups for this organization.", - "hidden": true - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching available recall hunt groups." - } - ] - }, - { - "path": "webex calling call-park get-extension", - "short": "Get Details for a Call Park Extension", - "long": "Retrieve Call Park Extension details.\n\nThe Call Park service, enabled for all users by default, allows a user to park a call against an available user's extension or to a Call Park Extension. Call Park Extensions are extensions defined within the Call Park service for holding parked calls.\n\nRetrieving call park extension details requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "call-park-extension-id", - "type": "string", - "usage": "Retrieve details for a call park extension with the matching ID.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-extension" - }, - { - "name": "location-id", - "type": "string", - "usage": "Retrieve details for a call park extension in this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve call park extension details from this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling call-park list", - "short": "Read the List of Call Parks", - "long": "List all Call Parks for the organization.\n\nCall Park allows call recipients to place a call on hold so that it can be retrieved from another device.\n\nRetrieving this list requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.\n\n**NOTE**: The Call Park ID will change upon modification of the Call Park name.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "location-id", - "type": "string", - "usage": "Return the list of call parks for this location.", - "required": true - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of call parks returned to this maximum count. Default is 2000." - }, - { - "name": "name", - "type": "string", - "usage": "Return the list of call parks that contains the given name. The maximum length is 80." - }, - { - "name": "order", - "type": "string", - "usage": "Sort the list of call parks by name, either ASC or DSC. Default is ASC." - }, - { - "name": "org-id", - "type": "string", - "usage": "List call parks for this organization.", - "hidden": true - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching call parks. Default is 0." - } - ] - }, - { - "path": "webex calling call-park list-extensions", - "short": "Read the List of Call Park Extensions", - "long": "List all Call Park Extensions for the organization.\n\nThe Call Park service, enabled for all users by default, allows a user to park a call against an available user's extension or to a Call Park Extension. Call Park Extensions are extensions defined within the Call Park service for holding parked calls.\n\nRetrieving this list requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "extension", - "type": "string", - "usage": "Only return call park extensions with the matching extension." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-extensions" - }, - { - "name": "location-id", - "type": "string", - "usage": "Only return call park extensions with matching location ID." - }, - { - "name": "location-name", - "type": "string", - "usage": "Only return call park extensions with the matching extension." - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of objects returned to this maximum count." - }, - { - "name": "name", - "type": "string", - "usage": "Only return call park extensions with the matching name." - }, - { - "name": "order", - "type": "string", - "usage": "Order the available agents according to the designated fields. Available sort fields: `groupName`, `callParkExtension`, `callParkExtensionName`, `callParkExtensionExternalId`." - }, - { - "name": "org-id", - "type": "string", - "usage": "List call park extensions for this organization.", - "hidden": true - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching objects." - } - ] - }, - { - "path": "webex calling call-park update", - "short": "Update a Call Park", - "long": "Update the designated Call Park.\n\nCall Park allows call recipients to place a call on hold so that it can be retrieved from another device.\n\nUpdating a call park requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: The Call Park ID will change upon modification of the Call Park name.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "call-park-id", - "type": "string", - "usage": "Update settings for a call park with the matching ID.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location in which this call park exists.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Update call park settings from this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling call-park update-2", - "short": "Update Call Park settings", - "long": "Update Call Park settings for the designated location.\n\nCall Park allows call recipients to place a call on hold so that it can be retrieved from another device.\n\nUpdating call park settings requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-2" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location for which call park settings will be updated.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Update call park settings from this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling call-park update-extension", - "short": "Update a Call Park Extension", - "long": "Update the designated Call Park Extension.\n\nCall Park Extension enables a call recipient to park a call to an extension, so someone else within the same Organization can retrieve the parked call by dialing that extension. Call Park Extensions can be added as monitored lines by users' Cisco phones, so users can park and retrieve calls by pressing the associated phone line key.\n\nUpdating a call park extension requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "call-park-extension-id", - "type": "string", - "usage": "Update a call park extension with the matching ID.", - "required": true - }, - { - "name": "extension", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-extension" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location in which this call park extension exists.", - "required": true - }, - { - "name": "name", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "Update a call park extension from this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling call-pickup", - "short": "CallPickup commands" - }, - { - "path": "webex calling call-pickup create", - "short": "Create a Call Pickup", - "long": "Create new Call Pickups for the given location.\n\nCall Pickup enables a user (agent) to answer any ringing line within their pickup group.\n\nCreating a call pickup requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: The Call Pickup ID will change upon modification of the Call Pickup name.", - "flags": [ - { - "name": "agents", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "location-id", - "type": "string", - "usage": "Create the call pickup for this location.", - "required": true - }, - { - "name": "name", - "type": "string" - }, - { - "name": "notification-delay-timer-seconds", - "type": "int64", - "default": "0" - }, - { - "name": "notification-type", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "Create the call pickup for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling call-pickup delete", - "short": "Delete a Call Pickup", - "long": "Delete the designated Call Pickup.\n\nCall Pickup enables a user (agent) to answer any ringing line within their pickup group.\n\nDeleting a call pickup requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: The Call Pickup ID will change upon modification of the Call Pickup name.", - "flags": [ - { - "name": "call-pickup-id", - "type": "string", - "usage": "Delete the call pickup with the matching ID.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location from which to delete a call pickup.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Delete the call pickup from this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling call-pickup get", - "short": "Get Details for a Call Pickup", - "long": "Retrieve the designated Call Pickup details.\n\nCall Pickup enables a user (agent) to answer any ringing line within their pickup group.\n\nRetrieving call pickup details requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.\n\n**NOTE**: The Call Pickup ID will change upon modification of the Call Pickup name.", - "flags": [ - { - "name": "call-pickup-id", - "type": "string", - "usage": "Retrieve settings for a call pickup with the matching ID.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "location-id", - "type": "string", - "usage": "Retrieve settings for a call pickup in this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve call pickup settings from this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling call-pickup get-available-agents", - "short": "Get available agents from Call Pickups", - "long": "Retrieve available agents from call pickups for a given location.\n\nCall Pickup enables a user (agent) to answer any ringing line within their pickup group.\n\nRetrieving available agents from call pickups requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "call-pickup-name", - "type": "string", - "usage": "Only return available agents from call pickups with the matching name." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-available-agents" - }, - { - "name": "location-id", - "type": "string", - "usage": "Return the available agents for this location.", - "required": true - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of available agents returned to this maximum count." - }, - { - "name": "name", - "type": "string", - "usage": "Only return available agents with the matching name." - }, - { - "name": "order", - "type": "string", - "usage": "Order the available agents according to the designated fields. Up to three vertical bar (|) separated sort order fields may be specified. Available sort fields: `fname`, `lname`, `extension`, `number`." - }, - { - "name": "org-id", - "type": "string", - "usage": "Return the available agents for this organization.", - "hidden": true - }, - { - "name": "phone-number", - "type": "string", - "usage": "Only return available agents with the matching primary number." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching available agents." - } - ] - }, - { - "path": "webex calling call-pickup list", - "short": "Read the List of Call Pickups", - "long": "List all Call Pickups for the organization.\n\nCall Pickup enables a user (agent) to answer any ringing line within their pickup group.\n\nRetrieving this list requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.\n\n**NOTE**: The Call Pickup ID will change upon modification of the Call Pickup name.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "location-id", - "type": "string", - "usage": "Return the list of call pickups for this location.", - "required": true - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of call pickups returned to this maximum count. Default is 2000." - }, - { - "name": "name", - "type": "string", - "usage": "Return the list of call pickups that contains the given name. The maximum length is 80." - }, - { - "name": "order", - "type": "string", - "usage": "Sort the list of call pickups by name, either ASC or DSC. Default is ASC." - }, - { - "name": "org-id", - "type": "string", - "usage": "List call pickups for this organization.", - "hidden": true - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching call pickups. Default is 0." - } - ] - }, - { - "path": "webex calling call-pickup update", - "short": "Update a Call Pickup", - "long": "Update the designated Call Pickup.\n\nCall Pickup enables a user (agent) to answer any ringing line within their pickup group.\n\nUpdating a call pickup requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: The Call Pickup ID will change upon modification of the Call Pickup name.", - "flags": [ - { - "name": "agents", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "call-pickup-id", - "type": "string", - "usage": "Update settings for a call pickup with the matching ID.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location in which this call pickup exists.", - "required": true - }, - { - "name": "name", - "type": "string" - }, - { - "name": "notification-delay-timer-seconds", - "type": "int64", - "default": "0" - }, - { - "name": "notification-type", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "Update call pickup settings from this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling call-queue", - "short": "CallQueue commands" - }, - { - "path": "webex calling call-queue assign-unassign-agents-supervisor-customer-assist", - "short": "Assign or Unassign Agents to Supervisor with Customer Assist", - "long": "Assign or unassign agents to the supervisor for an organization.\n\nAgents in a call queue can be associated with a supervisor who can silently monitor, coach, barge in or to take over calls that their assigned agents are currently handling.\n\nThis operation requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "has-cx-essentials", - "type": "string", - "usage": "Must be set to `true` to modify a supervisor with Customer Assist license. This can otherwise be ommited or set to `false`." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for assign-unassign-agents-supervisor-customer-assist" - }, - { - "name": "org-id", - "type": "string", - "usage": "Assign or unassign agents to a supervisor in this organization.", - "hidden": true - }, - { - "name": "supervisor-id", - "type": "string", - "usage": "Identifier of the supervisor to be updated.", - "required": true - } - ] - }, - { - "path": "webex calling call-queue create-customer-assist", - "short": "Create a Call Queue with Customer Assist", - "long": "Create new Call Queues for the given location.\n\nCall queues temporarily hold calls in the cloud, when all agents assigned to receive calls from the queue are unavailable.\nQueued calls are routed to an available agent, when not on an active call. Each call queue is assigned a lead number, which is a telephone\nnumber that external callers can dial to reach the users assigned to the call queue. Call queues are also assigned an internal extension,\nwhich can be dialed internally to reach the users assigned to the call queue.\n\nCreating a call queue requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "has-cx-essentials", - "type": "string", - "usage": "Creates a Customer Assist call queue, when `true`. This requires Customer Assist licensed agents." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-customer-assist" - }, - { - "name": "location-id", - "type": "string", - "usage": "The location ID where the call queue needs to be created.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "The organization ID where the call queue needs to be created.", - "hidden": true - } - ] - }, - { - "path": "webex calling call-queue create-selective-forward-rule", - "short": "Create a Selective Call Forwarding Rule for a Call Queue", - "long": "Create a Selective Call Forwarding Rule for the designated Call Queue.\n\nA selective call forwarding rule for a call queue allows calls to be forwarded or not forwarded to the designated number, based on the defined criteria.\n\nNote that the list of existing call forward rules is available in the call queue's call forwarding settings.\n\nCreating a selective call forwarding rule for a call queue requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: The Call Forwarding Rule ID will change upon modification of the Call Forwarding Rule name.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-selective-forward-rule" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location in which the call queue exists.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Create the call queue rule for this organization.", - "hidden": true - }, - { - "name": "queue-id", - "type": "string", - "usage": "Create the rule for this call queue.", - "required": true - } - ] - }, - { - "path": "webex calling call-queue create-supervisor-customer-assist", - "short": "Create a Supervisor with Customer Assist", - "long": "Create a new supervisor. The supervisor must be created with at least one agent.\n\nAgents in a call queue can be associated with a supervisor who can silently monitor, coach, barge in or to take over calls that their assigned agents are currently handling.\n\nThis operation requires a full or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "has-cx-essentials", - "type": "string", - "usage": "Creates a Customer Assist queue supervisor, when `true`. Customer Assist queue supervisors must have a Customer Assist license." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-supervisor-customer-assist" - }, - { - "name": "org-id", - "type": "string", - "usage": "The organization ID where the supervisor needs to be created.", - "hidden": true - } - ] - }, - { - "path": "webex calling call-queue delete", - "short": "Delete a Call Queue", - "long": "Delete the designated Call Queue.\n\nCall queues temporarily hold calls in the cloud when all agents, which\ncan be users or agents, assigned to receive calls from the queue are\nunavailable. Queued calls are routed to an available agent when not on an\nactive call. Each call queue is assigned a Lead Number, which is a telephone\nnumber outside callers can dial to reach users assigned to the call queue.\nCall queues are also assigned an internal extension, which can be dialed\ninternally to reach users assigned to the call queue.\n\nDeleting a call queue requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location from which to delete a call queue.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Delete the call queue from this organization.", - "hidden": true - }, - { - "name": "queue-id", - "type": "string", - "usage": "Delete the call queue with the matching ID.", - "required": true - } - ] - }, - { - "path": "webex calling call-queue delete-announcement-file", - "short": "Delete a Call Queue Announcement File", - "long": "Delete an announcement file for the designated Call Queue.\n\nCall Queue announcement files contain messages and music that callers hear while waiting in the queue. A call queue can be configured to play whatever subset of these announcement files is desired.\n\nDeleting an announcement file for a call queue requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "file-name", - "type": "string", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-announcement-file" - }, - { - "name": "location-id", - "type": "string", - "usage": "Delete an announcement for a call queue in this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Delete call queue announcement from this organization.", - "hidden": true - }, - { - "name": "queue-id", - "type": "string", - "usage": "Delete an announcement for the call queue with this identifier.", - "required": true - } - ] - }, - { - "path": "webex calling call-queue delete-bulk-supervisors", - "short": "Delete Bulk Supervisors", - "long": "Deletes supervisors in bulk from an organization.\n\nSupervisors are users who manage agents and who perform functions including monitoring, coaching, and more.\n\nRequires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "delete-all", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-bulk-supervisors" - }, - { - "name": "org-id", - "type": "string", - "usage": "Delete supervisors in bulk for this organization.", - "hidden": true - }, - { - "name": "supervisor-ids", - "type": "stringSlice", - "default": "[]" - } - ] - }, - { - "path": "webex calling call-queue delete-selective-forward-rule", - "short": "Delete a Selective Call Forwarding Rule for a Call Queue", - "long": "Delete a Selective Call Forwarding Rule for the designated Call Queue.\n\nA selective call forwarding rule for a call queue allows calls to be forwarded or not forwarded to the designated number, based on the defined criteria.\n\nNote that the list of existing call forward rules is available in the call queue's call forwarding settings.\n\nDeleting a selective call forwarding rule for a call queue requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: The Call Forwarding Rule ID will change upon modification of the Call Forwarding Rule name.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-selective-forward-rule" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location in which this call queue exists.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Delete call queue rule from this organization.", - "hidden": true - }, - { - "name": "queue-id", - "type": "string", - "usage": "Delete the rule for this call queue.", - "required": true - }, - { - "name": "rule-id", - "type": "string", - "usage": "Call queue rule you are deleting.", - "required": true - } - ] - }, - { - "path": "webex calling call-queue delete-supervisor", - "short": "Delete a Supervisor", - "long": "Deletes the supervisor from an organization.\n\nSupervisors are users who manage agents and who perform functions including monitoring, coaching, and more.\n\nRequires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-supervisor" - }, - { - "name": "org-id", - "type": "string", - "usage": "Delete the supervisor in the specified organization.", - "hidden": true - }, - { - "name": "supervisor-id", - "type": "string", - "usage": "Delete the specified supervisor.", - "required": true - } - ] - }, - { - "path": "webex calling call-queue get-agent-customer-assist", - "short": "Get Details for a Call Queue Agent with Customer Assist", - "long": "Retrieve details of a particular Call queue agent based on the agent ID.\n\nAgents can be users, workplace or virtual lines assigned to a call queue. Calls from the call queue are routed to agents based on configuration. \nAn agent can be assigned to one or more call queues and can be managed by supervisors.\n\nRetrieving a call queue agent's details require a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.\n\n**Note**: The agent's `type` returned in the response and in the decoded value of the agent's `id`, is always of type `PEOPLE`, even if the agent is a workspace or virtual line. This` will be corrected in a future release.", - "flags": [ - { - "name": "has-cx-essentials", - "type": "string", - "usage": "Must be set to `true` to view the details of an agent with Customer Assist license. This can otherwise be ommited or set to `false`." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-agent-customer-assist" - }, - { - "name": "id", - "type": "string", - "usage": "Retrieve call queue agents with this identifier.", - "required": true - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of objects returned to this maximum count." - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve call queue agents from this organization.", - "hidden": true - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching objects." - } - ] - }, - { - "path": "webex calling call-queue get-alternate-numbers", - "short": "Get Call Queue Alternate Available Phone Numbers", - "long": "List the service and standard PSTN numbers that are available to be assigned as the call queue's alternate phone number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-alternate-numbers" - }, - { - "name": "location-id", - "type": "string", - "usage": "Return the list of phone numbers for this location within the given organization. The maximum length is 36.", - "required": true - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of phone numbers returned to this maximum count. The default is 2000." - }, - { - "name": "org-id", - "type": "string", - "usage": "List numbers for this organization.", - "hidden": true - }, - { - "name": "phone-number", - "type": "string", - "usage": "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching phone numbers. The default is 0." - } - ] - }, - { - "path": "webex calling call-queue get-available-agents", - "short": "Get Call Queue Available Agents", - "long": "List all available users, workspaces, or virtual lines that can be assigned as call queue agents.\n\nAvailable agents are users (excluding users with Webex Calling Standard license), workspaces, or virtual lines that can be assigned to a call queue. \nCalls from the call queue are routed to assigned agents based on configuration. \nAn agent can be assigned to one or more call queues and can be managed by supervisors.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-available-agents" - }, - { - "name": "location-id", - "type": "string", - "usage": "The location ID of the call queue. Temporary mandatory query parameter, used for performance reasons only and not a filter." - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of objects returned to this maximum count." - }, - { - "name": "name", - "type": "string", - "usage": "Search based on name (user first and last name combination)." - }, - { - "name": "order", - "type": "string", - "usage": "Order the available agents according to the designated fields. Up to three comma-separated sort order fields may be specified. Available sort fields are: `userId`, `fname`, `firstname`, `lname`, `lastname`, `dn`, and `extension`. Sort order can be added together with each field using a hyphen, `-`. Available sort orders are: `asc`, and `desc`." - }, - { - "name": "org-id", - "type": "string", - "usage": "List available agents for this organization.", - "hidden": true - }, - { - "name": "phone-number", - "type": "string", - "usage": "Search based on number or extension." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching objects." - } - ] - }, - { - "path": "webex calling call-queue get-customer-assist", - "short": "Get Details for a Call Queue with Customer Assist", - "long": "Retrieve Call Queue details.\n\nCall queues temporarily hold calls in the cloud, when all agents assigned to receive calls from the queue are unavailable.\nQueued calls are routed to an available agent, when not on an active call. Each call queue is assigned a lead number, which is a telephone\nnumber that external callers can dial to reach the users assigned to the call queue. Call queues are also assigned an internal extension,\nwhich can be dialed internally to reach the users assigned to the call queue.\n\nRetrieving call queue details requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "has-cx-essentials", - "type": "string", - "usage": "Must be set to `true`, to view the details of a call queue with Customer Assist license. This can otherwise be ommited or set to `false`." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-customer-assist" - }, - { - "name": "location-id", - "type": "string", - "usage": "Retrieves the details of a call queue in this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieves the details of a call queue in this organization.", - "hidden": true - }, - { - "name": "queue-id", - "type": "string", - "usage": "Retrieves the details of call queue with this identifier.", - "required": true - } - ] - }, - { - "path": "webex calling call-queue get-forced-forward", - "short": "Get Details for a Call Queue Forced Forward", - "long": "Retrieve Call Queue policy Forced Forward details.\n\nThis policy allows calls to be temporarily diverted to a configured destination.\n\nRetrieving call queue Forced Forward details requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-forced-forward" - }, - { - "name": "location-id", - "type": "string", - "usage": "Retrieve settings for a call queue in this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve call queue settings from this organization.", - "hidden": true - }, - { - "name": "queue-id", - "type": "string", - "usage": "Retrieve settings for the call queue with this identifier.", - "required": true - } - ] - }, - { - "path": "webex calling call-queue get-forward", - "short": "Get Call Forwarding Settings for a Call Queue", - "long": "Retrieve Call Forwarding settings for the specified Call Queue, including the list of call forwarding rules.\n\nThe call forwarding feature allows you to direct all incoming calls based on specific criteria that you define.\nBelow are the available options for configuring your call forwarding:\n1. Always forward calls to a designated number.\n2. Forward calls to a designated number based on certain criteria.\n3. Forward calls using different modes.\n\nRetrieving call forwarding settings for a call queue requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-forward" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location in which this call queue exists.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve call queue forwarding settings from this organization.", - "hidden": true - }, - { - "name": "queue-id", - "type": "string", - "usage": "Retrieve the call forwarding settings for this call queue.", - "required": true - } - ] - }, - { - "path": "webex calling call-queue get-forward-available-numbers", - "short": "Get Call Queue Call Forward Available Phone Numbers", - "long": "List the service and standard PSTN numbers that are available to be assigned as the call queue's call forward number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are assigned to an owning entity.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "extension", - "type": "string", - "usage": "Returns the list of PSTN phone numbers with the given `extension`." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-forward-available-numbers" - }, - { - "name": "location-id", - "type": "string", - "usage": "Return the list of phone numbers for this location within the given organization. The maximum length is 36.", - "required": true - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of phone numbers returned to this maximum count. The default is 2000." - }, - { - "name": "org-id", - "type": "string", - "usage": "List numbers for this organization.", - "hidden": true - }, - { - "name": "owner-name", - "type": "string", - "usage": "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255." - }, - { - "name": "phone-number", - "type": "string", - "usage": "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching phone numbers. The default is 0." - } - ] - }, - { - "path": "webex calling call-queue get-holiday-service", - "short": "Get Details for a Call Queue Holiday Service", - "long": "Retrieve Call Queue Holiday Service details.\n\nConfigure the call queue to route calls differently during the holidays.\n\nRetrieving call queue holiday service details requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-holiday-service" - }, - { - "name": "location-id", - "type": "string", - "usage": "Retrieve settings for a call queue in this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve call queue settings from this organization.", - "hidden": true - }, - { - "name": "queue-id", - "type": "string", - "usage": "Retrieve settings for the call queue with this identifier.", - "required": true - } - ] - }, - { - "path": "webex calling call-queue get-night-service", - "short": "Get Details for a Call Queue Night Service", - "long": "Retrieve Call Queue Night service details.\n\nConfigure the call queue to route calls differently during the hours when the queue is not in service. This is\ndetermined by a schedule that defines the business hours of the queue.\n\nRetrieving call queue details requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-night-service" - }, - { - "name": "location-id", - "type": "string", - "usage": "Retrieve settings for a call queue in this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve call queue night service settings from this organization.", - "hidden": true - }, - { - "name": "queue-id", - "type": "string", - "usage": "Retrieve settings for the call queue night service with this identifier.", - "required": true - } - ] - }, - { - "path": "webex calling call-queue get-playlist-usage", - "short": "Get Playlist Usage", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-playlist-usage" - }, - { - "name": "play-list-id", - "type": "string", - "usage": "Unique identifier of the playlist.", - "required": true - }, - { - "name": "playlist-usage-type", - "type": "string", - "usage": "Filter usage by type." - } - ] - }, - { - "path": "webex calling call-queue get-primary-numbers", - "short": "Get Call Queue Primary Available Phone Numbers", - "long": "List the service and standard PSTN numbers that are available to be assigned as the call queue's primary phone number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-primary-numbers" - }, - { - "name": "location-id", - "type": "string", - "usage": "Return the list of phone numbers for this location within the given organization. The maximum length is 36.", - "required": true - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of phone numbers returned to this maximum count. The default is 2000." - }, - { - "name": "org-id", - "type": "string", - "usage": "List numbers for this organization.", - "hidden": true - }, - { - "name": "phone-number", - "type": "string", - "usage": "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching phone numbers. The default is 0." - } - ] - }, - { - "path": "webex calling call-queue get-selective-forward-rule", - "short": "Get Selective Call Forwarding Rule for a Call Queue", - "long": "Retrieve a Selective Call Forwarding Rule's settings for the designated Call Queue.\n\nA selective call forwarding rule for a call queue allows calls to be forwarded or not forwarded to the designated number, based on the defined criteria.\n\nNote that the list of existing call forward rules is available in the call queue's call forwarding settings.\n\nRetrieving a selective call forwarding rule's settings for a call queue requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.\n\n**NOTE**: The Call Forwarding Rule ID will change upon modification of the Call Forwarding Rule name.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-selective-forward-rule" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location in which to call queue exists.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve call queue rule settings for this organization.", - "hidden": true - }, - { - "name": "queue-id", - "type": "string", - "usage": "Retrieve setting for a rule for this call queue.", - "required": true - }, - { - "name": "rule-id", - "type": "string", - "usage": "Call queue rule you are retrieving settings for.", - "required": true - } - ] - }, - { - "path": "webex calling call-queue get-stranded", - "short": "Get Details for a Call Queue Stranded Calls", - "long": "Allow admin to view default/configured Stranded Calls settings.\n\nStranded-All agents logoff Policy: If the last agent staffing a queue “unjoins” the queue or signs out, then all calls in the queue become stranded.\nStranded-Unavailable Policy: This policy allows for the configuration of the processing of calls that are in a staffed queue when all agents are unavailable.\n\nRetrieving call queue Stranded Calls details requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-stranded" - }, - { - "name": "location-id", - "type": "string", - "usage": "Retrieve settings for a call queue in this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve call queue settings from this organization.", - "hidden": true - }, - { - "name": "queue-id", - "type": "string", - "usage": "Retrieve settings for the call queue with this identifier.", - "required": true - } - ] - }, - { - "path": "webex calling call-queue get-supervisor-detail-customer-assist", - "short": "Get Supervisor Detail with Customer Assist", - "long": "Get details of a specific supervisor, which includes the agents associated agents with the supervisor, in an organization.\n\nAgents in a call queue can be associated with a supervisor who can silently monitor, coach, barge in or to take over calls that their assigned agents are currently handling.\n\nThis operation requires a full, user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "has-cx-essentials", - "type": "string", - "usage": "Must be set to `true`, to view the details of a supervisor with Customer Assist license. This can otherwise be ommited or set to `false`." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-supervisor-detail-customer-assist" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of objects returned to this maximum count." - }, - { - "name": "name", - "type": "string", - "usage": "Only return the agents that match the given name." - }, - { - "name": "order", - "type": "string", - "usage": "Sort results alphabetically by supervisor name, in ascending or descending order." - }, - { - "name": "org-id", - "type": "string", - "usage": "List the agents assigned to a supervisor in this organization.", - "hidden": true - }, - { - "name": "phone-number", - "type": "string", - "usage": "Only return agents that match the given phone number, extension, or ESN." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching objects." - }, - { - "name": "supervisor-id", - "type": "string", - "usage": "List the agents assigned to this supervisor.", - "required": true - } - ] - }, - { - "path": "webex calling call-queue list-agents-customer-assist", - "short": "Read the List of Call Queue Agents with Customer Assist", - "long": "List all Call Queues Agents for the organization.\n\nAgents can be users, workplace or virtual lines assigned to a call queue. Calls from the call queue are routed to agents based on configuration. \nAn agent can be assigned to one or more call queues and can be managed by supervisors.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.\n\n**Note**: The decoded value of the agent's `id`, and the `type` returned in the response, are always returned as `PEOPLE`, even when the agent is a workspace or virtual line. This will be addressed in a future release.", - "flags": [ - { - "name": "has-cx-essentials", - "type": "string", - "usage": "Returns only the list of call queues with Customer Assist license when `true`, otherwise returns the list of Customer Experience Basic call queues." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-agents-customer-assist" - }, - { - "name": "join-enabled", - "type": "string", - "usage": "Returns only the list of call queue agents that match the given `joinEnabled` value." - }, - { - "name": "location-id", - "type": "string", - "usage": "Return only the call queue agents in this location." - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of objects returned to this maximum count." - }, - { - "name": "name", - "type": "string", - "usage": "Returns only the list of call queue agents that match the given name." - }, - { - "name": "order", - "type": "string", - "usage": "Sort results alphabetically by call queue agent's name, in ascending or descending order." - }, - { - "name": "org-id", - "type": "string", - "usage": "List call queues agents in this organization.", - "hidden": true - }, - { - "name": "phone-number", - "type": "string", - "usage": "Returns only the list of call queue agents that match the given phone number or extension." - }, - { - "name": "queue-id", - "type": "string", - "usage": "Only return call queue agents with the matching queue ID." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching objects." - } - ] - }, - { - "path": "webex calling call-queue list-announcement-files", - "short": "Read the List of Call Queue Announcement Files", - "long": "List file info for all Call Queue announcement files associated with this Call Queue.\n\nCall Queue announcement files contain messages and music that callers hear while waiting in the queue. A call queue can be configured to play whatever subset of these announcement files is desired.\n\nRetrieving this list of files requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.\n\nNote that uploading of announcement files via API is not currently supported, but is available via Webex Control Hub.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-announcement-files" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location in which this call queue exists.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve announcement files for a call queue from this organization.", - "hidden": true - }, - { - "name": "queue-id", - "type": "string", - "usage": "Retrieve anouncement files for the call queue with this identifier.", - "required": true - } - ] - }, - { - "path": "webex calling call-queue list-available-agents-customer-assist", - "short": "List Available Agents with Customer Assist", - "long": "Get list of available agents for an organization.\n\nAgents in a call queue can be associated with a supervisor who can silently monitor, coach, barge in or to take over calls that their assigned agents are currently handling.\n\nThis operation requires a full, user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "has-cx-essentials", - "type": "string", - "usage": "Returns only the list of available agents with Customer Assist license, when `true`. When ommited or set to `false`, will return the list of available agents with Customer Experience Basic license." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-available-agents-customer-assist" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of objects returned to this maximum count." - }, - { - "name": "name", - "type": "string", - "usage": "Returns only the agents that match the given name." - }, - { - "name": "order", - "type": "string", - "usage": "Sort results alphabetically by supervisor name, in ascending or descending order." - }, - { - "name": "org-id", - "type": "string", - "usage": "List of available agents in a supervisor's list for this organization.", - "hidden": true - }, - { - "name": "phone-number", - "type": "string", - "usage": "Returns only the agents that match the phone number, extension, or ESN." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching objects." - } - ] - }, - { - "path": "webex calling call-queue list-available-supervisors-customer-assist", - "short": "List Available Supervisors with Customer Assist", - "long": "Get list of available supervisors for an organization.\n\nAgents in a call queue can be associated with a supervisor who can silently monitor, coach, barge in or to take over calls that their assigned agents are currently handling.\n\nThis operation requires a full, user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "has-cx-essentials", - "type": "string", - "usage": "Returns only the list of available supervisors with Customer Assist license, when `true`. When ommited or set to 'false', will return the list of available supervisors with Customer Experience Basic license." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-available-supervisors-customer-assist" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of objects returned to this maximum count." - }, - { - "name": "name", - "type": "string", - "usage": "Only return the supervisors that match the given name." - }, - { - "name": "order", - "type": "string", - "usage": "Sort results alphabetically by supervisor name, in ascending or descending order." - }, - { - "name": "org-id", - "type": "string", - "usage": "List the available supervisors in this organization.", - "hidden": true - }, - { - "name": "phone-number", - "type": "string", - "usage": "Only return the supervisors that match the given phone number, extension, or ESN." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching objects." - } - ] - }, - { - "path": "webex calling call-queue list-customer-assist", - "short": "Read the List of Call Queues with Customer Assist", - "long": "List all Call Queues for the organization.\n\nCall queues temporarily hold calls in the cloud, when all agents\nassigned to receive calls from the queue are unavailable. Queued calls are routed to \nan available agent, when not on an active call. Each call queue is assigned a lead number, which is a telephone\nnumber that external callers can dial to reach the users assigned to the call queue.\nCall queues are also assigned an internal extension, which can be dialed\ninternally to reach the users assigned to the call queue.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "department-id", - "type": "string", - "usage": "Returns only call queues matching the given department ID." - }, - { - "name": "department-name", - "type": "string", - "usage": "Returns only call queues matching the given department name." - }, - { - "name": "has-cx-essentials", - "type": "string", - "usage": "Returns only the list of call queues with Customer Assist license when `true`, otherwise returns the list of Customer Experience Basic call queues." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-customer-assist" - }, - { - "name": "location-id", - "type": "string", - "usage": "Returns the list of call queues in this location." - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of objects returned to this maximum count." - }, - { - "name": "name", - "type": "string", - "usage": "Returns only the call queues matching the given name." - }, - { - "name": "org-id", - "type": "string", - "usage": "Returns the list of call queues in this organization.", - "hidden": true - }, - { - "name": "phone-number", - "type": "string", - "usage": "Returns only the call queues matching the given primary phone number or extension." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching objects." - } - ] - }, - { - "path": "webex calling call-queue list-supervisors-customer-assist", - "short": "Get List of Supervisors with Customer Assist", - "long": "Get list of supervisors for an organization.\n\nAgents in a call queue can be associated with a supervisor who can silently monitor, coach, barge in or to take over calls that their assigned agents are currently handling.\n\nRequires a full, location, user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "has-cx-essentials", - "type": "string", - "usage": "Returns only the list of supervisors with Customer Assist license, when `true`. Otherwise returns the list of supervisors with Customer Experience Basic license." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-supervisors-customer-assist" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of objects returned to this maximum count." - }, - { - "name": "name", - "type": "string", - "usage": "Only return the supervisors that match the given name." - }, - { - "name": "order", - "type": "string", - "usage": "Sort results alphabetically by supervisor name, in ascending or descending order." - }, - { - "name": "org-id", - "type": "string", - "usage": "List the supervisors in this organization.", - "hidden": true - }, - { - "name": "phone-number", - "type": "string", - "usage": "Only return the supervisors that match the given phone number, extension, or ESN." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching objects." - } - ] - }, - { - "path": "webex calling call-queue switch-mode-forward", - "short": "Switch Mode for Call Forwarding Settings for a Call Queue", - "long": "Switches the current operating mode of the `Call Queue` to the mode as per normal operations.\n\nOperating modes allow call forwarding to be configured based on predefined schedules, enabling different routing behaviors during business hours, after hours, or holidays.\n\nSwitching operating mode for a `call queue` requires a full, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for switch-mode-forward" - }, - { - "name": "location-id", - "type": "string", - "usage": "`Location` in which this `call queue` exists.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Switch operating mode as per normal operations for the `call queue` from this organization.", - "hidden": true - }, - { - "name": "queue-id", - "type": "string", - "usage": "Switch operating mode to normal operations for this `call queue`.", - "required": true - } - ] - }, - { - "path": "webex calling call-queue update", - "short": "Update a Call Queue", - "long": "Update the designated Call Queue.\n\nCall queues temporarily hold calls in the cloud when all agents, which\ncan be users or agents, assigned to receive calls from the queue are\nunavailable. Queued calls are routed to an available agent when not on an\nactive call. Each call queue is assigned a Lead Number, which is a telephone\nnumber outside callers can dial to reach users assigned to the call queue.\nCall queues are also assigned an internal extension, which can be dialed\ninternally to reach users assigned to the call queue.\n\nUpdating a call queue requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location in which this call queue exists.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Update call queue settings from this organization.", - "hidden": true - }, - { - "name": "queue-id", - "type": "string", - "usage": "Update setting for the call queue with the matching ID.", - "required": true - } - ] - }, - { - "path": "webex calling call-queue update-agent-settings-one-more-customer-assist", - "short": "Update an Agent's Settings of One or More Call Queues with Customer Assist", - "long": "Modify an agent's call queue settings for an organization.\n\nCalls from the call queue are routed to agents based on configuration. \nAn agent can be assigned to one or more call queues and can be managed by supervisors.\n\nThis operation requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "has-cx-essentials", - "type": "string", - "usage": "Must be set to `true` to modify an agent that has Customer Assist license. This can otherwise be ommited or set to `false`." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-agent-settings-one-more-customer-assist" - }, - { - "name": "id", - "type": "string", - "usage": "Identifier of the agent to be updated.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Update the settings of an agent in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling call-queue update-forced-forward-service", - "short": "Update a Call Queue Forced Forward Service", - "long": "Update the designated Forced Forward Service.\n\nIf the option is enabled, then incoming calls to the queue are forwarded to the configured destination. Calls that are already in the queue remain queued.\nThe policy can be configured to play an announcement prior to proceeding with the forward.\n\nUpdating a call queue Forced Forward service requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-forced-forward-service" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location in which this call queue exists.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Update call queue settings from this organization.", - "hidden": true - }, - { - "name": "queue-id", - "type": "string", - "usage": "Update setting for the call queue with the matching ID.", - "required": true - } - ] - }, - { - "path": "webex calling call-queue update-forward", - "short": "Update Call Forwarding Settings for a Call Queue", - "long": "Update Call Forwarding settings for the designated Call Queue.\n\nThe call forwarding feature allows you to direct all incoming calls based on specific criteria that you define.\nBelow are the available options for configuring your call forwarding:\n1. Always forward calls to a designated number.\n2. Forward calls to a designated number based on certain criteria.\n3. Forward calls using different modes.\n\nUpdating call forwarding settings for a call queue requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-forward" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location in which this call queue exists.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Update call queue forwarding settings from this organization.", - "hidden": true - }, - { - "name": "queue-id", - "type": "string", - "usage": "Update call forwarding settings for this call queue.", - "required": true - } - ] - }, - { - "path": "webex calling call-queue update-holiday-service", - "short": "Update a Call Queue Holiday Service", - "long": "Update the designated Call Queue Holiday Service.\n\nConfigure the call queue to route calls differently during the holidays.\n\nUpdating a call queue holiday service requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-holiday-service" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location in which this call queue exists.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Update call queue settings from this organization.", - "hidden": true - }, - { - "name": "queue-id", - "type": "string", - "usage": "Update setting for the call queue with the matching ID.", - "required": true - } - ] - }, - { - "path": "webex calling call-queue update-night-service", - "short": "Update a Call Queue Night Service", - "long": "Update Call Queue Night Service details.\n\nConfigure the call queue to route calls differently during the hours when the queue is not in service. This is\ndetermined by a schedule that defines the business hours of the queue.\n\nUpdating call queue night service details requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-night-service" - }, - { - "name": "location-id", - "type": "string", - "usage": "Update settings for a call queue in this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Update call queue night service settings from this organization.", - "hidden": true - }, - { - "name": "queue-id", - "type": "string", - "usage": "Update settings for the call queue night service with this identifier.", - "required": true - } - ] - }, - { - "path": "webex calling call-queue update-selective-forward-rule", - "short": "Update a Selective Call Forwarding Rule for a Call Queue", - "long": "Update a Selective Call Forwarding Rule's settings for the designated Call Queue.\n\nA selective call forwarding rule for a call queue allows calls to be forwarded or not forwarded to the designated number, based on the defined criteria.\n\nNote that the list of existing call forward rules is available in the call queue's call forwarding settings.\n\nUpdating a selective call forwarding rule's settings for a call queue requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: The Call Forwarding Rule ID will change upon modification of the Call Forwarding Rule name.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-selective-forward-rule" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location in which this call queue exists.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Update call queue rule settings for this organization.", - "hidden": true - }, - { - "name": "queue-id", - "type": "string", - "usage": "Update settings for a rule for this call queue.", - "required": true - }, - { - "name": "rule-id", - "type": "string", - "usage": "Call queue rule you are updating settings for.", - "required": true - } - ] - }, - { - "path": "webex calling call-queue update-stranded-service", - "short": "Update a Call Queue Stranded Calls Service", - "long": "Update the designated Call Stranded Calls Service.\n\nAllow admin to modify configured Stranded Calls settings.\n\nUpdating a call queue stranded calls requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-stranded-service" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location in which this call queue exists.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Update call queue settings from this organization.", - "hidden": true - }, - { - "name": "queue-id", - "type": "string", - "usage": "Update setting for the call queue with the matching ID.", - "required": true - } - ] - }, - { - "path": "webex calling call-recording", - "short": "CallRecording commands" - }, - { - "path": "webex calling call-recording get", - "short": "Get Call Recording Settings", - "long": "Retrieve call recording settings for the organization.\n\nThe Call Recording feature enables authorized agents to record any active call that Webex Contact Center manages.\n\nRetrieving call recording settings requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve call recording settings from this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling call-recording get-job-errors-job", - "short": "Get Job Errors for a Call Recording Job", - "long": "Get errors for a call recording job in an organization.\n\nThe Call Recording feature supports multiple third-party call recording providers, or vendors, to capture and manage call recordings. An organization is configured with an overall provider, but locations can be configured to use a different vendor than the overall organization default.\n\nRequires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-job-errors-job" - }, - { - "name": "job-id", - "type": "string", - "usage": "Retrieve job errors for this job.", - "required": true - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of errors returned to this maximum count. The default is 50." - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve job errors for a call recording job in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling call-recording get-job-status-job", - "short": "Get the Job Status of a Call Recording Job", - "long": "Get the details of a call recording job by its job ID.\n\nThe Call Recording feature supports multiple third-party call recording providers, or vendors, to capture and manage call recordings. An organization is configured with an overall provider, but locations can be configured to use a different vendor than the overall organization default.\n\nRequires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-job-status-job" - }, - { - "name": "job-id", - "type": "string", - "usage": "Retrieve job status for this `jobId`.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve job status in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling call-recording get-location-compliance-announcement", - "short": "Get details for the Location Compliance Announcement Setting", - "long": "Retrieve the location compliance announcement settings.\n\nThe Compliance Announcement feature interacts with the Call Recording feature, specifically with the playback of the start/stop announcement. When the compliance announcement is played to the PSTN party, and the PSTN party is connected to a party with call recording enabled, then the start/stop announcement is inhibited.\n\nRetrieving location compliance announcement setting requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-location-compliance-announcement" - }, - { - "name": "location-id", - "type": "string", - "usage": "Retrieve compliance announcement settings for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve compliance announcement setting from this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling call-recording get-location-vendors", - "short": "Get Location Call Recording Vendors", - "long": "Retrieve details of the call recording vendor that the location is assigned and also a list of vendors.\n\nThe Call Recording feature supports multiple third-party call recording providers, or vendors, to capture and manage call recordings. An organization is configured with an overall provider, but locations can be configured to use a different vendor than the overall organization default.\n\nRequires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-location-vendors" - }, - { - "name": "location-id", - "type": "string", - "usage": "Retrieve vendor details for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve vendor details for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling call-recording get-org-compliance-announcement", - "short": "Get details for the organization Compliance Announcement Setting", - "long": "Retrieve the organization compliance announcement settings.\n\nThe Compliance Announcement feature interacts with the Call Recording feature, specifically with the playback of the start/stop announcement. When the compliance announcement is played to the PSTN party, and the PSTN party is connected to a party with call recording enabled, then the start/stop announcement is inhibited.\n\nRetrieving organization compliance announcement setting requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-org-compliance-announcement" - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve compliance announcement setting from this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling call-recording get-org-vendors", - "short": "Get Organization Call Recording Vendors", - "long": "Returns what the current vendor is as well as a list of all the available vendors.\n\nThe Call Recording feature supports multiple third-party call recording providers, or vendors, to capture and manage call recordings. An organization is configured with an overall provider, but locations can be configured to use a different vendor than the overall organization default.\n\nRequires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-org-vendors" - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve call recording settings from this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling call-recording get-regions", - "short": "Get Call Recording Regions", - "long": "Retrieve all the call recording regions that are available for an organization.\n\nThe Call Recording feature supports multiple third-party call recording providers, or vendors, to capture and manage call recordings. An organization is configured with an overall provider, but locations can be configured to use a different vendor than the overall organization default.\n\nRequires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-regions" - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve call recording regions for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling call-recording get-terms-settings", - "short": "Get Call Recording Terms Of Service Settings", - "long": "Retrieve call recording terms of service settings for the organization.\n\nThe Call Recording feature enables authorized agents to record any active call that Webex Contact Center manages.\n\nRetrieving call recording terms of service settings requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-terms-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve call recording terms of service details from this organization.", - "hidden": true - }, - { - "name": "vendor-id", - "type": "string", - "usage": "Retrieve call recording terms of service details for the given vendor.", - "required": true - } - ] - }, - { - "path": "webex calling call-recording get-vendor-users", - "short": "Get Call Recording Vendor Users", - "long": "Retrieve call recording vendor users of an organization. This API is used to get the list of users who are assigned to the default call-recording vendor of the organization.\n\nThe Call Recording feature supports multiple third-party call recording providers, or vendors, to capture and manage call recordings. An organization is configured with an overall provider, but locations can be configured to use a different vendor than the overall organization default.\n\nRequires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-vendor-users" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of vendor users returned to this maximum count. The default is 2000." - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve call recording vendor users for this organization.", - "hidden": true - }, - { - "name": "standard-user-only", - "type": "string", - "usage": "If true, results only include Webex Calling standard users." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching objects. The default is 0." - } - ] - }, - { - "path": "webex calling call-recording get-vendor-users-location", - "short": "Get Call Recording Vendor Users for a Location", - "long": "Retrieve call recording vendor users of a location. This API is used to get the list of users assigned to the call recording vendor of the location.\n\nThe Call Recording feature supports multiple third-party call recording providers, or vendors, to capture and manage call recordings. An organization is configured with an overall provider, but locations can be configured to use a different vendor than the overall organization default.\n\nRequires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-vendor-users-location" - }, - { - "name": "location-id", - "type": "string", - "usage": "Retrieve vendor users for this location.", - "required": true - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of vendor users returned to this maximum count. The default is 2000." - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve vendor users for this organization.", - "hidden": true - }, - { - "name": "standard-user-only", - "type": "string", - "usage": "If true, results only include Webex Calling standard users." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching objects. The default is 0." - } - ] - }, - { - "path": "webex calling call-recording list-jobs", - "short": "List Call Recording Jobs", - "long": "Get the list of all call recording jobs in an organization.\n\nThe Call Recording feature supports multiple third-party call recording providers, or vendors, to capture and manage call recordings. An organization is configured with an overall provider, but locations can be configured to use a different vendor than the overall organization default.\n\nRequires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-jobs" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of jobs returned to this maximum count. The default is 50." - }, - { - "name": "org-id", - "type": "string", - "usage": "List call recording jobs in this organization.", - "hidden": true - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching objects. The default is 0." - } - ] - }, - { - "path": "webex calling call-recording update", - "short": "Update Call Recording Settings", - "long": "Update call recording settings for the organization.\n\nThe Call Recording feature enables authorized agents to record any active call that Webex Contact Center manages.\n\nUpdating call recording settings requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: This API is for Cisco partners only.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve call recording settings from this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling call-recording update-location-compliance-announcement", - "short": "Update the Location Compliance Announcement", - "long": "Update the location compliance announcement.\n\nThe Compliance Announcement feature interacts with the Call Recording feature, specifically with the playback of the start/stop announcement. When the compliance announcement is played to the PSTN party, and the PSTN party is connected to a party with call recording enabled, then the start/stop announcement is inhibited.\n\nUpdating the location compliance announcement requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "delay-in-seconds", - "type": "int64", - "default": "0" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-location-compliance-announcement" - }, - { - "name": "inbound-pstncalls-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "location-id", - "type": "string", - "usage": "Update the compliance announcement settings for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Update the compliance announcement setting from this organization.", - "hidden": true - }, - { - "name": "outbound-pstncalls-delay-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "outbound-pstncalls-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "use-org-settings-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling call-recording update-org-compliance-announcement", - "short": "Update the organization Compliance Announcement", - "long": "Update the organization compliance announcement.\n\nThe Compliance Announcement feature interacts with the Call Recording feature, specifically with the playback of the start/stop announcement. When the compliance announcement is played to the PSTN party, and the PSTN party is connected to a party with call recording enabled, then the start/stop announcement is inhibited.\n\nUpdating the organization compliance announcement requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "delay-in-seconds", - "type": "int64", - "default": "0" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-org-compliance-announcement" - }, - { - "name": "inbound-pstncalls-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "org-id", - "type": "string", - "usage": "Update the compliance announcement setting from this organization.", - "hidden": true - }, - { - "name": "outbound-pstncalls-delay-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "outbound-pstncalls-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling call-recording update-org-vendor", - "short": "Set Organization Call Recording Vendor", - "long": "Returns a Job ID that you can use to get the status of the job.\n\nThe Call Recording feature supports multiple third-party call recording providers, or vendors, to capture and manage call recordings. An organization is configured with an overall provider, but locations can be configured to use a different vendor than the overall organization default.\n\nRequires a full administrator auth token with a scope of `spark-admin:telephony_config_write`, `spark-admin:telephony_config_read`, and `spark-admin:people_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "failure-behavior", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-org-vendor" - }, - { - "name": "org-id", - "type": "string", - "usage": "Modify call recording settings from this organization.", - "hidden": true - }, - { - "name": "storage-region", - "type": "string" - }, - { - "name": "vendor-id", - "type": "string" - } - ] - }, - { - "path": "webex calling call-recording update-terms-settings", - "short": "Update Call Recording Terms Of Service Settings", - "long": "Update call recording terms of service settings for the given vendor.\n\nThe Call Recording feature enables authorized agents to record any active call that Webex Contact Center manages.\n\nUpdating call recording terms of service settings requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-terms-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "Update call recording terms of service settings from this organization.", - "hidden": true - }, - { - "name": "terms-of-service-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "vendor-id", - "type": "string", - "usage": "Update call recording terms of service settings for the given vendor.", - "required": true - } - ] - }, - { - "path": "webex calling call-recording update-vendor-location", - "short": "Set Call Recording Vendor for a Location", - "long": "Assign a call recording vendor to a location of an organization. Response will be `204` if the changes can be applied immediatley otherwise `200` with a job ID is returned.\n\nThe Call Recording feature supports multiple third-party call recording providers, or vendors, to capture and manage call recordings. An organization is configured with an overall provider, but locations can be configured to use a different vendor than the overall organization default.\n\nRequires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "failure-behavior", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-vendor-location" - }, - { - "name": "id", - "type": "string" - }, - { - "name": "location-id", - "type": "string", - "usage": "Update the call recording vendor for this location", - "required": true - }, - { - "name": "org-default-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "org-failure-behavior-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "org-id", - "type": "string", - "usage": "Update the call recording vendor for this organization.", - "hidden": true - }, - { - "name": "org-storage-region-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "storage-region", - "type": "string" - } - ] - }, - { - "path": "webex calling call-routing", - "short": "CallRouting commands" - }, - { - "path": "webex calling call-routing create-dial-plan", - "short": "Create a Dial Plan", - "long": "Create a Dial Plan for the organization.\n\nDial plans route calls to on-premises destinations by use of trunks or route groups.\nThey are configured globally for an enterprise and apply to all users, regardless of location.\nA dial plan also specifies the routing choice (trunk or route group) for calls that match any of its dial patterns.\nSpecific dial patterns can be defined as part of your dial plan.\n\nCreating a dial plan requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "dial-patterns", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-dial-plan" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization to which dial plan belongs.", - "hidden": true - }, - { - "name": "route-id", - "type": "string" - }, - { - "name": "route-type", - "type": "string" - } - ] - }, - { - "path": "webex calling call-routing create-route-group", - "short": "Create Route Group for a Organization", - "long": "Creates a Route Group for the organization.\n\nA Route Group is a collection of trunks that allows further scale and redundancy with the connection to the premises. Route groups can include up to 10 trunks from different locations.\n\nCreating a Route Group requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-route-group" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization to which the Route Group belongs.", - "hidden": true - } - ] - }, - { - "path": "webex calling call-routing create-route-list", - "short": "Create a Route List", - "long": "Create a Route List for the organization.\n\nA Route List is a list of numbers that can be reached via a Route Group. It can be used to provide cloud PSTN connectivity to Webex Calling Dedicated Instance.\n\nCreating a Route List requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-route-list" - }, - { - "name": "location-id", - "type": "string" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization to which the Route List belongs.", - "hidden": true - }, - { - "name": "route-group-id", - "type": "string" - } - ] - }, - { - "path": "webex calling call-routing create-translation-pattern", - "short": "Create a Translation Pattern for an Organization", - "long": "Create a translation pattern for a given organization.\n\nA translation pattern lets you manipulate dialed digits before routing a call and applies to outbound calls only. See [this article](https://help.webex.com/en-us/article/nib9o6h/Translation-patterns-for-outbound-calls) for details about the translation pattern syntax.\n\nRequires a full administrator auth token with the `spark-admin:telephony_config_write` scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-translation-pattern" - }, - { - "name": "matching-pattern", - "type": "string" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization containing the translation pattern.", - "hidden": true - }, - { - "name": "replacement-pattern", - "type": "string" - } - ] - }, - { - "path": "webex calling call-routing create-translation-pattern-location", - "short": "Create a Translation Pattern for a Location", - "long": "Create a translation pattern for a given location.\n\nA translation pattern lets you manipulate dialed digits before routing a call and applies to outbound calls only. See [this article](https://help.webex.com/en-us/article/nib9o6h/Translation-patterns-for-outbound-calls) for details about the translation pattern syntax.\n\nRequires a full administrator auth token with the `spark-admin:telephony_config_write` scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-translation-pattern-location" - }, - { - "name": "location-id", - "type": "string", - "usage": "Unique identifier for the location.", - "required": true - }, - { - "name": "matching-pattern", - "type": "string" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "Only admin users of another organization (such as partners) may use this parameter since the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "replacement-pattern", - "type": "string" - } - ] - }, - { - "path": "webex calling call-routing create-trunk", - "short": "Create a Trunk", - "long": "Create a Trunk for the organization.\n\nA Trunk is a connection between Webex Calling and the premises, which terminates on the premises with a local gateway or other supported device.\nThe trunk can be assigned to a Route Group which is a group of trunks that allow Webex Calling to distribute calls over multiple trunks or to provide redundancy.\n\nCreating a trunk requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "address", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "device-type", - "type": "string" - }, - { - "name": "domain", - "type": "string" - }, - { - "name": "dual-identity-support-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-trunk" - }, - { - "name": "location-id", - "type": "string" - }, - { - "name": "max-concurrent-calls", - "type": "int64", - "default": "0" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization to which the trunk belongs.", - "hidden": true - }, - { - "name": "p-charge-info-support-policy", - "type": "string" - }, - { - "name": "password", - "type": "string" - }, - { - "name": "port", - "type": "int64", - "default": "0" - }, - { - "name": "trunk-type", - "type": "string" - } - ] - }, - { - "path": "webex calling call-routing delete-dial-plan", - "short": "Delete a Dial Plan", - "long": "Delete a Dial Plan for the organization.\n\nDial plans route calls to on-premises destinations by use of trunks or route groups.\nThey are configured globally for an enterprise and apply to all users, regardless of location.\nA dial plan also specifies the routing choice (trunk or route group) for calls that match any of its dial patterns.\nSpecific dial patterns can be defined as part of your dial plan.\n\nDeleting a dial plan requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "dial-plan-id", - "type": "string", - "usage": "ID of the dial plan.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-dial-plan" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization to which dial plan belongs.", - "hidden": true - } - ] - }, - { - "path": "webex calling call-routing delete-route-group-org", - "short": "Remove a Route Group from an Organization", - "long": "Remove a Route Group from an Organization based on id.\n\nA Route Group is a collection of trunks that allows further scale and redundancy with the connection to the premises. Route groups can include up to 10 trunks from different locations.\n\nRemoving a Route Group requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-route-group-org" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization of the Route Group.", - "hidden": true - }, - { - "name": "route-group-id", - "type": "string", - "usage": "Route Group for which details are being requested.", - "required": true - } - ] - }, - { - "path": "webex calling call-routing delete-route-list", - "short": "Delete a Route List", - "long": "Delete a route list for a customer.\n\nA Route List is a list of numbers that can be reached via a Route Group. It can be used to provide cloud PSTN connectivity to Webex Calling Dedicated Instance.\n\nDeleting a Route List requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-route-list" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization to which the Route List belongs.", - "hidden": true - }, - { - "name": "route-list-id", - "type": "string", - "usage": "ID of the Route List.", - "required": true - } - ] - }, - { - "path": "webex calling call-routing delete-translation-pattern", - "short": "Delete a specific Translation Pattern", - "long": "Delete a translation pattern for a given organization.\n\nA translation pattern lets you manipulate dialed digits before routing a call and applies to outbound calls only. See [this article](https://help.webex.com/en-us/article/nib9o6h/Translation-patterns-for-outbound-calls) for details about the translation pattern syntax.\n\nRequires a full administrator auth token with the `spark-admin:telephony_config_write` scope.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-translation-pattern" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization containing the translation pattern.", - "hidden": true - }, - { - "name": "translation-id", - "type": "string", - "usage": "Delete a translation pattern with the matching ID.", - "required": true - } - ] - }, - { - "path": "webex calling call-routing delete-translation-pattern-location", - "short": "Delete a specific Translation Pattern for a Location", - "long": "Delete a specific translation pattern for a given location.\n\nA translation pattern lets you manipulate dialed digits before routing a call and applies to outbound calls only. See [this article](https://help.webex.com/en-us/article/nib9o6h/Translation-patterns-for-outbound-calls) for details about the translation pattern syntax.\n\nRequires a full administrator auth token with the `spark-admin:telephony_config_write` scope.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-translation-pattern-location" - }, - { - "name": "location-id", - "type": "string", - "usage": "Unique identifier for the location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Only admin users of another organization (such as partners) may use this parameter since the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "translation-id", - "type": "string", - "usage": "Unique identifier for the translation pattern.", - "required": true - } - ] - }, - { - "path": "webex calling call-routing delete-trunk", - "short": "Delete a Trunk", - "long": "Delete a Trunk for the organization.\n\nA Trunk is a connection between Webex Calling and the premises, which terminates on the premises with a local gateway or other supported device.\nThe trunk can be assigned to a Route Group - a group of trunks that allow Webex Calling to distribute calls over multiple trunks or to provide redundancy.\n\nDeleting a trunk requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-trunk" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization to which trunk belongs.", - "hidden": true - }, - { - "name": "trunk-id", - "type": "string", - "usage": "ID of the trunk.", - "required": true - } - ] - }, - { - "path": "webex calling call-routing get-dial-plan", - "short": "Get a Dial Plan", - "long": "Get a Dial Plan for the organization.\n\nDial plans route calls to on-premises destinations by use of trunks or route groups.\nThey are configured globally for an enterprise and apply to all users, regardless of location.\nA dial plan also specifies the routing choice (trunk or route group) for calls that match any of its dial patterns.\nSpecific dial patterns can be defined as part of your dial plan.\n\nRetrieving a dial plan requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "dial-plan-id", - "type": "string", - "usage": "ID of the dial plan.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-dial-plan" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization to which dial plan belongs.", - "hidden": true - } - ] - }, - { - "path": "webex calling call-routing get-dial-plan-locations-group", - "short": "Read the Dial Plan Locations of a Routing Group", - "long": "List Dial Plan Locations for a specific route group.\n\nDial Plans allow you to route calls to on-premises destinations by use of trunks or route groups. They are configured globally for an enterprise and apply to all users, regardless of location.\nA Dial Plan also specifies the routing choice (trunk or route group) for calls that match any of its dial patterns. Specific dial patterns can be defined as part of your dial plan.\n\nRetrieving this location list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-dial-plan-locations-group" - }, - { - "name": "location-name", - "type": "string", - "usage": "Return the list of locations matching the location name." - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of objects returned to this maximum count." - }, - { - "name": "order", - "type": "string", - "usage": "Order the locations according to designated fields. Available sort orders are `asc`, and `desc`." - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization associated with specific route group.", - "hidden": true - }, - { - "name": "route-group-id", - "type": "string", - "usage": "ID of the requested Route group.", - "required": true - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching objects." - } - ] - }, - { - "path": "webex calling call-routing get-extension-locations-group", - "short": "Read the Call to Extension Locations of a Routing Group", - "long": "List \"Call to\" on-premises Extension Locations for a specific route group. Users within these locations are registered to a PBX which allows you to route unknown extensions (calling number length of 2-6 digits) to the PBX using an existing trunk or route group.\n\nRetrieving this location list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-extension-locations-group" - }, - { - "name": "location-name", - "type": "string", - "usage": "Return the list of locations matching the location name." - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of objects returned to this maximum count." - }, - { - "name": "order", - "type": "string", - "usage": "Order the locations according to designated fields. Available sort orders are `asc`, and `desc`." - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization associated with specific route group.", - "hidden": true - }, - { - "name": "route-group-id", - "type": "string", - "usage": "ID of the requested Route group.", - "required": true - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching objects." - } - ] - }, - { - "path": "webex calling call-routing get-lgw-dial-plan-usage-trunk", - "short": "Get Local Gateway Dial Plan Usage for a Trunk", - "long": "Get Local Gateway Dial Plan Usage for a Trunk.\n\nA trunk is a connection between Webex Calling and the premises, which terminates on the premises with a local gateway or other supported device.\nThe trunk can be assigned to a Route Group which is a group of trunks that allow Webex Calling to distribute calls over multiple trunks or to provide redundancy.\n\nRetrieving this information requires a full administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-lgw-dial-plan-usage-trunk" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of objects returned to this maximum count." - }, - { - "name": "name", - "type": "string", - "usage": "Return the list of trunks matching the local gateway names" - }, - { - "name": "order", - "type": "string", - "usage": "Order the trunks according to the designated fields. Available sort fields are `name`, and `locationName`. Sort order is ascending by default" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization to which the trunk belongs.", - "hidden": true - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching objects." - }, - { - "name": "trunk-id", - "type": "string", - "usage": "ID of the trunk.", - "required": true - } - ] - }, - { - "path": "webex calling call-routing get-lgw-on-premises-extension-usage-trunk", - "short": "Get Local Gateway Call to On-Premises Extension Usage for a Trunk", - "long": "Get local gateway call to on-premises extension usage for a trunk.\n\nA trunk is a connection between Webex Calling and the premises, which terminates on the premises with a local gateway or other supported device.\nThe trunk can be assigned to a Route Group which is a group of trunks that allow Webex Calling to distribute calls over multiple trunks or to provide redundancy.\n\nRetrieving this information requires a full administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-lgw-on-premises-extension-usage-trunk" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of objects returned to this maximum count." - }, - { - "name": "name", - "type": "string", - "usage": "Return the list of trunks matching the local gateway names" - }, - { - "name": "order", - "type": "string", - "usage": "Order the trunks according to the designated fields. Available sort fields are `name`, and `locationName`. Sort order is ascending by default" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization to which the trunk belongs.", - "hidden": true - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching objects." - }, - { - "name": "trunk-id", - "type": "string", - "usage": "ID of the trunk.", - "required": true - } - ] - }, - { - "path": "webex calling call-routing get-lgw-usage-count", - "short": "Get Local Gateway Usage Count", - "long": "Get Local Gateway Usage Count\n\nA trunk is a connection between Webex Calling and the premises, which terminates on the premises with a local gateway or other supported device.\nThe trunk can be assigned to a Route Group which is a group of trunks that allow Webex Calling to distribute calls over multiple trunks or to provide redundancy.\n\nRetrieving this information requires a full administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-lgw-usage-count" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization to which the trunk belongs.", - "hidden": true - }, - { - "name": "trunk-id", - "type": "string", - "usage": "ID of the trunk.", - "required": true - } - ] - }, - { - "path": "webex calling call-routing get-locations-lgw-pstn-connection", - "short": "Get Locations Using the Local Gateway as PSTN Connection Routing", - "long": "Get Locations Using the Local Gateway as PSTN Connection Routing.\n\nA trunk is a connection between Webex Calling and the premises, which terminates on the premises with a local gateway or other supported device.\nThe trunk can be assigned to a Route Group which is a group of trunks that allow Webex Calling to distribute calls over multiple trunks or to provide redundancy.\n\nRetrieving this information requires a full administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-locations-lgw-pstn-connection" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization to which the trunk belongs.", - "hidden": true - }, - { - "name": "trunk-id", - "type": "string", - "usage": "ID of the trunk.", - "required": true - } - ] - }, - { - "path": "webex calling call-routing get-numbers-assigned-route-list", - "short": "Get Numbers assigned to a Route List", - "long": "Get numbers assigned to a Route List\n\nA Route List is a list of numbers that can be reached via a Route Group. It can be used to provide cloud PSTN connectivity to Webex Calling Dedicated Instance.\n\nRetrieving a Route List requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-numbers-assigned-route-list" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of objects returned to this maximum count." - }, - { - "name": "number", - "type": "string", - "usage": "Number assigned to the route list." - }, - { - "name": "order", - "type": "string", - "usage": "Order the Route Lists according to number, ascending or descending." - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization to which the Route List belongs.", - "hidden": true - }, - { - "name": "route-list-id", - "type": "string", - "usage": "ID of the Route List.", - "required": true - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching objects." - } - ] - }, - { - "path": "webex calling call-routing get-pstn-connection-locations-group", - "short": "Read the PSTN Connection Locations of a Routing Group", - "long": "List PSTN Connection Locations for a specific route group. This solution lets you configure users to use Cloud PSTN (CCP or Cisco PSTN) or Premises-based PSTN.\n\nRetrieving this Location list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-pstn-connection-locations-group" - }, - { - "name": "location-name", - "type": "string", - "usage": "Return the list of locations matching the location name." - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of objects returned to this maximum count." - }, - { - "name": "order", - "type": "string", - "usage": "Order the locations according to designated fields. Available sort orders are `asc`, and `desc`." - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization associated with specific route group.", - "hidden": true - }, - { - "name": "route-group-id", - "type": "string", - "usage": "ID of the requested Route group.", - "required": true - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching objects." - } - ] - }, - { - "path": "webex calling call-routing get-route-group", - "short": "Read a Route Group for a Organization", - "long": "Reads a Route Group for the organization based on id.\n\nA Route Group is a collection of trunks that allows further scale and redundancy with the connection to the premises. Route groups can include up to 10 trunks from different locations.\n\nReading a Route Group requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-route-group" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization of the Route Group.", - "hidden": true - }, - { - "name": "route-group-id", - "type": "string", - "usage": "Route Group for which details are being requested.", - "required": true - } - ] - }, - { - "path": "webex calling call-routing get-route-groups-lgw", - "short": "Get Route Groups Using the Local Gateway", - "long": "Get Route Groups Using the Local Gateway.\n\nA trunk is a connection between Webex Calling and the premises, which terminates on the premises with a local gateway or other supported device.\nThe trunk can be assigned to a Route Group which is a group of trunks that allow Webex Calling to distribute calls over multiple trunks or to provide redundancy.\n\nRetrieving this information requires a full administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-route-groups-lgw" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization to which the trunk belongs.", - "hidden": true - }, - { - "name": "trunk-id", - "type": "string", - "usage": "ID of the trunk.", - "required": true - } - ] - }, - { - "path": "webex calling call-routing get-route-list", - "short": "Get a Route List", - "long": "Get a rout list details.\n\nA Route List is a list of numbers that can be reached via a Route Group. It can be used to provide cloud PSTN connectivity to Webex Calling Dedicated Instance.\n\nRetrieving a Route List requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-route-list" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization to which the Route List belongs.", - "hidden": true - }, - { - "name": "route-list-id", - "type": "string", - "usage": "ID of the Route List.", - "required": true - } - ] - }, - { - "path": "webex calling call-routing get-route-lists-group", - "short": "Read the Route Lists of a Routing Group", - "long": "List Route Lists for a specific route group. Route Lists are a list of numbers that can be reached via a Route Group. It can be used to provide cloud PSTN connectivity to Webex Calling Dedicated Instance.\n\nRetrieving this list of Route Lists requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-route-lists-group" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of objects returned to this maximum count." - }, - { - "name": "name", - "type": "string", - "usage": "Return the list of locations matching the location name." - }, - { - "name": "order", - "type": "string", - "usage": "Order the locations according to designated fields. Available sort orders are `asc`, and `desc`." - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization associated with specific route group.", - "hidden": true - }, - { - "name": "route-group-id", - "type": "string", - "usage": "ID of the requested Route group.", - "required": true - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching objects." - } - ] - }, - { - "path": "webex calling call-routing get-translation-pattern", - "short": "Retrieve a specific Translation Pattern for an Organization", - "long": "Retrieve the details of a translation pattern for a given organization.\n\nA translation pattern lets you manipulate dialed digits before routing a call and applies to outbound calls only. See [this article](https://help.webex.com/en-us/article/nib9o6h/Translation-patterns-for-outbound-calls) for details about the translation pattern syntax.\n\nRequires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-translation-pattern" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization containing the translation pattern.", - "hidden": true - }, - { - "name": "translation-id", - "type": "string", - "usage": "Retrieve the translation pattern with the matching ID.", - "required": true - } - ] - }, - { - "path": "webex calling call-routing get-translation-pattern-location", - "short": "Retrieve a specific Translation Pattern for a Location", - "long": "Retrieve a specific translation pattern for a given location.\n\nA translation pattern lets you manipulate dialed digits before routing a call and applies to outbound calls only. See [this article](https://help.webex.com/en-us/article/nib9o6h/Translation-patterns-for-outbound-calls) for details about the translation pattern syntax.\n\nRequires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-translation-pattern-location" - }, - { - "name": "location-id", - "type": "string", - "usage": "Unique identifier for the location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Only admin users of another organization (such as partners) may use this parameter since the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "translation-id", - "type": "string", - "usage": "Unique identifier for the translation pattern.", - "required": true - } - ] - }, - { - "path": "webex calling call-routing get-trunk", - "short": "Get a Trunk", - "long": "Get a Trunk for the organization.\n\nA Trunk is a connection between Webex Calling and the premises, which terminates on the premises with a local gateway or other supported device.\nThe trunk can be assigned to a Route Group - a group of trunks that allow Webex Calling to distribute calls over multiple trunks or to provide redundancy.\n\nRetrieving a trunk requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-trunk" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization to which trunk belongs.", - "hidden": true - }, - { - "name": "trunk-id", - "type": "string", - "usage": "ID of the trunk.", - "required": true - } - ] - }, - { - "path": "webex calling call-routing get-usage-group", - "short": "Read the Usage of a Routing Group", - "long": "List the number of \"Call to\" on-premises Extensions, Dial Plans, PSTN Connections, and Route Lists used by a specific Route Group.\nUsers within Call to Extension locations are registered to a PBX which allows you to route unknown extensions (calling number length of 2-6 digits) to the PBX using an existing Trunk or Route Group.\nPSTN Connections may be a Cisco PSTN, a cloud-connected PSTN, or a premises-based PSTN (local gateway).\nDial Plans allow you to route calls to on-premises extensions via your trunk or route group.\nRoute Lists are a list of numbers that can be reached via a route group and can be used to provide cloud PSTN connectivity to Webex Calling Dedicated Instance.\n\nRetrieving usage information requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-usage-group" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization associated with the specific route group.", - "hidden": true - }, - { - "name": "route-group-id", - "type": "string", - "usage": "ID of the requested Route group.", - "required": true - } - ] - }, - { - "path": "webex calling call-routing list-dial-plans", - "short": "Read the List of Dial Plans", - "long": "List all Dial Plans for the organization.\n\nDial plans route calls to on-premises destinations by use of the trunks or route groups with which the dial plan is associated. Multiple dial patterns can be defined as part of your dial plan. Dial plans are configured globally for an enterprise and apply to all users, regardless of location.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "dial-plan-name", - "type": "string", - "usage": "Return the list of dial plans matching the dial plan name." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-dial-plans" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of objects returned to this maximum count." - }, - { - "name": "order", - "type": "string", - "usage": "Order the dial plans according to the designated fields. Available sort fields: `name`, `routeName`, `routeType`. Sort order is ascending by default" - }, - { - "name": "org-id", - "type": "string", - "usage": "List dial plans for this organization.", - "hidden": true - }, - { - "name": "route-group-name", - "type": "string", - "usage": "Return the list of dial plans matching the Route group name.." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching objects." - }, - { - "name": "trunk-name", - "type": "string", - "usage": "Return the list of dial plans matching the Trunk name.." - } - ] - }, - { - "path": "webex calling call-routing list-groups", - "short": "Read the List of Routing Groups", - "long": "List all Route Groups for an organization. A Route Group is a group of trunks that allows further scale and redundancy with the connection to the premises.\n\nRetrieving this route group list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-groups" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of objects returned to this maximum count." - }, - { - "name": "name", - "type": "string", - "usage": "Return the list of route groups matching the Route group name.." - }, - { - "name": "order", - "type": "string", - "usage": "Order the route groups according to designated fields. Available sort orders are `asc` and `desc`." - }, - { - "name": "org-id", - "type": "string", - "usage": "List route groups for this organization.", - "hidden": true - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching objects." - } - ] - }, - { - "path": "webex calling call-routing list-route-lists", - "short": "Read the List of Route Lists", - "long": "List all Route Lists for the organization.\n\nA Route List is a list of numbers that can be reached via a Route Group. It can be used to provide cloud PSTN connectivity to Webex Calling Dedicated Instance.\n\nRetrieving the Route List requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-route-lists" - }, - { - "name": "location-id", - "type": "string", - "usage": "Return the list of Route Lists matching the location id." - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of objects returned to this maximum count." - }, - { - "name": "name", - "type": "string", - "usage": "Return the list of Route List matching the route list name." - }, - { - "name": "order", - "type": "string", - "usage": "Order the Route List according to the designated fields. Available sort fields are `name`, and `locationId`. Sort order is ascending by default" - }, - { - "name": "org-id", - "type": "string", - "usage": "List all Route List for this organization.", - "hidden": true - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching objects." - } - ] - }, - { - "path": "webex calling call-routing list-translation-patterns", - "short": "Retrieve the list of Translation Patterns", - "long": "Retrieve a list of translation patterns for a given organization.\n\nA translation pattern lets you manipulate dialed digits before routing a call and applies to outbound calls only. See [this article](https://help.webex.com/en-us/article/nib9o6h/Translation-patterns-for-outbound-calls) for details about the translation pattern syntax.\n\nRequires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-translation-patterns" - }, - { - "name": "limit-to-location-id", - "type": "string", - "usage": "When a location ID is passed, then return only the corresponding location level translation patterns." - }, - { - "name": "limit-to-org-level-enabled", - "type": "string", - "usage": "When set to be `true`, then return only the organization-level translation patterns." - }, - { - "name": "matching-pattern", - "type": "string", - "usage": "Only return translation patterns with the matching `matchingPattern`." - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of objects returned to this maximum count." - }, - { - "name": "name", - "type": "string", - "usage": "Only return translation patterns with the matching `name`." - }, - { - "name": "order", - "type": "string", - "usage": "Sort the list of translation patterns according to translation pattern name, ascending or descending." - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization containing the translation patterns.", - "hidden": true - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching objects." - } - ] - }, - { - "path": "webex calling call-routing list-trunk-types", - "short": "Read the List of Trunk Types", - "long": "List all Trunk Types with Device Types for the organization.\n\nA Trunk is a connection between Webex Calling and the premises, which terminates on the premises with a local gateway or other supported device.\nThe trunk can be assigned to a Route Group which is a group of trunks that allow Webex Calling to distribute calls over multiple trunks or to provide redundancy. Trunk Types are Registering or Certificate Based and are configured in Call Manager.\n\nRetrieving trunk types requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-trunk-types" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization to which the trunk types belong.", - "hidden": true - } - ] - }, - { - "path": "webex calling call-routing list-trunks", - "short": "Read the List of Trunks", - "long": "List all Trunks for the organization.\n\nA Trunk is a connection between Webex Calling and the premises, which terminates on the premises with a local gateway or other supported device.\nThe trunk can be assigned to a Route Group - a group of trunks that allow Webex Calling to distribute calls over multiple trunks or to provide redundancy.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-trunks" - }, - { - "name": "location-name", - "type": "string", - "usage": "Return the list of trunks matching the location names." - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of objects returned to this maximum count." - }, - { - "name": "name", - "type": "string", - "usage": "Return the list of trunks matching the local gateway names." - }, - { - "name": "order", - "type": "string", - "usage": "Order the trunks according to the designated fields. Available sort fields: name, locationName. Sort order is ascending by default" - }, - { - "name": "org-id", - "type": "string", - "usage": "List trunks for this organization.", - "hidden": true - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching objects." - }, - { - "name": "trunk-type", - "type": "string", - "usage": "Return the list of trunks matching the trunk type." - } - ] - }, - { - "path": "webex calling call-routing test", - "short": "Test Call Routing", - "long": "Validates that an incoming call can be routed.\n\nDial plans route calls to on-premises destinations by use of trunks or route groups.\nThey are configured globally for an enterprise and apply to all users, regardless of location.\nA dial plan also specifies the routing choice (trunk or route group) for calls that match any of its dial patterns.\nSpecific dial patterns can be defined as part of your dial plan.\n\nTest call routing requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "destination", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for test" - }, - { - "name": "include-applied-services", - "type": "bool", - "default": "false" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization in which we are validating a call routing.", - "hidden": true - }, - { - "name": "originator-id", - "type": "string" - }, - { - "name": "originator-number", - "type": "string" - }, - { - "name": "originator-type", - "type": "string" - } - ] - }, - { - "path": "webex calling call-routing update-dial-patterns", - "short": "Modify Dial Patterns", - "long": "Modify dial patterns for the Dial Plan.\n\nDial plans route calls to on-premises destinations by use of trunks or route groups.\nThey are configured globally for an enterprise and apply to all users, regardless of location.\nA dial plan also specifies the routing choice (trunk or route group) for calls that match any of its dial patterns.\nSpecific dial patterns can be defined as part of your dial plan.\n\nModifying a dial pattern requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "dial-plan-id", - "type": "string", - "usage": "ID of the dial plan being modified.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-dial-patterns" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization to which dial plan belongs.", - "hidden": true - } - ] - }, - { - "path": "webex calling call-routing update-dial-plan", - "short": "Modify a Dial Plan", - "long": "Modify a Dial Plan for the organization.\n\nDial plans route calls to on-premises destinations by use of trunks or route groups.\nThey are configured globally for an enterprise and apply to all users, regardless of location.\nA dial plan also specifies the routing choice (trunk or route group) for calls that match any of its dial patterns.\nSpecific dial patterns can be defined as part of your dial plan.\n\nModifying a dial plan requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "dial-plan-id", - "type": "string", - "usage": "ID of the dial plan being modified.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-dial-plan" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization to which dial plan belongs.", - "hidden": true - }, - { - "name": "route-id", - "type": "string" - }, - { - "name": "route-type", - "type": "string" - } - ] - }, - { - "path": "webex calling call-routing update-numbers-route-list", - "short": "Modify Numbers for Route List", - "long": "Modify numbers for a specific Route List of a Customer.\n\nA Route List is a list of numbers that can be reached via a Route Group. It can be used to provide cloud PSTN connectivity to Webex Calling Dedicated Instance.\n\nRetrieving a Route List requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-numbers-route-list" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization to which the Route List belongs.", - "hidden": true - }, - { - "name": "route-list-id", - "type": "string", - "usage": "ID of the Route List.", - "required": true - } - ] - }, - { - "path": "webex calling call-routing update-route-group", - "short": "Modify a Route Group for a Organization", - "long": "Modifies an existing Route Group for an organization based on id.\n\nA Route Group is a collection of trunks that allows further scale and redundancy with the connection to the premises. Route groups can include up to 10 trunks from different locations.\n\nModifying a Route Group requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-route-group" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization of the Route Group.", - "hidden": true - }, - { - "name": "route-group-id", - "type": "string", - "usage": "Route Group for which details are being requested.", - "required": true - } - ] - }, - { - "path": "webex calling call-routing update-route-list", - "short": "Modify a Route List", - "long": "Modify the details for a Route List.\n\nA Route List is a list of numbers that can be reached via a Route Group. It can be used to provide cloud PSTN connectivity to Webex Calling Dedicated Instance.\n\nRetrieving a Route List requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-route-list" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization to which the Route List belongs.", - "hidden": true - }, - { - "name": "route-group-id", - "type": "string" - }, - { - "name": "route-list-id", - "type": "string", - "usage": "ID of the Route List.", - "required": true - } - ] - }, - { - "path": "webex calling call-routing update-translation-pattern", - "short": "Modify a specific Translation Pattern for an Organization", - "long": "Modify a translation pattern for a given organization.\n\nA translation pattern lets you manipulate dialed digits before routing a call and applies to outbound calls only. See [this article](https://help.webex.com/en-us/article/nib9o6h/Translation-patterns-for-outbound-calls) for details about the translation pattern syntax.\n\nRequires a full administrator auth token with the `spark-admin:telephony_config_write` scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-translation-pattern" - }, - { - "name": "matching-pattern", - "type": "string" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization containing the translation pattern.", - "hidden": true - }, - { - "name": "replacement-pattern", - "type": "string" - }, - { - "name": "translation-id", - "type": "string", - "usage": "Modify translation pattern with the matching ID.", - "required": true - } - ] - }, - { - "path": "webex calling call-routing update-translation-pattern-location", - "short": "Modify a specific Translation Pattern for a Location", - "long": "Modify a specific translation pattern for a given location.\n\nA translation pattern lets you manipulate dialed digits before routing a call and applies to outbound calls only. See [this article](https://help.webex.com/en-us/article/nib9o6h/Translation-patterns-for-outbound-calls) for details about the translation pattern syntax.\n\nRequires a full administrator auth token with the `spark-admin:telephony_config_write` scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-translation-pattern-location" - }, - { - "name": "location-id", - "type": "string", - "usage": "Unique identifier for the location.", - "required": true - }, - { - "name": "matching-pattern", - "type": "string" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "Only admin users of another organization (such as partners) may use this parameter since the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "replacement-pattern", - "type": "string" - }, - { - "name": "translation-id", - "type": "string", - "usage": "Unique identifier for the translation pattern.", - "required": true - } - ] - }, - { - "path": "webex calling call-routing update-trunk", - "short": "Modify a Trunk", - "long": "Modify a Trunk for the organization.\n\nA Trunk is a connection between Webex Calling and the premises, which terminates on the premises with a local gateway or other supported device.\nThe trunk can be assigned to a Route Group - a group of trunks that allow Webex Calling to distribute calls over multiple trunks or to provide redundancy.\n\nModifying a trunk requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "dual-identity-support-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-trunk" - }, - { - "name": "max-concurrent-calls", - "type": "int64", - "default": "0" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization to which trunk belongs.", - "hidden": true - }, - { - "name": "p-charge-info-support-policy", - "type": "string" - }, - { - "name": "password", - "type": "string" - }, - { - "name": "trunk-id", - "type": "string", - "usage": "ID of the trunk being modified.", - "required": true - } - ] - }, - { - "path": "webex calling call-routing validate-dial-pattern", - "short": "Validate a Dial Pattern", - "long": "Validate a Dial Pattern.\n\nDial plans route calls to on-premises destinations by use of trunks or route groups.\nThey are configured globally for an enterprise and apply to all users, regardless of location.\nA dial plan also specifies the routing choice (trunk or route group) for calls that match any of its dial patterns.\nSpecific dial patterns can be defined as part of your dial plan.\n\nValidating a dial pattern requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "dial-patterns", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for validate-dial-pattern" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization to which dial plan belongs.", - "hidden": true - } - ] - }, - { - "path": "webex calling call-routing validate-lgw-fqdn-domain-trunk", - "short": "Validate Local Gateway FQDN and Domain for a Trunk", - "long": "Validate Local Gateway FQDN and Domain for the organization trunks.\n\nA Trunk is a connection between Webex Calling and the premises, which terminates on the premises with a local gateway or other supported device.\nThe trunk can be assigned to a Route Group - a group of trunks that allow Webex Calling to distribute calls over multiple trunks or to provide redundancy.\n\nValidating Local Gateway FQDN and Domain requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "address", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "domain", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for validate-lgw-fqdn-domain-trunk" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization to which trunk types belongs.", - "hidden": true - }, - { - "name": "port", - "type": "int64", - "default": "0" - } - ] - }, - { - "path": "webex calling call-settings-for-me", - "short": "CallSettingsForMe commands" - }, - { - "path": "webex calling call-settings-for-me create-event-user-schedule", - "short": "Add an event for a User Schedule", - "long": "Create a new Event for for the authenticated user's specified schedule.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-event-user-schedule" - }, - { - "name": "schedule-id", - "type": "string", - "usage": "add an event for the specified schedule ID.", - "required": true - }, - { - "name": "schedule-type", - "type": "string", - "usage": "Type of the schedule. * `businessHours` - Business hours schedule type. * `holidays` - Holidays schedule type. ", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me create-event-user-schedule-2", - "short": "Add an event for a User Schedule", - "long": "Create a new Event for for the authenticated user's specified schedule.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-event-user-schedule-2" - }, - { - "name": "schedule-id", - "type": "string", - "usage": "add an event for the specified schedule ID.", - "required": true - }, - { - "name": "schedule-type", - "type": "string", - "usage": "Type of the schedule. * `businessHours` - Business hours schedule type. * `holidays` - Holidays schedule type. ", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me create-my-simultaneous-ring", - "short": "Create My Simultaneous Ring Criteria", - "long": "Create simultaneous ring criteria settings for the authenticated user.\n\nThe Simultaneous Ring feature allows you to configure your office phone and other phones of your choice to ring simultaneously. Simultaneous Ring Criteria (Schedules) can also be set up to ring these phones during certain times of the day or days of the week.\n\nCreating criteria requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "anonymous-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calls-from", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-my-simultaneous-ring" - }, - { - "name": "phone-numbers", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "ring-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "schedule-level", - "type": "string" - }, - { - "name": "schedule-name", - "type": "string" - }, - { - "name": "schedule-type", - "type": "string" - }, - { - "name": "unavailable-callers-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling call-settings-for-me create-notify", - "short": "Add a Call Notify Criteria", - "long": "Create a Call Notify Criteria for the authenticated user.\n\nCall Notify allows you to set up a unique ringtone based on predefined criteria. This is helpful, when the user wants to be quickly notified that a specific phone number is calling.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "anonymous-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calls-from", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-notify" - }, - { - "name": "notification-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "phone-numbers", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "schedule-level", - "type": "string" - }, - { - "name": "schedule-name", - "type": "string" - }, - { - "name": "schedule-type", - "type": "string" - }, - { - "name": "unavailable-callers-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling call-settings-for-me create-notify-2", - "short": "Add a Call Notify Criteria", - "long": "Create a Call Notify Criteria for the authenticated user.\n\nCall Notify allows you to set up a unique ringtone based on predefined criteria. This is helpful, when the user wants to be quickly notified that a specific phone number is calling.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "anonymous-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calls-from", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-notify-2" - }, - { - "name": "notification-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "phone-numbers", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "schedule-level", - "type": "string" - }, - { - "name": "schedule-name", - "type": "string" - }, - { - "name": "schedule-type", - "type": "string" - }, - { - "name": "unavailable-callers-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling call-settings-for-me create-phone-number-user-block-list", - "short": "Add a phone number to user's Call Block List", - "long": "Add a phone number to the call block list for the authenticated user.\n\nCall block settings allow you to get the User Call Block Number List.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-phone-number-user-block-list" - }, - { - "name": "phone-number", - "type": "string" - } - ] - }, - { - "path": "webex calling call-settings-for-me create-phone-number-user-single-number-reach", - "short": "Add phone number as User's Single Number Reach", - "long": "Add a phone number as a single number reach for the authenticated user.\n\nThe \"Single Number Reach\" feature in Webex allows users to access their business phone capabilities from any device, making it easy to make and receive calls as if at their office. This is especially useful for remote or mobile workers needing flexibility.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "answer-confirmation-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "do-not-forward-calls-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-phone-number-user-single-number-reach" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "phone-number", - "type": "string" - } - ] - }, - { - "path": "webex calling call-settings-for-me create-priority-alert", - "short": "Add a Priority Alert Criteria", - "long": "Create a Priority Alert Criteria for the authenticated user.\n\nPriority alert allows you to set up a unique ringtone based on predefined criteria. This is helpful, when the user wants to be quickly notified that a specific phone number is calling.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "anonymous-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calls-from", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-priority-alert" - }, - { - "name": "notification-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "phone-numbers", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "schedule-level", - "type": "string" - }, - { - "name": "schedule-name", - "type": "string" - }, - { - "name": "schedule-type", - "type": "string" - }, - { - "name": "unavailable-callers-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling call-settings-for-me create-priority-alert-2", - "short": "Add a Priority Alert Criteria", - "long": "Create a Priority Alert Criteria for the authenticated user.\n\nPriority alert allows you to set up a unique ringtone based on predefined criteria. This is helpful, when the user wants to be quickly notified that a specific phone number is calling.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "anonymous-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calls-from", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-priority-alert-2" - }, - { - "name": "notification-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "phone-numbers", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "schedule-level", - "type": "string" - }, - { - "name": "schedule-name", - "type": "string" - }, - { - "name": "schedule-type", - "type": "string" - }, - { - "name": "unavailable-callers-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling call-settings-for-me create-selective-forward", - "short": "Add a Selective Call Forwarding Criteria", - "long": "Create a Selective Call Forwarding Criteria for the authenticated user.\n\nSelective Call Forward allows you to define rules that automatically forward incoming calls based on specific criteria, such as the caller’s phone number, caller identity, and the time and day the call is received.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "anonymous-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calls-from", - "type": "string" - }, - { - "name": "destination-voicemail-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "forward-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "forward-to-phone-number", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-selective-forward" - }, - { - "name": "phone-numbers", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "schedule-level", - "type": "string" - }, - { - "name": "schedule-name", - "type": "string" - }, - { - "name": "schedule-type", - "type": "string" - }, - { - "name": "unavailable-callers-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling call-settings-for-me create-selective-forward-2", - "short": "Add a Selective Call Forwarding Criteria", - "long": "Create a Selective Call Forwarding Criteria for the authenticated user.\n\nSelective Call Forward allows you to define rules that automatically forward incoming calls based on specific criteria, such as the caller’s phone number, caller identity, and the time and day the call is received.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "anonymous-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calls-from", - "type": "string" - }, - { - "name": "destination-voicemail-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "forward-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "forward-to-phone-number", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-selective-forward-2" - }, - { - "name": "phone-numbers", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "schedule-level", - "type": "string" - }, - { - "name": "schedule-name", - "type": "string" - }, - { - "name": "schedule-type", - "type": "string" - }, - { - "name": "unavailable-callers-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling call-settings-for-me create-user-executive-filtering", - "short": "Add User Executive Call Filtering Criteria", - "long": "Create a new executive call filtering criteria for the authenticated user.\n\nExecutive Call Filtering Criteria in Webex allows you to define detailed filter rules for incoming calls. This API creates a new filter rule with the specified configuration, including schedule, phone numbers, and call routing preferences.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-user-executive-filtering" - } - ] - }, - { - "path": "webex calling call-settings-for-me create-user-schedule", - "short": "Add a User level Schedule for Call Settings", - "long": "Create a new Schedule for the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-user-schedule" - } - ] - }, - { - "path": "webex calling call-settings-for-me create-user-schedule-2", - "short": "Add a User level Schedule for Call Settings", - "long": "Create a new Schedule for the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-user-schedule-2" - } - ] - }, - { - "path": "webex calling call-settings-for-me create-user-selective-accept", - "short": "Add User Selective Call Accept Criteria", - "long": "Create a new Selective Call Accept Criteria for the authenticated user.\n\nSelective Call Accept allows you to create customized rules to accept specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "accept-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "anonymous-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calls-from", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-user-selective-accept" - }, - { - "name": "phone-numbers", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "schedule-level", - "type": "string" - }, - { - "name": "schedule-name", - "type": "string" - }, - { - "name": "schedule-type", - "type": "string" - }, - { - "name": "unavailable-callers-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling call-settings-for-me create-user-selective-accept-2", - "short": "Add User Selective Call Accept Criteria", - "long": "Create a new Selective Call Accept Criteria for the authenticated user.\n\nSelective Call Accept allows you to create customized rules to accept specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "accept-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "anonymous-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calls-from", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-user-selective-accept-2" - }, - { - "name": "phone-numbers", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "schedule-level", - "type": "string" - }, - { - "name": "schedule-name", - "type": "string" - }, - { - "name": "schedule-type", - "type": "string" - }, - { - "name": "unavailable-callers-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling call-settings-for-me create-user-selective-reject", - "short": "Add User Selective Call Reject Criteria", - "long": "Create a new Selective Call Reject Criteria for the authenticated user.\n\nSelective Call Reject allows you to create customized rules to reject specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "anonymous-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calls-from", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-user-selective-reject" - }, - { - "name": "phone-numbers", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "reject-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "schedule-level", - "type": "string" - }, - { - "name": "schedule-name", - "type": "string" - }, - { - "name": "schedule-type", - "type": "string" - }, - { - "name": "unavailable-callers-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling call-settings-for-me create-user-selective-reject-2", - "short": "Add User Selective Call Reject Criteria", - "long": "Create a new Selective Call Reject Criteria for the authenticated user.\n\nSelective Call Reject allows you to create customized rules to reject specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "anonymous-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calls-from", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-user-selective-reject-2" - }, - { - "name": "phone-numbers", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "reject-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "schedule-level", - "type": "string" - }, - { - "name": "schedule-name", - "type": "string" - }, - { - "name": "schedule-type", - "type": "string" - }, - { - "name": "unavailable-callers-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling call-settings-for-me create-user-sequential-ring", - "short": "Add User Sequential Ring Criteria", - "long": "Create a new Sequential Ring Criteria for the authenticated user.\n\nSequential Ring criteria defines rules for when sequential ring should activate based on the caller and schedule.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "anonymous-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calls-from", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-user-sequential-ring" - }, - { - "name": "phone-numbers", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "ring-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "schedule-level", - "type": "string" - }, - { - "name": "schedule-name", - "type": "string" - }, - { - "name": "schedule-type", - "type": "string" - }, - { - "name": "unavailable-callers-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling call-settings-for-me create-user-sequential-ring-2", - "short": "Add User Sequential Ring Criteria", - "long": "Create a new Sequential Ring Criteria for the authenticated user.\n\nSequential Ring criteria defines rules for when sequential ring should activate based on the caller and schedule.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "anonymous-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calls-from", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-user-sequential-ring-2" - }, - { - "name": "phone-numbers", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "ring-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "schedule-level", - "type": "string" - }, - { - "name": "schedule-name", - "type": "string" - }, - { - "name": "schedule-type", - "type": "string" - }, - { - "name": "unavailable-callers-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling call-settings-for-me delete-my-simultaneous-ring", - "short": "Delete My Simultaneous Ring Criteria", - "long": "Delete simultaneous ring criteria settings for the authenticated user.\n\nThe Simultaneous Ring feature allows you to configure your office phone and other phones of your choice to ring simultaneously. Simultaneous Ring Criteria (Schedules) can also be set up to ring these phones during certain times of the day or days of the week.\n\nDeleting criteria requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-my-simultaneous-ring" - }, - { - "name": "id", - "type": "string", - "usage": "Unique identifier for the criteria.", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me delete-notify", - "short": "Delete a Call Notify Criteria", - "long": "Delete a Call Notify criteria for the authenticated user.\n\nCall Notify allows you to set up a unique ringtone based on predefined criteria. This API removes a specific criteria rule by its unique identifier.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-notify" - }, - { - "name": "id", - "type": "string", - "usage": "The `id` parameter specifies the unique identifier for the call notify criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me delete-notify-2", - "short": "Delete a Call Notify Criteria", - "long": "Delete a Call Notify criteria for the authenticated user.\n\nCall Notify allows you to set up a unique ringtone based on predefined criteria. This API removes a specific criteria rule by its unique identifier.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-notify-2" - }, - { - "name": "id", - "type": "string", - "usage": "The `id` parameter specifies the unique identifier for the call notify criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me delete-priority-alert", - "short": "Delete a Priority Alert Criteria", - "long": "Delete a Priority Alert criteria for the authenticated user.\n\nPriority alert allows you to set up a unique ringtone based on predefined criteria. This API removes a specific criteria rule by its unique identifier.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-priority-alert" - }, - { - "name": "id", - "type": "string", - "usage": "The `id` parameter specifies the unique identifier for the priority alert criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me delete-priority-alert-2", - "short": "Delete a Priority Alert Criteria", - "long": "Delete a Priority Alert criteria for the authenticated user.\n\nPriority alert allows you to set up a unique ringtone based on predefined criteria. This API removes a specific criteria rule by its unique identifier.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-priority-alert-2" - }, - { - "name": "id", - "type": "string", - "usage": "The `id` parameter specifies the unique identifier for the priority alert criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me delete-selective-accept", - "short": "Delete a Selective Call Accept Criteria", - "long": "Delete a Selective Call Accept Criteria for the authenticated user.\n\n\n\nSelective Call Accept allows you to create customized rules to accept specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-selective-accept" - }, - { - "name": "id", - "type": "string", - "usage": "The `id` parameter specifies the unique identifier for the selective call accept criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me delete-selective-accept-2", - "short": "Delete a Selective Call Accept Criteria", - "long": "Delete a Selective Call Accept Criteria for the authenticated user.\n\n\n\nSelective Call Accept allows you to create customized rules to accept specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-selective-accept-2" - }, - { - "name": "id", - "type": "string", - "usage": "The `id` parameter specifies the unique identifier for the selective call accept criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me delete-selective-forward", - "short": "Delete a Selective Call Forwarding Criteria", - "long": "Delete a Selective Call Forwarding Criteria for the authenticated user.\n\nSelective call forwarding allows you to define rules that automatically forward incoming calls based on specific criteria. This API removes a specific criteria rule by its unique identifier.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-selective-forward" - }, - { - "name": "id", - "type": "string", - "usage": "The `id` parameter specifies the unique identifier for the selective call forwarding criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me delete-selective-forward-2", - "short": "Delete a Selective Call Forwarding Criteria", - "long": "Delete a Selective Call Forwarding Criteria for the authenticated user.\n\nSelective call forwarding allows you to define rules that automatically forward incoming calls based on specific criteria. This API removes a specific criteria rule by its unique identifier.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-selective-forward-2" - }, - { - "name": "id", - "type": "string", - "usage": "The `id` parameter specifies the unique identifier for the selective call forwarding criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me delete-selective-reject", - "short": "Delete a Selective Call Reject Criteria", - "long": "Delete a Selective Call Reject Criteria for the authenticated user.\n\n\n\nSelective Call Reject allows you to create customized rules to reject specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-selective-reject" - }, - { - "name": "id", - "type": "string", - "usage": "The `id` parameter specifies the unique identifier for the selective call reject criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me delete-selective-reject-2", - "short": "Delete a Selective Call Reject Criteria", - "long": "Delete a Selective Call Reject Criteria for the authenticated user.\n\n\n\nSelective Call Reject allows you to create customized rules to reject specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-selective-reject-2" - }, - { - "name": "id", - "type": "string", - "usage": "The `id` parameter specifies the unique identifier for the selective call reject criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me delete-sequential-ring", - "short": "Delete Sequential Ring Criteria", - "long": "Delete a Sequential Ring Criteria for the authenticated user.\n\nSequential Ring criteria defines rules for when sequential ring should activate based on the caller and schedule.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-sequential-ring" - }, - { - "name": "id", - "type": "string", - "usage": "The `id` parameter specifies the unique identifier for the sequential ring criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me delete-sequential-ring-2", - "short": "Delete Sequential Ring Criteria", - "long": "Delete a Sequential Ring Criteria for the authenticated user.\n\nSequential Ring criteria defines rules for when sequential ring should activate based on the caller and schedule.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-sequential-ring-2" - }, - { - "name": "id", - "type": "string", - "usage": "The `id` parameter specifies the unique identifier for the sequential ring criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me delete-user-block-number", - "short": "Delete User Call Block Number", - "long": "Delete call block number settings associated with the authenticated user.\n\nCall block settings allow you to delete a number from the User Call Block Number List.\n\nThis API requires a user auth token with a scope of `spark-admin:people_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-user-block-number" - }, - { - "name": "phone-number-id", - "type": "string", - "usage": "Unique identifier of the phone number.", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me delete-user-executive-filtering", - "short": "Delete User Executive Call Filtering Criteria", - "long": "Delete a specific executive call filtering criteria for the authenticated user.\n\nExecutive Call Filtering Criteria in Webex allows you to manage detailed filter rules for incoming calls. This API removes a specific filter rule by its unique identifier.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-user-executive-filtering" - }, - { - "name": "id", - "type": "string", - "usage": "The `id` parameter specifies the unique identifier for the executive call filtering criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL2RHVnpkRjltYVd4MFpYST0`.", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me delete-user-schedule", - "short": "Delete a User Schedule", - "long": "Delete a specific schedule for the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-user-schedule" - }, - { - "name": "schedule-id", - "type": "string", - "usage": "Delete the schedule with the matching ID.", - "required": true - }, - { - "name": "schedule-type", - "type": "string", - "usage": "Type of the schedule. * `businessHours` - Business hours schedule type. * `holidays` - Holidays schedule type. ", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me delete-user-schedule-2", - "short": "Delete a User Schedule", - "long": "Delete a specific schedule for the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-user-schedule-2" - }, - { - "name": "schedule-id", - "type": "string", - "usage": "Delete the schedule with the matching ID.", - "required": true - }, - { - "name": "schedule-type", - "type": "string", - "usage": "Type of the schedule. * `businessHours` - Business hours schedule type. * `holidays` - Holidays schedule type. ", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me delete-user-schedule-event", - "short": "Delete User a Schedule Event", - "long": "Delete a specific schedule event for the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "event-id", - "type": "string", - "usage": "Delete the event with the matching ID.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-user-schedule-event" - }, - { - "name": "schedule-id", - "type": "string", - "usage": "Delete an event for the specified schedule ID.", - "required": true - }, - { - "name": "schedule-type", - "type": "string", - "usage": "Type of the schedule. * `businessHours` - Business hours schedule type. * `holidays` - Holidays schedule type. ", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me delete-user-schedule-event-2", - "short": "Delete User a Schedule Event", - "long": "Delete a specific schedule event for the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "event-id", - "type": "string", - "usage": "Delete the event with the matching ID.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-user-schedule-event-2" - }, - { - "name": "schedule-id", - "type": "string", - "usage": "Delete an event for the specified schedule ID.", - "required": true - }, - { - "name": "schedule-type", - "type": "string", - "usage": "Type of the schedule. * `businessHours` - Business hours schedule type. * `holidays` - Holidays schedule type. ", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me delete-user-single-number-reach-contact", - "short": "Delete User's Single Number Reach Contact Settings", - "long": "Delete contact settings associated with the authenticated user.\n\nThe \"Single Number Reach\" feature in Webex allows users to access their business phone capabilities from any device, making it easy to make and receive calls as if at their office. This is especially useful for remote or mobile workers needing flexibility.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-user-single-number-reach-contact" - }, - { - "name": "phone-number-id", - "type": "string", - "usage": "Unique identifier of the phone number.", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me get-announcement-languages-authenticated-user", - "short": "Get announcement languages for the authenticated user", - "long": "Retrieve the list of available announcement languages for the authenticated user's telephony configuration.\n\nAnnouncement languages determine the language used for system prompts and announcements during calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-announcement-languages-authenticated-user" - } - ] - }, - { - "path": "webex calling call-settings-for-me get-anonymous-rejection-user", - "short": "Get Anonymous Call Rejection Settings for User", - "long": "Get Anonymous Call Rejection Settings for the authenticated user.\n\nAnonymous Call Rejection allows you to reject calls from anonymous callers.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-anonymous-rejection-user" - } - ] - }, - { - "path": "webex calling call-settings-for-me get-anonymous-rejection-user-2", - "short": "Get Anonymous Call Rejection Settings for User", - "long": "Get Anonymous Call Rejection Settings for the authenticated user.\n\nAnonymous Call Rejection allows you to reject calls from anonymous callers.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-anonymous-rejection-user-2" - } - ] - }, - { - "path": "webex calling call-settings-for-me get-available-hoteling-hosts", - "short": "Get Available Hoteling Hosts", - "long": "Retrieve a list of available hoteling hosts that a person can associate with as a guest. Returns hosts that have hoteling enabled on their devices and are available for guest associations. The list can be filtered by name or phone number and supports pagination.\n\nHoteling is a feature of Webex Calling that enables flexible workspace solutions by allowing users to log into shared devices.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-available-hoteling-hosts" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the maximum number of hosts in the response. Default is 100." - }, - { - "name": "name", - "type": "string", - "usage": "Filter hosts by name (first name or last name). Partial match is supported." - }, - { - "name": "phone-number", - "type": "string", - "usage": "Filter hosts by phone number. Partial match is supported." - }, - { - "name": "start", - "type": "string", - "usage": "Start index for pagination. Default is 0." - } - ] - }, - { - "path": "webex calling call-settings-for-me get-available-numbers-user-location", - "short": "Get Available Numbers for User's Location", - "long": "Get Available Numbers for User's Location.\n\nFetch all the numbers available in User's location.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "extension", - "type": "string", - "usage": "List numbers whose extension contains this string." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-available-numbers-user-location" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the maximum number of numbers in the response." - }, - { - "name": "name", - "type": "string", - "usage": "List numbers whose owner name contains this string." - }, - { - "name": "order", - "type": "string", - "usage": "Sort the list of numbers based on `lastName`, `dn`, `extension` either asc or desc." - }, - { - "name": "phone-number", - "type": "string", - "usage": "List numbers whose phoneNumber contains this string." - }, - { - "name": "start", - "type": "string", - "usage": "Specify the offset from the first result that you want to fetch." - } - ] - }, - { - "path": "webex calling call-settings-for-me get-available-numbers-user-location-2", - "short": "Get Available Numbers for User's Location", - "long": "Get Available Numbers for User's Location.\n\nFetch all the numbers available in User's location.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "extension", - "type": "string", - "usage": "List numbers whose extension contains this string." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-available-numbers-user-location-2" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the maximum number of numbers in the response." - }, - { - "name": "name", - "type": "string", - "usage": "List numbers whose owner name contains this string." - }, - { - "name": "order", - "type": "string", - "usage": "Sort the list of numbers based on `lastName`, `dn`, `extension` either asc or desc." - }, - { - "name": "phone-number", - "type": "string", - "usage": "List numbers whose phoneNumber contains this string." - }, - { - "name": "start", - "type": "string", - "usage": "Specify the offset from the first result that you want to fetch." - } - ] - }, - { - "path": "webex calling call-settings-for-me get-barge-in", - "short": "Get Barge-In Settings", - "long": "Retrieve Barge-In settings of the user.\n\nThe Barge-In feature enables you to use a Feature Access Code (FAC) to answer a call that was directed to another subscriber, or barge-in on the call if it was already answered. Barge-In can be used across locations.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-barge-in" - } - ] - }, - { - "path": "webex calling call-settings-for-me get-country-specific-telephony-configuration-requirements", - "short": "Get country-specific telephony configuration requirements", - "long": "Retrieve country-specific telephony configuration requirements for the authenticated user.\n\nWebex Calling supports multiple regions and time zones to validate and present the information using the local date and time, as well as localized dialing rules.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "country-code", - "type": "string", - "usage": "The ISO country code for which configuration requirements are requested.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-country-specific-telephony-configuration-requirements" - } - ] - }, - { - "path": "webex calling call-settings-for-me get-do-not-disturb-user", - "short": "Get Do Not Disturb Settings for User", - "long": "Get Do Not Disturb settings for the authenticated user.\n\nDo Not Disturb (DND) enables users to block or silence incoming calls on their phone. When activated, the phone either stops ringing or rejects calls depending on the configured option, but users can still see call information and answer calls if desired.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-do-not-disturb-user" - } - ] - }, - { - "path": "webex calling call-settings-for-me get-hoteling-guest", - "short": "Get Hoteling Guest Settings", - "long": "Retrieve hoteling guest settings for a person. Hoteling allows a person to temporarily use a device as a guest, associating their extension and configuration with that device for a limited time. This API returns the current hoteling guest configuration including any active host association details.\n\nHoteling is a feature of Webex Calling that enables flexible workspace solutions by allowing users to log into shared devices.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-hoteling-guest" - } - ] - }, - { - "path": "webex calling call-settings-for-me get-my-access-codes", - "short": "Get My Feature Access Codes", - "long": "Retrieve all Feature Access Codes configured for services that are assigned to the authenticated user. For each feature access code, the name and code are returned. If an alternate code is defined, it is also returned.\n\nFeature access codes (FACs), also known as star codes, give users access to advanced calling features.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-my-access-codes" - } - ] - }, - { - "path": "webex calling call-settings-for-me get-my-access-codes-secondary-owner", - "short": "Get My Feature Access Codes For Secondary Line Owner", - "long": "Retrieve all Feature Access Codes configured for services that are assigned for the secondary line owner. For each feature access code, the name and code are returned. If an alternate code is defined, it is also returned.\n\nFeature access codes (FACs), also known as star codes, give users access to advanced calling features.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-my-access-codes-secondary-owner" - }, - { - "name": "lineowner-id", - "type": "string", - "usage": "Unique identifier for the secondary line owner (applicable only for Virtual Lines).", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me get-my-available-caller-id-list", - "short": "Get My Available Caller ID List", - "long": "Get details of available caller IDs of the authenticated user.\n\nCaller ID settings control how a person's information is displayed when making outgoing calls.\nThe available caller ID list shows the caller IDs that the user can choose from.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-my-available-caller-id-list" - } - ] - }, - { - "path": "webex calling call-settings-for-me get-my-block", - "short": "Get My Call Block Settings", - "long": "Get details of call block settings associated with the authenticated user.\n\nCall block settings allow you to get the User Call Block Number List.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-my-block" - } - ] - }, - { - "path": "webex calling call-settings-for-me get-my-block-state-number", - "short": "Get My Call Block State For Specific Number", - "long": "Get call block state details for a specific number associated with the authenticated user.\n\nCall block settings allow you to get the User Call Block Number List.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-my-block-state-number" - }, - { - "name": "phone-number-id", - "type": "string", - "usage": "Unique identifier of the phone number.", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me get-my-caller-id", - "short": "Get My Caller ID Settings", - "long": "Get Caller ID Settings for the authenticated user.\n\nCalling Line ID Delivery Blocking in Webex prevents your name and phone number from being shown to people you call.\nConnected Line Identification Restriction allows you to block your name and phone number from being shown when receiving a call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-my-caller-id" - } - ] - }, - { - "path": "webex calling call-settings-for-me get-my-calling-services", - "short": "Get My Calling Services List", - "long": "Retrieves the list of enabled calling services for the authenticated user.\n\nThese services are designed to improve call handling and ensure that users can manage their communications effectively. They are commonly found in both personal and business telephony systems.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-my-calling-services" - } - ] - }, - { - "path": "webex calling call-settings-for-me get-my-captions", - "short": "Get my call captions settings", - "long": "Retrieve the effective call captions settings of the authenticated user.\n\n**NOTE**: The call captions feature is not supported for Webex Calling Standard users or users assigned to locations in India.\n\nThe call caption feature allows the customer to enable and manage closed captions and transcript functionality (rolling caption panel) in Webex Calling, without requiring the user to escalate the call to a meeting.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-my-captions" - } - ] - }, - { - "path": "webex calling call-settings-for-me get-my-center", - "short": "Get My Call Center Settings", - "long": "Retrieves the call center settings and list of all call centers the logged in user belongs to.\n\nCalls from the Call Centers are routed to agents based on configuration. An agent can be assigned to one or more call queues and can be managed by supervisors.\nThe user must have the call center service assigned.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-my-center" - } - ] - }, - { - "path": "webex calling call-settings-for-me get-my-endpoints", - "short": "Get My Endpoints Details", - "long": "Get details of an endpoint associated with the authenticated user.\n\nEndpoints are devices, applications, or hotdesking guest profiles. Endpoints can be owned by an authenticated user or have the user as a secondary line.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "endpoint-id", - "type": "string", - "usage": "Unique identifier of the endpoint.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-my-endpoints" - } - ] - }, - { - "path": "webex calling call-settings-for-me get-my-executive-assigned-assistants", - "short": "Get My Executive Assigned Assistants", - "long": "Get list of assigned executive assistants for an authenticated user.\n\nAs an executive, you can add assistants to your executive pool to manage calls for you. You can set when and which types of calls they can handle. Assistants can opt in when needed or opt out when not required.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-my-executive-assigned-assistants" - } - ] - }, - { - "path": "webex calling call-settings-for-me get-my-executive-assistant", - "short": "Get My Executive Assistant Settings", - "long": "Get settings for an executive assistant.\n\nExecutive assistants can make, answer, intercept, and route calls appropriately on behalf of their executive.\nAssistants can also set the call forwarding destination, and join or leave an executive’s pool.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-my-executive-assistant" - } - ] - }, - { - "path": "webex calling call-settings-for-me get-my-executive-available-assistants", - "short": "Get My Executive Available Assistants", - "long": "Get a list of available executive assistants for the authenticated user.\n\nAs an executive, you can add assistants to your executive pool to manage calls for you. You can set when and which types of calls they can handle. Assistants can opt in when needed or opt out when not required.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-my-executive-available-assistants" - } - ] - }, - { - "path": "webex calling call-settings-for-me get-my-forward", - "short": "Read My Call Forwarding Settings", - "long": "Read call forwarding settings associated with the authenticated user.\n\nThree types of call forwarding are supported:\n\n+ Always - forwards all incoming calls to the destination you choose.\n\n+ When busy - forwards all incoming calls to the destination you chose while the phone is in use or the person is busy.\n\n+ When no answer - forwarding only occurs when you are away or not answering your phone.\n\nIn addition, the Business Continuity feature will send calls to a destination of your choice if your phone is not connected to the network for any reason, such as a power outage, failed Internet connection, or wiring problem.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-my-forward" - } - ] - }, - { - "path": "webex calling call-settings-for-me get-my-guest-calling-numbers", - "short": "Retrieve My Guest Calling Numbers", - "long": "Retrieve available guest calling numbers for the authenticated user.\n\nThis API returns a list of phone numbers that can be used for guest calling purposes.\n\nRetrieving guest calling numbers requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-my-guest-calling-numbers" - } - ] - }, - { - "path": "webex calling call-settings-for-me get-my-monitoring", - "short": "Get My Monitoring Settings", - "long": "Retrieves the monitoring settings of the logged in person, which shows specified people, places, virtual lines or call park extensions that are being monitored.\n\nMonitors the line status which indicates if a person, place or virtual line is on a call and if a call has been parked on that extension.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-my-monitoring" - } - ] - }, - { - "path": "webex calling call-settings-for-me get-my-own", - "short": "Get My Own Details", - "long": "Get profile details for the authenticated user.\n\nProfile details include the user's name, email, location and calling details.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-my-own" - } - ] - }, - { - "path": "webex calling call-settings-for-me get-my-park", - "short": "Get My Call Park Settings", - "long": "Get details of call park settings associated with the authenticated user.\n\nCall Park allows call recipients to place a call on hold so that it can be retrieved from another device.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-my-park" - } - ] - }, - { - "path": "webex calling call-settings-for-me get-my-personal-assistant", - "short": "Get My Personal Assistant", - "long": "Retrieve user's own Personal Assistant details.\n\nPersonal Assistant is used to manage a user's incoming calls when they are away.\n\nRetrieving Personal Assistant details requires a user auth token with `spark:telephony_config_read` scope.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-my-personal-assistant" - } - ] - }, - { - "path": "webex calling call-settings-for-me get-my-pickup-group", - "short": "Get My Call Pickup Group Settings", - "long": "Get Call Pickup Group Settings for the authenticated user.\n\nCall pickup group enables a user to answer any ringing line within their pickup group. A call pickup group is an administrator-defined set of users within a location, to which the call pickup feature applies.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-my-pickup-group" - } - ] - }, - { - "path": "webex calling call-settings-for-me get-my-recording", - "short": "Get My Call Recording Settings", - "long": "Get details of call recording settings associated with the authenticated user.\n\nCall recording settings allow you to access and customize options that determine when and how your calls are recorded, providing control over recording modes and notifications.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-my-recording" - } - ] - }, - { - "path": "webex calling call-settings-for-me get-my-secondary-owner-available-caller-id-list", - "short": "Get My Secondary Line Owner's Available Caller ID List", - "long": "Get details of available caller IDs for a secondary line of the authenticated user.\n\nNote that an authenticated user can only retrieve information for their configured secondary lines.\n\nCaller ID settings control how a person's information is displayed when making outgoing calls.\nThe available caller ID list shows the caller IDs that the user can choose from.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-my-secondary-owner-available-caller-id-list" - }, - { - "name": "lineowner-id", - "type": "string", - "usage": "Unique identifier for the secondary line owner (applicable only for Virtual Lines).", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me get-my-secondary-owner-available-preferred-endpoint-list", - "short": "Get My Secondary Line Owner's Available Preferred Answer Endpoint List", - "long": "Retrieve the list of available preferred answer endpoints for the secondary line owner of the authenticated person. \n\n A Webex Calling user may be associated with multiple endpoints such as Webex App (desktop or mobile), Cisco desk IP phone, Webex Calling-supported analog devices or third-party endpoints. Preferred answering endpoints allow users to specify which of these devices should be prioritized for answering calls, particularly when a person's extension (or a virtual line assigned to them) rings on multiple devices. This helps ensure that calls are answered on the most convenient or appropriate device for the person.\n\n This API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-my-secondary-owner-available-preferred-endpoint-list" - }, - { - "name": "line-owner-id", - "type": "string", - "usage": "Unique identifier for the secondary line owner (applicable only for Virtual Lines).", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me get-my-secondary-owner-caller-id", - "short": "Get My Secondary Line Owner Caller ID Settings", - "long": "Get Caller ID Settings for the secondary line owner of the authenticated user.\n\nNote that the secondary line information is only available for the authenticated user.\n\nCalling Line ID Delivery Blocking in Webex prevents your name and phone number from being shown to people you call.\nConnected Line Identification Restriction allows you to block your name and phone number from being shown when receiving a call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-my-secondary-owner-caller-id" - }, - { - "name": "lineowner-id", - "type": "string", - "usage": "Unique identifier for the secondary line owner (applicable only for Virtual Lines).", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me get-my-secondary-owner-calling-services", - "short": "Get My Secondary Line Owner Calling Services List", - "long": "Retrieves the list of enabled calling services for the secondary line owner of the authenticated user.\n\nThese services are designed to improve call handling and ensure that users can manage their communications effectively. They are commonly found in both personal and business telephony systems.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-my-secondary-owner-calling-services" - }, - { - "name": "lineowner-id", - "type": "string", - "usage": "Unique identifier for the secondary line owner (applicable only for Virtual Lines).", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me get-my-secondary-owner-center", - "short": "Get My Secondary Line Owner's Call Center Settings", - "long": "Retrieves the call center settings and list of all call centers associated with a secondary line of the authenticated user.\nNote that an authenticated user can only retrieve information for their configured secondary lines.\n\nCalls from the Call Centers are routed to agents based on configuration. An agent can be assigned to one or more call queues and can be managed by supervisors.\nThe secondary line must have the call center service assigned.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-my-secondary-owner-center" - }, - { - "name": "lineowner-id", - "type": "string", - "usage": "Unique identifier for the secondary line owner (applicable only for Virtual Lines).", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me get-my-secondary-owner-forward", - "short": "Get My Secondary Line Owner's Call Forwarding Settings", - "long": "Get details of call forwarding settings associated with a secondary line of the authenticated user.\n\nNote that an authenticated user can only retrieve information for their configured secondary lines.\n\nThree types of call forwarding are supported:\n\n+ Always - forwards all incoming calls to the destination you choose.\n\n+ When busy - forwards all incoming calls to the destination you chose while the phone is in use or the person is busy.\n\n+ When no answer - forwarding only occurs when you are away or not answering your phone.\n\nIn addition, the Business Continuity feature will send calls to a destination of your choice if your phone is not connected to the network for any reason, such as a power outage, failed Internet connection, or wiring problem.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-my-secondary-owner-forward" - }, - { - "name": "lineowner-id", - "type": "string", - "usage": "Unique identifier for the secondary line owner (applicable only for Virtual Lines).", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me get-my-secondary-owner-park", - "short": "Get My Secondary Line Owner Call Park Settings", - "long": "Get details of call park settings for the secondary line owner of the authenticated user.\n\nNote that the secondary line information is only available for the authenticated user.\n\nCall Park allows call recipients to place a call on hold so that it can be retrieved from another device.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-my-secondary-owner-park" - }, - { - "name": "lineowner-id", - "type": "string", - "usage": "Unique identifier for the secondary line owner (applicable only for Virtual Lines).", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me get-my-secondary-owner-pickup-group", - "short": "Get My Secondary Line Owner Call Pickup Group Settings", - "long": "Get Call Pickup Group Settings for the secondary line owner of the authenticated user.\n\nNote that the secondary line information is only available for the authenticated user.\n\nCall pickup group enables a user to answer any ringing line within their pickup group. A call pickup group is an administrator-defined set of users within a location, to which the call pickup feature applies.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-my-secondary-owner-pickup-group" - }, - { - "name": "lineowner-id", - "type": "string", - "usage": "Unique identifier for the secondary line owner (applicable only for Virtual Lines).", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me get-my-secondary-owner-preferred-endpoint", - "short": "Get My Secondary Line Owner's Preferred Answer Endpoint", - "long": "Retrieve the selected preferred answering endpoint for the secondary line owner of the authenticated person. If a preferred endpoint is not set for the person, API returns empty \n\n A Webex Calling user may be associated with multiple endpoints such as Webex App (desktop or mobile), Cisco desk IP phone, Webex Calling-supported analog devices or third-party endpoints. Preferred answering endpoints allow users to specify which of these devices should be prioritized for answering calls, particularly when a person's extension (or a virtual line assigned to them) rings on multiple devices. This helps ensure that calls are answered on the most convenient or appropriate device for the person.\n\n This API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-my-secondary-owner-preferred-endpoint" - }, - { - "name": "line-owner-id", - "type": "string", - "usage": "Unique identifier for the secondary line owner (applicable only for Virtual Lines).", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me get-my-secondary-owner-recording", - "short": "Get My Secondary Line Owner's Call Recording Settings", - "long": "Get details of call recording settings associated with a secondary line of the authenticated user.\n\nNote that an authenticated user can only retrieve information for their configured secondary lines.\n\nCall recording settings allow you to access and customize options that determine when and how your calls are recorded, providing control over recording modes and notifications.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-my-secondary-owner-recording" - }, - { - "name": "lineowner-id", - "type": "string", - "usage": "Unique identifier for the secondary line owner (applicable only for Virtual Lines).", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me get-my-secondary-owner-selected-caller-id", - "short": "Get My Secondary Line Owner's Selected Caller ID Settings", - "long": "Get details of selected caller ID settings associated with a secondary line of the authenticated user.\n\nNote that an authenticated user can only retrieve information for their configured secondary lines.\n\nCaller ID settings control how a person's information is displayed when making outgoing calls.\nSelected Caller ID settings allow users to choose which configuration among available caller IDs is selected currently.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-my-secondary-owner-selected-caller-id" - }, - { - "name": "lineowner-id", - "type": "string", - "usage": "Unique identifier for the secondary line owner (applicable only for Virtual Lines).", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me get-my-secondary-owner-voicemail", - "short": "Get My Secondary Line Owner's Voicemail Settings", - "long": "GET voicemail settings for a secondary line of the authenticated user.\n\nThe voicemail feature transfers callers to voicemail based on your settings. You can then retrieve voice messages via voicemail.\n\nOptionally, notifications can be sent to a mobile phone via text or email. These notifications will not include the voicemail files.\n\nThis API requires a user auth token with a scope of `spark-admin:people_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-my-secondary-owner-voicemail" - }, - { - "name": "lineowner-id", - "type": "string", - "usage": "Unique identifier for the secondary line owner (applicable only for Virtual Lines).", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me get-my-selected-caller-id", - "short": "Read My Selected Caller ID Settings", - "long": "Read selected caller ID settings associated with the authenticated user.\n\nCaller ID settings control how a person's information is displayed when making outgoing calls.\nSelected Caller ID settings allow users to choose which configuration among available caller IDs is selected currently.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-my-selected-caller-id" - } - ] - }, - { - "path": "webex calling call-settings-for-me get-my-simultaneous-ring", - "short": "Retrieve My Simultaneous Ring Settings", - "long": "Retrieve simultaneous ring settings for the authenticated user.\n\nThe Simultaneous Ring feature allows you to configure your office phone and other phones of your choice to ring simultaneously. Schedules can also be set up to ring these phones during certain times of the day or days of the week.\n\nRetrieving settings requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-my-simultaneous-ring" - } - ] - }, - { - "path": "webex calling call-settings-for-me get-my-simultaneous-ring-2", - "short": "Retrieve My Simultaneous Ring Criteria", - "long": "Retrieve simultaneous ring criteria settings for the authenticated user.\n\nThe Simultaneous Ring feature allows you to configure your office phone and other phones of your choice to ring simultaneously. Simultaneous Ring Criteria (Schedules) can also be set up to ring these phones during certain times of the day or days of the week.\n\nRetrieving criteria requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-my-simultaneous-ring-2" - }, - { - "name": "id", - "type": "string", - "usage": "Unique identifier for the criteria.", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me get-my-webexgooverride", - "short": "Get My WebexGoOverride Settings", - "long": "Retrieve \"Mobile User Aware\" override setting for Do Not Disturb feature.\n\nWhen enabled, a mobile device will still ring even if Do Not Disturb, Quiet Hours, or Presenting Status are enabled.\n\nWhen disabled, a mobile device will return busy for all incoming calls if Do Not Disturb, Quiet Hours, or Presenting Status are enabled.\n\nIt requires a user auth token with `spark:telephony_config_read` scope.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-my-webexgooverride" - } - ] - }, - { - "path": "webex calling call-settings-for-me get-notify", - "short": "Get Call Notify Criteria Settings", - "long": "Get Call Notify Criteria Settings for the authenticated user.\n\nCall Notify allows you to set up a unique ringtone based on predefined criteria. This is helpful, when the user wants to be quickly notified that a specific phone number is calling.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-notify" - }, - { - "name": "id", - "type": "string", - "usage": "The `id` parameter specifies the unique identifier for the call notify criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me get-notify-2", - "short": "Get Call Notify Criteria Settings", - "long": "Get Call Notify Criteria Settings for the authenticated user.\n\nCall Notify allows you to set up a unique ringtone based on predefined criteria. This is helpful, when the user wants to be quickly notified that a specific phone number is calling.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-notify-2" - }, - { - "name": "id", - "type": "string", - "usage": "The `id` parameter specifies the unique identifier for the call notify criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me get-notify-user", - "short": "Get Call Notify Settings for User", - "long": "Get Call Notify Settings for the authenticated user.\n\nCall Notify allows you to set up a unique ringtone based on predefined criteria. This is helpful, when the user wants to be quickly notified that a specific phone number is calling.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-notify-user" - } - ] - }, - { - "path": "webex calling call-settings-for-me get-notify-user-2", - "short": "Get Call Notify Settings for User", - "long": "Get Call Notify Settings for the authenticated user.\n\nCall Notify allows you to set up a unique ringtone based on predefined criteria. This is helpful, when the user wants to be quickly notified that a specific phone number is calling.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-notify-user-2" - } - ] - }, - { - "path": "webex calling call-settings-for-me get-person-voicemail-rules", - "short": "Get Person's Voicemail Rules", - "long": "Get person's voicemail passcode rules. Voicemail rules specify the default passcode requirements. They are provided for informational purposes only and cannot be modified.\n\nThe voicemail feature allows users to manage their voicemail settings as part of Webex Calling. Voicemail rules help ensure secure access to voice messages by defining passcode complexity requirements.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-person-voicemail-rules" - } - ] - }, - { - "path": "webex calling call-settings-for-me get-personal-assistant", - "short": "Get Personal Assistant Settings", - "long": "Retrieve personal assistant settings for a person. The personal assistant feature allows users to configure an automated attendant that can handle incoming calls when they are unavailable, including presence-based routing and call transfer options.\n\nPersonal Assistant is a feature of Webex Calling that helps manage incoming calls based on the user's availability status.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-personal-assistant" - } - ] - }, - { - "path": "webex calling call-settings-for-me get-policies-user", - "short": "Get Call Policies Settings for User", - "long": "Get call policies settings for the authenticated user.\n\nCall Policies in Webex allow you to manage how your call information is displayed and handled. You can view privacy settings for your connected line ID on redirected calls and review other call-related preferences.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-policies-user" - } - ] - }, - { - "path": "webex calling call-settings-for-me get-preferred-endpoint", - "short": "Get Preferred Answer Endpoint", - "long": "Retrieve the selected preferred answering endpoint for the user. If a preferred endpoint is not set for the person, API returns empty \n\n A Webex Calling user may be associated with multiple endpoints such as Webex App (desktop or mobile), Cisco desk IP phone, Webex Calling-supported analog devices or third-party endpoints. Preferred answering endpoints allow users to specify which of these devices should be prioritized for answering calls, particularly when a person's extension (or a virtual line assigned to them) rings on multiple devices. This helps ensure that calls are answered on the most convenient or appropriate device for the person.\n\n This API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-preferred-endpoint" - } - ] - }, - { - "path": "webex calling call-settings-for-me get-priority-alert", - "short": "Get Priority Alert Settings", - "long": "Get Priority Alert Settings for the authenticated user.\n\nPriority alert allows you to set up a unique ringtone based on predefined criteria. This is helpful, when the user wants to be quickly notified that a specific phone number is calling.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-priority-alert" - } - ] - }, - { - "path": "webex calling call-settings-for-me get-priority-alert-2", - "short": "Get Priority Alert Criteria Settings", - "long": "Get Priority Alert Criteria Settings for the authenticated user.\n\nPriority alert allows you to set up a unique ringtone based on predefined criteria. This is helpful, when the user wants to be quickly notified that a specific phone number is calling.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-priority-alert-2" - }, - { - "name": "id", - "type": "string", - "usage": "The `id` parameter specifies the unique identifier for the priority alert criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me get-priority-alert-2", - "short": "Get Priority Alert Settings", - "long": "Get Priority Alert Settings for the authenticated user.\n\nPriority alert allows you to set up a unique ringtone based on predefined criteria. This is helpful, when the user wants to be quickly notified that a specific phone number is calling.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`." - }, - { - "path": "webex calling call-settings-for-me get-priority-alert-2-2", - "short": "Get Priority Alert Criteria Settings", - "long": "Get Priority Alert Criteria Settings for the authenticated user.\n\nPriority alert allows you to set up a unique ringtone based on predefined criteria. This is helpful, when the user wants to be quickly notified that a specific phone number is calling.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-priority-alert-2-2" - }, - { - "name": "id", - "type": "string", - "usage": "The `id` parameter specifies the unique identifier for the priority alert criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me get-selective-accept-user", - "short": "Get Selective Call Accept Settings for User", - "long": "Get Selective Call Accept Settings for the authenticated user.\n\nSelective Call Accept allows you to create customized rules to accept specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-selective-accept-user" - } - ] - }, - { - "path": "webex calling call-settings-for-me get-selective-accept-user-2", - "short": "Get Selective Call Accept Criteria Settings for User", - "long": "Get Selective Call Accept Criteria Settings for the authenticated user.\n\nSelective Call Accept allows you to create customized rules to accept specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-selective-accept-user-2" - }, - { - "name": "id", - "type": "string", - "usage": "The `id` parameter specifies the unique identifier for the selective call accept criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me get-selective-accept-user-2", - "short": "Get Selective Call Accept Settings for User", - "long": "Get Selective Call Accept Settings for the authenticated user.\n\nSelective Call Accept allows you to create customized rules to accept specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`." - }, - { - "path": "webex calling call-settings-for-me get-selective-accept-user-2-2", - "short": "Get Selective Call Accept Criteria Settings for User", - "long": "Get Selective Call Accept Criteria Settings for the authenticated user.\n\nSelective Call Accept allows you to create customized rules to accept specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-selective-accept-user-2-2" - }, - { - "name": "id", - "type": "string", - "usage": "The `id` parameter specifies the unique identifier for the selective call accept criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me get-selective-forward", - "short": "Get Settings for a Selective Call Forwarding Criteria", - "long": "Get settings for a Selective Call Forwarding Criteria for the authenticated user.\n\nSelective Call Forward allows you to define rules that automatically forward incoming calls based on specific criteria, such as the caller’s phone number, caller identity, and the time and day the call is received.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-selective-forward" - }, - { - "name": "id", - "type": "string", - "usage": "The `id` parameter specifies the unique identifier for the selective call forwarding criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me get-selective-forward-2", - "short": "Get Settings for a Selective Call Forwarding Criteria", - "long": "Get settings for a Selective Call Forwarding Criteria for the authenticated user.\n\nSelective Call Forward allows you to define rules that automatically forward incoming calls based on specific criteria, such as the caller’s phone number, caller identity, and the time and day the call is received.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-selective-forward-2" - }, - { - "name": "id", - "type": "string", - "usage": "The `id` parameter specifies the unique identifier for the selective call forwarding criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me get-selective-forward-user", - "short": "Get Selective Call Forward Settings for User", - "long": "Get Selective Call Forward Settings for the authenticated user.\n\nSelective Call Forward allows you to create customized rules to forward specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-selective-forward-user" - } - ] - }, - { - "path": "webex calling call-settings-for-me get-selective-forward-user-2", - "short": "Get Selective Call Forward Settings for User", - "long": "Get Selective Call Forward Settings for the authenticated user.\n\nSelective Call Forward allows you to create customized rules to forward specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-selective-forward-user-2" - } - ] - }, - { - "path": "webex calling call-settings-for-me get-selective-reject-user", - "short": "Get Selective Call Reject Settings for User", - "long": "Get Selective Call Reject Settings for the authenticated user.\n\nSelective Call Reject allows you to create customized rules to reject specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-selective-reject-user" - } - ] - }, - { - "path": "webex calling call-settings-for-me get-selective-reject-user-2", - "short": "Get Selective Call Reject Criteria Settings for User", - "long": "Get Selective Call Reject Criteria Settings for the authenticated user.\n\nSelective Call Reject allows you to create customized rules to reject specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-selective-reject-user-2" - }, - { - "name": "id", - "type": "string", - "usage": "The `id` parameter specifies the unique identifier for the selective call reject criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me get-selective-reject-user-2", - "short": "Get Selective Call Reject Settings for User", - "long": "Get Selective Call Reject Settings for the authenticated user.\n\nSelective Call Reject allows you to create customized rules to reject specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`." - }, - { - "path": "webex calling call-settings-for-me get-selective-reject-user-2-2", - "short": "Get Selective Call Reject Criteria Settings for User", - "long": "Get Selective Call Reject Criteria Settings for the authenticated user.\n\nSelective Call Reject allows you to create customized rules to reject specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-selective-reject-user-2-2" - }, - { - "name": "id", - "type": "string", - "usage": "The `id` parameter specifies the unique identifier for the selective call reject criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me get-sequential-ring-user", - "short": "Get Sequential Ring Settings for User", - "long": "Get Sequential Ring Settings for the authenticated user.\n\nSequential Ring allows calls to ring additional phone numbers in sequence if the initial call is not answered. This can be configured to ring up to five phone numbers with customizable ring patterns.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-sequential-ring-user" - } - ] - }, - { - "path": "webex calling call-settings-for-me get-sequential-ring-user-2", - "short": "Get Sequential Ring Criteria Settings for User", - "long": "Get Sequential Ring Criteria Settings for the authenticated user.\n\nSequential Ring criteria defines rules for when sequential ring should activate based on the caller and schedule.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-sequential-ring-user-2" - }, - { - "name": "id", - "type": "string", - "usage": "The `id` parameter specifies the unique identifier for the sequential ring criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me get-sequential-ring-user-2", - "short": "Get Sequential Ring Settings for User", - "long": "Get Sequential Ring Settings for the authenticated user.\n\nSequential Ring allows calls to ring additional phone numbers in sequence if the initial call is not answered. This can be configured to ring up to five phone numbers with customizable ring patterns.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`." - }, - { - "path": "webex calling call-settings-for-me get-sequential-ring-user-2-2", - "short": "Get Sequential Ring Criteria Settings for User", - "long": "Get Sequential Ring Criteria Settings for the authenticated user.\n\nSequential Ring criteria defines rules for when sequential ring should activate based on the caller and schedule.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-sequential-ring-user-2-2" - }, - { - "name": "id", - "type": "string", - "usage": "The `id` parameter specifies the unique identifier for the sequential ring criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me get-user-executive-alert", - "short": "Get User Executive Alert Settings", - "long": "Get executive alert settings for the authenticated user.\n\nExecutive Alert settings in Webex allow you to control how calls are routed to executive assistants, including alerting mode, rollover options, and caller ID presentation. You can configure settings such as sequential or simultaneous alerting, and specify what happens when calls aren't answered.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-user-executive-alert" - } - ] - }, - { - "path": "webex calling call-settings-for-me get-user-executive-filtering", - "short": "Get User Executive Call Filtering Settings", - "long": "Get executive call filtering settings for the authenticated user.\n\nExecutive Call Filtering in Webex allows you to control which calls are allowed to reach the executive assistant based on custom criteria, such as specific phone numbers or call types. You can enable or disable call filtering and configure filter rules to manage incoming calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-user-executive-filtering" - } - ] - }, - { - "path": "webex calling call-settings-for-me get-user-executive-filtering-2", - "short": "Get User Executive Call Filtering Criteria Settings", - "long": "Get executive call filtering criteria settings for the authenticated user.\n\nExecutive Call Filtering Criteria in Webex allows you to retrieve detailed configuration for a specific filter rule. This includes schedule settings, phone number filters, and call routing preferences for executive call filtering.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-user-executive-filtering-2" - }, - { - "name": "id", - "type": "string", - "usage": "The `id` parameter specifies the unique identifier for the executive call filtering criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL2RHVnpkRjltYVd4MFpYST0`.", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me get-user-executive-screening", - "short": "Get User Executive Screening Settings", - "long": "Get executive screening settings for the authenticated user.\n\nExecutive Screening in Webex allows you to manage how incoming calls are screened and alerted based on your preferences. You can enable or disable executive screening and configure alert types and locations for notifications.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-user-executive-screening" - } - ] - }, - { - "path": "webex calling call-settings-for-me get-user-location-schedule", - "short": "Get User's Location Level Schedule", - "long": "Get Location Schedule for Call Settings of the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-user-location-schedule" - }, - { - "name": "schedule-id", - "type": "string", - "usage": "Retrieve the schedule with the matching ID.", - "required": true - }, - { - "name": "schedule-type", - "type": "string", - "usage": "Type of the schedule. * `businessHours` - Business hours schedule type. * `holidays` - Holidays schedule type. ", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me get-user-location-schedule-2", - "short": "Get User's Location Level Schedule", - "long": "Get Location Schedule for Call Settings of the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-user-location-schedule-2" - }, - { - "name": "schedule-id", - "type": "string", - "usage": "Retrieve the schedule with the matching ID.", - "required": true - }, - { - "name": "schedule-type", - "type": "string", - "usage": "Type of the schedule. * `businessHours` - Business hours schedule type. * `holidays` - Holidays schedule type. ", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me get-user-schedule", - "short": "Get User Schedule", - "long": "Get a Schedule details for Call Settings of the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-user-schedule" - }, - { - "name": "schedule-id", - "type": "string", - "usage": "Retrieve the schedule with the matching ID.", - "required": true - }, - { - "name": "schedule-type", - "type": "string", - "usage": "Type of the schedule. * `businessHours` - Business hours schedule type. * `holidays` - Holidays schedule type. ", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me get-user-schedule-2", - "short": "Get User Schedule", - "long": "Get a Schedule details for Call Settings of the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-user-schedule-2" - }, - { - "name": "schedule-id", - "type": "string", - "usage": "Retrieve the schedule with the matching ID.", - "required": true - }, - { - "name": "schedule-type", - "type": "string", - "usage": "Type of the schedule. * `businessHours` - Business hours schedule type. * `holidays` - Holidays schedule type. ", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me get-user-schedule-event", - "short": "Get User Schedule Event", - "long": "Get a Schedule Event details for Call Settings of the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "event-id", - "type": "string", - "usage": "Retrieve the event with the matching ID.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-user-schedule-event" - }, - { - "name": "schedule-id", - "type": "string", - "usage": "Retrieve the schedule with the matching ID.", - "required": true - }, - { - "name": "schedule-type", - "type": "string", - "usage": "Type of the schedule. * `businessHours` - Business hours schedule type. * `holidays` - Holidays schedule type. ", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me get-user-schedule-event-2", - "short": "Get User Schedule Event", - "long": "Get a Schedule Event details for Call Settings of the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "event-id", - "type": "string", - "usage": "Retrieve the event with the matching ID.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-user-schedule-event-2" - }, - { - "name": "schedule-id", - "type": "string", - "usage": "Retrieve the schedule with the matching ID.", - "required": true - }, - { - "name": "schedule-type", - "type": "string", - "usage": "Type of the schedule. * `businessHours` - Business hours schedule type. * `holidays` - Holidays schedule type. ", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me get-user-schedules", - "short": "Get User (and Location) Schedules", - "long": "Get Schedules for Call Settings for the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-user-schedules" - } - ] - }, - { - "path": "webex calling call-settings-for-me get-user-schedules-2", - "short": "Get User (and Location) Schedules", - "long": "Get Schedules for Call Settings for the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-user-schedules-2" - } - ] - }, - { - "path": "webex calling call-settings-for-me get-user-single-number-reach", - "short": "Get User's Single Number Reach Settings", - "long": "Retrieves all single number reach settings configured for the authenticated user.\n\nThe \"Single Number Reach\" feature in Webex allows users to access their business phone capabilities from any device, making it easy to make and receive calls as if at their office. This is especially useful for remote or mobile workers needing flexibility.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-user-single-number-reach" - } - ] - }, - { - "path": "webex calling call-settings-for-me get-voicemail-person", - "short": "Read Voicemail Settings for a Person", - "long": "Retrieve a person's voicemail settings.\n\nThe voicemail feature transfers callers to voicemail based on your settings. You can then retrieve voice messages via voicemail.\n\nOptionally, notifications can be sent to a mobile phone via text or email. These notifications will not include the voicemail files.\n\nThis API requires a user auth token with a scope of `spark-admin:people_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-voicemail-person" - } - ] - }, - { - "path": "webex calling call-settings-for-me get-waiting-user", - "short": "Get Call Waiting Settings for User", - "long": "Get Call Waiting Settings for the authenticated user.\n\nCall Waiting allows a user to receive multiple calls simultaneously. When the user is on an active call, they can receive an incoming call and switch between the two calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-waiting-user" - } - ] - }, - { - "path": "webex calling call-settings-for-me get-waiting-user-2", - "short": "Get Call Waiting Settings for User", - "long": "Get Call Waiting Settings for the authenticated user.\n\nCall Waiting allows a user to receive multiple calls simultaneously. When the user is on an active call, they can receive an incoming call and switch between the two calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-waiting-user-2" - } - ] - }, - { - "path": "webex calling call-settings-for-me list-available-preferred-endpoints", - "short": "Get List Available Preferred Answer Endpoints", - "long": "Get the person's preferred answer endpoint and the list of endpoints available for selection. The list of endpoints is empty if the person has no endpoints assigned which support the preferred answer endpoint functionality.\n\n A Webex Calling user may be associated with multiple endpoints such as Webex App (desktop or mobile), Cisco desk IP phone, Webex Calling-supported analog devices or third-party endpoints. Preferred answering endpoints allow users to specify which of these devices should be prioritized for answering calls, particularly when a person's extension (or a virtual line assigned to them) rings on multiple devices. This helps ensure that calls are answered on the most convenient or appropriate device for the person.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-available-preferred-endpoints" - } - ] - }, - { - "path": "webex calling call-settings-for-me list-my-endpoints", - "short": "Read the List of My Endpoints", - "long": "Retrieve the list of endpoints associated with the authenticated user.\n\nEndpoints are devices, applications, or hotdesking guest profiles. Endpoints can be owned by an authenticated user or have the user as a secondary line.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-my-endpoints" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-anonymous-rejection-user", - "short": "Modify Anonymous Call Rejection Settings for User", - "long": "Update Anonymous Call Rejection Settings for the authenticated user.\n\nAnonymous Call Rejection allows you to reject calls from anonymous callers.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-anonymous-rejection-user" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-anonymous-rejection-user-2", - "short": "Modify Anonymous Call Rejection Settings for User", - "long": "Update Anonymous Call Rejection Settings for the authenticated user.\n\nAnonymous Call Rejection allows you to reject calls from anonymous callers.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-anonymous-rejection-user-2" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-barge-in", - "short": "Configure Barge-In Settings", - "long": "Configure person's Barge-In settings.\n\nThe Barge-In feature enables you to use a Feature Access Code (FAC) to answer a call that was directed to another subscriber, or barge-in on the call if it was already answered. Barge-In can be used across locations.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-barge-in" - }, - { - "name": "tone-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-do-not-disturb-user", - "short": "Modify Do Not Disturb Settings for User", - "long": "Update Do Not Disturb settings for the authenticated user.\n\nDo Not Disturb (DND) enables users to block or silence incoming calls on their phone. When activated, the phone either stops ringing or rejects calls depending on the configured option, but users can still see call information and answer calls if desired.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-do-not-disturb-user" - }, - { - "name": "ring-splash-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "webex-go-override-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-hoteling-guest", - "short": "Update Hoteling Guest Settings", - "long": "Update hoteling guest settings for a person. Allows enabling or disabling the ability to use hoteling as a guest, configuring whether an association will be removed automatically after a specified time period, and associating with a hoteling host.\n\nHoteling is a feature of Webex Calling that enables flexible workspace solutions by allowing users to log into shared devices.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "association-limit-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "association-limit-hours", - "type": "int64", - "default": "0" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-hoteling-guest" - }, - { - "name": "host-id", - "type": "string" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-my-caller-id", - "short": "Modify My Caller ID Settings", - "long": "Update Caller ID Settings for the authenticated user.\n\nCalling Line ID Delivery Blocking in Webex prevents your name and phone number from being shown to people you call.\nConnected Line Identification Restriction allows you to block your name and phone number from being shown when receiving a call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calling-line-id-delivery-blocking-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "connected-line-identification-restriction-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-my-caller-id" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-my-center", - "short": "Modify My Call Center Settings", - "long": "Modify the call center settings and availability for an agent in one or more call centers to which the logged in user belongs.\n\nCalls from the Call Centers are routed to agents based on configuration. An agent can be assigned to one or more call queues and can be managed by supervisors.\nContains a list specifying the desired availability status of one or more call centers.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-my-center" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-my-endpoints", - "short": "Modify My Endpoints Details", - "long": "Update alerting settings of the mobility endpoint associated with the authenticated user.\n\nEndpoints are devices, applications, or hotdesking guest profiles. Endpoints can be owned by an authenticated user or have the user as a secondary line.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "endpoint-id", - "type": "string", - "usage": "Unique identifier of the endpoint.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-my-endpoints" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-my-executive-assigned-assistants", - "short": "Modify My Executive Assigned Assistants", - "long": "Update assigned executive assistants for the authenticated user.\n\nAs an executive, you can add assistants to your executive pool to manage calls for you. You can set when and which types of calls they can handle. Assistants can opt in when needed or opt out when not required.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "allow-opt-in-out-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "assistant-ids", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-my-executive-assigned-assistants" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-my-executive-assistant", - "short": "Modify My Executive Assistant Settings", - "long": "Update Settings for an executive assistant.\n\nExecutive assistants can make, answer, intercept, and route calls appropriately on behalf of their executive.\nAssistants can also set the call forwarding destination, and join or leave an executive’s pool.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-my-executive-assistant" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-my-forward", - "short": "Configure My Call Forwarding Settings", - "long": "Update call forwarding settings associated with the authenticated user.\n\nThree types of call forwarding are supported:\n\n+ Always - forwards all incoming calls to the destination you choose.\n\n+ When busy - forwards all incoming calls to the destination you chose while the phone is in use or the person is busy.\n\n+ When no answer - forwarding only occurs when you are away or not answering your phone.\n\nIn addition, the Business Continuity feature will send calls to a destination of your choice if your phone is not connected to the network for any reason, such as a power outage, failed Internet connection, or wiring problem.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-my-forward" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-my-personal-assistant", - "short": "Modify My Personal Assistant", - "long": "Update user's own Personal Assistant details.\n\nPersonal Assistant is used to manage a user's incoming calls when they are away.\n\nUpdating Personal Assistant details requires a user auth token with the `spark:telephony_config_write` scope.", - "flags": [ - { - "name": "alert-me-first-number-of-rings", - "type": "int64", - "default": "0" - }, - { - "name": "alerting", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-my-personal-assistant" - }, - { - "name": "presence", - "type": "string" - }, - { - "name": "transfer-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "transfer-number", - "type": "string" - }, - { - "name": "until-date-time", - "type": "string" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-my-secondary-owner-caller-id", - "short": "Modify My Secondary Line Owner Caller ID Settings", - "long": "Update Caller ID Settings for the secondary line owner of the authenticated user.\n\nNote that the secondary line information is only available for the authenticated user.\n\nCalling Line ID Delivery Blocking in Webex prevents your name and phone number from being shown to people you call.\nConnected Line Identification Restriction allows you to block your name and phone number from being shown when receiving a call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calling-line-id-delivery-blocking-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "connected-line-identification-restriction-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-my-secondary-owner-caller-id" - }, - { - "name": "lineowner-id", - "type": "string", - "usage": "Unique identifier for the secondary line owner (applicable only for Virtual Lines).", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me update-my-secondary-owner-center", - "short": "Modify My Secondary Line Owner's Call Center Settings", - "long": "Modify the call center settings and availability for an agent in one or more call centers associated with a secondary line owner of the authenticated user.\nNote that an authenticated user can only modify information for their configured secondary lines.\n\nCalls from the Call Centers are routed to agents based on configuration. An agent can be assigned to one or more call queues and can be managed by supervisors.\nContains a list specifying the desired availability status of one or more call centers.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-my-secondary-owner-center" - }, - { - "name": "lineowner-id", - "type": "string", - "usage": "Unique identifier for the secondary line owner (applicable only for Virtual Lines).", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me update-my-secondary-owner-forward", - "short": "Modify My Secondary Line Owner's Call Forwarding Settings", - "long": "Update call forwarding settings associated with a secondary line owner of the authenticated user.\n\nNote that an authenticated user can only modify information for their configured secondary lines.\n\nThree types of call forwarding are supported:\n\n+ Always - forwards all incoming calls to the destination you choose.\n\n+ When busy - forwards all incoming calls to the destination you chose while the phone is in use or the person is busy.\n\n+ When no answer - forwarding only occurs when you are away or not answering your phone.\n\nIn addition, the Business Continuity feature will send calls to a destination of your choice if your phone is not connected to the network for any reason, such as a power outage, failed Internet connection, or wiring problem.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-my-secondary-owner-forward" - }, - { - "name": "lineowner-id", - "type": "string", - "usage": "Unique identifier for the secondary line owner (applicable only for Virtual Lines).", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me update-my-secondary-owner-preferred-endpoint", - "short": "Modify My Secondary Line Owner's Preferred Answer Endpoint", - "long": "Sets or clears the preferred answer endpoint for the secondary line owner of the authenticated person. To clear the preferred answer endpoint the `id` attribute must be set to null.\n\n A Webex Calling user may be associated with multiple endpoints such as Webex App (desktop or mobile), Cisco desk IP phone, Webex Calling-supported analog devices or third-party endpoints. Preferred answering endpoints allow users to specify which of these devices should be prioritized for answering calls, particularly when a person's extension (or a virtual line assigned to them) rings on multiple devices. This helps ensure that calls are answered on the most convenient or appropriate device for the person.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-my-secondary-owner-preferred-endpoint" - }, - { - "name": "line-owner-id", - "type": "string", - "usage": "Unique identifier for the secondary line owner (applicable only for Virtual Lines).", - "required": true - }, - { - "name": "preferred-answer-endpoint-id", - "type": "string" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-my-secondary-owner-selected-caller-id", - "short": "Modify My Secondary Line Owner's Selected Caller ID Settings", - "long": "Update selected caller ID settings associated with a secondary line owner of the authenticated user.\n\nNote that an authenticated user can only modify information for their configured secondary lines.\n\nCaller ID settings control how a person's information is displayed when making outgoing calls.\nSelected Caller ID settings allow users to choose which configuration among available caller IDs is selected currently.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-my-secondary-owner-selected-caller-id" - }, - { - "name": "lineowner-id", - "type": "string", - "usage": "Unique identifier for the secondary line owner (applicable only for Virtual Lines).", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me update-my-secondary-owner-voicemail", - "short": "Modify My Secondary Line Owner's Voicemail Settings", - "long": "Update voicemail settings associated with a secondary line owner of the authenticated user.\n\nThe voicemail feature transfers callers to voicemail based on your settings. You can then retrieve voice messages via voicemail.\n\nOptionally, notifications can be sent to a mobile phone via text or email. These notifications will not include the voicemail files.\n\nThis API requires a user auth token with a scope of `spark-admin:people_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-my-secondary-owner-voicemail" - }, - { - "name": "lineowner-id", - "type": "string", - "usage": "Unique identifier for the secondary line owner (applicable only for Virtual Lines).", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me update-my-selected-caller-id", - "short": "Configure My Selected Caller ID Settings", - "long": "Update selected caller ID settings associated with the authenticated user.\n\nCaller ID settings control how a person's information is displayed when making outgoing calls.\nSelected Caller ID settings allow users to choose which configuration among available caller IDs is selected currently.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-my-selected-caller-id" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-my-simultaneous-ring", - "short": "Modify My Simultaneous Ring Settings", - "long": "Modify simultaneous ring settings for the authenticated user.\n\nThe Simultaneous Ring feature allows you to configure your office phone and other phones of your choice to ring simultaneously. Schedules can also be set up to ring these phones during certain times of the day or days of the week.\n\nModifying settings requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-my-simultaneous-ring" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-my-simultaneous-ring-2", - "short": "Modify My Simultaneous Ring Criteria", - "long": "Modify simultaneous ring criteria settings for the authenticated user.\n\nThe Simultaneous Ring feature allows you to configure your office phone and other phones of your choice to ring simultaneously. Simultaneous Ring Criteria (Schedules) can also be set up to ring these phones during certain times of the day or days of the week.\n\nModifying criteria requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "anonymous-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calls-from", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-my-simultaneous-ring-2" - }, - { - "name": "id", - "type": "string", - "usage": "Unique identifier for the criteria.", - "required": true - }, - { - "name": "phone-numbers", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "ring-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "schedule-level", - "type": "string" - }, - { - "name": "schedule-name", - "type": "string" - }, - { - "name": "schedule-type", - "type": "string" - }, - { - "name": "unavailable-callers-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-my-webexgooverride", - "short": "Modify My WebexGoOverride Settings", - "long": "Update \"Mobile User Aware\" override setting for Do Not Disturb feature.\n\nWhen enabled, a mobile device will still ring even if Do Not Disturb, Quiet Hours, or Presenting Status are enabled.\n\nWhen disabled, a mobile device will return busy for all incoming calls if Do Not Disturb, Quiet Hours, or Presenting Status are enabled.\n\nIt requires a user auth token with the `spark:telephony_config_write` scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-my-webexgooverride" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-notify", - "short": "Modify a Call Notify Criteria", - "long": "Modify Call Notify Criteria Settings for the authenticated user.\n\nCall Notify allows you to set up a unique ringtone based on predefined criteria. This API allows modifying attributes such as name, phoneNumbers etc for a particular criteria.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "anonymous-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calls-from", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-notify" - }, - { - "name": "id", - "type": "string", - "usage": "The `id` parameter specifies the unique identifier for the call notify criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.", - "required": true - }, - { - "name": "notification-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "phone-numbers", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "schedule-level", - "type": "string" - }, - { - "name": "schedule-name", - "type": "string" - }, - { - "name": "schedule-type", - "type": "string" - }, - { - "name": "unavailable-callers-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-notify-2", - "short": "Modify a Call Notify Criteria", - "long": "Modify Call Notify Criteria Settings for the authenticated user.\n\nCall Notify allows you to set up a unique ringtone based on predefined criteria. This API allows modifying attributes such as name, phoneNumbers etc for a particular criteria.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "anonymous-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calls-from", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-notify-2" - }, - { - "name": "id", - "type": "string", - "usage": "The `id` parameter specifies the unique identifier for the call notify criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.", - "required": true - }, - { - "name": "notification-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "phone-numbers", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "schedule-level", - "type": "string" - }, - { - "name": "schedule-name", - "type": "string" - }, - { - "name": "schedule-type", - "type": "string" - }, - { - "name": "unavailable-callers-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-notify-user", - "short": "Modify Call Notify Settings for User", - "long": "Update Call Notify Settings for the authenticated user.\n\nCall Notify allows you to set up a unique ringtone based on predefined criteria. This API allows modifying attributes such as name, phoneNumbers etc for a particular criteria.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "email-address", - "type": "string" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-notify-user" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-notify-user-2", - "short": "Modify Call Notify Settings for User", - "long": "Update Call Notify Settings for the authenticated user.\n\nCall Notify allows you to set up a unique ringtone based on predefined criteria. This API allows modifying attributes such as name, phoneNumbers etc for a particular criteria.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "email-address", - "type": "string" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-notify-user-2" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-personal-assistant", - "short": "Update Personal Assistant Settings", - "long": "Update personal assistant settings for a person. Allows configuring the personal assistant feature including enabling/disabling it, setting presence status, configuring call transfer options, and alerting preferences.\n\nPersonal Assistant is a feature of Webex Calling that helps manage incoming calls based on the user's availability status.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "alert-me-first-number-of-rings", - "type": "int64", - "default": "0" - }, - { - "name": "alerting", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-personal-assistant" - }, - { - "name": "presence", - "type": "string" - }, - { - "name": "transfer-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "transfer-number", - "type": "string" - }, - { - "name": "until-date-time", - "type": "string" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-policies-user", - "short": "Modify Call Policies Settings for User", - "long": "Update call policies settings for the authenticated user.\n\nCall Policies in Webex allow you to manage how your call information is displayed and handled. You can configure privacy settings for your connected line ID on redirected calls and control other call-related preferences.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "connected-line-id-privacy-on-redirected-calls", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-policies-user" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-preferred-endpoint", - "short": "Modify Preferred Answer Endpoint", - "long": "Sets or clears the person’s preferred answer endpoint. To clear the preferred answer endpoint the `id` attribute must be set to null.\n\n A Webex Calling user may be associated with multiple endpoints such as Webex App (desktop or mobile), Cisco desk IP phone, Webex Calling-supported analog devices or third-party endpoints. Preferred answering endpoints allow users to specify which of these devices should be prioritized for answering calls, particularly when a person's extension (or a virtual line assigned to them) rings on multiple devices. This helps ensure that calls are answered on the most convenient or appropriate device for the person.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-preferred-endpoint" - }, - { - "name": "preferred-answer-endpoint-id", - "type": "string" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-priority-alert", - "short": "Modify Settings for a Priority Alert Criteria", - "long": "Modify Priority Alert Criteria Settings for the authenticated user.\n\nPriority alert allows you to set up a unique ringtone based on predefined criteria. This API allows modifying attributes such as name, phoneNumbers etc for a particular criteria.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "anonymous-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calls-from", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-priority-alert" - }, - { - "name": "id", - "type": "string", - "usage": "The `id` parameter specifies the unique identifier for the priority alert criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.", - "required": true - }, - { - "name": "notification-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "phone-numbers", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "schedule-level", - "type": "string" - }, - { - "name": "schedule-name", - "type": "string" - }, - { - "name": "schedule-type", - "type": "string" - }, - { - "name": "unavailable-callers-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-priority-alert-2", - "short": "Modify Settings for a Priority Alert Criteria", - "long": "Modify Priority Alert Criteria Settings for the authenticated user.\n\nPriority alert allows you to set up a unique ringtone based on predefined criteria. This API allows modifying attributes such as name, phoneNumbers etc for a particular criteria.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "anonymous-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calls-from", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-priority-alert-2" - }, - { - "name": "id", - "type": "string", - "usage": "The `id` parameter specifies the unique identifier for the priority alert criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.", - "required": true - }, - { - "name": "notification-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "phone-numbers", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "schedule-level", - "type": "string" - }, - { - "name": "schedule-name", - "type": "string" - }, - { - "name": "schedule-type", - "type": "string" - }, - { - "name": "unavailable-callers-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-priority-alert-user", - "short": "Modify Priority Alert Settings for User", - "long": "Update Priority Alert Settings for the authenticated user.\n\nPriority alert allows you to set up a unique ringtone based on predefined criteria. This is helpful, when the user wants to be quickly notified that a specific phone number is calling.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-priority-alert-user" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-priority-alert-user-2", - "short": "Modify Priority Alert Settings for User", - "long": "Update Priority Alert Settings for the authenticated user.\n\nPriority alert allows you to set up a unique ringtone based on predefined criteria. This is helpful, when the user wants to be quickly notified that a specific phone number is calling.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-priority-alert-user-2" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-selective-accept", - "short": "Modify a Selective Call Accept Criteria", - "long": "Modify Selective Call Accept Criteria Settings for the authenticated user.\n\n\n\nSelective Call Accept allows you to create customized rules to accept specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "accept-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "anonymous-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calls-from", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-selective-accept" - }, - { - "name": "id", - "type": "string", - "usage": "The `id` parameter specifies the unique identifier for the selective call accept. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.", - "required": true - }, - { - "name": "phone-numbers", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "schedule-level", - "type": "string" - }, - { - "name": "schedule-name", - "type": "string" - }, - { - "name": "schedule-type", - "type": "string" - }, - { - "name": "unavailable-callers-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-selective-accept-2", - "short": "Modify a Selective Call Accept Criteria", - "long": "Modify Selective Call Accept Criteria Settings for the authenticated user.\n\n\n\nSelective Call Accept allows you to create customized rules to accept specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "accept-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "anonymous-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calls-from", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-selective-accept-2" - }, - { - "name": "id", - "type": "string", - "usage": "The `id` parameter specifies the unique identifier for the selective call accept. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.", - "required": true - }, - { - "name": "phone-numbers", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "schedule-level", - "type": "string" - }, - { - "name": "schedule-name", - "type": "string" - }, - { - "name": "schedule-type", - "type": "string" - }, - { - "name": "unavailable-callers-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-selective-accept-user", - "short": "Modify Selective Call Accept Settings for User", - "long": "Update Selective Call Accept Settings for the authenticated user.\n\nSelective Call Accept allows you to create customized rules to accept specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-selective-accept-user" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-selective-accept-user-2", - "short": "Modify Selective Call Accept Settings for User", - "long": "Update Selective Call Accept Settings for the authenticated user.\n\nSelective Call Accept allows you to create customized rules to accept specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-selective-accept-user-2" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-selective-forward", - "short": "Modify Settings for a Selective Call Forwarding Criteria", - "long": "Modify settings for a Selective Call Forwarding Criteria for the authenticated user.\n\nSelective Call Forward allows you to define rules that automatically forward incoming calls based on specific criteria, such as the caller’s phone number, caller identity, and the time and day the call is received.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "anonymous-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calls-from", - "type": "string" - }, - { - "name": "destination-voicemail-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "forward-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "forward-to-phone-number", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-selective-forward" - }, - { - "name": "id", - "type": "string", - "usage": "The `id` parameter specifies the unique identifier for the selective call forwarding criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.", - "required": true - }, - { - "name": "phone-numbers", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "schedule-level", - "type": "string" - }, - { - "name": "schedule-name", - "type": "string" - }, - { - "name": "schedule-type", - "type": "string" - }, - { - "name": "unavailable-callers-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-selective-forward-2", - "short": "Modify Settings for a Selective Call Forwarding Criteria", - "long": "Modify settings for a Selective Call Forwarding Criteria for the authenticated user.\n\nSelective Call Forward allows you to define rules that automatically forward incoming calls based on specific criteria, such as the caller’s phone number, caller identity, and the time and day the call is received.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "anonymous-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calls-from", - "type": "string" - }, - { - "name": "destination-voicemail-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "forward-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "forward-to-phone-number", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-selective-forward-2" - }, - { - "name": "id", - "type": "string", - "usage": "The `id` parameter specifies the unique identifier for the selective call forwarding criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.", - "required": true - }, - { - "name": "phone-numbers", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "schedule-level", - "type": "string" - }, - { - "name": "schedule-name", - "type": "string" - }, - { - "name": "schedule-type", - "type": "string" - }, - { - "name": "unavailable-callers-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-selective-forward-user", - "short": "Modify Selective Call Forward Settings for User", - "long": "Update the Selective Call Forward Settings for the authenticated user.\n\nSelective Call Accept allows you to create customized rules to accept specific calls for users based on the phone number, identity, and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "default-phone-number-to-forward", - "type": "string" - }, - { - "name": "destination-voicemail-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-selective-forward-user" - }, - { - "name": "ring-reminder-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-selective-forward-user-2", - "short": "Modify Selective Call Forward Settings for User", - "long": "Update the Selective Call Forward Settings for the authenticated user.\n\nSelective Call Accept allows you to create customized rules to accept specific calls for users based on the phone number, identity, and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "default-phone-number-to-forward", - "type": "string" - }, - { - "name": "destination-voicemail-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-selective-forward-user-2" - }, - { - "name": "ring-reminder-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-selective-reject", - "short": "Modify a Selective Call Reject Criteria", - "long": "Modify Selective Call Reject Criteria Settings for the authenticated user.\n\n\n\nSelective Call Reject allows you to create customized rules to reject specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "anonymous-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calls-from", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-selective-reject" - }, - { - "name": "id", - "type": "string", - "usage": "The `id` parameter specifies the unique identifier for the selective call reject. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.", - "required": true - }, - { - "name": "phone-numbers", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "reject-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "schedule-level", - "type": "string" - }, - { - "name": "schedule-name", - "type": "string" - }, - { - "name": "schedule-type", - "type": "string" - }, - { - "name": "unavailable-callers-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-selective-reject-2", - "short": "Modify a Selective Call Reject Criteria", - "long": "Modify Selective Call Reject Criteria Settings for the authenticated user.\n\n\n\nSelective Call Reject allows you to create customized rules to reject specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "anonymous-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calls-from", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-selective-reject-2" - }, - { - "name": "id", - "type": "string", - "usage": "The `id` parameter specifies the unique identifier for the selective call reject. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.", - "required": true - }, - { - "name": "phone-numbers", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "reject-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "schedule-level", - "type": "string" - }, - { - "name": "schedule-name", - "type": "string" - }, - { - "name": "schedule-type", - "type": "string" - }, - { - "name": "unavailable-callers-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-selective-reject-user", - "short": "Modify Selective Call Reject Settings for User", - "long": "Update Selective Call Reject Settings for the authenticated user.\n\nSelective Call Reject allows you to create customized rules to reject specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-selective-reject-user" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-selective-reject-user-2", - "short": "Modify Selective Call Reject Settings for User", - "long": "Update Selective Call Reject Settings for the authenticated user.\n\nSelective Call Reject allows you to create customized rules to reject specific calls for users based on the phone number,identity and the time or day of the call.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-selective-reject-user-2" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-sequential-ring-user", - "short": "Modify Sequential Ring Settings for User", - "long": "Update Sequential Ring Settings for the authenticated user.\n\nSequential Ring allows calls to ring additional phone numbers in sequence if the initial call is not answered. This can be configured to ring up to five phone numbers with customizable ring patterns.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-sequential-ring-user" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-sequential-ring-user-2", - "short": "Modify Sequential Ring Settings for User", - "long": "Update Sequential Ring Settings for the authenticated user.\n\nSequential Ring allows calls to ring additional phone numbers in sequence if the initial call is not answered. This can be configured to ring up to five phone numbers with customizable ring patterns.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-sequential-ring-user-2" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-sequential-ring-user-2", - "short": "Modify Sequential Ring Criteria Settings for User", - "long": "Update Sequential Ring Criteria Settings for the authenticated user.\n\nSequential Ring criteria defines rules for when sequential ring should activate based on the caller and schedule.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "anonymous-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calls-from", - "type": "string" - }, - { - "name": "id", - "type": "string", - "usage": "The `id` parameter specifies the unique identifier for the sequential ring criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.", - "required": true - }, - { - "name": "phone-numbers", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "ring-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "schedule-level", - "type": "string" - }, - { - "name": "schedule-name", - "type": "string" - }, - { - "name": "schedule-type", - "type": "string" - }, - { - "name": "unavailable-callers-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-sequential-ring-user-2-2", - "short": "Modify Sequential Ring Criteria Settings for User", - "long": "Update Sequential Ring Criteria Settings for the authenticated user.\n\nSequential Ring criteria defines rules for when sequential ring should activate based on the caller and schedule.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "anonymous-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calls-from", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-sequential-ring-user-2-2" - }, - { - "name": "id", - "type": "string", - "usage": "The `id` parameter specifies the unique identifier for the sequential ring criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL1oxNzU0MzgzODQzNTA5NzY`.", - "required": true - }, - { - "name": "phone-numbers", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "ring-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "schedule-level", - "type": "string" - }, - { - "name": "schedule-name", - "type": "string" - }, - { - "name": "schedule-type", - "type": "string" - }, - { - "name": "unavailable-callers-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-user-executive-alert", - "short": "Modify User Executive Alert Settings", - "long": "Update executive alert settings for the authenticated user.\n\nExecutive Alert settings in Webex allow you to control how calls are routed to executive assistants, including alerting mode, rollover options, and caller ID presentation. You can configure settings such as sequential or simultaneous alerting, and specify what happens when calls aren't answered.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "alerting-mode", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "clid-name-mode", - "type": "string" - }, - { - "name": "clid-phone-number-mode", - "type": "string" - }, - { - "name": "custom-clidname", - "type": "string" - }, - { - "name": "custom-clidname-in-unicode", - "type": "string" - }, - { - "name": "custom-clidphone-number", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-user-executive-alert" - }, - { - "name": "next-assistant-number-of-rings", - "type": "int64", - "default": "0" - }, - { - "name": "rollover-action", - "type": "string" - }, - { - "name": "rollover-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "rollover-forward-to-phone-number", - "type": "string" - }, - { - "name": "rollover-wait-time-in-secs", - "type": "int64", - "default": "0" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-user-executive-filtering", - "short": "Modify User Executive Call Filtering Settings", - "long": "Update executive call filtering settings for the authenticated user.\n\nExecutive Call Filtering in Webex allows you to control which calls are allowed to reach the executive assistant based on custom criteria, such as specific phone numbers or call types. You can enable or disable call filtering and configure filter rules to manage incoming calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-user-executive-filtering" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-user-executive-filtering-2", - "short": "Modify User Executive Call Filtering Criteria Settings", - "long": "Update executive call filtering criteria settings for the authenticated user.\n\nExecutive Call Filtering Criteria in Webex allows you to modify detailed configuration for a specific filter rule. This includes updating schedule settings, phone number filters, and call routing preferences for executive call filtering.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-user-executive-filtering-2" - }, - { - "name": "id", - "type": "string", - "usage": "The `id` parameter specifies the unique identifier for the executive call filtering criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL2RHVnpkRjltYVd4MFpYST0`.", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me update-user-executive-screening", - "short": "Modify User Executive Screening Settings", - "long": "Update executive screening settings for the authenticated user.\n\nExecutive Screening in Webex allows you to manage how incoming calls are screened and alerted based on your preferences. You can enable or disable executive screening and configure alert types and locations for notifications.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "alert-anywhere-location-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "alert-mobility-location-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "alert-shared-call-appearance-location-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "alert-type", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-user-executive-screening" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-user-schedule", - "short": "Modify User Schedule", - "long": "Modify a Schedule details for Call Settings of the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-user-schedule" - }, - { - "name": "schedule-id", - "type": "string", - "usage": "Update the schedule with the matching ID.", - "required": true - }, - { - "name": "schedule-type", - "type": "string", - "usage": "Type of the schedule. * `businessHours` - Business hours schedule type. * `holidays` - Holidays schedule type. ", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me update-user-schedule-2", - "short": "Modify User Schedule", - "long": "Modify a Schedule details for Call Settings of the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-user-schedule-2" - }, - { - "name": "schedule-id", - "type": "string", - "usage": "Update the schedule with the matching ID.", - "required": true - }, - { - "name": "schedule-type", - "type": "string", - "usage": "Type of the schedule. * `businessHours` - Business hours schedule type. * `holidays` - Holidays schedule type. ", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me update-user-schedule-event", - "short": "Modify User Schedule Event", - "long": "Modify a Schedule event details for Call Settings of the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "event-id", - "type": "string", - "usage": "Update the event with the matching ID.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-user-schedule-event" - }, - { - "name": "schedule-id", - "type": "string", - "usage": "Update an event for the specified schedule ID.", - "required": true - }, - { - "name": "schedule-type", - "type": "string", - "usage": "Type of the schedule. * `businessHours` - Business hours schedule type. * `holidays` - Holidays schedule type. ", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me update-user-schedule-event-2", - "short": "Modify User Schedule Event", - "long": "Modify a Schedule event details for Call Settings of the authenticated user.\n\nSchedules are used to define specific time periods which can be applied to various Call Settings, such as Sequential Ring, or Priority Alert. These call settings perform the defined actions based on the time frame in the schedule, making it more convenient for users to manage their calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_read`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "event-id", - "type": "string", - "usage": "Update the event with the matching ID.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-user-schedule-event-2" - }, - { - "name": "schedule-id", - "type": "string", - "usage": "Update an event for the specified schedule ID.", - "required": true - }, - { - "name": "schedule-type", - "type": "string", - "usage": "Type of the schedule. * `businessHours` - Business hours schedule type. * `holidays` - Holidays schedule type. ", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me update-user-single-number-reach", - "short": "Modify User's Single Number Reach Settings", - "long": "Updates single number reach settings associated with the authenticated user.\n\nThe \"Single Number Reach\" feature in Webex allows users to access their business phone capabilities from any device, making it easy to make and receive calls as if at their office. This is especially useful for remote or mobile workers needing flexibility.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "alert-all-locations-for-click-to-dial-calls-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-user-single-number-reach" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-user-single-number-reach-contact", - "short": "Modify User's Single Number Reach Contact Settings", - "long": "Update the contact settings of single number reach for the authenticated user.\n\nThe \"Single Number Reach\" feature in Webex allows users to access their business phone capabilities from any device, making it easy to make and receive calls as if at their office. This is especially useful for remote or mobile workers needing flexibility.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "answer-confirmation-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "do-not-forward-calls-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-user-single-number-reach-contact" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "phone-number", - "type": "string" - }, - { - "name": "phone-number-id", - "type": "string", - "usage": "Unique identifier of the phone number.", - "required": true - } - ] - }, - { - "path": "webex calling call-settings-for-me update-voicemail-person", - "short": "Configure Voicemail Settings for a Person", - "long": "Configure a person's voicemail settings.\n\nThe voicemail feature transfers callers to voicemail based on your settings. You can then retrieve voice messages via voicemail.\n\nOptionally, notifications can be sent to a mobile phone via text or email. These notifications will not include the voicemail files.\n\nThis API requires a user auth token with a scope of `spark-admin:people_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-voicemail-person" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-voicemail-pin", - "short": "Update Voicemail PIN", - "long": "Set the voicemail PIN for a person. Updates the PIN used to access voicemail messages. The PIN must comply with the passcode rules defined for the organization.\n\nThe voicemail feature is part of Webex Calling, allowing users to secure their voicemail access with a PIN. The PIN is required to retrieve voice messages via phone.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-voicemail-pin" - }, - { - "name": "passcode", - "type": "string" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-waiting-user", - "short": "Modify Call Waiting Settings for User", - "long": "Update Call Waiting Settings for the authenticated user.\n\nCall Waiting allows a user to receive multiple calls simultaneously. When the user is on an active call, they can receive an incoming call and switch between the two calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-waiting-user" - } - ] - }, - { - "path": "webex calling call-settings-for-me update-waiting-user-2", - "short": "Modify Call Waiting Settings for User", - "long": "Update Call Waiting Settings for the authenticated user.\n\nCall Waiting allows a user to receive multiple calls simultaneously. When the user is on an active call, they can receive an incoming call and switch between the two calls.\n\nThis API requires a user auth token with a scope of `spark:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-waiting-user-2" - } - ] - }, - { - "path": "webex calling call-settings-for-me upload-voicemail-busy-greeting", - "short": "Upload My Busy Voicemail Greeting", - "long": "Upload your own busy voicemail greeting.\n\nExamples:\n webex calling call-settings-for-me upload-voicemail-busy-greeting --file greeting.wav\n webex calling call-settings-for-me upload-voicemail-busy-greeting --file greeting.wav --dry-run", - "flags": [ - { - "name": "file", - "type": "string", - "usage": "Path to WAV file to upload", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for upload-voicemail-busy-greeting" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization ID", - "hidden": true - } - ] - }, - { - "path": "webex calling call-settings-for-me upload-voicemail-no-answer-greeting", - "short": "Upload My No-Answer Voicemail Greeting", - "long": "Upload your own no-answer voicemail greeting.\n\nExamples:\n webex calling call-settings-for-me upload-voicemail-no-answer-greeting --file greeting.wav", - "flags": [ - { - "name": "file", - "type": "string", - "usage": "Path to WAV file to upload", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for upload-voicemail-no-answer-greeting" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization ID", - "hidden": true - } - ] - }, - { - "path": "webex calling caller-reputation-provider", - "short": "CallerReputationProvider commands" - }, - { - "path": "webex calling caller-reputation-provider get", - "short": "Get Caller Reputation Provider Providers", - "long": "Retrieves the list of available caller reputation providers and their regions for Webex Calling.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "organization-id", - "type": "string", - "usage": "Unique identifier for the organization." - } - ] - }, - { - "path": "webex calling caller-reputation-provider get-settings", - "short": "Get Caller Reputation Provider Service Settings", - "long": "Retrieves the configuration and status of the caller reputation provider service for Webex Calling.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-settings" - }, - { - "name": "organization-id", - "type": "string", - "usage": "Unique identifier for the organization." - } - ] - }, - { - "path": "webex calling caller-reputation-provider get-status", - "short": "Get Caller Reputation Provider Status", - "long": "Retrieves the current status of the caller reputation provider integration for Webex Calling.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-status" - }, - { - "name": "organization-id", - "type": "string", - "usage": "Unique identifier for the organization." - } - ] - }, - { - "path": "webex calling caller-reputation-provider unlock", - "short": "Unlock Caller Reputation Provider", - "long": "Unlocks the caller reputation provider for Webex Calling.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for unlock" - }, - { - "name": "id", - "type": "string" - }, - { - "name": "organization-id", - "type": "string", - "usage": "Unique identifier for the organization." - } - ] - }, - { - "path": "webex calling caller-reputation-provider update-settings", - "short": "Update Caller Reputation Provider Service Settings", - "long": "Updates the configuration of the caller reputation provider service for Webex Calling.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "call-allow-score-threshold", - "type": "string" - }, - { - "name": "call-block-score-threshold", - "type": "string" - }, - { - "name": "client-id", - "type": "string" - }, - { - "name": "client-secret", - "type": "string" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-settings" - }, - { - "name": "id", - "type": "string" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "organization-id", - "type": "string", - "usage": "Unique identifier for the organization." - } - ] - }, - { - "path": "webex calling calling-service", - "short": "CallingService commands" - }, - { - "path": "webex calling calling-service get-large-org-status", - "short": "Get Large Organization Status", - "long": "Get the large organization status for a customer.\n\nLarge organization status indicates whether an organization is categorized as a large organization based on the threshold percentage.\n\nThis API requires a full or read-only administrator auth token with the `spark-admin:telephony_config_read` scope.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-large-org-status" - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieves large organization status for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling calling-service get-org-call-captions-settings", - "short": "Get the organization call captions settings", - "long": "Retrieve the organization's call captions settings.\n\nThe call caption feature allows the customer to enable and manage closed captions and transcript functionality (rolling caption panel) in Webex Calling, without requiring the user to escalate the call to a meeting.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-org-call-captions-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "Unique identifier for the organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling calling-service get-org-music-hold-configuration", - "short": "Get the organization Music on Hold configuration", - "long": "Retrieve the organization's Music on Hold settings.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-org-music-hold-configuration" - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve Music on Hold settings for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling calling-service get-voicemail", - "short": "Get Voicemail Settings", - "long": "Retrieve the organization's voicemail settings.\n\nOrganizational voicemail settings determines what voicemail features a person can configure and automatic message expiration.\n\nRetrieving organization's voicemail settings requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-voicemail" - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve voicemail settings for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling calling-service get-voicemail-rules", - "short": "Get Voicemail Rules", - "long": "Retrieve the organization's voicemail rules.\n\nOrganizational voicemail rules specify the default passcode requirements. They are provided for informational purposes only and cannot be modified.\n\nRetrieving the organization's voicemail rules requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-voicemail-rules" - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve voicemail rules for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling calling-service list-announcement-languages", - "short": "Read the List of Announcement Languages", - "long": "List all languages supported by Webex Calling for announcements and voice prompts.\n\nRetrieving announcement languages requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-announcement-languages" - }, - { - "name": "tts-language", - "type": "string", - "usage": "Filter languages by TTS support." - } - ] - }, - { - "path": "webex calling calling-service update-org-call-captions-settings", - "short": "Update the organization call captions settings", - "long": "Update the organization's call captions settings.\n\nThe call caption feature allows the customer to enable and manage closed captions and transcript functionality (rolling caption panel) in Webex Calling, without requiring the user to escalate the call to a meeting.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-org-call-captions-settings" - }, - { - "name": "org-closed-captions-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "org-id", - "type": "string", - "usage": "Unique identifier for the organization.", - "hidden": true - }, - { - "name": "org-transcripts-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling calling-service update-org-music-hold-configuration", - "short": "Update the organization Music on Hold configuration", - "long": "Update the organization's Music on Hold settings.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "default-org-moh", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-org-music-hold-configuration" - }, - { - "name": "org-id", - "type": "string", - "usage": "Patch Music on Hold for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling calling-service update-voicemail", - "short": "Update Voicemail Settings", - "long": "Update the organization's voicemail settings.\n\nOrganizational voicemail settings determines what voicemail features a person can configure and automatic message expiration.\n\nUpdating an organization's voicemail settings requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-voicemail" - }, - { - "name": "message-expiry-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "number-of-days-for-message-expiry", - "type": "int64", - "default": "0" - }, - { - "name": "org-id", - "type": "string", - "usage": "Update voicemail settings for this organization.", - "hidden": true - }, - { - "name": "strict-deletion-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "voice-message-forwarding-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling calling-service update-voicemail-rules", - "short": "Update Voicemail Rules", - "long": "Update the organization's default voicemail passcode and/or rules.\n\nOrganizational voicemail rules specify the default passcode requirements.\n\nIf you choose to set a default passcode for new people added to your organization, communicate to your people what that passcode is, and that it must be reset before they can access their voicemail. If this feature is not turned on, each new person must initially set their own passcode.\n\nUpdating an organization's voicemail passcode and/or rules requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-voicemail-rules" - }, - { - "name": "org-id", - "type": "string", - "usage": "Update voicemail rules for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling client-call", - "short": "ClientCall commands" - }, - { - "path": "webex calling client-call get-org-ms-teams-settings", - "short": "Get an Organization's MS Teams Settings", - "long": "
Not supported for Webex for Government (FedRAMP)
\n\nGet organization MS Teams settings.\n\nAt an organization level, MS Teams settings allow access to viewing the `HIDE WEBEX APP` and `PRESENCE SYNC` settings.\n\nTo retrieve an organization's MS Teams settings requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-org-ms-teams-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve MS Teams settings for the organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling client-call update-org-ms-teams-setting", - "short": "Update an Organization's MS Teams Setting", - "long": "
Not supported for Webex for Government (FedRAMP)
\n\nUpdate an MS Teams setting.\n\nMS Teams setting can be updated at the organization level.\n\nRequires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-org-ms-teams-setting" - }, - { - "name": "org-id", - "type": "string", - "usage": "Update MS Teams setting value for the organization.", - "hidden": true - }, - { - "name": "setting-name", - "type": "string" - }, - { - "name": "value", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling conference-controls", - "short": "ConferenceControls commands" - }, - { - "path": "webex calling conference-controls create-participant", - "short": "Add Participant", - "long": "Adds a participant to an existing conference. The request body contains the participant's call ID.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "call-id", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-participant" - }, - { - "name": "line-owner-id", - "type": "string" - } - ] - }, - { - "path": "webex calling conference-controls deafen-participant", - "short": "Deafen Participant", - "long": "Deafens a participant (i.e. media stream will not be transmitted to the participant).\nThe request body contains the call ID of the participant to deafen", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "call-id", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for deafen-participant" - } - ] - }, - { - "path": "webex calling conference-controls get", - "short": "Get Conference Details", - "long": "Get the details of the conference. An empty JSON object body is returned if there is no conference.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "line-owner-id", - "type": "string", - "usage": "The ID of a user, workspace, or virtual line for which there is a secondary line on a device owned by the user invoking the API." - } - ] - }, - { - "path": "webex calling conference-controls hold", - "short": "Hold", - "long": "Hold the conference host. There is no request body.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for hold" - }, - { - "name": "line-owner-id", - "type": "string", - "usage": "The ID of a user, workspace, or virtual line for which there is a secondary line on a device owned by the user invoking the API." - } - ] - }, - { - "path": "webex calling conference-controls mute", - "short": "Mute", - "long": "Mutes the host or a participant. Mutes the host when no request body is provided (i.e. media stream from the host will not be transmitted to the conference). Mutes a participant when the request body contains the participant's call ID (i.e. media stream from the participant will not be transmitted to the conference).", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "call-id", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for mute" - } - ] - }, - { - "path": "webex calling conference-controls release", - "short": "Release Conference", - "long": "Release the conference (the host and all participants). Note that for a 3WC (three-way call) the [Transfer API](/docs/api/v1/call-controls/transfer) can be used to perform an attended transfer so that the participants remain connected.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for release" - }, - { - "name": "line-owner-id", - "type": "string", - "usage": "The ID of a user, workspace, or virtual line for which there is a secondary line on a device owned by the user invoking the API." - } - ] - }, - { - "path": "webex calling conference-controls resume", - "short": "Resume", - "long": "Resumes the held conference host. There is no request body.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for resume" - }, - { - "name": "line-owner-id", - "type": "string", - "usage": "The ID of a user, workspace, or virtual line for which there is a secondary line on a device owned by the user invoking the API." - } - ] - }, - { - "path": "webex calling conference-controls start", - "short": "Start Conference", - "long": "Join the user's calls into a conference. A minimum of two call IDs are required. Each call ID identifies an existing call between the user\nand a participant to be added to the conference.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "call-ids", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for start" - }, - { - "name": "line-owner-id", - "type": "string" - } - ] - }, - { - "path": "webex calling conference-controls undeafen-participant", - "short": "Undeafen Participant", - "long": "Undeafens a participant (i.e. resume transmitting the conference media stream to the participant). \nThe request body contains the call ID of the participant to undeafen.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "call-id", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for undeafen-participant" - } - ] - }, - { - "path": "webex calling conference-controls unmute", - "short": "Unmute", - "long": "Unmutes the host or a participant. Unmutes the host when no request body is provided (i.e. media stream from the host will be transmitted to the conference). Unmutes a participant when the request body contains the participant's call ID (i.e. media stream from the participant will be transmitted to the conference).", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "call-id", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for unmute" - } - ] - }, - { - "path": "webex calling converged-recordings", - "short": "ConvergedRecordings commands" - }, - { - "path": "webex calling converged-recordings delete", - "short": "Delete a Recording", - "long": "Removes a recording with a specified recording ID. The deleted recording cannot be recovered.\n\nIf a Compliance Officer deletes another user's recording, the recording will be inaccessible to regular users (host, attendees and shared), and to the Compliance officer as well. This action purges the recordings from Webex.\n\nDelete a Recording requires the `spark-compliance:recordings_write` scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "comment", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "reason", - "type": "string" - }, - { - "name": "recording-id", - "type": "string", - "usage": "A unique identifier for the recording.", - "required": true - } - ] - }, - { - "path": "webex calling converged-recordings download", - "short": "Download a converged recording to disk", - "long": "Download a converged recording (Webex Calling or WxCC call recording) to a local file.\n\nFetches the recording metadata to obtain the temporary download link,\nthen downloads the binary content and writes it to the specified output path.\n\nThe --type flag selects which download link to use:\n audio - MP3 audio track (default)\n recording - Full recording (MP4)\n transcript - VTT transcript file\n\nExamples:\n webex calling converged-recordings download --recording-id --output call.mp3\n webex calling converged-recordings download --recording-id --output call.mp4 --type recording\n webex calling converged-recordings download --recording-id --output call.vtt --type transcript", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for download" - }, - { - "name": "output", - "type": "string", - "usage": "File path to write recording to", - "required": true - }, - { - "name": "recording-id", - "type": "string", - "usage": "Recording ID", - "required": true - }, - { - "name": "type", - "type": "string", - "default": "audio", - "usage": "Download type: audio, recording, or transcript" - } - ] - }, - { - "path": "webex calling converged-recordings get", - "short": "Get Recording Details", - "long": "Retrieves details for a recording with a specified recording ID.\n\nOnly recordings of owner with the authenticated user may be retrieved.\n\nGet Recording Details requires the `spark-compliance:recordings_read` scope for compliance officer, `spark-admin:recordings_read` scope for admin and `spark:recordings_read` scope for user.\n\n#### Request Header\n\n* `timezone`: *[Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.*", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "recording-id", - "type": "string", - "usage": "A unique identifier for the recording.", - "required": true - }, - { - "name": "timezone", - "type": "string", - "usage": "e.g. UTC" - } - ] - }, - { - "path": "webex calling converged-recordings get-metadata", - "short": "Get Recording metadata", - "long": "Retrieves metadata details for a recording with a specified recording ID. The recording must be owned by the authenticated user.\n\nFor information on the metadata fields, refer to [Metadata Guide](https://developer.webex.com/docs/api/guides/consolidated-metadata-documentation-and-samples-guide)\n\nGet Recording metadata requires the `spark-compliance:recordings_read` scope for compliance officer, `spark-admin:recordings_read` for admin and `spark:recordings_read` for user.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-metadata" - }, - { - "name": "recording-id", - "type": "string", - "usage": "A unique identifier for the recording.", - "required": true - }, - { - "name": "show-all-types", - "type": "string", - "usage": "If `showAllTypes` is `true`, all attributes will be shown. If it's `false` or not specified, the following attributes of the metadata will be hidden. serviceData.callActivity.mediaStreams serviceData.callActivity.participants serviceData.callActivity.redirectInfo serviceData.callActivity.redirectedCall " - } - ] - }, - { - "path": "webex calling converged-recordings list", - "short": "List Recordings", - "long": "List recordings. You can specify a date range, and the maximum number of recordings to return.\n\nThe list returned is sorted in descending order by the date and time that the recordings were created.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\nList recordings requires the `spark:recordings_read` scope.\n\nPlease use `List Recordings for Admin or Compliance Officer` API to list all recordings for a user with the role Compliance officer or Admin\n\nRequest Header\n\n* `timezone`: *[Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.*", - "flags": [ - { - "name": "format", - "type": "string", - "usage": "Recording's file format. If specified, the API filters recordings by format. Valid values are `MP3`." - }, - { - "name": "from", - "type": "string", - "usage": "Starting date and time (inclusive) for recordings to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "location-id", - "type": "string", - "usage": "Fetch recordings for users in a particular Webex Calling location (as configured in Control Hub)." - }, - { - "name": "max", - "type": "string", - "usage": "Maximum number of recordings to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`." - }, - { - "name": "owner-type", - "type": "string", - "usage": "Recording based on type of user." - }, - { - "name": "service-type", - "type": "string", - "usage": "Recording's service-type. If specified, the API filters recordings by service-type. Valid values are `calling` and `customerAssist`." - }, - { - "name": "status", - "type": "string", - "usage": "Recording's status. If not specified or `available`, retrieves recordings that are available. Otherwise, if specified as `deleted`, retrieves recordings that have been moved into the recycle bin." - }, - { - "name": "storage-region", - "type": "string", - "usage": "Recording stored in certain Webex locations." - }, - { - "name": "timezone", - "type": "string", - "usage": "e.g. UTC" - }, - { - "name": "to", - "type": "string", - "usage": "Ending date and time (exclusive) for List recordings to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`." - }, - { - "name": "topic", - "type": "string", - "usage": "Recording's topic. If specified, the API filters recordings by topic in a case-insensitive manner." - } - ] - }, - { - "path": "webex calling converged-recordings list-admin-compliance-officer", - "short": "List Recordings for Admin or Compliance officer", - "long": "List recordings for an admin or compliance officer. You can specify a date range, and the maximum number of recordings to return.\n\nThe list returned is sorted in descending order by the date and time that the recordings were created.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\nList recordings requires the `spark-compliance:recordings_read` scope for compliance officer and `spark-admin:recordings_read` scope for admin.\n\n#### Request Header\n\n* `timezone`: *[Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.*", - "flags": [ - { - "name": "format", - "type": "string", - "usage": "Recording's file format. If specified, the API filters recordings by format. Valid values are `MP3`." - }, - { - "name": "from", - "type": "string", - "usage": "Starting date and time (inclusive) for recordings to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`. The interval between `from` and `to` must be within 30 days." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-admin-compliance-officer" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "location-id", - "type": "string", - "usage": "Fetch recordings for users in a particular Webex Calling location (as configured in Control Hub)." - }, - { - "name": "max", - "type": "string", - "usage": "Maximum number of recordings to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`." - }, - { - "name": "owner-email", - "type": "string", - "usage": "Webex email address to fetch recordings for a particular user." - }, - { - "name": "owner-id", - "type": "string", - "usage": "Webex user Id to fetch recordings for a particular user." - }, - { - "name": "owner-type", - "type": "string", - "usage": "Recording based on type of user." - }, - { - "name": "service-type", - "type": "string", - "usage": "Recording's service-type. If specified, the API filters recordings by service-type. Valid values are `calling` and `customerAssist`." - }, - { - "name": "status", - "type": "string", - "usage": "Recording's status. If not specified or `available`, retrieves recordings that are available. if specified as `purged`, retrieves recordings those are deleted but available to a compliance officer. Otherwise, if specified as `deleted`, retrieves recordings that have been moved into the recycle bin." - }, - { - "name": "storage-region", - "type": "string", - "usage": "Recording stored in certain Webex locations." - }, - { - "name": "timezone", - "type": "string", - "usage": "e.g. UTC" - }, - { - "name": "to", - "type": "string", - "usage": "Ending date and time (exclusive) for List recordings to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`. The interval between `from` and `to` must be within 30 days." - }, - { - "name": "topic", - "type": "string", - "usage": "Recording's topic. If specified, the API filters recordings by topic in a case-insensitive manner." - } - ] - }, - { - "path": "webex calling converged-recordings move-recycle-bin", - "short": "Move Recordings into the Recycle Bin", - "long": "Move recordings into the recycle bin with recording IDs or move all the recordings to the recycle bin.\n\nOnly the following two entities can use this API\n\n* Administrator: A user or an application with the scope `spark-admin:recordings_write`.\n\n* User: An authenticated user who does not have the scope `spark-admin:recordings_write` but has `spark:recordings_write`.\n\nAs an `administrator`, you can move a list of recordings or all recordings of a particular user within the org you manage to the recycle bin.\n\nAs a `user`, you can move a list of your own recordings or all your recordings to the recycle bin.\n\nRecordings in the recycle bin can be recovered by [Restore Recordings from Recycle Bin](/docs/api/v1/converged-recordings/restore-recordings-from-recycle-bin) API. If you'd like to empty recordings from the recycle bin, you can use [Purge Recordings from Recycle Bin](/docs/api/v1/converged-recordings/purge-recordings-from-recycle-bin) API to purge all or some of them.\n\n* If `trashAll` is `true`:\n * `recordingIds` should be empty.\n * If the caller of this API is an `administrator`, `ownerEmail` should not be empty and all recordings owned by the `ownerEmail` will be moved to the recycle bin.\n * If the caller of this API is a `user`, `ownerEmail` should be empty and all recordings owned by the caller will be moved to the recycle bin.\n\n* If `trashAll` is `false`:\n * `ownerEmail` should be empty.\n * `recordingIds` should not be empty and its maximum size is `100`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for move-recycle-bin" - }, - { - "name": "owner-email", - "type": "string" - }, - { - "name": "recording-ids", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "trash-all", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling converged-recordings purge-recycle-bin", - "short": "Purge Recordings from Recycle Bin", - "long": "Purge recordings from the recycle bin matching the supplied recording IDs, or purge all the recordings that are in the recycle bin. A recording, once purged, cannot be restored.\n\nOnly the following two entities can use this API\n\n* Administrator: A user or an application with the scope `spark-admin:recordings_write`.\n\n* User: An authenticated user who does not have the scope `spark-admin:recordings_write` but has `spark:recordings_write`.\n\nAs an `administrator`, you can purge a list of recordings or all recordings of a particular user within the org you manage from the recycle bin.\n\nAs a `user`, you can purge a list of your own recordings or all your recordings from the recycle bin.\n\n* If `purgeAll` is `true`:\n * `recordingIds` should be empty.\n * If the caller of this API is an `administrator`, `ownerEmail` should not be empty and all recordings owned the `ownerEmail` will be purged from the recycle bin.\n * If the caller of this API is a `user`, `ownerEmail` should be empty and all recordings owned by the caller will be purged from the recycle bin.\n\n* If `purgeAll` is `false`:\n * `ownerEmail` should be empty.\n * `recordingIds` should not be empty and its maximum size is `100`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for purge-recycle-bin" - }, - { - "name": "owner-email", - "type": "string" - }, - { - "name": "purge-all", - "type": "bool", - "default": "false" - }, - { - "name": "recording-ids", - "type": "stringSlice", - "default": "[]" - } - ] - }, - { - "path": "webex calling converged-recordings reassign", - "short": "Reassign Recordings", - "long": "Reassigns recordings to a new user. As an administrator, you can reassign a list of recordings or all recordings of a particular user to a new user.\nThe recordings can belong to an org user, a virtual line, or a workspace, but the destination user should only be a valid org user.\n\n* For a org user either `ownerEmail` or `recordingIds` or both must be provided.\n\n* For a virtual line or a workspace, `ownerID` or `recordingIds` or both must be provided.\n\n* If `recordingIds` and `ownerID` is empty but `ownerEmail` is provided, all recordings owned by the `ownerEmail` are reassigned to `reassignOwnerEmail`.\n\n* If `recordingIds` is provided and `ownerEmail` or `ownerID` is also provided, only the recordings specified by `recordingIds` that are owned by `ownerEmail` or `ownerID` are reassigned to `reassignOwnerEmail`.\n\n* If `ownerEmail` and `ownerID` is empty but `recordingIds` is provided, the recordings specified by `recordingIds` are reassigned to `reassignOwnerEmail` regardless of the current owner.\n\n* If both `ownerId` and `ownerEmail` are passed along with `recordingIds`, only the recordings specified by `recordingIds` that are owned by `ownerEmail` are reassigned to `reassignOwnerEmail`.\n\n* If `recordingIds` is empty but both `ownerId` and `ownerEmail` is provided, all recordings owned by the `ownerEmail` are reassigned to `reassignOwnerEmail`.\n\nThe `spark-admin:recordings_write` scope is required to reassign recordings.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for reassign" - }, - { - "name": "owner-email", - "type": "string" - }, - { - "name": "owner-id", - "type": "string" - }, - { - "name": "reassign-owner-email", - "type": "string" - }, - { - "name": "recording-ids", - "type": "stringSlice", - "default": "[]" - } - ] - }, - { - "path": "webex calling converged-recordings restore-recycle-bin", - "short": "Restore Recordings from Recycle Bin", - "long": "Restore recordings from the recycle bin with recording IDs or restore all the recordings that are in the recycle bin.\n\nOnly the following two entities can use this API\n\n* Administrator: A user or an application with the scope `spark-admin:recordings_write`.\n\n* User: An authenticated user who does not have the scope `spark-admin:recordings_write` but has `spark:recordings_write`.\n\nAs an `administrator`, you can restore a list of recordings or all recordings of a particular user within the org you manage from the recycle bin.\n\nAs a `user`, you can restore a list of your own recordings or all your recordings from the recycle bin.\n\n* If `restoreAll` is `true`:\n * `recordingIds` should be empty.\n * If the caller of this API is an `administrator`, `ownerEmail` should not be empty and all recordings owned by the `ownerEmail` will be restored from the recycle bin.\n * If the caller of this API is a `user`, `ownerEmail` should be empty and all recordings owned by the caller will be restored from the recycle bin.\n\n* If `restoreAll` is `false`:\n * `ownerEmail` should be empty.\n * `recordingIds` should not be empty and its maximum size is `100`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for restore-recycle-bin" - }, - { - "name": "owner-email", - "type": "string" - }, - { - "name": "recording-ids", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "restore-all", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling customer-assist", - "short": "CustomerAssist commands" - }, - { - "path": "webex calling customer-assist create-wrap-up-reason", - "short": "Create Wrap Up Reason", - "long": "Create a wrap-up reason.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues.\nUpon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue.\nAdmins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nCreating a wrap-up reason requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "assign-all-queues-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "description", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-wrap-up-reason" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "queues", - "type": "stringSlice", - "default": "[]" - } - ] - }, - { - "path": "webex calling customer-assist delete-wrap-up-reason", - "short": "Delete Wrap Up Reason", - "long": "Delete a wrap-up reason.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues.\nUpon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue.\nAdmins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nDeleting the wrap-up reason requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-wrap-up-reason" - }, - { - "name": "wrapup-reason-id", - "type": "string", - "usage": "Wrap-up reason ID.", - "required": true - } - ] - }, - { - "path": "webex calling customer-assist get-available-queues", - "short": "Read Available Queues", - "long": "Return the available queues for a wrap-up reason.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues.\nUpon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue.\nAdmins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nRetrieving the available queues for a wrap-up reason requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-available-queues" - }, - { - "name": "wrapup-reason-id", - "type": "string", - "usage": "Wrap-up reason ID.", - "required": true - } - ] - }, - { - "path": "webex calling customer-assist get-screen-pop-configuration", - "short": "Read Screen Pop Configuration", - "long": "Returns the screen pop configuration for a call queue in a location.\n\nScreen pop lets agents view customer-related info in a pop-up window.\n\nRetrieving the screen pop configuration requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-screen-pop-configuration" - }, - { - "name": "location-id", - "type": "string", - "usage": "The location ID where the call queue resides.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "The organization ID of the customer or partner's organization.", - "hidden": true - }, - { - "name": "queue-id", - "type": "string", - "usage": "The call queue ID for which screen pop configuration is modified.", - "required": true - } - ] - }, - { - "path": "webex calling customer-assist get-wrap-up-reason", - "short": "Read Wrap Up Reason", - "long": "Return the wrap-up reason by ID.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues.\nUpon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue.\nAdmins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nRetrieving the wrap-up reason by ID requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-wrap-up-reason" - }, - { - "name": "wrapup-reason-id", - "type": "string", - "usage": "Wrap-up reason ID.", - "required": true - } - ] - }, - { - "path": "webex calling customer-assist get-wrap-up-reason-settings", - "short": "Read Wrap Up Reason Settings", - "long": "Return a wrap-up reason by location ID and queue ID.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues.\nUpon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue.\nAdmins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nRetrieving the wrap-up reason by location ID and queue ID requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-wrap-up-reason-settings" - }, - { - "name": "location-id", - "type": "string", - "usage": "The location ID.", - "required": true - }, - { - "name": "queue-id", - "type": "string", - "usage": "The queue ID.", - "required": true - } - ] - }, - { - "path": "webex calling customer-assist list-available-agents", - "short": "List Available Agents", - "long": "Return a list of available agents with Customer Assist license in a location.\n\nRetrieving the list of available agents requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "has-cx-essentials", - "type": "string", - "usage": "Returns only the list of available agents with Customer Assist license when `true`, otherwise returns the list of available agents with Customer Experience Basic license." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-available-agents" - }, - { - "name": "location-id", - "type": "string", - "usage": "Retrieve the list of avaiilable agents in this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "The organization ID of the customer or partner's organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling customer-assist list-wrap-up-reasons", - "short": "List Wrap Up Reasons", - "long": "Return the list of wrap-up reasons configured for a customer.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues. Upon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue. Admins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nRetrieving the list of wrap-up reasons requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-wrap-up-reasons" - } - ] - }, - { - "path": "webex calling customer-assist update-screen-pop-configuration", - "short": "Update Screen Pop Configuration", - "long": "Modifies the screen pop configuration for a call queue in a location.\n\nScreen pop lets agents view customer-related info in a pop-up window.\n\nModifying the screen pop configuration requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-screen-pop-configuration" - }, - { - "name": "location-id", - "type": "string", - "usage": "The location ID where the call queue resides.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "The organization ID of the customer or partner's organization.", - "hidden": true - }, - { - "name": "queue-id", - "type": "string", - "usage": "The call queue ID for which screen pop configuration is modified.", - "required": true - } - ] - }, - { - "path": "webex calling customer-assist update-wrap-up-reason", - "short": "Update Wrap Up Reason", - "long": "Modify a wrap-up reason.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues.\nUpon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue.\nAdmins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nModifying a wrap-up reason requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "assign-all-queues-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "description", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-wrap-up-reason" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "queues-to-assign", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "queues-to-unassign", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "unassign-all-queues-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "wrapup-reason-id", - "type": "string", - "usage": "Wrap-up reason ID.", - "required": true - } - ] - }, - { - "path": "webex calling customer-assist update-wrap-up-reason-settings", - "short": "Update Wrap Up Reason Settings", - "long": "Modify a wrap-up reason by location ID and queue ID.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues.\nUpon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue.\nAdmins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nModifying a wrap-up reason by location ID and queue ID requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "default-wrapup-reason-id", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-wrap-up-reason-settings" - }, - { - "name": "location-id", - "type": "string", - "usage": "The location ID.", - "required": true - }, - { - "name": "queue-id", - "type": "string", - "usage": "The queue ID.", - "required": true - }, - { - "name": "wrapup-reasons", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "wrapup-timer", - "type": "int64", - "default": "0" - }, - { - "name": "wrapup-timer-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling customer-assist validate-wrap-up-reason", - "short": "Validate Wrap Up Reason", - "long": "Validate the wrap-up reason name.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues.\nUpon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue.\nAdmins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nValidating the wrap-up reason name requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for validate-wrap-up-reason" - }, - { - "name": "name", - "type": "string" - } - ] - }, - { - "path": "webex calling customer-experience-essentials", - "short": "CustomerExperienceEssentials commands" - }, - { - "path": "webex calling customer-experience-essentials create-wrap-up-reason", - "short": "Create Wrap Up Reason", - "long": "Create a wrap-up reason.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues.\nUpon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue.\nAdmins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nCreating a wrap-up reason requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "assign-all-queues-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "description", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-wrap-up-reason" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "queues", - "type": "stringSlice", - "default": "[]" - } - ] - }, - { - "path": "webex calling customer-experience-essentials delete-wrap-up-reason", - "short": "Delete Wrap Up Reason", - "long": "Delete a wrap-up reason.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues.\nUpon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue.\nAdmins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nDeleting the wrap-up reason requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-wrap-up-reason" - }, - { - "name": "wrapup-reason-id", - "type": "string", - "usage": "Wrap-up reason ID.", - "required": true - } - ] - }, - { - "path": "webex calling customer-experience-essentials get-available-queues", - "short": "Read Available Queues", - "long": "Return the available queues for a wrap-up reason.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues.\nUpon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue.\nAdmins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nRetrieving the available queues for a wrap-up reason requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-available-queues" - }, - { - "name": "wrapup-reason-id", - "type": "string", - "usage": "Wrap-up reason ID.", - "required": true - } - ] - }, - { - "path": "webex calling customer-experience-essentials get-screen-pop-configuration", - "short": "Read Screen Pop Configuration", - "long": "Returns the screen pop configuration for a call queue in a location.\n\nScreen pop lets agents view customer-related info in a pop-up window.\n\nRetrieving the screen pop configuration requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-screen-pop-configuration" - }, - { - "name": "location-id", - "type": "string", - "usage": "The location ID where the call queue resides.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "The organization ID of the customer or partner's organization.", - "hidden": true - }, - { - "name": "queue-id", - "type": "string", - "usage": "The call queue ID for which screen pop configuration is modified.", - "required": true - } - ] - }, - { - "path": "webex calling customer-experience-essentials get-wrap-up-reason", - "short": "Read Wrap Up Reason", - "long": "Return the wrap-up reason by ID.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues.\nUpon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue.\nAdmins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nRetrieving the wrap-up reason by ID requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-wrap-up-reason" - }, - { - "name": "wrapup-reason-id", - "type": "string", - "usage": "Wrap-up reason ID.", - "required": true - } - ] - }, - { - "path": "webex calling customer-experience-essentials get-wrap-up-reason-settings", - "short": "Read Wrap Up Reason Settings", - "long": "Return a wrap-up reason by location ID and queue ID.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues.\nUpon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue.\nAdmins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nRetrieving the wrap-up reason by location ID and queue ID requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-wrap-up-reason-settings" - }, - { - "name": "location-id", - "type": "string", - "usage": "The location ID.", - "required": true - }, - { - "name": "queue-id", - "type": "string", - "usage": "The queue ID.", - "required": true - } - ] - }, - { - "path": "webex calling customer-experience-essentials list-available-agents", - "short": "List Available Agents", - "long": "Return a list of available agents with Customer Experience Essentials license in a location.\n\nRetrieving the list of available agents requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "has-cx-essentials", - "type": "string", - "usage": "Returns only the list of available agents with Customer Experience Essentials license when `true`, otherwise returns the list of available agents with Customer Experience Basic license." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-available-agents" - }, - { - "name": "location-id", - "type": "string", - "usage": "Retrieve the list of avaiilable agents in this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "The organization ID of the customer or partner's organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling customer-experience-essentials list-wrap-up-reasons", - "short": "List Wrap Up Reasons", - "long": "Return the list of wrap-up reasons configured for a customer.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues. Upon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue. Admins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nRetrieving the list of wrap-up reasons requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-wrap-up-reasons" - } - ] - }, - { - "path": "webex calling customer-experience-essentials update-screen-pop-configuration", - "short": "Update Screen Pop Configuration", - "long": "Modifies the screen pop configuration for a call queue in a location.\n\nScreen pop lets agents view customer-related info in a pop-up window.\n\nModifying the screen pop configuration requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-screen-pop-configuration" - }, - { - "name": "location-id", - "type": "string", - "usage": "The location ID where the call queue resides.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "The organization ID of the customer or partner's organization.", - "hidden": true - }, - { - "name": "queue-id", - "type": "string", - "usage": "The call queue ID for which screen pop configuration is modified.", - "required": true - } - ] - }, - { - "path": "webex calling customer-experience-essentials update-wrap-up-reason", - "short": "Update Wrap Up Reason", - "long": "Modify a wrap-up reason.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues.\nUpon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue.\nAdmins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nModifying a wrap-up reason requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "assign-all-queues-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "description", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-wrap-up-reason" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "queues-to-assign", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "queues-to-unassign", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "unassign-all-queues-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "wrapup-reason-id", - "type": "string", - "usage": "Wrap-up reason ID.", - "required": true - } - ] - }, - { - "path": "webex calling customer-experience-essentials update-wrap-up-reason-settings", - "short": "Update Wrap Up Reason Settings", - "long": "Modify a wrap-up reason by location ID and queue ID.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues.\nUpon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue.\nAdmins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nModifying a wrap-up reason by location ID and queue ID requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "default-wrapup-reason-id", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-wrap-up-reason-settings" - }, - { - "name": "location-id", - "type": "string", - "usage": "The location ID.", - "required": true - }, - { - "name": "queue-id", - "type": "string", - "usage": "The queue ID.", - "required": true - }, - { - "name": "wrapup-reasons", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "wrapup-timer", - "type": "int64", - "default": "0" - }, - { - "name": "wrapup-timer-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling customer-experience-essentials validate-wrap-up-reason", - "short": "Validate Wrap Up Reason", - "long": "Validate the wrap-up reason name.\n\nAgents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues.\nUpon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue.\nAdmins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary.\n\nValidating the wrap-up reason name requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for validate-wrap-up-reason" - }, - { - "name": "name", - "type": "string" - } - ] - }, - { - "path": "webex calling dect-devices", - "short": "DectDevices commands" - }, - { - "path": "webex calling dect-devices create-handset-network", - "short": "Add a Handset to a DECT Network", - "long": "Add a handset to a DECT network in a location in an organization.\n\nAdding a handset to a DECT network requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n
Adding a DECT handset to a person with a Webex Calling Standard license will disable Webex Calling across their Webex mobile, tablet, desktop, and browser applications.
\n\n
Adding or removing handsets to the DECT network in less than 90 seconds may result in base station not having the latest configuration until the base station is rebooted.
", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "custom-display-name", - "type": "string" - }, - { - "name": "dect-network-id", - "type": "string", - "usage": "A unique identifier for the DECT network.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-handset-network" - }, - { - "name": "line1-member-id", - "type": "string" - }, - { - "name": "line2-member-id", - "type": "string" - }, - { - "name": "location-id", - "type": "string", - "usage": "Add handset in this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Add handset in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling dect-devices create-list-handsets-network", - "short": "Add a List of Handsets to a DECT Network", - "long": "Add a list of up to 50 handsets to a DECT network in a location.\n\nA DECT network acts as a container that can support up to 1,000 lines across all handsets, with each handset capable of handling up to two lines. Once the network is created, you can add bases, handsets, and assign users or lines as needed.\n\nAdding a list of handsets to a DECT network requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n
Adding a DECT handset to a person with a Webex Calling Standard license will disable Webex Calling across their Webex mobile, tablet, desktop, and browser applications.\n\n
\n\n
Adding or removing handsets to the DECT network in less than 90 seconds may result in base station not having the latest configuration until the base station is rebooted.
", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "dect-network-id", - "type": "string", - "usage": "A unique identifier for the DECT network.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-list-handsets-network" - }, - { - "name": "location-id", - "type": "string", - "usage": "Add handsets in this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Add handsets in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling dect-devices create-multiple-base-stations", - "short": "Create Multiple Base Stations", - "long": "This API is used to create multiple base stations in a DECT network in an organization.\n\nCreating base stations in a DECT network requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "base-station-macs", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "dect-network-id", - "type": "string", - "usage": "Create a base station for the DECT network.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-multiple-base-stations" - }, - { - "name": "location-id", - "type": "string", - "usage": "Create a base station in this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Create a base station for a DECT network in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling dect-devices create-network", - "short": "Create a DECT Network", - "long": "Create a multi-cell DECT network for a given location.\n\nCreating a DECT network requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "default-access-code", - "type": "string" - }, - { - "name": "default-access-code-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "display-name", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-network" - }, - { - "name": "location-id", - "type": "string", - "usage": "Create a DECT network in this location.", - "required": true - }, - { - "name": "model", - "type": "string" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "Create a DECT network in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling dect-devices delete-bulk-network-base-stations", - "short": "Delete bulk DECT Network Base Stations", - "long": "Delete all the base stations in the DECT Network.\n\nA DECT network supports 2 types of base stations, DECT DBS-110 Single-Cell and DECT DBS-210 Multi-Cell.\nA DECT DBS-110 allows up to 30 lines of registration and supports 1 base station only. A DECT DBS-210 can have up to 254 base stations and supports up to 1000 lines of registration.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "dect-network-id", - "type": "string", - "usage": "Delete all the base stations in the specified DECT network ID.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-bulk-network-base-stations" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location containing the DECT network.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization containing the DECT network.", - "hidden": true - } - ] - }, - { - "path": "webex calling dect-devices delete-multiple-handsets", - "short": "Delete multiple handsets", - "long": "Delete multiple handsets or all of them.\n\nA handset can have up to two lines, and a DECT network supports a total of 120 lines across all handsets.\nA member on line1 of a DECT handset can be of type PEOPLE or PLACE while a member on line2 of a DECT handset can be of type PEOPLE, PLACE, or VIRTUAL_LINE.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n
Deleting a DECT handset from a person with a Webex Calling Standard license will enable Webex Calling across their Webex mobile, tablet, desktop, and browser applications.
\n\n
Adding or removing handsets to the DECT network in less than 90 seconds may result in base station not having the latest configuration until the base station is rebooted.
", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "dect-network-id", - "type": "string", - "usage": "Delete handset details in the specified DECT network ID.", - "required": true - }, - { - "name": "delete-all", - "type": "bool", - "default": "false" - }, - { - "name": "handset-ids", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-multiple-handsets" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location containing the DECT network.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization containing the DECT network.", - "hidden": true - } - ] - }, - { - "path": "webex calling dect-devices delete-network", - "short": "Delete DECT Network", - "long": "Delete a DECT network.\n\nDECT Networks provide roaming voice services via base stations and wireless handsets. A DECT network can be provisioned up to 1000 lines across up to 254 base stations.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "dect-network-id", - "type": "string", - "usage": "Delete the specified DECT network.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-network" - }, - { - "name": "location-id", - "type": "string", - "usage": "Delete the DECT network in the specified location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Delete the DECT network in the specified organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling dect-devices delete-network-base-station", - "short": "Delete a specific DECT Network Base Station", - "long": "Delete a specific base station in the DECT Network.\n\nA DECT network supports 2 types of base stations, DECT DBS-110 Single-Cell and DECT DBS-210 Multi-Cell.\nA DECT DBS-110 allows up to 30 lines of registration and supports 1 base station only. A DECT DBS-210 can have up to 254 base stations and supports up to 1000 lines of registration.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "base-station-id", - "type": "string", - "usage": "Delete the specific DECT base station ID.", - "required": true - }, - { - "name": "dect-network-id", - "type": "string", - "usage": "Delete a specific base station in the specified DECT network ID.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-network-base-station" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location containing the DECT network.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization containing the DECT network.", - "hidden": true - } - ] - }, - { - "path": "webex calling dect-devices delete-network-handset", - "short": "Delete specific DECT Network Handset Details", - "long": "Delete a specific DECT Network handset.\n\nA handset can have up to two lines, and a DECT network supports a total of 120 lines across all handsets.\nA member on line1 of a DECT handset can be of type PEOPLE or PLACE while a member on line2 of a DECT handset can be of type PEOPLE, PLACE, or VIRTUAL_LINE.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n
Deleting a DECT handset from a person with a Webex Calling Standard license will enable Webex Calling across their Webex mobile, tablet, desktop, and browser applications.
\n\n
Adding or removing handsets to the DECT network in less than 90 seconds may result in base station not having the latest configuration until the base station is rebooted.
", - "flags": [ - { - "name": "dect-network-id", - "type": "string", - "usage": "Delete handset details in the specified DECT network ID.", - "required": true - }, - { - "name": "handset-id", - "type": "string", - "usage": "A unique identifier for the handset.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-network-handset" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location containing the DECT network.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization containing the DECT network.", - "hidden": true - } - ] - }, - { - "path": "webex calling dect-devices generate-enable-service-password", - "short": "Generate and Enable DECT Serviceability Password", - "long": "Generates and enables a 16-character DECT serviceability password.\n\n
Generating a password and transmitting it to the DECT network can reboot the entire network. Be sure you choose an appropriate time to generate a new password.
\n\nThe DECT serviceability password, also known as the admin override password, provides read/write access to DECT base stations for performing system serviceability and troubleshooting functions.\n\nThis API requires either a full administrator auth token with the scope `spark-admin:telephony_config_write`, or a device administrator token with the scope of `spark-admin:devices_write`.", - "flags": [ - { - "name": "dect-network-id", - "type": "string", - "usage": "Unique identifier for the DECT network.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for generate-enable-service-password" - }, - { - "name": "location-id", - "type": "string", - "usage": "Unique identifier for the location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Unique identifier for the organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling dect-devices get-network", - "short": "Get DECT Network Details", - "long": "Retrieves the details of a DECT network.\n\nDECT Networks provide roaming voice services via base stations and wireless handsets. A DECT network can be provisioned up to 1000 lines across up to 254 base stations.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "dect-network-id", - "type": "string", - "usage": "Details of the specified DECT network.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-network" - }, - { - "name": "location-id", - "type": "string", - "usage": "Details of the DECT network at this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Details of the DECT network in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling dect-devices get-network-base-station", - "short": "Get the details of a specific DECT Network Base Station", - "long": "Retrieve details of a specific base station in the DECT Network.\n\nA DECT network supports 2 types of base stations, DECT DBS-110 Single-Cell and DECT DBS-210 Multi-Cell.\nA DECT DBS-110 allows up to 30 lines of registration and supports 1 base station only. A DECT DBS-210 can have up to 254 base stations and supports up to 1000 lines of registration.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "base-station-id", - "type": "string", - "usage": "Retrieve details of the specific DECT base station ID.", - "required": true - }, - { - "name": "dect-network-id", - "type": "string", - "usage": "Retrieve details of a specific base station in the specified DECT network ID.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-network-base-station" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location containing the DECT network.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization containing the DECT network.", - "hidden": true - } - ] - }, - { - "path": "webex calling dect-devices get-network-handset", - "short": "Get Specific DECT Network Handset Details", - "long": "List the specific DECT Network handset details.\n\nA handset can have up to two lines, and a DECT network supports a total of 120 lines across all handsets.\nA member on line1 of a DECT handset can be of type PEOPLE or PLACE while a member on line2 of a DECT handset can be of type PEOPLE, PLACE, or VIRTUAL_LINE.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "dect-network-id", - "type": "string", - "usage": "Search handset details in the specified DECT network ID.", - "required": true - }, - { - "name": "handset-id", - "type": "string", - "usage": "A unique identifier for the handset.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-network-handset" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location containing the DECT network.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization containing the DECT network.", - "hidden": true - } - ] - }, - { - "path": "webex calling dect-devices get-service-password-status", - "short": "Get DECT Serviceability Password status", - "long": "Retrieves the DECT serviceability password status.\n\n
If the serviceability password is enabled but has not been generated, the `enabled` status will be returned as `true` even though there is no active serviceability password.
\n\nThe DECT serviceability password, also known as the admin override password, provides read/write access to DECT base stations for performing system serviceability and troubleshooting functions.\n\nThis API requires an auth token with either a full, read-only token with the scope of `spark-admin:telephony_config_read`, or a device administrator token with the scope of `spark-admin:devices_read`.", - "flags": [ - { - "name": "dect-network-id", - "type": "string", - "usage": "Unique identifier for the DECT network.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-service-password-status" - }, - { - "name": "location-id", - "type": "string", - "usage": "Unique identifier for the location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Unique identifier for the organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling dect-devices list-handsets-network-id", - "short": "Get List of Handsets for a DECT Network ID", - "long": "List all the handsets associated with a DECT Network ID.\n\nA handset can have up to two lines, and a DECT network supports a total of 120 lines across all handsets.\nA member on line1 of a DECT handset can be of type PEOPLE or PLACE while a member on line2 of a DECT handset can be of type PEOPLE, PLACE, or VIRTUAL_LINE.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "basestation-id", - "type": "string", - "usage": "Search handset details in the specified DECT base station ID." - }, - { - "name": "dect-network-id", - "type": "string", - "usage": "Search handset details in the specified DECT network ID.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-handsets-network-id" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location containing the DECT network.", - "required": true - }, - { - "name": "member-id", - "type": "string", - "usage": "ID of the member of the handset. Members can be of type PEOPLE, PLACE, or VIRTUAL_LINE." - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization containing the DECT network.", - "hidden": true - } - ] - }, - { - "path": "webex calling dect-devices list-network-base-stations", - "short": "Get a list of DECT Network Base Stations", - "long": "Retrieve a list of base stations in a DECT Network.\n\nA DECT network supports 2 types of base stations, DECT DBS-110 Single-Cell and DECT DBS-210 Multi-Cell.\nA DECT DBS-110 allows up to 30 lines of registration and supports 1 base station only. A DECT DBS-210 can have up to 254 base stations and supports up to 1000 lines of registration.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "dect-network-id", - "type": "string", - "usage": "Retrieve the list of base stations in the specified DECT network ID.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-network-base-stations" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location containing the DECT network.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization containing the DECT network.", - "hidden": true - } - ] - }, - { - "path": "webex calling dect-devices list-networks", - "short": "Get the List of DECT Networks for an organization", - "long": "Retrieves the list of DECT networks for an organization.\n\nDECT Networks provide roaming voice services via base stations and wireless handsets. A DECT network can be provisioned up to 1000 lines across up to 254 base stations.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-networks" - }, - { - "name": "location-id", - "type": "string", - "usage": "List of DECT networks at this location." - }, - { - "name": "name", - "type": "string", - "usage": "List of DECT networks with this name." - }, - { - "name": "org-id", - "type": "string", - "usage": "List of DECT networks in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling dect-devices list-networks-associated-person", - "short": "GET List of DECT networks associated with a Person", - "long": "Retrieves the list of DECT networks for a person in an organization.\n\nDECT Network provides roaming voice services via base stations and wireless handsets. DECT network can be provisioned up to 1000 lines across up to 254 base stations.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-networks-associated-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "List of DECT networks associated with a person in this organization.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "List of DECT networks associated with this person.", - "required": true - } - ] - }, - { - "path": "webex calling dect-devices list-networks-associated-workspace", - "short": "GET List of DECT networks associated with a workspace", - "long": "Retrieves the list of DECT networks for a workspace in an organization.\n\nDECT Network provides roaming voice services via base stations and wireless handsets. DECT network can be provisioned up to 1000 lines across up to 254 base stations.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-networks-associated-workspace" - }, - { - "name": "org-id", - "type": "string", - "usage": "List of DECT networks associated with a workspace in this organization.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "List of DECT networks associated with this workspace.", - "required": true - } - ] - }, - { - "path": "webex calling dect-devices search-available-members", - "short": "Search Available Members", - "long": "List the members that are available to be assigned to DECT handset lines.\n\nThis requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "exclude-virtual-line", - "type": "string", - "usage": "If true, search results will exclude virtual lines in the member list. NOTE: Virtual lines cannot be assigned as the primary line." - }, - { - "name": "extension", - "type": "string", - "usage": "Search (Contains) based on extension." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for search-available-members" - }, - { - "name": "location-id", - "type": "string", - "usage": "List members for the location ID." - }, - { - "name": "max", - "type": "string", - "usage": "Specifies the maximum number of records that you want to fetch." - }, - { - "name": "member-name", - "type": "string", - "usage": "Search (Contains) numbers based on member name." - }, - { - "name": "order", - "type": "string", - "usage": "Sort the list of available members on the device in ascending order by name, using either last name `lname` or first name `fname`. Default sort is the last name in ascending order." - }, - { - "name": "org-id", - "type": "string", - "usage": "Search members in this organization.", - "hidden": true - }, - { - "name": "phone-number", - "type": "string", - "usage": "Search (Contains) based on number." - }, - { - "name": "start", - "type": "string", - "usage": "Specifies the offset from the first result that you want to fetch." - }, - { - "name": "usage-type", - "type": "string", - "usage": "Search for members eligible to become the owner of the device, or share line on the device." - } - ] - }, - { - "path": "webex calling dect-devices update-network", - "short": "Update DECT Network", - "long": "Update the details of a DECT network.\n\nDECT Networks provide roaming voice services via base stations and wireless handsets. A DECT network can be provisioned up to 1000 lines across up to 254 base stations.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "dect-network-id", - "type": "string", - "usage": "Update DECT network details in the specified DECT network.", - "required": true - }, - { - "name": "default-access-code", - "type": "string" - }, - { - "name": "default-access-code-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "display-name", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-network" - }, - { - "name": "location-id", - "type": "string", - "usage": "Update DECT network details in the specified location.", - "required": true - }, - { - "name": "name", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "Update DECT network details in the specified organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling dect-devices update-network-handset", - "short": "Update DECT Network Handset", - "long": "Update the line assignment on a handset.\n\nA handset can have up to two lines, and a DECT network supports a total of 120 lines across all handsets.\nA member on line1 of a DECT handset can be of type PEOPLE or PLACE while a member on line2 of a DECT handset can be of type PEOPLE, PLACE, or VIRTUAL_LINE.\n\nUpdating a DECT Network handset requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n
Adding a person with a Webex Calling Standard license to the DECT handset line1 will disable Webex Calling across their Webex mobile, tablet, desktop, and browser applications. \nRemoving a person with a Webex Calling Standard license from the DECT handset line1 will enable Webex Calling across their Webex mobile, tablet, desktop, and browser applications.
\n\n
Adding or removing handsets to the DECT network in less than 90 seconds may result in base station not having the latest configuration until the base station is rebooted.
", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "custom-display-name", - "type": "string" - }, - { - "name": "dect-network-id", - "type": "string", - "usage": "Update handset details in the specified DECT network.", - "required": true - }, - { - "name": "handset-id", - "type": "string", - "usage": "A unique identifier for the handset.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-network-handset" - }, - { - "name": "line1-member-id", - "type": "string" - }, - { - "name": "line2-member-id", - "type": "string" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location containing the DECT network.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization containing the DECT network.", - "hidden": true - } - ] - }, - { - "path": "webex calling dect-devices update-service-password-status", - "short": "Update DECT Serviceability Password status", - "long": "Enables or disables the DECT serviceability password.\n\n
Enabling or disabling the password and transmitting it to the DECT network can reboot the entire network. Be sure you choose an appropriate time for this action.
\n\n
If enabling is requested, but the serviceability password has not been generated, we will not actively reject the request even though there is no serviceability password.
\n\nThe DECT serviceability password, also known as the admin override password, provides read/write access to DECT base stations for performing system serviceability and troubleshooting functions.\n\nThis API requires either a full administrator auth token with the scope `spark-admin:telephony_config_write`, or a device administrator token with the scope of `spark-admin:devices_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "dect-network-id", - "type": "string", - "usage": "Unique identifier for the DECT network.", - "required": true - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-service-password-status" - }, - { - "name": "location-id", - "type": "string", - "usage": "Unique identifier for the location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Unique identifier for the organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling device-call", - "short": "DeviceCall commands" - }, - { - "path": "webex calling device-call apply-changes", - "short": "Apply Changes for a specific device", - "long": "Issues request to the device to download and apply changes to the configuration.\n\nApplying changes for a specific device requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "device-id", - "type": "string", - "usage": "Unique identifier for the device.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for apply-changes" - }, - { - "name": "org-id", - "type": "string", - "usage": "Apply changes for a device in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling device-call apply-line-key-template", - "short": "Apply a Line Key Template", - "long": "Apply a Line Key Template or reset devices to their factory Line Key settings.\n\nLine Keys, also known as Programmable Line Keys (PLK), are the keys found on either side of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to apply a line key template or apply factory default Line Key settings to devices in a set of locations or across all locations in the organization.\n\nApplying a Line Key Template or resetting devices to their default Line Key configuration requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for apply-line-key-template" - }, - { - "name": "org-id", - "type": "string", - "usage": "Apply Line Key Template for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling device-call create-line-key-template", - "short": "Create a Line Key Template", - "long": "Create a Line Key Template in this organization.\n\nLine Keys, also known as Programmable Line Keys (PLK), are the keys found on either side of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows customers to create a `Line Key Template` for a device model.\n\nCreating a Line Key Template requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-line-key-template" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization to which the line key template belongs.", - "hidden": true - } - ] - }, - { - "path": "webex calling device-call delete-background-images", - "short": "Delete Device Background Images", - "long": "Delete the list of designated device background images for an organization. Maximum is 10 images per request.\n\nDeleting a device background image requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-background-images" - }, - { - "name": "org-id", - "type": "string", - "usage": "Deletes the list of images in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling device-call delete-line-key-template", - "short": "Delete a Line Key Template", - "long": "Delete a Line Key Template by its template ID in an organization.\n\nLine Keys also known as Programmable Line Keys (PLK) are the keys found on either sides of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to delete an existing Line Key Templates by its ID in an organization.\n\nDeleting an existing line key template requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-line-key-template" - }, - { - "name": "org-id", - "type": "string", - "usage": "Delete a line key template for this organization.", - "hidden": true - }, - { - "name": "template-id", - "type": "string", - "usage": "Delete line key template with this template ID.", - "required": true - } - ] - }, - { - "path": "webex calling device-call get-change-settings-job-status", - "short": "Get Change Device Settings Job Status", - "long": "Get change device settings job status.\n\nProvides details of the job with `jobId` of `jobType` `calldevicesettings`.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-change-settings-job-status" - }, - { - "name": "job-id", - "type": "string", - "usage": "Retrieve job details for this `jobId`.", - "required": true - } - ] - }, - { - "path": "webex calling device-call get-count-available-members", - "short": "Get Count of Available Members", - "long": "Get the count of members that can be assigned to devices.\n\nA device member can be either a person or a workspace.\n\nThis requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "device-location-id", - "type": "string", - "usage": "Unique identifier for the device's location. When specified, filters available members to those in the same location as the device." - }, - { - "name": "exclude-virtual-line", - "type": "string", - "usage": "If true, filters out virtual lines from the available members list." - }, - { - "name": "extension", - "type": "string", - "usage": "Search (Contains) based on extension." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-count-available-members" - }, - { - "name": "location-id", - "type": "string", - "usage": "Unique identifier for the location." - }, - { - "name": "member-name", - "type": "string", - "usage": "Search (Contains) numbers based on member name." - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieves the count of available members in this organization.", - "hidden": true - }, - { - "name": "phone-number", - "type": "string", - "usage": "Search (Contains) based on number." - }, - { - "name": "usage-type", - "type": "string", - "usage": "Search for members eligible to become the owner of the device, or share line on the device. * `DEVICE_OWNER` - Search for members eligible to become the owner of the device. * `SHARED_LINE` - Search for members eligible to share line on the device." - } - ] - }, - { - "path": "webex calling device-call get-count-members", - "short": "Get Count of Members", - "long": "Get the count of members that can be assigned to the device.\n\nA device member can be either a person or a workspace.\n\nThis requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "device-id", - "type": "string", - "usage": "Unique identifier for the device.", - "required": true - }, - { - "name": "extension", - "type": "string", - "usage": "Search (Contains) based on extension." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-count-members" - }, - { - "name": "location-id", - "type": "string", - "usage": "Unique identifier for the location." - }, - { - "name": "member-name", - "type": "string", - "usage": "Search (Contains) numbers based on member name." - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieves the count of available members on the device in this organization.", - "hidden": true - }, - { - "name": "phone-number", - "type": "string", - "usage": "Search (Contains) based on number." - }, - { - "name": "usage-type", - "type": "string", - "usage": "Search for members eligible to become the owner of the device, or share line on the device. * `DEVICE_OWNER` - Search for members eligible to become the owner of the device. * `SHARED_LINE` - Search for members eligible to share line on the device." - } - ] - }, - { - "path": "webex calling device-call get-customer-dynamic-settings", - "short": "Get Customer Device Dynamic Settings", - "long": "Retrieve dynamic settings for specific device tags at customer level, allowing filters by `familyOrModelDisplayName` and `tag` identifier.\n\nThis API lets you request the values of multiple `Device Settings` at once by specifying a list of `familyOrModelDisplayName` and tag combinations.\n\nThis requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "family-or-model-display-name", - "type": "string", - "usage": "(Required) The family or model name for the device. If no tag is specified, all tags related to `familyOrModelDisplayName` are returned." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-customer-dynamic-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "List of device dynamic settings in this organization.", - "hidden": true - }, - { - "name": "tags", - "type": "stringSlice", - "default": "[]" - } - ] - }, - { - "path": "webex calling device-call get-customer-dynamic-settings-2", - "short": "Get Customer Device Dynamic Settings", - "long": "Retrieve dynamic settings for specific device tags at customer level, allowing filters by `familyOrModelDisplayName` and `tag` identifier.\n\nThis API lets you request the values of multiple `Device Settings` at once by specifying a list of `familyOrModelDisplayName` and tag combinations.\n\nThis requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "family-or-model-display-name", - "type": "string", - "usage": "The family or model name for the device. If no tag is specified, all tags related to `familyOrModelDisplayName` are returned." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-customer-dynamic-settings-2" - }, - { - "name": "org-id", - "type": "string", - "usage": "List of device dynamic settings in this organization.", - "hidden": true - }, - { - "name": "tags", - "type": "stringSlice", - "default": "[]" - } - ] - }, - { - "path": "webex calling device-call get-dect-type-list", - "short": "Read the DECT device type list", - "long": "
Not supported for Webex for Government (FedRAMP).
\n\nGet DECT device type list with base stations and line ports supported count. This is a static list.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-dect-type-list" - }, - { - "name": "org-id", - "type": "string", - "hidden": true - } - ] - }, - { - "path": "webex calling device-call get-dect-type-list-deprecated", - "short": "Read the DECT device type list - Deprecated", - "long": "
Not supported for Webex for Government (FedRAMP).
\n\n
The REST path for this API has changed to [GET /telephony/config/devices/dectNetworks/supportedDevices{?orgId}]. The use of this old REST path is deprecated and will be decommissioned on October 10, 2024. Please start using it for all future projects.
\n\nGet DECT device type list with base stations and line ports supported count. This is a static list.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-dect-type-list-deprecated" - }, - { - "name": "org-id", - "type": "string", - "hidden": true - } - ] - }, - { - "path": "webex calling device-call get-dynamic-settings", - "short": "Get Device Dynamic Settings", - "long": "Retrieve settings for a specified device.\n\nThis API retrieves device settings based on the specified `tags`; if the `tags` field is empty or missing, all settings for the device are returned.\n\nThis requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "device-id", - "type": "string", - "usage": "(Required) Device for which to retrieve settings.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-dynamic-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization to which the `device` belongs.", - "hidden": true - }, - { - "name": "tags", - "type": "stringSlice", - "default": "[]" - } - ] - }, - { - "path": "webex calling device-call get-dynamic-settings-2", - "short": "Get Device Dynamic Settings", - "long": "Retrieve settings for a specified device.\n\nThis API retrieves device settings based on the specified `tags`; if the `tags` field is empty or missing, all settings for the device are returned.\n\nThis requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "device-id", - "type": "string", - "usage": "Device for which to retrieve settings.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-dynamic-settings-2" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization to which the `device` belongs.", - "hidden": true - }, - { - "name": "tags", - "type": "stringSlice", - "default": "[]" - } - ] - }, - { - "path": "webex calling device-call get-dynamic-settings-job-status", - "short": "Get Device Dynamic Settings Job Status", - "long": "Get dynamic device settings job status.\n\nProvides details of the job with `jobId` of `jobType` `dynamicdevicesettings`.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-dynamic-settings-job-status" - }, - { - "name": "job-id", - "type": "string", - "usage": "(Required) Retrieve job details for this `jobId`.", - "required": true - } - ] - }, - { - "path": "webex calling device-call get-dynamic-settings-job-status-2", - "short": "Get Device Dynamic Settings Job Status", - "long": "Get device dynamic settings job status.\n\nProvides details of the job with `jobId` of `jobType` `dynamicdevicesettings`.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-dynamic-settings-job-status-2" - }, - { - "name": "job-id", - "type": "string", - "usage": "Retrieve job details for this `jobId`.", - "required": true - } - ] - }, - { - "path": "webex calling device-call get-job-errors-apply-line-key-template-job", - "short": "Get job errors for an Apply Line Key Template job", - "long": "GET job errors for an apply Line Key Template job in an organization.\n\nLine Keys also known as Programmable Line Keys (PLK) are the keys found on either sides of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to retrieve all the errors of an apply line key templates job by job ID in an organization.\n\nRetrieving all the errors of an apply line key templates job in an organization requires a full, user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-job-errors-apply-line-key-template-job" - }, - { - "name": "job-id", - "type": "string", - "usage": "Retrieve job errors for this `jobId`.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve list of errors for an apply line key template job in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling device-call get-job-errors-rebuild-phones-job", - "short": "Get Job Errors for a Rebuild Phones Job", - "long": "
Not supported for Webex for Government (FedRAMP)
.\n\nGet errors for a rebuild phones job in an organization.\n\nRebuild phones jobs are used when there is a change in the network configuration of phones in a location, i.e. a change in the network configuration of devices in a location from public to private and vice-versa.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-job-errors-rebuild-phones-job" - }, - { - "name": "job-id", - "type": "string", - "usage": "Retrieve job errors for this `jobId`.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve list of errors for a rebuild phones job in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling device-call get-job-status-apply-line-key-template-job", - "short": "Get the job status of an Apply Line Key Template job", - "long": "Get the status of an apply line key template job by its job ID.\n\nLine Keys also known as Programmable Line Keys (PLK) are the keys found on either sides of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to check the status of an apply line key templates job by job ID in an organization.\n\nChecking the the status of an apply line key templates job in an organization requires a full, user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-job-status-apply-line-key-template-job" - }, - { - "name": "job-id", - "type": "string", - "usage": "Retrieve job status for this `jobId`.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Check a line key template job status in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling device-call get-job-status-rebuild-phones-job", - "short": "Get the Job Status of a Rebuild Phones Job", - "long": "
Not supported for Webex for Government (FedRAMP)
.\n\nGet the details of a rebuild phones job by its job ID.\n\nRebuild phones jobs are used when there is a change in the network configuration of phones in a location, i.e. a change in the network configuration of devices in a location from public to private and vice-versa.\n\nThis API requires requires a full administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-job-status-rebuild-phones-job" - }, - { - "name": "job-id", - "type": "string", - "usage": "Retrieve job status for this `jobId`.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Check a rebuild phones job status in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling device-call get-layout-id", - "short": "Get Device Layout by Device ID", - "long": "Get layout information of a device by device ID in an organization.\n\nDevice layout customizes a user’s programmable line keys (PLK) on the phone and any attached Key Expansion Modules (KEM) with the existing configured line members and the user’s monitoring list.\n\nThis API requires a full or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "device-id", - "type": "string", - "usage": "Get device layout for this device ID.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-layout-id" - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve a device layout for the device in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling device-call get-line-key-template", - "short": "Get details of a Line Key Template", - "long": "Get detailed information about a Line Key Template by template ID in an organization.\n\nLine Keys, also known as Programmable Line Keys (PLK), are the keys found on either side of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to retrieve a line key template by its ID in an organization.\n\nRetrieving a line key template requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-line-key-template" - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve a line key template for this organization.", - "hidden": true - }, - { - "name": "template-id", - "type": "string", - "usage": "Get line key template for this template ID.", - "required": true - } - ] - }, - { - "path": "webex calling device-call get-location-dynamic-settings", - "short": "Get Location Device Dynamic Settings", - "long": "Retrieve dynamic settings for specific device tags at the specified location level, allowing filters by `familyOrModelDisplayName` and `tag` identifier.\n\nThis API lets you request the values of multiple `Device Settings` at once by specifying a list of `familyOrModelDisplayName` and tag combinations for a specific location.\n\nThis requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "family-or-model-display-name", - "type": "string", - "usage": "(Required) The family or model name for the device. If no tag is specified, all tags related to `familyOrModelDisplayName` are returned." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-location-dynamic-settings" - }, - { - "name": "location-id", - "type": "string", - "usage": "(Required) Unique identifier for the `location`.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Unique identifier for the `organization` to which this location belongs.", - "hidden": true - }, - { - "name": "tags", - "type": "stringSlice", - "default": "[]" - } - ] - }, - { - "path": "webex calling device-call get-location-dynamic-settings-2", - "short": "Get Location Device Dynamic Settings", - "long": "Retrieve dynamic settings for specific device tags at the specified location level, allowing filters by `familyOrModelDisplayName` and `tag` identifier.\n\nThis API lets you request the values of multiple `Device Settings` at once by specifying a list of `familyOrModelDisplayName` and tag combinations for a specific location.\n\nThis requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "family-or-model-display-name", - "type": "string", - "usage": "The family or model name for the device. If no tag is specified, all tags related to `familyOrModelDisplayName` are returned." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-location-dynamic-settings-2" - }, - { - "name": "location-id", - "type": "string", - "usage": "Unique identifier for the `location`.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Unique identifier for the `organization` to which this location belongs.", - "hidden": true - }, - { - "name": "tags", - "type": "stringSlice", - "default": "[]" - } - ] - }, - { - "path": "webex calling device-call get-location-settings", - "short": "Get Location Device Settings", - "long": "Get device override settings for a location.\n\nThis requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-location-settings" - }, - { - "name": "location-id", - "type": "string", - "usage": "Unique identifier for the location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization in which the device resides.", - "hidden": true - } - ] - }, - { - "path": "webex calling device-call get-members", - "short": "Get Device Members", - "long": "Get the list of all the members of the device including primary and secondary users.\n\nA device member can be either a person or a workspace. An admin can access the list of member details, modify member details and\nsearch for available members on a device.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "device-id", - "type": "string", - "usage": "Unique identifier for the device.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-members" - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieves the list of all members of the device in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling device-call get-override-settings", - "short": "Read the device override settings for a organization", - "long": "Get device override settings for an organization.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-override-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "List supported devices for an organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling device-call get-person", - "short": "Get Person Devices", - "long": "Get all devices for a person.\n\nThis requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization to which the person belongs.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Person for whom to retrieve devices.", - "required": true - } - ] - }, - { - "path": "webex calling device-call get-settings", - "short": "Get Device Settings", - "long": "Get override settings for a device.\n\nDevice settings lists all the applicable settings for MPP, ATA and Wifi devices at the device level. An admin can also modify the settings. DECT devices do not support settings at the device level.\n\nThis requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "device-id", - "type": "string", - "usage": "Unique identifier for the device.", - "required": true - }, - { - "name": "device-model", - "type": "string", - "usage": "The model type of the device. The corresponding device model display name sometimes called the product name, can also be used to specify the model." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "Settings on the device in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling device-call get-settings-groups", - "short": "Get Settings Groups", - "long": "This API returns the `settingsGroups` that define the structure and association of tags for dynamic device settings.\n\n The `settingsGroups` are used to organize the tags into logical groups, making it easier to manage and configure dynamic device settings.", - "flags": [ - { - "name": "family-or-model-display-name", - "type": "string", - "usage": "Device family or model display name to filter the `settingsGroups`." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-settings-groups" - }, - { - "name": "include-settings-type", - "type": "string", - "usage": "To show groups or tabs or both. Query param is case insensitive. Default is `ALL`." - }, - { - "name": "org-id", - "type": "string", - "usage": "Settings groups for devices in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling device-call get-settings-groups-2", - "short": "Get Settings Groups", - "long": "This API returns the `settingsGroups` that define the structure and association of tags for device dynamic settings.\n\n The `settingsGroups` are used to organize the tags into logical groups, making it easier to manage and configure device dynamic settings.", - "flags": [ - { - "name": "family-or-model-display-name", - "type": "string", - "usage": "Device family or model display name to filter the `settingsGroups`." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-settings-groups-2" - }, - { - "name": "include-settings-type", - "type": "string", - "usage": "To show groups or tabs or both. Query param is case insensitive. Default is `ALL`." - }, - { - "name": "org-id", - "type": "string", - "usage": "Settings groups for devices in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling device-call get-settings-person", - "short": "Get Device Settings for a Person", - "long": "Device settings list the compression settings for a person.\n\nDevice settings customize a device's behavior and performance. The compression field optimizes call quality for inbound and outbound calls.\n\nThis API requires a full, location, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-settings-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieves the device settings for a person in this organization.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "ID of the person for whom to retrieve device settings.", - "required": true - } - ] - }, - { - "path": "webex calling device-call get-settings-workspace", - "short": "Get Device Settings for a Workspace", - "long": "Device settings list the compression settings for a workspace.\n\nDevice settings customize a device's behavior and performance. The compression field optimizes call quality for inbound and outbound calls.\n\nThis API requires a full, location, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-settings-workspace" - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieves the device settings for a workspace in this organization.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "ID of the workspace for which to retrieve device settings.", - "required": true - } - ] - }, - { - "path": "webex calling device-call get-user-count", - "short": "Get User Devices Count", - "long": "Get the total device and application count for a person.\n\nThe device count can be used to determine if more devices can be added for users with a device count limit. For example, users with standard calling licenses can only have one physical device.\n\nThis requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-user-count" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization to which the person belongs.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Person for whom to retrieve the device count.", - "required": true - } - ] - }, - { - "path": "webex calling device-call get-validation-schema", - "short": "Get Validation Schema", - "long": "This API returns the validation schema for `tags` of all or specific `familyOrModelDisplayName`.\n\nThe schema is used to validate the `tag` for devices in the `Webex Calling` platform. The schema includes information about the required fields, data types, and validation rules for each setting.", - "flags": [ - { - "name": "family-or-model-display-name", - "type": "string", - "usage": "Device family or model display name to filter the schema." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-validation-schema" - }, - { - "name": "org-id", - "type": "string", - "usage": "Validation schema for devices in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling device-call get-webex-calling", - "short": "Get Webex Calling Device Details", - "long": "
Not supported for Webex for Government (FedRAMP)
\n\nRetrieves Webex Calling device details that include information needed for third-party device management.\n\nWebex calling devices are associated with a specific user Workspace or Virtual Line. Webex Calling devices share the location with the entity that owns them.\n\nPerson or workspace to which the device is assigned. Its fields point to a primary line/port of the device.\n\nRequires a full, location, user, or read-only admin auth token with the scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "device-id", - "type": "string", - "usage": "Unique identifier for the device.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-webex-calling" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the device resides.", - "hidden": true - } - ] - }, - { - "path": "webex calling device-call get-workspace", - "short": "Get Workspace Devices", - "long": "Get all devices for a workspace.\n\nThis requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-workspace" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization to which the workspace belongs.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "ID of the workspace for which to retrieve devices.", - "required": true - } - ] - }, - { - "path": "webex calling device-call list-apply-line-key-template-jobs", - "short": "Get List of Apply Line Key Template jobs", - "long": "Get the list of all apply line key templates jobs in an organization.\n\nLine Keys also known as Programmable Line Keys (PLK) are the keys found on either sides of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to retrieve all the apply line key templates jobs in an organization.\n\nRetrieving the list of apply line key templates jobs in an organization requires a full, user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-apply-line-key-template-jobs" - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve list of line key templates jobs in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling device-call list-background-images", - "short": "Read the List of Background Images", - "long": "Gets the list of device background images for an organization.\n\nWebex Calling supports the upload of up to 100 background image files for each org. These image files can then be referenced by MPP phones in that org for use as their background image.\n\nRetrieving this list requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-background-images" - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieves the list of images in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling device-call list-change-settings-job-errors", - "short": "List Change Device Settings Job Errors", - "long": "List change device settings job errors.\n\nLists all error details of the job with `jobId` of `jobType` `calldevicesettings`.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-change-settings-job-errors" - }, - { - "name": "job-id", - "type": "string", - "usage": "Retrieve job details for this `jobId`.", - "required": true - }, - { - "name": "max", - "type": "string", - "usage": "Specifies the maximum number of records that you want to fetch. Default is 2000" - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve list of jobs for this organization.", - "hidden": true - }, - { - "name": "start", - "type": "string", - "usage": "Specifies the offset from the first result that you want to fetch. Default is 0." - } - ] - }, - { - "path": "webex calling device-call list-change-settings-jobs", - "short": "List Change Device Settings Jobs", - "long": "List change device settings jobs.\n\nLists all the jobs for jobType `calldevicesettings` for the given organization in order of most recent one to oldest one irrespective of its status.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-change-settings-jobs" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of jobs returned to this maximum count. Default is 2000." - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve list of 'calldevicesettings' jobs for this organization.", - "hidden": true - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of jobs. Default is 0." - } - ] - }, - { - "path": "webex calling device-call list-dynamic-settings-job-errors", - "short": "List Dynamic Device Settings Job Errors", - "long": "List Update dynamic device settings job errors.\n\nLists all error details of the job with `jobId` of `jobType` `dynamicdevicesettings`.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-dynamic-settings-job-errors" - }, - { - "name": "job-id", - "type": "string", - "usage": "(Required) Retrieve job details for this `jobId`.", - "required": true - }, - { - "name": "max", - "type": "string", - "usage": "Specifies the maximum number of records that you want to fetch. Default is 2000" - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve the status of job for this organization.", - "hidden": true - }, - { - "name": "start", - "type": "string", - "usage": "Specifies the offset from the first result that you want to fetch. Default is 0." - } - ] - }, - { - "path": "webex calling device-call list-dynamic-settings-job-errors-2", - "short": "List Device Dynamic Settings Job Errors", - "long": "List Update device dynamic settings job errors.\n\nLists all error details of the job with `jobId` of `jobType` `dynamicdevicesettings`.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-dynamic-settings-job-errors-2" - }, - { - "name": "job-id", - "type": "string", - "usage": "Retrieve job details for this `jobId`.", - "required": true - }, - { - "name": "max", - "type": "string", - "usage": "Specifies the maximum number of records that you want to fetch. Default is 2000" - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve the status of job for this organization.", - "hidden": true - }, - { - "name": "start", - "type": "string", - "usage": "Specifies the offset from the first result that you want to fetch. Default is 0." - } - ] - }, - { - "path": "webex calling device-call list-dynamic-settings-jobs", - "short": "List dynamic device Settings Jobs", - "long": "List dynamic device settings jobs.\n\nLists all the jobs for job type `dynamicdevicesettings` for the given organization in order of most recent one to oldest one irrespective of its status.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-dynamic-settings-jobs" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of jobs returned to this maximum count. Default is 2000." - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve list of dynamic device settings jobs for this organization.", - "hidden": true - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of jobs. Default is 0." - } - ] - }, - { - "path": "webex calling device-call list-dynamic-settings-jobs-2", - "short": "List Device Dynamic Settings Jobs", - "long": "List device dynamic settings jobs.\n\nLists all the jobs for job type `dynamicdevicesettings` for the given organization in order of most recent one to oldest one irrespective of its status.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-dynamic-settings-jobs-2" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of jobs returned to this maximum count. Default is 2000." - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve list of device dynamic settings jobs for this organization.", - "hidden": true - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of jobs. Default is 0." - } - ] - }, - { - "path": "webex calling device-call list-line-key-templates", - "short": "Read the list of Line Key Templates", - "long": "List all Line Key Templates available for this organization.\n\nLine Keys also known as Programmable Line Keys (PLK) are the keys found on either sides of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to retrieve the list of Line Key Templates that are available for the organization.\n\nRetrieving this list requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-line-key-templates" - }, - { - "name": "org-id", - "type": "string", - "usage": "List line key templates for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling device-call list-rebuild-phones-jobs", - "short": "List Rebuild Phones Jobs", - "long": "
Not supported for Webex for Government (FedRAMP)
.\n\nGet the list of all Rebuild Phones jobs in an organization.\n\nRebuild phones jobs are used when there is a change in the network configuration of phones in a location, i.e. a change in the network configuration of devices in a location from public to private and vice-versa.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-rebuild-phones-jobs" - }, - { - "name": "org-id", - "type": "string", - "usage": "List of rebuild phones jobs in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling device-call list-supported", - "short": "Read the List of Supported Devices", - "long": "Gets the list of supported devices for an organization.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "allow-configure-layout-enabled", - "type": "string", - "usage": "List supported devices that allow the user to configure the layout." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-supported" - }, - { - "name": "org-id", - "type": "string", - "usage": "List supported devices for an organization.", - "hidden": true - }, - { - "name": "type", - "type": "string", - "usage": "List supported devices of a specific type. To excluded device types from a request or query, add `type=not:DEVICE_TYPE`. For example, `type=not:MPP`." - } - ] - }, - { - "path": "webex calling device-call list-supported-2", - "short": "Read the List of Supported Devices", - "long": "Gets the list of supported devices for an organization.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "allow-configure-layout-enabled", - "type": "string", - "usage": "List supported devices that allow the user to configure the layout." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-supported-2" - }, - { - "name": "org-id", - "type": "string", - "usage": "List supported devices for an organization.", - "hidden": true - }, - { - "name": "type", - "type": "string", - "usage": "List supported devices of a specific type. To excluded device types from a request or query, add `type=not:DEVICE_TYPE`. For example, `type=not:MPP`." - } - ] - }, - { - "path": "webex calling device-call list-supported-3", - "short": "Read the List of Supported Devices", - "long": "Gets the list of supported devices for an organization.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "allow-configure-layout-enabled", - "type": "string", - "usage": "List supported devices that allow the user to configure the layout." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-supported-3" - }, - { - "name": "org-id", - "type": "string", - "usage": "List supported devices for an organization.", - "hidden": true - }, - { - "name": "type", - "type": "string", - "usage": "List supported devices of a specific type. To excluded device types from a request or query, add `type=not:DEVICE_TYPE`. For example, `type=not:MPP`." - } - ] - }, - { - "path": "webex calling device-call preview-apply-line-key-template", - "short": "Preview Apply Line Key Template", - "long": "Preview the number of devices that will be affected by the application of a Line Key Template or when resetting devices to their factory Line Key settings.\n\nLine Keys, also known as Programmable Line Keys (PLK), are the keys found on either side of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to preview the number of devices that will be affected if a customer were to apply a Line Key Template or apply factory default Line Key settings to devices.\n\nRetrieving the number of devices affected requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for preview-apply-line-key-template" - }, - { - "name": "org-id", - "type": "string", - "usage": "Preview Line Key Template for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling device-call rebuild-phones-configuration", - "short": "Rebuild Phones Configuration", - "long": "
Not supported for Webex for Government (FedRAMP)
.\n\nRebuild all phone configurations for the specified location.\n\nRebuild phones jobs are used when there is a change in the network configuration of phones in a location, i.e. a change in the network configuration of devices in a location from public to private and vice-versa.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for rebuild-phones-configuration" - }, - { - "name": "location-id", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "Rebuild phones for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling device-call search-members", - "short": "Search Members", - "long": "Search members that can be assigned to the device.\n\nA device member can be either a person or a workspace. A admin can access the list of member details, modify member details and\nsearch for available members on a device.\n\nThis requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "device-id", - "type": "string", - "usage": "Unique identifier for the device.", - "required": true - }, - { - "name": "extension", - "type": "string", - "usage": "Search (Contains) based on extension." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for search-members" - }, - { - "name": "location-id", - "type": "string", - "usage": "Unique identifier for the location." - }, - { - "name": "max", - "type": "string", - "usage": "Specifies the maximum number of records that you want to fetch." - }, - { - "name": "member-name", - "type": "string", - "usage": "Search (Contains) numbers based on member name." - }, - { - "name": "order", - "type": "string", - "usage": "Sort the list of available members on the device in ascending order by name, use either last name `lname` or first name `fname`. Default: last name in ascending order." - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieves the list of available members on the device in this organization.", - "hidden": true - }, - { - "name": "phone-number", - "type": "string", - "usage": "Search (Contains) based on number." - }, - { - "name": "start", - "type": "string", - "usage": "Specifies the offset from the first result that you want to fetch." - }, - { - "name": "usage-type", - "type": "string", - "usage": "Search for members eligible to become the owner of the device, or share line on the device." - } - ] - }, - { - "path": "webex calling device-call update-dynamic-settings", - "short": "Update Device Dynamic Settings", - "long": "Modify dynamic settings for a specified device.\n\nThis API updates device settings based on the specified `tags`. If the `tags` field is empty, the request has no effect.\n\nThis requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "device-id", - "type": "string", - "usage": "Device for which to update settings.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-dynamic-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization to which the device belongs.", - "hidden": true - } - ] - }, - { - "path": "webex calling device-call update-dynamic-settings-across-org-location", - "short": "Update Device Dynamic Settings Across Organization or Location", - "long": "Creates a job to update device settings at location or organization level.\n\nThe job runs asynchronously and persistently, applying the requested settings in bulk to all relevant devices, which may belong to multiple families as specified in the request. If a `locationId` is provided, only devices in that location are affected.\n\nA unique job ID is returned to track status and errors.\n\nOnly one job can run per customer per organization at a time. Additionally, this job cannot run in parallel with other device jobs such as [Call device settings](/docs/api/v1/device-call-settings/change-device-settings-across-organization-or-location-job) and [Rebuild Phones](/docs/api/v1/device-call-settings/rebuild-phones-configuration).\n\nRunning a job requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-dynamic-settings-across-org-location" - }, - { - "name": "org-id", - "type": "string", - "usage": "Apply update device dynamic settings for all the devices under this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling device-call update-hoteling-settings-person-primary", - "short": "Modify Hoteling Settings for a Person's Primary Devices", - "long": "Modify hoteling login configuration on a person's Webex Calling Devices which are in effect when the device is the user's primary device and device type is PRIMARY. To view the current hoteling login settings, see the `hoteling` field in [Get Person Devices](/docs/api/v1/device-call-settings/get-person-devices).\n\nModifying devices for a person requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-hoteling-settings-person-primary" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization to which the person belongs.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "ID of the person associated with the device.", - "required": true - } - ] - }, - { - "path": "webex calling device-call update-layout-id", - "short": "Modify Device Layout by Device ID", - "long": "Modify the layout of a device by device ID in an organization.\n\nDevice layout customizes a user’s programmable line keys (PLK) on the phone and any attached Key Expansion Modules (KEM) with the existing configured line members and the user’s monitoring list.\n\nThis API requires a full or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "device-id", - "type": "string", - "usage": "Modify device layout for this device ID.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-layout-id" - }, - { - "name": "org-id", - "type": "string", - "usage": "Modify a device layout for the device in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling device-call update-line-key-template", - "short": "Modify a Line Key Template", - "long": "Modify a Line Key Template by its template ID in an organization.\n\nLine Keys, also known as Programmable Line Keys (PLK), are the keys found on either side of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to modify an existing Line Key Template by its ID in an organization.\n\nModifying an existing Line Key Template requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-line-key-template" - }, - { - "name": "org-id", - "type": "string", - "usage": "Modify a line key template for this organization.", - "hidden": true - }, - { - "name": "template-id", - "type": "string", - "usage": "Modify line key template with this template ID.", - "required": true - } - ] - }, - { - "path": "webex calling device-call update-members", - "short": "Update Members on the device", - "long": "Modify member details on the device.\n\nA device member can be either a person, virtual line or a workspace. An admin can access the list of member details, modify member details and\nsearch for available members on a device.\n\nModifying members on the device requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "device-id", - "type": "string", - "usage": "Unique identifier for the device.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-members" - }, - { - "name": "org-id", - "type": "string", - "usage": "Modify members on the device in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling device-call update-settings", - "short": "Update device settings", - "long": "Modify override settings for a device.\n\nDevice settings list all the applicable settings for an MPP and an ATA devices at the device level. Admins can also modify the settings. NOTE: DECT devices do not support settings at the device level.\n\nUpdating settings on the device requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "device-id", - "type": "string", - "usage": "Unique identifier for the device.", - "required": true - }, - { - "name": "device-model", - "type": "string", - "usage": "The model type of the device. The corresponding device model display name sometimes called the product name, can also be used to specify the model." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization in which the device resides..", - "hidden": true - } - ] - }, - { - "path": "webex calling device-call update-settings-across-org-location-job", - "short": "Change Device Settings Across Organization Or Location Job", - "long": "Change device settings across organization or locations jobs.\n\nPerforms bulk and asynchronous processing for all types of device settings initiated by organization and system admins in a stateful persistent manner. This job will modify the requested device settings across all the devices. Whenever a location ID is specified in the request, it will modify the requested device settings only for the devices that are part of the provided location within an organization.\n\nReturns a unique job ID which can then be utilized further to retrieve status and errors for the same.\n\nOnly one job per customer can be running at any given time within the same organization. An attempt to run multiple jobs at the same time will result in a 409 error response.\n\nRunning a job requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-settings-across-org-location-job" - }, - { - "name": "org-id", - "type": "string", - "usage": "Apply change device settings for all the devices under this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling device-call update-settings-person", - "short": "Update Device Settings for a Person", - "long": "Update device settings modifies the compression settings for a person.\n\nDevice settings customize a device's behavior and performance. The compression field optimizes call quality for inbound and outbound calls.\n\nThis API requires a full, location, or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "compression", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-settings-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "Modify device settings for a person in this organization.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "ID of the person for whom to update device settings.", - "required": true - } - ] - }, - { - "path": "webex calling device-call update-settings-workspace", - "short": "Update Device Settings for a Workspace", - "long": "Update device settings modifies the compression settings for a workspace.\n\nDevice settings customize a device's behavior and performance. The compression field optimizes call quality for inbound and outbound calls.\n\nThis API requires a full, location, or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "compression", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-settings-workspace" - }, - { - "name": "org-id", - "type": "string", - "usage": "Modify the device settings for a workspace in this organization.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "ID of the workspace for which to update device settings.", - "required": true - } - ] - }, - { - "path": "webex calling device-call update-specified-settings", - "short": "Update specified settings for the device.", - "long": "Modify dynamic settings for a specified device.\n\nThis API updates device settings based on the specified `tags`. If the `tags` field is empty, the request has no effect.\n\nThis requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "device-id", - "type": "string", - "usage": "(Required) Device for which to update settings.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-specified-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization to which the device belongs.", - "hidden": true - } - ] - }, - { - "path": "webex calling device-call update-third-party", - "short": "Update Third Party Device", - "long": "
Not supported for Webex for Government (FedRAMP)
\n\nModify a device's `sipPassword`.\n\nUpdating `sipPassword` on the device requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "device-id", - "type": "string", - "usage": "Unique identifier for the device.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-third-party" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the device resides.", - "hidden": true - }, - { - "name": "sip-password", - "type": "string" - } - ] - }, - { - "path": "webex calling device-call update-workspace", - "short": "Modify Workspace Devices", - "long": "Modify devices for a workspace.\n\nModifying devices for a workspace requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "guest-hours-limit", - "type": "int64", - "default": "0" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-workspace" - }, - { - "name": "limit-guest-use", - "type": "bool", - "default": "false" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization to which the workspace belongs.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "ID of the workspace for which to modify devices.", - "required": true - } - ] - }, - { - "path": "webex calling device-call updates-dynamic-settings-across-org-location", - "short": "Updates dynamic Device Settings Across Organization Or Location", - "long": "Creates a job to update device settings at location or organization level.\n\nThe job runs asynchronously and persistently, applying the requested settings in bulk to all relevant devices, which may belong to multiple families as specified in the request. If a `locationId` is provided, only devices in that location are affected.\n\nA unique job ID is returned to track status and errors.\n\nOnly one job can run per customer per organization at a time. Additionally, this job cannot run in parallel with other device jobs such as [Call device settings](/docs/api/v1/device-call-settings/change-device-settings-across-organization-or-location-job) and [Rebuild Phones](/docs/api/v1/device-call-settings/rebuild-phones-configuration).\n\nRunning a job requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for updates-dynamic-settings-across-org-location" - }, - { - "name": "org-id", - "type": "string", - "usage": "Apply update dynamic device settings for all the devices under this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling device-call upload-background-image", - "short": "Upload a Device Background Image", - "long": "Configure a device's background image by uploading an image with file format, `.jpeg` or `.png`, encoded image file. Maximum image file size allowed to upload is 625 KB.\n\nThe request must be a multipart/form-data request rather than JSON, using the image/jpeg or image/png content-type.\n\nWebex Calling supports the upload of up to 100 background image files for each org. These image files can then be referenced by MPP phones in that org for use as their background image.\n\nUploading a device background image requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**WARNING:** This API is not callable using the developer portal web interface due to the lack of support for multipart POST. This API can be utilized using other tools that support multipart POST, such as Postman.", - "flags": [ - { - "name": "device-id", - "type": "string", - "usage": "Unique identifier for the device.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for upload-background-image" - }, - { - "name": "org-id", - "type": "string", - "usage": "Uploads the image in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling device-call validate-list-mac-address", - "short": "Validate a list of MAC address", - "long": "Validate a list of MAC addresses.\n\nValidating this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for validate-list-mac-address" - }, - { - "name": "macs", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "org-id", - "type": "string", - "usage": "Validate the mac address(es) for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling devices", - "short": "Devices commands" - }, - { - "path": "webex calling devices create-activation-code", - "short": "Create a Device Activation Code", - "long": "Generate an activation code for a device in a specific workspace by `workspaceId` or for a person by `personId`. This requires an auth token with the `spark-admin:devices_write` scope, and either `identity:placeonetimepassword_create` (allows creating activation codes for workspaces only) or `identity:one_time_password` (allows creating activation codes for workspaces or persons).\n\n* Adding a device to a workspace with calling type `none` or `thirdPartySipCalling` will reset the workspace calling type to `freeCalling`.\n\n* Either `workspaceId` or `personId` should be provided. If both are supplied, the request will be invalid.\n\n* If no `model` is supplied, the `code` returned will only be accepted on RoomOS devices.\n\n* If your device is a phone, you must provide the `model` as a field. You can get the `model` from the [supported devices](/docs/api/v1/device-call-settings/read-the-list-of-supported-devices) API.\n\n
Adding a device to a person with a Webex Calling Standard license will disable Webex Calling across their Webex mobile, tablet, desktop, and browser applications.

When adding devices to a Webex Calling Professional licensed person or workspace, wait for each API call to finish before starting the next. This prevents race conditions that can cause errors when assigning primary versus secondary device status.
", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-activation-code" - }, - { - "name": "model", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "The organization associated with the activation code generated. If left empty, the organization associated with the caller will be used.", - "hidden": true - }, - { - "name": "person-id", - "type": "string" - }, - { - "name": "workspace-id", - "type": "string" - } - ] - }, - { - "path": "webex calling devices create-mac-address", - "short": "Create a Device by MAC Address", - "long": "Create a phone by its MAC address in a specific workspace or for a person.\n\nSpecify the `mac`, `model` and either `workspaceId` or `personId`.\n\n* You can get the `model` from the [supported devices](/docs/api/v1/device-call-settings/read-the-list-of-supported-devices) API.\n\n* Either `workspaceId` or `personId` should be provided. If both are supplied, the request will be invalid.\n\n* The `password` field is only required for third party devices. You can obtain the required third party phone configuration from [here](/docs/api/v1/beta-device-call-settings-with-third-party-device-support/get-third-party-device).\n\n
Adding a device to a person with a Webex Calling Standard license will disable Webex Calling across their Webex mobile, tablet, desktop, and browser applications.

When adding devices to a Webex Calling Professional licensed person or workspace, wait for each API call to finish before starting the next. This prevents race conditions that can cause errors when assigning primary versus secondary device status.
", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-mac-address" - }, - { - "name": "mac", - "type": "string" - }, - { - "name": "model", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "The organization associated with the device. If left empty, the organization associated with the caller will be used.", - "hidden": true - }, - { - "name": "password", - "type": "string" - }, - { - "name": "person-id", - "type": "string" - }, - { - "name": "workspace-id", - "type": "string" - } - ] - }, - { - "path": "webex calling devices delete", - "short": "Delete a Device", - "long": "Deletes a device, by ID. Deleting your own device requires an auth token with the `spark:devices_write` scope. Deleting any other device in the organization will require an administrator auth token with the `spark-admin:devices_write` scope.\n\nSpecify the device ID in the `deviceId` parameter in the URI.\n\n
Deleting a device from a person with a Webex Calling Standard license will enable Webex Calling across their Webex mobile, tablet, desktop, and browser applications.
", - "flags": [ - { - "name": "device-id", - "type": "string", - "usage": "A unique identifier for the device.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "org-id", - "type": "string", - "usage": "The organization associated with the device. If left empty, the organization associated with the caller will be used.", - "hidden": true - } - ] - }, - { - "path": "webex calling devices get", - "short": "Get Device Details", - "long": "Shows details for a device, by ID. This requires an auth token with the `spark:devices_read` scope to see your own device, or `spark-admin:devices_read` to see any other device in your organization.\n\nSpecify the device ID in the `deviceId` parameter in the URI.", - "flags": [ - { - "name": "device-id", - "type": "string", - "usage": " A unique identifier for the device. ", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "org-id", - "type": "string", - "usage": "The organization associated with the device. If left empty, the organization associated with the caller will be used.", - "hidden": true - } - ] - }, - { - "path": "webex calling devices list", - "short": "List Devices", - "long": "Lists all active Webex devices associated with the authenticated user, such as devices activated in personal mode. This requires the `spark:devices_read` scope. Administrators can list all devices within their organization. This requires an administrator auth token with the `spark-admin:devices_read` scope.", - "flags": [ - { - "name": "capability", - "type": "string", - "usage": " List devices with this capability. " - }, - { - "name": "connection-status", - "type": "string", - "usage": " List devices with this connection status. " - }, - { - "name": "device-platform", - "type": "string", - "usage": " List devices with this device platform. " - }, - { - "name": "display-name", - "type": "string", - "usage": " List devices with this display name. " - }, - { - "name": "error-code", - "type": "string", - "usage": " List devices with this error code. " - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "location-id", - "type": "string", - "usage": " List devices by location ID. " - }, - { - "name": "mac", - "type": "string", - "usage": " List devices with this MAC address. " - }, - { - "name": "max", - "type": "string", - "usage": "Limit the maximum number of devices in the response." - }, - { - "name": "org-id", - "type": "string", - "usage": " List devices in this organization. Only admin users of another organization (such as partners) may use this parameter. ", - "hidden": true - }, - { - "name": "permission", - "type": "string", - "usage": " List devices with this permission. " - }, - { - "name": "person-id", - "type": "string", - "usage": " List devices by person ID. " - }, - { - "name": "planned-maintenance", - "type": "string", - "usage": " List devices with this planned maintenance. " - }, - { - "name": "product", - "type": "string", - "usage": " List devices with this product name. " - }, - { - "name": "serial", - "type": "string", - "usage": " List devices with this serial number. " - }, - { - "name": "software", - "type": "string", - "usage": " List devices with this software version. " - }, - { - "name": "start", - "type": "string", - "usage": " Offset. Default is 0. " - }, - { - "name": "tag", - "type": "string", - "usage": " List devices which have a tag. Searching for multiple tags (logical AND) can be done by comma separating the `tag` values or adding several `tag` parameters. " - }, - { - "name": "type", - "type": "string", - "usage": " List devices with this type. " - }, - { - "name": "upgrade-channel", - "type": "string", - "usage": " List devices with this upgrade channel. " - }, - { - "name": "workspace-id", - "type": "string", - "usage": " List devices by workspace ID. " - }, - { - "name": "workspace-location-id", - "type": "string", - "usage": " List devices by workspace location ID. Deprecated, prefer `locationId`. " - } - ] - }, - { - "path": "webex calling devices update-tags", - "short": "Modify Device Tags", - "long": "Create, delete or update tags on a device. For your own device, this requires an auth token with the `spark:devices_write` scope. An auth token with the `spark-admin:devices_write` scope is required to operate on other devices within the organization.\n\nSpecify the device ID in the `deviceId` parameter in the URI.\n\nInclude only the tag array in the request body, no other device attributes can be changed. This action will overwrite any previous tags. A common approach is to first [GET the devices's details](/docs/api/v1/devices/get-device-details), make changes to the `tags` array, and then PATCH the new complete array with this endpoint.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "device-id", - "type": "string", - "usage": "Unique identifier for the device.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-tags" - }, - { - "name": "op", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "The organization associated with the device. If left empty, the organization associated with the caller will be used.", - "hidden": true - }, - { - "name": "path", - "type": "string" - }, - { - "name": "value", - "type": "stringSlice", - "default": "[]" - } - ] - }, - { - "path": "webex calling emergency-services", - "short": "EmergencyServices commands" - }, - { - "path": "webex calling emergency-services create-account-admin-redsky", - "short": "Create an Account and Admin in RedSky", - "long": "Create an account and admin in RedSky.\n\nThe Enhanced Emergency (E911) Service for Webex Calling provides dynamic location support and a network that routes emergency calls to Public Safety Answering Points (PSAP) around the US, its territories, and Canada. E911 services are provided in conjunction with a RedSky account.\n\nCreating a RedSky account requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "email", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-account-admin-redsky" - }, - { - "name": "org-id", - "type": "string", - "usage": "Create RedSky account for the organization.", - "hidden": true - }, - { - "name": "org-prefix", - "type": "string" - }, - { - "name": "partner-redsky-org-id", - "type": "string" - } - ] - }, - { - "path": "webex calling emergency-services create-redsky-building-address-location", - "short": "Create a RedSky Building Address and Alert Email for a Location", - "long": "Add a RedSky building address and alert email for a specified location.\n\nThe Enhanced Emergency (E911) Service for Webex Calling provides dynamic location support and a network that routes emergency calls to Public Safety Answering Points (PSAP) around the US, its territories, and Canada. E911 services are provided in conjunction with a RedSky account.\n\nCreating a building address and alert email requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-redsky-building-address-location" - }, - { - "name": "location-id", - "type": "string", - "usage": "Create the building address and alert email for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "The organization in which the location exists.", - "hidden": true - } - ] - }, - { - "path": "webex calling emergency-services get-dependencies-hunt-group-callback", - "short": "Get Dependencies for a Hunt Group Emergency Callback Number", - "long": "Retrieves the emergency callback number dependencies for a specific hunt group.\n\nHunt groups can route incoming calls to a group of people, workspaces or virtual lines. You can even configure a pattern to route to a whole group.\n\nRetrieving the dependencies requires a full, user, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-dependencies-hunt-group-callback" - }, - { - "name": "hunt-group-id", - "type": "string", - "usage": "Unique identifier for the hunt group.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve Emergency Callback Number attributes for the hunt group under this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling emergency-services get-dependencies-vline-callback", - "short": "Get Dependencies for a Virtual Line Emergency Callback Number", - "long": "Retrieves the emergency callback number dependencies for a specific virtual line.\n\nVirtual line is a capability in Webex Calling that allows administrators to configure multiple lines for Webex Calling users.\n\nRetrieving the dependencies requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-dependencies-vline-callback" - }, - { - "name": "org-id", - "type": "string", - "usage": "List virtual lines for this organization.", - "hidden": true - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Unique identifier for the virtual line.", - "required": true - } - ] - }, - { - "path": "webex calling emergency-services get-location-call-notification", - "short": "Get a Location Emergency Call Notification", - "long": "Get location emergency call notification.\n\nEmergency Call Notifications can be enabled at the organization level, allowing specified email addresses to receive email notifications when an emergency call is made. Once activated at the organization level, individual locations can configure this setting to direct notifications to specific email addresses. To comply with U.S. Public Law 115-127, also known as Kari’s Law, any call that's made from within your organization to emergency services must generate an email notification.\n\nTo retrieve location call notifications requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-location-call-notification" - }, - { - "name": "location-id", - "type": "string", - "usage": "Retrieve Emergency Call Notification attributes for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve Emergency Call Notification attributes for the location in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling emergency-services get-location-redsky-calling-parameters", - "short": "Get a Location's RedSky Emergency Calling Parameters", - "long": "Get the Emergency Calling Parameters for a specific location.\n\nThe enhanced emergency (E911) service for Webex Calling provides an emergency service designed for organizations with a hybrid or nomadic workforce. It provides dynamic location support and a network that routes emergency calls to Public Safety Answering Points (PSAP) around the US, its territories, and Canada.\n\nTo retrieve location calling parameters requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-location-redsky-calling-parameters" - }, - { - "name": "location-id", - "type": "string", - "usage": "Retrieve Calling Parameters for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve Calling Parameters for the location in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling emergency-services get-location-redsky-compliance-status", - "short": "Get a Location's RedSky Compliance Status", - "long": "Get RedSky compliance status for a specific location.\n\nThe enhanced emergency (E911) service for Webex Calling provides an emergency service designed for organizations with a hybrid or nomadic workforce. It provides dynamic location support and a network that routes emergency calls to Public Safety Answering Points (PSAP) around the US, its territories, and Canada.\n\nRetrieving the location's compliance status requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-location-redsky-compliance-status" - }, - { - "name": "location-id", - "type": "string", - "usage": "Retrieve the compliance status for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve compliance status for the location in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling emergency-services get-org-call-notification", - "short": "Get an Organization Emergency Call Notification", - "long": "Get organization emergency call notification.\n\nEmergency Call Notifications can be enabled at the organization level, allowing specified email addresses to receive email notifications when an emergency call is made. To comply with U.S. Public Law 115-127, also known as Kari’s Law, any call that's made from within your organization to emergency services must generate an email notification.\n\nTo retrieve organization call notifications requires a full, user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-org-call-notification" - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve Emergency Call Notification attributes for the organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling emergency-services get-org-compliance-status-location-status-list", - "short": "Get the Organization Compliance Status and the Location Status List", - "long": "Get the organization compliance status and the location status list for a RedSky account.\n\nThe enhanced emergency (E911) service for Webex Calling provides an emergency service designed for organizations with a hybrid or nomadic workforce. It provides dynamic location support and a network that routes emergency calls to Public Safety Answering Points (PSAP) around the US, its territories, and Canada.\n\nTo retrieve organization compliance status requires a full, user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-org-compliance-status-location-status-list" - }, - { - "name": "max", - "type": "string", - "usage": "Specifies the maximum number of records that you want to fetch." - }, - { - "name": "order", - "type": "string", - "usage": "Sort the list of locations in ascending or descending order. To sort in descending order append `-desc` to possible sort order values. Possible sort order values are `locationName` and `locationState`." - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve the compliance status and the list of location statuses for the organization.", - "hidden": true - }, - { - "name": "start", - "type": "string", - "usage": "Specifies the offset from the first result that you want to fetch." - } - ] - }, - { - "path": "webex calling emergency-services get-org-compliance-status-redsky-account", - "short": "Get the Organization Compliance Status for a RedSky Account", - "long": "Get the organization compliance status for a RedSky account. The `locationStatus.state` in the response will show the state for the location that is in the earliest stage of configuration.\n\nThe enhanced emergency (E911) service for Webex Calling provides an emergency service designed for organizations with a hybrid or nomadic workforce. It provides dynamic location support and a network that routes emergency calls to Public Safety Answering Points (PSAP) around the US, its territories, and Canada.\n\nTo retrieve organization compliance status requires a full, user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-org-compliance-status-redsky-account" - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve the compliance status for the organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling emergency-services get-person-callback", - "short": "Get a Person's Emergency Callback Number", - "long": "Retrieve a person's emergency callback number settings.\n\nEmergency Callback Configurations can be enabled at the organization level, Users without individual telephone numbers, such as extension-only users, must be set up with accurate Emergency Callback Numbers (ECBN) and Emergency Service Addresses to enable them to make emergency calls. These users can either utilize the default ECBN for their location or be assigned another specific telephone number from that location for emergency purposes.\n\nTo retrieve a person's callback number requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-person-callback" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling emergency-services get-person-callback-dependencies", - "short": "Retrieve A Person's Emergency Callback Number Dependencies", - "long": "Retrieve Emergency Callback Number dependencies for a person.\n\nEmergency Callback Configurations can be enabled at the organization level, Users without individual telephone numbers, such as extension-only users, must be set up with accurate Emergency Call Back Numbers (ECBN) to enable them to make emergency calls. These users can either utilize the default ECBN for their location or be assigned another specific telephone number from that location for emergency purposes.\n\nRetrieving the dependencies requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-person-callback-dependencies" - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve Emergency Callback Number attributes for this organization.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling emergency-services get-redsky-account", - "short": "Retrieve RedSky Account Details for an Organization", - "long": "Retrieve RedSky account details for an organization.\n\nThe Enhanced Emergency (E911) Service for Webex Calling provides dynamic location support and a network that routes emergency calls to Public Safety Answering Points (PSAP) around the US, its territories, and Canada. E911 services are provided in conjunction with a RedSky account.\n\nTo retrieve the RedSky account details requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-redsky-account" - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve RedSky account for the organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling emergency-services get-vline-callback-settings", - "short": "Get the Virtual Line's Emergency Callback settings", - "long": "Retrieves the emergency callback number settings for a specific virtual line.\n\nVirtual line is a capability in Webex Calling that allows administrators to configure multiple lines for Webex Calling users.\n\nRetrieving the dependencies requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-vline-callback-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "List virtual lines for this organization.", - "hidden": true - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Unique identifier for the virtual line.", - "required": true - } - ] - }, - { - "path": "webex calling emergency-services get-workspace-callback", - "short": "Get a Workspace Emergency Callback Number", - "long": "Retrieve the emergency callback number setting associated with a specific workspace.\n\nEmergency Callback Configurations can be enabled at the organization level, Users without individual telephone numbers, such as extension-only users, must be set up with accurate Emergency Callback Numbers (ECBN) and Emergency Service Addresses to enable them to make emergency calls. These users can either utilize the default ECBN for their location or be assigned another specific telephone number from that location for emergency purposes.\n\nTo retrieve an emergency callback number, it requires a full, location, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-workspace-callback" - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve Emergency Callback Number attributes for this organization.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Retrieve Emergency Callback Number attributes for this workspace.", - "required": true - } - ] - }, - { - "path": "webex calling emergency-services get-workspace-callback-dependencies", - "short": "Retrieve Workspace Emergency Callback Number Dependencies", - "long": "Retrieve Emergency Callback Number dependencies for a workspace.\n\nEmergency Callback Configurations can be enabled at the organization level, Users without individual telephone numbers, such as extension-only users, must be set up with accurate Emergency Call Back Numbers (ECBN) to enable them to make emergency calls. These users can either utilize the default ECBN for their location or be assigned another specific telephone number from that location for emergency purposes.\n\nRetrieving the dependencies requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-workspace-callback-dependencies" - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve Emergency Callback Number attributes for this organization.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Retrieve Emergency Callback Number attributes for this workspace.", - "required": true - } - ] - }, - { - "path": "webex calling emergency-services login-redsky-admin-account", - "short": "Login to a RedSky Admin Account", - "long": "Login to Redsky for an existing account admin user to retrieve the `companyId` and verify the status of `externalTenantEnabled`. The password provided will not be stored.\n\nThe enhanced emergency (E911) service for Webex Calling provides an emergency service designed for organizations with a hybrid or nomadic workforce. It provides dynamic location support and a network that routes emergency calls to Public Safety Answering Points (PSAP) around the US, its territories, and Canada.\n\nLogging in requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "email", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for login-redsky-admin-account" - }, - { - "name": "org-id", - "type": "string", - "usage": "Login to a RedSky account for the organization.", - "hidden": true - }, - { - "name": "password", - "type": "string" - }, - { - "name": "red-sky-org-id", - "type": "string" - } - ] - }, - { - "path": "webex calling emergency-services update-location-call-notification", - "short": "Update a Location Emergency Call Notification", - "long": "Update a location emergency call notification.\n\nOnce settings enabled at the organization level, the configured email address will receive emergency call notifications for all locations; for specific location customization, users can navigate to Management > Locations, select the Calling tab, and update the Emergency Call Notification settings.\n\nEmergency Call Notifications can be enabled at the organization level, allowing specified email addresses to receive email notifications when an emergency call is made. Once activated at the organization level, individual locations can configure this setting to direct notifications to specific email addresses. To comply with U.S. Public Law 115-127, also known as Kari’s Law, any call that's made from within your organization to emergency services must generate an email notification.\n\nTo update location call notification requires a full, user or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "email-address", - "type": "string" - }, - { - "name": "emergency-call-notification-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-location-call-notification" - }, - { - "name": "location-id", - "type": "string", - "usage": "Update Emergency Call Notification attributes for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Update Emergency Call Notification attributes for a location in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling emergency-services update-location-redsky-compliance-status", - "short": "Update a Location's RedSky Compliance Status", - "long": "Update the compliance status for a specific location.\n\nThe Enhanced Emergency (E911) Service for Webex Calling provides dynamic location support and a network that routes emergency calls to Public Safety Answering Points (PSAP) around the US, its territories, and Canada. E911 services are provided in conjunction with a RedSky account.\n\nUpdating the RedSky account's compliance status requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "compliance-status", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-location-redsky-compliance-status" - }, - { - "name": "location-id", - "type": "string", - "usage": "Update the E911 compliance status for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Update the E911 compliance status for the location in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling emergency-services update-org-call-notification", - "short": "Update an Organization Emergency Call Notification", - "long": "Update an organization emergency call notification.\n\nOnce settings are enabled at the organization level, the configured email address will receive emergency call notifications for all locations.\n\nEmergency Call Notifications can be enabled at the organization level, allowing specified email addresses to receive email notifications when an emergency call is made. To comply with U.S. Public Law 115-127, also known as Kari’s Law, any call that's made from within your organization to emergency services must generate an email notification.\n\nTo update organization call notification requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "allow-email-notification-all-location-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "email-address", - "type": "string" - }, - { - "name": "emergency-call-notification-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-org-call-notification" - }, - { - "name": "org-id", - "type": "string", - "usage": "Update Emergency Call Notification attributes for the organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling emergency-services update-org-redsky-account-compliance-status", - "short": "Update the Organization RedSky Account's Compliance Status", - "long": "Update the compliance status for the customer's RedSky account.\n\nThe Enhanced Emergency (E911) Service for Webex Calling provides dynamic location support and a network that routes emergency calls to Public Safety Answering Points (PSAP) around the US, its territories, and Canada. E911 services are provided in conjunction with a RedSky account.\n\nUpdating the RedSky account's compliance status requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "compliance-status", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-org-redsky-account-compliance-status" - }, - { - "name": "org-id", - "type": "string", - "usage": "Update E911 compliance status for the organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling emergency-services update-person-callback", - "short": "Update a Person's Emergency Callback Number", - "long": "Update a person's emergency callback number settings.\n\nEmergency Callback Configurations can be enabled at the organization level, Users without individual telephone numbers, such as extension-only users, must be set up with accurate Emergency Callback Numbers (ECBN) to enable them to make emergency calls. These users can either utilize the default ECBN for their location or be assigned another specific telephone number from that location for emergency purposes.\n\nTo update an emergency callback number requires a full, location, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "elin-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "elin-for-webex-app-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-person-callback" - }, - { - "name": "location-member-id", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - }, - { - "name": "selected", - "type": "string" - } - ] - }, - { - "path": "webex calling emergency-services update-redsky-building-address-location", - "short": "Update a RedSky Building Address for a Location", - "long": "Update a RedSky building address for a specified location.\n\nThe Enhanced Emergency (E911) Service for Webex Calling provides dynamic location support and a network that routes emergency calls to Public Safety Answering Points (PSAP) around the US, its territories, and Canada. E911 services are provided in conjunction with a RedSky account.\n\nUpdating a building address requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-redsky-building-address-location" - }, - { - "name": "location-id", - "type": "string", - "usage": "Update the building address for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "The organization in which the location exists.", - "hidden": true - } - ] - }, - { - "path": "webex calling emergency-services update-redsky-settings", - "short": "Update RedSky Service Settings", - "long": "Update the RedSky service settings.\n\nThe Enhanced Emergency (E911) Service for Webex Calling provides dynamic location support and a network that routes emergency calls to Public Safety Answering Points (PSAP) around the US, its territories, and Canada. E911 services are provided in conjunction with a RedSky account.\n\nUpdating the RedSky service settings requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "company-id", - "type": "string" - }, - { - "name": "email", - "type": "string" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "external-tenant-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-redsky-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "Update E911 settings for the organization.", - "hidden": true - }, - { - "name": "password", - "type": "string" - }, - { - "name": "secret", - "type": "string" - } - ] - }, - { - "path": "webex calling emergency-services update-vline-callback-settings", - "short": "Update a Virtual Line's Emergency Callback settings", - "long": "Update the emergency callback number settings for a specific virtual line.\n\nVirtual line is a capability in Webex Calling that allows administrators to configure multiple lines for Webex Calling users.\n\nTo update virtual line callback number requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-vline-callback-settings" - }, - { - "name": "location-member-id", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "List virtual lines for this organization.", - "hidden": true - }, - { - "name": "selected", - "type": "string" - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Unique identifier for the virtual line.", - "required": true - } - ] - }, - { - "path": "webex calling emergency-services update-workspace-callback", - "short": "Update a Workspace Emergency Callback Number", - "long": "Update the emergency callback number settings for a workspace.\n\nEmergency Callback Configurations can be enabled at the organization level, Users without individual telephone numbers, such as extension-only users, must be set up with accurate Emergency Call Back Numbers (ECBN) to enable them to make emergency calls. These users can either utilize the default ECBN for their location or be assigned another specific telephone number from that location for emergency purposes.\n\nTo update an emergency callback number requires a full, location, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "elin-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-workspace-callback" - }, - { - "name": "location-member-id", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "Updating Emergency Callback Number attributes for this organization.", - "hidden": true - }, - { - "name": "selected", - "type": "string" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Updating Emergency Callback Number attributes for this workspace.", - "required": true - } - ] - }, - { - "path": "webex calling external-voicemail", - "short": "ExternalVoicemail commands" - }, - { - "path": "webex calling external-voicemail answer", - "short": "Answer", - "long": "Answer an incoming call. When no endpointId is specified, the call is answered on the user's primary device. When an endpointId is specified, the call is answered on the device or application identified by the endpointId. The answer API is rejected if the device is not alerting for the call or the device does not support answer via API.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "call-id", - "type": "string" - }, - { - "name": "endpoint-id", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for answer" - }, - { - "name": "line-owner-id", - "type": "string" - } - ] - }, - { - "path": "webex calling external-voicemail barge", - "short": "Barge In", - "long": "Barge-in on another user's answered call. A new call is initiated to perform the barge-in in a similar manner to the dial command.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "endpoint-id", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for barge" - }, - { - "name": "line-owner-id", - "type": "string" - }, - { - "name": "single-number-reach-phone-number", - "type": "string" - }, - { - "name": "target", - "type": "string" - } - ] - }, - { - "path": "webex calling external-voicemail dial", - "short": "Dial", - "long": "Initiate an outbound call to a specified destination. This is also commonly referred to as Click to Call or Click to Dial. Alerts occur on all the devices belonging to a user unless an optional endpointId is specified in which case only the device or application identified by the endpointId is alerted. When a user answers an alerting device, an outbound call is placed from that device to the destination.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "destination", - "type": "string" - }, - { - "name": "endpoint-id", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for dial" - }, - { - "name": "line-owner-id", - "type": "string" - }, - { - "name": "single-number-reach-phone-number", - "type": "string" - } - ] - }, - { - "path": "webex calling external-voicemail divert", - "short": "Divert", - "long": "Divert a call to a destination or a user's voicemail. This is also commonly referred to as a Blind Transfer.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "call-id", - "type": "string" - }, - { - "name": "destination", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for divert" - }, - { - "name": "line-owner-id", - "type": "string" - }, - { - "name": "to-voicemail", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling external-voicemail get", - "short": "Retrieve", - "long": "Retrieve a parked call. A new call is initiated to perform the retrieval in a similar manner to the dial command. The number field from the park command response can be used as the destination for the retrieve command.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "destination", - "type": "string" - }, - { - "name": "endpoint-id", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "line-owner-id", - "type": "string" - }, - { - "name": "single-number-reach-phone-number", - "type": "string" - } - ] - }, - { - "path": "webex calling external-voicemail get-call", - "short": "Get Call Details", - "long": "Get the details of the specified active call for the user.", - "flags": [ - { - "name": "call-id", - "type": "string", - "usage": "The call identifier of the call.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-call" - }, - { - "name": "line-owner-id", - "type": "string", - "usage": "The ID of a user, workspace, or virtual line for which there is a secondary line on a device owned by the user invoking the API." - } - ] - }, - { - "path": "webex calling external-voicemail hangup", - "short": "Hangup", - "long": "Hangup a call. If used on an unanswered incoming call, the call is rejected and sent to busy.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "call-id", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for hangup" - }, - { - "name": "line-owner-id", - "type": "string" - } - ] - }, - { - "path": "webex calling external-voicemail hold", - "short": "Hold", - "long": "Hold a connected call.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "call-id", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for hold" - }, - { - "name": "line-owner-id", - "type": "string" - } - ] - }, - { - "path": "webex calling external-voicemail list-call-history", - "short": "List Call History", - "long": "Get the list of call history records for the user. A maximum of 20 call history records per type (`placed`, `missed`, `received`) are returned.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-call-history" - }, - { - "name": "type", - "type": "string", - "usage": "The type of call history records to retrieve. If not specified, then all call history records are retrieved." - } - ] - }, - { - "path": "webex calling external-voicemail list-calls", - "short": "List Calls", - "long": "Get the list of details for all active calls associated with the user.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-calls" - }, - { - "name": "line-owner-id", - "type": "string", - "usage": "The ID of a user, workspace, or virtual line for which there is a secondary line on a device owned by the user invoking the API." - } - ] - }, - { - "path": "webex calling external-voicemail mute", - "short": "Mute", - "long": "Mute a call. This API can only be used for a call that reports itself as mute capable via the muteCapable field in the call details.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "call-id", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for mute" - }, - { - "name": "line-owner-id", - "type": "string" - } - ] - }, - { - "path": "webex calling external-voicemail park", - "short": "Park", - "long": "Park a connected call. The number field in the response can be used as the destination for the retrieve command to retrieve the parked call.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "call-id", - "type": "string" - }, - { - "name": "destination", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for park" - }, - { - "name": "is-group-park", - "type": "bool", - "default": "false" - }, - { - "name": "line-owner-id", - "type": "string" - } - ] - }, - { - "path": "webex calling external-voicemail pause-recording", - "short": "Pause Recording", - "long": "Pause recording on a call. Use of this API is only valid when a call is being recorded and the user's call recording mode is set to \"On Demand\" or \"Always with Pause/Resume\".", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "call-id", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for pause-recording" - }, - { - "name": "line-owner-id", - "type": "string" - } - ] - }, - { - "path": "webex calling external-voicemail pickup", - "short": "Pickup", - "long": "Picks up an incoming call to another user. A new call is initiated to perform the pickup in a similar manner to the dial command. When target is not present, the API pickups up a call from the user's call pickup group. When target is present, the API pickups an incoming call from the specified target user.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "endpoint-id", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for pickup" - }, - { - "name": "line-owner-id", - "type": "string" - }, - { - "name": "single-number-reach-phone-number", - "type": "string" - }, - { - "name": "target", - "type": "string" - } - ] - }, - { - "path": "webex calling external-voicemail pull", - "short": "Pull", - "long": "Pull a call from one device to another. A temporary new call is initiated to perform the call pull in a similar manner to the dial command. When a user answers an alerting device, the device is connected to the pulled call and the new call created for the call pull is released.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "endpoint-id", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for pull" - }, - { - "name": "line-owner-id", - "type": "string" - } - ] - }, - { - "path": "webex calling external-voicemail push", - "short": "Push", - "long": "Pushes a call from the assistant to the executive the call is associated with. Use of this API is only valid when the assistant's call is associated with an executive.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "call-id", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for push" - }, - { - "name": "line-owner-id", - "type": "string" - } - ] - }, - { - "path": "webex calling external-voicemail reject", - "short": "Reject", - "long": "Reject an unanswered incoming call.", - "flags": [ - { - "name": "action", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "call-id", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for reject" - }, - { - "name": "line-owner-id", - "type": "string" - } - ] - }, - { - "path": "webex calling external-voicemail resume", - "short": "Resume", - "long": "Resume a held call.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "call-id", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for resume" - }, - { - "name": "line-owner-id", - "type": "string" - } - ] - }, - { - "path": "webex calling external-voicemail resume-recording", - "short": "Resume Recording", - "long": "Resume recording a call. Use of this API is only valid when a call's recording is paused and the user's call recording mode is set to \"On Demand\" or \"Always with Pause/Resume\".", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "call-id", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for resume-recording" - }, - { - "name": "line-owner-id", - "type": "string" - } - ] - }, - { - "path": "webex calling external-voicemail start-recording", - "short": "Start Recording", - "long": "Start recording a call. Use of this API is only valid when the user's call recording mode is set to \"On Demand\".", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "call-id", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for start-recording" - }, - { - "name": "line-owner-id", - "type": "string" - } - ] - }, - { - "path": "webex calling external-voicemail stop-recording", - "short": "Stop Recording", - "long": "Stop recording a call. Use of this API is only valid when a call is being recorded and the user's call recording mode is set to \"On Demand\".", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "call-id", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for stop-recording" - }, - { - "name": "line-owner-id", - "type": "string" - } - ] - }, - { - "path": "webex calling external-voicemail transfer", - "short": "Transfer", - "long": "Transfer two calls together.\n\nUnanswered incoming calls cannot be transferred but can be diverted using the divert API.\n\nIf the user has only two calls and wants to transfer them together, the `callId1` and `callId2` parameters are optional and when not provided the calls are automatically selected and transferred.\n\nIf the user has more than two calls and wants to transfer two of them together, the `callId1` and `callId2` parameters are mandatory to specify which calls are being transferred. Those are also commonly referred to as Attended Transfer, Consultative Transfer, or Supervised Transfer and will return a `204` response.\n\nIf the user wants to transfer one call to a new destination but only when the destination responds, the `callId1` and destination parameters are mandatory to specify the call being transferred and the destination.\n\nThis is referred to as a Mute Transfer and is similar to the divert API with the difference of waiting for the destination to respond prior to transferring the call. If the destination does not respond, the call is not transferred. This will return a `201` response.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "call-id1", - "type": "string" - }, - { - "name": "call-id2", - "type": "string" - }, - { - "name": "destination", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for transfer" - }, - { - "name": "line-owner-id", - "type": "string" - } - ] - }, - { - "path": "webex calling external-voicemail transmit-dtmf", - "short": "Transmit DTMF", - "long": "Transmit DTMF digits to a call.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "call-id", - "type": "string" - }, - { - "name": "dtmf", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for transmit-dtmf" - }, - { - "name": "line-owner-id", - "type": "string" - } - ] - }, - { - "path": "webex calling external-voicemail unmute", - "short": "Unmute", - "long": "Unmute a call. This API can only be used for a call that reports itself as mute capable via the muteCapable field in the call details.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "call-id", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for unmute" - }, - { - "name": "line-owner-id", - "type": "string" - } - ] - }, - { - "path": "webex calling external-voicemail update-clear-message-waiting-indicator", - "short": "Set or Clear Message Waiting Indicator (MWI) Status", - "long": "Enables an external voicemail service to SET or CLEAR the Message Waiting Indicator (MWI) for a person or workspace.\n\nInvoke the API using a bearer token from a Service App in the target organization, created by a full admin with the scope `spark-admin:calls_write`.\n\nSpecify the target user or workspace with the required `id` query parameter.\n\nOptionally, use the orgId parameter to indicate the organization; if omitted, the Service App’s organization is used.\n\nIf `orgId` is provided, it must match the Service App’s organization or be a managed organization.\n\nSet the desired action (SET or CLEAR) in the message body’s action field.\n\nLearn more about [using Webex Service Apps](https://developer.webex.com/messaging/docs/service-apps).", - "flags": [ - { - "name": "action", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-clear-message-waiting-indicator" - }, - { - "name": "id", - "type": "string", - "usage": "Unique identifier for the user or workspace." - }, - { - "name": "org-id", - "type": "string", - "usage": "Id of the organization to which the user or workspace belongs. If not provided, the orgId of the Service App is used. If provided, the organization must be the same as or managed by the Service App's organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling hot-desk", - "short": "HotDesk commands" - }, - { - "path": "webex calling hot-desk delete-session", - "short": "Delete Session", - "long": "Delete a hot desk session.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-session" - }, - { - "name": "session-id", - "type": "string", - "usage": "The unique identifier for the hot desk session.", - "required": true - } - ] - }, - { - "path": "webex calling hot-desk list-sessions", - "short": "List Sessions", - "long": "List hot desk sessions.\n\nUse query parameters to filter the response.\nThe `orgId` parameter is for use by partner administrators acting on a managed organization.\nThe `personId` and `workspaceId` parameters are optional and are used to filter the response to only include sessions for a specific person or workspace.\nWhen used together they are used as an AND filter.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-sessions" - }, - { - "name": "org-id", - "type": "string", - "usage": "List sessions in this organization. Only admin users of another organization (such as partners) may use this parameter.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "List sessions for this person." - }, - { - "name": "workspace-id", - "type": "string", - "usage": "List sessions for this workspace." - } - ] - }, - { - "path": "webex calling hot-desking-sign-in-via-voice-portal", - "short": "HotDeskingSignInViaVoicePortal commands" - }, - { - "path": "webex calling hot-desking-sign-in-via-voice-portal location", - "short": "Voice Portal Hot desking sign in details for a location", - "long": "Get the Hot desking sign in details for a location.\n\nThis requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for location" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location in which the hot desking sign in resides.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - } - ] - }, - { - "path": "webex calling hot-desking-sign-in-via-voice-portal update-location", - "short": "Update Voice Portal Hot desking sign in details for a location", - "long": "Update the Hot desking sign in details for a location.\n\nThis requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-location" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location in which the hot desking sign in resides.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "voice-portal-hot-desk-sign-in-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling hot-desking-sign-in-via-voice-portal update-user", - "short": "Update Voice Portal Hot desking sign in details for a user", - "long": "Update the Hot desking sign in details for a user.\n\nThis requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-user" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "ID of the person associated with the hot desking details.", - "required": true - }, - { - "name": "voice-portal-hot-desk-sign-in-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling hot-desking-sign-in-via-voice-portal user", - "short": "Voice Portal Hot desking sign in details for a user", - "long": "Get the Hot desking sign in details for a user.\n\nThis requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for user" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "ID of the person associated with the hot desking details.", - "required": true - } - ] - }, - { - "path": "webex calling hunt-group", - "short": "HuntGroup commands" - }, - { - "path": "webex calling hunt-group create", - "short": "Create a Hunt Group", - "long": "Create new Hunt Groups for the given location.\n\nHunt groups can route incoming calls to a group of people, workspaces or virtual lines. You can even configure a pattern to route to a whole group.\n\nCreating a hunt group requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "location-id", - "type": "string", - "usage": "Create the hunt group for the given location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Create the hunt group for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling hunt-group create-selective-forward-rule", - "short": "Create a Selective Call Forwarding Rule for a Hunt Group", - "long": "Create a Selective Call Forwarding Rule for the designated Hunt Group.\n\nA selective call forwarding rule for a hunt group allows calls to be forwarded or not forwarded to the designated number, based on the defined criteria.\n\nNote that the list of existing call forward rules is available in the hunt group's call forwarding settings.\n\nCreating a selective call forwarding rule for a hunt group requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: The Call Forwarding Rule ID will change upon modification of the Call Forwarding Rule name.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-selective-forward-rule" - }, - { - "name": "hunt-group-id", - "type": "string", - "usage": "Create the rule for this hunt group.", - "required": true - }, - { - "name": "location-id", - "type": "string", - "usage": "Location in which this hunt group exists.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Create the hunt group rule for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling hunt-group delete", - "short": "Delete a Hunt Group", - "long": "Delete the designated Hunt Group.\n\nHunt groups can route incoming calls to a group of people or workspaces. You can even configure a pattern to route to a whole group.\n\nDeleting a hunt group requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "hunt-group-id", - "type": "string", - "usage": "Delete the hunt group with the matching ID.", - "required": true - }, - { - "name": "location-id", - "type": "string", - "usage": "Location from which to delete a hunt group.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Delete the hunt group from this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling hunt-group delete-selective-forward-rule", - "short": "Delete a Selective Call Forwarding Rule for a Hunt Group", - "long": "Delete a Selective Call Forwarding Rule for the designated Hunt Group.\n\nA selective call forwarding rule for a hunt group allows calls to be forwarded or not forwarded to the designated number, based on the defined criteria.\n\nNote that the list of existing call forward rules is available in the hunt group's call forwarding settings.\n\nDeleting a selective call forwarding rule for a hunt group requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: The Call Forwarding Rule ID will change upon modification of the Call Forwarding Rule name.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-selective-forward-rule" - }, - { - "name": "hunt-group-id", - "type": "string", - "usage": "Delete the rule for this hunt group.", - "required": true - }, - { - "name": "location-id", - "type": "string", - "usage": "Location in which this hunt group exists.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Delete hunt group rule from this organization.", - "hidden": true - }, - { - "name": "rule-id", - "type": "string", - "usage": "Hunt group rule you are deleting.", - "required": true - } - ] - }, - { - "path": "webex calling hunt-group get", - "short": "Get Details for a Hunt Group", - "long": "Retrieve Hunt Group details.\n\nHunt groups can route incoming calls to a group of people, workspaces or virtual lines. You can even configure a pattern to route to a whole group.\n\nRetrieving hunt group details requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "hunt-group-id", - "type": "string", - "usage": "Retrieve settings for the hunt group with this identifier.", - "required": true - }, - { - "name": "location-id", - "type": "string", - "usage": "Retrieve settings for a hunt group in this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve hunt group settings from this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling hunt-group get-alternate-numbers", - "short": "Get Hunt Group Alternate Available Phone Numbers", - "long": "List the service and standard PSTN numbers that are available to be assigned as the hunt group's alternate phone number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-alternate-numbers" - }, - { - "name": "location-id", - "type": "string", - "usage": "Return the list of phone numbers for this location within the given organization. The maximum length is 36.", - "required": true - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of phone numbers returned to this maximum count. The default is 2000." - }, - { - "name": "org-id", - "type": "string", - "usage": "List numbers for this organization.", - "hidden": true - }, - { - "name": "phone-number", - "type": "string", - "usage": "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching phone numbers. The default is 0." - } - ] - }, - { - "path": "webex calling hunt-group get-call-forward", - "short": "Get Call Forwarding Settings for a Hunt Group", - "long": "Retrieve Call Forwarding settings for the specified Hunt Group including the list of call forwarding rules.\n\nThe call forwarding feature allows you to direct all incoming calls based on specific criteria that you define.\nBelow are the available options for configuring your call forwarding:\n1. Always forward calls to a designated number.\n2. Forward calls to a designated number based on certain criteria.\n3. Forward calls using different modes.\n\nRetrieving call forwarding settings for a hunt group requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-call-forward" - }, - { - "name": "hunt-group-id", - "type": "string", - "usage": "Read the call forwarding settings for this hunt group.", - "required": true - }, - { - "name": "location-id", - "type": "string", - "usage": "Location in which this hunt group exists.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve hunt group forwarding settings from this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling hunt-group get-forward-available-numbers", - "short": "Get Hunt Group Call Forward Available Phone Numbers", - "long": "List the service and standard PSTN numbers that are available to be assigned as the hunt group's call forward number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are assigned to an owning entity.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "extension", - "type": "string", - "usage": "Returns the list of PSTN phone numbers with the given `extension`." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-forward-available-numbers" - }, - { - "name": "location-id", - "type": "string", - "usage": "Return the list of phone numbers for this location within the given organization. The maximum length is 36.", - "required": true - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of phone numbers returned to this maximum count. The default is 2000." - }, - { - "name": "org-id", - "type": "string", - "usage": "List numbers for this organization.", - "hidden": true - }, - { - "name": "owner-name", - "type": "string", - "usage": "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255." - }, - { - "name": "phone-number", - "type": "string", - "usage": "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching phone numbers. The default is 0." - } - ] - }, - { - "path": "webex calling hunt-group get-primary-numbers", - "short": "Get Hunt Group Primary Available Phone Numbers", - "long": "List the service and standard PSTN numbers that are available to be assigned as the hunt group's primary phone number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-primary-numbers" - }, - { - "name": "location-id", - "type": "string", - "usage": "Return the list of phone numbers for this location within the given organization. The maximum length is 36.", - "required": true - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of phone numbers returned to this maximum count. The default is 2000." - }, - { - "name": "org-id", - "type": "string", - "usage": "List numbers for this organization.", - "hidden": true - }, - { - "name": "phone-number", - "type": "string", - "usage": "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching phone numbers. The default is 0." - } - ] - }, - { - "path": "webex calling hunt-group get-selective-forward-rule", - "short": "Get Selective Call Forwarding Rule for a Hunt Group", - "long": "Retrieve a Selective Call Forwarding Rule's settings for the designated Hunt Group.\n\nA selective call forwarding rule for a hunt group allows calls to be forwarded or not forwarded to the designated number, based on the defined criteria.\n\nNote that the list of existing call forward rules is available in the hunt group's call forwarding settings.\n\nRetrieving a selective call forwarding rule's settings for a hunt group requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.\n\n**NOTE**: The Call Forwarding Rule ID will change upon modification of the Call Forwarding Rule name.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-selective-forward-rule" - }, - { - "name": "hunt-group-id", - "type": "string", - "usage": "Retrieve settings for a rule for this hunt group.", - "required": true - }, - { - "name": "location-id", - "type": "string", - "usage": "Location in which this hunt group exists.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve hunt group rule settings for this organization.", - "hidden": true - }, - { - "name": "rule-id", - "type": "string", - "usage": "Hunt group rule you are retrieving settings for.", - "required": true - } - ] - }, - { - "path": "webex calling hunt-group list", - "short": "Read the List of Hunt Groups", - "long": "List all calling Hunt Groups for the organization.\n\nHunt groups can route incoming calls to a group of people or workspaces. You can even configure a pattern to route to a whole group.\n\nRetrieving this list requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "location-id", - "type": "string", - "usage": "Only return hunt groups with matching location ID." - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of objects returned to this maximum count." - }, - { - "name": "name", - "type": "string", - "usage": "Only return hunt groups with the matching name." - }, - { - "name": "org-id", - "type": "string", - "usage": "List hunt groups for this organization.", - "hidden": true - }, - { - "name": "phone-number", - "type": "string", - "usage": "Only return hunt groups with the matching primary phone number or extension." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching objects." - } - ] - }, - { - "path": "webex calling hunt-group switch-mode-call-forward", - "short": "Switch Mode for Call Forwarding Settings for a Hunt Group", - "long": "Switches the current operating mode of the `Hunt Group` to the mode as per normal operations.\n\nOperating modes allow call forwarding to be configured based on predefined schedules, enabling different routing behaviors during business hours, after hours, or holidays.\n\nSwitching operating mode for a `hunt group` requires a full, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for switch-mode-call-forward" - }, - { - "name": "hunt-group-id", - "type": "string", - "usage": "Switch operating mode to normal operations for this `hunt group`.", - "required": true - }, - { - "name": "location-id", - "type": "string", - "usage": "`Location` in which this `hunt group` exists.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Switch operating mode as per normal operations for the `hunt group` from this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling hunt-group update", - "short": "Update a Hunt Group", - "long": "Update the designated Hunt Group.\n\nHunt groups can route incoming calls to a group of people, workspaces or virtual lines. You can even configure a pattern to route to a whole group.\n\nUpdating a hunt group requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "hunt-group-id", - "type": "string", - "usage": "Update settings for the hunt group with the matching ID.", - "required": true - }, - { - "name": "location-id", - "type": "string", - "usage": "Update the hunt group for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Update hunt group settings from this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling hunt-group update-call-forward", - "short": "Update Call Forwarding Settings for a Hunt Group", - "long": "Update Call Forwarding settings for the specified Hunt Group.\n\nThe call forwarding feature allows you to direct all incoming calls based on specific criteria that you define.\nBelow are the available options for configuring your call forwarding:\n1. Always forward calls to a designated number.\n2. Forward calls to a designated number based on certain criteria.\n3. Forward calls using different modes.\n\nUpdating call forwarding settings for a hunt group requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-call-forward" - }, - { - "name": "hunt-group-id", - "type": "string", - "usage": "Update call forwarding settings for this hunt group.", - "required": true - }, - { - "name": "location-id", - "type": "string", - "usage": "Location from which this hunt group exists.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Update hunt group forwarding settings from this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling hunt-group update-selective-forward-rule", - "short": "Update a Selective Call Forwarding Rule for a Hunt Group", - "long": "Update a Selective Call Forwarding Rule's settings for the designated Hunt Group.\n\nA selective call forwarding rule for a hunt group allows calls to be forwarded or not forwarded to the designated number, based on the defined criteria.\n\nNote that the list of existing call forward rules is available in the hunt group's call forwarding settings.\n\nUpdating a selective call forwarding rule's settings for a hunt group requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: The Call Forwarding Rule ID will change upon modification of the Call Forwarding Rule name.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-selective-forward-rule" - }, - { - "name": "hunt-group-id", - "type": "string", - "usage": "Update settings for a rule for this hunt group.", - "required": true - }, - { - "name": "location-id", - "type": "string", - "usage": "Location in which this hunt group exists.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Update hunt group rule settings for this organization.", - "hidden": true - }, - { - "name": "rule-id", - "type": "string", - "usage": "Hunt group rule you are updating settings for.", - "required": true - } - ] - }, - { - "path": "webex calling location-call", - "short": "LocationCall commands" - }, - { - "path": "webex calling location-call check-delete-check-disabling-webex-calling", - "short": "Safe Delete Check Before Disabling a Location for Webex Calling", - "long": "Performs a safe delete check operation to identify any issues that would prevent the calling location from being disabled. This API helps identify resources that need to be addressed before a calling location can be successfully disabled.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for check-delete-check-disabling-webex-calling" - }, - { - "name": "location-id", - "type": "string", - "usage": "Unique identifier for the location to be checked.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization ID for which the safe delete check operation is being performed.", - "hidden": true - } - ] - }, - { - "path": "webex calling location-call create-receptionist-contact-directory", - "short": "Create a Receptionist Contact Directory", - "long": "Create a new Receptionist Contact Directory for a location.\n\nReceptionist Contact Directories can be used to create named directories of users and/or location features (Auto Attendant, Call Queue, Hunt Group, Single Number Reach, and Paging Group).\n\nAdding a directory requires a full or write-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-receptionist-contact-directory" - }, - { - "name": "location-id", - "type": "string", - "usage": "Add a Receptionist Contact Directory to this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Add a Receptionist Contact Directory to this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling location-call delete-receptionist-contact-directory", - "short": "Delete a Receptionist Contact Directory", - "long": "Delete a Receptionist Contact Directory from a location.\n\nReceptionist Contact Directories can be used to create named directories of users.\n\nDeleting a directory requires a full or write-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "directory-id", - "type": "string", - "usage": "Delete the Receptionist Contact Directory ID with the matching ID.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-receptionist-contact-directory" - }, - { - "name": "location-id", - "type": "string", - "usage": "Delete a Receptionist Contact Directory from this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Delete a Receptionist Contact Directory from this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling location-call disable-webex-calling", - "short": "Disable a Location for Webex Calling", - "long": "Disable a Location for Webex Calling.\n\nInitiating a disable calling location job requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\nThe API returns a jobId that can be used with other job-related APIs to track the status and progress of the disable operation.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "force-delete", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for disable-webex-calling" - }, - { - "name": "location-id", - "type": "string" - }, - { - "name": "location-name", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization ID for disabling the location for Webex Calling.", - "hidden": true - } - ] - }, - { - "path": "webex calling location-call enable-webex-calling", - "short": "Enable a Location for Webex Calling", - "long": "Enable a location by adding it to Webex Calling. This add Webex Calling support to a\nlocation created created using the POST /v1/locations API.\n\nLocations are used to support calling features which can be defined at the location level.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for enable-webex-calling" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - } - ] - }, - { - "path": "webex calling location-call get-available-charge-numbers", - "short": "Get Available Charge Numbers for a Location with Given Criteria", - "long": "List the numbers that are available to be assigned as the location's charge number.\n\nThese numbers are non-toll-free and non-mobile numbers assigned to the location specified in the request URL.\n\nRetrieving this list requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-available-charge-numbers" - }, - { - "name": "location-id", - "type": "string", - "usage": "Return the list of available charge numbers for this location within the given organization. The maximum length is 36.", - "required": true - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of phone numbers returned to this maximum count. The default is 2000." - }, - { - "name": "org-id", - "type": "string", - "usage": "List numbers for this organization.", - "hidden": true - }, - { - "name": "owner-name", - "type": "string", - "usage": "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255." - }, - { - "name": "phone-number", - "type": "string", - "usage": "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching phone numbers. The default is 0." - } - ] - }, - { - "path": "webex calling location-call get-available-numbers", - "short": "Get Available Phone Numbers for a Location with Given Criteria", - "long": "List the service and standard PSTN numbers that are available to be assigned as the location's main number.\nThese numbers are associated with the location specified in the request URL and can be active/inactive and assigned to an owning entity or unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-available-numbers" - }, - { - "name": "location-id", - "type": "string", - "usage": "Return the list of phone numbers for this location within the given organization. The maximum length is 36.", - "required": true - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of phone numbers returned to this maximum count. The default is 2000." - }, - { - "name": "org-id", - "type": "string", - "usage": "List numbers for this organization.", - "hidden": true - }, - { - "name": "owner-name", - "type": "string", - "usage": "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255." - }, - { - "name": "phone-number", - "type": "string", - "usage": "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching phone numbers. The default is 0." - } - ] - }, - { - "path": "webex calling location-call get-captions-settings", - "short": "Get the location call captions settings", - "long": "Retrieve the location's call captions settings.\n\n**NOTE**: The call captions feature is not supported for locations in India.\n\nThe call caption feature allows the customer to enable and manage closed captions and transcript functionality (rolling caption panel) in Webex Calling, without requiring the user to escalate the call to a meeting.\n\nThis API requires a full, read-only, or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-captions-settings" - }, - { - "name": "location-id", - "type": "string", - "usage": "Unique identifier for the location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Unique identifier for the organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling location-call get-disable-calling-job-status", - "short": "Get Disable Calling Location Job Status", - "long": "Get the status and details of a specific disable calling location job.\n\nRetrieving job status requires a full administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-disable-calling-job-status" - }, - { - "name": "job-id", - "type": "string", - "usage": "Unique identifier for the job.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization ID for which to retrieve the job status.", - "hidden": true - } - ] - }, - { - "path": "webex calling location-call get-ecbn-available-numbers", - "short": "Get Location ECBN Available Phone Numbers", - "long": "List standard numbers that are available to be assigned as the location's emergency callback number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are assigned to an owning entity.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-ecbn-available-numbers" - }, - { - "name": "location-id", - "type": "string", - "usage": "Return the list of phone numbers for this location within the given organization. The maximum length is 36.", - "required": true - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of phone numbers returned to this maximum count. The default is 2000." - }, - { - "name": "org-id", - "type": "string", - "usage": "List numbers for this organization.", - "hidden": true - }, - { - "name": "owner-name", - "type": "string", - "usage": "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255." - }, - { - "name": "phone-number", - "type": "string", - "usage": "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching phone numbers. The default is 0." - } - ] - }, - { - "path": "webex calling location-call get-emergency-callback", - "short": "Get a Location Emergency callback number", - "long": "Get location emergency callback number.\n\n* To retrieve location callback number requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-emergency-callback" - }, - { - "name": "location-id", - "type": "string", - "usage": "Update location attributes for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Update location attributes for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling location-call get-errors-disable-calling-job", - "short": "Retrieve Errors for a Disable Calling Location Job", - "long": "Retrieve detailed error information for a disable calling location job. This is particularly useful for jobs that have failed or encountered errors during processing.\n\nRetrieving job errors requires a full administrator auth token with a scope of `spark-admin:telephony_config_read`.\n\nPossible error codes include:\n* `BATCH-1012002` - Unable to delete calling location from Broadworks.\n* `BATCH-1012004` - Safe delete checks failed.\n* `BATCH-1012005` - Failed to perform safe delete checks.\n* `BATCH-1012006` - Trunks in use in the location. Count: {0}\n* `BATCH-1012007` - Users associated with the location. Count: {0}\n* `BATCH-1012008` - Workspaces associated with the location. Count: {0}\n* `BATCH-1012009` - Virtual lines associated with the location. Count: {0}\n* `BATCH-1012010` - Number order is pending.\n* `BATCH-1012011` - Features associated with the location. This is a blocking error, use forceDelete to disable the calling location.\n* `BATCH-1012012` - Not allowed to delete the last calling location. Calling requires at least one active location in the organization, This is a blocking error.\n* `BATCH-1012013` - Local gateway's associated with the location. Count: {0}. This is a blocking error, use forceDelete to disable the calling location.\n* `BATCH-1012014` - Location not found.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-errors-disable-calling-job" - }, - { - "name": "job-id", - "type": "string", - "usage": "Unique identifier for the job to get errors for.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization ID for disable calling location job.", - "hidden": true - } - ] - }, - { - "path": "webex calling location-call get-intercept-available-numbers", - "short": "Get Location Call Intercept Available Phone Numbers", - "long": "List the service and standard PSTN numbers that are available to be assigned as the location's call intercept number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are assigned to an owning entity.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "extension", - "type": "string", - "usage": "Returns the list of phone numbers with the given `extension`." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-intercept-available-numbers" - }, - { - "name": "location-id", - "type": "string", - "usage": "Return the list of phone numbers for this location within the given organization. The maximum length is 36.", - "required": true - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of phone numbers returned to this maximum count. The default is 2000." - }, - { - "name": "org-id", - "type": "string", - "usage": "List numbers for this organization.", - "hidden": true - }, - { - "name": "owner-name", - "type": "string", - "usage": "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255." - }, - { - "name": "phone-number", - "type": "string", - "usage": "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching phone numbers. The default is 0." - } - ] - }, - { - "path": "webex calling location-call get-job-errors-update-routing-prefix-job", - "short": "Get job errors for update routing prefix job", - "long": "GET job errors for the update routing prefix job in an organization.\n\nThe routing prefix is associated with a location and is used to route calls belonging to that location.\nThis API allows users to retrieve all the errors of the update routing prefix job by job ID in an organization.\n\nRetrieving all the errors of the update routing prefix job in an organization requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-job-errors-update-routing-prefix-job" - }, - { - "name": "job-id", - "type": "string", - "usage": "Retrieve job errors for this `jobId`.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve list of errors for update routing prefix job in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling location-call get-job-status-update-routing-prefix-job", - "short": "Get the job status of Update Routing Prefix job", - "long": "Get the status of the update routing prefix job by its job ID.\n\nThe routing prefix is associated with a location and is used to route calls belonging to that location.\nThis API allows users to check the status of update routing prefix job by job ID in an organization.\n\nChecking the status of the update routing prefix job in an organization requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-job-status-update-routing-prefix-job" - }, - { - "name": "job-id", - "type": "string", - "usage": "Retrieve job status for this `jobId`.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Check update routing prefix job status in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling location-call get-music-hold", - "short": "Get Music On Hold", - "long": "Retrieve the location's music on hold settings.\n\nLocation music on hold settings allows you to play music when a call is placed on hold or parked.\n\nRetrieving a location's music on hold settings requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-music-hold" - }, - { - "name": "location-id", - "type": "string", - "usage": "Retrieve music on hold settings for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve music on hold settings for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling location-call get-private-network-connect", - "short": "Get Private Network Connect", - "long": "Retrieve the location's network connection type.\n\nNetwork Connection Type determines if the location's network connection is public or private.\n\nRetrieving a location's network connection type requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-private-network-connect" - }, - { - "name": "location-id", - "type": "string", - "usage": "Retrieve the network connection type for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve the network connection type for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling location-call get-receptionist-contact-directory", - "short": "Get details for a Receptionist Contact Directory", - "long": "Get details for a specific Receptionist Contact Directory from a location.\n\nReceptionist Contact Directories are uniquely named per location and contain directories of Persons, Auto Attendants, Call Queues, Hunt Groups, Single Number Reaches, and Paging Groups.\n\nThis API is currently supported for Webex calling organizations with fewer than 2000 users or location-based calling features. For organizations with more than 2000 users or location features, the API will throw an error 25395.\n\nRetrieving details requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "directory-id", - "type": "string", - "usage": "Get details for the Receptionist Contact Directory with this identifier.", - "required": true - }, - { - "name": "extension", - "type": "string", - "usage": "Search for directories that contain people with the indicated extension." - }, - { - "name": "first-name", - "type": "string", - "usage": "Search for directories that contain people with the indicated first name." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-receptionist-contact-directory" - }, - { - "name": "last-name", - "type": "string", - "usage": "Search for directories that contain people with the indicated last name." - }, - { - "name": "location-id", - "type": "string", - "usage": "Get a Receptionist Contact Directory from this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Get a Receptionist Contact Directory from this organization.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Search for directories that contain people with the indicated person ID." - }, - { - "name": "phone-number", - "type": "string", - "usage": "Search for directories that contain people with the indicated phone number." - }, - { - "name": "search-criteria-mode-or", - "type": "string", - "usage": "When `true`, results matching any one of the search criteria are included. The value can only be `true` or not included in the request. Specifying `searchCriteriaModeOr` without any search criteria, or setting it to `false` results in an `ErrorResponse`. If no search criteria is specified, all results are returned." - } - ] - }, - { - "path": "webex calling location-call get-webex-calling", - "short": "Get Location Webex Calling Details", - "long": "Shows Webex Calling details for a location, by ID.\n\nSpecifies the location ID in the locationId parameter in the URI.\n\nSearching and viewing locations in your organization requires an administrator auth token with the spark-admin:telephony_config_read scope.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-webex-calling" - }, - { - "name": "location-id", - "type": "string", - "usage": "Retrieve Webex Calling location attributes for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve Webex Calling location attributes for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling location-call get-webex-go-available-numbers", - "short": "Get Webex Go Available Phone Numbers", - "long": "List standard numbers that are available to be assigned as the webex go phone number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-webex-go-available-numbers" - }, - { - "name": "location-id", - "type": "string", - "usage": "Return the list of phone numbers for this location within the given organization. The maximum length is 36.", - "required": true - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of phone numbers returned to this maximum count. The default is 2000." - }, - { - "name": "org-id", - "type": "string", - "usage": "List numbers for this organization.", - "hidden": true - }, - { - "name": "phone-number", - "type": "string", - "usage": "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching phone numbers. The default is 0." - } - ] - }, - { - "path": "webex calling location-call list-dial-patterns", - "short": "Read the List of Dial Patterns", - "long": "List all Dial Patterns for the organization.\n\nDial plans route calls to on-premises destinations by use of trunks or route groups.\nThey are configured globally for an enterprise and apply to all users, regardless of location.\nA dial plan also specifies the routing choice (trunk or route group) for calls that match any of its dial patterns.\nSpecific dial patterns can be defined as part of your dial plan.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "dial-pattern", - "type": "string", - "usage": "An enterprise dial pattern is represented by a sequence of digits (1-9), followed by optional wildcard characters. Valid wildcard characters are `!` (matches any sequence of digits) and `X` (matches a single digit, 0-9). The `!` wildcard can only occur once at the end and only in an E.164 pattern " - }, - { - "name": "dial-plan-id", - "type": "string", - "usage": "ID of the dial plan.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-dial-patterns" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of objects returned to this maximum count." - }, - { - "name": "order", - "type": "string", - "usage": "Order the dial patterns according to the designated fields. Available sort fields: `dialPattern`." - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization to which the dial patterns belong.", - "hidden": true - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching objects." - } - ] - }, - { - "path": "webex calling location-call list-disable-calling-jobs", - "short": "Get a List of Disable Calling Location Jobs", - "long": "Get a List of Disable Calling Location Jobs for the organization.\n\nRetrieving the list of disable calling location jobs requires a full administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-disable-calling-jobs" - }, - { - "name": "max", - "type": "string", - "usage": "Maximum number of jobs to return." - }, - { - "name": "org-id", - "type": "string", - "usage": "List disable calling location jobs for this organization.", - "hidden": true - }, - { - "name": "start", - "type": "string", - "usage": "Offset to start returning records from." - } - ] - }, - { - "path": "webex calling location-call list-phone-numbers-available-external-caller-id", - "short": "Get the List of Phone Numbers Available for External Caller ID", - "long": "Get the list of phone numbers available for external caller ID usage by a Webex Calling entity (such as a person, virtual line, or workspace) within the specified location.\nNumbers from the specified location are returned and cross location numbers are returned as well where the number's location has the same country, PSTN provider, and zone (only applicable for India locations) as the specified location.\nWhen `personId` is specified, and the person belongs to a cisco PSTN location, has a mobile number assigned as primary DN, and does not have a billing plan, only the assigned mobile number is returned as the available number for caller ID.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-phone-numbers-available-external-caller-id" - }, - { - "name": "location-id", - "type": "string", - "usage": "Retrieve available external caller ID numbers for this location.", - "required": true - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of phone numbers returned to this maximum count. The default is 2000." - }, - { - "name": "org-id", - "type": "string", - "usage": "List numbers for this organization.", - "hidden": true - }, - { - "name": "owner-name", - "type": "string", - "usage": "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255." - }, - { - "name": "person-id", - "type": "string", - "usage": "Retrieve available external caller ID numbers for this person. If `personId` is not provided it may result in the unsuccessful assignment of the returned number. This parameter has no effect when workspace or virtual line ID is used." - }, - { - "name": "phone-number", - "type": "string", - "usage": "Filter phone numbers based on the provided list in the `phoneNumber` array." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching phone numbers. The default is 0." - } - ] - }, - { - "path": "webex calling location-call list-receptionist-contact-directories", - "short": "Read list of Receptionist Contact Directories", - "long": "List all Receptionist Contact Directories for a location.\n\nReceptionist Contact Directories can be used to create named directories of users.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-receptionist-contact-directories" - }, - { - "name": "location-id", - "type": "string", - "usage": "List Receptionist Contact Directories for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "List Receptionist Contact Directories for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling location-call list-routing-choices", - "short": "Read the List of Routing Choices", - "long": "List all Routes for the organization.\n\nTrunk and Route Group qualify as Route. Trunks and Route Groups provide you the ability to configure Webex Calling to manage calls between Webex Calling hosted users and premises PBX users. This solution lets you configure users to use Cloud PSTN (CCP or Cisco PSTN) or Premises-based PSTN.\n\nRetrieving this list requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-routing-choices" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of objects returned to this maximum count." - }, - { - "name": "order", - "type": "string", - "usage": "Order the route identities according to the designated fields. Available sort fields: `routeName`, `routeType`." - }, - { - "name": "org-id", - "type": "string", - "usage": "List route identities for this organization.", - "hidden": true - }, - { - "name": "route-group-name", - "type": "string", - "usage": "Return the list of route identities matching the Route group name." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching objects." - }, - { - "name": "trunk-name", - "type": "string", - "usage": "Return the list of route identities matching the Trunk name." - } - ] - }, - { - "path": "webex calling location-call list-update-routing-prefix-jobs", - "short": "Get a List of Update Routing Prefix jobs", - "long": "Get the list of all update routing prefix jobs in an organization.\n\nThe routing prefix is associated with a location and is used to route calls belonging to that location.\nThis API allows users to retrieve all the update routing prefix jobs in an organization.\n\nRetrieving the list of update routing prefix jobs in an organization requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-update-routing-prefix-jobs" - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve list of update routing prefix jobs in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling location-call list-webex-calling", - "short": "List Locations Webex Calling Details", - "long": "Lists Webex Calling locations for an organization with Webex Calling details.\n\nSearching and viewing locations with Webex Calling details in your\norganization require an administrator auth token with the\n`spark-admin:telephony_config_read` scope.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-webex-calling" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the maximum number of locations in the response." - }, - { - "name": "name", - "type": "string", - "usage": "List locations whose name contains this string." - }, - { - "name": "order", - "type": "string", - "usage": "Sort the list of locations based on `name`, either asc or desc." - }, - { - "name": "org-id", - "type": "string", - "usage": "List locations for this organization.", - "hidden": true - }, - { - "name": "start", - "type": "string", - "usage": "Specify the offset from the first result that you want to fetch." - } - ] - }, - { - "path": "webex calling location-call pause-disable-calling-job", - "short": "Pause a Disable Calling Location Job", - "long": "Pause an in-progress disable calling location job. The job must be in the PROCESSING state to be paused.\n\nPausing a job requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for pause-disable-calling-job" - }, - { - "name": "job-id", - "type": "string", - "usage": "Unique identifier for the job to pause.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization ID for which to pause the job.", - "hidden": true - } - ] - }, - { - "path": "webex calling location-call resume-paused-disable-calling-job", - "short": "Resume a Paused Disable Calling Location Job", - "long": "Resume a previously paused disable calling location job. The job must be in the PAUSED state to be resumed.\n\nResuming a job requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for resume-paused-disable-calling-job" - }, - { - "name": "job-id", - "type": "string", - "usage": "Unique identifier for the job to resume.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization ID for which to resume the job.", - "hidden": true - } - ] - }, - { - "path": "webex calling location-call update-announcement-language", - "short": "Change Announcement Language", - "long": "Change announcement language for the given location.\n\nChange announcement language for current people/workspaces and/or existing feature configurations. This does not change the default announcement language which is applied to new users/workspaces and new feature configurations.\n\nChanging the announcement language for the given location requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "agent-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "announcement-language-code", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-announcement-language" - }, - { - "name": "location-id", - "type": "string", - "usage": "Change announcement language for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Change announcement language for this organization.", - "hidden": true - }, - { - "name": "service-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling location-call update-captions-settings", - "short": "Update the location call captions settings", - "long": "Update the location's call captions settings.\n\n**NOTE**: The call captions feature is not supported for locations in India.\n\nThe call caption feature allows the customer to enable and manage closed captions and transcript functionality (rolling caption panel) in Webex Calling, without requiring the user to escalate the call to a meeting.\n\nThis API requires a full or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-captions-settings" - }, - { - "name": "location-closed-captions-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "location-id", - "type": "string", - "usage": "Unique identifier for the location.", - "required": true - }, - { - "name": "location-transcripts-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "org-id", - "type": "string", - "usage": "Unique identifier for the organization.", - "hidden": true - }, - { - "name": "use-org-settings-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling location-call update-emergency-callback", - "short": "Update a Location Emergency callback number", - "long": "Update details for a location emergency callback number.\n\n* Updating a location callback number requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "elin-expiry-time-minutes", - "type": "int64", - "default": "0" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-emergency-callback" - }, - { - "name": "location-id", - "type": "string", - "usage": "Update location attributes for this location.", - "required": true - }, - { - "name": "location-member-id", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "Update location attributes for this organization.", - "hidden": true - }, - { - "name": "selected", - "type": "string" - } - ] - }, - { - "path": "webex calling location-call update-music-hold", - "short": "Update Music On Hold", - "long": "Update the location's music on hold settings.\n\nLocation music on hold settings allows you to play music when a call is placed on hold or parked.\n\nUpdating a location's music on hold settings requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-music-hold" - }, - { - "name": "location-id", - "type": "string", - "usage": "Update music on hold settings for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Update music on hold settings for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling location-call update-private-network-connect", - "short": "Update Private Network Connect", - "long": "Update the location's network connection type.\n\nNetwork Connection Type determines if the location's network connection is public or private.\n\nUpdating a location's network connection type requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-private-network-connect" - }, - { - "name": "location-id", - "type": "string", - "usage": "Update the network connection type for this location.", - "required": true - }, - { - "name": "network-connection-type", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "Update network connection type for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling location-call update-receptionist-contact-directory", - "short": "Modify a Receptionist Contact Directory", - "long": "Modify Receptionist Contact Directories attached to a location. This modification will replace the existing list of contacts with the new incoming contacts list from the request body. The API does not support incremental updates.\n\nReceptionist Contact Directories can be used to create named groups of Persons, Auto Attendants, Call Queues, Hunt Groups, Single Number Reaches, and Paging Groups.\n\nModifying a directory requires a full or write-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "contacts", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "directory-id", - "type": "string", - "usage": "Get details for the Receptionist Contact Directory with this identifier.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-receptionist-contact-directory" - }, - { - "name": "location-id", - "type": "string", - "usage": "Modify list of Receptionist Contact Directories for this location.", - "required": true - }, - { - "name": "name", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "Modify list of Receptionist Contact Directories for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling location-call update-webex-calling", - "short": "Update Location Webex Calling Details", - "long": "Update Webex Calling details for a location, by ID.\n\nSpecifies the location ID in the `locationId` parameter in the URI.\n\nModifying the `connection` via API is only supported for the local PSTN types of `TRUNK` and `ROUTE_GROUP`.\n\nUpdating a location in your organization requires an administrator auth token with the `spark-admin:telephony_config_write` scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-webex-calling" - }, - { - "name": "location-id", - "type": "string", - "usage": "Updating Webex Calling location attributes for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Updating Webex Calling location attributes for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling location-call validate-extensions", - "short": "Validate Extensions", - "long": "Validate extensions for a specific location.\n\nValidating extensions requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "extensions", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for validate-extensions" - }, - { - "name": "location-id", - "type": "string", - "usage": "Validate extensions for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Validate extensions for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling location-call validate-list-extensions", - "short": "Validate the List of Extensions", - "long": "Validates the list of Extensions provided by the customer at the organization level. It checks the extension meets the current extension length limits and does not conflict with the extensions of organization-level entities and settings. To check for extension use across all locations, use the [Get Phone Numbers](/v1/telephony/config/numbers) API. To validate an extension and check for conflicts for a specific location, use the [Validate Extensions](/docs/api/v1/location-call-settings/validate-extensions) API.\n\nRetrieving this list requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "extensions", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for validate-list-extensions" - }, - { - "name": "org-id", - "type": "string", - "usage": "Validate Extension for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling location-call-handling", - "short": "LocationCallHandling commands" - }, - { - "path": "webex calling location-call-handling create-outgoing-permission-access-code-customer", - "short": "Create Outgoing Permission a new access code for a customer location", - "long": "Add a new access code for the given location for a customer.\n\nUse Access Codes to bypass the set permissions for all persons/workspaces at this location.\n\nCreating an access code for the given location requires a full or user administrator or location administrator auth token with a scope of spark-admin:telephony_config_write.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-outgoing-permission-access-code-customer" - }, - { - "name": "location-id", - "type": "string", - "usage": "Add new access code for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Add new access code for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling location-call-handling create-outgoing-permission-digit-pattern", - "short": "Create Outgoing Permission a new Digit Pattern for a location", - "long": "Add a new digit pattern for the given location for a customer.\n\nUse Digit Patterns to bypass the set permissions for all persons/workspaces at this location.\n\nCreating a digit pattern requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "action", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-outgoing-permission-digit-pattern" - }, - { - "name": "location-id", - "type": "string", - "usage": "Add a new digit pattern for this location.", - "required": true - }, - { - "name": "name", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "Add a new digit pattern for this organization.", - "hidden": true - }, - { - "name": "pattern", - "type": "string" - }, - { - "name": "transfer-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling location-call-handling delete-all-outgoing-access-code", - "short": "Delete all Outgoing Permission Access Code for a Location", - "long": "Deletes all the access codes for a particular location for a customer.\n\nUse Access Codes to bypass the set permissions for all persons/workspaces at this location.\n\nDeleting the access codes requires a full or user administrator or location administrator auth token with the `spark-admin:telephony_config_write` scope.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-all-outgoing-access-code" - }, - { - "name": "location-id", - "type": "string", - "usage": "Deletes all the access codes for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Deletes the access codes for a customer location.", - "hidden": true - } - ] - }, - { - "path": "webex calling location-call-handling delete-all-outgoing-digit-patterns", - "short": "Delete all Outgoing Permission Digit Patterns for a Location", - "long": "Deletes all the digit patterns for a particular location for a customer.\n\nUse Digit Patterns to bypass the set permissions for all persons/workspaces at this location.\n\nDeleting the digit patterns requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-all-outgoing-digit-patterns" - }, - { - "name": "location-id", - "type": "string", - "usage": "Delete the digit patterns for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Delete the digit patterns for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling location-call-handling delete-outgoing-access-code", - "short": "Delete Outgoing Permission Access Code Location", - "long": "Deletes the access code details for a particular location for a customer.\n\nUse Access Codes to bypass the set permissions for all persons/workspaces at this location.\n\nModifying the access code location details requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "delete-codes", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-outgoing-access-code" - }, - { - "name": "location-id", - "type": "string", - "usage": "Deletes the access code details for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Deletes the access code details for a customer location.", - "hidden": true - } - ] - }, - { - "path": "webex calling location-call-handling delete-outgoing-digit-pattern", - "short": "Delete a Outgoing Permission Digit Pattern for a Location", - "long": "Delete the designated digit pattern.\n\nUse Digit Patterns to bypass the set permissions for all persons/workspaces at this location.\n\nDeleting a digit pattern requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "digit-pattern-id", - "type": "string", - "usage": "Delete the digit pattern with the matching ID.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-outgoing-digit-pattern" - }, - { - "name": "location-id", - "type": "string", - "usage": "Delete the digit pattern for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Delete the digit pattern for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling location-call-handling generate-example-password", - "short": "Generate example password for Location", - "long": "Generates an example password using the effective password settings for the location. If you don't specify anything in the `generate` field or don't provide a request body, then you will receive a SIP password by default.\n\nUsed while creating a trunk and shouldn't be used anywhere else.\n\nGenerating an example password requires a full or write-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "generate", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for generate-example-password" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location for which example password has to be generated.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization to which the location belongs.", - "hidden": true - } - ] - }, - { - "path": "webex calling location-call-handling get-intercept", - "short": "Get Location Intercept", - "long": "Retrieve intercept location details for a customer location.\n\nIntercept incoming or outgoing calls for persons in your organization. If this is enabled, calls are either routed to a designated number the person chooses, or to the person's voicemail.\n\nRetrieving intercept location details requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-intercept" - }, - { - "name": "location-id", - "type": "string", - "usage": "Retrieve intercept details for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve intercept location details for a customer location.", - "hidden": true - } - ] - }, - { - "path": "webex calling location-call-handling get-internal-dialing-configuration", - "short": "Read the Internal Dialing configuration for a location", - "long": "Get current configuration for routing unknown extensions to the Premises as internal calls\n\nIf some users in a location are registered to a PBX, retrieve the setting to route unknown extensions (digits that match the extension length) to the PBX.\n\nRetrieving the internal dialing configuration requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-internal-dialing-configuration" - }, - { - "name": "location-id", - "type": "string", - "usage": "location for which internal calling configuration is being requested", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "List route identities for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling location-call-handling get-outgoing-auto-transfer", - "short": "Get Outgoing Permission Auto Transfer Number", - "long": "Get the transfer numbers for the outbound permission in a location.\n\nOutbound permissions can specify which transfer number an outbound call should transfer to via the `action` field.\n\nRetrieving an auto transfer number requires a full, user or read-only administrator or location administrator auth token with a scope of spark-admin:telephony_config_read.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-outgoing-auto-transfer" - }, - { - "name": "location-id", - "type": "string", - "usage": "Retrieve auto transfer number for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve auto transfer number for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling location-call-handling get-outgoing-digit-pattern", - "short": "Get Outgoing Permission Digit Pattern for a Location", - "long": "Get the digit patterns for the outbound permission in a location.\n\nUse Digit Patterns to bypass the set permissions for all persons/workspaces at this location.\n\nRetrieving digit patterns requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-outgoing-digit-pattern" - }, - { - "name": "location-id", - "type": "string", - "usage": "Retrieve the digit patterns for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve the digit patterns for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling location-call-handling get-outgoing-digit-pattern-2", - "short": "Get Details for a Outgoing Permission Digit Pattern for a Location", - "long": "Get the digit pattern details.\n\nUse Digit Patterns to bypass the set permissions for all persons/workspaces at this location.\n\nRetrieving digit pattern details requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "digit-pattern-id", - "type": "string", - "usage": "Retrieve the digit pattern with the matching ID.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-outgoing-digit-pattern-2" - }, - { - "name": "location-id", - "type": "string", - "usage": "Retrieve the digit pattern details for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve the digit pattern details for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling location-call-handling get-outgoing-permission", - "short": "Get Location Outgoing Permission", - "long": "Retrieve the location's outgoing call settings.\n\nA location's outgoing call settings allow you to determine the types of calls the people/workspaces at the location are allowed to make, as well as configure the default calling permission for each call type at the location.\n\nRetrieving a location's outgoing call settings requires a full, user or read-only administrator or location administrator auth token with a scope of spark-admin:telephony_config_read.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-outgoing-permission" - }, - { - "name": "location-id", - "type": "string", - "usage": "Retrieve outgoing call settings for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve outgoing call settings for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling location-call-handling get-outgoing-permission-access-code", - "short": "Get Outgoing Permission Location Access Code", - "long": "Retrieve access codes details for a customer location.\n\nUse Access Codes to bypass the set permissions for all persons/workspaces at this location.\n\nRetrieving access codes details requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-outgoing-permission-access-code" - }, - { - "name": "location-id", - "type": "string", - "usage": "Retrieve access codes details for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve access codes details for a customer location.", - "hidden": true - } - ] - }, - { - "path": "webex calling location-call-handling update-intercept", - "short": "Put Location Intercept", - "long": "Modifies the intercept location details for a customer location.\n\nIntercept incoming or outgoing calls for users in your organization. If this is enabled, calls are either routed to a designated number the user chooses, or to the user's voicemail.\n\nModifying the intercept location details requires a full, user administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-intercept" - }, - { - "name": "location-id", - "type": "string", - "usage": "Modifies the intercept details for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Modifies the intercept location details for a customer location.", - "hidden": true - } - ] - }, - { - "path": "webex calling location-call-handling update-internal-dialing-configuration", - "short": "Modify the Internal Dialing configuration for a location", - "long": "Modify current configuration for routing unknown extensions to the premise as internal calls\n\nIf some users in a location are registered to a PBX, enable the setting to route unknown extensions (digits that match the extension length) to the PBX.\n\nEditing the internal dialing configuration requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-internal-dialing-configuration" - }, - { - "name": "location-id", - "type": "string", - "usage": "location for which internal calling configuration is being requested", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "List route identities for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling location-call-handling update-outgoing-auto-transfer", - "short": "Put Outgoing Permission Auto Transfer Number", - "long": "Modifies the transfer numbers for the outbound permission in a location.\n\nOutbound permissions can specify which transfer number an outbound call should transfer to via the `action` field.\n\nUpdating auto transfer number requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "auto-transfer-number1", - "type": "string" - }, - { - "name": "auto-transfer-number2", - "type": "string" - }, - { - "name": "auto-transfer-number3", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-outgoing-auto-transfer" - }, - { - "name": "location-id", - "type": "string", - "usage": "Updating auto transfer number for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Updating auto transfer number for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling location-call-handling update-outgoing-digit-pattern", - "short": "Update a Outgoing Permission Digit Pattern for a Location", - "long": "Update the designated digit pattern.\n\nUse Digit Patterns to bypass the set permissions for all persons/workspaces at this location.\n\nUpdating a digit pattern requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "action", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "digit-pattern-id", - "type": "string", - "usage": "Update the digit pattern with the matching ID.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-outgoing-digit-pattern" - }, - { - "name": "location-id", - "type": "string", - "usage": "Update the digit pattern for this location.", - "required": true - }, - { - "name": "name", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "Update the digit pattern for this organization.", - "hidden": true - }, - { - "name": "pattern", - "type": "string" - }, - { - "name": "transfer-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling location-call-handling update-outgoing-permission", - "short": "Update Location Outgoing Permission", - "long": "Update the location's outgoing call settings.\n\nLocation's outgoing call settings allows you to determine the types of calls the people/workspaces at this location are allowed to make and configure the default calling permission for each call type at a location.\n\nUpdating a location's outgoing call settings requires a full administrator or location administrator auth token with a scope of spark-admin:telephony_config_write.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-outgoing-permission" - }, - { - "name": "location-id", - "type": "string", - "usage": "Update outgoing call settings for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Update outgoing call settings for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling location-schedules", - "short": "LocationSchedules commands" - }, - { - "path": "webex calling location-schedules create", - "short": "Create a Schedule", - "long": "Create new Schedule for the given location.\n\nA time schedule establishes a set of times during the day or holidays in the year in which a feature, for example auto attendants, can perform a specific action.\n\nCreating a schedule requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "location-id", - "type": "string", - "usage": "Create the schedule for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Create the schedule for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling location-schedules create-event", - "short": "Create a Schedule Event", - "long": "Create new Event for the given location Schedule.\n\nA time schedule establishes a set of times during the day or holidays in the year in which a feature, for example auto attendants, can perform a specific action.\n\nCreating a schedule event requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-event" - }, - { - "name": "location-id", - "type": "string", - "usage": "Create the schedule for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Create the schedule for this organization.", - "hidden": true - }, - { - "name": "schedule-id", - "type": "string", - "usage": "Create event for a given schedule ID.", - "required": true - }, - { - "name": "type", - "type": "string", - "usage": "Type of schedule.", - "required": true - } - ] - }, - { - "path": "webex calling location-schedules delete", - "short": "Delete a Schedule", - "long": "Delete the designated Schedule.\n\nA time schedule establishes a set of times during the day or holidays in the year in which a feature, for example auto attendants, can perform a specific action.\n\nDeleting a schedule requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location from which to delete a schedule.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Delete the schedule from this organization.", - "hidden": true - }, - { - "name": "schedule-id", - "type": "string", - "usage": "Delete the schedule with the matching ID.", - "required": true - }, - { - "name": "type", - "type": "string", - "usage": "Type of the schedule.", - "required": true - } - ] - }, - { - "path": "webex calling location-schedules delete-event", - "short": "Delete a Schedule Event", - "long": "Delete the designated Schedule Event.\n\nA time schedule establishes a set of times during the day or holidays in the year in which a feature, for example auto attendants, can perform a specific action.\n\nDeleting a schedule event requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "event-id", - "type": "string", - "usage": "Delete the schedule event with the matching schedule event ID.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-event" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location from which to delete a schedule.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Delete the schedule from this organization.", - "hidden": true - }, - { - "name": "schedule-id", - "type": "string", - "usage": "Delete the schedule with the matching ID.", - "required": true - }, - { - "name": "type", - "type": "string", - "usage": "Type of schedule.", - "required": true - } - ] - }, - { - "path": "webex calling location-schedules get", - "short": "Get Details for a Schedule", - "long": "Retrieve Schedule details.\n\nA time schedule establishes a set of times during the day or holidays in the year in which a feature, for example auto attendants, can perform a specific action.\n\nRetrieving schedule details requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "location-id", - "type": "string", - "usage": "Retrieve schedule details in this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve schedule details from this organization.", - "hidden": true - }, - { - "name": "schedule-id", - "type": "string", - "usage": "Retrieve the schedule with the matching ID.", - "required": true - }, - { - "name": "type", - "type": "string", - "usage": "Type of the schedule.", - "required": true - } - ] - }, - { - "path": "webex calling location-schedules get-event", - "short": "Get Details for a Schedule Event", - "long": "Retrieve Schedule Event details.\n\nA time schedule establishes a set of times during the day or holidays in the year in which a feature, for example auto attendants, can perform a specific action.\n\nRetrieving a schedule event's details requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "event-id", - "type": "string", - "usage": "Retrieve the schedule event with the matching schedule event ID.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-event" - }, - { - "name": "location-id", - "type": "string", - "usage": "Retrieve schedule event details in this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve schedule event details from this organization.", - "hidden": true - }, - { - "name": "schedule-id", - "type": "string", - "usage": "Retrieve the schedule event with the matching schedule ID.", - "required": true - }, - { - "name": "type", - "type": "string", - "usage": "Type of schedule.", - "required": true - } - ] - }, - { - "path": "webex calling location-schedules list", - "short": "Read the List of Schedules", - "long": "List all schedules for the given location of the organization.\n\nA time schedule establishes a set of times during the day or holidays in the year in which a feature, for example auto attendants, can perform a specific action.\n\nRetrieving this list requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "location-id", - "type": "string", - "usage": "Return the list of schedules for this location.", - "required": true - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of objects returned to this maximum count." - }, - { - "name": "name", - "type": "string", - "usage": "Only return schedules with the matching name." - }, - { - "name": "org-id", - "type": "string", - "usage": "List schedules for this organization.", - "hidden": true - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching objects." - }, - { - "name": "type", - "type": "string", - "usage": "Type of the schedule." - } - ] - }, - { - "path": "webex calling location-schedules update", - "short": "Update a Schedule", - "long": "Update the designated schedule.\n\nA time schedule establishes a set of times during the day or holidays in the year in which a feature, for example auto attendants, can perform a specific action.\n\nUpdating a schedule requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: The Schedule ID will change upon modification of the Schedule name.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location in which this schedule exists.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Update schedule from this organization.", - "hidden": true - }, - { - "name": "schedule-id", - "type": "string", - "usage": "Update schedule with the matching ID.", - "required": true - }, - { - "name": "type", - "type": "string", - "usage": "Type of schedule.", - "required": true - } - ] - }, - { - "path": "webex calling location-schedules update-event", - "short": "Update a Schedule Event", - "long": "Update the designated Schedule Event.\n\nA time schedule establishes a set of times during the day or holidays in the year in which a feature, for example auto attendants, can perform a specific action.\n\nUpdating a schedule event requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: The schedule event ID will change upon modification of the schedule event name.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "event-id", - "type": "string", - "usage": "Update the schedule event with the matching schedule event ID.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-event" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location in which this schedule event exists.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Update schedule from this organization.", - "hidden": true - }, - { - "name": "schedule-id", - "type": "string", - "usage": "Update schedule event with the matching schedule ID.", - "required": true - }, - { - "name": "type", - "type": "string", - "usage": "Type of schedule. + `businessHours` - Business hours schedule type. + `holidays` - Holidays schedule type.", - "required": true - } - ] - }, - { - "path": "webex calling location-voicemail", - "short": "LocationVoicemail commands" - }, - { - "path": "webex calling location-voicemail create-group", - "short": "Create a new Voicemail Group for a Location", - "long": "Create a new voicemail group for the given location for a customer.\n\nA voicemail group can be created for given location for a customer.\n\nCreating a voicemail group for the given location requires a full or user administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-group" - }, - { - "name": "location-id", - "type": "string", - "usage": "Create a new voice mail group for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Create a new voice mail group for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling location-voicemail delete-group", - "short": "Delete a Voicemail Group for a Location", - "long": "Delete the designated voicemail group.\n\nDeleting a voicemail group requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-group" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location from which to delete a voicemail group.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Delete the voicemail group from this organization.", - "hidden": true - }, - { - "name": "voicemail-group-id", - "type": "string", - "usage": "Delete the voicemail group with the matching ID.", - "required": true - } - ] - }, - { - "path": "webex calling location-voicemail get", - "short": "Get Location Voicemail", - "long": "Retrieve voicemail settings for a specific location.\n\nLocation voicemail settings allows you to enable voicemail transcription for a specific location.\n\nRetrieving a location's voicemail settings requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "location-id", - "type": "string", - "usage": "Retrieve voicemail settings for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve voicemail settings for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling location-voicemail get-group", - "short": "Get Location Voicemail Group", - "long": "Retrieve voicemail group details for a location.\n\nManage your voicemail group settings for a specific location, like when you want your voicemail to be active, message storage settings, and how you would like to be notified of new voicemail messages.\n\nRetrieving voicemail group details requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-group" - }, - { - "name": "location-id", - "type": "string", - "usage": "Retrieve voicemail group details for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve voicemail group details for a customer location.", - "hidden": true - }, - { - "name": "voicemail-group-id", - "type": "string", - "usage": "Retrieve voicemail group details for this voicemail group ID.", - "required": true - } - ] - }, - { - "path": "webex calling location-voicemail get-group-available-numbers", - "short": "Get Voicemail Group Available Phone Numbers", - "long": "List the service and standard PSTN numbers that are available to be assigned as a voicemail group's phone number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-group-available-numbers" - }, - { - "name": "location-id", - "type": "string", - "usage": "Return the list of phone numbers for this location within the given organization. The maximum length is 36.", - "required": true - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of phone numbers returned to this maximum count. The default is 2000." - }, - { - "name": "org-id", - "type": "string", - "usage": "List numbers for this organization.", - "hidden": true - }, - { - "name": "phone-number", - "type": "string", - "usage": "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching phone numbers. The default is 0." - } - ] - }, - { - "path": "webex calling location-voicemail get-group-fax-available-numbers", - "short": "Get Voicemail Group Fax Message Available Phone Numbers", - "long": "List the standard and service PSTN numbers that are available to be assigned as a voicemail group's FAX message phone number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-group-fax-available-numbers" - }, - { - "name": "location-id", - "type": "string", - "usage": "Return the list of phone numbers for this location within the given organization. The maximum length is 36.", - "required": true - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of phone numbers returned to this maximum count. The default is 2000." - }, - { - "name": "org-id", - "type": "string", - "usage": "List numbers for this organization.", - "hidden": true - }, - { - "name": "phone-number", - "type": "string", - "usage": "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching phone numbers. The default is 0." - } - ] - }, - { - "path": "webex calling location-voicemail get-voiceportal", - "short": "Get VoicePortal", - "long": "Retrieve Voice portal information for the location.\n\nVoice portals provide an interactive voice response (IVR)\nsystem so administrators can manage auto attendant announcements.\n\nRetrieving voice portal information for an organization requires a full read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-voiceportal" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location to which the voice portal belongs.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization to which the voice portal belongs.", - "hidden": true - } - ] - }, - { - "path": "webex calling location-voicemail get-voiceportal-available-numbers", - "short": "Get VoicePortal Available Phone Numbers", - "long": "List the service and standard PSTN numbers that are available to be assigned as the location voice portal's phone number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-voiceportal-available-numbers" - }, - { - "name": "location-id", - "type": "string", - "usage": "Return the list of phone numbers for this location within the given organization. The maximum length is 36.", - "required": true - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of phone numbers returned to this maximum count. The default is 2000." - }, - { - "name": "org-id", - "type": "string", - "usage": "List numbers for this organization.", - "hidden": true - }, - { - "name": "phone-number", - "type": "string", - "usage": "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching phone numbers. The default is 0." - } - ] - }, - { - "path": "webex calling location-voicemail get-voiceportal-passcode-rule", - "short": "Get VoicePortal Passcode Rule", - "long": "Retrieve the voice portal passcode rule for a location.\n\nVoice portals provide an interactive voice response (IVR) system so administrators can manage auto attendant anouncements\n\nRetrieving the voice portal passcode rule requires a full read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-voiceportal-passcode-rule" - }, - { - "name": "location-id", - "type": "string", - "usage": "Retrieve voice portal passcode rules for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve voice portal passcode rules for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling location-voicemail list-voicemailgroup", - "short": "List VoicemailGroup", - "long": "List the voicemail group information for the organization.\n\nYou can create a shared voicemail box and inbound FAX box to\nassign to users or call routing features like an auto attendant, call queue, or hunt group.\n\nRetrieving a voicemail group for the organization requires a full read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-voicemailgroup" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location to which the voicemail group belongs." - }, - { - "name": "max", - "type": "string", - "usage": "Limit the maximum number of events in the response. The maximum value is `200`." - }, - { - "name": "name", - "type": "string", - "usage": "Search (Contains) based on voicemail group name" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization to which the voicemail group belongs.", - "hidden": true - }, - { - "name": "phone-number", - "type": "string", - "usage": "Search (Contains) based on number or extension" - }, - { - "name": "start", - "type": "string", - "usage": "Offset from the first result that you want to fetch." - } - ] - }, - { - "path": "webex calling location-voicemail update", - "short": "Update Location Voicemail", - "long": "Update the voicemail settings for a specific location.\n\nLocation voicemail settings allows you to enable voicemail transcription for a specific location.\n\nUpdating a location's voicemail settings requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "location-id", - "type": "string", - "usage": "Update voicemail settings for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Update voicemail settings for this organization.", - "hidden": true - }, - { - "name": "voicemail-transcription-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling location-voicemail update-group", - "short": "Modify Location Voicemail Group", - "long": "Modifies the voicemail group location details for a particular location for a customer.\n\nManage your voicemail settings, like when you want your voicemail to be active, message storage settings, and how you would like to be notified of new voicemail messages.\n\nModifying the voicemail group location details requires a full, user administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-group" - }, - { - "name": "location-id", - "type": "string", - "usage": "Modifies the voicemail group details for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Modifies the voicemail group details for a customer location.", - "hidden": true - }, - { - "name": "voicemail-group-id", - "type": "string", - "usage": "Modifies the voicemail group details for this voicemail group ID.", - "required": true - } - ] - }, - { - "path": "webex calling location-voicemail update-voiceportal", - "short": "Update VoicePortal", - "long": "Update Voice portal information for the location.\n\nVoice portals provide an interactive voice response (IVR)\nsystem so administrators can manage auto attendant anouncements.\n\nUpdating voice portal information for an organization and/or rules requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-voiceportal" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location to which the voice portal belongs.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Update voicemail rules for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling locations", - "short": "Locations commands" - }, - { - "path": "webex calling locations create", - "short": "Create a Location", - "long": "Create a new Location for a given organization. Only an admin in the organization can create a new Location.\n\n* Creating a location in your organization requires a full administrator auth token with a scope of `spark-admin:locations_write`.\n\n* Partners may specify `orgId` query parameter to create location in managed organization.\n\n* The following body parameters are required to create a new location: \n * `name`\n * `timeZone`\n * `preferredLanguage`\n * `address`\n * `announcementLanguage`.\n\n* `latitude`, `longitude` and `notes` are optional parameters to create a new location.\n\n* **Important:** While the `name` field supports up to 256 characters, locations that will be enabled for Webex Calling must have names with a maximum of 80 characters. If you plan to enable calling for this location, ensure the name does not exceed 80 characters to maintain compatibility with Control Hub and calling features.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "org-id", - "type": "string", - "usage": "Create a location common attribute for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling locations create-floor", - "short": "Create a Location Floor", - "long": "Create a new floor in the given location. The `displayName` parameter is optional, and omitting it will result in the creation of a floor without that value set.\nRequires an administrator auth token with the `spark-admin:locations_write` scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "display-name", - "type": "string" - }, - { - "name": "floor-number", - "type": "int64", - "default": "0" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-floor" - }, - { - "name": "location-id", - "type": "string", - "usage": "A unique identifier for the location.", - "required": true - } - ] - }, - { - "path": "webex calling locations delete", - "short": "Delete Location", - "long": "Delete a location, by ID.\n\n* Specify the location ID in the `locationId` parameter in the URI.\n\n* Deleting a location in your organization requires a full administrator auth token with a scope of `spark-admin:locations_write`.\n\n* NOTE: Disabling Webex Calling for a Webex Calling enabled location is required prior to deleting a location.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "location-id", - "type": "string", - "usage": "A unique identifier for the location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Specify the organization for the location to be deleted.", - "hidden": true - } - ] - }, - { - "path": "webex calling locations delete-floor", - "short": "Delete a Location Floor", - "long": "Deletes a floor, by ID.\nRequires an administrator auth token with the `spark-admin:locations_write` scope.", - "flags": [ - { - "name": "floor-id", - "type": "string", - "usage": "A unique identifier for the floor.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-floor" - }, - { - "name": "location-id", - "type": "string", - "usage": "A unique identifier for the location.", - "required": true - } - ] - }, - { - "path": "webex calling locations get", - "short": "Get Location Details", - "long": "Shows details for a location, by ID.\n\n* Specify the location ID in the `locationId` parameter in the URI.\n\n* Use query parameter `orgId` to filter the result set by organization(optional).\n\n* Searching and viewing location in your organization requires an administrator or location administrator auth token with any of the following scopes:\n\n * `spark-admin:locations_read`\n * `spark-admin:people_read`\n * `spark-admin:device_read`", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "location-id", - "type": "string", - "usage": "A unique identifier for the location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Get location common attributes for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling locations get-floor", - "short": "Get Location Floor Details", - "long": "Shows details for a floor, by ID. Specify the floor ID in the `floorId` parameter in the URI.\nRequires an administrator auth token with the `spark-admin:locations_read` scope.", - "flags": [ - { - "name": "floor-id", - "type": "string", - "usage": "A unique identifier for the floor.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-floor" - }, - { - "name": "location-id", - "type": "string", - "usage": "A unique identifier for the location.", - "required": true - } - ] - }, - { - "path": "webex calling locations list", - "short": "List Locations", - "long": "List locations for an organization.\n\n* Use query parameters to filter the result set by location name, ID, or organization.\n\n* Long result sets will be split into [pages](/docs/basics#pagination).\n\n* Searching and viewing locations in your organization requires an administrator or location administrator auth token with any of the following scopes: `spark-admin:locations_read`, `spark-admin:people_read` or `spark-admin:device_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "id", - "type": "string", - "usage": "List locations by ID." - }, - { - "name": "max", - "type": "string", - "usage": "Limit the maximum number of location in the response." - }, - { - "name": "name", - "type": "string", - "usage": "List locations whose name contains this string (case-insensitive)." - }, - { - "name": "org-id", - "type": "string", - "usage": "List locations in this organization. Only admin users of another organization (such as partners) may use this parameter.", - "hidden": true - } - ] - }, - { - "path": "webex calling locations list-floors", - "short": "List Location Floors", - "long": "List location floors.\nRequires an administrator auth token with the `spark-admin:locations_read` scope.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-floors" - }, - { - "name": "location-id", - "type": "string", - "usage": "A unique identifier for the location.", - "required": true - } - ] - }, - { - "path": "webex calling locations update", - "short": "Update a Location", - "long": "Update details for a location, by ID.\n\n* Updating a location in your organization requires a full administrator or location administrator auth token with a scope of `spark-admin:locations_write`.\n\n* Specify the location ID in the `locationId` parameter in the URI.\n\n* Partners may specify `orgId` query parameter to update location in managed organization.\n\n* **Important:** While the `name` field supports up to 256 characters, locations that are enabled for Webex Calling must have names with a maximum of 80 characters. If the location is enabled for calling, ensure the name does not exceed 80 characters to maintain compatibility with Control Hub and calling features.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "location-id", - "type": "string", - "usage": "Update location common attributes for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Update location common attributes for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling locations update-floor", - "short": "Update a Location Floor", - "long": "Updates details for a floor, by ID. Specify the floor ID in the `floorId` parameter in the URI. Include all details for the floor returned by a previous call to [Get Location Floor Details](/docs/api/v1/locations/get-location-floor-details). Omitting the optional `displayName` field will result in that field no longer being defined for the floor.\nRequires an administrator auth token with the `spark-admin:locations_write` scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "display-name", - "type": "string" - }, - { - "name": "floor-id", - "type": "string", - "usage": "A unique identifier for the floor.", - "required": true - }, - { - "name": "floor-number", - "type": "int64", - "default": "0" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-floor" - }, - { - "name": "location-id", - "type": "string", - "usage": "A unique identifier for the location.", - "required": true - } - ] - }, - { - "path": "webex calling metrics", - "short": "Metrics commands" - }, - { - "path": "webex calling metrics get-call-quality-stats", - "short": "Webex Calling Call Quality Stats", - "long": "Returns aggregated Webex Calling call and media-quality statistics for the authenticated organization. A call or media session is classified as good quality when all available audio and video quality measurements meet their defined thresholds. Missing individual quality measurements do not cause the call or session to be classified as poor quality.\n\nYou can query data for a time range of up to seven days within the previous 3 weeks. For older historical data, use the Webex Calling Media Quality dashboard or reports. For more information on Media Quality KPI definitions, [click here](https://help.webex.com/en-us/article/n0rlwxe/Analytics-for-Your-Cloud-Collaboration-Portfolio#Cisco_Concept.dita_7609f9dc-3b80-4c0f-9456-5aaa385c4e27).\n\nThis operation requires a Pro Pack for Control Hub license. The access token must include the analytics:read_all scope and represent either a full administrator or read-only administrator. The organization is derived from the access token.\n\n
The base URL for these APIs is **analytics.webexapis.com**, which does not work with the **Try It** feature.
", - "flags": [ - { - "name": "from", - "type": "string", - "usage": "Inclusive UTC start time in yyyy-MM-ddTHH:mm:ssZ format. If omitted while to is provided, it is seven days before the effective to time. If both times are omitted, it is seven days before the current time." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-call-quality-stats" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "location", - "type": "string", - "usage": "Exact Webex Calling location name. Omit it or provide an empty value to include all locations." - }, - { - "name": "to", - "type": "string", - "usage": "Exclusive UTC end time in yyyy-MM-ddTHH:mm:ssZ format. A value later than the current time is clamped to the current time. If omitted while from is provided, it is the earlier of seven days after from and the current time. If both times are omitted, it is the current time." - } - ] - }, - { - "path": "webex calling mode-management", - "short": "ModeManagement commands" - }, - { - "path": "webex calling mode-management extend-current-operating-duration", - "short": "Extend Current Operating Mode Duration", - "long": "Extends the duration of the current operating mode by adding additional time before it expires or reverts to scheduled operation. This API allows managers to prolong a temporary mode change without having to switch modes again.\n\nExtension time can be specified in 30-minute increments up to 720 minutes (12 hours). If no extension time is provided, the mode is extended with a manual switchback exception, meaning it will remain active until manually changed.\n\nThis API requires a user auth token with the `spark:telephony_config_write` scope. The authenticated user must be a mode manager for the specified feature.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "extension-time", - "type": "int64", - "default": "0" - }, - { - "name": "feature-id", - "type": "string", - "usage": "Unique identifier for the feature.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for extend-current-operating-duration" - }, - { - "name": "operating-mode-id", - "type": "string" - } - ] - }, - { - "path": "webex calling mode-management get-common", - "short": "Get Common Modes", - "long": "Retrieves a list of common operating mode names that are shared across multiple specified features. This API accepts a list of feature IDs and returns only the mode names that exist in all of the specified features, allowing managers to switch multiple features to the same mode simultaneously.\n\nCommon modes are useful when you need to coordinate operational changes across multiple features. For example, switching an entire office to \"Holiday\" mode across all Auto Attendants and Call Queues at once.\n\nThis API requires a user auth token with the `spark:telephony_config_read` scope. The authenticated user must be a mode manager for the specified features.", - "flags": [ - { - "name": "feature-ids", - "type": "string", - "usage": "List of feature IDs (comma-separated) for auto attendants, call queues, or hunt groups" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-common" - } - ] - }, - { - "path": "webex calling mode-management get-feature", - "short": "Get Mode Management Feature", - "long": "Retrieves detailed information about a specific mode management feature including its current operating mode and exception status. This API provides the feature's ID, name, type, current operating mode ID, and whether it is currently in an exception mode.\n\nException mode indicates that the feature has been manually switched to a different mode than what its schedule dictates. This information is critical for mode managers to understand the current state of their features.\n\nThis API requires a user auth token with the `spark:telephony_config_read` scope. The authenticated user must be a mode manager for the specified feature.", - "flags": [ - { - "name": "feature-id", - "type": "string", - "usage": "Unique identifier for the feature.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-feature" - } - ] - }, - { - "path": "webex calling mode-management get-features", - "short": "Get Mode Management Features", - "long": "Retrieves a list of all mode management features (Auto Attendants, Call Queues, and Hunt Groups) for which the authenticated user has been designated as a mode manager. This API returns basic information about each feature including its ID, name, and type.\n\nMode Management allows designated managers to switch features between different operational configurations based on time schedules or manual triggers. This is useful for managing business hours, holidays, and emergency scenarios.\n\nThis API requires a user auth token with the `spark:telephony_config_read` scope. The authenticated user must be configured as a mode manager for at least one feature to receive results.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-features" - } - ] - }, - { - "path": "webex calling mode-management get-normal-operation", - "short": "Get Normal Operation Mode", - "long": "Retrieves the current normal operating mode that the feature is scheduled to be in based on its time schedules. This represents the mode the feature would be in if no manual exceptions or overrides were active.\n\nThe normal operation mode is determined by the feature's configured schedules and may differ from the actual current operating mode if a manual exception has been applied. This API helps managers understand what the scheduled behavior is versus the actual current state.\n\nThis API requires a user auth token with the `spark:telephony_config_read` scope. The authenticated user must be a mode manager for the specified feature.", - "flags": [ - { - "name": "feature-id", - "type": "string", - "usage": "Unique identifier for the feature.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-normal-operation" - } - ] - }, - { - "path": "webex calling mode-management get-operating", - "short": "Get Operating Mode", - "long": "Retrieves detailed information about a specific operating mode for a feature, including the mode's ID and name. This API allows managers to get the details of any operating mode configured for a feature.\n\nOperating modes define different configurations for how a feature behaves (e.g., business hours routing vs. after-hours routing). Each mode has a unique ID and a descriptive name that helps managers identify its purpose.\n\nThis API requires a user auth token with the `spark:telephony_config_read` scope. The authenticated user must be a mode manager for the specified feature.", - "flags": [ - { - "name": "feature-id", - "type": "string", - "usage": "Unique identifier for the feature.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-operating" - }, - { - "name": "mode-id", - "type": "string", - "usage": "Unique identifier for the operating mode.", - "required": true - } - ] - }, - { - "path": "webex calling mode-management switch-multiple-features", - "short": "Switch Mode for Multiple Features", - "long": "Switches the operating mode for multiple features simultaneously by specifying a common mode name. This API accepts a list of feature IDs and sets all of them to the specified operating mode, provided that mode exists for all features.\n\nThis bulk operation is particularly useful for coordinating operational changes across an organization, such as activating holiday modes, emergency procedures, or after-hours configurations across multiple Auto Attendants, Call Queues, and Hunt Groups at once.\n\nThis API requires a user auth token with the `spark:telephony_config_write` scope. The authenticated user must be a mode manager for all specified features.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "feature-ids", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for switch-multiple-features" - }, - { - "name": "operating-mode-name", - "type": "string" - } - ] - }, - { - "path": "webex calling mode-management switch-normal-operation", - "short": "Switch to Normal Operation", - "long": "Switches the feature back to its normal scheduled operation mode, removing any manual exceptions or overrides that may be active. This returns the feature to operating according to its configured time schedules.\n\nThis operation is useful when a temporary manual mode change (exception) is no longer needed and you want to restore automatic schedule-based operation. It effectively cancels any active manual mode switches.\n\nThis API requires a user auth token with the `spark:telephony_config_write` scope. The authenticated user must be a mode manager for the specified feature.", - "flags": [ - { - "name": "feature-id", - "type": "string", - "usage": "Unique identifier for the feature.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for switch-normal-operation" - } - ] - }, - { - "path": "webex calling mode-management switch-single-feature", - "short": "Switch Mode for Single Feature", - "long": "Switches the operating mode for a single feature to a specified mode, either temporarily or with manual switchback. This API creates an exception to the feature's normal scheduled operation, allowing managers to manually control the feature's behavior.\n\nYou can configure whether the mode switch is temporary (automatically reverts based on schedule) or requires manual switchback. This is useful for handling unexpected situations like emergency closures, special events, or unscheduled breaks.\n\nThis API requires a user auth token with the `spark:telephony_config_write` scope. The authenticated user must be a mode manager for the specified feature.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "feature-id", - "type": "string", - "usage": "Unique identifier for the feature.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for switch-single-feature" - }, - { - "name": "is-manual-switchback-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "operating-mode-id", - "type": "string" - } - ] - }, - { - "path": "webex calling numbers", - "short": "Numbers commands" - }, - { - "path": "webex calling numbers create-phone-location", - "short": "Add Phone Numbers to a location", - "long": "Adds a specified set of phone numbers to a location for an organization. Phone numbers must follow the E.164 format.\n\nEach location has a set of phone numbers that can be assigned to people, workspaces, or features. Active phone numbers are in service.\n\nAdding a phone number to a location requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\nPhone numbers included in the request that already exist in the location will simply be ignored.\n\n
\n\n
This API is only supported for adding DID and Toll-free numbers to non-integrated PSTN connection types such as Local Gateway (LGW) and Non-integrated CPP. It should never be used for locations with integrated PSTN connection types like Cisco Calling Plans or Integrated CCP because backend data issues may occur.\n
\n
Mobile numbers can be added to any location that has PSTN connection setup. Only 20 mobile numbers can be added per request.\n
", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "carrier-id", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-phone-location" - }, - { - "name": "location-id", - "type": "string", - "usage": "LocationId to which numbers should be added.", - "required": true - }, - { - "name": "number-type", - "type": "string" - }, - { - "name": "number-usage-type", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization of the Route Group.", - "hidden": true - }, - { - "name": "phone-numbers", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "state", - "type": "string" - }, - { - "name": "subscription-id", - "type": "string" - } - ] - }, - { - "path": "webex calling numbers delete-phone-location", - "short": "Remove phone numbers from a location", - "long": "Remove the specified set of phone numbers from a location for an organization.\n\nPhone numbers must follow the E.164 format.\n\nRemoving a mobile number may require more time depending on mobile carrier capabilities.\n\nRemoving a phone number from a location requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\nA location's main number cannot be removed.\n\n
\n\n
This API is only supported for non-integrated PSTN connection types of Local Gateway (LGW) and Non-integrated CPP. It should never be used for locations with integrated PSTN connection types like Cisco Calling Plans or Integrated CCP because backend data issues may occur.
", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-phone-location" - }, - { - "name": "location-id", - "type": "string", - "usage": "`LocationId` to which numbers should be added.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization of the Route Group.", - "hidden": true - }, - { - "name": "phone-numbers", - "type": "stringSlice", - "default": "[]" - } - ] - }, - { - "path": "webex calling numbers get-manage-job-status", - "short": "Get Manage Numbers Job Status", - "long": "Returns the status and other details of the job.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-manage-job-status" - }, - { - "name": "job-id", - "type": "string", - "usage": "Retrieve job details for this `jobId`.", - "required": true - } - ] - }, - { - "path": "webex calling numbers get-phone-org", - "short": "Get Phone Numbers for an Organization with Given Criteria", - "long": "List all the phone numbers for the given organization along with the status and owner (if any).\n\nNumbers can be standard, service, or mobile. Both standard and service numbers are PSTN numbers.\nService numbers are considered high-utilization or high-concurrency phone numbers and can be assigned to features like auto-attendants, call queues, and hunt groups.\nPhone numbers can be linked to a specific location, be active or inactive, and be assigned or unassigned.\nThe owner of a number is the person, workspace, or feature to which the number is assigned.\nOnly a person can own a mobile number.\n\nRetrieving this list requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "available", - "type": "string", - "usage": "Search among the available phone numbers. This parameter cannot be used along with `ownerType` parameter when set to `true`." - }, - { - "name": "details", - "type": "string", - "usage": "Returns the overall count of the phone numbers along with other details for a given organization." - }, - { - "name": "extension", - "type": "string", - "usage": "Returns the list of phone numbers with the given extension." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-phone-org" - }, - { - "name": "included-telephony-types", - "type": "string", - "usage": "Returns the list of phone numbers that are of given `includedTelephonyTypes`. By default, if this query parameter is not provided, it will list both PSTN and Mobile Numbers. Possible input values are PSTN_NUMBER or MOBILE_NUMBER." - }, - { - "name": "location-id", - "type": "string", - "usage": "Return the list of phone numbers for this location within the given organization. The maximum length is 36." - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of phone numbers returned to this maximum count. The default is 2000." - }, - { - "name": "number-type", - "type": "string", - "usage": "Returns the filtered list of phone numbers that contain a given type of number. `available` or `state` query parameters cannot be used when `numberType=EXTENSION`. Possible input values:" - }, - { - "name": "order", - "type": "string", - "usage": "Sort the list of phone numbers based on the following:`lastName`,`dn`,`extension`. Sorted by number and extension in ascending order." - }, - { - "name": "org-id", - "type": "string", - "usage": "List numbers for this organization.", - "hidden": true - }, - { - "name": "owner-id", - "type": "string", - "usage": "Returns only the matched number/extension entries assigned to the feature with the specified UUID or `broadsoftId`." - }, - { - "name": "owner-name", - "type": "string", - "usage": "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255." - }, - { - "name": "owner-type", - "type": "string", - "usage": "Returns the list of phone numbers of the given `ownerType`. Possible input values:" - }, - { - "name": "phone-number", - "type": "string", - "usage": "Search for this `phoneNumber`." - }, - { - "name": "phone-number-type", - "type": "string", - "usage": "Returns the filtered list of phone numbers of the given `phoneNumberType`. Response excludes any extensions without numbers. Possible input values:" - }, - { - "name": "restricted-non-geo-numbers", - "type": "string", - "usage": "Returns the list of restricted non-geographical numbers." - }, - { - "name": "service-number", - "type": "string", - "usage": "Returns the list of service phone numbers." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching phone numbers. The default is 0." - }, - { - "name": "state", - "type": "string", - "usage": "Returns the list of phone numbers with the matching state. Response excludes any extensions without numbers. Possible input values:" - }, - { - "name": "toll-free-numbers", - "type": "string", - "usage": "Returns the list of toll-free phone numbers." - } - ] - }, - { - "path": "webex calling numbers initiate-jobs", - "short": "Initiate Number Jobs", - "long": "Starts the execution of an operation on a set of numbers. Supported operations are: `MOVE`, `NUMBER_USAGE_CHANGE`.\n\nUp to 1000 numbers can be given in `MOVE` operation type and `NUMBER_USAGE_CHANGE` operation type per request.\nIf another move number job request is initiated while a move job is in progress, the API call will receive a `409` HTTP status code.\n\nIn order to move a number the following is required:\n\n* The number must be unassigned.\n\n* Both locations must have the same PSTN Connection Type.\n\n* Both locations must have the same PSTN Provider.\n\n* Both locations have to be in the same country.\n\nFor example, you can move from Cisco Calling Plan to Cisco Calling Plan, but you cannot move from Cisco Calling Plan to a location with Cloud Connected PSTN.\n\nIn order to change the number usage the following is required:\n\n* The number must be unassigned.\n\n* Number Usage Type can be set to `NONE` if carrier has the PSTN service `GEOGRAPHIC_NUMBERS`.\n\n* Number Usage Type can be set to `SERVICE` if carrier has the PSTN service `SERVICE_NUMBERS`.\n\nFor example, you can initiate a `NUMBER_USAGE_CHANGE` job to change the number type from Standard number to Service number, or the other way around.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for initiate-jobs" - } - ] - }, - { - "path": "webex calling numbers list-manage-job-errors", - "short": "List Manage Numbers Job errors", - "long": "Lists all error details of Manage Numbers job. This will not list any errors if `exitCode` is `COMPLETED`. If the status is `COMPLETED_WITH_ERRORS` then this lists the cause of failures.\n\nList of possible Errors:\n\n+ BATCH-1017021 - Failed to move because it is an inactive number.\n\n+ BATCH-1017022 - Failed to move because the source location and target location have different CCP providers.\n\n+ BATCH-1017023 - Failed because it is not an unassigned number.\n\n+ BATCH-1017024 - Failed because it is a main number.\n\n+ BATCH-1017027 - Manage Numbers Move Operation is not supported.\n\n+ BATCH-1017031 - Hydra request is supported only for single number move job.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-manage-job-errors" - }, - { - "name": "job-id", - "type": "string", - "usage": "Retrieve the error details for this `jobId`.", - "required": true - }, - { - "name": "max", - "type": "string", - "usage": "Specifies the maximum number of records that you want to fetch." - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve list of jobs for this organization.", - "hidden": true - }, - { - "name": "start", - "type": "string", - "usage": "Specifies the error offset from the first result that you want to fetch." - } - ] - }, - { - "path": "webex calling numbers list-manage-jobs", - "short": "List Manage Numbers Jobs", - "long": "Lists all Manage Numbers jobs for the given organization in order of most recent one to oldest one irrespective of its status.\n\nThe public API only supports initiating jobs which move numbers between locations.\n\nVia Control Hub they can initiate both the move and delete, so this listing can show both.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-manage-jobs" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of jobs returned to this maximum count. Default is 2000." - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve list of Manage Number jobs for this organization.", - "hidden": true - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of jobs. Default is 0." - } - ] - }, - { - "path": "webex calling numbers manage-state-location", - "short": "Manage Number State in a location", - "long": "Activate or deactivate the specified set of phone numbers in a location for an organization.\n\nEach location has a set of phone numbers that can be assigned to people, workspaces, or features. Phone numbers must follow the E.164 format.\n\nActive phone numbers are in service. A mobile number is activated when assigned to a user. This API will not activate or deactivate mobile numbers.\n\nManaging phone number state in a location requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n
\n\n
This API is only supported for non-integrated PSTN connection types of Local Gateway (LGW) and Non-integrated CCP.
", - "flags": [ - { - "name": "action", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for manage-state-location" - }, - { - "name": "location-id", - "type": "string", - "usage": "`LocationId` to which numbers should be added.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization of the Route Group.", - "hidden": true - }, - { - "name": "phone-numbers", - "type": "stringSlice", - "default": "[]" - } - ] - }, - { - "path": "webex calling numbers pause-manage-job", - "short": "Pause the Manage Numbers Job", - "long": "Pause the running Manage Numbers Job. A paused job can be resumed.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for pause-manage-job" - }, - { - "name": "job-id", - "type": "string", - "usage": "Pause the Manage Numbers job for this `jobId`.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Pause the Manage Numbers job for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling numbers resume-manage-job", - "short": "Resume the Manage Numbers Job", - "long": "Resume the paused Manage Numbers Job. A paused job can be resumed.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for resume-manage-job" - }, - { - "name": "job-id", - "type": "string", - "usage": "Resume the Manage Numbers job for this `jobId`.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Resume the Manage Numbers job for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling numbers validate-phone", - "short": "Validate phone numbers", - "long": "Validate the list of phone numbers in an organization. Each phone number's availability is indicated in the response.\n\nEach location has a set of phone numbers that can be assigned to people, workspaces, or features. Phone numbers must follow the E.164 format for all countries, except for the United States, which can also follow the National format. Active phone numbers are in service.\n\nValidating a phone number in an organization requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for validate-phone" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization of the Route Group.", - "hidden": true - }, - { - "name": "phone-numbers", - "type": "stringSlice", - "default": "[]" - } - ] - }, - { - "path": "webex calling operating-modes", - "short": "OperatingModes commands" - }, - { - "path": "webex calling operating-modes create", - "short": "Create an Operating Mode", - "long": "Create an `Operating Mode` at an organization, or a location level.\n\n`Operating modes` can be used to define call routing rules for different scenarios like business hours, after hours, holidays, etc.\n\nCreating an `Operating Mode` requires a full, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "org-id", - "type": "string", - "usage": "Create the `operating mode` for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling operating-modes create-holiday", - "short": "Create an Operating Mode Holiday", - "long": "Create a holiday schedule event for the designated `Operating Mode`.\n\nHolidays define a recurring schedule for the `Operating Modes`. An `Operating Mode` can have a max of 150 holidays.\n\nCreating an `Operating Mode Holiday` requires a full, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-holiday" - }, - { - "name": "mode-id", - "type": "string", - "usage": "Create the holiday for this `operating mode`.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Create the `operating mode holiday` for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling operating-modes delete", - "short": "Delete an Operating Mode", - "long": "Delete the designated `Operating Mode`.\n\nDeleting an `Operating Mode` requires a full, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "mode-id", - "type": "string", - "usage": "Delete the `operating mode` with the matching ID.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Delete the `operating mode` from this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling operating-modes delete-holiday", - "short": "Delete an Operating Mode Holiday", - "long": "Delete the designated `Operating Mode Holiday`.\n\nDeleting an `Operating Mode Holiday` requires a full, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-holiday" - }, - { - "name": "holiday-id", - "type": "string", - "usage": "Delete the holiday with the matching ID.", - "required": true - }, - { - "name": "mode-id", - "type": "string", - "usage": "Delete the holiday from this `operating mode` matching ID.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Delete the `operating mode` from this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling operating-modes get", - "short": "Get Details for an Operating Mode", - "long": "Retrieve an `Operating Mode` by `Operating Mode ID`.\n\n`Operating modes` can be used to define call routing rules for different scenarios like business hours, after hours, holidays, etc.\n\nRetrieving an `operating mode` requires a full, read-only, or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "mode-id", - "type": "string", - "usage": "Get the `operating mode` with the matching ID.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Get the `operating mode` from this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling operating-modes get-forward-available-numbers", - "short": "Get Operating Mode Call Forward Available Phone Numbers", - "long": "List the service and standard PSTN numbers that are available to be assigned as a operating mode's call forward number.\n\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are assigned to an owning entity.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "extension", - "type": "string", - "usage": "Returns the list of PSTN phone numbers with the given `extension`." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-forward-available-numbers" - }, - { - "name": "location-id", - "type": "string", - "usage": "Return the list of phone numbers for this location within the given organization. The maximum length is 36.", - "required": true - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of phone numbers returned to this maximum count. The default is 2000." - }, - { - "name": "org-id", - "type": "string", - "usage": "List numbers for this organization.", - "hidden": true - }, - { - "name": "owner-name", - "type": "string", - "usage": "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255." - }, - { - "name": "phone-number", - "type": "string", - "usage": "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching phone numbers. The default is 0." - } - ] - }, - { - "path": "webex calling operating-modes get-holiday", - "short": "Get details for an Operating Mode Holiday", - "long": "Retrieve an `Operating Mode Holiday` by ID.\n\nHolidays define a recurring schedule for the `Operating Modes`.\n\nRetrieving an `Operating Mode Holiday` requires a full, read-only, or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-holiday" - }, - { - "name": "holiday-id", - "type": "string", - "usage": "Get the `operating mode Holiday` with the matching ID.", - "required": true - }, - { - "name": "mode-id", - "type": "string", - "usage": "Get the holiday from this `operating mode` matching ID.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Get the `operating mode` from this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling operating-modes list", - "short": "Read the List of Operating Modes", - "long": "Retrieve `Operating Modes` list defined at location, or organization level. Use query parameters to filter the result set by location or level. The list returned is sorted in ascending order by operating mode name. Long result sets are split into [pages](/docs/basics#pagination).\n\n`Operating modes` help manage calls more efficiently by routing them based on predefined settings.\n\nRetrieving this list requires a full, read-only, or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "limit-to-location-id", - "type": "string", - "usage": "Location query parameter to filter the `operating modes` from that location only." - }, - { - "name": "limit-to-org-level-enabled", - "type": "string", - "usage": "If true, only return `operating modes` defined at the organization level." - }, - { - "name": "max", - "type": "string", - "usage": "Maximum number of `operating modes` to return in a single page. `max` must be equal to, or greater than `1`, and equal to or less than `100`." - }, - { - "name": "name", - "type": "string", - "usage": "List `operating modes` whose name contains this string." - }, - { - "name": "order", - "type": "string", - "usage": "Sort the list of `operating modes` based on `name`, either asc, or desc." - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve `operating modes` list from this organization.", - "hidden": true - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching objects." - } - ] - }, - { - "path": "webex calling operating-modes list-available-location", - "short": "Retrieve the List of Available Operating Modes in a Location", - "long": "Retrieve list of `Operating Modes` which are available to be assigned to a location level feature (`Auto Attendant`, `Call Queue`, or `Hunt Group`). Since each location and an org can have a max of 100 `Operating Modes` defined. The max number of `operating modes` that can be returned is 200.\n\n`Operating modes` can be used to define call routing rules for different scenarios like business hours, after hours, holidays, etc. for the `Auto Attendant`, `Call Queue`, and `Hunt Group` features.\n\nRetrieving this list requires a full, read-only, or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-available-location" - }, - { - "name": "location-id", - "type": "string", - "usage": "Retrieve `operating modes` list from this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve `operating modes` list from this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling operating-modes update", - "short": "Modify an Operating Mode", - "long": "Modify the designated `Operating Mode's` configuration.\n\n`Operating modes` can be used to define call routing rules for different scenarios like business hours, after hours, holidays, etc.\n\nModifying an `Operating Mode` requires a full, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "mode-id", - "type": "string", - "usage": "Modify the `operating mode` with the matching ID.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Modify the `operating mode` from this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling operating-modes update-holiday", - "short": "Modify an Operating Mode Holiday", - "long": "Modify the designated `Operating Mode Holiday's` configuration.\n\nModifying an `Operating Mode Holiday` requires a full, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-holiday" - }, - { - "name": "holiday-id", - "type": "string", - "usage": "Modify the `Holiday` with the matching ID.", - "required": true - }, - { - "name": "mode-id", - "type": "string", - "usage": "Modify the holiday from this `operating mode` matching ID.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Modify the `operating mode` from this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling paging-group", - "short": "PagingGroup commands" - }, - { - "path": "webex calling paging-group create", - "short": "Create a new Paging Group", - "long": "Create a new Paging Group for the given location.\n\nGroup Paging allows a one-way call or group page to up to 75 people, workspaces and virtual lines by\ndialing a number or extension assigned to a specific paging group. The Group Paging service makes a simultaneous call to all the assigned targets.\n\nCreating a paging group requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "location-id", - "type": "string", - "usage": "Create the paging group for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Create the paging group for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling paging-group delete", - "short": "Delete a Paging Group", - "long": "Delete the designated Paging Group.\n\nGroup Paging allows a person to place a one-way call or group page to up to 75 people and/or workspaces by\ndialing a number or extension assigned to a specific paging group. The Group Paging service makes a simultaneous call to all the assigned targets.\n\nDeleting a paging group requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location from which to delete a paging group.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Delete the paging group from this organization.", - "hidden": true - }, - { - "name": "paging-id", - "type": "string", - "usage": "Delete the paging group with the matching ID.", - "required": true - } - ] - }, - { - "path": "webex calling paging-group get", - "short": "Get Details for a Paging Group", - "long": "Retrieve Paging Group details.\n\nGroup Paging allows a person, place or virtual line a one-way call or group page to up to 75 people and/or workspaces and/or virtual line by\ndialing a number or extension assigned to a specific paging group. The Group Paging service makes a simultaneous call to all the assigned targets.\n\nRetrieving paging group details requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "location-id", - "type": "string", - "usage": "Retrieve settings for a paging group in this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve paging group settings from this organization.", - "hidden": true - }, - { - "name": "paging-id", - "type": "string", - "usage": "Retrieve settings for the paging group with this identifier.", - "required": true - } - ] - }, - { - "path": "webex calling paging-group get-primary-numbers", - "short": "Get Paging Group Primary Available Phone Numbers", - "long": "List the service and standard PSTN numbers that are available to be assigned as the paging group's primary phone number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-primary-numbers" - }, - { - "name": "location-id", - "type": "string", - "usage": "Return the list of phone numbers for this location within the given organization. The maximum length is 36.", - "required": true - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of phone numbers returned to this maximum count. The default is 2000." - }, - { - "name": "org-id", - "type": "string", - "usage": "List numbers for this organization.", - "hidden": true - }, - { - "name": "phone-number", - "type": "string", - "usage": "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching phone numbers. The default is 0." - } - ] - }, - { - "path": "webex calling paging-group list", - "short": "Read the List of Paging Groups", - "long": "List all Paging Groups for the organization.\n\nGroup Paging allows a person to place a one-way call or group page to up to 75 people and/or workspaces by\ndialing a number or extension assigned to a specific paging group. The Group Paging service makes a simultaneous call to all the assigned targets.\n\nRetrieving this list requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "location-id", - "type": "string", - "usage": "Return only paging groups with matching location ID. Default is all locations" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of objects returned to this maximum count. Default is 2000" - }, - { - "name": "name", - "type": "string", - "usage": "Return only paging groups with the matching name." - }, - { - "name": "org-id", - "type": "string", - "usage": "List paging groups for this organization.", - "hidden": true - }, - { - "name": "phone-number", - "type": "string", - "usage": "Return only paging groups with matching primary phone number or extension." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching objects. Default is 0" - } - ] - }, - { - "path": "webex calling paging-group update", - "short": "Update a Paging Group", - "long": "Update the designated Paging Group.\n\nGroup Paging allows a person to place a one-way call or group page to up to 75 people, workspaces and virtual lines by\ndialing a number or extension assigned to a specific paging group. The Group Paging service makes a simultaneous call to all the assigned targets.\n\nUpdating a paging group requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "location-id", - "type": "string", - "usage": "Update settings for a paging group in this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Update paging group settings from this organization.", - "hidden": true - }, - { - "name": "paging-id", - "type": "string", - "usage": "Update settings for the paging group with this identifier.", - "required": true - } - ] - }, - { - "path": "webex calling partner-reports-templates", - "short": "PartnerReportsTemplates commands" - }, - { - "path": "webex calling partner-reports-templates create", - "short": "Create a Report", - "long": "Create a new report. A new report can be created using `templateId` available from the _List Report Templates_ API. For each `templateId`, there are a set of validation rules that need to be followed.\n\nThe `templateId` parameter is a number. However, it is a limitation of developer.webex.com platform that it is passed as a string when you try to test the API from here.\n\nTo access this endpoint, you must use an administrator token with `spark-admin:reports_write` and `identity:people_read` scopes.\n\n**Notes**:\n\n
CSV reports for Webex suite services are only created for organizations in the specified region. Organizations based in a different region will require a separate request with region specified.
\n\n
When no region is specified, the request defaults to Partner organization's home region. A request against a region where there are no organizations will return blank CSV files.
", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "end-date", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "on-behalf-of-sub-partner-org-id", - "type": "string", - "usage": "The encoded organization ID for the sub partner." - }, - { - "name": "region-id", - "type": "string" - }, - { - "name": "start-date", - "type": "string" - }, - { - "name": "template-id", - "type": "int64", - "default": "0" - } - ] - }, - { - "path": "webex calling partner-reports-templates delete", - "short": "Delete a Report", - "long": "Remove a report from the system.\n\nSpecify the report ID in the `reportId` parameter in the URI\n\nTo access this endpoint, you must use an administrator token with `spark-admin:reports_write` scope.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "on-behalf-of-sub-partner-org-id", - "type": "string", - "usage": "The encoded organization ID for the sub partner." - }, - { - "name": "report-id", - "type": "string", - "usage": "The unique identifier for the report.", - "required": true - } - ] - }, - { - "path": "webex calling partner-reports-templates get", - "short": "Get Report Details", - "long": "Shows details for a report by report ID.\n\nSpecify the report ID in the `reportId` parameter in the URI.\n\nTo access this endpoint, you must use an administrator token with `spark-admin:reports_read` and `identity:people_read` scopes.\n\n**Notes**:\n\n
Reports are usually provided in zip format. A content-header application/zip or application/octet-stream does indicate the zip format. There is usually no .zip file extension.
", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "on-behalf-of-sub-partner-org-id", - "type": "string", - "usage": "The encoded organization ID for the sub partner." - }, - { - "name": "report-id", - "type": "string", - "usage": "The unique identifier for the report.", - "required": true - } - ] - }, - { - "path": "webex calling partner-reports-templates list", - "short": "List Reports", - "long": "Lists all reports previously generated from a given region. Use query parameters to filter the response. The parameters are optional.\n\nTo access this endpoint, you must use an administrator token with `spark-admin:reports_read` and `identity:people_read` scopes.\n\n
CSV reports for Webex suite services are only supported for organizations based in one region per API request. Organizations based in a different region will require a separate request with region specified.
\n\n
When no region is specified, the request defaults to Partner organization's home region.
\n\n
Reports are usually provided in zip format. A content-header application/zip or application/octet-stream does indicate the zip format. There is usually no .zip file extension.
", - "flags": [ - { - "name": "from", - "type": "string", - "usage": "List reports that were created on or after this date." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "on-behalf-of-sub-partner-org-id", - "type": "string", - "usage": "The encoded organization ID for the sub partner." - }, - { - "name": "region-id", - "type": "string", - "usage": "Data in the report will be from organizations in this region, for example, US, CA, or EU." - }, - { - "name": "service", - "type": "string", - "usage": "List reports which use this service." - }, - { - "name": "template-id", - "type": "string", - "usage": "List reports with this report template ID." - }, - { - "name": "to", - "type": "string", - "usage": "List reports that were created before this date." - } - ] - }, - { - "path": "webex calling partner-reports-templates list-2", - "short": "List Report Templates", - "long": "List report templates. Report templates are available for use with the Partner Reports API.\n\nTo access this endpoint, you must use an administrator token with `spark-admin:reports_read` and `identity:people_read` [scopes](/docs/integrations#scopes). The authenticated user must be a Partner full administrator or Partner read-only administrator of the organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-2" - }, - { - "name": "on-behalf-of-sub-partner-org-id", - "type": "string", - "usage": "The encoded organization ID for the sub partner." - } - ] - }, - { - "path": "webex calling people", - "short": "People commands" - }, - { - "path": "webex calling people create-person", - "short": "Create a Person", - "long": "Create a new user account for a given organization. Only an admin can create a new user account.\n\nAt least one of the following body parameters is required to create a new user: `displayName`, `firstName`, `lastName`.\n\nCurrently, users may have only one email address associated with their account. The `emails` parameter is an array, which accepts multiple values to allow for future expansion, but currently only one email address will be used for the new user.\n\nAdmin users can include `Webex calling` (BroadCloud) user details in the response by specifying `callingData` parameter as true. It may happen that the POST request with calling data returns a 400 status, but the person was created still. One way to get into this state is if an invalid phone number is assigned to a user. The people API aggregates calls to several other microservices, and one may have failed. A best practice is to check if the user exists before retrying. This can be done with the user's email address and a GET /people.\n\nWhen doing attendee management, append `#attendee` to the `siteUrl` parameter (e.g. `mysite.webex.com#attendee`) to make the new user an attendee for a site.\n\n**NOTES**:\n\n* For creating a `Webex Calling` user, you must provide `phoneNumbers` or `extension`, `locationId`, and `licenses` string in the same request.\n\n* `SipAddresses` are asigned via an asynchronous process. This means that the POST response may not show the SIPAddresses immediately. Instead you can verify them with a separate GET to /people, after they were newly configured.\n\n* When assigning multiple licenses in a single request, the system will assign all valid and available licenses. If any requested licenses cannot be assigned, the operation will continue with the remaining licenses. As a result, it is possible that not all requested licenses are assigned to the user.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calling-data", - "type": "string", - "usage": "Include Webex Calling user details in the response." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-person" - }, - { - "name": "min-response", - "type": "string", - "usage": "Set to `true` to improve performance by omitting person details and returning only the ID in the response when successful. If unsuccessful the response will have optional error details." - } - ] - }, - { - "path": "webex calling people delete-person", - "short": "Delete a Person", - "long": "Remove a person from the system.\n\n**Required Administrator Roles:**\n\nThe following administrators have permission to use this API:\n\n**Customer Organization:**\n- Full administrator\n- User administrator\n\n**Partner/External Access:**\n- External full administrator\n\n**Note:** External read-only administrators, provisioning administrators, and device administrators cannot delete users.\n\nSpecify the person ID in the `personId` parameter in the URI.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-person" - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling people get-my-own", - "short": "Get My Own Details", - "long": "Get profile details for the authenticated user. This is the same as GET `/people/{personId}` using the Person ID associated with your Auth token.\n\nAdmin users can include `Webex Calling` (BroadCloud) user details in the response by specifying `callingData` parameter as true.", - "flags": [ - { - "name": "calling-data", - "type": "string", - "usage": "Include Webex Calling user details in the response." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-my-own" - } - ] - }, - { - "path": "webex calling people get-person", - "short": "Get Person Details", - "long": "Shows details for a person, by ID.\n\nResponse properties associated with a user's presence status, such as `status` or `lastActivity`, will only be displayed for people within your organization or an organization you manage. Presence information will not be shown if the authenticated user has [disabled status sharing](https://help.webex.com/nkzs6wl/).\n\nAdmin users can include `Webex Calling` (BroadCloud) user details in the response by specifying `callingData` parameter as `true`.\n\nSpecify the person ID in the `personId` parameter in the URI.", - "flags": [ - { - "name": "calling-data", - "type": "string", - "usage": "Include Webex Calling user details in the response." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-person" - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling people list", - "short": "List People", - "long": "List people in your organization. For most users, either the `email` or `displayName` parameter is required. Admin users can omit these fields and list all users in their organization.\n\nResponse properties associated with a user's presence status, such as `status` or `lastActivity`, will only be returned for people within your organization or an organization you manage. Presence information will not be returned if the authenticated user has [disabled status sharing](https://help.webex.com/nkzs6wl/). Calling /people frequently to poll `status` information for a large set of users will quickly lead to `429` errors and throttling of such requests and is therefore discouraged.\n\nAdmin users can include `Webex Calling` (BroadCloud) user details in the response by specifying `callingData` parameter as `true`. Admin users can list all users in a location. Admin users will receive an enriched payload with additional administrative fields like `licenses`,`roles`, `locations` etc. These fields are shown when accessing a user via GET /people/{id}, not when doing a GET /people?id=\n\nLookup by `email` is only supported for people within the same org or where a partner admin relationship is in place.\n\nLookup by `roles` is only supported for Admin users for the people within the same org.\n\nLong result sets will be split into [pages](/docs/basics#pagination).", - "flags": [ - { - "name": "calling-data", - "type": "string", - "usage": "Include Webex Calling user details in the response." - }, - { - "name": "display-name", - "type": "string", - "usage": "List people whose name starts with this string. For non-admin requests, either this or email are required." - }, - { - "name": "email", - "type": "string", - "usage": "List people with this email address. For non-admin requests, either this or `displayName` are required. With the exception of partner admins and a managed org relationship, people lookup by email is only available for users in the same org." - }, - { - "name": "exclude-status", - "type": "string", - "usage": "Omit people status/availability to enhance query performance." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "id", - "type": "string", - "usage": "List people by ID. Accepts up to 85 person IDs separated by commas. If this parameter is provided then presence information (such as the `lastActivity` or `status` properties) will not be included in the response." - }, - { - "name": "location-id", - "type": "string", - "usage": "List people present in this location." - }, - { - "name": "max", - "type": "string", - "usage": "Limit the maximum number of people in the response. If `callingData`=true, then `max` will not be more than 100. If `locationId` is specified then `max` will not be more than 50." - }, - { - "name": "org-id", - "type": "string", - "usage": "List people in this organization. Only admin users of another organization (such as partners) may use this parameter.", - "hidden": true - }, - { - "name": "roles", - "type": "string", - "usage": "List of roleIds separated by commas." - } - ] - }, - { - "path": "webex calling people update-person", - "short": "Update a Person", - "long": "Update details for a person, by ID.\n\nSpecify the person ID in the `personId` parameter in the URI. Only an admin can update a person details.\n\nInclude all details for the person. This action expects all user details to be present in the request. A common approach is to first [GET the person's details](/docs/api/v1/people/get-person-details), make changes, then PUT both the changed and unchanged values.\n\nAdmin users can include `Webex Calling` (BroadCloud) user details in the response by specifying `callingData` parameter as true.\n\nWhen doing attendee management, to update a user from host role to an attendee for a site append `#attendee` to the respective `siteUrl` and remove the meeting host license for this site from the license array.\nTo update a person from an attendee role to a host for a site, add the meeting license for this site in the meeting array, and remove that site from the `siteurl` parameter.\n\nTo remove the attendee privilege for a user on a meeting site, remove the `sitename#attendee` from the `siteUrl`s array. The `showAllTypes` parameter must be set to `true`.\n\n**NOTE**:\n\n* The `locationId` can only be set when assigning a calling license to a user. It cannot be changed if a user is already an existing calling user.\n\n* The `extension` field should be used to update the Webex Calling extension for a person. The extension value should not include the location routing prefix. The `work_extension` type in the `phoneNumbers` object as seen in the response payload of [List People](/docs/api/v1/people/list-people) or [Get Person Details](/docs/api/v1/people/get-person-details), cannot be used to set the Webex Calling extension for a person.\n\n* When updating a user with multiple email addresses using a PUT request, ensure that the primary email address is listed first in the array. Note that the order of email addresses returned by a GET request is not guaranteed..\n\n* The People API is a combination of several microservices, each responsible for specific attributes of a person. As a result, a PUT request that returns an error response code may still have altered some values of the person's data. Therefore, it is recommended to perform a GET request after encountering an error to verify the current state of the resource. \n\n* Some licenses are implicitly assigned by the system and cannot be admin controlled. They are necessary for the baseline function of the Webex system. If you get an error about implicitly assigned licensed that cannot be removed, please ensure you have the corresponding license in your PUT request.\n\n* When assigning multiple licenses in a single request, the system will assign all valid and available licenses. If any requested licenses cannot be assigned, the operation will continue with the remaining licenses. As a result, it is possible that not all requested licenses are assigned to the user.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calling-data", - "type": "string", - "usage": "Include Webex Calling user details in the response." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-person" - }, - { - "name": "min-response", - "type": "string", - "usage": "Set to `true` to improve performance by omitting person details in the response. If unsuccessful the response will have optional error details." - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - }, - { - "name": "show-all-types", - "type": "string", - "usage": "Include additional user data like `#attendee` role." - } - ] - }, - { - "path": "webex calling pstn", - "short": "Pstn commands" - }, - { - "path": "webex calling pstn create-emergency-address-location", - "short": "Add an Emergency Address to a Location", - "long": "Adds a new emergency address to the specified location. On success, returns the unique identifier of the newly created emergency address.\n\nEmergency address settings allow the admin to configure or update the physical address associated with a phone number or a location.\n\nAdding emergency address to a location requires a full administrator auth token with scope of `spark-admin:telephony_pstn_write`.", - "flags": [ - { - "name": "address1", - "type": "string" - }, - { - "name": "address2", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "city", - "type": "string" - }, - { - "name": "country", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-emergency-address-location" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location to which the emergency address will be added.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Adding emergency address for a location in this organization.", - "hidden": true - }, - { - "name": "postal-code", - "type": "string" - }, - { - "name": "state", - "type": "string" - } - ] - }, - { - "path": "webex calling pstn emergency-address-lookup-verify-address-is-valid", - "short": "Emergency Address Lookup to Verify if Address is Valid", - "long": "Returns a suggested address. If the input address is valid and unchanged, no errors are returned. If the input address requires corrections, the response includes a suggested address along with error details.\n\nEmergency address settings allow the admin to configure or update the physical address associated with a phone number or a location.\n\nEmergency address lookup to verify if address is valid requires a full administrator auth token with scope of `spark-admin:telephony_pstn_read`.", - "flags": [ - { - "name": "address1", - "type": "string" - }, - { - "name": "address2", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "city", - "type": "string" - }, - { - "name": "country", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for emergency-address-lookup-verify-address-is-valid" - }, - { - "name": "location-id", - "type": "string", - "usage": "Emergency address lookup for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Emergency address lookup for this organization.", - "hidden": true - }, - { - "name": "postal-code", - "type": "string" - }, - { - "name": "state", - "type": "string" - } - ] - }, - { - "path": "webex calling pstn get-connection-location", - "short": "Retrieve PSTN Connection for a Location", - "long": "Retrieves the current configured PSTN connection details for a location.\n\nPSTN location connection settings enables the admin to configure or change the PSTN provider for a location.\n\nRetrieving the PSTN connection details for a location requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_pstn_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-connection-location" - }, - { - "name": "location-id", - "type": "string", - "usage": "Retrieve PSTN location connection details for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve PSTN location connection details for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling pstn get-connection-options-location", - "short": "Retrieve PSTN Connection Options for a Location", - "long": "Retrieve the list of PSTN connection options available for a location.\n\nPSTN location connection settings enables the admin to configure or change the PSTN provider for a location.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_pstn_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-connection-options-location" - }, - { - "name": "location-id", - "type": "string", - "usage": "Return the list of List PSTN location connection options for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "List PSTN location connection options for this organization.", - "hidden": true - }, - { - "name": "service-types", - "type": "string", - "usage": "Use the `serviceTypes` parameter to fetch connections for the following services * `MOBILE_NUMBERS`" - } - ] - }, - { - "path": "webex calling pstn setup-connection-location", - "short": "Setup PSTN Connection for a Location", - "long": "Set up or update the PSTN connection details for a location.\n\nPSTN location connection settings enables the admin to configure or change the PSTN provider for a location.\n\nSetting up PSTN connection on a location requires a full administrator auth token with scopes of `spark-admin:telephony_pstn_write` and `spark-admin:telephony_pstn_read`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for setup-connection-location" - }, - { - "name": "id", - "type": "string" - }, - { - "name": "location-id", - "type": "string", - "usage": "Setup PSTN location connection options for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Setup PSTN location connection for this organization.", - "hidden": true - }, - { - "name": "premise-route-id", - "type": "string" - }, - { - "name": "premise-route-type", - "type": "string" - } - ] - }, - { - "path": "webex calling pstn update-emergency-address-location", - "short": "Update the Emergency Address of a Location", - "long": "Updates the emergency address of the specified location.\n\nEmergency address settings allow the admin to configure or update the physical address associated with a phone number or a location.\n\nUpdating the emergency address of a location requires a full administrator auth token with scope of `spark-admin:telephony_pstn_write`.", - "flags": [ - { - "name": "address-id", - "type": "string", - "usage": "Unique identifier for the emergency address that will be updated.", - "required": true - }, - { - "name": "address1", - "type": "string" - }, - { - "name": "address2", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "city", - "type": "string" - }, - { - "name": "country", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-emergency-address-location" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location for which the emergency address will be updated.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Updating the emergency address of a location in this organization.", - "hidden": true - }, - { - "name": "postal-code", - "type": "string" - }, - { - "name": "state", - "type": "string" - } - ] - }, - { - "path": "webex calling pstn update-emergency-address-phone-number", - "short": "Update the Emergency Address for a Phone Number", - "long": "Update the emergency address for a phone number.\n\nEmergency address settings allow the admin to configure or update the physical address associated with a phone number or a location.\n\nUpdating the emergency address for a phone number requires a full administrator auth token with scope of `spark-admin:telephony_pstn_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-emergency-address-phone-number" - }, - { - "name": "org-id", - "type": "string", - "usage": "Update the emergency address of phone number in this organization.", - "hidden": true - }, - { - "name": "phone-number", - "type": "string", - "usage": "Update the emergency address for this phone number.", - "required": true - } - ] - }, - { - "path": "webex calling recording-report", - "short": "RecordingReport commands" - }, - { - "path": "webex calling recording-report get-audit", - "short": "Get Recording Audit Report Details", - "long": "Retrieves details for a recording audit report with a specified recording ID.\n\nOnly recording audit report details of meetings hosted by or shared with the authenticated user may be retrieved.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-audit" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin on-behalf-of scopes. If set, the admin may specify the email of a user in a site they manage and the API will return recording details of that user." - }, - { - "name": "max", - "type": "string", - "usage": "Maximum number of recording audit report details to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`." - }, - { - "name": "recording-id", - "type": "string", - "usage": "A unique identifier for the recording." - }, - { - "name": "timezone", - "type": "string", - "usage": "e.g. UTC" - } - ] - }, - { - "path": "webex calling recording-report get-meeting-archive", - "short": "Get Meeting Archive Details", - "long": "Retrieves details for a meeting archive report with a specified archive ID, which contains recording metadata.\n\nMeeting archive details are only available to full administrators, not even the meeting host.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.", - "flags": [ - { - "name": "archive-id", - "type": "string", - "usage": "A unique identifier for the meeting archive summary.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-meeting-archive" - }, - { - "name": "timezone", - "type": "string", - "usage": "e.g. UTC" - } - ] - }, - { - "path": "webex calling recording-report list-audit-summaries", - "short": "List of Recording Audit Report Summaries", - "long": "Lists of recording audit report summaries. You can specify a date range and the maximum number of recording audit report summaries to return.\n\nOnly recording audit report summaries of meetings hosted by or shared with the authenticated user will be listed.\n\nThe list returned is sorted in descending order by the date and time that the recordings were created.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n* If `siteUrl` is specified, the recording audit report summaries of the specified site will be listed; otherwise, recording audit report summaries of the user's preferred site will be listed. All available Webex sites and the preferred site of the user can be retrieved by the `Get Site List` API.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.", - "flags": [ - { - "name": "from", - "type": "string", - "usage": "Starting date and time (inclusive) for recording audit report summaries to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`. Please note that the interval between `to` and `from` cannot exceed 90 days and the interval between the current time and `from` cannot exceed 365 days." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-audit-summaries" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin on-behalf-of scopes. If set, the admin may specify the email of a user in a site they manage and the API will return recording audit report summaries of that user. If a special value of `all` is set for `hostEmail`, the admin can list recording audit report summaries of all users on the target site, not of a single user." - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "max", - "type": "string", - "usage": "Maximum number of recording audit report summaries to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`." - }, - { - "name": "site-url", - "type": "string", - "usage": "URL of the Webex site which the API lists recording audit report summaries from. If not specified, the API lists summary audit report for recordings from the user's preferred site. All available Webex sites and the preferred site of the user can be retrieved by `Get Site List` API." - }, - { - "name": "timezone", - "type": "string", - "usage": "e.g. UTC" - }, - { - "name": "to", - "type": "string", - "usage": "Ending date and time (exclusive) for recording audit report summaries to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`. Please note that the interval between `to` and `from` cannot exceed 90 days and the interval between the current time and `from` cannot exceed 365 days." - } - ] - }, - { - "path": "webex calling recording-report list-meeting-archive-summaries", - "short": "List Meeting Archive Summaries", - "long": "Lists of meeting archive summaries. You can specify a date range and the maximum number of meeting archive summaries to return.\n\nMeeting archive summaries are only available to full administrators, not even the meeting host.\n\nThe list returned is sorted in descending order by the date and time that the archives were created.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n* If `siteUrl` is specified, the meeting archive summaries of the specified site will be listed; otherwise, meeting archive summaries of the user's preferred site will be listed. All available Webex sites and the preferred site of the user can be retrieved by the `Get Site List` API.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.", - "flags": [ - { - "name": "from", - "type": "string", - "usage": "Starting date and time (inclusive) for meeting archive summaries to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`. Please note that the interval between `to` and `from` cannot exceed 30 days." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-meeting-archive-summaries" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "max", - "type": "string", - "usage": "Maximum number of meeting archive summaries to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`." - }, - { - "name": "site-url", - "type": "string", - "usage": "URL of the Webex site which the API lists meeting archive summaries from. If not specified, the API lists meeting archive summaries for recordings from the user's preferred site. All available Webex sites and the preferred site of the user can be retrieved by `Get Site List` API." - }, - { - "name": "timezone", - "type": "string", - "usage": "e.g. UTC" - }, - { - "name": "to", - "type": "string", - "usage": "Ending date and time (exclusive) for meeting archive summaries to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`. Please note that the interval between `to` and `from` cannot exceed 30 days." - } - ] - }, - { - "path": "webex calling reports", - "short": "Reports commands" - }, - { - "path": "webex calling reports create", - "short": "Create a Report", - "long": "Create a new report. For each `templateId`, there are a set of validation rules that need to be followed. For example, for templates belonging to Webex, the user needs to provide `siteUrl`. These validation rules can be retrieved via the [Report Templates API](/docs/api/v1/report-templates).\n\nThe 'templateId' parameter is a number. However, it is a limitation of developer.webex.com platform that it is passed as a string when you try to test the API from here.\n\nCSV reports for Webex suite services are only supported for organizations based in the North American region. Organizations based in a different region will return blank CSV files for any Teams reports.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "end-date", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "site-list", - "type": "string" - }, - { - "name": "start-date", - "type": "string" - }, - { - "name": "template-id", - "type": "int64", - "default": "0" - } - ] - }, - { - "path": "webex calling reports delete", - "short": "Delete a Report", - "long": "Remove a report from the system.\n\nSpecify the report ID in the `reportId` parameter in the URI\n\nCSV reports for Webex suite services are only supported for organizations based in the North American region. Organizations based in a different region will return blank CSV files for any Teams reports.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "report-id", - "type": "string", - "usage": "The unique identifier for the report.", - "required": true - } - ] - }, - { - "path": "webex calling reports get", - "short": "Get Report Details", - "long": "Shows details for a report, by report ID.\n\nSpecify the report ID in the `reportId` parameter in the URI.\n\n**Notes**:\nCSV reports for Webex suite services are only supported for organizations based in the North American region. Organizations based in a different region will return blank CSV files for any Teams reports.\n\nReports are usually provided in zip format. A Content-header `application/zip` or `application/octet-stream` does indicate the zip format. There is usually no .zip file extension.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "report-id", - "type": "string", - "usage": "The unique identifier for the report.", - "required": true - } - ] - }, - { - "path": "webex calling reports list", - "short": "List Reports", - "long": "Lists all reports. Use query parameters to filter the response. The parameters are optional. However, `from` and `to` parameters should be provided together.\n\n**Notes**:\nCSV reports for Webex suite services are only supported for organizations based in the North American region. Organizations based in a different region will return blank CSV files for any Teams reports.\n\nReports are usually provided in zip format. A Content-header `application/zip` or `application/octet-stream` does indicate the zip format. There is usually no .zip file extension.", - "flags": [ - { - "name": "from", - "type": "string", - "usage": "List reports that were created on or after this date." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "report-id", - "type": "string", - "usage": "List reports by ID." - }, - { - "name": "service", - "type": "string", - "usage": "List reports which use this service." - }, - { - "name": "template-id", - "type": "string", - "usage": "List reports with this report template ID." - }, - { - "name": "to", - "type": "string", - "usage": "List reports that were created before this date." - } - ] - }, - { - "path": "webex calling reports-detailed-call-history", - "short": "ReportsDetailedCallHistory commands" - }, - { - "path": "webex calling reports-detailed-call-history get", - "short": "Get Detailed Call History", - "long": "Provides Webex Calling Detailed Call History data for your organization.\n\nResults can be filtered with the `startTime`, `endTime` and `locations` request parameters. The `startTime` and `endTime` parameters specify the start and end of the time period for the Detailed Call History reports you wish to collect. The API will return all reports that were created between `startTime` and `endTime`.\n\n

\nResponse entries may be added as more information is made available for the reports.\nValues in response items may be extended as more capabilities are added to Webex Calling.", - "flags": [ - { - "name": "end-time", - "type": "string", - "usage": "Time of the last report you wish to collect. (Report time is the time the call finished). **Note:** The specified time should be later than `startTime` but no later than 48 hours, and formatted as `YYYY-MM-DDTHH:MM:SS.mmmZ`." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "locations", - "type": "string", - "usage": "Name of the location (as shown in Control Hub). Up to 10 comma-separated locations can be provided. Allows you to query reports by location." - }, - { - "name": "max", - "type": "string", - "usage": "Limit the maximum number of reports per page of the response. The range is 500 to 5000. Values below 500 are automatically adjusted up to 500, and values above 5000 are automatically adjusted down to 5000. When the API has more reports to return than the max value, the API response will be paginated. Follow the next link contained in the “Link” header within a response to request the next page of results. If there is no next link, all reports for the selected time range have been collected. For instance, let's say the initial API request is https://analytics-calling.webexapis.com/v1/cdr_feed?endTime=2025-08-15T10:00:00.000Z&startTime=2025-08-15T08:00:00.000Z&max=5000 The link header in the response would look something like <;rel=\"next\">" - }, - { - "name": "start-time", - "type": "string", - "usage": "Time of the first report you wish to collect. (Report time is the time the call finished). **Note:** The specified time must be between 5 minutes ago and 48 hours ago, and formatted as `YYYY-MM-DDTHH:MM:SS.mmmZ`." - } - ] - }, - { - "path": "webex calling reports-detailed-call-history get-live-stream", - "short": "Get Live Stream Detailed Call History", - "long": "Provides Webex Calling Detailed Call History data for your organization.\n\nResults can be filtered with the `startTime`, `endTime` and `locations` request parameters. The `startTime` and `endTime` parameters specify the time window during which Detailed Call History data was inserted into the Webex Calling cloud. The API will return all reports whose insertion time into the Webex Calling cloud falls between `startTime` and `endTime`.\n\n

\nResponse entries may be added as more information is made available for the reports.\nValues in response items may be extended as more capabilities are added to Webex Calling.", - "flags": [ - { - "name": "end-time", - "type": "string", - "usage": "The end date-time of the last record you wish to collect in UTC time. It would be the latest time at which the data was inserted into the Webex Calling cloud for the records you wish to collect. Format must be as `YYYY-MM-DDTHH:MM:SS.mmmZ`. `endTime` must be 1 minute ago from your current UTC time and can’t be older than 12 hours. `endTime` must be greater than `startTime`. The window period between `startTime` and `endTime` must not exceed 2 hours in a single API request." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-live-stream" - }, - { - "name": "locations", - "type": "string", - "usage": "Name of the location (as shown in Control Hub). Up to 10 comma-separated locations can be provided. Allows you to query reports by location." - }, - { - "name": "max", - "type": "string", - "usage": "Limit the maximum number of reports per page of the response. The range is 500 to 5000. Values below 500 are automatically adjusted up to 500, and values above 5000 are automatically adjusted down to 5000. When the API has more reports to return than the max value, the API response will be paginated. Follow the next link contained in the “Link” header within a response to request the next page of results. If there is no next link, all reports for the selected time range have been collected. For instance, let's say the initial API request is https://analytics-calling.webexapis.com/v1/cdr_stream?endTime=2025-08-15T10:00:00.000Z&startTime=2025-08-15T08:00:00.000Z&max=5000 The link header in the response would look something like <;rel=\"next\">" - }, - { - "name": "start-time", - "type": "string", - "usage": "The start date-time of the first record you wish to collect in UTC time. It would be the earliest time at which the data was inserted into the Webex Calling cloud for the records you wish to collect. Format must be as `YYYY-MM-DDTHH:MM:SS.mmmZ`. `startTime` can't be older than 12 hours from your current UTC time. The window period between `startTime` and `endTime` must not exceed 2 hours in a single API request." - } - ] - }, - { - "path": "webex calling send-activation-email", - "short": "SendActivationEmail commands" - }, - { - "path": "webex calling send-activation-email get-bulk-resend-job-errors", - "short": "Get Bulk Activation Email Resend Job Errors", - "long": "Get errors of an activation email resend job by its job ID.\n\nRequires a full or user administrator auth token with a scope of `spark-admin:people_write` or read-only administrator auth token with a scope of `spark-admin:people_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-bulk-resend-job-errors" - }, - { - "name": "job-id", - "type": "string", - "usage": "Retrieve job status for this `jobId`.", - "required": true - }, - { - "name": "max", - "type": "string", - "usage": "Limit the maximum number of errors in the response." - }, - { - "name": "org-id", - "type": "string", - "usage": "Check job status for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling send-activation-email get-bulk-resend-job-status", - "short": "Get Bulk Activation Email Resend Job Status", - "long": "Get the details of an activation email resend job by its job ID.\n\nRequires a full or user administrator auth token with a scope of `spark-admin:people_write` or read-only administrator auth token with a scope of `spark-admin:people_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-bulk-resend-job-status" - }, - { - "name": "job-id", - "type": "string", - "usage": "Retrieve job status for this `jobId`.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Check job status for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling send-activation-email initiate-bulk-resend-job", - "short": "Initiate Bulk Activation Email Resend Job", - "long": "Initiate a bulk activation email resend job that sends an activation email to all eligible users in an organization. Only a single instance of the job can be running for an organization.\n\nRequires a full or user administrator auth token with a scope of `spark-admin:people_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for initiate-bulk-resend-job" - }, - { - "name": "org-id", - "type": "string", - "usage": "Initiate job for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling single-number-reach", - "short": "SingleNumberReach commands" - }, - { - "path": "webex calling single-number-reach create-person", - "short": "Create Single Number Reach For a Person", - "long": "Create a single number reach for a person in an organization.\n\nSingle number reach allows you to setup your work calls ring any phone number. This means that your office phone, mobile phone, or any other designated devices can ring at the same time, ensuring you don't miss important calls.\n\nCreating a single number reach for a person requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "answer-confirmation-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "do-not-forward-calls-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-person" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - }, - { - "name": "phone-number", - "type": "string" - } - ] - }, - { - "path": "webex calling single-number-reach delete", - "short": "Delete A Single Number Reach Number", - "long": "Delete Single number reach number for a person.\n\nSingle number reach allows you to setup your work calls ring any phone number. This means that your office phone, mobile phone, or any other designated devices can ring at the same time, ensuring you don't miss important calls.\n\nDeleting a Single number reach number requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "id", - "type": "string", - "usage": "Unique identifier for single number reach.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Unique identifier for the organization.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling single-number-reach get-primary", - "short": "Get Single Number Reach Primary Available Phone Numbers", - "long": "List the service and standard PSTN numbers that are available to be assigned as the single number reach's primary phone number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-primary" - }, - { - "name": "location-id", - "type": "string", - "usage": "Return the list of phone numbers for this location within the given organization. The maximum length is 36.", - "required": true - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of phone numbers returned to this maximum count. The default is 2000." - }, - { - "name": "org-id", - "type": "string", - "usage": "List numbers for this organization.", - "hidden": true - }, - { - "name": "phone-number", - "type": "string", - "usage": "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching phone numbers. The default is 0." - } - ] - }, - { - "path": "webex calling single-number-reach get-settings-person", - "short": "Get Single Number Reach Settings For A Person", - "long": "Retrieve Single Number Reach settings for the given person.\n\nSingle number reach allows you to setup your work calls ring any phone number. This means that your office phone, mobile phone, or any other designated devices can ring at the same time, ensuring you don't miss important calls.\n\nRetrieving Single number reach settings requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-settings-person" - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling single-number-reach update-settings", - "short": "Update Single Number Reach Settings For A Number", - "long": "Update Single number reach settings for a number.\n\nSingle number reach allows you to setup your work calls ring any phone number. This means that your office phone, mobile phone, or any other designated devices can ring at the same time, ensuring you don't miss important calls.\n\nThe response returns an ID that can change if the phoneNumber is modified, as the ID contains base64 encoded phone number data.\n\nUpdating a single number reach settings for a number requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "answer-confirmation-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "do-not-forward-calls-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-settings" - }, - { - "name": "id", - "type": "string", - "usage": "Unique identifier for single number reach.", - "required": true - }, - { - "name": "name", - "type": "string" - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - }, - { - "name": "phone-number", - "type": "string" - } - ] - }, - { - "path": "webex calling single-number-reach update-settings-person", - "short": "Update Single Number Reach Settings For A Person", - "long": "Update Single number reach settings for a person.\n\nSingle number reach allows you to setup your work calls ring any phone number. This means that your office phone, mobile phone, or any other designated devices can ring at the same time, ensuring you don't miss important calls.\n\nUpdating a single number reach settings for a person requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "alert-all-numbers-for-click-to-dial-calls-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-settings-person" - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call", - "short": "UserCall commands" - }, - { - "path": "webex calling user-call assign-list-features-mode-management", - "short": "Assign a List of Features to a User for Mode Management", - "long": "Assign a user a list of feature identifiers for `Mode Management`. Feature identifiers reference feature instances like `Auto Attendants`, `Call Queues`, and `Hunt Groups`.\nA maximum of 50 features can be assigned to a user for `Mode Management`.\n\nUpdating mode management settings for a user requires a full, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "feature-ids", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for assign-list-features-mode-management" - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve features list from this organization.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the user.", - "required": true - } - ] - }, - { - "path": "webex calling user-call assign-unassign-numbers-person", - "short": "Assign or Unassign numbers to a person", - "long": "Assign or unassign alternate phone numbers to a person.\n\nEach location has a set of phone numbers that can be assigned to people, workspaces, or features. Phone numbers must follow the E.164 format for all countries, except for the United States, which can also follow the National format. Active phone numbers are in service.\n\nAssigning or unassigning an alternate phone number to a person requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for assign-unassign-numbers-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization of the Route Group.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identitfier of the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call create-access-codes-person", - "short": "Create Access Codes for a Person", - "long": "Create new Access codes for the person.\n\nAccess codes are used to bypass permissions.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:telephony_config_write` scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "code", - "type": "string" - }, - { - "name": "description", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-access-codes-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call create-digit-patterns-person", - "short": "Create Digit Patterns for a Person", - "long": "Create a new digit pattern for the given person.\n\nDigit patterns are used to bypass permissions.\n\nCreating the digit pattern requires a full or user or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "action", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-digit-patterns-person" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "pattern", - "type": "string" - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - }, - { - "name": "transfer-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling user-call create-event-person-schedule", - "short": "Add a New Event for Person's Schedule", - "long": "People can use shared location schedules or define personal schedules containing events.\n\n`businessHours` schedules allow you to apply specific call settings at different times of the day or week by defining one or more events. `holidays` schedules define exceptions to normal business hours by defining one or more events.\n\nThis API requires a full or user administrator auth token with the `spark-admin:people_write` scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-event-person-schedule" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - }, - { - "name": "schedule-id", - "type": "string", - "usage": "Unique identifier for the schedule.", - "required": true - }, - { - "name": "schedule-type", - "type": "string", - "usage": "Type of schedule, either `businessHours` or `holidays`.", - "required": true - } - ] - }, - { - "path": "webex calling user-call create-person-executive-filtering", - "short": "Add Person Executive Call Filtering Criteria", - "long": "Create a new executive call filtering criteria configuration for the specified person.\n\nExecutive Call Filtering Criteria in Webex allows you to define detailed filter rules for incoming calls. This API creates a new filter rule with the specified configuration, including schedule, phone numbers, and call routing preferences.\n\nThis API requires a full, user or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-person-executive-filtering" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization ID for the user.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call create-schedule-person", - "short": "Create Schedule for a Person", - "long": "Create a new schedule for a person.\n\nSchedules are used to support calling features and can be defined at the location or person level. `businessHours` schedules allow you to apply specific call settings at different times of the day or week by defining one or more events. `holidays` schedules define exceptions to normal business hours by defining one or more events.\n\nThis API requires a full or user administrator auth token with the `spark-admin:people_write` scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-schedule-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call create-users-selective-accept-service", - "short": "Create a Criteria to the User’s Selective Call Accept Service", - "long": "Add a criteria to the user's selective call accept service.\n\nWith the Selective Call accept feature, you can create different rules to accept specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "accept-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "anonymous-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calls-from", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-users-selective-accept-service" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization in which the user resides.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - }, - { - "name": "phone-numbers", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "schedule-level", - "type": "string" - }, - { - "name": "schedule-name", - "type": "string" - }, - { - "name": "schedule-type", - "type": "string" - }, - { - "name": "unavailable-callers-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling user-call create-users-selective-forward-service", - "short": "Create a Criteria to the User’s Selective Call Forwarding Service", - "long": "Add a criteria to the user's selective call forwarding service.\n\nWith the Selective Call Forwarding feature, you can create different rules to forward specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "anonymous-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calls-from", - "type": "string" - }, - { - "name": "forward-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "forward-to-phone-number", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-users-selective-forward-service" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization in which the user resides.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - }, - { - "name": "phone-numbers", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "schedule-level", - "type": "string" - }, - { - "name": "schedule-name", - "type": "string" - }, - { - "name": "schedule-type", - "type": "string" - }, - { - "name": "send-to-voicemail-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "unavailable-callers-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling user-call create-users-selective-reject-service", - "short": "Create a Criteria to the User’s Selective Call Rejection Service", - "long": "Add a criteria to the user's selective call rejection service.\n\nWith the Selective Call Rejection feature, you can create different rules to reject specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "anonymous-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calls-from", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-users-selective-reject-service" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization in which the user resides.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - }, - { - "name": "phone-numbers", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "reject-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "schedule-level", - "type": "string" - }, - { - "name": "schedule-name", - "type": "string" - }, - { - "name": "schedule-type", - "type": "string" - }, - { - "name": "unavailable-callers-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling user-call delete-access-codes-person", - "short": "Delete Access Codes for a Person", - "long": "Deletes all Access codes for the person.\n\nAccess codes are used to bypass permissions.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:telephony_config_write` scope.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-access-codes-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call delete-all-digit-patterns-person", - "short": "Delete all Digit Patterns for a Person", - "long": "Delete all digit patterns for a Person.\n\nDigit patterns are used to bypass permissions.\n\nDeleting the digit patterns requires a full or user or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-all-digit-patterns-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call delete-digit-pattern-person", - "short": "Delete a Digit Pattern for a Person", - "long": "Delete a digit pattern for a Person.\n\nDigit patterns are used to bypass permissions.\n\nDeleting the digit pattern requires a full or user or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "digit-pattern-id", - "type": "string", - "usage": "Unique identifier for the digit pattern.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-digit-pattern-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call delete-event-person-schedule", - "short": "Delete an Event for a person's Schedule", - "long": "People can use shared location schedules or define personal schedules containing events.\n\n`businessHours` schedules allow you to apply specific call settings at different times of the day or week by defining one or more events. `holidays` schedules define exceptions to normal business hours by defining one or more events.\n\nThis API requires a full or user administrator auth token with the `spark-admin:people_write` scope.", - "flags": [ - { - "name": "event-id", - "type": "string", - "usage": "Unique identifier for the event.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-event-person-schedule" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - }, - { - "name": "schedule-id", - "type": "string", - "usage": "Unique identifier for the schedule.", - "required": true - }, - { - "name": "schedule-type", - "type": "string", - "usage": "Type of schedule, either `businessHours` or `holidays`.", - "required": true - } - ] - }, - { - "path": "webex calling user-call delete-message", - "short": "Delete Message", - "long": "Delete a specfic voicemail message for the user.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-message" - }, - { - "name": "message-id", - "type": "string", - "usage": "The message identifer of the voicemail message to delete", - "required": true - } - ] - }, - { - "path": "webex calling user-call delete-person-executive-filtering", - "short": "Delete Person Executive Call Filtering Criteria", - "long": "Delete a specific executive call filtering criteria configuration for the specified person.\n\nExecutive Call Filtering Criteria in Webex allows you to manage detailed filter rules for incoming calls. This API removes a specific filter rule by its unique identifier.\n\nThis API requires a full, user or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-person-executive-filtering" - }, - { - "name": "id", - "type": "string", - "usage": "The `id` parameter specifies the unique identifier for the executive call filtering criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL2RHVnpkRjltYVd4MFpYST0`.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization ID for the user.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call delete-schedule", - "short": "Delete a Schedule", - "long": "Delete a schedule by its schedule ID.\n\nSchedules are used to support calling features and can be defined at the location or person level. `businessHours` schedules allow you to apply specific call settings at different times of the day or week by defining one or more events. `holidays` schedules define exceptions to normal business hours by defining one or more events.\n\nThis API requires a full or user administrator auth token with the `spark-admin:people_write` scope.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-schedule" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - }, - { - "name": "schedule-id", - "type": "string", - "usage": "Unique identifier for the schedule.", - "required": true - }, - { - "name": "schedule-type", - "type": "string", - "usage": "Type of schedule, either `businessHours` or `holidays`.", - "required": true - } - ] - }, - { - "path": "webex calling user-call delete-users-selective-accept-service", - "short": "Delete a Criteria From the User’s Selective Call Accept service", - "long": "Delete a criteria from the user's selective call accept criteria list.\n\nWith the Selective Call Accept feature, you can create different rules to accept specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-users-selective-accept-service" - }, - { - "name": "id", - "type": "string", - "usage": "Criteria ID.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization in which the user resides.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call delete-users-selective-forward-service", - "short": "Delete a Criteria From the User’s Selective Call Forwarding Service", - "long": "Delete a criteria from the user's selective call forwarding service.\n\nWith the Selective Call Forwarding feature, you can create different rules to forward specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-users-selective-forward-service" - }, - { - "name": "id", - "type": "string", - "usage": "Criteria ID.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization in which the user resides.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call delete-users-selective-reject-service", - "short": "Delete a Criteria From the User’s Selective Call Rejection Service", - "long": "Delete a criteria from the user's selective call rejection service.\n\nWith the Selective Call Rejection feature, you can create different rules to reject specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-users-selective-reject-service" - }, - { - "name": "id", - "type": "string", - "usage": "Criteria ID.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization in which the user resides.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call get-access-codes-person", - "short": "Retrieve Access Codes for a Person", - "long": "Retrieve the person's access codes.\n\nAccess codes are used to bypass permissions.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-access-codes-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call get-agent-caller-id", - "short": "Retrieve Agent's Caller ID Information", - "long": "Retrieve the Agent's Caller ID Information.\n\nEach agent will be able to set their outgoing Caller ID as either the Call Queue's Caller ID, Hunt Group's Caller ID or their own configured Caller ID.\n\nThis API requires a full admin or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-agent-caller-id" - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call get-agent-list-available-caller-ids", - "short": "Retrieve Agent's List of Available Caller IDs", - "long": "Get the list of call queues and hunt groups available for caller ID use by this person as an agent.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:people_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-agent-list-available-caller-ids" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call get-barge-settings-person", - "short": "Read Barge In Settings for a Person", - "long": "Retrieve a person's Barge In settings.\n\nThe Barge In feature enables you to use a Feature Access Code (FAC) to answer a call that was directed to another subscriber, or barge-in on the call if it was already answered. Barge In can be used across locations.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:people_read` or a user auth token with `spark:people_read` scope can be used by a person to read their own settings.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-barge-settings-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call get-bridge-settings-person", - "short": "Read Call Bridge Settings for a Person", - "long": "Retrieve a person's Call Bridge settings.\n\nThis API requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:people_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-bridge-settings-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call get-caller-id-person", - "short": "Read Caller ID Settings for a Person", - "long": "Retrieve a person's Caller ID settings.\n\nCaller ID settings control how a person's information is displayed when making outgoing calls.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:people_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-caller-id-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call get-captions-settings", - "short": "Get the user call captions settings", - "long": "Retrieve the user's call captions settings.\n\n**NOTE**: The call captions feature is not supported for Webex Calling Standard users or users assigned to locations in India.\n\nThe call caption feature allows the customer to enable and manage closed captions and transcript functionality (rolling caption panel) in Webex Calling, without requiring the user to escalate the call to a meeting.\n\nThis API requires a full, user, read-only, or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-captions-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "Unique identifier for the organization.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call get-count-shared-line-appearance-members", - "short": "Get Count of Shared-Line Appearance Members", - "long": "Get the count of members available for shared-line assignment to Webex Calling Apps.\n\nShared-line appearance allows multiple devices or applications to share a single line for call handling.\n\nThis API requires a full, user, or location administrator auth token with the `spark-admin:telephony_config_read` scope.", - "flags": [ - { - "name": "extension", - "type": "string", - "usage": "Search for people with extensions that match the query." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-count-shared-line-appearance-members" - }, - { - "name": "location-id", - "type": "string", - "usage": "Location ID for the person." - }, - { - "name": "member-name", - "type": "string", - "usage": "Search for people with names that match the query." - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization ID for the person.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - }, - { - "name": "phone-number", - "type": "string", - "usage": "Search for people with numbers that match the query." - } - ] - }, - { - "path": "webex calling user-call get-country-calling-configuration", - "short": "Get Country Calling Configuration", - "long": "Retrieve country-specific configuration details including state requirements, zip code requirements, available states, and supported time zones.\n\nThis information helps administrators configure user settings with valid timezone and location data for a specific country.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "country-code", - "type": "string", - "usage": "The ISO country code to retrieve configuration for.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-country-calling-configuration" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization ID. If not specified, uses the organization from the OAuth token.", - "hidden": true - } - ] - }, - { - "path": "webex calling user-call get-digit-pattern-person", - "short": "Retrieve Digit Pattern Details for a Person", - "long": "Retrieve the digit pattern details for a person.\n\nDigit patterns are used to bypass permissions.\n\nRetrieving the digit pattern details requires a full or user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "digit-pattern-id", - "type": "string", - "usage": "Unique identifier for the digit pattern.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-digit-pattern-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call get-digit-patterns-person", - "short": "Retrieve Digit Patterns for a Person", - "long": "Retrieve the person's digit patterns.\n\nDigit patterns are used to bypass permissions.\n\nRetrieving digit patterns requires a full or user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-digit-patterns-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call get-do-not-disturb-settings-person", - "short": "Read Do Not Disturb Settings for a Person", - "long": "Retrieve a person's Do Not Disturb settings.\n\nWhen enabled, this feature will give all incoming calls the busy treatment. Optionally, you can enable a Ring Reminder to play a brief tone on your desktop phone when you receive incoming calls.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:people_read` or a user auth token with `spark:people_read` scope can be used by a person to read their settings.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-do-not-disturb-settings-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call get-event-person-schedule", - "short": "Fetch Event for a person's Schedule", - "long": "People can use shared location schedules or define personal schedules containing events.\n\n`businessHours` schedules allow you to apply specific call settings at different times of the day or week by defining one or more events. `holidays` schedules define exceptions to normal business hours by defining one or more events.\n\nThis API requires a full, user, or read-only administrator auth token with a scope of `spark-admin:people_read`.", - "flags": [ - { - "name": "event-id", - "type": "string", - "usage": "Unique identifier for the event.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-event-person-schedule" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - }, - { - "name": "schedule-id", - "type": "string", - "usage": "Unique identifier for the schedule.", - "required": true - }, - { - "name": "schedule-type", - "type": "string", - "usage": "Type of schedule, either `businessHours` or `holidays`.", - "required": true - } - ] - }, - { - "path": "webex calling user-call get-executive-assistant-settings-person", - "short": "Retrieve Executive Assistant Settings for a Person", - "long": "Retrieve the executive assistant settings for the specified `personId`.\n\nPeople with the executive service enabled, can select from a pool of assistants who have been assigned the executive assistant service and who can answer or place calls on their behalf. Executive assistants can set the call forward destination and join or leave an executive's pool.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:people_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-executive-assistant-settings-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call get-forwarding-settings-person", - "short": "Read Forwarding Settings for a Person", - "long": "Retrieve a person's Call Forwarding settings.\n\nThree types of call forwarding are supported:\n\n+ Always - forwards all incoming calls to the destination you choose.\n\n+ When busy - forwards all incoming calls to the destination you chose while the phone is in use or the person is busy.\n\n+ When no answer - forwarding only occurs when you are away or not answering your phone.\n\nIn addition, the Business Continuity feature will send calls to a destination of your choice if your phone is not connected to the network for any reason, such as a power outage, failed Internet connection, or wiring problem.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:people_read` or a user auth token with `spark:people_read` scope can be used by a person to read their own settings.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-forwarding-settings-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call get-hoteling-settings-person", - "short": "Read Hoteling Settings for a Person", - "long": "Retrieve a person's hoteling settings.\n\nAs an administrator, you can enable hoteling for people so that their phone profile (phone number, features, and calling plan) is temporarily loaded onto a shared (host) phone.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:people_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-hoteling-settings-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call get-incoming-permission-settings-person", - "short": "Read Incoming Permission Settings for a Person", - "long": "Retrieve a person's Incoming Permission settings.\n\nYou can change the incoming calling permissions for a person if you want them to be different from your organization's default.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:people_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-incoming-permission-settings-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call get-intercept-settings-person", - "short": "Read Call Intercept Settings for a Person", - "long": "Retrieves Person's Call Intercept settings.\n\nThe intercept feature gracefully takes a person's phone out of service, while providing callers with informative announcements and alternative routing options. Depending on the service configuration, none, some, or all incoming calls to the specified person are intercepted. Also depending on the service configuration, outgoing calls are intercepted or rerouted to another location.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:people_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-intercept-settings-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call get-message-summary", - "short": "Get Message Summary", - "long": "Get a summary of the voicemail messages for the user.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-message-summary" - } - ] - }, - { - "path": "webex calling user-call get-move-job-status", - "short": "Get Move Users Job Status", - "long": "Returns the status and other details of the job.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-move-job-status" - }, - { - "name": "job-id", - "type": "string", - "usage": "Retrieve job details for this `jobId`.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve job details for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling user-call get-music-hold-settings-person", - "short": "Retrieve Music On Hold Settings for a Person", - "long": "Retrieve the person's music on hold settings.\n\nMusic on hold is played when a caller is put on hold, or the call is parked.\n\nRetrieving a person's music on hold settings requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-music-hold-settings-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call get-person-application-services-settings", - "short": "Retrieve a person's Application Services Settings", - "long": "Application services let you determine the ringing behavior for calls made to people in certain scenarios. You can also specify which devices can download the Webex Calling app.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of spark-admin:people_read.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-person-application-services-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "(Required) Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call get-person-application-services-settings-2", - "short": "Retrieve a person's Application Services Settings New", - "long": "Gets mobile and PC applications settings for a user.\n\nApplication services let you determine the ringing behavior for calls made to people in certain scenarios. You can also specify which devices can download the Webex Calling app.\n\nRequires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-person-application-services-settings-2" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call get-person-calling-behavior", - "short": "Read Person's Calling Behavior", - "long": "Retrieves the calling behavior and UC Manager Profile settings for the person which includes overall calling behavior and calling UC Manager Profile ID.\n\nWebex Calling Behavior controls which Webex telephony application and which UC Manager Profile is to be used for a person.\n\nAn organization has an organization-wide default Calling Behavior that may be overridden for individual persons.\n\nUC Manager Profiles are applicable if your organization uses Jabber in Team Messaging mode or Calling in Webex (Unified CM).\n\nThe UC Manager Profile also has an organization-wide default and may be overridden for individual persons.\n\nThis API requires a full, user, or read-only administrator auth token with a scope of `spark-admin:people_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-person-calling-behavior" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call get-person-ecbn-available-numbers", - "short": "Get Person ECBN Available Phone Numbers", - "long": "List standard numbers that are available to be assigned as a person's emergency callback number.\nThese numbers are associated with the location of the person specified in the request URL, can be active or inactive, and are assigned to an owning entity.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-person-ecbn-available-numbers" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of phone numbers returned to this maximum count. The default is 2000." - }, - { - "name": "org-id", - "type": "string", - "usage": "List numbers for this organization.", - "hidden": true - }, - { - "name": "owner-name", - "type": "string", - "usage": "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255." - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - }, - { - "name": "phone-number", - "type": "string", - "usage": "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching phone numbers. The default is 0." - } - ] - }, - { - "path": "webex calling user-call get-person-executive-alert-settings", - "short": "Get Person Executive Alert Settings", - "long": "Get executive alert settings for the specified person.\n\nExecutive Alert settings in Webex allow you to control how calls are routed to executive assistants, including alerting mode, rollover options, and caller ID presentation. You can configure settings such as sequential or simultaneous alerting, and specify what happens when calls aren't answered.\n\nThis API requires a full, user, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-person-executive-alert-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization ID for the person.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call get-person-executive-assigned-assistants", - "short": "Get Person Executive Assigned Assistants", - "long": "Get list of assigned executive assistants for the specified person.\n\nAs an executive, you can add assistants to your executive pool to manage calls for you. You can set when and which types of calls they can handle. Assistants can opt in when needed or opt out when not required.\n\nThis API requires a full, user, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-person-executive-assigned-assistants" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization ID for the person.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call get-person-executive-assistant-settings", - "short": "Get Person Executive Assistant Settings", - "long": "Get executive assistant settings for the specified person when person is configured as executive assistant.\n\nExecutive assistants can make, answer, intercept, and route calls appropriately on behalf of their executive.\nAssistants can also set the call forwarding destination, and join or leave an executive’s pool.\n\nThis API requires a full, user, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-person-executive-assistant-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization ID for the person.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call get-person-executive-available-assistants", - "short": "Get Person Executive Available Assistants", - "long": "Retrieves a list of people available for assignment as executive assistants to the specified person.\n\nAs an executive, you can add assistants to your executive pool to manage calls for you. You can set when and which types of calls they can handle. Assistants can opt in when needed or opt out when not required.\n\nThis API requires a full, user, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-person-executive-available-assistants" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of objects returned to this maximum count." - }, - { - "name": "name", - "type": "string", - "usage": "Only return people with the matching name (person's first and last name combination)." - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization ID for the person.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - }, - { - "name": "phone-number", - "type": "string", - "usage": "Only return people with the matching phone number or extension." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching objects." - } - ] - }, - { - "path": "webex calling user-call get-person-executive-filtering-settings", - "short": "Get Person Executive Call Filtering Settings", - "long": "Retrieve the executive call filtering settings for the specified person.\n\nExecutive Call Filtering in Webex allows you to control which calls are allowed to reach the executive assistant based on custom criteria, such as specific phone numbers or call types. You can enable or disable call filtering and configure filter rules to manage incoming calls.\n\nThis API requires a full, user, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-person-executive-filtering-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization ID for the user.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call get-person-executive-filtering-settings-2", - "short": "Get Person Executive Call Filtering Criteria Settings", - "long": "Retrieve the executive call filtering criteria settings for the specified person.\n\nExecutive Call Filtering Criteria in Webex allows you to retrieve the detailed configuration for a specific filter rule. This includes schedule settings, phone number filters, and call routing preferences for executive call filtering.\n\nThis API requires a full, user, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-person-executive-filtering-settings-2" - }, - { - "name": "id", - "type": "string", - "usage": "The `id` parameter specifies the unique identifier for the executive call filtering criteria.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization ID for the user.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call get-person-executive-screening-settings", - "short": "Get Person Executive Screening Settings", - "long": "Get executive screening settings for the specified person.\n\nExecutive Screening in Webex allows you to manage how incoming calls are screened and alerted based on your preferences. You can enable or disable executive screening and configure alert types and locations for notifications.\n\nThis API requires a full, user, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-person-executive-screening-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization ID for the person.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call get-person-fax-available-numbers", - "short": "Get Person Fax Message Available Phone Numbers", - "long": "List standard numbers that are available to be assigned as a person's FAX message number.\nThese numbers are associated with the location of the person specified in the request URL, can be active or inactive, and are unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-person-fax-available-numbers" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of phone numbers returned to this maximum count. The default is 2000." - }, - { - "name": "org-id", - "type": "string", - "usage": "List numbers for this organization.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - }, - { - "name": "phone-number", - "type": "string", - "usage": "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching phone numbers. The default is 0." - } - ] - }, - { - "path": "webex calling user-call get-person-forward-available-numbers", - "short": "Get Person Call Forward Available Phone Numbers", - "long": "List the service and standard PSTN numbers that are available to be assigned as a person's call forward number.\nThese numbers are associated with the location of the person specified in the request URL, can be active or inactive, and are assigned to an owning entity.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "extension", - "type": "string", - "usage": "Returns the list of PSTN phone numbers with the given `extension`." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-person-forward-available-numbers" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of phone numbers returned to this maximum count. The default is 2000." - }, - { - "name": "org-id", - "type": "string", - "usage": "List numbers for this organization.", - "hidden": true - }, - { - "name": "owner-name", - "type": "string", - "usage": "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255." - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - }, - { - "name": "phone-number", - "type": "string", - "usage": "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching phone numbers. The default is 0." - } - ] - }, - { - "path": "webex calling user-call get-person-intercept-available-numbers", - "short": "Get Person Call Intercept Available Phone Numbers", - "long": "List the service and standard PSTN numbers that are available to be assigned as a person's call intercept number.\nThese numbers are associated with the location specified in the request URL, can be active or inactive, and are assigned to an owning entity.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "extension", - "type": "string", - "usage": "Returns the list of PSTN phone numbers with the given `extension`." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-person-intercept-available-numbers" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of phone numbers returned to this maximum count. The default is 2000." - }, - { - "name": "org-id", - "type": "string", - "usage": "List numbers for this organization.", - "hidden": true - }, - { - "name": "owner-name", - "type": "string", - "usage": "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255." - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - }, - { - "name": "phone-number", - "type": "string", - "usage": "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching phone numbers. The default is 0." - } - ] - }, - { - "path": "webex calling user-call get-person-monitoring-settings", - "short": "Retrieve a person's Monitoring Settings", - "long": "Retrieves the monitoring settings of the person, which shows specified people, places, virtual lines or call park extenions that are being monitored.\nMonitors the line status which indicates if a person, place or virtual line is on a call and if a call has been parked on that extension.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:people_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-person-monitoring-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call get-person-ms-teams-settings", - "short": "Retrieve a Person's MS Teams Settings", - "long": "
Not supported for Webex for Government (FedRAMP)
\n\nRetrieve a person's MS Teams settings.\n\nAt a person level, MS Teams settings allow access to retrieving the `HIDE WEBEX APP` and `PRESENCE SYNC` settings.\n\nTo retrieve a person's MS Teams settings requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-person-ms-teams-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter since the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call get-person-outgoing-permissions-settings", - "short": "Retrieve a person's Outgoing Calling Permissions Settings", - "long": "Retrieve a person's Outgoing Calling Permissions settings.\n\nOutgoing calling permissions regulate behavior for calls placed to various destinations and default to the local level settings. You can change the outgoing calling permissions for a person if you want them to be different from your organization's default.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:people_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-person-outgoing-permissions-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call get-person-primary-numbers", - "short": "Get Person Primary Available Phone Numbers", - "long": "List numbers that are available to be assigned as a person's primary phone number.\nBy default, this API returns standard and mobile numbers from all locations that are unassigned. The parameters `licenseType` and `locationId` must align with the person's settings to determine the appropriate number for assignment.\nFailure to provide these parameters may result in the unsuccessful assignment of the returned number.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-person-primary-numbers" - }, - { - "name": "license-type", - "type": "string", - "usage": "Used to search numbers according to the person's `licenseType` to which the number will be assigned." - }, - { - "name": "location-id", - "type": "string", - "usage": "Return the list of phone numbers for this location within the given organization. The maximum length is 36." - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of phone numbers returned to this maximum count. The default is 2000." - }, - { - "name": "org-id", - "type": "string", - "usage": "List numbers for this organization.", - "hidden": true - }, - { - "name": "phone-number", - "type": "string", - "usage": "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching phone numbers. The default is 0." - } - ] - }, - { - "path": "webex calling user-call get-person-privacy-settings", - "short": "Get a person's Privacy Settings", - "long": "Get a person's privacy settings for the specified person ID.\n\nThe privacy feature enables the person's line to be monitored by others and determine if they can be reached by Auto Attendant services.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of spark-admin:people_read.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-person-privacy-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call get-person-secondary-available-numbers", - "short": "Get Person Secondary Available Phone Numbers", - "long": "List standard numbers that are available to be assigned as a person's secondary phone number.\nThese numbers are associated with the location of the person specified in the request URL, can be active or inactive, and are unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-person-secondary-available-numbers" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of phone numbers returned to this maximum count. The default is 2000." - }, - { - "name": "org-id", - "type": "string", - "usage": "List numbers for this organization.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - }, - { - "name": "phone-number", - "type": "string", - "usage": "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching phone numbers. The default is 0." - } - ] - }, - { - "path": "webex calling user-call get-personal-assistant", - "short": "Get Personal Assistant", - "long": "Retrieve Personal Assistant details for a specific user.\n\nPersonal Assistant is used to manage a user's incoming calls when they are away.\n\nRetrieving Personal Assistant details requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-personal-assistant" - }, - { - "name": "org-id", - "type": "string", - "usage": "Get Personal Assistant details for the organization.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call get-preferred-endpoint", - "short": "Get Preferred Answer Endpoint", - "long": "Get the person's preferred answer endpoint and the list of endpoints available for selection. The preferred answer endpoint is null if one has not been selected. The list of endpoints is empty if the person has no endpoints assigned which support the preferred answer endpoint functionality. These endpoints can be used by the following Call Control API's that allow the person to specify an endpointId to use for the call:
\n\n+ [/v1/telephony/calls/dial](/docs/api/v1/call-controls/dial)
\n\n+ [/v1/telephony/calls/retrieve](/docs/api/v1/call-controls/retrieve)
\n\n+ [/v1/telephony/calls/pickup](/docs/api/v1/call-controls/pickup)
\n\n+ [/v1/telephony/calls/barge-in](/docs/api/v1/call-controls/barge-in)
\n\n+ [/v1/telephony/calls/answer](/docs/api/v1/call-controls/answer)
\n\nThis API requires `spark:telephony_config_read` or `spark-admin:telephony_config_read` scope.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-preferred-endpoint" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call get-push-to-talk-settings-person", - "short": "Read Push-to-Talk Settings for a Person", - "long": "Retrieve a person's Push-to-Talk settings.\n\nPush-to-Talk allows the use of desk phones as either a one-way or two-way intercom that connects people in different parts of your organization.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:people_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-push-to-talk-settings-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call get-receptionist-client-settings-person", - "short": "Read Receptionist Client Settings for a Person", - "long": "Retrieve a person's Receptionist Client settings.\n\nTo help support the needs of your front-office personnel, you can set up people, workspaces or virtual lines as telephone attendants so that they can screen all incoming calls to certain numbers within your organization.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:people_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-receptionist-client-settings-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call get-recording-person", - "short": "Read Call Recording Settings for a Person", - "long": "Retrieve a person's Call Recording settings.\n\nThe Call Recording feature provides a hosted mechanism to record the calls placed and received on the Carrier platform for replay and archival. This feature is helpful for quality assurance, security, training, and more.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_read` scope.\n\n
A person with a Webex Calling Standard license is eligible for the Call Recording feature only when the Call Recording vendor is Webex.
", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-recording-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call get-schedule", - "short": "Get a Schedule Details", - "long": "Retrieve a schedule by its schedule ID.\n\nSchedules are used to support calling features and can be defined at the location or person level. `businessHours` schedules allow you to apply specific call settings at different times of the day or week by defining one or more events. `holidays` schedules define exceptions to normal business hours by defining one or more events.\n\nThis API requires a full, user, or read-only administrator auth token with a scope of `spark-admin:people_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-schedule" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - }, - { - "name": "schedule-id", - "type": "string", - "usage": "Unique identifier for the schedule.", - "required": true - }, - { - "name": "schedule-type", - "type": "string", - "usage": "Type of schedule, either `businessHours` or `holidays`.", - "required": true - } - ] - }, - { - "path": "webex calling user-call get-shared-line-appearance-members", - "short": "Get Shared-Line Appearance Members", - "long": "Get primary and secondary members assigned to a shared line on a Webex Calling Apps Desktop device.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_read` scope.", - "flags": [ - { - "name": "application-id", - "type": "string", - "usage": "A unique identifier for the application.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-shared-line-appearance-members" - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call get-shared-line-appearance-members-2", - "short": "Get Shared-Line Appearance Members New", - "long": "Get primary and secondary members assigned to a shared line on a Webex Calling Apps.\n\nLike most hardware devices, applications support assigning additional shared lines which can monitored and utilized by the application.\n\nThis API requires a full, user, or location administrator auth token with the `spark-admin:telephony_config_read` scope.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-shared-line-appearance-members-2" - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call get-timezone-announcement-language-settings-person", - "short": "Get Timezone and Announcement Language Settings of a Person", - "long": "Retrieve a person's timezone and announcement language settings.\n\nWebex Calling supports configuring timezone and announcement language preferences, allowing personalized call experience based on their location and language preferences.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-timezone-announcement-language-settings-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization ID. If not specified, uses the organization from the OAuth token.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Retrieve timezone and announcement language settings of this person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call get-transfer-numbers-person", - "short": "Retrieve Transfer Numbers for a Person", - "long": "Retrieve the person's transfer numbers.\n\nWhen calling a specific call type, this person will be automatically transferred to another number. The person assigned the Auto Transfer Number can then approve the call and send it through or reject the call type. You can add up to 3 numbers.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-transfer-numbers-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call get-users-selective-accept-list", - "short": "Get the User’s Selective Call Accept Criteria List", - "long": "Retrieve selective call accept criteria list for a user.\n\nWith the selective call accept feature, you can create different rules to accept specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, read-only, or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-users-selective-accept-list" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization in which the user resides.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call get-users-selective-accept-service", - "short": "Get a Criteria for the User’s Selective Call Accept Service", - "long": "Get the criteria details for the user's selective call accept service.\n\nWith the Selective Call accept feature, you can create different rules to accept specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, read-only, or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-users-selective-accept-service" - }, - { - "name": "id", - "type": "string", - "usage": "Criteria ID.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization in which the user resides.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call get-users-selective-forward", - "short": "Get the User’s Selective Call Forwarding", - "long": "Retrieve selective call forwarding criteria for a user.\n\nWith the Selective Call Forwarding feature, you can create different rules to forward specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, read-only, or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-users-selective-forward" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization in which the user resides.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call get-users-selective-forward-service", - "short": "Get a Criteria for the User’s Selective Call Forwarding Service", - "long": "Get the criteria details for the user's selective call forwarding service.\n\nWith the Selective Call Forwarding feature, you can create different rules to forward specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, read-only, or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-users-selective-forward-service" - }, - { - "name": "id", - "type": "string", - "usage": "Criteria ID.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization in which the user resides.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call get-users-selective-reject-listing", - "short": "Get the User’s Selective Call Rejection Criteria Listing", - "long": "Retrieve selective call rejection criteria for a user.\n\nWith the Selective Call Rejection feature, you can create different rules to reject specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, read-only, or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-users-selective-reject-listing" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization in which the user resides.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call get-users-selective-reject-service", - "short": "Get a Criteria for the User’s Selective Call Rejection Service", - "long": "Get a criteria for the user's selective call rejection service.\n\nWith the Selective Call Rejection feature, you can create different rules to reject specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, read-only, or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-users-selective-reject-service" - }, - { - "name": "id", - "type": "string", - "usage": "Criteria ID.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization in which the user resides.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call get-voicemail-person", - "short": "Read Voicemail Settings for a Person", - "long": "Retrieve a person's Voicemail settings.\n\nThe voicemail feature transfers callers to voicemail based on your settings. You can then retrieve voice messages via Voicemail. Voicemail audio is sent in Waveform Audio File Format, `.wav`, format.\n\nOptionally, notifications can be sent to a mobile phone via text or email. These notifications will not include the voicemail files.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:people_read` or a user auth token with `spark:people_read` scope can be used by a person to read their settings.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-voicemail-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call get-waiting-settings-person", - "short": "Read Call Waiting Settings for a Person", - "long": "Retrieve a person's Call Waiting settings.\n\nWith this feature, a person can place an active call on hold and answer an incoming call. When enabled, while you are on an active call, a tone alerts you of an incoming call and you can choose to answer or ignore the call.\n\nThis API requires a full, user, or read-only administrator or location administrator auth token with a scope of `spark-admin:people_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-waiting-settings-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call list-available-features", - "short": "Retrieve the List of Available Features", - "long": "Retrieve a list of feature identifiers that can be assigned to a user for `Mode Management`. Feature identifiers reference feature instances like `Auto Attendants`, `Call Queues`, and `Hunt Groups`.\n\nFeatures with mode-based call forwarding enabled can be assigned to a user for `Mode Management`.\n\nRetrieving this list requires a full, read-only, or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "extension", - "type": "string", - "usage": "List features whose `extension` contains this matching string." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-available-features" - }, - { - "name": "max", - "type": "string", - "usage": "Maximum number of features to return in a single page." - }, - { - "name": "name", - "type": "string", - "usage": "List features whose `name` contains this string." - }, - { - "name": "order", - "type": "string", - "usage": "Sort the list of features based on `name`, `phoneNumber`, or `extension`, either `asc`, or `desc`." - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve features list from this organization.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the user.", - "required": true - }, - { - "name": "phone-number", - "type": "string", - "usage": "List features whose phoneNumber contains this matching string." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching objects." - } - ] - }, - { - "path": "webex calling user-call list-features-assigned-mode-management", - "short": "Retrieve the List of Features Assigned to a User for Mode Management", - "long": "Retrieve a list of feature identifiers that are already assigned to a user for `Mode Management`. Feature identifiers reference feature instances like `Auto Attendants`, `Call Queues`, and `Hunt Groups`.\nA maximum of 50 features can be assigned to a user for `Mode Management`.\n\nFeatures with mode-based call forwarding enabled can be assigned to a user for `Mode Management`.\n\nRetrieving this list requires a full, read-only, or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-features-assigned-mode-management" - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve features list from this organization.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the user.", - "required": true - } - ] - }, - { - "path": "webex calling user-call list-messages", - "short": "List Messages", - "long": "Get the list of all voicemail messages for the user.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-messages" - }, - { - "name": "line-owner-id", - "type": "string", - "usage": "The ID of a user, workspace, or virtual line for which there is a secondary line on a device owned by the user invoking the API." - } - ] - }, - { - "path": "webex calling user-call list-move-job-errors", - "short": "List Move Users Job errors", - "long": "Lists all error details of Move Users job. This will not list any errors if `exitCode` is `COMPLETED`. If the status is `COMPLETED_WITH_ERRORS` then this lists the cause of failures.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-move-job-errors" - }, - { - "name": "job-id", - "type": "string", - "usage": "Retrieve the error details for this `jobId`.", - "required": true - }, - { - "name": "max", - "type": "string", - "usage": "Specifies the maximum number of records that you want to fetch." - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve list of jobs for this organization.", - "hidden": true - }, - { - "name": "start", - "type": "string", - "usage": "Specifies the error offset from the first result that you want to fetch." - } - ] - }, - { - "path": "webex calling user-call list-move-jobs", - "short": "List Move Users Jobs", - "long": "Lists all the Move Users jobs for the given organization in order of most recent job to oldest job irrespective of its status.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-move-jobs" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of jobs returned to this maximum count. Default is 2000." - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve list of Move Users jobs for this organization.", - "hidden": true - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of jobs. Default is 0." - } - ] - }, - { - "path": "webex calling user-call list-phone-numbers-person", - "short": "Get a List of Phone Numbers for a Person", - "long": "Get a person's phone numbers including alternate numbers.\n\nA person can have one or more phone numbers and/or extensions via which they can be called.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_read` scope.\n\n
\n\n
The `preferE164Format` query parameter can be used to get phone numbers either in E.164 format or in their legacy format. The support for getting phone numbers in non-E.164 format in some geographies will be removed in the future.
", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-phone-numbers-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - }, - { - "name": "prefer-e164-format", - "type": "string", - "usage": "Return phone numbers in E.164 format." - } - ] - }, - { - "path": "webex calling user-call list-schedules-person", - "short": "List of Schedules for a Person", - "long": "List schedules for a person in an organization.\n\nSchedules are used to support calling features and can be defined at the location or person level. `businessHours` schedules allow you to apply specific call settings at different times of the day or week by defining one or more events. `holidays` schedules define exceptions to normal business hours by defining one or more events.\n\nThis API requires a full, user, or read-only administrator auth token with a scope of `spark-admin:people_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-schedules-person" - }, - { - "name": "max", - "type": "string", - "usage": "Specifies the maximum number of records that you want to fetch." - }, - { - "name": "name", - "type": "string", - "usage": "Specifies the case insensitive substring to be matched against the schedule names. The maximum length is 40." - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - }, - { - "name": "start", - "type": "string", - "usage": "Specifies the offset from the first result that you want to fetch." - }, - { - "name": "type", - "type": "string", - "usage": "Specifies the schedule event type to be matched on the given type." - } - ] - }, - { - "path": "webex calling user-call mark-read", - "short": "Mark As Read", - "long": "Update the voicemail message(s) as read for the user.\n\nIf the `messageId` is provided, then only mark that message as read. Otherwise, all messages for the user are marked as read.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for mark-read" - }, - { - "name": "line-owner-id", - "type": "string" - }, - { - "name": "message-id", - "type": "string" - } - ] - }, - { - "path": "webex calling user-call mark-unread", - "short": "Mark As Unread", - "long": "Update the voicemail message(s) as unread for the user.\n\nIf the `messageId` is provided, then only mark that message as unread. Otherwise, all messages for the user are marked as unread.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for mark-unread" - }, - { - "name": "line-owner-id", - "type": "string" - }, - { - "name": "message-id", - "type": "string" - } - ] - }, - { - "path": "webex calling user-call pause-move-job", - "short": "Pause the Move Users Job", - "long": "Pause the running Move Users Job. A paused job can be resumed.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for pause-move-job" - }, - { - "name": "job-id", - "type": "string", - "usage": "Pause the Move Users job for this `jobId`.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Pause the Move Users job for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling user-call reset-voicemail-pin", - "short": "Reset Voicemail PIN", - "long": "Reset a voicemail PIN for a person.\n\nThe voicemail feature transfers callers to voicemail based on your settings. You can then retrieve voice messages via Voicemail. A voicemail PIN is used to retrieve your voicemail messages.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope.\n\n**NOTE**: This API is expected to have an empty request body and Content-Type header should be set to `application/json`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for reset-voicemail-pin" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call resume-move-job", - "short": "Resume the Move Users Job", - "long": "Resume the paused Move Users Job that is in paused status.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for resume-move-job" - }, - { - "name": "job-id", - "type": "string", - "usage": "Resume the Move Users job for this `jobId`.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Resume the Move Users job for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling user-call search-shared-line-appearance-members", - "short": "Search Shared-Line Appearance Members", - "long": "Get members available for shared-line assignment to a Webex Calling Apps Desktop device.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_read` scope.", - "flags": [ - { - "name": "application-id", - "type": "string", - "usage": "A unique identifier for the application.", - "required": true - }, - { - "name": "extension", - "type": "string", - "usage": "Search for users with extensions that match the query." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for search-shared-line-appearance-members" - }, - { - "name": "location", - "type": "string", - "usage": "Location ID for the user." - }, - { - "name": "max", - "type": "string", - "usage": "Number of records per page." - }, - { - "name": "name", - "type": "string", - "usage": "Search for users with names that match the query." - }, - { - "name": "number", - "type": "string", - "usage": "Search for users with numbers that match the query." - }, - { - "name": "order", - "type": "string", - "usage": "Sort by first name (`fname`) or last name (`lname`)." - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - }, - { - "name": "start", - "type": "string", - "usage": "Page number." - } - ] - }, - { - "path": "webex calling user-call search-shared-line-appearance-members-2", - "short": "Search Shared-Line Appearance Members New", - "long": "Get members available for shared-line assignment to a Webex Calling Apps.\n\nLike most hardware devices, applications support assigning additional shared lines which can monitored and utilized by the application.\n\nThis API requires a full, user, or location administrator auth token with the `spark-admin:telephony_config_read` scope.", - "flags": [ - { - "name": "extension", - "type": "string", - "usage": "Search for users with extensions that match the query." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for search-shared-line-appearance-members-2" - }, - { - "name": "location", - "type": "string", - "usage": "Location ID for the user." - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of objects returned to this maximum count." - }, - { - "name": "name", - "type": "string", - "usage": "Search for users with names that match the query." - }, - { - "name": "order", - "type": "string", - "usage": "Order the Route Lists according to number, ascending or descending." - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - }, - { - "name": "phone-number", - "type": "string", - "usage": "Search for users with numbers that match the query." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching objects." - } - ] - }, - { - "path": "webex calling user-call update-access-codes-person", - "short": "Modify Access Codes for a Person", - "long": "Modify a person's access codes.\n\nAccess codes are used to bypass permissions.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:telephony_config_write` scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "delete-codes", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-access-codes-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call update-agent-caller-id", - "short": "Modify Agent's Caller ID Information", - "long": "Modify Agent's Caller ID Information.\n\nEach Agent will be able to set their outgoing Caller ID as either the designated Call Queue's Caller ID or Hunt Group's Caller ID or their own configured Caller ID\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:telephony_config_write` scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-agent-caller-id" - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - }, - { - "name": "selected-caller-id", - "type": "string" - } - ] - }, - { - "path": "webex calling user-call update-barge-settings-person", - "short": "Configure Barge In Settings for a Person", - "long": "Configure a person's Barge In settings.\n\nThe Barge In feature enables you to use a Feature Access Code (FAC) to answer a call that was directed to another subscriber, or barge-in on the call if it was already answered. Barge In can be used across locations.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope or a user auth token with `spark:people_write` scope can be used by a person to update their own settings.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-barge-settings-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - }, - { - "name": "tone-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling user-call update-bridge-settings-person", - "short": "Configure Call Bridge Settings for a Person", - "long": "Configure a person's Call Bridge settings.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-bridge-settings-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - }, - { - "name": "warning-tone-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling user-call update-busy-voicemail-greeting-person", - "short": "Upload Busy Voicemail Greeting for Person", - "long": "Upload a busy voicemail greeting for a person.\n\nExamples:\n webex calling user-call update-busy-voicemail-greeting-person --person-id --file greeting.wav", - "flags": [ - { - "name": "file", - "type": "string", - "usage": "Path to WAV file to upload", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-busy-voicemail-greeting-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization ID", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "person-id value", - "required": true - } - ] - }, - { - "path": "webex calling user-call update-caller-id-person", - "short": "Configure Caller ID Settings for a Person", - "long": "Configure a person's Caller ID settings.\n\nCaller ID settings control how a person's information is displayed when making outgoing calls.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-caller-id-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call update-captions-settings", - "short": "Update the user call captions settings", - "long": "Update the user's call captions settings.\n\n**NOTE**: The call captions feature is not supported for Webex Calling Standard users or users assigned to locations in India.\n\nThe call caption feature allows the customer to enable and manage closed captions and transcript functionality (rolling caption panel) in Webex Calling, without requiring the user to escalate the call to a meeting.\n\nThis API requires a full, user or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-captions-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "Unique identifier for the organization.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - }, - { - "name": "use-location-settings-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "user-closed-captions-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "user-transcripts-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling user-call update-digit-pattern-control-person", - "short": "Modify the Digit Pattern Category Control Settings for a Person", - "long": "Modifies whether this user uses the specified digit patterns when placing outbound calls or not.\n\nUpdating the digit pattern category control settings requires a full or user or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-digit-pattern-control-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - }, - { - "name": "use-custom-digit-patterns", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling user-call update-digit-pattern-person", - "short": "Modify a Digit Pattern for a Person", - "long": "Modify a digit pattern for a Person.\n\nDigit patterns are used to bypass permissions.\n\nUpdating the digit pattern requires a full or user or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "action", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "digit-pattern-id", - "type": "string", - "usage": "Unique identifier for the digit pattern.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-digit-pattern-person" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "pattern", - "type": "string" - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - }, - { - "name": "transfer-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling user-call update-do-not-disturb-settings-person", - "short": "Configure Do Not Disturb Settings for a Person", - "long": "Configure a person's Do Not Disturb settings.\n\nWhen enabled, this feature will give all incoming calls the busy treatment. Optionally, you can enable a Ring Reminder to play a brief tone on your desktop phone when you receive incoming calls.\n\nThis API requires a full or user administrator auth token with the `spark-admin:people_write` scope or a user auth token with `spark:people_write` scope can be used by a person to update their settings.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-do-not-disturb-settings-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - }, - { - "name": "ring-splash-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "webex-go-override-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling user-call update-event-person-schedule", - "short": "Update an Event for a person's Schedule", - "long": "People can use shared location schedules or define personal schedules containing events.\n\n`businessHours` schedules allow you to apply specific call settings at different times of the day or week by defining one or more events. `holidays` schedules define exceptions to normal business hours by defining one or more events.\n\nThis API requires a full or user administrator auth token with the `spark-admin:people_write` scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "event-id", - "type": "string", - "usage": "Unique identifier for the event.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-event-person-schedule" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - }, - { - "name": "schedule-id", - "type": "string", - "usage": "Unique identifier for the schedule.", - "required": true - }, - { - "name": "schedule-type", - "type": "string", - "usage": "Type of schedule, either `businessHours` or `holidays`.", - "required": true - } - ] - }, - { - "path": "webex calling user-call update-executive-assistant-settings-person", - "short": "Modify Executive Assistant Settings for a Person", - "long": "Modify the executive assistant settings for the specified personId.\n\nPeople with the executive service enabled, can select from a pool of assistants who have been assigned the executive assistant service and who can answer or place calls on their behalf. Executive assistants can set the call forward destination and join or leave an executive's pool.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-executive-assistant-settings-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - }, - { - "name": "type", - "type": "string" - } - ] - }, - { - "path": "webex calling user-call update-forward-person", - "short": "Configure Call Forwarding Settings for a Person", - "long": "Configure a person's Call Forwarding settings.\n\nThree types of call forwarding are supported:\n\n+ Always - forwards all incoming calls to the destination you choose.\n\n+ When busy - forwards all incoming calls to the destination you chose while the phone is in use or the person is busy.\n\n+ When no answer - forwarding only occurs when you are away or not answering your phone.\n\nIn addition, the Business Continuity feature will send calls to a destination of your choice if your phone is not connected to the network for any reason, such as a power outage, failed Internet connection, or wiring problem.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope or a user auth token with `spark:people_write` scope can be used by a person to update their settings.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-forward-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call update-hoteling-settings-person", - "short": "Configure Hoteling Settings for a Person", - "long": "Configure a person's hoteling settings.\n\nAs an administrator, you can enable hoteling for people so that their phone profile (phone number, features, and calling plan) is temporarily loaded onto a shared (host) phone.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-hoteling-settings-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call update-incoming-permission-settings-person", - "short": "Configure Incoming Permission Settings for a Person", - "long": "Configure a person's Incoming Permission settings.\n\nYou can change the incoming calling permissions for a person if you want them to be different from your organization's default.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "collect-calls-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "external-transfer", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-incoming-permission-settings-person" - }, - { - "name": "internal-calls-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - }, - { - "name": "use-custom-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling user-call update-intercept-greeting-person", - "short": "Upload Call Intercept Greeting for Person", - "long": "Upload a call intercept announcement greeting for a person.\n\nExamples:\n webex calling user-call update-intercept-greeting-person --person-id --file greeting.wav\n webex calling user-call update-intercept-greeting-person --person-id --file greeting.wav --dry-run", - "flags": [ - { - "name": "file", - "type": "string", - "usage": "Path to WAV file to upload", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-intercept-greeting-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization ID", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "person-id value", - "required": true - } - ] - }, - { - "path": "webex calling user-call update-intercept-settings-person", - "short": "Configure Call Intercept Settings for a Person", - "long": "Configures a person's Call Intercept settings.\n\nThe intercept feature gracefully takes a person's phone out of service, while providing callers with informative announcements and alternative routing options. Depending on the service configuration, none, some, or all incoming calls to the specified person are intercepted. Also depending on the service configuration, outgoing calls are intercepted or rerouted to another location.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-intercept-settings-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call update-music-hold-settings-person", - "short": "Configure Music On Hold Settings for a Person", - "long": "Configure a person's music on hold settings.\n\nMusic on hold is played when a caller is put on hold, or the call is parked.\n\nTo configure music on hold settings for a person, music on hold setting must be enabled for this location.\n\nUpdating a person's music on hold settings requires a full or user administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-music-hold-settings-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call update-no-answer-voicemail-greeting-person", - "short": "Upload No-Answer Voicemail Greeting for Person", - "long": "Upload a no-answer voicemail greeting for a person.\n\nExamples:\n webex calling user-call update-no-answer-voicemail-greeting-person --person-id --file greeting.wav", - "flags": [ - { - "name": "file", - "type": "string", - "usage": "Path to WAV file to upload", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-no-answer-voicemail-greeting-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization ID", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "person-id value", - "required": true - } - ] - }, - { - "path": "webex calling user-call update-person-application-services-settings", - "short": "Modify a person's Application Services Settings", - "long": "Application services let you determine the ringing behavior for calls made to users in certain scenarios. You can also specify which devices users can download the Webex Calling app on.\n\nThis API requires a full or user administrator or location administrator auth token with the spark-admin:people_write scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "browser-client-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "desktop-client-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-person-application-services-settings" - }, - { - "name": "mobile-client-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - }, - { - "name": "ring-devices-for-call-park-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "ring-devices-for-click-to-dial-calls-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "ring-devices-for-group-page-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "tablet-client-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling user-call update-person-calling-behavior", - "short": "Configure a person's Calling Behavior", - "long": "Modifies the calling behavior settings for the person which includes calling behavior and UC Manager Profile ID.\n\nWebex Calling Behavior controls which Webex telephony application and which UC Manager Profile is to be used for a person.\n\nAn organization has an organization-wide default Calling Behavior that may be overridden for individual persons.\n\nUC Manager Profiles are applicable if your organization uses Jabber in Team Messaging mode or Calling in Webex (Unified CM).\n\nThe UC Manager Profile also has an organization-wide default and may be overridden for individual persons.\n\nThis API requires a full or user administrator auth token with the `spark-admin:people_write` scope.", - "flags": [ - { - "name": "behavior-type", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-person-calling-behavior" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - }, - { - "name": "profile-id", - "type": "string" - } - ] - }, - { - "path": "webex calling user-call update-person-executive-alert-settings", - "short": "Modify Person Executive Alert Settings", - "long": "Update executive alert settings for the specified person.\n\nExecutive Alert settings in Webex allow you to control how calls are routed to executive assistants, including alerting mode, rollover options, and caller ID presentation. You can configure settings such as sequential or simultaneous alerting, and specify what happens when calls aren't answered.\n\nThis API requires a full, user, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "alerting-mode", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "clid-name-mode", - "type": "string" - }, - { - "name": "clid-phone-number-mode", - "type": "string" - }, - { - "name": "custom-clidname", - "type": "string" - }, - { - "name": "custom-clidname-in-unicode", - "type": "string" - }, - { - "name": "custom-clidphone-number", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-person-executive-alert-settings" - }, - { - "name": "next-assistant-number-of-rings", - "type": "int64", - "default": "0" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization ID for the person.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - }, - { - "name": "rollover-action", - "type": "string" - }, - { - "name": "rollover-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "rollover-forward-to-phone-number", - "type": "string" - }, - { - "name": "rollover-wait-time-in-secs", - "type": "int64", - "default": "0" - } - ] - }, - { - "path": "webex calling user-call update-person-executive-assigned-assistants", - "short": "Modify Person Executive Assigned Assistants", - "long": "Update assigned executive assistants for the specified person.\n\nAs an executive, you can add assistants to your executive pool to manage calls for you. You can set when and which types of calls they can handle. Assistants can opt in when needed or opt out when not required.\n\nThis API requires a full, user, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "assistant-ids", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-person-executive-assigned-assistants" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization ID for the person.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call update-person-executive-assistant-settings", - "short": "Modify Person Executive Assistant Settings", - "long": "Update executive assistant settings for the specified person when person is configured as executive assistant.\n\nExecutive assistants can make, answer, intercept, and route calls appropriately on behalf of their executive.\nAssistants can also set the call forwarding destination, and join or leave an executive’s pool.\n\nThis API requires a full, user, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-person-executive-assistant-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization ID for the person.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call update-person-executive-filtering-settings", - "short": "Modify Person Executive Call Filtering Settings", - "long": "Update the executive call filtering settings for the specified person.\n\nExecutive Call Filtering in Webex allows you to control which calls are allowed to reach the executive assistant based on custom criteria, such as specific phone numbers or call types. You can enable or disable call filtering and configure filter rules to manage incoming calls.\n\nThis API requires a full, user, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-person-executive-filtering-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization ID for the user.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call update-person-executive-filtering-settings-2", - "short": "Modify Person Executive Call Filtering Criteria Settings", - "long": "Update the executive call filtering settings for the specified person.\n\nExecutive Call Filtering in Webex allows you to control which calls are allowed to reach the executive assistant based on custom criteria, such as specific phone numbers or call types. You can enable or disable call filtering and configure filter rules to manage incoming calls.\n\nThis API requires a full, user or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-person-executive-filtering-settings-2" - }, - { - "name": "id", - "type": "string", - "usage": "The `id` parameter specifies the unique identifier for the executive call filtering criteria. Example: `Y2lzY29zcGFyazovL3VzL0NSSVRFUklBL2RHVnpkRjltYVd4MFpYST0`.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization ID for the user.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call update-person-executive-screening-settings", - "short": "Modify Person Executive Screening Settings", - "long": "Update executive screening settings for the specified person.\n\nExecutive Screening in Webex allows you to manage how incoming calls are screened and alerted based on your preferences. You can enable or disable executive screening and configure alert types and locations for notifications.\n\nThis API requires a full, user, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "alert-anywhere-location-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "alert-mobility-location-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "alert-shared-call-appearance-location-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "alert-type", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-person-executive-screening-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization ID for the person.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call update-person-monitoring-settings", - "short": "Modify a person's Monitoring Settings", - "long": "Modifies the monitoring settings of the person.\nMonitors the line status of specified people, places, virtual lines or call park extension. The line status indicates if a person, place or virtual line is on a call and if a call has been parked on that extension.\n\nThe number of monitored elements is limited to 50.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "enable-call-park-notification", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-person-monitoring-settings" - }, - { - "name": "monitored-elements", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call update-person-ms-teams-setting", - "short": "Configure a Person's MS Teams Setting", - "long": "
Not supported for Webex for Government (FedRAMP)
\n\nConfigure a Person's MS Teams setting.\n\nMS Teams settings can be configured at the person level.\n\nRequires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-person-ms-teams-setting" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter since the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - }, - { - "name": "setting-name", - "type": "string" - }, - { - "name": "value", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling user-call update-person-outgoing-permissions-settings", - "short": "Modify a person's Outgoing Calling Permissions Settings", - "long": "Modify a person's Outgoing Calling Permissions settings.\n\nOutgoing calling permissions regulate behavior for calls placed to various destinations and default to the local level settings. You can change the outgoing calling permissions for a person if you want them to be different from your organization's default.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-person-outgoing-permissions-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call update-person-privacy-settings", - "short": "Configure a person's Privacy Settings", - "long": "Configure a person's privacy settings for the specified person ID.\n\nThe privacy feature enables the person's line to be monitored by others and determine if they can be reached by Auto Attendant services.\n\nThis API requires a full or user administrator or location administrator auth token with the spark-admin:people_write scope.", - "flags": [ - { - "name": "aa-extension-dialing-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "aa-naming-dialing-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "enable-phone-status-directory-privacy", - "type": "bool", - "default": "false" - }, - { - "name": "enable-phone-status-pickup-barge-in-privacy", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-person-privacy-settings" - }, - { - "name": "monitoring-agents", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call update-person-voicemail-passcode", - "short": "Modify a person's voicemail passcode", - "long": "Modify a person's voicemail passcode.\n\nModifying a person's voicemail passcode requires a full administrator, user administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-person-voicemail-passcode" - }, - { - "name": "org-id", - "type": "string", - "usage": "Modify voicemail passcode for a person in this organization.", - "hidden": true - }, - { - "name": "passcode", - "type": "string" - }, - { - "name": "person-id", - "type": "string", - "usage": "Modify voicemail passcode for this person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call update-personal-assistant", - "short": "Update Personal Assistant", - "long": "Update Personal Assistant details for a specific user.\n\nPersonal Assistant is used to manage a user's incoming calls when they are away.\n\nUpdating Personal Assistant details requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "alert-me-first-number-of-rings", - "type": "int64", - "default": "0" - }, - { - "name": "alerting", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-personal-assistant" - }, - { - "name": "org-id", - "type": "string", - "usage": "Update Personal Assistant details for the organization.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - }, - { - "name": "presence", - "type": "string" - }, - { - "name": "transfer-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "transfer-number", - "type": "string" - }, - { - "name": "until-date-time", - "type": "string" - } - ] - }, - { - "path": "webex calling user-call update-preferred-endpoint", - "short": "Modify Preferred Answer Endpoint", - "long": "Sets or clears the person’s preferred answer endpoint. To clear the preferred answer endpoint the `preferredAnswerEndpointId` attribute must be set to null.
\nThis API requires `spark:telephony_config_write` or `spark-admin:telephony_config_write` scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-preferred-endpoint" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - }, - { - "name": "preferred-answer-endpoint-id", - "type": "string" - } - ] - }, - { - "path": "webex calling user-call update-push-to-talk-settings-person", - "short": "Configure Push-to-Talk Settings for a Person", - "long": "Configure a person's Push-to-Talk settings.\n\nPush-to-Talk allows the use of desk phones as either a one-way or two-way intercom that connects people in different parts of your organization.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope.", - "flags": [ - { - "name": "access-type", - "type": "string" - }, - { - "name": "allow-auto-answer", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "connection-type", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-push-to-talk-settings-person" - }, - { - "name": "members", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call update-receptionist-client-settings-person", - "short": "Configure Receptionist Client Settings for a Person", - "long": "Configure a person's Receptionist Client settings.\n\nTo help support the needs of your front-office personnel, you can set up people, workspaces or virtual lines as telephone attendants so that they can screen all incoming calls to certain numbers within your organization.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-receptionist-client-settings-person" - }, - { - "name": "monitored-members", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - }, - { - "name": "reception-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling user-call update-recording-person", - "short": "Configure Call Recording Settings for a Person", - "long": "Configure a person's Call Recording settings.\n\nThe Call Recording feature provides a hosted mechanism to record the calls placed and received on the Carrier platform for replay and archival. This feature is helpful for quality assurance, security, training, and more.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope.\n\n
A person with a Webex Calling Standard license is eligible for the Call Recording feature only when the Call Recording vendor is Webex.
", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-recording-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call update-schedule", - "short": "Update a Schedule", - "long": "Modify a schedule by its schedule ID.\n\nSchedules are used to support calling features and can be defined at the location or person level. `businessHours` schedules allow you to apply specific call settings at different times of the day or week by defining one or more events. `holidays` schedules define exceptions to normal business hours by defining one or more events.\n\nThis API requires a full or user administrator auth token with the `spark-admin:people_write` scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-schedule" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - }, - { - "name": "schedule-id", - "type": "string", - "usage": "Unique identifier for the schedule.", - "required": true - }, - { - "name": "schedule-type", - "type": "string", - "usage": "Type of schedule, either `businessHours` or `holidays`.", - "required": true - } - ] - }, - { - "path": "webex calling user-call update-shared-line-appearance-members", - "short": "Put Shared-Line Appearance Members", - "long": "Add or modify primary and secondary users assigned to shared-lines on a Webex Calling Apps Desktop device.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope.", - "flags": [ - { - "name": "application-id", - "type": "string", - "usage": "A unique identifier for the application.", - "required": true - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-shared-line-appearance-members" - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call update-shared-line-appearance-members-2", - "short": "Put Shared-Line Appearance Members New", - "long": "Add or modify primary and secondary users assigned to shared-lines on a Webex Calling Apps.\n\nLike most hardware devices, applications support assigning additional shared lines which can monitored and utilized by the application.\n\nThis API requires a full, user, or location administrator auth token with the `spark-admin:telephony_config_write` scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-shared-line-appearance-members-2" - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call update-timezone-announcement-language-settings-person", - "short": "Update Timezone and Announcement Language Settings of a Person", - "long": "Modify a person's timezone and announcement language settings.\n\nWebex Calling supports configuring timezone and announcement language preferences, allowing personalized call experience based on their location and language preferences.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "announcement-language", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-timezone-announcement-language-settings-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization ID. If not specified, uses the organization from the OAuth token.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Modify timezone and announcement language settings of this person.", - "required": true - }, - { - "name": "time-zone", - "type": "string" - } - ] - }, - { - "path": "webex calling user-call update-transfer-numbers-person", - "short": "Modify Transfer Numbers for a Person", - "long": "Modify a person's transfer numbers.\n\nWhen calling a specific call type, this person will be automatically transferred to another number. The person assigned the Auto Transfer Number can then approve the call and send it through or reject the call type. You can add up to 3 numbers.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:telephony_config_write` scope.", - "flags": [ - { - "name": "auto-transfer-number1", - "type": "string" - }, - { - "name": "auto-transfer-number2", - "type": "string" - }, - { - "name": "auto-transfer-number3", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-transfer-numbers-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - }, - { - "name": "use-custom-transfer-numbers", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling user-call update-users-selective-accept", - "short": "Update User’s Selective Call Accept Criteria", - "long": "Modify selective call accept setting for a user.\n\nWith the Selective Call accept feature, you can create different rules to accept specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-users-selective-accept" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization in which the user resides.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call update-users-selective-accept-service", - "short": "Modify a Criteria From the User’s Selective Call Accept Service", - "long": "Modify a criteria for the user's selective call accept service.\n\nWith the Selective Call Accept feature, you can create different rules to accept specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "accept-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "anonymous-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calls-from", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-users-selective-accept-service" - }, - { - "name": "id", - "type": "string", - "usage": "Criteria ID.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization in which the user resides.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - }, - { - "name": "phone-numbers", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "schedule-level", - "type": "string" - }, - { - "name": "schedule-name", - "type": "string" - }, - { - "name": "schedule-type", - "type": "string" - }, - { - "name": "unavailable-callers-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling user-call update-users-selective-forward-list", - "short": "Update User’s Selective Call Forwarding Criteria List", - "long": "Modify selective call forwarding setting for a user.\n\nWith the Selective Call Forwarding feature, you can create different rules to forward specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "default-phone-number-to-forward", - "type": "string" - }, - { - "name": "destination-voicemail-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-users-selective-forward-list" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization in which the user resides.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - }, - { - "name": "ring-reminder-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling user-call update-users-selective-forward-service", - "short": "Modify a Criteria for the User’s Selective Call Forwarding Service", - "long": "Modify a criteria for the user's selective call forwarding service.\n\nWith the Selective Call Forwarding feature, you can create different rules to forward specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "anonymous-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calls-from", - "type": "string" - }, - { - "name": "forward-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "forward-to-phone-number", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-users-selective-forward-service" - }, - { - "name": "id", - "type": "string", - "usage": "Criteria ID.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization in which the user resides.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - }, - { - "name": "phone-numbers", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "schedule-level", - "type": "string" - }, - { - "name": "schedule-name", - "type": "string" - }, - { - "name": "schedule-type", - "type": "string" - }, - { - "name": "send-to-voicemail-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "unavailable-callers-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling user-call update-users-selective-reject-list", - "short": "Update User’s Selective Call Rejection Criteria List", - "long": "Modify selective call rejection setting for a user.\n\nWith the Selective Call Rejection feature, you can create different rules to reject specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-users-selective-reject-list" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization in which the user resides.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call update-users-selective-reject-service", - "short": "Modify a Criteria for the User’s Selective Call Rejection Service", - "long": "Modify a criteria for the user's selective call rejection service.\n\nWith the Selective Call Rejection feature, you can create different rules to reject specific calls based on the phone number, who's calling, and/or the time and day of the call.\n\nRequires a full, user, or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "anonymous-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calls-from", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-users-selective-reject-service" - }, - { - "name": "id", - "type": "string", - "usage": "Criteria ID.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization in which the user resides.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - }, - { - "name": "phone-numbers", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "reject-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "schedule-level", - "type": "string" - }, - { - "name": "schedule-name", - "type": "string" - }, - { - "name": "schedule-type", - "type": "string" - }, - { - "name": "unavailable-callers-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling user-call update-voicemail-person", - "short": "Configure Voicemail Settings for a Person", - "long": "Configure a person's Voicemail settings.\n\nThe voicemail feature transfers callers to voicemail based on your settings. You can then retrieve voice messages via Voicemail. Voicemail audio is sent in Waveform Audio File Format, `.wav`, format.\n\nOptionally, notifications can be sent to a mobile phone via text or email. These notifications will not include the voicemail files.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope or a user auth token with `spark:people_write` scope can be used by a person to update their settings.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-voicemail-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call update-waiting-settings-person", - "short": "Configure Call Waiting Settings for a Person", - "long": "Configure a person's Call Waiting settings.\n\nWith this feature, a person can place an active call on hold and answer an incoming call. When enabled, while you are on an active call, a tone alerts you of an incoming call and you can choose to answer or ignore the call.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:people_write` scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-waiting-settings-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex calling user-call validate-initiate-move-job", - "short": "Validate or Initiate Move Users Job", - "long": "This API allows the user to perform one of the following operations:\n\n* Setting the `validate` attribute to `true` validates the user move.\n\n* Setting the `validate` attribute to `false` performs the user move.\n\n
\n\nNotes:\n\n* A maximum of `100` users can be moved at a time.\n\n* Setting the `validate` attribute to `true` only allowed for calling user.\n\n* When a single non calling user is moved, it will be moved synchronously without creating any job.\n\n
\n\nErrors occurring during the initial API request validation are captured directly in the error response, along with the appropriate HTTP status code.\n\n
\n\nBelow is a list of possible error `code` values and their associated `message`, which can be found in the `errors` array during initial API request validation, regardless of the `validate` attribute value:\n\n* BATCH-400 - Attribute 'User ID' is required.\n\n* BATCH-400 - Users list should not be empty.\n\n* BATCH-400 - Users should not be empty.\n\n* 1026006 - Attribute 'Validate' is required.\n\n* 1026010 - User is not a valid Calling User.\n\n* 1026011 - Users list should not be empty.\n\n* 1026012 - Users should not be empty.\n\n* 1026013 - The source and the target location cannot be the same.\n\n* 1026014 - Error occurred while processing the move users request.\n\n* 1026015 - Error occurred while moving user number to target location.\n\n* 1026016 - User should have either phone number or extension.\n\n* 1026017 - Phone number is not in e164 format.\n\n* 1026018 - Selected Users list exceeds the maximum limit.\n\n* 1026019 - Duplicate entry for user is not allowed.\n\n* 1026020 - Validate 'true' is supported only for single user.\n\n* 1026021 - Attribute location id is required for Calling user.\n\n* 1026022 - Validate 'true' is supported for calling users only.\n\n* 1026023 - Extension and phone number is supported for calling users only.\n\n* 2150012 - User was not found\n\n
\n\nWhen the `validate` attribute is set to true, the API identifies and returns the `errors` and `impacts` associated with the user move in the response.\n\n
\n\nBelow is a list of possible error `code` values and their associated `message`, which can be found in the `errors` array, when `validate` attribute is set to be true:\n\n* 4003 - `User Not Found`\n\n* 4007 - `User Not Found`\n\n* 4152 - `Location Not Found`\n\n* 5620 - `Location Not Found`\n\n* 4202 - `The extension is not available. It is already assigned to a user : {0}`\n\n* 8264 - `Routing profile is different with new group: {0}`\n\n* 19600 - `User has to be within an enterprise to be moved.`\n\n* 19601 - `User can only be moved to a different group within the same enterprise.`\n\n* 19602 - `Only regular end user can be moved. Service instance virtual user cannot be moved.`\n\n* 19603 - `New group already reaches maximum number of user limits.`\n\n* 19604 - `The {0} number of the user is the same as the calling line ID of the group.`\n\n* 19605 - `User is assigned services not authorized to the new group: {0}.`\n\n* 19606 - `User is in an active hoteling/flexible seating association.`\n\n* 19607 - `User is pilot user of a trunk group.`\n\n* 19608 - `User is using group level device profiles which is used by other users in current group. Following are the device profiles shared with other users: {0}.`\n\n* 19609 - `Following device profiles cannot be moved to the new group because there are already devices with the same name defined in the new group: {0}.`\n\n* 19610 - `The extension of the user is used as transfer to operator number for following Auto Attendent : {0}.`\n\n* 19611 - `Fail to move announcement file from {0} to {1}.`\n\n* 19612 - `Fail to move device management file from {0} to {1}.`\n\n* 19613 - `User is assigned service packs not authorized to the new group: {0}.`\n\n* 25008 - `Missing Mandatory field name: {0}`\n\n* 25110 - `{fieldName} cannot be less than {0} or greater than {1} characters.`\n\n* 25378 - `Target location is same as user's current location.`\n\n* 25379 - `Error Occurred while Fetching User's Current Location Id.`\n\n* 25381 - `Error Occurred while rolling back to Old Location Call recording Settings`\n\n* 25382 - `Error Occurred while Disabling Call Recording for user which is required Before User can be Moved`\n\n* 25383 - `OCI Error while moving user`\n\n* 25384 - `Error Occurred while checking for Possible Call Recording Impact.`\n\n* 25385 - `Error Occurred while getting Call Recording Settings`\n\n* 27559 - `The groupExternalId search criteria contains groups with different calling zone.`\n\n* 27960 - `Parameter isWebexCalling, newPhoneNumber, or newExtension can only be set in Webex Calling deployment mode.`\n\n* 27961 - `Parameter isWebexCalling shall be set if newPhoneNumber or newExtension is set.`\n\n* 27962 - `Work space cannot be moved.`\n\n* 27963 - `Virtual profile user cannot be moved.`\n\n* 27965 - `The user's phone number: {0}, is same as the current group charge number.`\n\n* 27966 - `The phone number, {0}, is not available in the new group.`\n\n* 27967 - `User is configured as the ECBN user for another user in the current group.`\n\n* 27968 - `User is configured as the ECBN user for the current group.`\n\n* 27969 - `User is associated with DECT handset(s): {0}`\n\n* 27970 - `User is using a customer managed device: {0}`\n\n* 27971 - `User is using an ATA device: {0}`\n\n* 27972 - `User is in an active hotdesking association.`\n\n* 27975 - `Need to unassign CLID number from group before moving the number to the new group. Phone number: {0}`\n\n* 27976 - `Local Gateway configuration is different with new group. Phone number: {0}`\n\n* 1026015 - `Error occurred while moving user number to target location`\n\n* 10010000 - `Total numbers exceeded maximum limit allowed`\n\n* 10010001 - `to-location and from-location cannot be same`\n\n* 10010002 - `to-location and from-location should belong to same customer`\n\n* 10010003 - `to-location must have a carrier`\n\n* 10010004 - `from-location must have a carrier`\n\n* 10010005 - `Different Carrier move is not supported for non-Cisco PSTN carriers.`\n\n* 10010006 - `Number move not supported for WEBEX_DIRECT carriers.`\n\n* 10010007 - `Numbers out of sync, missing on CPAPI`\n\n* 10010008 - `from-location not found or pstn connection missing in CPAPI`\n\n* 10010010 - `from-location is in transition`\n\n* 10010009 - `to-location not found or pstn connection missing in CPAPI`\n\n* 10010011 - `to-location is in transition`\n\n* 10010012 - `Numbers don't have a carrier Id`\n\n* 10010013 - `Location less numbers don't have a carrier Id`\n\n* 10010014 - `Different Carrier move is not supported for numbers with different country or region.`\n\n* 10010015 - `Numbers contain mobile and non-mobile types.`\n\n* 10010016 - `To/From location carriers must be same for mobile numbers.`\n\n* 10010017 - `Move request for location less number not supported`\n\n* 10010200 - `Move request for more than one block number is not supported`\n\n* 10010201 - `Cannot move block number as few numbers not from the block starting %s to %s`\n\n* 10010202 - `Cannot move block number as few numbers failed VERIFICATION from the block %s to %s`\n\n* 10010203 - `Cannot move block number as few numbers missing from the block %s to %s`\n\n* 10010204 - `Cannot move number as it is NOT a part of the block %s to %s`\n\n* 10010205 - `Move request for Cisco PSTN block order not supported.`\n\n* 10010299 - `Move order couldn't be created as no valid number to move`\n\n* 10030000 - `Number not found`\n\n* 10030001 - `Number does not belong to from-location`\n\n* 10030002 - `Number is not present in CPAPI`\n\n* 10030003 - `Number assigned to an user or device`\n\n* 10030004 - `Number not in Active status`\n\n* 10030005 - `Number is set as main number of the location`\n\n* 10030006 - `Number has pending order associated with it`\n\n* 10030007 - `Number belongs to a location but a from-location was not set`\n\n* 10030008 - `Numbers from multiple carrier ids are not supported`\n\n* 10030009 - `Location less number belongs to a location. from-location value is set to null or no location id`\n\n* 10030010 - `One or more numbers are not portable.`\n\n* 10030011 - `Mobile number carrier was not set`\n\n* 10030012 - `Number must be assigned for assigned move`\n\n* 10050000 - `Failed to update customer reference for phone numbers on carrier`\n\n* 10050001 - `Failed to update customer reference`\n\n* 10050002 - `Order is not of operation type MOVE`\n\n* 10050003 - `CPAPI delete call failed`\n\n* 10050004 - `Not found in database`\n\n* 10050005 - `Error sending notification to WxcBillingService`\n\n* 10050006 - `CPAPI provision number as active call failed with status %s ,reason %s`\n\n* 10050007 - `Failed to update E911 Service`\n\n* 10050008 - `Target location does not have Inbound Toll Free license`\n\n* 10050009 - `Source location or Target location subscription found cancelled or suspended`\n\n* 10050010 - `Moving On Premises or Non Integrated CCP numbers from one location to another is not supported.`\n\n* 10099999 - `{Error Code} - {Error Message}`\n\n
\n\nBelow is a list of possible impact `code` values and their associated `message`, which can be found in the `impacts` array, when `validate` attribute is set to be true:\n\n* 19701 - `The identity/device profile the user is using is moved to the new group: {0}.`\n\n* 19702 - `The user level customized incoming digit string setting is removed from the user. User is set to use the new group setting.`\n\n* 19703 - `The user level customized outgoing digit plan setting is removed from the user. User is set to use the new group setting.`\n\n* 19704 - `The user level customized enhanced outgoing calling plan setting is removed from the user. User is set to use the new group setting.`\n\n* 19705 - `User is removed from following group services: {0}.`\n\n* 19706 - `The current group schedule used in any criteria is removed from the service settings.`\n\n* 19707 - `User is removed from the department of the old group.`\n\n* 19708 - `User is changed to use the default communication barring profile of the new group.`\n\n* 19709 - `The communication barring profile of the user is assigned to the new group: {0}.`\n\n* 19710 - `The charge number for the user is removed.`\n\n* 19711 - `The disabled FACs for the user are removed because they are not available in the new group.`\n\n* 19712 - `User is removed from trunk group.`\n\n* 19713 - `The extension of the user is reset to empty due to either the length is out of bounds of the new group, or the extension is already taken in new group.`\n\n* 19714 - `The extension of the following alternate number is reset to empty due to either the length out of bounds of the new group or the extension is already taken in new group: {0}.`\n\n* 19715 - `The collaborate room using current group default collaborate bridge is moved to the default collaborate bridge of the new group.`\n\n* 19716 - `Previously stored voice messages of the user are no longer available. The new voice message will be stored on the mail server of the new group.`\n\n* 19717 - `The primary number, alternate numbers or fax messaging number of the user are assigned to the new group: {0}.`\n\n* 19718 - `Following domains are assigned to the new group: {0}.`\n\n* 19719 - `The NCOS of the user is assigned to the new group: {0}.`\n\n* 19720 - `The office zone of the user is assigned to the new group: {0}.`\n\n* 19721 - `The announcement media files are relocated to the new group directory.`\n\n* 19722 - `User CLID number is set to use the new group CLID number: {0}.`\n\n* 19723 - `New group CLID number is not configured.`\n\n* 19724 - `The group level announcement file(s) are removed from the user's music on hold settings.`\n\n* 25388 - `Target Location Does not Have Vendor Configured. Call Recording for user will be disabled`\n\n* 25389 - `Call Recording Vendor for user will be changed from:{0} to:{1}`\n\n* 25390 - `Dub point of user is moved to new external group`\n\n* 25391 - `Error Occurred while moving Call recording Settings to new location`\n\n* 25392 - `Error Occurred while checking for Possible Call Recording Impact.`\n\n* 25393 - `Sending Billing Notification Failed`\n\nThis API requires a full administrator auth token with the scopes `spark-admin:telephony_config_write`, `spark-admin:people_write`, and `identity:groups_rw`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for validate-initiate-move-job" - }, - { - "name": "org-id", - "type": "string", - "usage": "Create Move Users job for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling virtual-extensions", - "short": "VirtualExtensions commands" - }, - { - "path": "webex calling virtual-extensions create", - "short": "Create a Virtual Extension", - "long": "Create new Virtual Extension for the given organization or location.\n\nYou can set up virtual extensions at the organization or location level. The organization level enables everyone across your organization to dial the same extension number to reach someone.\nYou can use the location level virtual extension like any other extension assigned to the specific location.\nUsers at the specific location can dial the extension. However, users at other locations can reach the virtual extension by dialing the ESN.\n\nCreating a virtual extension requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write` and `identity:contacts_rw`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "display-name", - "type": "string" - }, - { - "name": "extension", - "type": "string" - }, - { - "name": "first-name", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "last-name", - "type": "string" - }, - { - "name": "location-id", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "Unique identifier for the organization.", - "hidden": true - }, - { - "name": "phone-number", - "type": "string" - } - ] - }, - { - "path": "webex calling virtual-extensions create-range", - "short": "Create a Virtual Extension Range", - "long": "Create a new Virtual Extension Range for the given organization or location.\n\nVirtual extension ranges integrate remote workers on a separate telephony system into Webex Calling and enable extension dialing. Using these ranges, you can define patterns that can be used to route calls at a location level or an organization level. You are allowed to define virtual extensions ranges in addition to individual virtual extensions.\nThis works in both Standard and Enhanced modes\n\nVirtual extension range can be set up at the organization or location level.\n\nCreating a virtual extension range requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-range" - }, - { - "name": "location-id", - "type": "string" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "Unique identifier for the organization.", - "hidden": true - }, - { - "name": "patterns", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "prefix", - "type": "string" - } - ] - }, - { - "path": "webex calling virtual-extensions delete", - "short": "Delete a Virtual Extension", - "long": "Delete Virtual Extension using the extension ID.\n\nThis API permanently deletes a virtual extension from the organization. Once deleted, the extension will no longer route calls to the external phone number, and users won’t be able to reach it via the assigned extension.\n\nDeleting a Virtual Extension requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write` and `identity:contacts_rw`.", - "flags": [ - { - "name": "extension-id", - "type": "string", - "usage": "ID of the virtual extension.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "org-id", - "type": "string", - "usage": "Unique identifier for the organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling virtual-extensions delete-range", - "short": "Delete a Virtual Extension Range", - "long": "Delete a virtual extension range for the given extension range ID.\n\nVirtual extension ranges integrate remote workers on a separate telephony system into Webex Calling and enable extension dialing. Using these ranges, you can define patterns that can be used to route calls at a location level or an organization level. You are allowed to define virtual extensions ranges in addition to individual virtual extensions.\nThis works in both Standard and Enhanced modes\n\nDeleting a virtual extension range requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "extension-range-id", - "type": "string", - "usage": "ID of the virtual extension range.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-range" - }, - { - "name": "org-id", - "type": "string", - "usage": "Unique identifier for the organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling virtual-extensions get", - "short": "Get a Virtual Extension", - "long": "Retrieve Virtual Extension details for the given extension ID.\n\nVirtual extensions integrate remote workers on separate telephony systems into Webex Calling, enabling users to reach them via extension dialing.\nThis endpoint allows administrators to retrieve configuration details for a specific virtual extension, ensuring visibility into the mapping between extensions and external phone numbers.\n\nRetrieving a Virtual Extension requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "extension-id", - "type": "string", - "usage": "ID of the virtual extension.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "org-id", - "type": "string", - "usage": "Unique identifier for the organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling virtual-extensions get-range", - "short": "Get details of a Virtual Extension Range", - "long": "Retrieve virtual extension range details for the given extension range ID.\n\nVirtual extension ranges integrate remote workers on a separate telephony system into Webex Calling and enable extension dialing. Using these ranges, you can define patterns that can be used to route calls at a location level or an organization level. You are allowed to define virtual extensions ranges in addition to individual virtual extensions.\nThis works in both Standard and Enhanced modes\n\nRetrieving a virtual extension range requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "extension-range-id", - "type": "string", - "usage": "ID of the virtual extension range.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-range" - }, - { - "name": "org-id", - "type": "string", - "usage": "Unique identifier for the organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling virtual-extensions get-settings", - "short": "Get Virtual extension settings", - "long": "Retrieve Virtual Extension settings for the given Org.\n\nThis API retrieves the virtual extension mode settings configured for a given organization. Virtual extensions can operate in two modes: STANDARD and ENHANCED. The selected mode determines how the system handles routing and signaling for virtual extensions.\nBy default, the virtual extensions that you create use the Standard mode. Another mode, enhanced signaling mode, is available to all customers, however, virtual extensions won't function properly in this mode unless your PSTN provider supports special network signaling extensions and there aren't many PSTN providers that do.\n\nRetrieving a Virtual Extension settings requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "Unique identifier for the organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling virtual-extensions list", - "short": "Read the List of Virtual Extensions", - "long": "Retrieve virtual extensions associated with a specific customer.\n\nThe GET Virtual Extensions API allows administrators to retrieve a list of virtual extensions configured within their organization. Virtual extensions enable users to dial extension numbers that route to external phone numbers, such as those of remote workers or frequently contacted clients.\nThis API returns key information including the extension, associated phone number (in E.164 format), display name, and the location to which the virtual extension belongs\nThe API supports filtering by various parameters, such as extension number, phone number, and location name. The results can be paginated using the `max` and `start` parameters, and the order of the results can be specified using the `order` parameter.\n\nRetrieving a Virtual Extension requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "extension", - "type": "string", - "usage": "Filter the list of virtual extensions by extension number." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "location-id", - "type": "string", - "usage": "Filter the list of virtual extensions by location ID." - }, - { - "name": "location-name", - "type": "string", - "usage": "Filter the list of virtual extensions by location name.(Only one of the locationName, locationId, and OrgLevelOnly query parameters is allowed at the same time.)" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of virtual extensions returned to this maximum count. Default is 10." - }, - { - "name": "name", - "type": "string", - "usage": "Filter the list of virtual extensions by name. This can be either first name or last name." - }, - { - "name": "order", - "type": "string", - "usage": "Order the list of virtual extensions in ascending or descending order. Default is ascending." - }, - { - "name": "org-id", - "type": "string", - "usage": "Unique identifier for the organization.", - "hidden": true - }, - { - "name": "org-level-only", - "type": "string", - "usage": "Filter the list of virtual extensions by organization level. If orgLevelOnly is true, return only the organization level virtual extensions." - }, - { - "name": "phone-number", - "type": "string", - "usage": "Filter the list of virtual extensions by phone number." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching virtual extensions. Default is 0." - } - ] - }, - { - "path": "webex calling virtual-extensions list-range", - "short": "Get a list of a Virtual Extension Range", - "long": "Retrieves the list of Virtual Extension Ranges.\n\nVirtual extension ranges integrate remote workers on a separate telephony system into Webex Calling and enable extension dialing. Using these ranges, you can define patterns that can be used to route calls at a location level or an organization level. You are allowed to define virtual extensions ranges in addition to individual virtual extensions.\nThis works in both Standard and Enhanced modes\n\nRetrieving a virtual extension range requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-range" - }, - { - "name": "location-id", - "type": "string", - "usage": "Filter the list of virtual extension ranges by location ID. Only one of the `locationId` and `OrgLevelOnly` query parameters is allowed at the same time." - }, - { - "name": "max", - "type": "string", - "usage": "Maximum number of results to return." - }, - { - "name": "name", - "type": "string", - "usage": "Filter the list of virtual extension ranges by name." - }, - { - "name": "order", - "type": "string", - "usage": "Sort the list of virtual extension ranges by name or prefix, either ASC or DSC. Default sort order is ASC." - }, - { - "name": "org-id", - "type": "string", - "usage": "Unique identifier for the organization.", - "hidden": true - }, - { - "name": "org-level-only", - "type": "string", - "usage": "Filter the list of virtual extension ranges by organization level. If `orgLevelOnly` is true, return only the organization level virtual extension ranges." - }, - { - "name": "prefix", - "type": "string", - "usage": "Filter the list of virtual extension ranges by prefix." - }, - { - "name": "start", - "type": "string", - "usage": "The starting index of the results to return." - } - ] - }, - { - "path": "webex calling virtual-extensions update", - "short": "Update a Virtual Extension", - "long": "Update Virtual Extension details for the given extension ID.\n\nThis API updates the configuration of an existing virtual extension identified by its unique extension ID. Administrators can modify fields such as the extension, associated phone number (in E.164 format), display name, and location etc.\n\nUpdating a Virtual Extension requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write` and `identity:contacts_rw`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "display-name", - "type": "string" - }, - { - "name": "extension", - "type": "string" - }, - { - "name": "extension-id", - "type": "string", - "usage": "ID of the virtual extension.", - "required": true - }, - { - "name": "first-name", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "last-name", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "Unique identifier for the organization.", - "hidden": true - }, - { - "name": "phone-number", - "type": "string" - } - ] - }, - { - "path": "webex calling virtual-extensions update-range", - "short": "Modify Virtual Extension Range", - "long": "Modify virtual extension range for the given extension range ID.\n\nVirtual extension ranges integrate remote workers on a separate telephony system into Webex Calling and enable extension dialing. Using these ranges, you can define patterns that can be used to route calls at a location level or an organization level. You are allowed to define virtual extensions ranges in addition to individual virtual extensions.\nThis works in both Standard and Enhanced modes\n\nModifying a virtual extension range requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "action", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "extension-range-id", - "type": "string", - "usage": "ID of the virtual extension range.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-range" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "Unique identifier for the organization.", - "hidden": true - }, - { - "name": "patterns", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "prefix", - "type": "string" - } - ] - }, - { - "path": "webex calling virtual-extensions update-settings", - "short": "Modify Virtual Extension Settings", - "long": "Update Virtual Extension details for the given extension ID.\n\nThis endpoint updates the virtual extension settings for an organization. It is primarily used to configure the operating mode for virtual extensions.\nModes determine how virtual extensions are assigned or managed within the system.\n\nUpdating a Virtual Extension requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-settings" - }, - { - "name": "mode", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "Unique identifier for the organization.", - "hidden": true - } - ] - }, - { - "path": "webex calling virtual-extensions validate-external-phone-number", - "short": "Validate an external phone number", - "long": "Validate external phone number for the given organization.\n\nThis API is designed to validate external phone numbers before they are assigned as virtual extensions for a customer.\nIt ensures that the provided numbers are properly formatted, eligible for use, and not already in use within the system.\nThis validation is typically part of a pre-check process during provisioning or number assignment workflows, helping administrators or systems prevent conflicts or errors related to number reuse or format issues.\n\nCreating a virtual extension requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for validate-external-phone-number" - }, - { - "name": "org-id", - "type": "string", - "usage": "Unique identifier for the organization.", - "hidden": true - }, - { - "name": "phone-numbers", - "type": "stringSlice", - "default": "[]" - } - ] - }, - { - "path": "webex calling virtual-extensions validate-prefix-pattern-range", - "short": "Validate the prefix and extension pattern for a Virtual Extension Range", - "long": "Validate the prefix and extension pattern for a Virtual Extension Range.\n\nVirtual extension ranges integrate remote workers on a separate telephony system into Webex Calling and enable extension dialing. Using these ranges, you can define patterns that can be used to route calls at a location level or an organization level. You are allowed to define virtual extensions ranges in addition to individual virtual extensions.\nThis works in both Standard and Enhanced modes\n\nValidating a prefix and extension pattern for a Virtual Extension Range requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for validate-prefix-pattern-range" - }, - { - "name": "location-id", - "type": "string" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "Unique identifier for the organization.", - "hidden": true - }, - { - "name": "patterns", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "prefix", - "type": "string" - }, - { - "name": "range-id", - "type": "string" - } - ] - }, - { - "path": "webex calling virtual-line-call", - "short": "VirtualLineCall commands" - }, - { - "path": "webex calling virtual-line-call create", - "short": "Create a Virtual Line", - "long": "Create new Virtual Line for the given location.\n\nVirtual line is a capability in Webex Calling that allows administrators to configure multiple lines to Webex Calling users.\n\nCreating a virtual line requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "caller-id-first-name", - "type": "string" - }, - { - "name": "caller-id-last-name", - "type": "string" - }, - { - "name": "caller-id-number", - "type": "string" - }, - { - "name": "display-name", - "type": "string" - }, - { - "name": "extension", - "type": "string" - }, - { - "name": "first-name", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "last-name", - "type": "string" - }, - { - "name": "location-id", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "Create the virtual line for this organization.", - "hidden": true - }, - { - "name": "phone-number", - "type": "string" - } - ] - }, - { - "path": "webex calling virtual-line-call create-access-codes", - "short": "Create Access Codes for a Virtual Line", - "long": "Create a new access codes for the virtual line.\n\nAccess codes are used to bypass permissions.\n\nThis API requires a full or user administrator auth token with the `spark-admin:telephony_config_write` scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "code", - "type": "string" - }, - { - "name": "description", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-access-codes" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Unique identifier for the virtual line.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call create-digit-pattern-profile", - "short": "Create Digit Pattern for a Virtual Profile", - "long": "Create a new digit pattern for a virtual profile.\n\nDigit patterns are used to bypass permissions.\n\nCreating the digit pattern requires a full or user or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "action", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-digit-pattern-profile" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "pattern", - "type": "string" - }, - { - "name": "transfer-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Unique identifier for the virtual line.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call delete", - "short": "Delete a Virtual Line", - "long": "Delete the designated Virtual Line.\n\nVirtual line is a capability in Webex Calling that allows administrators to configure multiple lines to Webex Calling users.\n\nDeleting a virtual line requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write` and `identity:contacts_rw`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "org-id", - "type": "string", - "usage": "Delete the virtual line from this organization.", - "hidden": true - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Delete the virtual line with the matching ID.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call delete-access-codes", - "short": "Delete Access Codes for a Virtual Line", - "long": "Deletes all access codes for the virtual line.\n\nAccess codes are used to bypass permissions.\n\nThis API requires a full or user administrator auth token with the `spark-admin:telephony_config_write` scope.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-access-codes" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Unique identifier for the virtual line.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call delete-all-digit-patterns-profile", - "short": "Delete all Digit Patterns for a Virtual Profile", - "long": "Delete all digit patterns for a virtual profile.\n\nDigit patterns are used to bypass permissions.\n\nDeleting the digit patterns requires a full or user or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-all-digit-patterns-profile" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Unique identifier for the virtual line.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call delete-digit-pattern-profile", - "short": "Delete a Digit Pattern for a Virtual Profile", - "long": "Delete a digit pattern for a virtual profile.\n\nDigit patterns are used to bypass permissions.\n\nDeleting the digit pattern requires a full or user or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "digit-pattern-id", - "type": "string", - "usage": "Unique identifier for the digit pattern.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-digit-pattern-profile" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Unique identifier for the virtual line.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call get", - "short": "Get Details for a Virtual Line", - "long": "Retrieve Virtual Line details.\n\nVirtual line is a capability in Webex Calling that allows administrators to configure multiple lines to Webex Calling users.\n\nRetrieving virtual line details requires a full or user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve virtual line settings from this organization.", - "hidden": true - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Retrieve settings for a virtual line with the matching ID.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call get-access-codes", - "short": "Retrieve Access Codes for a Virtual Line", - "long": "Retrieve the virtual line's access codes.\n\nAccess codes are used to bypass permissions.\n\nThis API requires a full, user or read-only administrator auth token with a scope of spark-admin:telephony_config_read", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-access-codes" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Unique identifier for the virtual line.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call get-agent-caller-id", - "short": "Retrieve Agent's Caller ID Information", - "long": "Retrieve the Agent's Caller ID Information.\n\nEach agent will be able to set their outgoing Caller ID as either the Call Queue's Caller ID, Hunt Group's Caller ID or their own configured Caller ID.\n\nThis API requires a full admin or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-agent-caller-id" - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Unique identifier for the Virtual Line.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call get-agent-list-available-caller-ids", - "short": "Retrieve Agent's List of Available Caller IDs", - "long": "Get the list of call queues and hunt groups available for caller ID use by this virtual line as an agent.\n\nThis API requires a full, user, or read-only administrator auth token with a scope of `spark-admin:people_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-agent-list-available-caller-ids" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the Virtual Line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Unique identifier for the Virtual Line.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call get-available-numbers", - "short": "Get Virtual Line Available Phone Numbers", - "long": "List standard numbers that are available to be assigned as a virtual line's phone number.\nBy default, this API returns unassigned numbers from all locations. To select the suitable number for assignment, ensure the virtual line's location ID is provided as the `locationId` request parameter.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-available-numbers" - }, - { - "name": "location-id", - "type": "string", - "usage": "Return the list of phone numbers for this location within the given organization. The maximum length is 36." - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of phone numbers returned to this maximum count. The default is 2000." - }, - { - "name": "org-id", - "type": "string", - "usage": "List numbers for this organization.", - "hidden": true - }, - { - "name": "phone-number", - "type": "string", - "usage": "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching phone numbers. The default is 0." - } - ] - }, - { - "path": "webex calling virtual-line-call get-barge-settings", - "short": "Read Barge In Settings for a Virtual Line", - "long": "Retrieve a virtual line's barge in settings.\n\nThe Barge In feature enables you to use a Feature Access Code (FAC) to answer a call that was directed to another subscriber, or barge-in on the call if it was already answered. Barge In can be used across locations.\n\nRetrieving the barge in settings for a virtual line requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-barge-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Retrieve settings for a virtual line with the matching ID.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call get-bridge-settings", - "short": "Read Call Bridge Settings for a Virtual Line", - "long": "Retrieve a virtual line's call bridge settings.\n\nRetrieving the call bridge settings for a virtual line requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-bridge-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Retrieve settings for a virtual line with the matching ID.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call get-caller-id", - "short": "Read Caller ID Settings for a Virtual Line", - "long": "Retrieve a virtual line's Caller ID settings.\n\nCaller ID settings control how a virtual line's information is displayed when making outgoing calls.\n\nRetrieving the caller ID settings for a virtual line requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-caller-id" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter, as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Retrieve settings for a virtual line with the matching ID.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call get-digit-patterns-profile", - "short": "Retrieve Digit Patterns for a Virtual Profile", - "long": "Get list of digit patterns for the virtual profile.\n\nDigit patterns are used to bypass permissions.\n\nRetrieving this list requires a full, user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-digit-patterns-profile" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Unique identifier for the virtual line.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call get-donotdisturb-settings", - "short": "Retrieve DoNotDisturb Settings for a Virtual Line", - "long": "Retrieve DoNotDisturb Settings for a Virtual Line.\n\nSilence incoming calls with the Do Not Disturb feature.\nWhen enabled, callers hear the busy signal.\n\nThis API requires a full, read-only or location administrator auth token with a scope of `telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-donotdisturb-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the virtual line resides.", - "hidden": true - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Unique identifier for the virtual line.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call get-ecbn-available-numbers", - "short": "Get Virtual Line ECBN Available Phone Numbers", - "long": "List standard numbers that can be assigned as a virtual line's call forward number.\nThese numbers are associated with the location of the virtual line specified in the request URL, can be active or inactive, and are assigned to an owning entity.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-ecbn-available-numbers" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of phone numbers returned to this maximum count. The default is 2000." - }, - { - "name": "org-id", - "type": "string", - "usage": "List numbers for this organization.", - "hidden": true - }, - { - "name": "owner-name", - "type": "string", - "usage": "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255." - }, - { - "name": "phone-number", - "type": "string", - "usage": "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching phone numbers. The default is 0." - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Unique identifier for the virtual line.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call get-fax-available-numbers", - "short": "Get Virtual Line Fax Message Available Phone Numbers", - "long": "List standard numbers that are available to be assigned as a virtual line's FAX message number.\nThese numbers are associated with the location of the virtual line specified in the request URL, can be active or inactive, and are unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-fax-available-numbers" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of phone numbers returned to this maximum count. The default is 2000." - }, - { - "name": "org-id", - "type": "string", - "usage": "List numbers for this organization.", - "hidden": true - }, - { - "name": "phone-number", - "type": "string", - "usage": "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching phone numbers. The default is 0." - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Unique identifier for the virtual line.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call get-forward", - "short": "Read Call Forwarding Settings for a Virtual Line", - "long": "Retrieve a virtual line's Call Forwarding settings.\n\nThree types of call forwarding are supported:\n\n+ Always - forwards all incoming calls to the destination you choose.\n\n+ When busy - forwards all incoming calls to the destination you chose while the phone is in use or the virtual line is busy.\n\n+ When no answer - forwarding only occurs when you are away or not answering your phone.\n\nIn addition, the Business Continuity feature will send calls to a destination of your choice if your phone is not connected to the network for any reason, such as a power outage, failed Internet connection, or wiring problem.\n\nRetrieving the call forwarding settings for a virtual line requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-forward" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Retrieve settings for a virtual line with the matching ID.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call get-forward-available-numbers", - "short": "Get Virtual Line Call Forward Available Phone Numbers", - "long": "List the service and standard PSTN numbers that are available to be assigned as a virtual line's call forward number.\nThese numbers are associated with the location of the virtual line specified in the request URL, can be active or inactive, and are assigned to an owning entity.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "extension", - "type": "string", - "usage": "Returns the list of PSTN phone numbers with the given `extension`." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-forward-available-numbers" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of phone numbers returned to this maximum count. The default is 2000." - }, - { - "name": "org-id", - "type": "string", - "usage": "List numbers for this organization.", - "hidden": true - }, - { - "name": "owner-name", - "type": "string", - "usage": "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255." - }, - { - "name": "phone-number", - "type": "string", - "usage": "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching phone numbers. The default is 0." - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Unique identifier for the virtual line.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call get-incoming-permission-settings", - "short": "Read Incoming Permission Settings for a Virtual Line", - "long": "Retrieve a virtual line's Incoming Permission settings.\n\nYou can change the incoming calling permissions for a virtual line if you want them to be different from your organization's default.\n\nRetrieving the incoming permission settings for a virtual line requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-incoming-permission-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Retrieve settings for a virtual line with the matching ID.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call get-intercept-available-numbers", - "short": "Get Virtual Line Call Intercept Available Phone Numbers", - "long": "List the service and standard PSTN numbers that are available to be assigned as a virtual line's call intercept number.\nThese numbers are associated with the location of the virtual line specified in the request URL, can be active or inactive, and are assigned to an owning entity.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "extension", - "type": "string", - "usage": "Returns the list of PSTN phone numbers with the given `extension`." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-intercept-available-numbers" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of phone numbers returned to this maximum count. The default is 2000." - }, - { - "name": "org-id", - "type": "string", - "usage": "List numbers for this organization.", - "hidden": true - }, - { - "name": "owner-name", - "type": "string", - "usage": "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255." - }, - { - "name": "phone-number", - "type": "string", - "usage": "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching phone numbers. The default is 0." - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Unique identifier for the virtual line.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call get-intercept-settings", - "short": "Read Call Intercept Settings for a Virtual Line", - "long": "Retrieves Virtual Line's Call Intercept settings.\n\nThe intercept feature gracefully takes a virtual line's phone out of service, while providing callers with informative announcements and alternative routing options. Depending on the service configuration, none, some, or all incoming calls to the specified virtual line are intercepted. Also depending on the service configuration, outgoing calls are intercepted or rerouted to another location.\n\nRetrieving the intercept settings for a virtual line requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-intercept-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Retrieve settings for a virtual line with the matching ID.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call get-music-hold-settings", - "short": "Retrieve Music On Hold Settings for a Virtual Line", - "long": "Retrieve the virtual line's music on hold settings.\n\nMusic on hold is played when a caller is put on hold, or the call is parked.\n\nRetrieving the music on hold settings for a virtual line requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-music-hold-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Retrieve settings for a virtual line with the matching ID.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call get-outgoing-permissions-settings", - "short": "Retrieve a virtual line's Outgoing Calling Permissions Settings", - "long": "Retrieve a virtual line's Outgoing Calling Permissions settings.\n\nOutgoing calling permissions regulate behavior for calls placed to various destinations and default to the local level settings. You can change the outgoing calling permissions for a virtual line if you want them to be different from your organization's default.\n\nRetrieving the outgoing permission settings for a virtual line requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-outgoing-permissions-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Retrieve settings for a virtual line with the matching ID.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call get-phone-number-assigned", - "short": "Get Phone Number assigned for a Virtual Line", - "long": "Get details on the assigned phone number and extension for the virtual line.\n\nRetrieving virtual line phone number details requires a full or user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-phone-number-assigned" - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve virtual line settings from this organization.", - "hidden": true - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Retrieve settings for a virtual line with the matching ID.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call get-privacy-settings", - "short": "Get a Virtual Line's Privacy Settings", - "long": "Get a virtual line's privacy settings for the specified virtual line ID.\n\nThe privacy feature enables the virtual line's line to be monitored by others and determine if they can be reached by Auto Attendant services.\n\nRetrieving the privacy settings for a virtual line requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-privacy-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Retrieve settings for a virtual line with the matching ID.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call get-push-to-talk-settings", - "short": "Read Push-to-Talk Settings for a Virtual Line", - "long": "Retrieve a virtual line's Push-to-Talk settings.\n\nPush-to-Talk allows the use of desk phones as either a one-way or two-way intercom that connects people in different parts of your organization.\n\nRetrieving the Push-to-Talk settings for a virtual line requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-push-to-talk-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Retrieve settings for a virtual line with the matching ID.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call get-recording", - "short": "Read Call Recording Settings for a Virtual Line", - "long": "Retrieve Virtual Line's Call Recording settings.\n\nThe Call Recording feature provides a hosted mechanism to record the calls placed and received on the Carrier platform for replay and archival. This feature is helpful for quality assurance, security, training, and more.\n\nThis API requires a full or user administrator auth token with the `spark-admin:telephony_config_read` scope.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-recording" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Unique identifier for the virtual line.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call get-specified-digit-pattern-profile", - "short": "Retrieve Specified Digit Pattern Details for a Virtual Profile", - "long": "Get the specified digit pattern for the virtual profile​.\n\nDigit patterns are used to bypass permissions.\n\nRetrieving the digit pattern details requires a full, user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "digit-pattern-id", - "type": "string", - "usage": "Unique identifier for the digit pattern.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-specified-digit-pattern-profile" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Unique identifier for the virtual line.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call get-transfer-numbers", - "short": "Retrieve Transfer Numbers for a Virtual Line", - "long": "Retrieve the virtual line's transfer numbers.\n\nWhen calling a specific call type, this virtual line will be automatically transferred to another number. The virtual line assigned to the Auto Transfer Number can then approve the call and send it through or reject the call type. You can add up to 3 numbers.\n\nThis API requires a full, user or read-only administrator auth token with a scope of spark-admin:telephony_config_read", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-transfer-numbers" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Unique identifier for the virtual line.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call get-voicemail", - "short": "Read Voicemail Settings for a Virtual Line", - "long": "Retrieve a virtual line's voicemail settings.\n\nThe voicemail feature transfers callers to voicemail based on your settings. You can then retrieve voice messages via voicemail.\n\nOptionally, notifications can be sent to a mobile phone via text or email. These notifications will not include the voicemail files.\n\nRetrieving the voicemail settings for a virtual line requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-voicemail" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Retrieve settings for a virtual line with the matching ID.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call get-waiting-settings", - "short": "Read Call Waiting Settings for a Virtual Line", - "long": "Retrieve a virtual line's Call Waiting settings.\n\nWith this feature, a virtual line can place an active call on hold and answer an incoming call. When enabled, while you are on an active call, a tone alerts you of an incoming call and you can choose to answer or ignore the call.\n\nRetrieving the call waiting settings for a virtual line requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-waiting-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Retrieve settings for a virtual line with the matching ID.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call list", - "short": "Read the List of Virtual Lines", - "long": "List all Virtual Lines for the organization.\n\nVirtual line is a capability in Webex Calling that allows administrators to configure multiple lines to Webex Calling users.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "has-device-assigned", - "type": "string", - "usage": "If `true`, includes only virtual lines with devices assigned. When not explicitly specified, the default includes both virtual lines with devices assigned and not assigned." - }, - { - "name": "has-dn-assigned", - "type": "string", - "usage": "If `true`, includes only virtual lines with an assigned directory number, also known as a Dn. When not explicitly specified, the default includes both virtual lines with a Dn assigned and not assigned." - }, - { - "name": "has-extension-assigned", - "type": "string", - "usage": "If `true`, includes only virtual lines with an extension assigned. When not explicitly specified, the default includes both virtual lines with extension assigned and not assigned." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "id", - "type": "string", - "usage": "Return the list of virtual lines matching these virtualLineIds. Example for multiple values - `?id=id1&id=id2`." - }, - { - "name": "location-id", - "type": "string", - "usage": "Return the list of virtual lines matching these location ids. Example for multiple values - `?locationId=locId1&locationId=locId2`." - }, - { - "name": "location-name", - "type": "string", - "usage": "Return the list of virtual lines matching the location names. Example for multiple values - `?locationName=loc1&locationName=loc2`." - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of objects returned to this maximum count." - }, - { - "name": "order", - "type": "string", - "usage": "Return the list of virtual lines based on the order. Default sort will be in an Ascending order. Maximum 3 orders allowed at a time. Example for multiple values - `?order=order1&order=order2`." - }, - { - "name": "org-id", - "type": "string", - "usage": "List virtual lines for this organization.", - "hidden": true - }, - { - "name": "owner-name", - "type": "string", - "usage": "Return the list of virtual lines matching these owner names. Example for multiple values - `?ownerName=name1&ownerName=name2`." - }, - { - "name": "phone-number", - "type": "string", - "usage": "Return the list of virtual lines matching these phone numbers. Example for multiple values - `?phoneNumber=number1&phoneNumber=number2`." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching objects." - } - ] - }, - { - "path": "webex calling virtual-line-call list-devices-assigned", - "short": "Get List of Devices assigned for a Virtual Line", - "long": "Retrieve Device details assigned for a virtual line.\n\nVirtual line is a capability in Webex Calling that allows administrators to configure multiple lines to Webex Calling users.\n\nRetrieving the assigned device detials for a virtual line requires a full or user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-devices-assigned" - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve virtual line settings from this organization.", - "hidden": true - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Retrieve settings for a virtual line with the matching ID.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call list-networks-handsets", - "short": "Get List of DECT Networks Handsets for a Virtual Line", - "long": "
Not supported for Webex for Government (FedRAMP)
\n\nRetrieve DECT Network details assigned for a virtual line.\n\nVirtual line is a capability in Webex Calling that allows administrators to configure multiple lines to Webex Calling users.\n\nRetrieving the assigned device detials for a virtual line requires a full or user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-networks-handsets" - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve virtual line settings from this organization.", - "hidden": true - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Retrieve settings for a virtual line with the matching ID.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call reset-voicemail-pin", - "short": "Reset Voicemail PIN for a Virtual Line", - "long": "Reset a voicemail PIN for a virtual line.\n\nThe voicemail feature transfers callers to voicemail based on your settings. You can then retrieve voice messages via Voicemail. A voicemail PIN is used to retrieve your voicemail messages.\n\nUpdating the voicemail pin for a virtual line requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**NOTE**: This API is expected to have an empty request body and Content-Type header should be set to `application/json`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for reset-voicemail-pin" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Retrieve settings for a virtual line with the matching ID.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call update", - "short": "Update a Virtual Line", - "long": "Update the designated Virtual Line.\n\nVirtual line is a capability in Webex Calling that allows administrators to configure multiple lines to Webex Calling users.\n\nUpdating a virtual line requires a full or user or location administrator auth token with a scope of `spark-admin:telephony_config_write` and `identity:contacts_rw`.", - "flags": [ - { - "name": "announcement-language", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "caller-id-first-name", - "type": "string" - }, - { - "name": "caller-id-last-name", - "type": "string" - }, - { - "name": "caller-id-number", - "type": "string" - }, - { - "name": "display-name", - "type": "string" - }, - { - "name": "extension", - "type": "string" - }, - { - "name": "first-name", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "last-name", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "Update virtual line settings from this organization.", - "hidden": true - }, - { - "name": "phone-number", - "type": "string" - }, - { - "name": "time-zone", - "type": "string" - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Update settings for a virtual line with the matching ID.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call update-access-codes", - "short": "Modify Access Codes for a Virtual Line", - "long": "Modify a virtual line's access codes.\n\nAccess codes are used to bypass permissions.\n\nThis API requires a full or user administrator auth token with the `spark-admin:telephony_config_write` scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "delete-codes", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-access-codes" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Unique identifier for the virtual line.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call update-agent-caller-id", - "short": "Modify Agent's Caller ID Information", - "long": "Modify Agent's Caller ID Information.\n\nEach Agent is able to set their outgoing Caller ID as either the designated Call Queue's Caller ID or the Hunt Group's Caller ID or their own configured Caller ID.\nThis API requires a full or user administrator auth token with the `spark-admin:telephony_config_write` scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-agent-caller-id" - }, - { - "name": "selected-caller-id", - "type": "string" - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Unique identifier for the Virtual Line.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call update-barge-settings", - "short": "Configure Barge In Settings for a Virtual Line", - "long": "Configure a virtual line's barge in settings.\n\nThe Barge In feature enables you to use a Feature Access Code (FAC) to answer a call that was directed to another subscriber, or barge-in on the call if it was already answered. Barge In can be used across locations.\n\nUpdating the barge in settings for a virtual line requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-barge-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "tone-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Retrieve settings for a virtual line with the matching ID.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call update-bridge-settings", - "short": "Configure Call Bridge Settings for a Virtual Line", - "long": "Configure a virtual line's call bridge settings.\n\nUpdating the call bridge settings for a virtual line requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-bridge-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Retrieve settings for a virtual line with the matching ID.", - "required": true - }, - { - "name": "warning-tone-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex calling virtual-line-call update-busy-voicemail-greeting", - "short": "Upload Busy Voicemail Greeting for Virtual Line", - "long": "Upload a busy voicemail greeting for a virtual line.\n\nExamples:\n webex calling virtual-line-call update-busy-voicemail-greeting --virtual-line-id --file greeting.wav", - "flags": [ - { - "name": "file", - "type": "string", - "usage": "Path to WAV file to upload", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-busy-voicemail-greeting" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization ID", - "hidden": true - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "virtual-line-id value", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call update-caller-id", - "short": "Configure Caller ID Settings for a Virtual Line", - "long": "Configure a virtual line's Caller ID settings.\n\nCaller ID settings control how a virtual line's information is displayed when making outgoing calls.\n\nUpdating the caller ID settings for a virtual line requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-caller-id" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter, as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Update settings for a virtual line with the matching ID.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call update-digit-pattern-control-profile", - "short": "Modify the Digit Pattern Category Control Settings for a Virtual Profile", - "long": "Modifies whether this virtual profile uses the specified digit patterns when placing outbound calls or not.\n\nUpdating the digit pattern category control settings requires a full or user or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-digit-pattern-control-profile" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "use-custom-digit-patterns", - "type": "bool", - "default": "false" - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Unique identifier for the virtual line.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call update-digit-pattern-profile", - "short": "Modify a Digit Pattern for a Virtual Profile", - "long": "Modify a digit patterns for a virtual profile.\n\nDigit patterns are used to bypass permissions.\n\nUpdating the digit pattern requires a full or user or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "action", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "digit-pattern-id", - "type": "string", - "usage": "Unique identifier for the digit pattern.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-digit-pattern-profile" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "pattern", - "type": "string" - }, - { - "name": "transfer-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Unique identifier for the virtual line.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call update-directory-search", - "short": "Update Directory search for a Virtual Line", - "long": "Update the directory search for a designated Virtual Line.\n\nVirtual line is a capability in Webex Calling that allows administrators to configure multiple lines to Webex Calling users.\n\nUpdating Directory search for a virtual line requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write` and `identity:contacts_rw`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-directory-search" - }, - { - "name": "org-id", - "type": "string", - "usage": "Update virtual line settings from this organization.", - "hidden": true - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Update settings for a virtual line with the matching ID.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call update-donotdisturb-settings", - "short": "Modify DoNotDisturb Settings for a Virtual Line", - "long": "Modify DoNotDisturb Settings for a Virtual Line.\n\nSilence incoming calls with the Do Not Disturb feature.\nWhen enabled, callers hear the busy signal.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:telephony_config_write` scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-donotdisturb-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the virtual line resides.", - "hidden": true - }, - { - "name": "ring-splash-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Unique identifier for the virtual line.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call update-forward", - "short": "Configure Call Forwarding Settings for a Virtual Line", - "long": "Configure a virtual line's Call Forwarding settings.\n\nThree types of call forwarding are supported:\n\n+ Always - forwards all incoming calls to the destination you choose.\n\n+ When busy - forwards all incoming calls to the destination you chose while the phone is in use or the virtual line is busy.\n\n+ When no answer - forwarding only occurs when you are away or not answering your phone.\n\nIn addition, the Business Continuity feature will send calls to a destination of your choice if your phone is not connected to the network for any reason, such as a power outage, failed Internet connection, or wiring problem.\n\nUpdating the call forwarding settings for a virtual line requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-forward" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Update settings for a virtual line with the matching ID.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call update-incoming-permission-settings", - "short": "Configure Incoming Permission Settings for a Virtual Line", - "long": "Configure a virtual line's Incoming Permission settings.\n\nYou can change the incoming calling permissions for a virtual line if you want them to be different from your organization's default.\n\nUpdating the incoming permission settings for a virtual line requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "collect-calls-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "external-transfer", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-incoming-permission-settings" - }, - { - "name": "internal-calls-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "use-custom-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Update settings for a virtual line with the matching ID.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call update-intercept-greeting", - "short": "Upload Call Intercept Greeting for Virtual Line", - "long": "Upload a call intercept announcement greeting for a virtual line.\n\nExamples:\n webex calling virtual-line-call update-intercept-greeting --virtual-line-id --file greeting.wav", - "flags": [ - { - "name": "file", - "type": "string", - "usage": "Path to WAV file to upload", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-intercept-greeting" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization ID", - "hidden": true - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "virtual-line-id value", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call update-intercept-settings", - "short": "Configure Call Intercept Settings for a Virtual Line", - "long": "Configures a virtual line's Call Intercept settings.\n\nThe intercept feature gracefully takes a virtual line's phone out of service, while providing callers with informative announcements and alternative routing options. Depending on the service configuration, none, some, or all incoming calls to the specified virtual line are intercepted. Also depending on the service configuration, outgoing calls are intercepted or rerouted to another location.\n\nUpdating the intercept settings for a virtual line requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-intercept-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Update settings for a virtual line with the matching ID.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call update-music-hold-settings", - "short": "Configure Music On Hold Settings for a Virtual Line", - "long": "Configure a virtual line's music on hold settings.\n\nMusic on hold is played when a caller is put on hold, or the call is parked.\n\nTo configure music on hold settings for a virtual line, music on hold setting must be enabled for this location.\n\nUpdating the music on hold settings for a virtual line requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-music-hold-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Retrieve settings for a virtual line with the matching ID.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call update-no-answer-voicemail-greeting", - "short": "Upload No-Answer Voicemail Greeting for Virtual Line", - "long": "Upload a no-answer voicemail greeting for a virtual line.\n\nExamples:\n webex calling virtual-line-call update-no-answer-voicemail-greeting --virtual-line-id --file greeting.wav", - "flags": [ - { - "name": "file", - "type": "string", - "usage": "Path to WAV file to upload", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-no-answer-voicemail-greeting" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization ID", - "hidden": true - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "virtual-line-id value", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call update-outgoing-permissions-settings", - "short": "Modify a virtual line's Outgoing Calling Permissions Settings", - "long": "Modify a virtual line's Outgoing Calling Permissions settings.\n\nOutgoing calling permissions regulate behavior for calls placed to various destinations and default to the local level settings. You can change the outgoing calling permissions for a virtual line if you want them to be different from your organization's default.\n\nUpdating the outgoing permission settings for a virtual line requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-outgoing-permissions-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Update settings for a virtual line with the matching ID.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call update-privacy-settings", - "short": "Configure a Virtual Line's Privacy Settings", - "long": "Configure a virtual line's privacy settings for the specified virtual line ID.\n\nThe privacy feature enables the virtual line's line to be monitored by others and determine if they can be reached by Auto Attendant services.\n\nUpdating the privacy settings for a virtual line requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "aa-extension-dialing-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "aa-naming-dialing-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "enable-phone-status-directory-privacy", - "type": "bool", - "default": "false" - }, - { - "name": "enable-phone-status-pickup-barge-in-privacy", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-privacy-settings" - }, - { - "name": "monitoring-agents", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Retrieve settings for a virtual line with the matching ID.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call update-push-to-talk-settings", - "short": "Configure Push-to-Talk Settings for a Virtual Line", - "long": "Configure a virtual line's Push-to-Talk settings.\n\nPush-to-Talk allows the use of desk phones as either a one-way or two-way intercom that connects people in different parts of your organization.\n\nUpdating the Push-to-Talk settings for a virtual line requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "access-type", - "type": "string" - }, - { - "name": "allow-auto-answer", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "connection-type", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-push-to-talk-settings" - }, - { - "name": "members", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Retrieve settings for a virtual line with the matching ID.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call update-recording", - "short": "Configure Call Recording Settings for a Virtual Line", - "long": "Configure virtual line's Call Recording settings.\n\nThe Call Recording feature provides a hosted mechanism to record the calls placed and received on the Carrier platform for replay and archival. This feature is helpful for quality assurance, security, training, and more.\n\nThis API requires a full or user administrator auth token with the `spark-admin:telephony_config_write` scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-recording" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the virtual profile resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Unique identifier for the virtual line.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call update-transfer-numbers", - "short": "Modify Transfer Numbers for a Virtual Line", - "long": "Modify a virtual line's transfer numbers.\n\nWhen calling a specific call type, this virtual line will be automatically transferred to another number. The virtual line assigned the Auto Transfer Number can then approve the call and send it through or reject the call type. You can add up to 3 numbers.\n\nThis API requires a full or user administrator auth token with the `spark-admin:telephony_config_write` scope.", - "flags": [ - { - "name": "auto-transfer-number1", - "type": "string" - }, - { - "name": "auto-transfer-number2", - "type": "string" - }, - { - "name": "auto-transfer-number3", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-transfer-numbers" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "use-custom-transfer-numbers", - "type": "bool", - "default": "false" - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Unique identifier for the virtual line.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call update-voicemail", - "short": "Configure Voicemail Settings for a Virtual Line", - "long": "Configure a virtual line's voicemail settings.\n\nThe voicemail feature transfers callers to voicemail based on your settings. You can then retrieve voice messages via voicemail.\n\nOptionally, notifications can be sent to a mobile phone via text or email. These notifications will not include the voicemail files.\n\nUpdating the voicemail settings for a virtual line requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-voicemail" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Retrieve settings for a virtual line with the matching ID.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call update-voicemail-passcode", - "short": "Modify a virtual line's voicemail passcode", - "long": "Modify a virtual line's voicemail passcode.\n\nModifying a virtual line's voicemail passcode requires a full administrator, user administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-voicemail-passcode" - }, - { - "name": "org-id", - "type": "string", - "usage": "Modify voicemail passcode for a virtual line in this organization.", - "hidden": true - }, - { - "name": "passcode", - "type": "string" - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Modify voicemail passcode for this virtual line.", - "required": true - } - ] - }, - { - "path": "webex calling virtual-line-call update-waiting-settings", - "short": "Configure Call Waiting Settings for a Virtual Line", - "long": "Configure a virtual line's Call Waiting settings.\n\nWith this feature, a virtual line can place an active call on hold and answer an incoming call. When enabled, while you are on an active call, a tone alerts you of an incoming call and you can choose to answer or ignore the call.\n\nUpdating the call waiting settings for a virtual line requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-waiting-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the virtual line resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access API.", - "hidden": true - }, - { - "name": "virtual-line-id", - "type": "string", - "usage": "Update settings for a virtual line with the matching ID.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call", - "short": "WorkspaceCall commands" - }, - { - "path": "webex calling workspace-call assign-unassign-numbers-associated", - "short": "Assign or Unassign numbers associated with a specific workspace", - "long": "Assign or unassign alternate phone numbers associated with a specific workspace.\n\nEach location has a set of phone numbers that can be assigned to people, workspaces, or features. Phone numbers must follow the E.164 format for all countries, except for the United States, which can also follow the National format. Active phone numbers are in service.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for assign-unassign-numbers-associated" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call create-access-codes", - "short": "Create Access Codes for a Workspace", - "long": "Create new Access codes for the given workspace.\n\nAccess codes are used to bypass permissions.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with `spark:workspaces_write` scope can be used to update workspace settings.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "code", - "type": "string" - }, - { - "name": "description", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-access-codes" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call create-digit-pattern", - "short": "Create Digit Pattern for a Workspace", - "long": "Create a new digit pattern for the given workspace.\n\nDigit patterns are used to bypass permissions.\n\nThis API requires a full or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "action", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-digit-pattern" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "pattern", - "type": "string" - }, - { - "name": "transfer-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call create-priority-alert", - "short": "Create Priority Alert Criteria for a Workspace", - "long": "Create Priority Alert Criteria Settings for a Workspace.\n\nThe priority alert feature enables administrators to configure priority alert settings for a professional workspace.\nPriority Alert Criteria (Schedules) can also be set up to alert these phones during certain times of the day or days of the week.\n\nThis API requires a full, user, or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - "flags": [ - { - "name": "anonymous-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calls-from", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-priority-alert" - }, - { - "name": "notification-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "phone-numbers", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "schedule-level", - "type": "string" - }, - { - "name": "schedule-name", - "type": "string" - }, - { - "name": "schedule-type", - "type": "string" - }, - { - "name": "unavailable-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call create-selective-accept", - "short": "Create Selective Accept Criteria for a Workspace", - "long": "Create Selective Accept Criteria Settings for a Workspace.\n\nWith the Selective Accept feature, you can reject calls at specific times from specific callers. This setting takes precedence over Selectively Accept Calls.\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - "flags": [ - { - "name": "accept-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "anonymous-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calls-from", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-selective-accept" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "phone-numbers", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "schedule-level", - "type": "string" - }, - { - "name": "schedule-name", - "type": "string" - }, - { - "name": "schedule-type", - "type": "string" - }, - { - "name": "unavailable-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call create-selective-forward", - "short": "Create Selective Forward Criteria for a Workspace", - "long": "Create Selective Forward Call Criteria Settings for a Workspace.\n\nWith the Selective Forward feature, you can forward calls at specific times from specific callers. This setting takes precedence over call forwarding.\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - "flags": [ - { - "name": "anonymous-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calls-from", - "type": "string" - }, - { - "name": "destination-voicemail-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "forward-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "forward-to-phone-number", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-selective-forward" - }, - { - "name": "numbers", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "schedule-level", - "type": "string" - }, - { - "name": "schedule-name", - "type": "string" - }, - { - "name": "schedule-type", - "type": "string" - }, - { - "name": "unavailable-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call create-selective-reject", - "short": "Create Selective Reject Criteria for a Workspace", - "long": "Create Selective Reject Criteria Settings for a Workspace.\n\nWith the Selective Reject feature, you can reject calls at specific times from specific callers. This setting takes precedence over Selectively Accept Calls.\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - "flags": [ - { - "name": "anonymous-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calls-from", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-selective-reject" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "phone-numbers", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "reject-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "schedule-level", - "type": "string" - }, - { - "name": "schedule-name", - "type": "string" - }, - { - "name": "schedule-type", - "type": "string" - }, - { - "name": "unavailable-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call create-sequential-ring", - "short": "Create Sequential Ring Criteria for a Workspace", - "long": "Create sequential ring criteria for a workspace.\n\nThe sequential ring feature enables you to create a list of up to five phone numbers. When the workspace receives incoming calls, these numbers will ring one after another.\nThe sequential ring criteria specify settings such as schedule and incoming numbers for which to sequentially ring or not.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - "flags": [ - { - "name": "anonymous-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calls-from", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-sequential-ring" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "phone-numbers", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "ring-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "schedule-level", - "type": "string" - }, - { - "name": "schedule-name", - "type": "string" - }, - { - "name": "schedule-type", - "type": "string" - }, - { - "name": "unavailable-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call create-simultaneous-ring", - "short": "Create Simultaneous Ring Criteria for a Workspace", - "long": "Create Simultaneous Ring Criteria Settings for a Workspace.\n\nThe Simultaneous Ring feature allows you to configure your office phone and other phones of your choice to ring simultaneously.\nSimultaneous Ring Criteria (Schedules) can also be set up to ring these phones during certain times of the day or days of the week.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - "flags": [ - { - "name": "anonymous-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calls-from", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-simultaneous-ring" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "phone-numbers", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "ring-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "schedule-level", - "type": "string" - }, - { - "name": "schedule-name", - "type": "string" - }, - { - "name": "schedule-type", - "type": "string" - }, - { - "name": "unavailable-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call delete-access-code", - "short": "Delete a Specific Access Code for a Workspace", - "long": "Deletes a specific access code for the given workspace.\n\nAccess codes are used to bypass permissions.\n\nThis API requires a full, device or location administrator auth token with the scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "access-code", - "type": "string", - "usage": "Access code for outgoing calls.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-access-code" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call delete-all-access-codes", - "short": "Delete all Access Codes for a Workspace", - "long": "Deletes all Access codes for the given workspace.\n\nAccess codes are used to bypass permissions.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with `spark:workspaces_write` scope can be used to update workspace settings.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-all-access-codes" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call delete-all-digit-patterns", - "short": "Delete all Digit Patterns for a Workspace", - "long": "Delete all digit patterns for a Workspace.\n\nDigit patterns are used to bypass permissions.\n\nThis API requires a full or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-all-digit-patterns" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call delete-digit-pattern", - "short": "Delete a Digit Pattern for the Workspace", - "long": "Delete a digit pattern for a Workspace.\n\nDigit patterns are used to bypass permissions.\n\nThis API requires a full or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "digit-pattern-id", - "type": "string", - "usage": "Unique identifier for the digit pattern.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-digit-pattern" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call delete-priority-alert", - "short": "Delete Priority Alert Criteria for a Workspace", - "long": "Delete Priority Alert criteria Settings for a workspace.\n\nThe priority alert feature enables administrators to configure priority alert settings for a professional workspace.\nPriority Alert Criteria (Schedules) can also be set up to alert these phones during certain times of the day or days of the week.\n\nThis API requires a full, user, or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-priority-alert" - }, - { - "name": "id", - "type": "string", - "usage": "Unique identifier for the criteria.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call delete-selective-accept", - "short": "Delete Selective Accept Criteria for a Workspace", - "long": "Delete Selective Accept criteria Settings for a workspace.\n\nWith the Selective Accept feature, you can accept calls at specific times from specific callers.\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-selective-accept" - }, - { - "name": "id", - "type": "string", - "usage": "Unique identifier for the criteria.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call delete-selective-forward", - "short": "Delete Selective Forward Criteria for a Workspace", - "long": "Delete Selective Forward Call criteria Settings for a workspace.\n\nWith the Selective Forward feature, you can forward calls at specific times from specific callers. This setting takes precedence over call forwarding.\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-selective-forward" - }, - { - "name": "id", - "type": "string", - "usage": "Unique identifier for the criteria.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call delete-selective-reject", - "short": "Delete Selective Reject Criteria for a Workspace", - "long": "Delete Selective Reject criteria Settings for a workspace.\n\nWith the Selective Reject feature, you can reject calls at specific times from specific callers. This setting takes precedence over Selectively Accept Calls.\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-selective-reject" - }, - { - "name": "id", - "type": "string", - "usage": "Unique identifier for the criteria.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call delete-sequential-ring", - "short": "Delete Sequential Ring Criteria for a Workspace", - "long": "Delete sequential ring criteria for a workspace.\n\nThe sequential ring feature enables you to create a list of up to five phone numbers. When the workspace receives incoming calls, these numbers will ring one after another.\nThe sequential ring criteria specify settings such as schedule and incoming numbers for which to sequentially ring or not.\n\nThis API requires a full, read-only or location administrator auth token with a scope of `spark-admin:workspaces_read` to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-sequential-ring" - }, - { - "name": "id", - "type": "string", - "usage": "Unique identifier for the criteria.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call delete-simultaneous-ring", - "short": "Delete Simultaneous Ring Criteria for a Workspace", - "long": "Delete simultaneous ring criteria Settings for a workspace.\n\nThe Simultaneous Ring feature allows you to configure your office phone and other phones of your choice to ring simultaneously.\nSimultaneous Ring Criteria (Schedules) can also be set up to ring these phones during certain times of the day or days of the week.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-simultaneous-ring" - }, - { - "name": "id", - "type": "string", - "usage": "Unique identifier for the criteria.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call get-access-codes", - "short": "Retrieve Access Codes for a Workspace", - "long": "Retrieve Access codes for a Workspace.\n\nAccess codes are used to bypass permissions.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with `spark:workspaces_read` scope can be used to read workspace settings.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-access-codes" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call get-all-digit-patterns", - "short": "Retrieve all Digit Patterns for a Workspace", - "long": "Retrieve all digit patterns for a Workspace.\n\nDigit patterns are used to bypass permissions.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-all-digit-patterns" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call get-anonymous-settings", - "short": "Retrieve Anonymous Call Settings for a Workspace", - "long": "Retrieve Anonymous Call Settings for a Workspace.\n\nAnonymous Call Rejection, when enabled, blocks all incoming calls from unidentified or blocked caller IDs.\n\nThis API requires a full, read-only or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with a scope of `spark:workspaces_read` to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-anonymous-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call get-available-numbers", - "short": "Get Workspace Available Phone Numbers", - "long": "List standard numbers that are available to be assigned as a workspace's phone number.\nBy default, this API returns numbers from all locations that are unassigned. To select the suitable number for assignment, ensure the workspace's location ID is provided as the `locationId` request parameter.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-available-numbers" - }, - { - "name": "location-id", - "type": "string", - "usage": "Return the list of phone numbers for this location within the given organization. The maximum length is 36." - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of phone numbers returned to this maximum count. The default is 2000." - }, - { - "name": "org-id", - "type": "string", - "usage": "List numbers for this organization.", - "hidden": true - }, - { - "name": "phone-number", - "type": "string", - "usage": "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching phone numbers. The default is 0." - } - ] - }, - { - "path": "webex calling workspace-call get-barge-settings", - "short": "Retrieve Barge In Call Settings for a Workspace", - "long": "Retrieve Barge In Call Settings for a Workspace.\n\nBarge In, when enabled, allows you to use the Feature Access Code (FAC) on your desk phone to answer someone else’s phone call or barge in on a call they’ve already answered.\n\nThis API requires a full, read-only or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with a scope of `spark:workspaces_read` to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-barge-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call get-bridge-warning-tone", - "short": "Retrieve Call Bridge Warning Tone Settings for a Workspace", - "long": "Retrieve Call Bridge Warning Tone Settings for a Workspace.\n\nCall Bridge Warning Tone, when enabled, ensures that users hear a warning tone when other users bridge into an active call on the same shared line appearance.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with `spark:workspaces_read` scope can be used to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-bridge-warning-tone" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call get-caller-id", - "short": "Read Caller ID Settings for a Workspace", - "long": "Retrieve a workspace's Caller ID settings.\n\nCaller ID settings control how a workspace's information is displayed when making outgoing calls.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with `spark:workspaces_read` scope can be used to read workspace settings.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-caller-id" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call get-digit-pattern", - "short": "Retrieve a Digit Pattern details for the Workspace", - "long": "Retrieve the designated digit pattern.\n\nDigit patterns are used to bypass permissions.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "digit-pattern-id", - "type": "string", - "usage": "Unique identifier for the digit pattern.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-digit-pattern" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call get-donotdisturb-settings", - "short": "Retrieve DoNotDisturb Settings for a Workspace", - "long": "Retrieve DoNotDisturb Settings for a Workspace.\n\nSilence incoming calls with the Do Not Disturb feature.\nWhen enabled, callers hear the busy signal.\n\nThis API requires a full, read-only or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with a scope of `spark:workspaces_read` to read workspace settings.\n\n**NOTE**: This API is available for professional and common area licensed workspaces.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-donotdisturb-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call get-ecbn-available-numbers", - "short": "Get Workspace ECBN Available Phone Numbers", - "long": "List standard numbers that are available to be assigned as a workspace's emergency callback number.\nThese numbers are associated with the location of the workspace specified in the request URL, can be active or inactive, and are assigned to an owning entity.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-ecbn-available-numbers" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of phone numbers returned to this maximum count. The default is 2000." - }, - { - "name": "org-id", - "type": "string", - "usage": "List numbers for this organization.", - "hidden": true - }, - { - "name": "owner-name", - "type": "string", - "usage": "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255." - }, - { - "name": "phone-number", - "type": "string", - "usage": "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching phone numbers. The default is 0." - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call get-fax-available-numbers", - "short": "Get Workspace Fax Message Available Phone Numbers", - "long": "List standard numbers that are available to be assigned as a workspace's FAX message number.\nThese numbers are associated with the location of the workspace specified in the request URL, can be active or inactive, and are unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.\n\n
Only available for workspaces with the professional license entitlement.
", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-fax-available-numbers" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of phone numbers returned to this maximum count. The default is 2000." - }, - { - "name": "org-id", - "type": "string", - "usage": "List numbers for this organization.", - "hidden": true - }, - { - "name": "phone-number", - "type": "string", - "usage": "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching phone numbers. The default is 0." - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call get-forward", - "short": "Retrieve Call Forwarding Settings for a Workspace", - "long": "Retrieve Call Forwarding Settings for a Workspace.\n\nThree types of call forwarding are supported:\n\n+ Always - forwards all incoming calls to the destination you choose.\n\n+ When busy, forwards all incoming calls to the destination you chose while the phone is in use or the person is busy.\n\n+ When no answer, forwarding only occurs when you are away or not answering your phone.\n\nIn addition, the Business Continuity feature will send calls to a destination of your choice if your phone is not connected to the network for any reason, such as a power outage, failed Internet connection, or wiring problem.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with `spark:workspaces_read` scope can be used to read workspace settings.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-forward" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call get-forward-available-numbers", - "short": "Get Workspace Call Forward Available Phone Numbers", - "long": "List the service and standard PSTN numbers that are available to be assigned as a workspace's call forward number.\nThese numbers are associated with the location of the workspace specified in the request URL, can be active or inactive, and are assigned to an owning entity.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "extension", - "type": "string", - "usage": "Returns the list of PSTN phone numbers with the given `extension`." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-forward-available-numbers" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of phone numbers returned to this maximum count. The default is 2000." - }, - { - "name": "org-id", - "type": "string", - "usage": "List numbers for this organization.", - "hidden": true - }, - { - "name": "owner-name", - "type": "string", - "usage": "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255." - }, - { - "name": "phone-number", - "type": "string", - "usage": "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching phone numbers. The default is 0." - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call get-incoming-permission-settings", - "short": "Retrieve Incoming Permission Settings for a Workspace", - "long": "Retrieve Incoming Permission settings for a Workspace.\n\nIncoming permission settings allow modifying permissions for a workspace that can be different from the organization's default to manage different call types.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with `spark:workspaces_read` scope can be used to read workspace settings.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-incoming-permission-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call get-intercept-available-numbers", - "short": "Get Workspace Call Intercept Available Phone Numbers", - "long": "List the service and standard PSTN numbers that are available to be assigned as a workspace's call intercept number.\nThese numbers are associated with the location of the workspace specified in the request URL, can be active or inactive, and are assigned to an owning entity.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "extension", - "type": "string", - "usage": "Returns the list of PSTN phone numbers with the given `extension`." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-intercept-available-numbers" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of phone numbers returned to this maximum count. The default is 2000." - }, - { - "name": "org-id", - "type": "string", - "usage": "List numbers for this organization.", - "hidden": true - }, - { - "name": "owner-name", - "type": "string", - "usage": "Return the list of phone numbers that are owned by the given `ownerName`. Maximum length is 255." - }, - { - "name": "phone-number", - "type": "string", - "usage": "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching phone numbers. The default is 0." - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call get-intercept-settings", - "short": "Read Call Intercept Settings for a Workspace", - "long": "Retrieves Workspace's Call Intercept Settings\n\nThe intercept feature gracefully takes a workspace's phone out of service, while providing callers with informative announcements and alternative routing options. Depending on the service configuration, none, some, or all incoming calls to the specified workspace are intercepted. Also depending on the service configuration, outgoing calls are intercepted or rerouted to another location.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with `spark:workspaces_read` scope can be used to read workspace settings.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-intercept-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call get-monitoring-settings", - "short": "Retrieve Monitoring Settings for a Workspace", - "long": "Retrieves Monitoring settings for a Workspace.\n\nAllow workspaces to monitor the line status of specified agents, workspaces, or call park extensions. The line status indicates if a monitored agent or a workspace is on a call, or if a call has been parked on the monitored call park extension.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with `spark:workspaces_read` scope can be used to read workspace settings.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-monitoring-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call get-music-hold-settings", - "short": "Retrieve Music On Hold Settings for a Workspace", - "long": "Retrieve Music On Hold Settings for a Workspace.\n\nMusic on hold is played when a caller is put on hold, or the call is parked.\n\nRetrieving a workspace's music on hold settings requires a full, device or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-music-hold-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call get-outgoing-permission-settings", - "short": "Retrieve Outgoing Permission Settings for a Workspace", - "long": "Retrieve Outgoing Permission settings for a Workspace.\n\nTurn on outgoing call settings for this workspace to override the calling settings from the location that are used by default.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with `spark:workspaces_read` scope can be used to read workspace settings.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-outgoing-permission-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call get-policy-settings", - "short": "Read Call Policy Settings for a Workspace", - "long": "Retrieve a workspace Call Policies settings.\n\nThe call policy feature enables administrator to configure call policy settings such as Connected Line Identification Privacy on Redirected Calls for a professional workspace.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:workspaces_read` scope can be used to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-policy-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call get-priority-alert", - "short": "Retrieve Priority Alert Criteria for a Workspace", - "long": "Retrieve Priority Alert Criteria Settings for a Workspace.\n\nThe priority alert feature enables administrators to configure priority alert settings for a professional workspace.\nPriority Alert Criteria (Schedules) can also be set up to alert these phones during certain times of the day or days of the week.\n\nThis API requires a full, user, or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with a scope of `spark:workspaces_read` to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-priority-alert" - }, - { - "name": "id", - "type": "string", - "usage": "Unique identifier for the criteria.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call get-priority-alert-settings", - "short": "Retrieve Priority Alert Settings for a Workspace", - "long": "Retrieve Priority Alert Settings for a Workspace.\n\nThe priority alert feature enables administrators to configure priority alert settings for a professional workspace.\n\nThis API requires a full, user, or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with a scope of `spark:workspaces_read` to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-priority-alert-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call get-privacy-settings", - "short": "Retrieve Privacy Settings for a Workspace", - "long": "Retrieve Privacy Settings for a Workspace.\n\nThe privacy feature enables the Workspaces line to be monitored by others and determine if they can be reached by Auto Attendant services.\n\nThis API requires a full, read-only or location administrator auth token with a scope of `spark-admin:workspaces_read` scope to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-privacy-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call get-push-to-talk-settings", - "short": "Read Push-to-Talk Settings for a Workspace", - "long": "Retrieve Push-to-Talk settings for a workspace.\n\nPush-to-Talk allows the use of desk phones as either a one-way or two-way intercom that connects people/workspaces in different parts of your organization.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:workspaces_read` scope can be used to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-push-to-talk-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call get-recording", - "short": "Retrieve Call Recording Settings for a Workspace", - "long": "Retrieve call recording settings for a workspace.\n\nThe Call Recording feature provides a hosted mechanism to record the calls placed and received on the Carrier platform for replay and archival. This feature is helpful for quality assurance, security, training, and more.\n\nThis API requires a full, read-only, device or location administrator auth token with the `spark-admin:telephony_config_read` scope.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-recording" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call get-secondary-available-numbers", - "short": "Get Workspace Secondary Available Phone Numbers", - "long": "List standard numbers that are available to be assigned as a workspace's secondary number.\nThese numbers are associated with the location of the workspace specified in the request URL, can be active or inactive, and are unassigned.\n\nThe available numbers APIs help identify candidate numbers and their owning entities to simplify the assignment or association of these numbers to members or features.\n\nRetrieving this list requires a full, read-only or location administrator auth token with a scope of `spark-admin:telephony_config_read`.\n\n
Only available for workspaces with the professional license entitlement.
", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-secondary-available-numbers" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of phone numbers returned to this maximum count. The default is 2000." - }, - { - "name": "org-id", - "type": "string", - "usage": "List numbers for this organization.", - "hidden": true - }, - { - "name": "phone-number", - "type": "string", - "usage": "Filter phone numbers based on the comma-separated list provided in the `phoneNumber` array." - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of matching phone numbers. The default is 0." - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call get-selective-accept", - "short": "Retrieve Selective Accept Criteria for a Workspace", - "long": "Retrieve Selective Accept Criteria Settings for a Workspace.\n\nWith the Selective Accept feature, you can accept calls at specific times from specific callers.\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, read-only or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with a scope of `spark:workspaces_read` to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-selective-accept" - }, - { - "name": "id", - "type": "string", - "usage": "Unique identifier for the criteria.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call get-selective-accept-settings", - "short": "Retrieve Selective Accept Settings for a Workspace", - "long": "Retrieve Selective Accept Settings for a Workspace.\n\nWith the Selective Accept feature, you can accept calls at specific times from specific callers.\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, read-only or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with a scope of `spark:workspaces_read` to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-selective-accept-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call get-selective-forward", - "short": "Retrieve Selective Forward Criteria for a Workspace", - "long": "Retrieve Selective Forward Criteria Settings for a Workspace.\n\nWith the Selective Forward feature, you can forward calls at specific times from specific callers. This setting takes precedence over call forwarding.\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, read-only or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with a scope of `spark:workspaces_read` to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-selective-forward" - }, - { - "name": "id", - "type": "string", - "usage": "Unique identifier for the criteria.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call get-selective-forward-settings", - "short": "Retrieve Selective Forward Settings for a Workspace", - "long": "Retrieve Selective Forward Call Settings for a Workspace.\n\nWith the Selective Forward feature, you can forward calls at specific times from specific callers. This setting takes precedence over call forwarding.\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, read-only or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with a scope of `spark:workspaces_read` to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-selective-forward-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call get-selective-reject", - "short": "Retrieve Selective Reject Criteria for a Workspace", - "long": "Retrieve Selective Reject Criteria Settings for a Workspace.\n\nWith the Selective Reject feature, you can reject calls at specific times from specific callers. This setting takes precedence over Selectively Accept Calls.\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, read-only or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with a scope of `spark:workspaces_read` to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-selective-reject" - }, - { - "name": "id", - "type": "string", - "usage": "Unique identifier for the criteria.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call get-selective-reject-settings", - "short": "Retrieve Selective Reject Settings for a Workspace", - "long": "Retrieve Selective Reject Settings for a Workspace.\n\nWith the Selective Reject feature, you can reject calls at specific times from specific callers. This setting takes precedence over Selectively Accept Calls.\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, read-only or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with a scope of `spark:workspaces_read` to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-selective-reject-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call get-sequential-ring", - "short": "Retrieve Sequential Ring Criteria for a Workspace", - "long": "Retrieve sequential ring criteria for a workspace.\n\nThe sequential ring feature enables you to create a list of up to five phone numbers. When the workspace receives incoming calls, these numbers will ring one after another.\nThe sequential ring criteria specify settings such as schedule and incoming numbers for which to sequentially ring or not.\n\nThis API requires a full, read-only or location administrator auth token with a scope of `spark-admin:workspaces_read` to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-sequential-ring" - }, - { - "name": "id", - "type": "string", - "usage": "Unique identifier for the criteria.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call get-sequential-ring-settings", - "short": "Retrieve Sequential Ring Settings for a Workspace", - "long": "Retrieve sequential ring settings for a workspace.\n\nThe sequential ring feature enables you to create a list of up to five phone numbers. When the workspace receives incoming calls, these numbers will ring one after another.\n\nThis API requires a full, read-only or location administrator auth token with a scope of `spark-admin:workspaces_read` to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-sequential-ring-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call get-simultaneous-ring", - "short": "Retrieve Simultaneous Ring Criteria for a Workspace", - "long": "Retrieve Simultaneous Ring Criteria Settings for a Workspace.\n\nThe Simultaneous Ring feature allows you to configure your office phone and other phones of your choice to ring simultaneously.\nSimultaneous Ring Criteria (Schedules) can also be set up to ring these phones during certain times of the day or days of the week.\n\nThis API requires a full, read-only or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with a scope of `spark:workspaces_read` to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-simultaneous-ring" - }, - { - "name": "id", - "type": "string", - "usage": "Unique identifier for the criteria.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call get-simultaneous-ring-settings", - "short": "Retrieve Simultaneous Ring Settings for a Workspace", - "long": "Retrieve Simultaneous Ring Settings for a Workspace.\n\nThe Simultaneous Ring feature allows you to configure your office phone and other phones of your choice to ring simultaneously.\nSchedules can also be set up to ring these phones during certain times of the day or days of the week.\n\nThis API requires a full, read-only or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with a scope of `spark:workspaces_read` to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-simultaneous-ring-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call get-transfer-numbers-settings", - "short": "Retrieve Transfer Numbers Settings for a Workspace", - "long": "Retrieve Transfer Numbers Settings for a Workspace.\n\nWhen calling a specific call type, this workspace will be automatically transferred to another number. The person assigned the Auto Transfer Number can then approve the call and send it through or reject the call type. You can add up to 3 numbers.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with `spark:workspaces_read` scope can be used to read workspace settings.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-transfer-numbers-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call get-voicemail", - "short": "Read Voicemail Settings for a Workspace", - "long": "Retrieve a workspace Voicemail settings.\n\nThe voicemail feature transfers callers to voicemail based on your settings. You can then retrieve voice messages via Voicemail. Voicemail audio is sent in Waveform Audio File Format, `.wav`, format.\n\nOptionally, notifications can be sent to a mobile phone via text or email. These notifications will not include the voicemail files.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:workspaces_read` scope can be used to read workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-voicemail" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call get-waiting-settings", - "short": "Retrieve Call Waiting Settings for a Workspace", - "long": "Retrieve Call Waiting Settings for a Workspace.\n\nCall Waiting allows workspaces to handle multiple simultaneous calls. Workspaces with Call Waiting enabled can place a call on hold to answer or initiate another call.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:workspaces_read` or a user auth token with `spark:workspaces_read` scope can be used to read workspace settings.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-waiting-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call list-numbers-associated", - "short": "List numbers associated with a specific workspace", - "long": "List the PSTN phone numbers associated with a specific workspace, by ID, within the organization. Also shows the location and organization associated with the workspace.\n\nRetrieving this list requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:workspaces_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-numbers-associated" - }, - { - "name": "org-id", - "type": "string", - "usage": "Workspace is in this organization. Only admin users of another organization (such as partners) can use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "List numbers for this workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call update-access-codes", - "short": "Modify Access Codes for a Workspace", - "long": "Modify Access codes for a workspace.\n\nAccess codes are used to bypass permissions.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with `spark:workspaces_write` scope can be used to update workspace settings.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "delete-codes", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-access-codes" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call update-anonymous-settings", - "short": "Modify Anonymous Call Settings for a Workspace", - "long": "Modify Anonymous Call Settings for a Workspace.\n\nAnonymous Call Rejection, when enabled, blocks all incoming calls from unidentified or blocked caller IDs.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-anonymous-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call update-barge-settings", - "short": "Modify Barge In Call Settings for a Workspace", - "long": "Modify Barge In Call Settings for a Workspace.\n\nBarge In, when enabled, allows you to use the Feature Access Code (FAC) on your desk phone to answer someone else’s phone call or barge in on a call they’ve already answered.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-barge-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "tone-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call update-bridge-warning-tone", - "short": "Modify Call Bridge Warning Tone Settings for a Workspace", - "long": "Modify Call Bridge Warning Tone Settings for a Workspace.\n\nCall Bridge Warning Tone, when enabled, ensures that users hear a warning tone when other users bridge into an active call on the same shared line appearance.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:workspaces_write` scope can be used to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-bridge-warning-tone" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "warning-tone-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call update-busy-voicemail-greeting-place", - "short": "Upload Busy Voicemail Greeting for Workspace", - "long": "Upload a busy voicemail greeting for a workspace (place).\n\nExamples:\n webex calling workspace-call update-busy-voicemail-greeting-place --workspace-id --file greeting.wav", - "flags": [ - { - "name": "file", - "type": "string", - "usage": "Path to WAV file to upload", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-busy-voicemail-greeting-place" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization ID", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "workspace-id value", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call update-caller-id", - "short": "Configure Caller ID Settings for a Workspace", - "long": "Configure workspace's Caller ID settings.\n\nCaller ID settings control how a workspace's information is displayed when making outgoing calls.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with `spark:workspaces_write` scope can be used to update workspace settings.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-caller-id" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call update-digit-pattern", - "short": "Modify a Digit Pattern for the Workspace", - "long": "Modify the designated digit pattern.\n\nDigit patterns are used to bypass permissions.\n\nThis API requires a full or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "action", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "digit-pattern-id", - "type": "string", - "usage": "Unique identifier for the digit pattern.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-digit-pattern" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "pattern", - "type": "string" - }, - { - "name": "transfer-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call update-digit-pattern-control", - "short": "Modify the Digit Pattern Category Control Settings for the Workspace", - "long": "Modifies whether this workspace uses the specified digit patterns when placing outbound calls or not.\n\nUpdating the digit pattern category control settings requires a full or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-digit-pattern-control" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "use-custom-digit-patterns", - "type": "bool", - "default": "false" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call update-donotdisturb-settings", - "short": "Modify DoNotDisturb Settings for a Workspace", - "long": "Modify DoNotDisturb Settings for a Workspace.\n\nSilence incoming calls with the Do Not Disturb feature.\nWhen enabled, callers hear the busy signal.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional and common area licensed workspaces.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-donotdisturb-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "ring-splash-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call update-forward", - "short": "Modify Call Forwarding Settings for a Workspace", - "long": "Modify call forwarding settings for a Workspace.\n\nThree types of call forwarding are supported:\n\n+ Always - forwards all incoming calls to the destination you choose.\n\n+ When busy, forwards all incoming calls to the destination you chose while the phone is in use or the person is busy.\n\n+ When no answer, forwarding only occurs when you are away or not answering your phone.\n\nIn addition, the Business Continuity feature will send calls to a destination of your choice if your phone is not connected to the network for any reason, such as a power outage, failed Internet connection, or wiring problem.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with `spark:workspaces_write` scope can be used to update workspace settings.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-forward" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call update-incoming-permission-settings", - "short": "Modify Incoming Permission Settings for a Workspace", - "long": "Modify Incoming Permission settings for a Workspace.\n\nIncoming permission settings allow modifying permissions for a workspace that can be different from the organization's default to manage different call types.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with `spark:workspaces_write` scope can be used to update workspace settings.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "collect-calls-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "external-transfer", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-incoming-permission-settings" - }, - { - "name": "internal-calls-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "use-custom-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call update-intercept-settings", - "short": "Configure Call Intercept Settings for a Workspace", - "long": "Configures a Workspace's Call Intercept Settings\n\nThe intercept feature gracefully takes a workspace's phone out of service, while providing callers with informative announcements and alternative routing options. Depending on the service configuration, none, some, or all incoming calls to the specified person are intercepted. Also depending on the service configuration, outgoing calls are intercepted or rerouted to another location.\n\nThis API requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:workspaces_write` or a user auth token with `spark:workspaces_read` scope can be used by a person to read their settings.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-intercept-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call update-monitoring-settings", - "short": "Modify Monitoring Settings for a Workspace", - "long": "Modify Monitoring settings for a Workspace.\n\nAllow workspaces to monitor the line status of specified agents, workspaces, or call park extensions. The line status indicates if a monitored agent or a workspace is on a call, or if a call has been parked on the monitored call park extension.\n\nThe number of monitored elements is limited to 50.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with `spark:workspaces_write` scope can be used to update workspace settings.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "enable-call-park-notification", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-monitoring-settings" - }, - { - "name": "monitored-elements", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call update-music-hold-settings", - "short": "Modify Music On Hold Settings for a Workspace", - "long": "Modify music on hold settings for a Workspace.\n\nMusic on hold is played when a caller is put on hold, or the call is parked.\n\nTo configure music on hold setting for a workspace, music on hold setting must be enabled for this location.\n\nThis API requires a full or device administrator or location administrator auth token with the `spark-admin:telephony_config_write` scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-music-hold-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the person resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call update-no-answer-voicemail-greeting-place", - "short": "Upload No-Answer Voicemail Greeting for Workspace", - "long": "Upload a no-answer voicemail greeting for a workspace (place).\n\nExamples:\n webex calling workspace-call update-no-answer-voicemail-greeting-place --workspace-id --file greeting.wav", - "flags": [ - { - "name": "file", - "type": "string", - "usage": "Path to WAV file to upload", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-no-answer-voicemail-greeting-place" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization ID", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "workspace-id value", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call update-outgoing-permission-settings", - "short": "Modify Outgoing Permission Settings for a Workspace", - "long": "Modify Outgoing Permission settings for a Place.\n\nTurn on outgoing call settings for this workspace to override the calling settings from the location that are used by default.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with `spark:workspaces_write` scope can be used to update workspace settings.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-outgoing-permission-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call update-policy-settings", - "short": "Configure Call Policy Settings for a Workspace", - "long": "Configure a workspace Call Policies settings.\n\nThe call policy feature enables administrator to configure call policy settings such as Connected Line Identification Privacy on Redirected Calls for a professional workspace.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:workspaces_write` scope can be used to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "connected-line-id-privacy-on-redirected-calls", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-policy-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call update-priority-alert", - "short": "Modify Priority Alert Criteria for a Workspace", - "long": "Modify Priority Alert Criteria Settings for a Workspace.\n\nThe priority alert feature enables administrators to configure priority alert settings for a professional workspace.\nPriority Alert Criteria (Schedules) can also be set up to alert these phones during certain times of the day or days of the week.\n\nThis API requires a full, user, or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - "flags": [ - { - "name": "anonymous-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calls-from", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-priority-alert" - }, - { - "name": "id", - "type": "string", - "usage": "Unique identifier for the criteria.", - "required": true - }, - { - "name": "notification-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "phone-numbers", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "schedule-level", - "type": "string" - }, - { - "name": "schedule-name", - "type": "string" - }, - { - "name": "schedule-type", - "type": "string" - }, - { - "name": "unavailable-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call update-priority-alert-settings", - "short": "Configure Priority Alert Settings for a Workspace", - "long": "Configure a workspace Priority Alert Settings.\n\nThe priority alert feature enables administrator to configure priority alert settings for a professional workspace.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:workspaces_write` scope that can be used to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-priority-alert-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call update-privacy-settings", - "short": "Modify Privacy Settings for a Workspace", - "long": "Modify Privacy Settings for a Workspace.\n\nThe privacy feature enables the Workspaces line to be monitored by others and determine if they can be reached by Auto Attendant services.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - "flags": [ - { - "name": "aa-extension-dialing-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "aa-naming-dialing-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "enable-phone-status-directory-privacy", - "type": "bool", - "default": "false" - }, - { - "name": "enable-phone-status-pickup-barge-in-privacy", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-privacy-settings" - }, - { - "name": "monitoring-agents", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call update-push-to-talk-settings", - "short": "Configure Push-to-Talk Settings for a Workspace", - "long": "Configure Push-to-Talk settings for a workspace.\n\nPush-to-Talk allows the use of desk phones as either a one-way or two-way intercom that connects people/workspaces in different parts of your organization.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:workspaces_write` scope can be used to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - "flags": [ - { - "name": "access-type", - "type": "string" - }, - { - "name": "allow-auto-answer", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "connection-type", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-push-to-talk-settings" - }, - { - "name": "members", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call update-recording", - "short": "Modify Call Recording Settings for a Workspace", - "long": "Modify call forwarding settings for a workspace.\n\nThe Call Recording feature provides a hosted mechanism to record the calls placed and received on the Carrier platform for replay and archival. This feature is helpful for quality assurance, security, training, and more.\n\nThe vendor's terms of service have to be accepted to enable call recording. Vendor details along with the terms of service URL are shared when the vendor's terms of service are not accepted yet.\n\nThis API requires a full, device or location administrator auth token with the `spark-admin:telephony_config_write` scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-recording" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call update-selective-accept", - "short": "Modify Selective Accept Criteria for a Workspace", - "long": "Modify Selective Accept Criteria Settings for a Workspace.\n\nWith the Selective Accept feature, you can accept calls at specific times from specific callers\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - "flags": [ - { - "name": "accept-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "anonymous-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calls-from", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-selective-accept" - }, - { - "name": "id", - "type": "string", - "usage": "Unique identifier for the criteria.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "phone-numbers", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "schedule-level", - "type": "string" - }, - { - "name": "schedule-name", - "type": "string" - }, - { - "name": "schedule-type", - "type": "string" - }, - { - "name": "unavailable-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call update-selective-accept-settings", - "short": "Modify Selective Accept Settings for a Workspace", - "long": "Modify Selective Accept Settings for a Workspace.\n\nWith the Selective Accept feature, you can accept calls at specific times from specific callers.\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-selective-accept-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call update-selective-forward", - "short": "Modify Selective Forward Criteria for a Workspace", - "long": "Modify Selective Forward Call Criteria Settings for a Workspace.\n\nWith the Selective Forward feature, you can forward calls at specific times from specific callers. This setting takes precedence over call forwarding.\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - "flags": [ - { - "name": "anonymous-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calls-from", - "type": "string" - }, - { - "name": "destination-voicemail-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "forward-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "forward-to-phone-number", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-selective-forward" - }, - { - "name": "id", - "type": "string", - "usage": "Unique identifier for the criteria.", - "required": true - }, - { - "name": "numbers", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "schedule-level", - "type": "string" - }, - { - "name": "schedule-name", - "type": "string" - }, - { - "name": "schedule-type", - "type": "string" - }, - { - "name": "unavailable-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call update-selective-forward-settings", - "short": "Modify Selective Forward Settings for a Workspace", - "long": "Modify Selective Forward Call Settings for a Workspace.\n\nWith the Selective Forward feature, you can forward calls at specific times from specific callers. This setting takes precedence over call forwarding.\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "default-phone-number-to-forward", - "type": "string" - }, - { - "name": "destination-voicemail-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-selective-forward-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "ring-reminder-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call update-selective-reject", - "short": "Modify Selective Reject Criteria for a Workspace", - "long": "Modify Selective Reject Criteria Settings for a Workspace.\n\nWith the Selective Reject feature, you can reject calls at specific times from specific callers. This setting takes precedence over Selectively Accept Calls.\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - "flags": [ - { - "name": "anonymous-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calls-from", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-selective-reject" - }, - { - "name": "id", - "type": "string", - "usage": "Unique identifier for the criteria.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "phone-numbers", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "reject-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "schedule-level", - "type": "string" - }, - { - "name": "schedule-name", - "type": "string" - }, - { - "name": "schedule-type", - "type": "string" - }, - { - "name": "unavailable-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call update-selective-reject-settings", - "short": "Modify Selective Reject Settings for a Workspace", - "long": "Modify Selective Reject Settings for a Workspace.\n\nWith the Selective Reject feature, you can reject calls at specific times from specific callers. This setting takes precedence over Selectively Accept Calls.\nSchedules can also be set up for this feature during certain times of the day or days of the week.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-selective-reject-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call update-sequential-ring", - "short": "Modify Sequential Ring Criteria for a Workspace", - "long": "Modify sequential ring criteria for a workspace.\n\nThe sequential ring feature enables you to create a list of up to five phone numbers. When the workspace receives incoming calls, these numbers will ring one after another.\nThe sequential ring criteria specify settings such as schedule and incoming numbers for which to sequentially ring or not.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - "flags": [ - { - "name": "anonymous-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calls-from", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-sequential-ring" - }, - { - "name": "id", - "type": "string", - "usage": "Unique identifier for the criteria.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "phone-numbers", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "ring-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "schedule-level", - "type": "string" - }, - { - "name": "schedule-name", - "type": "string" - }, - { - "name": "schedule-type", - "type": "string" - }, - { - "name": "unavailable-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call update-sequential-ring-settings", - "short": "Modify Sequential Ring Settings for a Workspace", - "long": "Modify sequential ring settings for a workspace.\n\nThe sequential ring feature enables you to create a list of up to five phone numbers. When the workspace receives incoming calls, these numbers will ring one after another.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-sequential-ring-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call update-simultaneous-ring", - "short": "Modify Simultaneous Ring Criteria for a Workspace", - "long": "Modify Simultaneous Ring Criteria Settings for a Workspace.\n\nThe Simultaneous Ring feature allows you to configure your office phone and other phones of your choice to ring simultaneously.\nSimultaneous Ring Criteria (Schedules) can also be set up to ring these phones during certain times of the day or days of the week.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - "flags": [ - { - "name": "anonymous-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calls-from", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-simultaneous-ring" - }, - { - "name": "id", - "type": "string", - "usage": "Unique identifier for the criteria.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "phone-numbers", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "ring-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "schedule-level", - "type": "string" - }, - { - "name": "schedule-name", - "type": "string" - }, - { - "name": "schedule-type", - "type": "string" - }, - { - "name": "unavailable-callers-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call update-simultaneous-ring-settings", - "short": "Modify Simultaneous Ring Settings for a Workspace", - "long": "Modify Simultaneous Ring Settings for a Workspace.\n\nThe Simultaneous Ring feature allows you to configure the workspace phones of your choice to ring simultaneously.\nSchedules can also be set up to ring these phones during certain times of the day or days of the week.\n\nThis API requires a full, user or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with a scope of `spark:workspaces_write` to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-simultaneous-ring-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call update-transfer-numbers-settings", - "short": "Modify Transfer Numbers Settings for a Workspace", - "long": "Modify Transfer Numbers Settings for a place.\n\nWhen calling a specific call type, this workspace will be automatically transferred to another number. The person assigned the Auto Transfer Number can then approve the call and send it through or reject the call type. You can add up to 3 numbers.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with `spark:workspaces_write` scope can be used to update workspace settings.", - "flags": [ - { - "name": "auto-transfer-number1", - "type": "string" - }, - { - "name": "auto-transfer-number2", - "type": "string" - }, - { - "name": "auto-transfer-number3", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-transfer-numbers-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "use-custom-transfer-numbers", - "type": "bool", - "default": "false" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call update-voicemail", - "short": "Configure Voicemail Settings for a Workspace", - "long": "Configure a workspace Voicemail settings.\n\nThe voicemail feature transfers callers to voicemail based on your settings. You can then retrieve voice messages via Voicemail. Voicemail audio is sent in Waveform Audio File Format, `.wav`, format.\n\nOptionally, notifications can be sent to a mobile phone via text or email. These notifications will not include the voicemail files.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:workspaces_write` scope can be used to update workspace settings.\n\n**NOTE**: This API is only available for professional licensed workspaces.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-voicemail" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call update-voicemail-passcode", - "short": "Modify Voicemail Passcode for a Workspace", - "long": "Modify voicemail passcode for a workspace.\n\nModifying the voicemail passcode for a workspace requires a full administrator, device administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-voicemail-passcode" - }, - { - "name": "org-id", - "type": "string", - "usage": "Modify voicemail passcode for a workspace in this organization.", - "hidden": true - }, - { - "name": "passcode", - "type": "string" - }, - { - "name": "place-id", - "type": "string", - "usage": "Modify voicemail passcode for this workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call update-waiting-settings", - "short": "Modify Call Waiting Settings for a Workspace", - "long": "Modify Call Waiting Settings for a Workspace.\n\nCall Waiting allows workspaces to handle multiple simultaneous calls. Workspaces with Call Waiting enabled can place a call on hold to answer or initiate another call.\n\nThis API requires a full or user administrator or location administrator auth token with the `spark-admin:workspaces_write` scope or a user auth token with `spark:workspaces_write` scope can be used to update workspace settings.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-waiting-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization within which the workspace resides. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspace-call upload-intercept-announcement-file", - "short": "Upload Call Intercept Greeting for Workspace", - "long": "Upload a call intercept announcement greeting for a workspace.\n\nExamples:\n webex calling workspace-call upload-intercept-announcement-file --workspace-id --file greeting.wav", - "flags": [ - { - "name": "file", - "type": "string", - "usage": "Path to WAV file to upload", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for upload-intercept-announcement-file" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization ID", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "workspace-id value", - "required": true - } - ] - }, - { - "path": "webex calling workspaces", - "short": "Workspaces commands" - }, - { - "path": "webex calling workspaces create", - "short": "Create a Workspace", - "long": "Create a workspace.\n\nThe `locationId`, `workspaceLocationId`, `floorId`, `indoorNavigation`, `capacity`, `type`, `notes` and `hotdeskingStatus` parameters are optional, and omitting them will result in the creation of a workspace without these values set, or set to their default. A `locationId` must be provided when the `floorId` is set. Calendar and calling can also be set for a new workspace. Omitting them will default to free calling and no calendaring. The `orgId` parameter can only be used by admin users of another organization (such as partners).\n\n* Information for Webex Calling fields may be found here: [locations](/docs/api/v1/locations/list-locations), [available numbers](/docs/api/v1/numbers/get-phone-numbers-for-an-organization-with-given-criterias) and [licenses](/docs/api/v1/licenses).\n\n* The `locationId` and `supportedDevices` fields cannot be changed once configured.\n\n* When creating a `webexCalling` workspace that is not hot desk only, a `locationId` and either a `phoneNumber` or `extension` or both is required. Furthermore, it is possible to set the `licenses` field with a list of Webex Calling license IDs, if desired. If multiple license IDs are provided, the oldest suitable one will be applied. If no licenses are supplied, the oldest suitable one from the active subscriptions will be automaticaly applied.\n\n* When creating a hot desk only workspace, `phoneNumber` and `extension` fields are not applicable. Furthermore, `deviceHostedMeetingsEnabled`, and `calendar` services are not applicable. If any of these fields are provided the API will return an error. The `calling` type is `webexCalling`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - } - ] - }, - { - "path": "webex calling workspaces delete", - "short": "Delete a Workspace", - "long": "Deletes a workspace by ID.\n\nAlso deletes all devices associated with the workspace. Any deleted devices will need to be reactivated. Specify the workspace ID in the `workspaceId` parameter in the URI.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "A unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspaces get", - "short": "Get Workspace Details", - "long": "Shows details for a workspace, by ID.\n\nThe `locationId`, `workspaceLocationId`, `floorId`, `indoorNavigation`, `capacity`, `type` and `notes` fields will only be present if they have been set for the workspace. Specify the workspace ID in the `workspaceId` parameter in the URI.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "include-devices", - "type": "string", - "usage": "Flag identifying whether to include the devices associated with the workspace in the response." - }, - { - "name": "workspace-id", - "type": "string", - "usage": "(Required) A unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspaces get-2", - "short": "Get Workspace Details", - "long": "Shows details for a workspace, by ID.\n\nThe `locationId`, `workspaceLocationId`, `floorId`, `indoorNavigation`, `capacity`, `type` and `notes` fields will only be present if they have been set for the workspace. Specify the workspace ID in the `workspaceId` parameter in the URI.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-2" - }, - { - "name": "include-capabilities", - "type": "string", - "usage": "Flag identifying whether to include the workspace capabilities in the response." - }, - { - "name": "include-devices", - "type": "string", - "usage": "Flag identifying whether to include the devices associated with the workspace in the response." - }, - { - "name": "workspace-id", - "type": "string", - "usage": "A unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspaces get-capabilities", - "short": "Get Workspace Capabilities", - "long": "Shows the capabilities for a workspace by ID.\n\nReturns a set of capabilities, including whether or not the capability is supported by any device in the workspace, and if the capability is configured (enabled). For example for a specific capability like `occupancyDetection`, the API will return if the capability is supported and/or configured such that occupancy detection data will flow from the workspace (device) to the cloud. Specify the workspace ID in the `workspaceId` parameter in the URI.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-capabilities" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "A unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex calling workspaces list", - "short": "List Workspaces", - "long": "List workspaces.\n\nUse query parameters to filter the response. The `orgId` parameter can only be used by admin users of another organization (such as partners). The `locationId`, `workspaceLocationId`, `indoorNavigation`, `floorId`, `capacity` and `type` fields will only be present for workspaces that have a value set for them. The special values `notSet` (for filtering on category) and `-1` (for filtering on capacity) can be used to filter for workspaces without a type and/or capacity.", - "flags": [ - { - "name": "calendar", - "type": "string", - "usage": "List workspaces by calendar type." - }, - { - "name": "calling", - "type": "string", - "usage": "List workspaces by calling type." - }, - { - "name": "capacity", - "type": "string", - "usage": "List workspaces with the given capacity. Must be -1 or higher. A value of -1 lists workspaces with no capacity set." - }, - { - "name": "custom-attribute", - "type": "string", - "usage": "List workspaces with given custom attribute key." - }, - { - "name": "device-hosted-meetings-enabled", - "type": "string", - "usage": "List workspaces enabled for device hosted meetings." - }, - { - "name": "device-platform", - "type": "string", - "usage": "List workspaces by device platform." - }, - { - "name": "display-name", - "type": "string", - "usage": "List workspaces by display name." - }, - { - "name": "floor-id", - "type": "string", - "usage": "Floor associated with the workspace." - }, - { - "name": "health-level", - "type": "string", - "usage": "List workspaces by health level." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "include-capabilities", - "type": "string", - "usage": "Flag identifying whether to include the workspace capabilities in the response." - }, - { - "name": "include-devices", - "type": "string", - "usage": "Flag identifying whether to include the devices associated with the workspace in the response." - }, - { - "name": "location-id", - "type": "string", - "usage": "Location associated with the workspace. Values must originate from the /locations API and not the legacy /workspaceLocations API." - }, - { - "name": "max", - "type": "string", - "usage": "Limit the maximum number of workspaces in the response." - }, - { - "name": "org-id", - "type": "string", - "usage": "List workspaces in this organization. Only admin users of another organization (such as partners) may use this parameter.", - "hidden": true - }, - { - "name": "planned-maintenance", - "type": "string", - "usage": "List workspaces with given maintenance mode." - }, - { - "name": "start", - "type": "string", - "usage": "Offset. Default is 0." - }, - { - "name": "supported-devices", - "type": "string", - "usage": "List workspaces by supported devices." - }, - { - "name": "type", - "type": "string", - "usage": "List workspaces by type." - }, - { - "name": "workspace-location-id", - "type": "string", - "usage": "Location associated with the workspace. Both values from the /locations API and the legacy /workspaceLocations API are supported. This field is deprecated and integrations should prefer `locationId` going forward." - } - ] - }, - { - "path": "webex calling workspaces update", - "short": "Update a Workspace", - "long": "Updates details for a workspace by ID.\n\nSpecify the workspace ID in the `workspaceId` parameter in the URI. Include all details for the workspace that are present in a [GET request for the workspace details](/docs/api/v1/workspaces/get-workspace-details). Not including the optional `capacity`, `type` or `notes` fields will result in the fields no longer being defined for the workspace. A `locationId` must be provided when the `floorId` is set. The `locationId`, `workspaceLocationId`, `floorId`, `supportedDevices`, `calendar` and `calling` fields do not change when omitted from the update request.\n\n* Information for Webex Calling fields may be found here: [locations](/docs/api/v1/locations/list-locations) and [available numbers](/docs/api/v1/numbers/get-phone-numbers-for-an-organization-with-given-criterias).\n\n* Updating the `calling` parameter is only supported if the existing `calling` type is `freeCalling`, `none`, `thirdPartySipCalling` or `webexCalling`.\n\n* Updating the `calling` parameter to `none`, `thirdPartySipCalling` or `webexCalling` is not supported if the workspace contains any devices.\n\n* The `locationId` and `supportedDevices` fields cannot be changed once configured.\n\n* When updating `webexCalling` information on a workspace that is not hot desk only, a `locationId` and either a `phoneNumber` or `extension` or both is required. Furthermore, the `licenses` field can be set with a list of Webex Calling license IDs, if desired. If multiple license IDs are provided, the oldest suitable one will be applied. If a previously applied license ID is omitted, it will be replaced with one from the list provided. If the `licenses` field is omitted, the current calling license will be retained.\n\n* When specifying a hot desk only license on a hot desk only workspace, `deviceHostedMeetingsEnabled`, and `calendar` services are not supported and will be automatically disabled. In addition to this, the `phoneNumber` and `extension` will be removed from the workspace. Attempting to enable any of these services, or provide a `phoneNumber` or `extension` will result in an error. The `calling` type for these requests is `webexCalling`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "A unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex cc", - "aliases": [ - "contact-center" - ], - "short": "Webex Contact Center APIs", - "long": "Manage Webex Contact Center resources — agents, queues, tasks, routing, and more." - }, - { - "path": "webex cc activities", - "short": "Activities commands" - }, - { - "path": "webex cc activities describe", - "short": "Describe an Activity", - "long": "Retrieve a single activity's full definition, including inputs, outputs, named ports, and the JSON Schema for its inputs — all returned inline.\n\nScope: `cjp:config_read`", - "flags": [ - { - "name": "activity-name", - "type": "string", - "usage": "Activity type name (e.g., `play-message`, `queue-contact`).", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for describe" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID.", - "hidden": true - } - ] - }, - { - "path": "webex cc activities get-input-choices", - "short": "Get Activity Input Choices", - "long": "Resolve choices for an activity input. Use this when an activity input requires a value from a predefined or dynamically resolved set (e.g., available queues, audio files, agents).\n\nThis endpoint is only valid for inputs that expose choices (an input whose definition includes `allowedValues` or a `choicesEndpoint`, as returned by `describeActivity`). Calling it for an input that does not support choices returns 400.\n\nPass `search` to filter the choices (type-ahead). Add `validate=true` together with `search` to do a point-lookup of a single value instead of filtering — the match is against the choice's `value` (its ID), not its display `name`. For a cascading input whose allowed values depend on a sibling input, supply the parent with `parentInputName` and `parentValue`; otherwise a cascading input returns 400.\n\nFiltering and validation apply only to dynamic (`choicesEndpoint`-backed) inputs. A static input always returns its full enumerated list regardless of `search`/`validate`.\n\nScope: `cjp:config_read`", - "flags": [ - { - "name": "activity-name", - "type": "string", - "usage": "Activity type name.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-input-choices" - }, - { - "name": "input-name", - "type": "string", - "usage": "Input field name. Must be an input that exposes choices (has `allowedValues` or a `choicesEndpoint`).", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID.", - "hidden": true - }, - { - "name": "parent-input-name", - "type": "string", - "usage": "Parent input name for a cascading/dynamic input. Required when `parentValue` is provided." - }, - { - "name": "parent-value", - "type": "string", - "usage": "Parent input value for a cascading/dynamic input (for example, the selected `channelType`)." - }, - { - "name": "search", - "type": "string", - "usage": "Search text used to filter the returned choices (type-ahead). When `validate=true`, this is instead the single value to look up." - }, - { - "name": "validate", - "type": "string", - "usage": "When `true` and `search` is supplied, performs a point-lookup of the single value in `search` (matched against the choice's `value`/ID) instead of filtering." - } - ] - }, - { - "path": "webex cc activities list-definitions", - "short": "List Activity Definitions", - "long": "List all available activity types with their full schemas, including inputs, outputs, ports, and descriptions. The response is sufficient on its own to construct nodes — there is no separate schema endpoint.\n\nScope: `cjp:config_read`", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-definitions" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID.", - "hidden": true - } - ] - }, - { - "path": "webex cc address-book", - "short": "AddressBook commands" - }, - { - "path": "webex cc address-book bulk-export", - "short": "Bulk export Address Book(s)", - "long": "Export all Address Book(s) in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-export" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - } - ] - }, - { - "path": "webex cc address-book bulk-save-entry", - "short": "Bulk save Address Book Entry(s)", - "long": "Create, Update or delete Address Book Entry(s) in bulk for an Address Book in a given organization.", - "flags": [ - { - "name": "address-book-id", - "type": "string", - "usage": "Resource ID of the Address Book", - "required": true - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-save-entry" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc address-book create", - "short": "Create a new Address Book", - "long": "Create a new Address Book in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "description", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "id", - "type": "string" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "organization-id", - "type": "string" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "parent-type", - "type": "string" - }, - { - "name": "site-id", - "type": "string" - }, - { - "name": "version", - "type": "int64", - "default": "0" - } - ] - }, - { - "path": "webex cc address-book create-entry", - "short": "Create a new Address Book Entry", - "long": "Create a new Address Book Entry in a given organization.", - "flags": [ - { - "name": "address-book-id", - "type": "string", - "usage": "Resource ID of the Address Book", - "required": true - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-entry" - }, - { - "name": "id", - "type": "string" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "number", - "type": "string" - }, - { - "name": "organization-id", - "type": "string" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "version", - "type": "int64", - "default": "0" - } - ] - }, - { - "path": "webex cc address-book delete", - "aliases": [ - "delete-id" - ], - "short": "Delete specific Address Book by ID", - "long": "Delete an existing Address Book by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Address Book.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc address-book delete-entry-id", - "short": "Delete specific Address Book Entry by ID", - "long": "Delete an existing Address Book Entry by ID in a given organization.", - "flags": [ - { - "name": "address-book-id", - "type": "string", - "usage": "Resource ID of the Address Book", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-entry-id" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Address Book Entry", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc address-book get", - "aliases": [ - "get-id" - ], - "short": "Get specific Address Book by ID", - "long": "Retrieve an existing Address Book by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Address Book.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc address-book get-entry-id", - "short": "Get specific Address Book Entry by ID", - "long": "Retrieve an existing Address Book Entry by ID in a given organization.", - "flags": [ - { - "name": "address-book-id", - "type": "string", - "usage": "Resource ID of the Address Book", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-entry-id" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Address Book Entry", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc address-book list", - "short": "List Address Book(s)", - "long": "Retrieve a list of Address Book(s) in a given organization.", - "flags": [ - { - "name": "attributes", - "type": "string", - "usage": "Specify the attributes to be returned.Default all attributes are returned along with specified columns. All Attributes are supported" - }, - { - "name": "filter", - "type": "string", - "usage": "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain space, and if so kindly bound it with quotes to apply filter. " - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "search", - "type": "string", - "usage": "Filter data based on the search keyword.Supported search columns(name, number) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\",\"number\");value==\"Cisco\" " - } - ] - }, - { - "path": "webex cc address-book list-entry", - "short": "List Address Book Entry(s)", - "long": "Retrieve a list of Address Book Entry(s) in a given organization.", - "flags": [ - { - "name": "address-book-id", - "type": "string", - "usage": "Resource ID of the Address Book", - "required": true - }, - { - "name": "attributes", - "type": "string", - "usage": "Specify the attributes to be returned.Default all attributes are returned along with specified columns. All Attributes are supported" - }, - { - "name": "filter", - "type": "string", - "usage": "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain space, and if so kindly bound it with quotes to apply filter. " - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-entry" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "search", - "type": "string", - "usage": "Filter data based on the search keyword.Supported search columns(name, number) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\",\"number\");value==\"Cisco\" " - } - ] - }, - { - "path": "webex cc address-book list-references", - "short": "List references for a specific Address Book", - "long": "Retrieve a list of all entities that have reference to an existing Address Book by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-references" - }, - { - "name": "id", - "type": "string", - "usage": "ID of this contact center resource.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "type", - "type": "string", - "usage": "Entity type of the other entity that has a reference to this specific entity." - } - ] - }, - { - "path": "webex cc address-book update", - "aliases": [ - "update-id" - ], - "short": "Update specific Address Book by ID", - "long": "Update an existing Address Book by ID in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "description", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Address Book.", - "required": true - }, - { - "name": "name", - "type": "string" - }, - { - "name": "organization-id", - "type": "string" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "parent-type", - "type": "string" - }, - { - "name": "site-id", - "type": "string" - }, - { - "name": "version", - "type": "int64", - "default": "0" - } - ] - }, - { - "path": "webex cc address-book update-entry-id", - "short": "Update specific Address Book Entry by ID", - "long": "Update an existing Address Book Entry by ID in a given organization.", - "flags": [ - { - "name": "address-book-id", - "type": "string", - "usage": "Resource ID of the Address Book", - "required": true - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-entry-id" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Address Book Entry", - "required": true - }, - { - "name": "name", - "type": "string" - }, - { - "name": "number", - "type": "string" - }, - { - "name": "organization-id", - "type": "string" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "version", - "type": "int64", - "default": "0" - } - ] - }, - { - "path": "webex cc agent-personal-greeting-files", - "short": "AgentPersonalGreetingFiles commands" - }, - { - "path": "webex cc agent-personal-greeting-files create", - "aliases": [ - "create-v2-api" - ], - "short": "Create a new Greeting File", - "long": "Create a new Greeting File in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc agent-personal-greeting-files delete", - "aliases": [ - "delete-id", - "delete-id-v2-api" - ], - "short": "Delete specific Greeting File by ID", - "long": "Delete an existing Greeting File by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Greeting File.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc agent-personal-greeting-files delete-references", - "aliases": [ - "delete-references-1" - ], - "short": "Delete references of an agent from greeting files", - "long": "Removes all references of the specified agent (ciUserId) from greeting files in the given organization. Typically invoked when an agent is deleted or unassigned. in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-references" - }, - { - "name": "orgid", - "type": "string", - "hidden": true - } - ] - }, - { - "path": "webex cc agent-personal-greeting-files download", - "short": "Download an agent personal greeting file to disk", - "long": "Download a Contact Center agent personal greeting file to a local file.\n\nFetches the greeting file metadata (with download URL), then downloads the\nbinary content and writes it to the specified output path.\n\nExamples:\n webex cc agent-personal-greeting-files download --orgid --id --output greeting.wav\n webex cc agent-personal-greeting-files download --orgid --id --output /tmp/greeting.wav --debug", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for download" - }, - { - "name": "id", - "type": "string", - "usage": "Agent personal greeting file ID", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID", - "hidden": true - }, - { - "name": "output", - "type": "string", - "usage": "File path to write greeting to", - "required": true - } - ] - }, - { - "path": "webex cc agent-personal-greeting-files get", - "aliases": [ - "get-id", - "get-id-v2-api" - ], - "short": "Get specific Greeting File by ID", - "long": "Retrieve an existing Greeting File by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Greeting File.", - "required": true - }, - { - "name": "include-url", - "type": "string", - "usage": "Indicates whether the URL for downloading the greeting file should be included in the response." - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc agent-personal-greeting-files list", - "short": "List Greeting Files", - "long": "Retrieve a list of Greeting Files in a given organization.", - "flags": [ - { - "name": "attributes", - "type": "string", - "usage": "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported." - }, - { - "name": "filter", - "type": "string", - "usage": "Specify a filter based on which the results will be fetched. Supported fields are: firstName, lastName, email, ciUserId, and attributeTag. The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. " - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "include-agent-details", - "type": "string", - "usage": "If includeAgentDetails is set to true, projection, filtering, searching, and sorting on the agent's firstName, lastName, and email will be enabled." - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "search", - "type": "string", - "usage": "Filter data based on the search keyword.Supported search columns(firstName, lastName, email, attributeTag) The examples below show some search queries - \"Cisco\" - field==\"firstName\";value==\"Cisco\" - fields=in=(\"firstName\",\"email\");value==\"Cisco\" " - } - ] - }, - { - "path": "webex cc agent-personal-greeting-files patch", - "aliases": [ - "patch-id", - "patch-id-v2-api" - ], - "short": "Partially update Greeting File by ID", - "long": "Partially update Greeting File by ID in a given organization.", - "flags": [ - { - "name": "attribute-tag", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "greeting-purpose-id", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for patch" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Greeting File.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc agent-personal-greeting-files update", - "aliases": [ - "update-id", - "update-id-v2-api" - ], - "short": "Update specific Greeting File by ID", - "long": "Update an existing Greeting File by ID in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Greeting File.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc agent-personal-greeting-files upload", - "short": "Upload a WAV file as a new agent personal greeting", - "long": "Upload an agent personal greeting file (WAV) to Contact Center using multipart/form-data.\n\nThe upload sends two parts: agentPersonalGreetingInfo (JSON metadata) and audioFile (binary).\nIf --name is omitted, the filename (with .wav extension) is used.\nIf --greeting-purpose-id is omitted, the org's system default greeting purpose is used.\n\nExamples:\n webex cc agent-personal-greeting-files upload --agent-id --file greeting.wav\n webex cc agent-personal-greeting-files upload --agent-id --file greeting.wav --name \"Personal Greeting\"\n webex cc agent-personal-greeting-files upload --agent-id --file greeting.wav --greeting-purpose-id \n webex cc agent-personal-greeting-files upload --agent-id --file greeting.wav --dry-run", - "flags": [ - { - "name": "agent-id", - "type": "string", - "usage": "Agent ID (WxCC agent resource ID)", - "required": true - }, - { - "name": "file", - "type": "string", - "usage": "Path to WAV file to upload", - "required": true - }, - { - "name": "greeting-purpose-id", - "type": "string", - "usage": "Greeting purpose ID (defaults to the org's system default purpose)" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for upload" - }, - { - "name": "name", - "type": "string", - "usage": "Greeting name (defaults to filename)" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID", - "hidden": true - } - ] - }, - { - "path": "webex cc agent-summaries", - "short": "AgentSummaries commands" - }, - { - "path": "webex cc agent-summaries list", - "short": "List summaries", - "long": "Lists summaries based on the requested search type.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "interaction-id", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "hidden": true - }, - { - "name": "search-type", - "type": "string" - } - ] - }, - { - "path": "webex cc agent-summaries list-2", - "short": "List summaries", - "long": "Lists summaries based on the requested search type.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-2" - }, - { - "name": "org-id", - "type": "string", - "hidden": true - }, - { - "name": "search-type", - "type": "string" - } - ] - }, - { - "path": "webex cc agent-wellbeing", - "short": "AgentWellbeing commands" - }, - { - "path": "webex cc agent-wellbeing get-burnout-id", - "short": "Get specific Agent Burnout resource by ID", - "long": "Retrieve an existing Agent Burnout resource by ID in a given organization. Deprecated. Use GET /ai-feature/agent-burnout/{id} instead.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-burnout-id" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Agent Burnout resource.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc agent-wellbeing list-burnout", - "short": "List Agent Burnout resource(s)", - "long": "Retrieve a list of Agent Burnout resource(s) in a given organization.Only one entry per organization can exist for Agent Burnout resource. Deprecated. Use GET /v2/ai-feature/agent-burnout instead.", - "flags": [ - { - "name": "attributes", - "type": "string", - "usage": "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported." - }, - { - "name": "filter", - "type": "string", - "usage": "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. " - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-burnout" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - } - ] - }, - { - "path": "webex cc agent-wellbeing record-realtime-burnout-events", - "short": "Record the realtime burnout events", - "long": "The endpoint need to be invoked by Partners and Third-Party that will subscribe to the Agent Burnout system, in order to take certain action based on the agent burnout index calculated.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for record-realtime-burnout-events" - }, - { - "name": "x-organization-id", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization." - } - ] - }, - { - "path": "webex cc agent-wellbeing subscribe-realtime-burnout-events", - "short": "Subscribe for realtime burnout events", - "long": "This endpoint provides real-time burnout events that are generated for agents belonging to the organization. It gives us a WebSocket URL to which we can connect to receive the real-time burnout events.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "description", - "type": "string" - }, - { - "name": "destination-url", - "type": "string" - }, - { - "name": "event-types", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for subscribe-realtime-burnout-events" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "hidden": true - }, - { - "name": "secret", - "type": "string" - }, - { - "name": "x-organization-id", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization." - } - ] - }, - { - "path": "webex cc agent-wellbeing update-burnout-id", - "short": "Update specific Agent Burnout resource by ID", - "long": "Update an existing Agent Burnout resource by ID in a given organization. Deprecated. Use PUT /ai-feature/agent-burnout/{id} instead.", - "flags": [ - { - "name": "agent-inclusion-type", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "created-time", - "type": "int64", - "default": "0" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-burnout-id" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Agent Burnout resource.", - "required": true - }, - { - "name": "last-updated-time", - "type": "int64", - "default": "0" - }, - { - "name": "organization-id", - "type": "string" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "version", - "type": "int64", - "default": "0" - }, - { - "name": "wellness-break-reminders", - "type": "string" - } - ] - }, - { - "path": "webex cc agents", - "short": "Agents commands" - }, - { - "path": "webex cc agents buddy-list", - "short": "Buddy Agents List", - "long": "Returns the list of agents in the given state and media according to agent profile settings. Requires an agent or supervisor access token with the 'cjp:user' scope.", - "flags": [ - { - "name": "agent-profile-id", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for buddy-list" - }, - { - "name": "media-type", - "type": "string" - }, - { - "name": "state", - "type": "string" - } - ] - }, - { - "path": "webex cc agents get-activities", - "short": "Get Agent Activities", - "long": "Retrieve agent activities. Requires a bearer access token authorized to access the requested organization and agent data. Results are sorted by start time in ascending order.\nMaximum number of records that can be fetched for the given from and to is 10,000. \nFor this API, response compression using gzip can be enabled by including 'Accept-Encoding' header in the request with its value as 'gzip'. \nThe response will be compressed only if its size exceeds 1 MB.\nIf the header is not present in the request or if gzip is not listed as one of the encodings in the header's value (comma separated encodings), then API response will not be compressed and this can impact the latency as observed from clients.", - "flags": [ - { - "name": "agent-ids", - "type": "string", - "usage": "Filter agent activities by agent ids separated with commas if more than one value (max 100). By default, there is no agent filtering." - }, - { - "name": "channel-types", - "type": "string", - "usage": "Channel type(s) permitted in response. Separate values with commas. Must be lowercase. By default, there is no channelType filtering." - }, - { - "name": "from", - "type": "string", - "usage": "Filter agent activities created after given epoch timestamp in UTC (in milliseconds)." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-activities" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to use for this operation. If unspecified, inferred from token. Token must have permission to interact with this organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Page number to be passed. Maximum number of records that can be fetched for the given from and to is 10,000. So maximum page number allowed is based on it. Defaults to 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Maximum page size in response. Maximum allowed value is 1000. Defaults to 100 items per page." - }, - { - "name": "team-ids", - "type": "string", - "usage": "Filter agent activities by team ids separated with commas if more than one value (max 100). By default, there is no team filtering." - }, - { - "name": "to", - "type": "string", - "usage": "Filter agent activities created before given epoch timestamp in UTC (in milliseconds). If unspecified, queries up to the present. The difference between to and from timestamps must be less than 24 hours (86400000 milli seconds)" - }, - { - "name": "tracking-id", - "type": "string", - "usage": "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. " - } - ] - }, - { - "path": "webex cc agents get-statistics", - "short": "Get Agent Statistics", - "long": "Retrieve agent statistics for the specified time duration and interval. Requires a bearer access token authorized to access the requested organization and agent data.\nFor this API, response compression using gzip can be enabled by including 'Accept-Encoding' header in the request with its value as 'gzip'. \nThe response will be compressed only if its size exceeds 1 MB.\nIf the header is not present in the request or if gzip is not listed as one of the encodings in the header's value (comma separated encodings), then API response will not be compressed and this can impact the latency as observed from clients.", - "flags": [ - { - "name": "agent-ids", - "type": "string", - "usage": "Comma-separated list of agent IDs. A maximum of 100 values is permitted. If values are not provided, all agents of an organization are returned." - }, - { - "name": "from", - "type": "string", - "usage": "Start time for the query (in epoch milliseconds). Any epoch time can be passed in the input, from date will be rounded down to nearest 15 minute window. For example, epoch time of 12:05 will be rounded down to 12:00." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-statistics" - }, - { - "name": "interval", - "type": "string", - "usage": "Time interval (in minutes) to chunk statistics by i.e. break up the entire from-to timeframe by this interval amount so that statistics can be viewed incrementally. Supported values are 15, 30, or 60." - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to use for this operation. If unspecified, inferred from token. Token must have permission to interact with this organization.", - "hidden": true - }, - { - "name": "to", - "type": "string", - "usage": "End time for the query (in epoch milliseconds). Any epoch time can be passed in the input, from date will be rounded down to nearest 15 minute window. For example, epoch time of 12:55 will be rounded down to 12:45. The difference between to and from time must be less than 24 hours (86400000 milliseconds)." - }, - { - "name": "tracking-id", - "type": "string", - "usage": "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. " - } - ] - }, - { - "path": "webex cc agents login", - "short": "Login", - "long": "Allows the user to login to their desktop. It does not allow a duplicate login and sends an error message over websocket if an active session already exists. Requires the 'cjp:user' scope. When Licensed Administrator access is enabled for the organization, the access token must also contain at least one of the following roles: 'cjp.standard_agent', 'cjp.premium_agent', 'cjp.supervisor', 'cjp.admin', or 'id_full_admin'. A Licensed Administrator logging in with supervisor capabilities must have the 'cjp.admin' or 'id_full_admin' role, the 'cjp.premium_agent' role, and supervisor capabilities enabled. For a list of possible response messages, see the [Call Control API Guide](/documentation/guides/contact-control-apis).", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "device-id", - "type": "string" - }, - { - "name": "device-type", - "type": "string" - }, - { - "name": "dial-number", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for login" - }, - { - "name": "is-extension", - "type": "bool", - "default": "false" - }, - { - "name": "roles", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "team-id", - "type": "string" - } - ] - }, - { - "path": "webex cc agents logout", - "short": "Logout", - "long": "Allows the user to logout from their Desktop. This API needs to be called once the WSS session has been successfully established. Self logout for an agent or supervisor requires the 'cjp:user' scope. Logout on behalf of another user is available to a supervisor with the 'cjp:user' scope and 'cjp.supervisor' role, or to an authorized administrator, help-desk user, or partner with the applicable role: 'id_full_admin', 'id_readonly_admin', 'cjp.admin', 'atlas-portal.partner.salesadmin', 'atlas-portal.partner.helpdesk', or 'atlas-portal.partner.provision_admin'. Partner and external-administrator requests must also be authorized for the managed organization and include the organization and agent identifiers. For a list of possible response messages, see the [Call Control API Guide](/documentation/guides/contact-control-apis).", - "flags": [ - { - "name": "agent-id", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for logout" - }, - { - "name": "logout-reason", - "type": "string" - } - ] - }, - { - "path": "webex cc agents reload", - "short": "Reload", - "long": "Requests restoration of the active agent session, including agent state and assigned interaction context. This asynchronous API returns `202 Accepted` when the request is accepted for processing; the restoration result is delivered over WebSocket. The success notification is selected by the API version persisted when the agent logged in, not by the reload endpoint version. A V1 login session receives `AgentReloginSuccess`, and a V2 login session receives `AgentChannelReloginSuccess`; therefore, either reload endpoint can result in either success notification. The active session remains on its login version until the agent logs out and starts a new session. See [AgentReloginSuccess](/docs/contact-control-apis#agentreloginsuccess) and [AgentChannelReloginSuccess](/docs/contact-control-apis#agentchannelreloginsuccess) in the Contact Control API Guide. Requires the 'cjp:user' scope for authorization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for reload" - } - ] - }, - { - "path": "webex cc agents state-change", - "short": "State Change", - "long": "Allows the user to toggle between the Idle and Available states for the requested channels. Self state changes for an agent or supervisor require the 'cjp:user' scope and an active agent session. Cross-agent state changes require the 'cjp:user' scope and 'cjp.supervisor' role, and are limited to users in the supervisor's authorized teams. A Licensed Administrator can perform a cross-agent state change when Licensed Administrator access is enabled and the token contains the 'cjp.admin' or 'id_full_admin' role together with the 'cjp.premium_agent' role; the administrator must also have supervisor capabilities enabled and access to the target user's team. Agent State Control must be enabled for the organization and requested channels. For a list of possible response messages, see the [Call Control API Guide](/documentation/guides/contact-control-apis).", - "flags": [ - { - "name": "agent-id", - "type": "string" - }, - { - "name": "aux-code-id", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "channel-type", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for state-change" - }, - { - "name": "reason", - "type": "string" - }, - { - "name": "state", - "type": "string" - } - ] - }, - { - "path": "webex cc ai-agent", - "short": "AI Agent Studio agents, tools, publishing, export (unsupported private API)" - }, - { - "path": "webex cc ai-agent create", - "short": "Create AI agent", - "long": "Creates an AI agent. `bot_unique_name` must be unique; Studio's own UI uses the name followed by `-` and 8 random letters and digits. Turning transparency off needs a `disable_reason`. Every new agent gets the system \"Agent handover\" tool.\n\nCaution: this command uses Webex AI Agent Studio's private API, which is not documented or supported by Cisco and can change or stop working without notice. Do not build production automation on it.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - } - ] - }, - { - "path": "webex cc ai-agent create-tool", - "short": "Create AI agent tool", - "long": "Adds a tool (action) to the agent's draft. `input_entities` is required, in JSON Schema form, even when the tool takes no input. Copy a working tool from `get-configuration` for the fulfillment of flow and MCP tools.\n\nCaution: this command uses Webex AI Agent Studio's private API, which is not documented or supported by Cisco and can change or stop working without notice. Do not build production automation on it.", - "flags": [ - { - "name": "agent-id", - "type": "string", - "usage": "AI agent ID.", - "required": true - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-tool" - } - ] - }, - { - "path": "webex cc ai-agent delete", - "short": "Delete AI agent", - "long": "Deletes an AI agent.\n\nCaution: this command uses Webex AI Agent Studio's private API, which is not documented or supported by Cisco and can change or stop working without notice. Do not build production automation on it.", - "flags": [ - { - "name": "agent-id", - "type": "string", - "usage": "AI agent ID.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - } - ] - }, - { - "path": "webex cc ai-agent delete-tool", - "short": "Delete AI agent tool", - "long": "Deletes a tool from the agent's draft.\n\nCaution: this command uses Webex AI Agent Studio's private API, which is not documented or supported by Cisco and can change or stop working without notice. Do not build production automation on it.", - "flags": [ - { - "name": "agent-id", - "type": "string", - "usage": "AI agent ID.", - "required": true - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-tool" - }, - { - "name": "tool_id", - "type": "string" - } - ] - }, - { - "path": "webex cc ai-agent export", - "short": "Export AI agent", - "long": "Exports the agent's draft configuration and tools as one JSON document (`bot_type`, `configuration`, `tools`).\n\nCaution: this command uses Webex AI Agent Studio's private API, which is not documented or supported by Cisco and can change or stop working without notice. Do not build production automation on it.", - "flags": [ - { - "name": "agent-id", - "type": "string", - "usage": "AI agent ID.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for export" - } - ] - }, - { - "path": "webex cc ai-agent get", - "short": "Get AI agent", - "long": "Gets an AI agent's settings. `bot_metadata.ai_engine` here is the engine family; the exact engine is `bot_metadata.engine_identifier`.\n\nCaution: this command uses Webex AI Agent Studio's private API, which is not documented or supported by Cisco and can change or stop working without notice. Do not build production automation on it.", - "flags": [ - { - "name": "agent-id", - "type": "string", - "usage": "AI agent ID.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - } - ] - }, - { - "path": "webex cc ai-agent get-configuration", - "short": "Get AI agent configuration", - "long": "Gets the agent's draft configuration and its tools. `configuration.llm_agent_description` is the prompt. `state` is `saved` when the draft has unpublished changes and `cloned` when it matches the published version.\n\nCaution: this command uses Webex AI Agent Studio's private API, which is not documented or supported by Cisco and can change or stop working without notice. Do not build production automation on it.", - "flags": [ - { - "name": "agent-id", - "type": "string", - "usage": "AI agent ID.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-configuration" - } - ] - }, - { - "path": "webex cc ai-agent list", - "short": "List AI agents", - "long": "Lists the organization's AI agents. Use an agent's `id` as --agent-id. Runtime tokens in the response are redacted.\n\nCaution: this command uses Webex AI Agent Studio's private API, which is not documented or supported by Cisco and can change or stop working without notice. Do not build production automation on it.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "limit", - "type": "string", - "usage": "Maximum number of agents to return." - }, - { - "name": "offset", - "type": "string", - "usage": "Number of agents to skip." - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID.", - "hidden": true - } - ] - }, - { - "path": "webex cc ai-agent list-versions", - "short": "List AI agent versions", - "long": "Lists the draft and the published versions (`state: live`) of the agent's configuration.\n\nCaution: this command uses Webex AI Agent Studio's private API, which is not documented or supported by Cisco and can change or stop working without notice. Do not build production automation on it.", - "flags": [ - { - "name": "agent-id", - "type": "string", - "usage": "AI agent ID.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-versions" - }, - { - "name": "limit", - "type": "string", - "usage": "Maximum number of versions to return." - }, - { - "name": "offset", - "type": "string", - "usage": "Number of versions to skip." - }, - { - "name": "order_by", - "type": "string", - "usage": "Sort field; prefix with - for descending, for example -updated_at." - } - ] - }, - { - "path": "webex cc ai-agent publish", - "short": "Publish AI agent", - "long": "Publishes the agent's draft, so live calls use it. The description labels the version in the history.\n\nCaution: this command uses Webex AI Agent Studio's private API, which is not documented or supported by Cisco and can change or stop working without notice. Do not build production automation on it.", - "flags": [ - { - "name": "agent-id", - "type": "string", - "usage": "AI agent ID.", - "required": true - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "description", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for publish" - } - ] - }, - { - "path": "webex cc ai-agent update", - "short": "Update AI agent", - "long": "Updates an AI agent's draft. `instruction` is the agent's prompt. Top-level fields left out keep their values. Send `bot_metadata.ai_engine` as the exact engine (`engine_identifier` from `get`), not the family that `get` reports in `ai_engine`, or the agent's engine changes. Callers get the change only after `publish`.\n\nCaution: this command uses Webex AI Agent Studio's private API, which is not documented or supported by Cisco and can change or stop working without notice. Do not build production automation on it.", - "flags": [ - { - "name": "agent-id", - "type": "string", - "usage": "AI agent ID.", - "required": true - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - } - ] - }, - { - "path": "webex cc ai-agent update-tool", - "short": "Update AI agent tool", - "long": "Updates a tool in the agent's draft. Send the whole tool as `get-configuration` returns it, with `tool_id` set to its `id`.\n\nCaution: this command uses Webex AI Agent Studio's private API, which is not documented or supported by Cisco and can change or stop working without notice. Do not build production automation on it.", - "flags": [ - { - "name": "agent-id", - "type": "string", - "usage": "AI agent ID.", - "required": true - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-tool" - } - ] - }, - { - "path": "webex cc ai-agent-session", - "short": "AI Agent Studio sessions and messages (unsupported private API)" - }, - { - "path": "webex cc ai-agent-session get", - "short": "Get AI agent session", - "long": "Gets one conversation session.\n\nCaution: this command uses Webex AI Agent Studio's private API, which is not documented or supported by Cisco and can change or stop working without notice. Do not build production automation on it.", - "flags": [ - { - "name": "agent-id", - "type": "string", - "usage": "AI agent ID.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID.", - "hidden": true - }, - { - "name": "session-id", - "type": "string", - "usage": "Session ID.", - "required": true - } - ] - }, - { - "path": "webex cc ai-agent-session list", - "short": "List AI agent sessions", - "long": "Lists the agent's conversation sessions. `is_test` marks preview sessions. For a voice session, `interaction_id` is the Contact Center task ID, which `webex cc captures list` accepts.\n\nCaution: this command uses Webex AI Agent Studio's private API, which is not documented or supported by Cisco and can change or stop working without notice. Do not build production automation on it.", - "flags": [ - { - "name": "agent-id", - "type": "string", - "usage": "AI agent ID.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "limit", - "type": "string", - "usage": "Maximum number of sessions to return." - }, - { - "name": "offset", - "type": "string", - "usage": "Number of sessions to skip." - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID.", - "hidden": true - } - ] - }, - { - "path": "webex cc ai-agent-session list-messages", - "short": "List AI agent session messages", - "long": "Lists a session's messages. In an organization with Advanced Data Protection, the text of live sessions is encrypted; preview sessions are not.\n\nCaution: this command uses Webex AI Agent Studio's private API, which is not documented or supported by Cisco and can change or stop working without notice. Do not build production automation on it.", - "flags": [ - { - "name": "agent-id", - "type": "string", - "usage": "AI agent ID.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-messages" - }, - { - "name": "limit", - "type": "string", - "usage": "Maximum number of messages to return." - }, - { - "name": "offset", - "type": "string", - "usage": "Number of messages to skip." - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID.", - "hidden": true - }, - { - "name": "session-id", - "type": "string", - "usage": "Session ID.", - "required": true - } - ] - }, - { - "path": "webex cc ai-agent-transcript", - "short": "AI Agent Studio audited transcript reads (unsupported private API)" - }, - { - "path": "webex cc ai-agent-transcript create-audit-record", - "short": "Create transcript audit record", - "long": "Records a compliance audit entry for reading a session's transcript, as Studio does before it shows one. `room_id` is the session ID and `message` the reason. The entry is permanent and names the caller, so create one only with a real reason. With a regular Webex login, the messages of an encrypted session stay encrypted after the audit.\n\nCaution: this command uses Webex AI Agent Studio's private API, which is not documented or supported by Cisco and can change or stop working without notice. Do not build production automation on it.", - "flags": [ - { - "name": "agent-id", - "type": "string", - "usage": "AI agent ID.", - "required": true - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "decrypt_audit_type", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-audit-record" - }, - { - "name": "message", - "type": "string" - }, - { - "name": "room_id", - "type": "string" - } - ] - }, - { - "path": "webex cc ai-agent-transcript get-session", - "short": "Get transcript session", - "long": "Gets a session's full record, including `data_encrypted` and its channels.\n\nCaution: this command uses Webex AI Agent Studio's private API, which is not documented or supported by Cisco and can change or stop working without notice. Do not build production automation on it.", - "flags": [ - { - "name": "agent-id", - "type": "string", - "usage": "AI agent ID.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-session" - }, - { - "name": "id", - "type": "string", - "usage": "Session ID." - } - ] - }, - { - "path": "webex cc ai-agent-transcript list-messages", - "short": "List transcript messages", - "long": "Lists a session's messages with full detail: tool calls, classification and `data_encrypted`. For an encrypted session, create an audit record first.\n\nCaution: this command uses Webex AI Agent Studio's private API, which is not documented or supported by Cisco and can change or stop working without notice. Do not build production automation on it.", - "flags": [ - { - "name": "agent-id", - "type": "string", - "usage": "AI agent ID.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-messages" - }, - { - "name": "limit", - "type": "string", - "usage": "Maximum number of messages to return." - }, - { - "name": "offset", - "type": "string", - "usage": "Number of messages to skip." - }, - { - "name": "order_by", - "type": "string", - "usage": "Sort field; prefix with - for descending." - }, - { - "name": "room_id", - "type": "string", - "usage": "Session ID." - } - ] - }, - { - "path": "webex cc ai-assistant", - "short": "AiAssistant commands" - }, - { - "path": "webex cc ai-assistant get-suggestions", - "short": "Get suggestions", - "long": "API for getting suggestions based on transcripts. \n\nNotes:\n- Requires machine account token with scope `cjp:config_read` for WxCC\n- Requires machine account token with scope `cjp-hybrid-conn:read` for WxCCE/CCE.\n- `aiAssistantSkillId` / `source` is required for WxCCE/CCE.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-suggestions" - } - ] - }, - { - "path": "webex cc ai-feature", - "short": "AiFeature commands" - }, - { - "path": "webex cc ai-feature bulk-save-question-mapped-autocsat", - "short": "Bulk save Question mapped to AutoCSAT", - "long": "Create, Update or delete Auto CSAT mapped Question(s) in bulk for Auto CSAT resource in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-save-question-mapped-autocsat" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc ai-feature create-question-mapped-autocsat", - "short": "Create a new Question mapped to AutoCSAT", - "long": "Create a new Auto CSAT mapped Question in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "created-time", - "type": "int64", - "default": "0" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-question-mapped-autocsat" - }, - { - "name": "id", - "type": "string" - }, - { - "name": "last-updated-time", - "type": "int64", - "default": "0" - }, - { - "name": "organization-id", - "type": "string" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "question-id", - "type": "string" - }, - { - "name": "questionnaire-id", - "type": "string" - }, - { - "name": "version", - "type": "int64", - "default": "0" - } - ] - }, - { - "path": "webex cc ai-feature delete-question-mapped-autocsat-id", - "short": "Delete specific Question mapped to AutoCSAT by ID", - "long": "Delete an existing Auto CSAT mapped Question by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-question-mapped-autocsat-id" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Auto CSAT mapped Question.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc ai-feature get", - "aliases": [ - "get-id" - ], - "short": "Get specific AI Feature resource by ID", - "long": "Retrieve an existing AI Feature resource by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the AI Feature resource.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc ai-feature get-question-mapped-autocsat-id", - "short": "Get specific Question mapped to AutoCSAT by ID", - "long": "Retrieve an existing Auto CSAT mapped Question by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-question-mapped-autocsat-id" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Auto CSAT mapped Question.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc ai-feature list", - "short": "List AI Feature resource(s)", - "long": "Retrieve a list of AI Feature resource(s) in a given organization.Only one entry per organization can exist for AI Feature resource.", - "flags": [ - { - "name": "attributes", - "type": "string", - "usage": "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported." - }, - { - "name": "filter", - "type": "string", - "usage": "Specify a filter based on which the results will be fetched. Supported filterable fields: id. The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. " - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - } - ] - }, - { - "path": "webex cc ai-feature list-question-mapped-autocsat", - "short": "List Question mapped to AutoCSAT(s)", - "long": "Retrieve a list of Auto CSAT mapped Question(s) in a given organization.", - "flags": [ - { - "name": "attributes", - "type": "string", - "usage": "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported.(id, questionId, questionnaireId)" - }, - { - "name": "filter", - "type": "string", - "usage": "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. " - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-question-mapped-autocsat" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - } - ] - }, - { - "path": "webex cc ai-feature patch", - "aliases": [ - "patch-id" - ], - "short": "Partially update AI Feature resource by ID", - "long": "Partially update AI Feature resource by ID in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for patch" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the AI Feature resource.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc asset", - "short": "Asset commands" - }, - { - "path": "webex cc asset bulk-save", - "short": "Bulk save Assets", - "long": "Create, Update or delete Assets in bulk in a given organization. Supports CREATE, UPDATE, and DELETE actions in a single request.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-save" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc asset create", - "short": "Create a new Asset", - "long": "Create a new Asset in a given organization. Supports work item assets with the specified channel and data schema.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc asset delete", - "aliases": [ - "delete-id" - ], - "short": "Delete specific Asset by ID", - "long": "Delete an existing Asset by ID in a given organization. Validates whether the asset is associated with any flow before deletion.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Asset", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc asset get", - "aliases": [ - "get-id" - ], - "short": "Get specific Asset by ID", - "long": "Retrieve an existing Asset by ID in a given organization. Set includeChannelName to true to include the channel name in the response.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Asset", - "required": true - }, - { - "name": "include-channel-name", - "type": "string", - "usage": "Include channel name in the response." - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc asset list", - "short": "List Assets", - "long": "Retrieve a list of Assets in a given organization. Supports pagination metadata. Set includeChannelName to true to include the channel name in the response. Set excludeEPAssociated to true to return only assets that are not associated with any Entry Point.", - "flags": [ - { - "name": "attributes", - "type": "string", - "usage": "Supported attributes" - }, - { - "name": "exclude-epassociated", - "type": "string", - "usage": "When true, return only assets that are not associated with any Entry Point." - }, - { - "name": "filter", - "type": "string", - "usage": "Filter expression" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "include-channel-name", - "type": "string", - "usage": "Include channel name in the response." - }, - { - "name": "include-count", - "type": "string", - "usage": "Include count" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "search", - "type": "string", - "usage": "Filter data based on the search keyword.Supported search columns(name) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\");value==\"Cisco\" " - }, - { - "name": "single-object-response", - "type": "string", - "usage": "Specify whether to include array fields in the response. This query parameter should be used only when the response contains a single record. It is not supported for responses with multiple objects and throws an exception." - }, - { - "name": "sort", - "type": "string", - "usage": "Sortable properties" - } - ] - }, - { - "path": "webex cc asset list-references", - "short": "List references for a specific Asset", - "long": "Retrieve a list of all entities that have reference to an existing Asset by ID in a given organization. For example, Entry Points.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-references" - }, - { - "name": "id", - "type": "string", - "usage": "ID of this contact center resource.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "type", - "type": "string", - "usage": "Entity type of the other entity that has a reference to this specific entity." - } - ] - }, - { - "path": "webex cc asset patch", - "aliases": [ - "patch-id" - ], - "short": "Partially update Asset by ID", - "long": "Partially update Asset by ID in a given organization. Supported only for CUSTOM_MESSAGING assets. Send only the fields to change; absent fields retain their current values. webhookConfig is optional; omit it to keep the existing credentials. For WORK_ITEM assets, use PUT instead.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for patch" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Asset", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "value-type", - "type": "string" - } - ] - }, - { - "path": "webex cc asset update", - "aliases": [ - "update-id" - ], - "short": "Update specific Asset by ID", - "long": "Update an existing Asset by ID in a given organization. Supported for WORK_ITEM assets. For CUSTOM_MESSAGING assets, use PATCH instead.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Asset", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc audio-files", - "short": "AudioFiles commands" - }, - { - "path": "webex cc audio-files create", - "short": "Create a new Audio File", - "long": "Create a new Audio File in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc audio-files delete", - "aliases": [ - "delete-id" - ], - "short": "Delete specific Audio File by ID", - "long": "Delete an existing Audio File by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Audio File.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc audio-files download", - "short": "Download an audio file to disk", - "long": "Download a Contact Center audio file binary to a local file.\n\nFetches the audio file metadata (with download URL), then downloads the\nbinary content and writes it to the specified output path.\n\nExamples:\n webex cc audio-files download --id --output prompt.wav\n webex cc audio-files download --id --output /tmp/greeting.wav --debug", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for download" - }, - { - "name": "id", - "type": "string", - "usage": "Audio file resource ID", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID", - "hidden": true - }, - { - "name": "output", - "type": "string", - "usage": "File path to write audio to", - "required": true - } - ] - }, - { - "path": "webex cc audio-files get", - "aliases": [ - "get-id" - ], - "short": "Get specific Audio File by ID", - "long": "Retrieve an existing Audio File by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Audio File.", - "required": true - }, - { - "name": "include-url", - "type": "string", - "usage": "Indicates if the URL for downloading Audio Fileshould be included in the response." - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc audio-files list", - "short": "List Audio File(s)", - "long": "Retrieve a list of Audio File(s) in a given organization.", - "flags": [ - { - "name": "attributes", - "type": "string", - "usage": "Specify the attributes to be returned.Default all attributes are returned along with specified columns. All Attributes are supported except URL" - }, - { - "name": "filter", - "type": "string", - "usage": "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain space, and if so kindly bound it with quotes to apply filter. " - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "search", - "type": "string", - "usage": "Filter data based on the search keyword.Supported search columns(name) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\");value==\"Cisco\" " - } - ] - }, - { - "path": "webex cc audio-files list-references", - "short": "List references for a specific Audio File", - "long": "Retrieve a list of all entities that have reference to an existing Audio File by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-references" - }, - { - "name": "id", - "type": "string", - "usage": "ID of this contact center resource.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "type", - "type": "string", - "usage": "Entity type of the other entity that has a reference to this specific entity." - } - ] - }, - { - "path": "webex cc audio-files patch", - "aliases": [ - "patch-id" - ], - "short": "Partially update Audio File by ID", - "long": "Partially update Audio File by ID in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "description", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for patch" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Audio File.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc audio-files update", - "aliases": [ - "update-id" - ], - "short": "Update specific Audio File by ID", - "long": "Update an existing Audio File by ID in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Audio File.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc audio-files upload", - "short": "Upload a WAV file as a new audio file", - "long": "Upload an audio file (WAV) to Contact Center using multipart/form-data.\n\nThe upload sends two parts: audioFileInfo (JSON metadata) and audioFile (binary).\nIf --name is omitted, the filename (with .wav extension) is used.\n\nExamples:\n webex cc audio-files upload --file prompt.wav\n webex cc audio-files upload --file prompt.wav --name \"Main Greeting\"\n webex cc audio-files upload --file prompt.wav --name \"Main Greeting\" --description \"IVR main menu\"\n webex cc audio-files upload --file prompt.wav --dry-run\n webex cc audio-files upload --file prompt.wav --debug", - "flags": [ - { - "name": "description", - "type": "string", - "usage": "Audio file description" - }, - { - "name": "file", - "type": "string", - "usage": "Path to WAV file to upload", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for upload" - }, - { - "name": "name", - "type": "string", - "usage": "Audio file name (defaults to filename without extension)" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID", - "hidden": true - } - ] - }, - { - "path": "webex cc auto-csat", - "short": "AutoCsat commands" - }, - { - "path": "webex cc auto-csat bulk-save-mapped-question", - "short": "Bulk save Auto CSAT mapped Question(s)", - "long": "Create, Update or delete Auto CSAT mapped Question(s) in bulk for Auto CSAT resource in a given organization. Deprecated. Use POST /ai-feature/auto-csat/question/bulk instead.", - "flags": [ - { - "name": "auto-csat-id", - "type": "string", - "usage": "Resource ID of the Auto CSAT resource", - "required": true - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-save-mapped-question" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc auto-csat create-mapped-question", - "short": "Create a new Auto CSAT mapped Question", - "long": "Create a new Auto CSAT mapped Question in a given organization. Deprecated. Use POST /ai-feature/auto-csat/question instead.", - "flags": [ - { - "name": "auto-csat-id", - "type": "string", - "usage": "Resource ID of the Auto CSAT resource", - "required": true - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "created-time", - "type": "int64", - "default": "0" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-mapped-question" - }, - { - "name": "id", - "type": "string" - }, - { - "name": "last-updated-time", - "type": "int64", - "default": "0" - }, - { - "name": "organization-id", - "type": "string" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "question-id", - "type": "string" - }, - { - "name": "questionnaire-id", - "type": "string" - }, - { - "name": "version", - "type": "int64", - "default": "0" - } - ] - }, - { - "path": "webex cc auto-csat delete-mapped-question-id", - "short": "Delete specific Auto CSAT mapped Question by ID", - "long": "Delete an existing Auto CSAT mapped Question by ID in a given organization. Deprecated. Use DELETE /ai-feature/auto-csat/question/{id} instead.", - "flags": [ - { - "name": "auto-csat-id", - "type": "string", - "usage": "Resource ID of the Auto CSAT resource", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-mapped-question-id" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Auto CSAT mapped Question.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc auto-csat get", - "aliases": [ - "get-id" - ], - "short": "Get specific Auto CSAT resource by ID", - "long": "Retrieve an existing Auto CSAT resource by ID in a given organization. Deprecated. Use GET /ai-feature/auto-csat/{id} instead.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Auto CSAT resource.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc auto-csat get-mapped-question-id", - "short": "Get specific Auto CSAT mapped Question by ID", - "long": "Retrieve an existing Auto CSAT mapped Question by ID in a given organization. Deprecated. Use GET /ai-feature/auto-csat/question/{id} instead.", - "flags": [ - { - "name": "auto-csat-id", - "type": "string", - "usage": "Resource ID of the Auto CSAT resource", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-mapped-question-id" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Auto CSAT mapped Question.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc auto-csat list", - "short": "List Auto CSAT resource(s)", - "long": "Retrieve a list of Auto CSAT resource(s) in a given organization.Only one entry per organization can exist for Auto CSAT resource. Deprecated. Use GET /v2/ai-feature/auto-csat instead.", - "flags": [ - { - "name": "attributes", - "type": "string", - "usage": "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported." - }, - { - "name": "filter", - "type": "string", - "usage": "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. " - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - } - ] - }, - { - "path": "webex cc auto-csat list-mapped-question", - "short": "List Auto CSAT mapped Question(s)", - "long": "Retrieve a list of Auto CSAT mapped Question(s) in a given organization. Deprecated. Use GET /v2/ai-feature/auto-csat/question instead.", - "flags": [ - { - "name": "attributes", - "type": "string", - "usage": "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported.(id, questionId, questionnaireId)" - }, - { - "name": "auto-csat-id", - "type": "string", - "usage": "Resource ID of the Auto CSAT resource", - "required": true - }, - { - "name": "filter", - "type": "string", - "usage": "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. " - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-mapped-question" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - } - ] - }, - { - "path": "webex cc auto-csat update", - "aliases": [ - "update-id" - ], - "short": "Update specific Auto CSAT resource by ID", - "long": "Update an existing Auto CSAT resource by ID in a given organization. Deprecated. Use PUT /ai-feature/auto-csat/{id} instead.", - "flags": [ - { - "name": "agent-inclusion-type", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "created-time", - "type": "int64", - "default": "0" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Auto CSAT resource.", - "required": true - }, - { - "name": "last-updated-time", - "type": "int64", - "default": "0" - }, - { - "name": "organization-id", - "type": "string" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "selected-global-variable-id", - "type": "string" - }, - { - "name": "survey-data-source", - "type": "string" - }, - { - "name": "version", - "type": "int64", - "default": "0" - } - ] - }, - { - "path": "webex cc auxiliary-code", - "short": "AuxiliaryCode commands" - }, - { - "path": "webex cc auxiliary-code bulk-export", - "short": "Bulk export Auxiliary Code(s)", - "long": "Export all Auxiliary Code(s) in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-export" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - } - ] - }, - { - "path": "webex cc auxiliary-code bulk-partial-update", - "short": "Bulk partial update Auxiliary Code(s)", - "long": "Update some or all properties for multiple Auxiliary codes in bulk in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-partial-update" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc auxiliary-code bulk-save", - "short": "Bulk save Auxiliary Code(s)", - "long": "Create, Update or delete Auxiliary Code(s) in bulk in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-save" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc auxiliary-code create", - "short": "Create a new Auxiliary Code", - "long": "Create a new Auxiliary Code in a given organization.", - "flags": [ - { - "name": "active", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "burnout-inclusion", - "type": "string" - }, - { - "name": "default-code", - "type": "bool", - "default": "false" - }, - { - "name": "description", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "id", - "type": "string" - }, - { - "name": "is-system-code", - "type": "bool", - "default": "false" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "organization-id", - "type": "string" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "system-default", - "type": "bool", - "default": "false" - }, - { - "name": "version", - "type": "int64", - "default": "0" - }, - { - "name": "work-type-code", - "type": "string" - }, - { - "name": "work-type-id", - "type": "string" - } - ] - }, - { - "path": "webex cc auxiliary-code delete", - "aliases": [ - "delete-id" - ], - "short": "Delete specific Auxiliary Code by ID", - "long": "Delete an existing Auxiliary Code by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Auxiliary Code.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc auxiliary-code get", - "aliases": [ - "get-id" - ], - "short": "Get specific Auxiliary Code by ID", - "long": "Retrieve an existing Auxiliary Code by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Auxiliary Code", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc auxiliary-code list", - "short": "List Auxiliary Code(s)", - "long": "Retrieve a list of Auxiliary Code(s) in a given organization.", - "flags": [ - { - "name": "attributes", - "type": "string", - "usage": "Specify the attributes to be returned.Default all attributes are returned along with specified columns. All Attributes are supported" - }, - { - "name": "desktop-profile-filter", - "type": "string", - "usage": "If set to true, the API will return only the data that the user has access to according to its Desktop Profile. If set to false, the API will not check for Desktop Profile level access." - }, - { - "name": "filter", - "type": "string", - "usage": "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime, validBurnoutForWrapUpCode, validBurnoutForIdleCode The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain space, and if so kindly bound it with quotes to apply filter. " - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "search", - "type": "string", - "usage": "Filter data based on the search keyword.Supported search columns(name, description) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\",\"description\");value==\"Cisco\" " - }, - { - "name": "supervised-user-id", - "type": "string", - "usage": "User Id of the Agent whose Agent Profile associated Idle Codes are to be fetched." - } - ] - }, - { - "path": "webex cc auxiliary-code list-references", - "short": "List references for a specific Auxiliary Code", - "long": "Retrieve a list of all entities that have reference to an existing Auxiliary Code by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-references" - }, - { - "name": "id", - "type": "string", - "usage": "ID of this contact center resource.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "type", - "type": "string", - "usage": "Entity type of the other entity that has a reference to this specific entity." - } - ] - }, - { - "path": "webex cc auxiliary-code purge-inactive", - "short": "Purge inactive Auxiliary Code(s)", - "long": "Purge inactive Auxiliary Code(s) older than the configured interval for a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for purge-inactive" - }, - { - "name": "next-start-id", - "type": "string", - "usage": "This is the entity ID from which items for the next purge batch with be selected." - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc auxiliary-code update", - "aliases": [ - "update-id" - ], - "short": "Update specific Auxiliary Code by ID", - "long": "Update an existing Auxiliary Code by ID in a given organization.", - "flags": [ - { - "name": "active", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "burnout-inclusion", - "type": "string" - }, - { - "name": "default-code", - "type": "bool", - "default": "false" - }, - { - "name": "description", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Auxiliary Code.", - "required": true - }, - { - "name": "is-system-code", - "type": "bool", - "default": "false" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "organization-id", - "type": "string" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "system-default", - "type": "bool", - "default": "false" - }, - { - "name": "version", - "type": "int64", - "default": "0" - }, - { - "name": "work-type-code", - "type": "string" - }, - { - "name": "work-type-id", - "type": "string" - } - ] - }, - { - "path": "webex cc business-hour", - "short": "BusinessHour commands" - }, - { - "path": "webex cc business-hour bulk-export", - "short": "Bulk export Business Hours resource(s)", - "long": "Export all Business Hours resource(s) in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-export" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - } - ] - }, - { - "path": "webex cc business-hour bulk-save", - "short": "Bulk save Business Hours resources", - "long": "Create, Update or delete Business Hours resources in bulk in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-save" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc business-hour create", - "short": "Create a new Business Hours resource", - "long": "Create a new Business Hours resource in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc business-hour delete", - "aliases": [ - "delete-id" - ], - "short": "Delete specific Business Hours resource by ID", - "long": "Delete an existing Business Hours resource by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Business Hour.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc business-hour get", - "aliases": [ - "get-id" - ], - "short": "Get specific Business Hours resource by ID", - "long": "Retrieve an existing Business Hours resource by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Business Hour.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc business-hour list", - "short": "List Business Hours resources", - "long": "Retrieve a list of Business Hours resources in a given organization.\n Note: Returning array fields in the List (Get All) API response is deprecated. To retrieve the complete resource with all fields, please use the Get-by-ID API instead.", - "flags": [ - { - "name": "attributes", - "type": "string", - "usage": "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported. except (workingHours)" - }, - { - "name": "filter", - "type": "string", - "usage": "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, workingHours, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. " - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "include-count", - "type": "string", - "usage": "Enable this flag to get the count of working hours." - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "search", - "type": "string", - "usage": "Filter data based on the search keyword.Supported search columns(name) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\");value==\"Cisco\" " - }, - { - "name": "single-object-response", - "type": "string", - "usage": "Specify whether to include array fields in the response. This query parameter should be used only when the response contains a single record. It is not supported for responses with multiple objects and throws an exception." - }, - { - "name": "sort", - "type": "string", - "usage": "Sorting criteria in the format: property(, asc | desc). Default sort order is ascending. Supported sortable fields (name, timezone, createdTime, lastUpdatedTime). The examples below show some sort queries - name,asc - timezone,desc " - } - ] - }, - { - "path": "webex cc business-hour list-references", - "short": "List references for a specific Business Hours resource", - "long": "Retrieve a list of all entities that have reference to an existing Business Hours resource by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-references" - }, - { - "name": "id", - "type": "string", - "usage": "ID of this contact center resource.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "type", - "type": "string", - "usage": "Entity type of the other entity that has a reference to this specific entity." - } - ] - }, - { - "path": "webex cc business-hour list-v1", - "short": "List Business Hours (v1)", - "long": "Lists business hours through the v1 route. Items leave out working hours, so read each one for them. Each item carries lastUpdatedTime.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-v1" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Page number, from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Items per page." - } - ] - }, - { - "path": "webex cc business-hour update", - "aliases": [ - "update-id" - ], - "short": "Update specific Business Hours resource by ID", - "long": "Update an existing Business Hours resource by ID in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Business Hour.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc call-monitor", - "aliases": [ - "call-monitoring" - ], - "short": "Live call monitoring sessions: start, barge in, coach, hold, and end" - }, - { - "path": "webex cc call-monitor barge-in", - "aliases": [ - "barge-in-request" - ], - "short": "BargeIn Request", - "long": "Creates a barge-in request to join a call that is already being monitored. Requires the 'cloud-contact-center:pod_conv' scope and either the 'cjp.supervisor' role with a supervisor profile or, when Licensed Administrator access is enabled, the 'cjp.admin' or 'id_full_admin' role together with the 'cjp.premium_agent' role and an administrator profile. When Licensed Administrator access is enabled, contact-center access and supervisor capabilities must also be enabled. The user profile must grant the Call Monitoring Barge In permission.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for barge-in" - }, - { - "name": "task-id", - "type": "string", - "usage": "The unique ID representing the task that needs to be barged by the supervisor.", - "required": true - } - ] - }, - { - "path": "webex cc call-monitor create", - "aliases": [ - "create-request" - ], - "short": "Create Monitoring Request", - "long": "Creates a monitoring request for an ongoing call or the next successful inbound or outbound call. Requires the 'cloud-contact-center:pod_conv' scope and either the 'cjp.supervisor' role with a supervisor profile or, when Licensed Administrator access is enabled, the 'cjp.admin' or 'id_full_admin' role together with the 'cjp.premium_agent' role and an administrator profile. When Licensed Administrator access is enabled, contact-center access and supervisor capabilities must also be enabled. The applicable Call Monitoring profile permissions and resource access are required. When Continuous Scheduled Monitoring is enabled, ad hoc and continuous requests are rejected; use POST /v2/monitor/{taskId} for mid-call monitoring.", - "flags": [ - { - "name": "agents", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "id", - "type": "string" - }, - { - "name": "invisible-mode", - "type": "bool", - "default": "false" - }, - { - "name": "monitor-type", - "type": "string" - }, - { - "name": "queue-ids", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "sites", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "task-id", - "type": "string" - }, - { - "name": "teams", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "tracking-id", - "type": "string" - } - ] - }, - { - "path": "webex cc call-monitor delete", - "aliases": [ - "delete-request" - ], - "short": "Delete Monitoring Request", - "long": "Deletes a monitoring request. Requires the 'cloud-contact-center:pod_conv' scope and either the 'cjp.supervisor' role with a supervisor profile or, when Licensed Administrator access is enabled, the 'cjp.admin' or 'id_full_admin' role together with the 'cjp.premium_agent' role and an administrator profile. When Licensed Administrator access is enabled, contact-center access and supervisor capabilities must also be enabled. The user profile must grant access to the Call Monitoring module. This operation is unavailable when Continuous Scheduled Monitoring is enabled.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "request-id", - "type": "string", - "usage": "The id with which the monitoring request has been created.", - "required": true - } - ] - }, - { - "path": "webex cc call-monitor end", - "aliases": [ - "end-request" - ], - "short": "End Monitoring Request", - "long": "Ends an ongoing monitoring session. Requires the 'cloud-contact-center:pod_conv' scope and either the 'cjp.supervisor' role with a supervisor profile or, when Licensed Administrator access is enabled, the 'cjp.admin' or 'id_full_admin' role together with the 'cjp.premium_agent' role and an administrator profile. When Licensed Administrator access is enabled, contact-center access and supervisor capabilities must also be enabled. The user profile must grant access to the Call Monitoring module.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for end" - }, - { - "name": "task-id", - "type": "string", - "usage": "The unique ID represents the task that needs to end.", - "required": true - } - ] - }, - { - "path": "webex cc call-monitor hold", - "aliases": [ - "hold-request" - ], - "short": "Hold Monitoring Request", - "long": "Places the monitoring session for a call on hold. Requires the 'cloud-contact-center:pod_conv' scope and either the 'cjp.supervisor' role with a supervisor profile or, when Licensed Administrator access is enabled, the 'cjp.admin' or 'id_full_admin' role together with the 'cjp.premium_agent' role and an administrator profile. When Licensed Administrator access is enabled, contact-center access and supervisor capabilities must also be enabled. The user profile must grant access to the Call Monitoring module.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for hold" - }, - { - "name": "task-id", - "type": "string", - "usage": "The unique ID representing the task that needs to be held.", - "required": true - } - ] - }, - { - "path": "webex cc call-monitor list-sessions", - "aliases": [ - "get-sessions" - ], - "short": "Fetch Monitoring Sessions", - "long": "Fetches all active monitoring subscriptions for the requesting user. Requires the 'cloud-contact-center:pod_read' scope and either the 'cjp.supervisor' role with a supervisor profile or, when Licensed Administrator access is enabled, the 'cjp.admin' or 'id_full_admin' role together with the 'cjp.premium_agent' role and an administrator profile. When Licensed Administrator access is enabled, contact-center access and supervisor capabilities must also be enabled. The user profile must grant access to the Call Monitoring module. This operation is unavailable when Continuous Scheduled Monitoring is enabled; use realtime data for active monitoring sessions in that mode.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-sessions" - } - ] - }, - { - "path": "webex cc call-monitor unhold", - "aliases": [ - "unhold-request" - ], - "short": "Unhold Monitoring Request", - "long": "Resumes a monitoring session that is on hold. Requires the 'cloud-contact-center:pod_conv' scope and either the 'cjp.supervisor' role with a supervisor profile or, when Licensed Administrator access is enabled, the 'cjp.admin' or 'id_full_admin' role together with the 'cjp.premium_agent' role and an administrator profile. When Licensed Administrator access is enabled, contact-center access and supervisor capabilities must also be enabled. The user profile must grant access to the Call Monitoring module.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for unhold" - }, - { - "name": "task-id", - "type": "string", - "usage": "The unique ID representing the task that needs to be resumed and was on hold already.", - "required": true - } - ] - }, - { - "path": "webex cc call-monitor whisper-coach", - "aliases": [ - "whisper-coach-request" - ], - "short": "Whisper Coach Request", - "long": "Creates a Whisper Coach request to coach an agent on a call that is already being monitored. Requires the 'cloud-contact-center:pod_conv' scope and either the 'cjp.supervisor' role with a supervisor profile or, when Licensed Administrator access is enabled, the 'cjp.admin' or 'id_full_admin' role together with the 'cjp.premium_agent' role and an administrator profile. When Licensed Administrator access is enabled, contact-center access and supervisor capabilities must also be enabled. The user profile must grant Call Monitoring edit access and the Whisper Coach permission, and Whisper Coach must be enabled for the organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for whisper-coach" - }, - { - "name": "interaction-id", - "type": "string", - "usage": "The unique ID representing the monitored interaction that the supervisor needs to coach.", - "required": true - } - ] - }, - { - "path": "webex cc call-monitoring-config", - "short": "Saved call monitoring configurations" - }, - { - "path": "webex cc call-monitoring-config create", - "short": "Create a new Call Monitoring", - "long": "Create a new Call Monitoring in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc call-monitoring-config delete", - "short": "Delete specific Call Monitoring by ID", - "long": "Delete an existing Call Monitoring by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Call Monitoring.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc call-monitoring-config delete-references", - "short": "delete References Call Monitoring", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-references" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc call-monitoring-config get", - "short": "Get specific Call Monitoring by ID", - "long": "Retrieve an existing Call Monitoring by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Call Monitoring.", - "required": true - }, - { - "name": "include-filter-details", - "type": "string", - "usage": "If set to true, the API response will include entity details (names) for teams, agents, and contact service queues." - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc call-monitoring-config list", - "short": "List Call Monitoring Configurations", - "long": "Retrieve a list of Call Monitoring Configurations in a given organization. Note: Returning array fields in the List (Get All) API response is deprecated. To retrieve the complete resource with all fields, please use the Get-by-ID API instead.", - "flags": [ - { - "name": "attributes", - "type": "string", - "usage": "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported. except teams, agents, contactServiceQueues The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. " - }, - { - "name": "filter", - "type": "string", - "usage": "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, teams, agents, contactServiceQueues, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. " - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "include-filters-count", - "type": "string", - "usage": "If set to true, the API response will include the count of specific agents, teams, and contact service queues associated with the call monitoring schedule." - }, - { - "name": "include-total-call-monitoring-count-in-org", - "type": "string", - "usage": "If set to true, the API response will include the total number of call monitoring schedules for the organization in the metadata." - }, - { - "name": "include-user-details", - "type": "string", - "usage": "If set to true, the API response will include user details (firstName, lastName, email) for the userId field." - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "search", - "type": "string", - "usage": "Filter data based on the search keyword.Supported search columns(name) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\");value==\"Cisco\" " - } - ] - }, - { - "path": "webex cc call-monitoring-config patch", - "short": "Partially update Call Monitoring by ID", - "long": "Partially update Call Monitoring by ID in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for patch" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Call Monitoring.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc call-monitoring-config update", - "short": "Update specific Call Monitoring by ID", - "long": "Update an existing Call Monitoring by ID in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Call Monitoring.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc callbacks", - "short": "Callbacks commands" - }, - { - "path": "webex cc callbacks delete-scheduled-id", - "short": "Delete scheduled callback by Id", - "long": "Delete an existing scheduled callback by Id, those whose scheduled trigger time has already passed cannot be deleted. Requires 'cjp:user' scope for authorization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-scheduled-id" - }, - { - "name": "id", - "type": "string", - "usage": "The id with which the Scheduled Callback has been created.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "The organization ID for which the callback is being scheduled. This should be a valid UUID.", - "hidden": true - } - ] - }, - { - "path": "webex cc callbacks get-scheduled", - "short": "Get scheduled callbacks", - "long": "Allows the user to list scheduled callbacks for a given customer number or assignee agent, excluding those whose scheduled trigger time has already passed. Requires 'cjp:user' scope for authorization.", - "flags": [ - { - "name": "assignee-agent", - "type": "string", - "usage": "The unique identifier of the agent assigned to handle the callback. Must be in UUID format. This parameter is optional, but at least one of assigneeAgent or callbackNumber must be provided." - }, - { - "name": "callback-number", - "type": "string", - "usage": "The callback customer number to filter the scheduled callbacks. Only an exact match will yield the result. Allows an optional country code followed by digits (0-9) and the special characters: space, hyphen -, parentheses ( and ), and period ., ensuring the total length is between 7 and 15 characters." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-scheduled" - }, - { - "name": "orgid", - "type": "string", - "usage": "The organization ID for which the callback is being scheduled. This should be a valid UUID.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "The page number to retrieve." - }, - { - "name": "page-size", - "type": "string", - "usage": "The number of items per page." - }, - { - "name": "sort-by", - "type": "string", - "usage": "The field to sort the results by. If `sortBy` is set to `assignedTime`, the `assigneeAgent` parameter must also be provided." - }, - { - "name": "sort-order", - "type": "string", - "usage": "The order to sort the results in." - } - ] - }, - { - "path": "webex cc callbacks get-scheduled-id", - "short": "Get scheduled callback by Id", - "long": "Retrieve an existing scheduled callback by Id, excluding those whose scheduled trigger time has already passed. Requires 'cjp:user' scope for authorization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-scheduled-id" - }, - { - "name": "id", - "type": "string", - "usage": "The id with which the Scheduled Callback has been created.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "The organization ID for which the callback is being scheduled. This should be a valid UUID.", - "hidden": true - } - ] - }, - { - "path": "webex cc callbacks schedule", - "short": "Schedule a Callback", - "long": "Creates a new callback request for a customer. Authorization requires the cjp:user scope. The callback default endpoint (EP) and default ANI must be configured as mandatory settings to successfully make API calls.", - "flags": [ - { - "name": "assignee-agent", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "callback-number", - "type": "string" - }, - { - "name": "callback-reason", - "type": "string" - }, - { - "name": "customer-name", - "type": "string" - }, - { - "name": "end-time", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for schedule" - }, - { - "name": "orgid", - "type": "string", - "usage": "The organization ID for which the callback is being scheduled. This should be a valid UUID.", - "hidden": true - }, - { - "name": "queue-id", - "type": "string" - }, - { - "name": "schedule-date", - "type": "string" - }, - { - "name": "source-interaction", - "type": "string" - }, - { - "name": "start-time", - "type": "string" - }, - { - "name": "timezone", - "type": "string" - } - ] - }, - { - "path": "webex cc callbacks update-scheduled-id", - "short": "Update scheduled callback by Id", - "long": "Update an existing scheduled callback by Id,those whose scheduled trigger time has already passed cannot be updated. Requires 'cjp:user' scope for authorization.", - "flags": [ - { - "name": "assignee-agent", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "callback-number", - "type": "string" - }, - { - "name": "callback-reason", - "type": "string" - }, - { - "name": "customer-name", - "type": "string" - }, - { - "name": "end-time", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-scheduled-id" - }, - { - "name": "id", - "type": "string", - "usage": "The id with which the Scheduled Callback has been created.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "The organization ID for which the callback is being scheduled. This should be a valid UUID.", - "hidden": true - }, - { - "name": "queue-id", - "type": "string" - }, - { - "name": "schedule-date", - "type": "string" - }, - { - "name": "source-interaction", - "type": "string" - }, - { - "name": "start-time", - "type": "string" - }, - { - "name": "timezone", - "type": "string" - } - ] - }, - { - "path": "webex cc campaign-group", - "short": "CampaignGroup commands" - }, - { - "path": "webex cc campaign-group list", - "short": "List Campaigns by Campaign Group", - "long": "Retrieves the list of campaigns that belong to the specified campaign group. Results are paginated and can optionally be filtered by campaign status.\n\n**Note:** The `campaignStatus` filter is case-insensitive. Allowed values are `Draft`, `Running`, `Pending`, `Paused`, `Completed`, `Ended`. Unknown values will result in a 400 response.", - "flags": [ - { - "name": "campaign-group-name", - "type": "string", - "usage": "The name of the campaign group whose campaigns are to be retrieved. Case-insensitive matching. **Allowed characters:** - `A-Z`, `a-z`, `0-9`, `_` (underscore), space **Allowed Length** `1..64`", - "required": true - }, - { - "name": "campaign-status", - "type": "string", - "usage": "Optional filter for campaign status. Case-insensitive. Allowed values: `Draft`, `Running`, `Pending`, `Paused`, `Completed`, `Ended`." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "page", - "type": "string", - "usage": "The page number of the result set to retrieve (1-based)." - }, - { - "name": "page-size", - "type": "string", - "usage": "The number of campaigns to return per page. Must be between 1 and 100." - } - ] - }, - { - "path": "webex cc campaign-manager", - "short": "CampaignManager commands" - }, - { - "path": "webex cc campaign-manager get-valid-times", - "short": "Get Valid Campaign Times", - "long": "Gets valid campaign times for a campaign and agent. This request is accepted for asynchronous processing. Requires 'cjp:user','cjp.config_write' scope and one of the following roles: 'cjp.admin','id_full_admin','atlas-portal.partner.salesadmin','atlas-portal.partner.provision_admin' for authorization.", - "flags": [ - { - "name": "agent-id", - "type": "string", - "usage": "The agent ID for whom valid campaign times are being requested." - }, - { - "name": "campaign-id", - "type": "string", - "usage": "The campaign ID for which valid campaign times are being requested." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-valid-times" - }, - { - "name": "interaction-id", - "type": "string", - "usage": "The unique identifier of the interaction associated with this request." - }, - { - "name": "orgid", - "type": "string", - "usage": "The organization ID for which valid campaign times are being requested.", - "hidden": true - }, - { - "name": "tracking-id", - "type": "string", - "usage": "Optional tracking identifier for request tracing." - } - ] - }, - { - "path": "webex cc campaign-manager start-request", - "short": "Start Campaign Request", - "long": "A start campaign API allows businesses to programmatically start outbound campaigns using their own software applications. This type of API typically allows businesses to set up the parameters for a campaign, such as the list of phone numbers to call, the message or script to deliver, and the time of day or day of the week to call. Requires 'cjp.config_write' scope and one of the following roles: 'cjp.admin','id_full_admin','atlas-portal.partner.salesadmin','atlas-portal.partner.provision_admin' for authorization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for start-request" - } - ] - }, - { - "path": "webex cc campaign-manager stop-request", - "short": "Stop Campaign Request", - "long": "The stop campaign API enables businesses to automate the process of managing outbound campaigns and integrate campaign deletion into their existing workflows or applications. Requires 'cjp.config_write' scope and one of the following roles: 'cjp.admin','id_full_admin','atlas-portal.partner.salesadmin','atlas-portal.partner.provision_admin' for authorization.", - "flags": [ - { - "name": "campaign-id", - "type": "string", - "usage": "The unique request id of the campaign that needs to be stopped", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for stop-request" - } - ] - }, - { - "path": "webex cc campaign-manager update-request", - "short": "Update Campaign Request", - "long": "By using an update campaign API, businesses can automate the process of modifying and managing outbound campaigns, and integrate campaign updates into their existing workflows or applications. This can help to improve efficiency and reduce errors, as well as allow for greater flexibility and control over outbound campaigns. Requires 'cjp.config_write' scope and one of the following roles: 'cjp.admin','id_full_admin','atlas-portal.partner.salesadmin','atlas-portal.partner.provision_admin' for authorization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "campaign-id", - "type": "string", - "usage": "The unique request id of the campaign that needs to be updated", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-request" - } - ] - }, - { - "path": "webex cc captures", - "short": "Captures commands" - }, - { - "path": "webex cc captures list", - "short": "List Captures", - "long": "Retrieve a list of Captures given a set of task IDs.\n\n### Captures Availability\n\nNot all tasks will have captures by default and they will be available based on the organization's configurations and retention policy. Querying closed tasks is recommended, as open tasks may return incomplete data.\n\nTranscripts retrieved through this API are post-interaction artifacts.\n- For voice, transcripts are available when at least one transcript based configuration/feature is enabled such as Auto CSAT, Agent Well Being, Call Drop Summary, Topics Analytics.\n\n- For digital channels such as Chat, Email, Social, Work Item, and Custom Messaging, transcripts are generated from the conversation messages. Please refer [guide for digital transcripts](/docs/guide-for-digital-transcripts) for more details\n\n### URL Expiry\n\nThe maximum duration of validity of pre signed URL or default value when no value is passed for urlExpiration is 60 minutes.\n\n### Authentication & Authorization\n\nThis API requires a valid bearer token. The caller must satisfy the scope and role requirements for one of the following:\n\n#### Service App\n- **Required Scope:** `cjp:config_read`\n- The `orgId` must be provided in the request body and must match the token's org.\n- For service app setup, refer to [Contact Center Service Apps](/docs/contact-center-service-apps).\n\n#### Org Admin\n- **Required Scopes:** `Identity:SCIM` and `Identity:Organization`\n- **Required Role (one of):** `id_full_admin`, `id_readonly_admin`, `cjp.admin`, or `atlas-portal.partner.provision_admin`\n- The user must belong to the organization being queried. If `orgId` is provided in the request body, it must match the token's org. If `orgId` is omitted, it is inferred from the token.\n\n#### Partner Admin\n- **Required Scope:** `Identity:SCIM` for the managed org\n- **Required Role:** `atlas-portal.partner.salesadmin`\n- The org ID must be included in the managed org list. This is accomplished by adding the org to the `Managed customer orgs` list in control hub.\n\n#### Supervisor\n- **Required Role:** `cjp.supervisor`\n- The user must belong to the organization being queried. If `orgId` is provided in the request body, it must match the token's org. If `orgId` is omitted, it is inferred from the token.\n\n**Note:** Please refer to the contact center setup documentation for the configuration details.\n\n", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - } - ] - }, - { - "path": "webex cc channel", - "short": "Channel commands" - }, - { - "path": "webex cc channel bulk-save", - "short": "Bulk save Channels", - "long": "Create, Update or delete Channels in bulk in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-save" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc channel create", - "short": "Create a new Channel", - "long": "Create a new Channel in a given organization. Supports custom channels for work items.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc channel delete", - "aliases": [ - "delete-id" - ], - "short": "Delete specific Channel by ID", - "long": "Delete an existing Channel by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Channel", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc channel get", - "aliases": [ - "get-id" - ], - "short": "Get specific Channel by ID", - "long": "Retrieve an existing Channel by ID in a given organization. Set includeLogoUrlVersioned to true to include logoUrlVersioned in the response.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Channel", - "required": true - }, - { - "name": "include-logo-url-versioned", - "type": "string", - "usage": "Include logoUrlVersioned in the response." - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc channel list", - "short": "List Channels", - "long": "Retrieve a list of Channels in a given organization. Supports pagination metadata. Set includeLogoUrlVersioned to true to include logoUrlVersioned in the response. Note: Returning array fields in the List (Get All) API response is deprecated. To retrieve the complete resource with all fields, please use the Get-by-ID API instead.", - "flags": [ - { - "name": "attributes", - "type": "string", - "usage": "Supported attributes" - }, - { - "name": "filter", - "type": "string", - "usage": "Filter expression" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "include-count", - "type": "string", - "usage": "If set to true, the API response includes the asset count." - }, - { - "name": "include-logo-url-versioned", - "type": "string", - "usage": "Include logoUrlVersioned in the response." - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "search", - "type": "string", - "usage": "Filter data based on the search keyword.Supported search columns(name) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\");value==\"Cisco\" " - }, - { - "name": "single-object-response", - "type": "string", - "usage": "Specify whether to include array fields in the response. This query parameter should be used only when the response contains a single record. It is not supported for responses with multiple objects and throws an exception." - }, - { - "name": "sort", - "type": "string", - "usage": "Sortable properties" - } - ] - }, - { - "path": "webex cc channel list-references", - "short": "List references for a specific Channel", - "long": "Retrieve a list of all entities that have reference to an existing Channel by ID in a given organization. Includes Asset and Entry Point entities that reference the channel.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-references" - }, - { - "name": "id", - "type": "string", - "usage": "ID of this contact center resource.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "type", - "type": "string", - "usage": "Entity type of the other entity that has a reference to this specific entity." - } - ] - }, - { - "path": "webex cc channel patch", - "aliases": [ - "patch-id" - ], - "short": "Partially update Channel by ID", - "long": "Partially update a channel by ID. Only the supplied fields are changed; absent fields retain their current values. Patchable fields: name, description, logoType (MOMENTUM only), logoIconName. logoUrl and logoUrlVersioned cannot be changed by using PATCH; use PUT to update the logo image. channelType cannot be changed after creation. in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "description", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for patch" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Channel", - "required": true - }, - { - "name": "logo-icon-name", - "type": "string" - }, - { - "name": "logo-type", - "type": "string" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc channel update", - "aliases": [ - "update-id" - ], - "short": "Update specific Channel by ID", - "long": "Update an existing Channel by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Channel", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc contact-list-management", - "short": "ContactListManagement commands" - }, - { - "path": "webex cc contact-list-management create", - "short": "Create contact list", - "long": "Creates and activates a contact list for a campaign. The system can activate a contact list even if there are no contact records within it.", - "flags": [ - { - "name": "activation-date-time", - "type": "string" - }, - { - "name": "activation-time-lag-minutes", - "type": "int64", - "default": "0" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "campaign-id", - "type": "string", - "usage": "Campaign ID to which the contact list belongs.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "supported-channels", - "type": "stringSlice", - "default": "[]" - } - ] - }, - { - "path": "webex cc contact-list-management create-within", - "short": "Create contacts within a contact list", - "long": "Creates contacts within a contact list (only if that contact list was created using API method). If the contact record is invalid, it will be added as INVALID and reflected in the 'Processed' and 'Invalid' counts. This is an Asynchronous operation. The values within the 'contactAttributes' param should conform to datatypes of the contact attributes as specified in the 'Field mapping' associated with the campaign.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "campaign-id", - "type": "string", - "usage": "Campaign ID to which the contact list belongs.", - "required": true - }, - { - "name": "contact-list-id", - "type": "string", - "usage": "Contact List ID (as a number string).", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-within" - } - ] - }, - { - "path": "webex cc contact-list-management get-within-campaign", - "short": "Get Contact Lists within a Campaign", - "long": "Retrieves all contact lists within a campaign. Use the optional `status` and `source` query parameters to filter results.\n\nEach contact list in the response includes the source file name, the time contact counts were last updated, and a breakdown of contact counts by processing and dialer status (for example, processed, invalid, valid, eligible, fresh, open, closed, and ready for dialer).\n\nResponses may reflect the same data for up to 30 seconds when the same campaign and filters are requested repeatedly.", - "flags": [ - { - "name": "campaign-id", - "type": "string", - "usage": "Campaign ID.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-within-campaign" - }, - { - "name": "source", - "type": "string", - "usage": "Contact List Source filter (API, SFTP, ManualFile)" - }, - { - "name": "status", - "type": "string", - "usage": "Contact List Status filter (Active, Expired, UploadFailed, etc.)" - } - ] - }, - { - "path": "webex cc contact-list-management update-status", - "short": "Update contact list status", - "long": "Updates the status of a contact list (e.g., EXPIRED). Note: This value is not case-sensitive.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "campaign-id", - "type": "string", - "usage": "Campaign ID.", - "required": true - }, - { - "name": "contact-list-id", - "type": "string", - "usage": "Contact List ID (as a number string).", - "required": true - }, - { - "name": "contact-list-status", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-status" - } - ] - }, - { - "path": "webex cc contact-list-management update-status-across-campaign-chain", - "short": "Update contact status across the campaign chain", - "long": "Synchronously closes the specified contacts and returns the outcome in the same response. Contacts are identified using the same unique identifiers configured in your campaign field mappings, such as Contact Phone (format as per the associated field mapping) or Customer Unique ID or Account Unique ID (For more info, please refer to the [global variables help documentation](https://docs-campaign-for-contact-centers.webexcampaign.com/docs/global-variables)).\n\n By default, the API searches the specified campaign and any of its downstream target campaigns in the chain (across all active contact-lists associated with these campaigns), and closes the contact wherever it is found in a closeable state. Set `searchAcrossTheCampaignChain` to `no` to close the contact only in the campaign specified in the request path.\n\n**Optional query parameters**\n\n- `contactListId` - Search only the specific contact-list within the campaign specified in the request path. If `searchAcrossTheCampaignChain` is set to `yes` then all active contact-lists in the other downstream target campaigns in the chain are also searched.\n- `fields` - Return specified contact field values in the response for the matching contact records (for example: FirstName, LastName, AmountDue).", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "campaign-id", - "type": "string", - "usage": "Campaign ID (as a string). All downstream target campaigns in the chain are included in the search.", - "required": true - }, - { - "name": "contact-id", - "type": "string", - "usage": "Contact Unique ID (Contact Phone or Customer Unique ID or Account Unique ID)", - "required": true - }, - { - "name": "contact-list-id", - "type": "string", - "usage": "Optional. Search only the specific contact-list within the campaign specified in the request path. If `searchAcrossTheCampaignChain` is set to `yes`, then all active contact-lists in the other downstream target campaigns in the chain are also searched. When omitted, all active contact lists in that campaign are searched." - }, - { - "name": "contact-status", - "type": "string" - }, - { - "name": "fields", - "type": "string", - "usage": "Optional. Contact field names to include in the response (comma-separated names)." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-status-across-campaign-chain" - }, - { - "name": "search-across-the-campaign-chain", - "type": "string" - } - ] - }, - { - "path": "webex cc contact-list-management update-status-within", - "short": "Update a contact's status within a contact list", - "long": "Updates a contact's status within a contact list. After update, system overwrites 'Latest Telephony Outcome' to blank and 'Latest Business Outcome' to 'Closed via API call' if status is CLOSED. This is an Asynchronous operation.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "campaign-id", - "type": "string", - "usage": "Campaign ID.", - "required": true - }, - { - "name": "contact-id", - "type": "string", - "usage": "Contact Unique ID (Contact Phone or Customer Unique ID or Account Unique ID)", - "required": true - }, - { - "name": "contact-list-id", - "type": "string", - "usage": "Contact List ID (as a number string).", - "required": true - }, - { - "name": "contact-status", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-status-within" - } - ] - }, - { - "path": "webex cc contact-number", - "short": "ContactNumber commands" - }, - { - "path": "webex cc contact-number bulk-export", - "short": "Bulk export Contact Number(s)", - "long": "Export all Contact Number(s) in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-export" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - } - ] - }, - { - "path": "webex cc contact-number bulk-save", - "short": "Bulk save Contact Number(s)", - "long": "Create, Update or delete Contact Number(s) in bulk in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-save" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc contact-number create", - "short": "Create a new Contact Number", - "long": "Create a new Contact Number in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "id", - "type": "string" - }, - { - "name": "number", - "type": "string" - }, - { - "name": "organization-id", - "type": "string" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "version", - "type": "int64", - "default": "0" - } - ] - }, - { - "path": "webex cc contact-number delete", - "aliases": [ - "delete-id" - ], - "short": "Delete specific Contact Number by ID", - "long": "Delete an existing Contact Number by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Contact Number.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc contact-number get", - "aliases": [ - "get-id" - ], - "short": "Get specific Contact Number by ID", - "long": "Retrieve an existing Contact Number by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Contact Number.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc contact-number list", - "short": "List Contact Number(s)", - "long": "Retrieve a list of Contact Number(s) in a given organization.", - "flags": [ - { - "name": "attributes", - "type": "string", - "usage": "Specify the attributes to be returned.Default all attributes are returned along with specified columns. All Attributes are supported" - }, - { - "name": "filter", - "type": "string", - "usage": "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain space, and if so kindly bound it with quotes to apply filter. " - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "search", - "type": "string", - "usage": "Filter data based on the search keyword." - } - ] - }, - { - "path": "webex cc contact-number list-all", - "short": "List all contact numbers(property - number)", - "long": "Retrieve a list of only contact numbers(property - number) from Contact Number(s) without pagination in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-all" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc contact-number update", - "aliases": [ - "update-id" - ], - "short": "Update specific Contact Number by ID", - "long": "Update an existing Contact Number by ID in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Contact Number.", - "required": true - }, - { - "name": "number", - "type": "string" - }, - { - "name": "organization-id", - "type": "string" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "version", - "type": "int64", - "default": "0" - } - ] - }, - { - "path": "webex cc contact-service-queue", - "short": "ContactServiceQueue commands" - }, - { - "path": "webex cc contact-service-queue bulk-export", - "short": "Bulk export Contact Service Queue(s)", - "long": "Export all Contact Service Queue(s) in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-export" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "type", - "type": "string", - "usage": "Indicates the queue type; can be INBOUND or OUTBOUND." - } - ] - }, - { - "path": "webex cc contact-service-queue bulk-partial-update", - "short": "Bulk partial update Contact Service Queues", - "long": "Update some or all properties for multiple Contact Service Queues in bulk in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-partial-update" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc contact-service-queue bulk-save", - "short": "Bulk save Contact Service Queues", - "long": "Create, Update or delete Contact Service Queues in bulk in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-save" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc contact-service-queue create", - "short": "Create a new Contact Service Queue", - "long": "Create a new Contact Service Queue in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc contact-service-queue create-remove-agents-users-agent", - "short": "Add or remove agents/users to/from an agent based queue", - "long": "This API can be used by a contact center supervisor to add or remove agents to or from an agent-based queue that they can access through their user profile access rights. Additionally, the request payload should contain the user ID(s) managed by the supervisor.", - "flags": [ - { - "name": "add", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-remove-agents-users-agent" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Contact Service Queue.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "remove", - "type": "stringSlice", - "default": "[]" - } - ] - }, - { - "path": "webex cc contact-service-queue delete", - "aliases": [ - "delete-id" - ], - "short": "Delete specific Contact Service Queue by ID", - "long": "Delete an existing Contact Service Queue by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Contact Service Queue.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc contact-service-queue delete-references", - "aliases": [ - "delete-csq-references" - ], - "short": "Delete references from Contact Service Queues", - "long": "Removes the references to the specified entities (such as teams, sites, or agents) from Contact Service Queues for a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-references" - }, - { - "name": "orgid", - "type": "string", - "hidden": true - } - ] - }, - { - "path": "webex cc contact-service-queue get", - "aliases": [ - "get-id" - ], - "short": "Get specific Contact Service Queue by ID", - "long": "Retrieve an existing Contact Service Queue by ID in a given organization.", - "flags": [ - { - "name": "agents-updated-info", - "type": "string", - "usage": "If `true`, returns the user details who has last updated the agents list in an agent based queue." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Contact Service Queue.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc contact-service-queue list", - "short": "List Contact Service Queues", - "long": "Retrieve a list of Contact Service Queues in a given organization.\n Note: Returning array fields in the List (Get All) API response is deprecated. To retrieve the complete resource with all fields, please use the Get-by-ID API instead. Deprecated. Use GET /v2/contact-service-queue instead.", - "flags": [ - { - "name": "attributes", - "type": "string", - "usage": "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported. except (callDistributionGroups,queueSkillRequirements,links)" - }, - { - "name": "desktop-profile-filter", - "type": "string", - "usage": "If set to true, the API will return only the data that the user has access to according to its Desktop Profile. If unspecified, the default value is false." - }, - { - "name": "filter", - "type": "string", - "usage": "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, queueSkillRequirements, xspVersion, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. " - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "provisioning-view", - "type": "string", - "usage": "If set to true, the API will only return data that the user has access to, according to the User Profile. This query parameter is applicable only when desktopProfileFilter query parameter is false." - }, - { - "name": "search", - "type": "string", - "usage": "Filter data based on the search keyword.Supported search columns(name, description) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\",\"description\");value==\"Cisco\" " - }, - { - "name": "single-object-response", - "type": "string", - "usage": "Specify whether to include array fields in the response. This query parameter should be used only when the response contains a single record. It is not supported for responses with multiple objects and throws an exception." - } - ] - }, - { - "path": "webex cc contact-service-queue list-agent-based", - "short": "List agent-based Contact Service Queues by user ID", - "long": "Retrieve a list of agent-based Contact Service Queues by user ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-agent-based" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "search", - "type": "string", - "usage": "Filter data based on the search keyword.Supported search columns(firstName, lastName, email) The examples below show some search queries - \"Cisco\" - field==\"firstName\";value==\"Cisco\" - fields=in=(\"firstName\",\"lastName\");value==\"Cisco\" " - }, - { - "name": "userid", - "type": "string", - "required": true - } - ] - }, - { - "path": "webex cc contact-service-queue list-agent-csqs-ci-user-id", - "short": "List Agent CSQs by CI User ID", - "long": "Retrieve agent-based Contact Service Queues by CI user ID for internal use in a given organization.", - "flags": [ - { - "name": "ci-user-id", - "type": "string", - "usage": "ciUserId", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-agent-csqs-ci-user-id" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc contact-service-queue list-by-dynamic-skills", - "aliases": [ - "list-csqs-skills-profile" - ], - "short": "List skill-based Contact Service Queues by dynamic skills and skill profile", - "long": "Retrieve a list of skill-based Contact Service Queues that match the given dynamic skills and skill profile criteria in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-by-dynamic-skills" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc contact-service-queue list-by-skill-profile", - "aliases": [ - "list-skill-csqs-skill-profile" - ], - "short": "List skill-based Contact Service Queues by skill profile ID (public)", - "long": "Retrieve a list of skill-based Contact Service Queues associated with a given skill profile ID, accessible to authorized clients in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-by-skill-profile" - }, - { - "name": "id", - "type": "string", - "usage": "ID of this contact center resource.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc contact-service-queue list-by-user-skill-profile", - "aliases": [ - "list-csqs-user-profile" - ], - "short": "List skill-based Contact Service Queues by skill profile ID and user ID", - "long": "Retrieve a list of skill-based Contact Service Queues associated with the given skill profile ID and user ID combination in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-by-user-skill-profile" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc contact-service-queue list-internal-skill-csqs-profile", - "short": "List Internal Skill CSQs by Profile", - "long": "Retrieve skill-based Contact Service Queues by skill profile ID for internal use in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-internal-skill-csqs-profile" - }, - { - "name": "id", - "type": "string", - "usage": "ID of this contact center resource.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc contact-service-queue list-manually-assignable", - "aliases": [ - "list-manually-assignable-csqs" - ], - "short": "List manually assignable Contact Service Queues", - "long": "Retrieve a list of Contact Service Queues that are eligible for manual contact assignment based on the provided criteria in a given organization.", - "flags": [ - { - "name": "agent-id", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-manually-assignable" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "team-id", - "type": "string" - } - ] - }, - { - "path": "webex cc contact-service-queue list-mapping-summary-grouped-assistant-skill", - "short": "List queue mapping summary grouped by Assistant Skill", - "long": "Retrieve a list of queue mapping summary for a specified list of Assistant Skills specified in a given organization. The summary currently includes mapped queue count, and the last assigned time of queue mapping.", - "flags": [ - { - "name": "assistant-skill-ids", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-mapping-summary-grouped-assistant-skill" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - } - ] - }, - { - "path": "webex cc contact-service-queue list-references", - "aliases": [ - "list-csq-references-id" - ], - "short": "List references for a specific Contact Service Queue", - "long": "Retrieve a list of all entities that have reference to an existing Contact Service Queue by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-references" - }, - { - "name": "id", - "type": "string", - "usage": "ID of this contact center resource.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "type", - "type": "string", - "usage": "Entity type of the other entity that has a reference to this specific entity." - } - ] - }, - { - "path": "webex cc contact-service-queue list-skill-based", - "short": "List skill-based Contact Service Queues by user ID", - "long": "Retrieve a list of skill-based Contact Service Queues by user ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-skill-based" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "search", - "type": "string", - "usage": "Filter data based on the search keyword.Supported search columns(firstName, lastName, email) The examples below show some search queries - \"Cisco\" - field==\"firstName\";value==\"Cisco\" - fields=in=(\"firstName\",\"lastName\");value==\"Cisco\" " - }, - { - "name": "userid", - "type": "string", - "required": true - } - ] - }, - { - "path": "webex cc contact-service-queue list-skill-csqs-ci-user-id", - "short": "List Skill CSQs by CI User ID", - "long": "Retrieve skill-based Contact Service Queues by CI user ID for internal use in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-skill-csqs-ci-user-id" - }, - { - "name": "id", - "type": "string", - "usage": "ID of this contact center resource.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc contact-service-queue list-team-based", - "short": "List team-based Contact Service Queues by user ID", - "long": "Retrieve a list of team-based Contact Service Queues by user ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-team-based" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "search", - "type": "string", - "usage": "Filter data based on the search keyword.Supported search columns(firstName, lastName, email) The examples below show some search queries - \"Cisco\" - field==\"firstName\";value==\"Cisco\" - fields=in=(\"firstName\",\"lastName\");value==\"Cisco\" " - }, - { - "name": "userid", - "type": "string", - "required": true - } - ] - }, - { - "path": "webex cc contact-service-queue list-team-csqs-team-id", - "short": "List Team CSQs by Team ID", - "long": "Retrieve team-based Contact Service Queues by team ID for internal use in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-team-csqs-team-id" - }, - { - "name": "id", - "type": "string", - "usage": "ID of this contact center resource.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc contact-service-queue list-v2", - "short": "List Contact Service Queues (v2)", - "long": "Lists queues through the v2 route. Items leave out call distribution groups, so read each queue for them. Each item carries lastUpdatedTime.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-v2" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Page number, from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Items per page." - } - ] - }, - { - "path": "webex cc contact-service-queue purge-inactive", - "short": "Purge inactive Contact Service Queues", - "long": "Purge inactive Contact Service Queues older than the configured interval for a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for purge-inactive" - }, - { - "name": "next-start-id", - "type": "string", - "usage": "This is the entity ID from which items for the next purge batch will be selected." - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc contact-service-queue update", - "aliases": [ - "update-id" - ], - "short": "Update specific Contact Service Queue by ID", - "long": "Update an existing Contact Service Queue by ID in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Contact Service Queue.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc data-sources", - "short": "DataSources commands" - }, - { - "path": "webex cc data-sources delete", - "short": "Delete a Data Source", - "long": "Deletes a data source by ID.\n\nSpecify the data source ID in the `dataSourceId` URI parameter.", - "flags": [ - { - "name": "data-source-id", - "type": "string", - "usage": "The unique identifier for the data source.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - } - ] - }, - { - "path": "webex cc data-sources get", - "short": "Retrieve Data Source Details", - "long": "Retrieves details for a data source by ID. Use a Service App token with the `spark-admin:datasource_read` scope.", - "flags": [ - { - "name": "data-source-id", - "type": "string", - "usage": "The unique identifier for the data source.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - } - ] - }, - { - "path": "webex cc data-sources get-all", - "short": "Retrieve All Data Sources", - "long": "Lists all data sources registered by the Service App. Requires the `spark-admin:datasource_read` scope.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-all" - } - ] - }, - { - "path": "webex cc data-sources get-schema", - "short": "Retrieve Details of a Specific Data Source Schema", - "long": "Retrieves details for a specific data source schema by schema ID. A valid API access token is required, but no specific scope is needed.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-schema" - }, - { - "name": "schema-id", - "type": "string", - "usage": "The unique identifier for the schema.", - "required": true - } - ] - }, - { - "path": "webex cc data-sources get-schemas", - "short": "Retrieve Data Source Schemas", - "long": "Lists the available data source schemas. A valid API access token is required, but no specific scope is needed.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-schemas" - } - ] - }, - { - "path": "webex cc data-sources register", - "short": "Register a Data Source", - "long": "Register a data source with the Webex BYODS system. Authenticate using a Service App with the `spark-admin:datasource_write` scope.\nSchema IDs determine the types of data Webex sends to the DAP and the expected responses. Use the Data Source Schemas endpoints to inspect the available schemas.", - "flags": [ - { - "name": "audience", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for register" - }, - { - "name": "nonce", - "type": "string" - }, - { - "name": "schema-id", - "type": "string" - }, - { - "name": "subject", - "type": "string" - }, - { - "name": "token-lifetime-minutes", - "type": "int64", - "default": "0" - }, - { - "name": "url", - "type": "string" - } - ] - }, - { - "path": "webex cc data-sources update", - "short": "Update a Data Source", - "long": "Updates a data source. The fields you can update are `audience`, `subject`, `nonce`, `url`, and `tokenLifetimeMinutes`.\nYou can set `status` from `active` to `disabled` only if you provide an `errorMessage`, which may be shown to the customer administrator in Control Hub.\nUpdate tokens before they expire to prevent service interruption.", - "flags": [ - { - "name": "audience", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "data-source-id", - "type": "string", - "usage": "The unique identifier for the data source.", - "required": true - }, - { - "name": "error-message", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "nonce", - "type": "string" - }, - { - "name": "schema-id", - "type": "string" - }, - { - "name": "status", - "type": "string" - }, - { - "name": "subject", - "type": "string" - }, - { - "name": "token-lifetime-minutes", - "type": "int64", - "default": "0" - }, - { - "name": "url", - "type": "string" - } - ] - }, - { - "path": "webex cc desktop-layout", - "short": "DesktopLayout commands" - }, - { - "path": "webex cc desktop-layout bulk-export", - "short": "Bulk export Desktop Layout(s)", - "long": "Export all Desktop Layout(s) in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-export" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - } - ] - }, - { - "path": "webex cc desktop-layout bulk-save", - "short": "Bulk save Desktop Layout(s)", - "long": "Create, Update or delete Desktop Layout(s) in bulk in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-save" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc desktop-layout create", - "short": "Create a new Desktop Layout", - "long": "Create a new Desktop Layout in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "created-time", - "type": "int64", - "default": "0" - }, - { - "name": "default-json-modified", - "type": "bool", - "default": "false" - }, - { - "name": "default-json-modified-time", - "type": "int64", - "default": "0" - }, - { - "name": "description", - "type": "string" - }, - { - "name": "edited-by", - "type": "string" - }, - { - "name": "global", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "id", - "type": "string" - }, - { - "name": "json-file-content", - "type": "string" - }, - { - "name": "json-file-name", - "type": "string" - }, - { - "name": "last-updated-time", - "type": "int64", - "default": "0" - }, - { - "name": "modified-time", - "type": "int64", - "default": "0" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "organization-id", - "type": "string" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "status", - "type": "bool", - "default": "false" - }, - { - "name": "system-default", - "type": "bool", - "default": "false" - }, - { - "name": "team-ids", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "validated", - "type": "bool", - "default": "false" - }, - { - "name": "validated-time", - "type": "int64", - "default": "0" - }, - { - "name": "version", - "type": "int64", - "default": "0" - } - ] - }, - { - "path": "webex cc desktop-layout delete", - "aliases": [ - "delete-id" - ], - "short": "Delete specific Desktop Layout by ID", - "long": "Delete an existing Desktop Layout by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Desktop Layout.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc desktop-layout get", - "aliases": [ - "get-id" - ], - "short": "Get specific Desktop Layout by ID", - "long": "Retrieve an existing Desktop Layout by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Desktop Layout.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc desktop-layout list", - "short": "List Desktop Layout(s)", - "long": "Retrieve a list of Desktop Layout(s) in a given organization. Json file content field won't be avalible in get all even though it is showing in sample response structure. and it will be avialable only in get by id.\n Note: Returning array fields in the List (Get All) API response is deprecated. To retrieve the complete resource with all fields, please use the Get-by-ID API instead.", - "flags": [ - { - "name": "attributes", - "type": "string", - "usage": "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported." - }, - { - "name": "filter", - "type": "string", - "usage": "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, validatedTime, defaultJsonModifiedTime, modifiedTime, teamIds, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. " - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "provisioning-view", - "type": "string", - "usage": "If set to true, the API will only return data that user has access to, according to User Profile." - }, - { - "name": "search", - "type": "string", - "usage": "Filter data based on the search keyword.Supported search columns(name) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\");value==\"Cisco\" " - }, - { - "name": "single-object-response", - "type": "string", - "usage": "Specifiy whether to include array fields in the response, This query param should use only if the response contain single record, if we are using for multiple objects response query param not supported and throws an exception." - } - ] - }, - { - "path": "webex cc desktop-layout list-references", - "short": "List references for a specific Desktop Layout", - "long": "Retrieve a list of all entities that have reference to an existing Desktop Layout by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-references" - }, - { - "name": "id", - "type": "string", - "usage": "ID of this contact center resource.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "type", - "type": "string", - "usage": "Entity type of the other entity that has a reference to this specific entity." - } - ] - }, - { - "path": "webex cc desktop-layout purge-inactive", - "short": "Purge inactive Desktop Layout(s)", - "long": "Purge inactive Desktop Layout(s) older than the configured interval for a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for purge-inactive" - }, - { - "name": "next-start-id", - "type": "string", - "usage": "This is the entity ID from which items for the next purge batch with be selected." - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc desktop-layout update", - "aliases": [ - "update-id" - ], - "short": "Update specific Desktop Layout by ID", - "long": "Update an existing Desktop Layout by ID in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "created-time", - "type": "int64", - "default": "0" - }, - { - "name": "default-json-modified", - "type": "bool", - "default": "false" - }, - { - "name": "default-json-modified-time", - "type": "int64", - "default": "0" - }, - { - "name": "description", - "type": "string" - }, - { - "name": "edited-by", - "type": "string" - }, - { - "name": "global", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Desktop Layout.", - "required": true - }, - { - "name": "json-file-content", - "type": "string" - }, - { - "name": "json-file-name", - "type": "string" - }, - { - "name": "last-updated-time", - "type": "int64", - "default": "0" - }, - { - "name": "modified-time", - "type": "int64", - "default": "0" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "organization-id", - "type": "string" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "status", - "type": "bool", - "default": "false" - }, - { - "name": "system-default", - "type": "bool", - "default": "false" - }, - { - "name": "team-ids", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "validated", - "type": "bool", - "default": "false" - }, - { - "name": "validated-time", - "type": "int64", - "default": "0" - }, - { - "name": "version", - "type": "int64", - "default": "0" - } - ] - }, - { - "path": "webex cc desktop-profile", - "short": "DesktopProfile commands" - }, - { - "path": "webex cc desktop-profile bulk-export", - "short": "Bulk export Desktop Profile(s)", - "long": "Export all Desktop Profile(s) in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-export" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - } - ] - }, - { - "path": "webex cc desktop-profile bulk-save", - "short": "Bulk save Desktop Profiles", - "long": "Create, Update or delete Desktop Profiles in bulk in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-save" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc desktop-profile create", - "short": "Create a new Desktop Profile", - "long": "Create a new Desktop Profile in a given organization.", - "flags": [ - { - "name": "access-buddy-team", - "type": "string", - "usage": "Agent profile configuration data" - }, - { - "name": "access-entry-point", - "type": "string", - "usage": "Agent profile configuration data" - }, - { - "name": "access-idle-code", - "type": "string", - "usage": "Agent profile configuration data" - }, - { - "name": "access-queue", - "type": "string", - "usage": "Agent profile configuration data" - }, - { - "name": "access-wrap-up-code", - "type": "string", - "usage": "Agent profile configuration data" - }, - { - "name": "active", - "type": "string", - "usage": "Agent profile configuration data" - }, - { - "name": "address-book-id", - "type": "string", - "usage": "Agent profile configuration data" - }, - { - "name": "agent-available-after-outdial", - "type": "string", - "usage": "Agent profile configuration data" - }, - { - "name": "agent-dnvalidation", - "type": "string", - "usage": "Agent profile configuration data" - }, - { - "name": "agent-dnvalidation-criteria", - "type": "string", - "usage": "Agent profile configuration data" - }, - { - "name": "agent-dnvalidation-criterions", - "type": "string", - "usage": "Agent profile configuration data" - }, - { - "name": "agent-personal-greeting", - "type": "string", - "usage": "Agent profile configuration data" - }, - { - "name": "allow-auto-wrap-up-extension", - "type": "string", - "usage": "Agent profile configuration data" - }, - { - "name": "auto-accept-digital-interactions", - "type": "string", - "usage": "Agent profile configuration data" - }, - { - "name": "auto-answer", - "type": "string", - "usage": "Agent profile configuration data" - }, - { - "name": "auto-wrap-after-seconds", - "type": "string", - "usage": "Agent profile configuration data" - }, - { - "name": "auto-wrap-up", - "type": "string", - "usage": "Agent profile configuration data" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "buddy-teams", - "type": "string", - "usage": "Agent profile configuration data" - }, - { - "name": "consult-to-queue", - "type": "string", - "usage": "Agent profile configuration data" - }, - { - "name": "created-time", - "type": "string", - "usage": "Agent profile configuration data" - }, - { - "name": "description", - "type": "string", - "usage": "Agent profile configuration data" - }, - { - "name": "dial-plan-enabled", - "type": "string", - "usage": "Agent profile configuration data" - }, - { - "name": "dial-plans", - "type": "string", - "usage": "Agent profile configuration data" - }, - { - "name": "entry-points", - "type": "string", - "usage": "Agent profile configuration data" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "id", - "type": "string", - "usage": "Agent profile configuration data" - }, - { - "name": "idle-codes", - "type": "string", - "usage": "Agent profile configuration data" - }, - { - "name": "last-agent-routing", - "type": "string", - "usage": "Agent profile configuration data" - }, - { - "name": "last-updated-time", - "type": "string", - "usage": "Agent profile configuration data" - }, - { - "name": "login-voice-options", - "type": "string", - "usage": "Agent profile configuration data" - }, - { - "name": "manage-channel-availability", - "type": "string", - "usage": "Agent profile configuration data" - }, - { - "name": "name", - "type": "string", - "usage": "Agent profile configuration data" - }, - { - "name": "organization-id", - "type": "string", - "usage": "Agent profile configuration data" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "outdial-aniid", - "type": "string", - "usage": "Agent profile configuration data" - }, - { - "name": "outdial-enabled", - "type": "string", - "usage": "Agent profile configuration data" - }, - { - "name": "outdial-entry-point-id", - "type": "string", - "usage": "Agent profile configuration data" - }, - { - "name": "parent-type", - "type": "string", - "usage": "Agent profile configuration data" - }, - { - "name": "queues", - "type": "string", - "usage": "Agent profile configuration data" - }, - { - "name": "schedule-and-manage-call-back", - "type": "string", - "usage": "Agent profile configuration data" - }, - { - "name": "screen-popup", - "type": "string", - "usage": "Agent profile configuration data" - }, - { - "name": "show-user-details-ms", - "type": "string", - "usage": "Agent profile configuration data" - }, - { - "name": "show-user-details-webex", - "type": "string", - "usage": "Agent profile configuration data" - }, - { - "name": "site-id", - "type": "string", - "usage": "Agent profile configuration data" - }, - { - "name": "state-synchronization-ms", - "type": "string", - "usage": "Agent profile configuration data" - }, - { - "name": "state-synchronization-webex", - "type": "string", - "usage": "Agent profile configuration data" - }, - { - "name": "system-default", - "type": "string", - "usage": "Agent profile configuration data" - }, - { - "name": "threshold-rules", - "type": "string", - "usage": "Agent profile configuration data" - }, - { - "name": "timeout-desktop-inactivity-custom-enabled", - "type": "string", - "usage": "Agent profile configuration data" - }, - { - "name": "timeout-desktop-inactivity-mins", - "type": "string", - "usage": "Agent profile configuration data" - }, - { - "name": "version", - "type": "string", - "usage": "Agent profile configuration data" - }, - { - "name": "viewable-statistics", - "type": "string", - "usage": "Agent profile configuration data" - }, - { - "name": "wrap-up-codes", - "type": "string", - "usage": "Agent profile configuration data" - } - ] - }, - { - "path": "webex cc desktop-profile delete", - "aliases": [ - "delete-id" - ], - "short": "Delete specific Desktop Profile by ID", - "long": "Delete an existing Desktop Profile by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Desktop Profile.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc desktop-profile get", - "aliases": [ - "get-id" - ], - "short": "Get specific Desktop Profile by ID", - "long": "Retrieve an existing Desktop Profile by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Desktop Profile.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc desktop-profile list", - "short": "List Desktop Profiles", - "long": "Retrieve a list of Desktop Profiles in a given organization.\n Note: Returning array fields in the List (Get All) API response is deprecated. To retrieve the complete resource with all fields, please use the Get-by-ID API instead.", - "flags": [ - { - "name": "attributes", - "type": "string", - "usage": "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported. except ( wrapUpCodes,queues, idleCodes,entryPoints, buddyTeams, dialPlans, loginVoiceOptions, viewableStatistics, thresholdRules,agentDNValidationCriterions ) " - }, - { - "name": "filter", - "type": "string", - "usage": "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, autoWrapAfterSeconds, wrapUpCodes, idleCodes, queues, entryPoints, buddyTeams, dialPlans, agentDNValidationCriteria, agentDNValidationCriterions, loginVoiceOptions, viewableStatistics, thresholdRules, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. " - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "provisioning-view", - "type": "string", - "usage": "If set to true, the API will only return data that the user has access to, according to the User Profile." - }, - { - "name": "search", - "type": "string", - "usage": "Filter data based on the search keyword.Supported search columns(name, description) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\",\"description\");value==\"Cisco\" " - }, - { - "name": "single-object-response", - "type": "string", - "usage": "Specify whether to include array fields in the response. This query parameter should be used only when the response contains a single record. It is not supported for responses with multiple objects and throws an exception." - } - ] - }, - { - "path": "webex cc desktop-profile list-references", - "short": "List references for a specific Desktop Profile", - "long": "Retrieve a list of all entities that have reference to an existing Desktop Profile by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-references" - }, - { - "name": "id", - "type": "string", - "usage": "ID of this contact center resource.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "type", - "type": "string", - "usage": "Entity type of the other entity that has a reference to this specific entity." - } - ] - }, - { - "path": "webex cc desktop-profile purge-inactive", - "short": "Purge inactive Desktop Profiles", - "long": "Purge inactive Desktop Profiles older than the configured interval for a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for purge-inactive" - }, - { - "name": "next-start-id", - "type": "string", - "usage": "This is the entity ID from which items for the next purge batch will be selected." - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc desktop-profile update", - "aliases": [ - "update-id" - ], - "short": "Update specific Desktop Profile by ID", - "long": "Update an existing Desktop Profile by ID in a given organization.", - "flags": [ - { - "name": "access-buddy-team", - "type": "string", - "usage": "Agent profile configuration data for update" - }, - { - "name": "access-entry-point", - "type": "string", - "usage": "Agent profile configuration data for update" - }, - { - "name": "access-idle-code", - "type": "string", - "usage": "Agent profile configuration data for update" - }, - { - "name": "access-queue", - "type": "string", - "usage": "Agent profile configuration data for update" - }, - { - "name": "access-wrap-up-code", - "type": "string", - "usage": "Agent profile configuration data for update" - }, - { - "name": "active", - "type": "string", - "usage": "Agent profile configuration data for update" - }, - { - "name": "address-book-id", - "type": "string", - "usage": "Agent profile configuration data for update" - }, - { - "name": "agent-available-after-outdial", - "type": "string", - "usage": "Agent profile configuration data for update" - }, - { - "name": "agent-dnvalidation", - "type": "string", - "usage": "Agent profile configuration data for update" - }, - { - "name": "agent-dnvalidation-criteria", - "type": "string", - "usage": "Agent profile configuration data for update" - }, - { - "name": "agent-dnvalidation-criterions", - "type": "string", - "usage": "Agent profile configuration data for update" - }, - { - "name": "agent-personal-greeting", - "type": "string", - "usage": "Agent profile configuration data for update" - }, - { - "name": "allow-auto-wrap-up-extension", - "type": "string", - "usage": "Agent profile configuration data for update" - }, - { - "name": "auto-accept-digital-interactions", - "type": "string", - "usage": "Agent profile configuration data for update" - }, - { - "name": "auto-answer", - "type": "string", - "usage": "Agent profile configuration data for update" - }, - { - "name": "auto-wrap-after-seconds", - "type": "string", - "usage": "Agent profile configuration data for update" - }, - { - "name": "auto-wrap-up", - "type": "string", - "usage": "Agent profile configuration data for update" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "buddy-teams", - "type": "string", - "usage": "Agent profile configuration data for update" - }, - { - "name": "consult-to-queue", - "type": "string", - "usage": "Agent profile configuration data for update" - }, - { - "name": "created-time", - "type": "string", - "usage": "Agent profile configuration data for update" - }, - { - "name": "description", - "type": "string", - "usage": "Agent profile configuration data for update" - }, - { - "name": "dial-plan-enabled", - "type": "string", - "usage": "Agent profile configuration data for update" - }, - { - "name": "dial-plans", - "type": "string", - "usage": "Agent profile configuration data for update" - }, - { - "name": "entry-points", - "type": "string", - "usage": "Agent profile configuration data for update" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Desktop Profile.", - "required": true - }, - { - "name": "idle-codes", - "type": "string", - "usage": "Agent profile configuration data for update" - }, - { - "name": "last-agent-routing", - "type": "string", - "usage": "Agent profile configuration data for update" - }, - { - "name": "last-updated-time", - "type": "string", - "usage": "Agent profile configuration data for update" - }, - { - "name": "login-voice-options", - "type": "string", - "usage": "Agent profile configuration data for update" - }, - { - "name": "manage-channel-availability", - "type": "string", - "usage": "Agent profile configuration data for update" - }, - { - "name": "name", - "type": "string", - "usage": "Agent profile configuration data for update" - }, - { - "name": "organization-id", - "type": "string", - "usage": "Agent profile configuration data for update" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "outdial-aniid", - "type": "string", - "usage": "Agent profile configuration data for update" - }, - { - "name": "outdial-enabled", - "type": "string", - "usage": "Agent profile configuration data for update" - }, - { - "name": "outdial-entry-point-id", - "type": "string", - "usage": "Agent profile configuration data for update" - }, - { - "name": "parent-type", - "type": "string", - "usage": "Agent profile configuration data for update" - }, - { - "name": "queues", - "type": "string", - "usage": "Agent profile configuration data for update" - }, - { - "name": "schedule-and-manage-call-back", - "type": "string", - "usage": "Agent profile configuration data for update" - }, - { - "name": "screen-popup", - "type": "string", - "usage": "Agent profile configuration data for update" - }, - { - "name": "show-user-details-ms", - "type": "string", - "usage": "Agent profile configuration data for update" - }, - { - "name": "show-user-details-webex", - "type": "string", - "usage": "Agent profile configuration data for update" - }, - { - "name": "site-id", - "type": "string", - "usage": "Agent profile configuration data for update" - }, - { - "name": "state-synchronization-ms", - "type": "string", - "usage": "Agent profile configuration data for update" - }, - { - "name": "state-synchronization-webex", - "type": "string", - "usage": "Agent profile configuration data for update" - }, - { - "name": "system-default", - "type": "string", - "usage": "Agent profile configuration data for update" - }, - { - "name": "threshold-rules", - "type": "string", - "usage": "Agent profile configuration data for update" - }, - { - "name": "timeout-desktop-inactivity-custom-enabled", - "type": "string", - "usage": "Agent profile configuration data for update" - }, - { - "name": "timeout-desktop-inactivity-mins", - "type": "string", - "usage": "Agent profile configuration data for update" - }, - { - "name": "version", - "type": "string", - "usage": "Agent profile configuration data for update" - }, - { - "name": "viewable-statistics", - "type": "string", - "usage": "Agent profile configuration data for update" - }, - { - "name": "wrap-up-codes", - "type": "string", - "usage": "Agent profile configuration data for update" - } - ] - }, - { - "path": "webex cc dial-number", - "short": "DialNumber commands" - }, - { - "path": "webex cc dial-number bulk-export-dialed-mapping", - "short": "Bulk export Dialed Number Mapping(s)", - "long": "Export all Dialed Number Mapping(s) in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-export-dialed-mapping" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - } - ] - }, - { - "path": "webex cc dial-number bulk-save-dialed-mapping", - "short": "Bulk save Dialed Number Mapping(s)", - "long": "Create, Update or delete Dialed Number Mapping(s) in bulk in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-save-dialed-mapping" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc dial-number create-dialed-mapping", - "short": "Create a new Dialed Number Mapping", - "long": "Create a new Dialed Number Mapping in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "created-time", - "type": "int64", - "default": "0" - }, - { - "name": "default-ani", - "type": "bool", - "default": "false" - }, - { - "name": "dialled-number", - "type": "string" - }, - { - "name": "dialled-number-digits", - "type": "string" - }, - { - "name": "entry-point-id", - "type": "string" - }, - { - "name": "entry-point-name", - "type": "string" - }, - { - "name": "esn", - "type": "string" - }, - { - "name": "extension", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-dialed-mapping" - }, - { - "name": "id", - "type": "string" - }, - { - "name": "last-updated-time", - "type": "int64", - "default": "0" - }, - { - "name": "location", - "type": "string" - }, - { - "name": "organization-id", - "type": "string" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "region-id", - "type": "string" - }, - { - "name": "route-point-id", - "type": "string" - }, - { - "name": "routing-prefix", - "type": "string" - }, - { - "name": "version", - "type": "int64", - "default": "0" - } - ] - }, - { - "path": "webex cc dial-number delete-all-dialed-mapping", - "short": "Delete all Dialed Number Mapping(s)", - "long": "Delete all Dialed Number Mapping(s) in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-all-dialed-mapping" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc dial-number delete-dialed-mapping-id", - "short": "Delete specific Dialed Number Mapping by ID", - "long": "Delete an existing Dialed Number Mapping by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-dialed-mapping-id" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Dialed Number Mapping.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc dial-number get-dialed-mapping-id", - "short": "Get specific Dialed Number Mapping by ID", - "long": "Retrieve an existing Dialed Number Mapping by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-dialed-mapping-id" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Dialed Number Mapping.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc dial-number list-dialed-dialed-mapping", - "short": "List only dialed numbers(property - dialledNumber) from Dialed Number Mapping(s)", - "long": "Retrieve a list of only dialed numbers(property - dialledNumber) from Dialed Number Mapping(s) without pagination in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-dialed-dialed-mapping" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc dial-number list-dialed-mapping", - "short": "List Dialed Number Mapping(s)", - "long": "Retrieve a list of Dialed Number Mapping(s) in a given organization.", - "flags": [ - { - "name": "attributes", - "type": "string", - "usage": "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported. except (links)" - }, - { - "name": "filter", - "type": "string", - "usage": "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. " - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-dialed-mapping" - }, - { - "name": "include-entry-point-name", - "type": "string", - "usage": "If includeEntryPointName is set to true and entryPointName is in the attributes, the API will return entryPointName in the Get All response, and filtering, searching, and sorting on entryPointName will also be enabled." - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "search", - "type": "string", - "usage": "Filter data based on the search keyword.Supported search columns(dialledNumber) The examples below show some search queries - \"Cisco\" - field==\"dialledNumber\";value==\"Cisco\" - fields=in=(\"dialledNumber\");value==\"Cisco\" " - } - ] - }, - { - "path": "webex cc dial-number list-references-dialed-mapping", - "short": "List references for a specific Dialed Number Mapping", - "long": "Retrieve a list of all entities that have reference to an existing Dialed Number Mapping by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-references-dialed-mapping" - }, - { - "name": "id", - "type": "string", - "usage": "ID of this contact center resource.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "type", - "type": "string", - "usage": "Entity type of the other entity that has a reference to this specific entity." - } - ] - }, - { - "path": "webex cc dial-number update-dialed-mapping-id", - "short": "Update specific Dialed Number Mapping by ID", - "long": "Update an existing Dialed Number Mapping by ID in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "created-time", - "type": "int64", - "default": "0" - }, - { - "name": "default-ani", - "type": "bool", - "default": "false" - }, - { - "name": "dialled-number", - "type": "string" - }, - { - "name": "dialled-number-digits", - "type": "string" - }, - { - "name": "entry-point-id", - "type": "string" - }, - { - "name": "entry-point-name", - "type": "string" - }, - { - "name": "esn", - "type": "string" - }, - { - "name": "extension", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-dialed-mapping-id" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Dialed Number Mapping.", - "required": true - }, - { - "name": "last-updated-time", - "type": "int64", - "default": "0" - }, - { - "name": "location", - "type": "string" - }, - { - "name": "organization-id", - "type": "string" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "region-id", - "type": "string" - }, - { - "name": "route-point-id", - "type": "string" - }, - { - "name": "routing-prefix", - "type": "string" - }, - { - "name": "version", - "type": "int64", - "default": "0" - } - ] - }, - { - "path": "webex cc dial-plan", - "short": "DialPlan commands" - }, - { - "path": "webex cc dial-plan bulk-export", - "short": "Bulk export Dial Plan(s)", - "long": "Export all Dial Plan(s) in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-export" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - } - ] - }, - { - "path": "webex cc dial-plan bulk-save", - "short": "Bulk save Dial Plans", - "long": "Create, Update or delete Dial Plans in bulk in a given organization.\n\n**Deprecated:** Dial Plan configuration is deprecated. Dial Plan is no longer available as an Agent Profile setting, so agents can no longer use them for agent dial number validation.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-save" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc dial-plan create", - "short": "Create a new Dial Plan", - "long": "Create a new Dial Plan in a given organization.\n\n**Deprecated:** Dial Plan configuration is deprecated. Dial Plan is no longer available as an Agent Profile setting, so agents can no longer use them for agent dial number validation.", - "flags": [ - { - "name": "active", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "created-time", - "type": "int64", - "default": "0" - }, - { - "name": "description", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "id", - "type": "string" - }, - { - "name": "last-updated-time", - "type": "int64", - "default": "0" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "organization-id", - "type": "string" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "prefix", - "type": "string" - }, - { - "name": "regular-expression", - "type": "string" - }, - { - "name": "stripped-chars", - "type": "string" - }, - { - "name": "system-default", - "type": "bool", - "default": "false" - }, - { - "name": "version", - "type": "int64", - "default": "0" - } - ] - }, - { - "path": "webex cc dial-plan delete", - "aliases": [ - "delete-id" - ], - "short": "Delete specific Dial Plan by ID", - "long": "Delete an existing Dial Plan by ID in a given organization.\n\n**Deprecated:** Dial Plan configuration is deprecated. Dial Plan is no longer available as an Agent Profile setting, so agents can no longer use them for agent dial number validation.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Dial Plan.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc dial-plan get", - "aliases": [ - "get-id" - ], - "short": "Get specific Dial Plan by ID", - "long": "Retrieve an existing Dial Plan by ID in a given organization.\n\n**Deprecated:** Dial Plan configuration is deprecated. Dial Plan is no longer available as an Agent Profile setting, so agents can no longer use them for agent dial number validation.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Dial Plan.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc dial-plan list", - "short": "List Dial Plans", - "long": "Retrieve a list of Dial Plans in a given organization.\n\n**Deprecated:** Dial Plan configuration is deprecated. Dial Plan is no longer available as an Agent Profile setting, so agents can no longer use them for agent dial number validation.", - "flags": [ - { - "name": "attributes", - "type": "string", - "usage": "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported." - }, - { - "name": "filter", - "type": "string", - "usage": "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. " - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "search", - "type": "string", - "usage": "Filter data based on the search keyword.Supported search columns(name) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\");value==\"Cisco\" " - } - ] - }, - { - "path": "webex cc dial-plan list-references", - "short": "List references for a specific Dial Plan", - "long": "Retrieve a list of all entities that have reference to an existing Dial Plan by ID in a given organization.\n\n**Deprecated:** Dial Plan configuration is deprecated. Dial Plan is no longer available as an Agent Profile setting, so agents can no longer use them for agent dial number validation.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-references" - }, - { - "name": "id", - "type": "string", - "usage": "ID of this contact center resource.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "type", - "type": "string", - "usage": "Entity type of the other entity that has a reference to this specific entity." - } - ] - }, - { - "path": "webex cc dial-plan update", - "aliases": [ - "update-id" - ], - "short": "Update specific Dial Plan by ID", - "long": "Update an existing Dial Plan by ID in a given organization.\n\n**Deprecated:** Dial Plan configuration is deprecated. Dial Plan is no longer available as an Agent Profile setting, so agents can no longer use them for agent dial number validation.", - "flags": [ - { - "name": "active", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "created-time", - "type": "int64", - "default": "0" - }, - { - "name": "description", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Dial Plan.", - "required": true - }, - { - "name": "last-updated-time", - "type": "int64", - "default": "0" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "organization-id", - "type": "string" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "prefix", - "type": "string" - }, - { - "name": "regular-expression", - "type": "string" - }, - { - "name": "stripped-chars", - "type": "string" - }, - { - "name": "system-default", - "type": "bool", - "default": "false" - }, - { - "name": "version", - "type": "int64", - "default": "0" - } - ] - }, - { - "path": "webex cc dnc-management", - "short": "DncManagement commands" - }, - { - "path": "webex cc dnc-management create-phone-number-list", - "short": "Add Phone Number to DNC List", - "long": "Adds a phone number to the specified Do Not Contact (DNC) list. This operation helps ensure compliance with applicable rules & regulations by preventing outbound calls to specific numbers.\n\n**Note:** Phone numbers must be in E.164 format (e.g., +1234567890). Duplicate entries will be rejected with a 409 error.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "dnc-list-name", - "type": "string", - "usage": "This is the Name of the DNC list to which you want to add a phone number. List names are case-sensitive and must be URL-encoded if they contain special characters.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-phone-number-list" - }, - { - "name": "phone-number", - "type": "string" - }, - { - "name": "reason", - "type": "string" - }, - { - "name": "source", - "type": "string" - } - ] - }, - { - "path": "webex cc dnc-management delete-phone-number-list", - "short": "Remove Phone Number from DNC List", - "long": "Removes a phone number from the specified Do Not Contact (DNC) list. This operation allows administrators to remove numbers that should no longer be blocked from receiving calls.\n\n**Note:** Phone numbers must be URL-encoded and in E.164 format (e.g., +1234567890 for +1234567890). If the number doesn't exist in the list, a 404 error will be returned.", - "flags": [ - { - "name": "dnc-list-name", - "type": "string", - "usage": "The name of the DNC list to remove the phone number from. List names are case-sensitive and must be URL-encoded if they contain special characters.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-phone-number-list" - }, - { - "name": "phone-number", - "type": "string", - "usage": "The phone number to remove from the DNC list. Must be URL-encoded and in E.164 format (e.g., %2B1234567890 for +1234567890).", - "required": true - } - ] - }, - { - "path": "webex cc dnc-management get-phone-number-list", - "short": "Get Phone Number from DNC List", - "long": "Retrieves details of a specific phone number from the specified Do Not Contact (DNC) list. This operation allows you to check if a number is present in the list and view associated metadata.\n\n**Note:** Phone numbers must be URL-encoded and in E.164 format (e.g., %2B1234567890 for +1234567890).", - "flags": [ - { - "name": "dnc-list-name", - "type": "string", - "usage": "The name of the DNC list to search in. List names are case-sensitive and must be URL-encoded if they contain special characters.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-phone-number-list" - }, - { - "name": "phone-number", - "type": "string", - "usage": "The phone number to retrieve from the DNC list. Must be URL-encoded and in E.164 format (e.g., %2B1234567890 for +1234567890).", - "required": true - } - ] - }, - { - "path": "webex cc entry-point", - "short": "EntryPoint commands" - }, - { - "path": "webex cc entry-point bulk-export", - "short": "Bulk export Entry Point(s)", - "long": "Export all Entry Point(s) in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-export" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "type", - "type": "string", - "usage": "Indicates the type of Entrypoint; can be INBOUND or OUTBOUND." - } - ] - }, - { - "path": "webex cc entry-point bulk-save", - "short": "Bulk save Entry Point(s)", - "long": "Create, Update or delete Entry Point(s) in bulk in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-save" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc entry-point create", - "short": "Create a new Entry Point", - "long": "Create a new Entry Point in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc entry-point delete", - "aliases": [ - "delete-id" - ], - "short": "Delete specific Entry Point by ID", - "long": "Delete an existing Entry Point by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Entry Point.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc entry-point get", - "aliases": [ - "get-id" - ], - "short": "Get specific Entry Point by ID", - "long": "Retrieve an existing Entry Point by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Entry Point.", - "required": true - }, - { - "name": "include-names", - "type": "string", - "usage": "Specifiy whether to include flow override settings reference variable names." - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc entry-point list", - "short": "List Entry Point(s)", - "long": "Retrieve a list of Entry Point(s) in a given organization.\n Note: Array fields are removed from List API. If all fields are required please fetch Id's and use get-by-id API.", - "flags": [ - { - "name": "attributes", - "type": "string", - "usage": "Specify the attributes to be returned.Default all attributes are returned along with specified columns. All Attributes are supported except (ccOneQueue, userIds, queueRankings, links) " - }, - { - "name": "desktop-profile-filter", - "type": "string", - "usage": "If set to true, the API will return only the data that the user has access to according to its Desktop Profile. If set to false, the API will not check for Desktop Profile level access." - }, - { - "name": "filter", - "type": "string", - "usage": "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, xspVersion, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain space, and if so kindly bound it with quotes to apply filter. " - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "include-count", - "type": "string", - "usage": "Enable the flag to get the count of DN-EP Mapping" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "provisioning-view", - "type": "string", - "usage": "If set to true, the API will only return data that user has access to, according to User Profile. If set to false and desktopProfileFilter query parameter is not specified, the API will add user associated data, based on desktop. " - }, - { - "name": "search", - "type": "string", - "usage": "Filter data based on the search keyword.Supported search columns(name, description) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\",\"description\");value==\"Cisco\" " - }, - { - "name": "single-object-response", - "type": "string", - "usage": "Specifiy whether to include array fields in the response, This query param should use only if the response contain single record, if we are using for multiple objects response query param not supported and throws an exception." - } - ] - }, - { - "path": "webex cc entry-point list-references", - "short": "List references for a specific Entry Point", - "long": "Retrieve a list of all entities that have reference to an existing Entry Point by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-references" - }, - { - "name": "id", - "type": "string", - "usage": "ID of this contact center resource.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "type", - "type": "string", - "usage": "Entity type of the other entity that has a reference to this specific entity." - } - ] - }, - { - "path": "webex cc entry-point list-v1", - "short": "List Entry Point(s) (v1)", - "long": "Lists entry points with every field, through the v1 route. Each item carries lastUpdatedTime.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-v1" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Page number, from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Items per page." - } - ] - }, - { - "path": "webex cc entry-point purge-inactive", - "short": "Purge inactive Entry Point(s)", - "long": "Purge inactive Entry Point(s) older than the configured interval for a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for purge-inactive" - }, - { - "name": "next-start-id", - "type": "string", - "usage": "This is the entity ID from which items for the next purge batch with be selected." - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc entry-point update", - "aliases": [ - "update-id" - ], - "short": "Update specific Entry Point by ID", - "long": "Update an existing Entry Point by ID in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Entry Point.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc estimated-wait-time", - "short": "EstimatedWaitTime commands" - }, - { - "path": "webex cc estimated-wait-time get", - "short": "Get Estimated Wait Time", - "long": "Retrieve Estimated Wait Time information for a specified look back interval for a specific orgId and queueId combination, with ability to customomize maxCV and minValidSamples (See description above).\n", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "lookback-minutes", - "type": "string", - "usage": "Integer between 5 and 240 (4 hours) signifying how long back to look at the data points to determine EWT for this queue" - }, - { - "name": "max-cv", - "type": "string", - "usage": "This an optional parameter. Maximum value of Coefficient of Variance in a subset of samples (wait times for tasks that got connected to agent in one minute interval) to determine whether the average of such values should be treated as a valid sample for EWT computation. If its not passed it takes the default value of 40 %" - }, - { - "name": "min-valid-samples", - "type": "string", - "usage": "This an optional parameter. Minimum value of percentage of valid samples (with respect to total number of samples) in the specified lookbackMinutes minutes. If its not passed it takes the default value of 40 %" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to use for this operation. If unspecified, inferred from token. Token must have permission to interact with this organization.", - "hidden": true - }, - { - "name": "queue-id", - "type": "string", - "usage": "Id of the queue for which the EWT is to be returned" - }, - { - "name": "tracking-id", - "type": "string", - "usage": "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. " - } - ] - }, - { - "path": "webex cc events", - "short": "Events commands" - }, - { - "path": "webex cc events list-specifications", - "short": "List Event Specifications", - "long": "List the event types available for use in `event_flows[]`. Each entry describes the event name, payload schema, and any contextual metadata bound when the event fires.\n\nScope: `cjp:config_read`", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-specifications" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID.", - "hidden": true - } - ] - }, - { - "path": "webex cc external-data-updates", - "short": "ExternalDataUpdates commands" - }, - { - "path": "webex cc external-data-updates update-task-global-variables", - "short": "Update Task Global Variables", - "long": "Updates numeric global variable values associated with a completed Webex Contact Center task. The request must identify the organization and task along with its start and end timestamps. The task should have ended within two days prior to the time of making the request.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-task-global-variables" - }, - { - "name": "tracking-id", - "type": "string", - "usage": "Optional identifier used for request traceability, debugging, and error reporting." - }, - { - "name": "x-organization-id", - "type": "string", - "usage": "Organization identifier used for partner or delegated access." - } - ] - }, - { - "path": "webex cc flow", - "aliases": [ - "flows" - ], - "short": "Flow commands" - }, - { - "path": "webex cc flow delete", - "short": "Delete a Flow or Subflow", - "long": "Permanently deletes a flow or subflow. Flows deleted via this API are removed permanently and cannot be recovered.\n\nScope: `cjp:config_write`. Roles: [`Organizational Full Admin`, `Contact Center Service Admin`]", - "flags": [ - { - "name": "flow-id", - "type": "string", - "usage": "ID of the flow/subflow to delete.", - "required": true - }, - { - "name": "flow-type", - "type": "string", - "usage": "Either of 'FLOW' or 'SUBFLOW'." - }, - { - "name": "force", - "type": "string", - "usage": "If 'yes', the flow is deleted even if it is still referenced by other entities. Defaults to 'no'." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID.", - "hidden": true - }, - { - "name": "skip-rs-epcheck", - "type": "string", - "usage": "If true, skips the check for routing strategy and entry point associations before deleting the flow." - } - ] - }, - { - "path": "webex cc flow export", - "short": "Export a Flow or Subflow", - "long": "Export a flow/subflow as a flow document for backup, migration, or version control. The exported payload includes `associatedChannels` metadata to preserve channel-specific activity behavior (for example, `customMessaging`) during re-import. If `associatedChannels` is missing or empty, the flow is treated as telephony.\n\nScope: `cjp:config_read`", - "flags": [ - { - "name": "flow-id", - "type": "string", - "required": true - }, - { - "name": "flow-type", - "type": "string", - "usage": "Either of 'FLOW' or 'SUBFLOW'." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for export" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID.", - "hidden": true - }, - { - "name": "version", - "type": "string", - "usage": "Version to export. Use 'latest' for the most recent published version, 'draft' for the working copy, or a specific version ObjectId." - } - ] - }, - { - "path": "webex cc flow export-legacy", - "short": "Export a Flow or Subflow", - "long": "Returns the exported flow/subflow in response.\n\nScope: `cjp:config_read`. Roles: [`Organizational Full Admin`, `Supervisor`, `Contact Center Service Admin`, `User Admin`]", - "flags": [ - { - "name": "flow-id", - "type": "string", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for export-legacy" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID.", - "hidden": true - }, - { - "name": "version", - "type": "string", - "usage": "Version ID. Possible values are 'draft', 'latest' or version ID like '64b92c004ccd9f3d1c680709'. Defaulted to 'latest'." - } - ] - }, - { - "path": "webex cc flow get", - "short": "Get a Flow or Subflow", - "long": "Retrieve the current draft of a flow/subflow as a flow document. To fetch a specific published version, use the `:export` endpoint. The response includes channel metadata (for example, `associatedChannels`) used by channel-specific activities such as `customMessaging`. If `associatedChannels` is missing or empty, the flow is treated as telephony.\n\nScope: `cjp:config_read`", - "flags": [ - { - "name": "flow-id", - "type": "string", - "usage": "Flow ID.", - "required": true - }, - { - "name": "flow-type", - "type": "string", - "usage": "Either of 'FLOW' or 'SUBFLOW'." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID.", - "hidden": true - } - ] - }, - { - "path": "webex cc flow import", - "short": "Import a Flow or Subflow", - "long": "Import a new flow/subflow from a flow definition. Creates the flow/subflow in draft state and returns the assigned flow metadata, including `flowId`. Include `associatedChannels` in the payload when the flow contains channel-specific activities (for example, `customMessaging`) so channel references can be resolved correctly during import. If `associatedChannels` is missing or empty, the import is treated as a telephony flow. For `FLOW` imports, blank or whitespace-only `associatedChannels[].channelType` values are rejected.\n\nScope: `cjp:config_write`", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "flow-type", - "type": "string", - "usage": "Either of 'FLOW' or 'SUBFLOW'." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for import" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID.", - "hidden": true - }, - { - "name": "overwrite", - "type": "string", - "usage": "If true, replaces an existing flow with the same name. Defaults to false." - } - ] - }, - { - "path": "webex cc flow import-legacy", - "short": "Import a Flow or Subflow", - "long": "Returns the imported flow/subflow in response.\n\nScope: `cjp:config_write`. Roles: [`Organizational Full Admin`, `Supervisor`, `Contact Center Service Admin`, `User Admin`]", - "flags": [ - { - "name": "content-length", - "type": "string", - "usage": "Content length value in number of bytes." - }, - { - "name": "flow-type", - "type": "string", - "usage": "Either of 'FLOW' or 'SUBFLOW'." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for import-legacy" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID.", - "hidden": true - }, - { - "name": "overwrite", - "type": "string", - "usage": "Determines whether to overwrite the existing flow or not. Possible values: yes/no." - } - ] - }, - { - "path": "webex cc flow list", - "short": "List Flows or Subflows", - "long": "Returns a list of flows in response. Channel-based filtering can be applied with the `searchBy` query parameter (for example, `channelType|telephony`, `channelType|workItem`, `channelType|customMessaging`, `channelType|genericAction`). Channel visibility may be constrained by organization feature flags. If associatedChannels key is missing or empty, it will be treated as telephony flow.\n\nScope: `cjp:config_read`. Roles: [`Organizational Full Admin`, `Supervisor`, `Contact Center Service Admin`, `User Admin`]", - "flags": [ - { - "name": "flow-type", - "type": "string", - "usage": "Either of 'FLOW' or 'SUBFLOW'." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "ids", - "type": "string", - "usage": "Filters results based on a comma-separated list of flow IDs. If provided, only flows with those IDs will be fetched in the response." - }, - { - "name": "include-pagination", - "type": "string", - "usage": "If set to true then a different paginated response object containing the page metadata (currentPage, totalRecords, pageSize, totalPages) will be returned. The flow objects will be in an array named \"data\"." - }, - { - "name": "is-validation", - "type": "string", - "usage": "If true, validates the existence of flows by ID regardless of the caller's RBAC access. Intended for internal Task Management use cases." - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of the displayed page. The page number starts from 0." - }, - { - "name": "partial-name-search", - "type": "string", - "usage": "Performs a partial string match on the name of the flow. If the flow name contains the given string it will be fetched in the response." - }, - { - "name": "search-by", - "type": "string", - "usage": "Filter expression in the format `|`. Supports searching by `channelType` (for example, `channelType|telephony`, `channelType|workItem`, `channelType|customMessaging`, `channelType|genericAction`)." - }, - { - "name": "size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - } - ] - }, - { - "path": "webex cc flow lock", - "short": "Lock a Flow or Subflow", - "long": "Lock a flow to prevent concurrent edits by other users. Locks expire after 15 minutes of inactivity.\n\nScope: `cjp:config_write`. Roles: [`Organizational Full Admin`, `Contact Center Service Admin`]", - "flags": [ - { - "name": "flow-id", - "type": "string", - "required": true - }, - { - "name": "flow-type", - "type": "string", - "usage": "Either of 'FLOW' or 'SUBFLOW'." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for lock" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID.", - "hidden": true - } - ] - }, - { - "path": "webex cc flow patch-draft", - "short": "Patch a Flow or Subflow Draft", - "long": "Apply partial updates to an existing flow/subflow draft without replacing the entire document. The patch body is a Patch Draft Contract — server-side merge, idempotent, and re-validated after the merge. The patch is rejected if the merged document fails validation, so the draft is never left in a broken state. The body may also include top-level overrides such as `name` and `description`. Submitted `associatedChannels` values are not persisted on patch; the draft preserves the existing stored channel metadata.\n\nPass `expectedVersion` as a query parameter to enable optimistic locking; the request fails with `409 Conflict` if the server-side version does not match. Omit `expectedVersion` to skip the check.\n\nScope: `cjp:config_write`", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "expected-version", - "type": "string", - "usage": "Expected current draft version for optimistic locking. The request fails with 409 Conflict if the server-side version does not match. Omit to skip the check." - }, - { - "name": "flow-id", - "type": "string", - "usage": "Flow ID.", - "required": true - }, - { - "name": "flow-type", - "type": "string", - "usage": "Either of 'FLOW' or 'SUBFLOW'." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for patch-draft" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID.", - "hidden": true - } - ] - }, - { - "path": "webex cc flow publish", - "short": "Publish a Flow or Subflow", - "long": "Returns the published flow in response.\n\nThe Publish API validates the basic structure of the flows. We recommend manually verifying the published flows before proceeding with live traffic.\n\nScope: `cjp:config_write`. Roles: [`Organizational Full Admin`, `Supervisor`, `Contact Center Service Admin`, `User Admin`]", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "comment", - "type": "string" - }, - { - "name": "flow-id", - "type": "string", - "required": true - }, - { - "name": "flow-type", - "type": "string", - "usage": "Either of 'FLOW' or 'SUBFLOW'." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for publish" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID.", - "hidden": true - }, - { - "name": "skip-validation", - "type": "string", - "usage": "If true, the flow's pre-publish validation is skipped. Use with care." - }, - { - "name": "tag-ids", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "tracking-id", - "type": "string", - "usage": "ID for tracking." - } - ] - }, - { - "path": "webex cc flow save-draft", - "short": "Save a Flow or Subflow Draft", - "long": "Save a complete flow/subflow document as the current draft, replacing the existing draft. Submitted `associatedChannels` values are not persisted on save; the draft preserves the existing stored channel metadata. Omitting `associatedChannels` does not default an existing flow to telephony. Pass `expectedVersion` as a query parameter to enable optimistic locking; the request fails with `409 Conflict` if the server-side version does not match. Omit `expectedVersion` to skip the check.\n\nScope: `cjp:config_write`", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "expected-version", - "type": "string", - "usage": "Expected current draft version for optimistic locking. The request fails with 409 Conflict if the server-side version does not match. Omit to skip the check." - }, - { - "name": "flow-id", - "type": "string", - "usage": "Flow ID.", - "required": true - }, - { - "name": "flow-type", - "type": "string", - "usage": "Either of 'FLOW' or 'SUBFLOW'." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for save-draft" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID.", - "hidden": true - } - ] - }, - { - "path": "webex cc flow search", - "short": "Search Flows", - "long": "Returns a list of flows in response. The search is case-sensitive.\n\nScope: `cjp:config_read`. Roles: [`Organizational Full Admin`, `Supervisor`, `Contact Center Service Admin`, `User Admin`]", - "flags": [ - { - "name": "flow-type", - "type": "string", - "usage": "Either of 'FLOW' or 'SUBFLOW' or 'ALL'. Default value is 'ALL'." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for search" - }, - { - "name": "key-value-filter", - "type": "string", - "usage": "Filters results based on key-value pairs. Format: 'key1|value1,key2|value2'. This will add a filter on normalizedFlow collection directly instead of running query on atlas." - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of the displayed page. The page number starts from 0." - }, - { - "name": "query", - "type": "string", - "usage": "Searches for flows with the given query. The search is case-sensitive." - }, - { - "name": "size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - } - ] - }, - { - "path": "webex cc flow unlock", - "short": "Unlock a Flow or Subflow", - "long": "Release the lock on a flow to allow other users to edit it.\n\nScope: `cjp:config_write`. Roles: [`Organizational Full Admin`, `Contact Center Service Admin`]", - "flags": [ - { - "name": "flow-id", - "type": "string", - "required": true - }, - { - "name": "flow-type", - "type": "string", - "usage": "Either of 'FLOW' or 'SUBFLOW'." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for unlock" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID.", - "hidden": true - } - ] - }, - { - "path": "webex cc flow validate", - "short": "Validate a Flow or Subflow", - "long": "Dry-run validate a flow/subflow definition without persisting it. Use this to check correctness before importing. Include `associatedChannels` to preserve the channel metadata that import and export payloads round-trip. Validation requests where `associatedChannels` is missing or empty are treated as telephony flows, and dry-run validation does not derive the effective channel from `associatedChannels`.\n\nNote: validation is more lenient than import. A flow that passes `:validate` can still be rejected by `:import` (for example, a missing start activity), so a successful validation does not guarantee a successful import.\n\nScope: `cjp:config_write`", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for validate" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID.", - "hidden": true - } - ] - }, - { - "path": "webex cc flow validate-draft", - "short": "Validate an Existing Flow or Subflow Draft", - "long": "Validate the current draft of an existing flow/subflow (read-only operation). Validation reads the draft as stored. Drafts where `associatedChannels` is missing or empty are treated as telephony flows, and validation does not derive the effective channel from `associatedChannels`.\n\nScope: `cjp:config_read`", - "flags": [ - { - "name": "flow-id", - "type": "string", - "required": true - }, - { - "name": "flow-type", - "type": "string", - "usage": "Either of 'FLOW' or 'SUBFLOW'." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for validate-draft" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID.", - "hidden": true - }, - { - "name": "version-id", - "type": "string", - "usage": "Version to validate. Use 'draft' for the current draft, or a specific version ObjectId." - } - ] - }, - { - "path": "webex cc functions", - "short": "Functions commands" - }, - { - "path": "webex cc functions create", - "short": "Create a Custom Function", - "long": "Create a new custom function. The source code is provided as an escaped string and the runtime defaults to the highest supported runtime for the given language.\n\nScope: `cjp:config_write`", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID.", - "hidden": true - } - ] - }, - { - "path": "webex cc functions delete", - "short": "Delete a Custom Function", - "long": "Delete a custom function by ID. Use `isForceDeletion=true` to delete even when the function is referenced by one or more flows.\n\nScope: `cjp:config_write`", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "id", - "type": "string", - "usage": "Custom function ID.", - "required": true - }, - { - "name": "is-force-deletion", - "type": "string", - "usage": "If `true`, deletes the function regardless of its usage in flows." - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID.", - "hidden": true - } - ] - }, - { - "path": "webex cc functions export", - "short": "Export a Custom Function", - "long": "Export a custom function for the given version or publish tag. Returns the plain function-definition JSON (name, language, runtime, description, source code, inputs, and outputs), suitable for re-importing via the import API.\n\nScope: `cjp:config_read`", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for export" - }, - { - "name": "id", - "type": "string", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID.", - "hidden": true - }, - { - "name": "version-or-tag", - "type": "string", - "usage": "Version number or publish tag of the source code to export. If omitted, the latest published version is exported." - } - ] - }, - { - "path": "webex cc functions get", - "short": "Get a Custom Function", - "long": "Retrieve a custom function by its ID. Use `versionOrTag` to fetch a specific published version, or omit it to get the draft.\n\nScope: `cjp:config_read`", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "id", - "type": "string", - "usage": "Custom function ID. Hexadecimal ObjectId returned by the create or list APIs.", - "required": true - }, - { - "name": "meta-data-only", - "type": "string", - "usage": "If `true`, returns only metadata and excludes source code. If `false` or omitted, returns both metadata and source code." - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID.", - "hidden": true - }, - { - "name": "version-or-tag", - "type": "string", - "usage": "Version number or publish tag of the source code to return (for example, `Dev`, `Live`, or `2`). If omitted, the draft version is returned." - } - ] - }, - { - "path": "webex cc functions import", - "short": "Import a Custom Function", - "long": "Import a custom function from a previously exported function-definition JSON file, uploaded as the multipart `file` part (not a zip or base64 envelope). Use `overwrite=true` to replace any existing function with the same name.\n\nScope: `cjp:config_write`", - "flags": [ - { - "name": "associated-rcs", - "type": "string", - "usage": "Optional list of associated routing-context IDs." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for import" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID.", - "hidden": true - }, - { - "name": "overwrite", - "type": "string", - "usage": "If `true`, overwrites a function with the same name if one already exists." - } - ] - }, - { - "path": "webex cc functions list", - "short": "List Custom Functions", - "long": "List or search custom functions in the organization. Without filters, returns all custom functions. Supports filtering by name, language, and status, plus sorting and pagination.\n\nScope: `cjp:config_read`", - "flags": [ - { - "name": "fields", - "type": "string", - "usage": "Comma-separated list of function fields to include in the response." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "ids", - "type": "string", - "usage": "Comma-separated list of function IDs to fetch." - }, - { - "name": "is-case-sensitive", - "type": "string", - "usage": "Whether the search should be case-sensitive. Currently applicable only to the `name` field." - }, - { - "name": "is-partial-match", - "type": "string", - "usage": "Whether to search with partial matches. If `false`, search/filter is based on exact match." - }, - { - "name": "is-validation", - "type": "string", - "usage": "Used by the Tenant Management team to validate the existence of functions with given IDs regardless of the user's RBAC access." - }, - { - "name": "language", - "type": "string", - "usage": "Filter by programming language." - }, - { - "name": "name", - "type": "string", - "usage": "Filter by function name." - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Zero-based page number for the paginated query." - }, - { - "name": "size", - "type": "string", - "usage": "Number of results per page." - }, - { - "name": "sort-by", - "type": "string", - "usage": "Comma-separated fields with order. Supported fields (case-sensitive): `name`, `language`, `status`, `lastModifiedDate`. Prefix a field with `-` for descending order; no prefix means ascending." - }, - { - "name": "status", - "type": "string", - "usage": "Filter by one or more function statuses (comma-separated, no spaces). Case-sensitive." - } - ] - }, - { - "path": "webex cc functions list-options", - "short": "List Function Options", - "long": "List the supported programming languages, runtimes, and corresponding wrapper code for custom functions. Filter by `language` or `runtime` to narrow the result.\n\nScope: `cjp:config_read`", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-options" - }, - { - "name": "language", - "type": "string", - "usage": "Filter by programming language (for example, `js`, `py`)." - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID.", - "hidden": true - }, - { - "name": "runtime", - "type": "string", - "usage": "Filter by runtime (for example, `nodejs22.x`, `python3.13`)." - } - ] - }, - { - "path": "webex cc functions lock", - "short": "Lock a Custom Function", - "long": "Acquire an edit lock on a custom function to prevent concurrent writes by other users.\n\nScope: `cjp:config_write`", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for lock" - }, - { - "name": "id", - "type": "string", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID.", - "hidden": true - } - ] - }, - { - "path": "webex cc functions publish", - "short": "Publish a Custom Function", - "long": "Publish the latest draft of a custom function under one or more tags (`Dev`, `Test`, `Latest`, `Live`). Ensure the function has been created or updated before calling this API.\n\nScope: `cjp:config_write`", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "comment", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for publish" - }, - { - "name": "id", - "type": "string", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID.", - "hidden": true - }, - { - "name": "tags", - "type": "stringSlice", - "default": "[]" - } - ] - }, - { - "path": "webex cc functions test", - "short": "Test a Custom Function", - "long": "Execute a custom function with a test payload. Implicitly publishes the latest draft first, so the run uses the most recent source code.\n\nScope: `cjp:config_write`", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for test" - }, - { - "name": "id", - "type": "string", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID.", - "hidden": true - } - ] - }, - { - "path": "webex cc functions unlock", - "short": "Unlock a Custom Function", - "long": "Release the edit lock on a custom function so that other users can edit it.\n\nScope: `cjp:config_write`", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for unlock" - }, - { - "name": "id", - "type": "string", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID.", - "hidden": true - } - ] - }, - { - "path": "webex cc functions update", - "short": "Update a Custom Function", - "long": "Update an existing custom function by ID. Replaces the draft source code and metadata with the supplied body.\n\nScope: `cjp:config_write`", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "id", - "type": "string", - "usage": "Custom function ID.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID.", - "hidden": true - } - ] - }, - { - "path": "webex cc generated-summaries", - "short": "GeneratedSummaries commands" - }, - { - "path": "webex cc generated-summaries get", - "aliases": [ - "get-id" - ], - "short": "Get specific Generated Summaries resource by ID", - "long": "Retrieve an existing Generated Summaries resource by ID in a given organization. Deprecated. Use GET /ai-feature/generated-summaries/{id} instead.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Generated Summaries resource.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc generated-summaries list", - "short": "List Generated Summaries resource(s)", - "long": "Retrieve a list of Generated Summaries resource(s) in a given organization.Only one entry per organization can exist for Generated Summaries resource. Deprecated. Use GET /v2/ai-feature/generated-summaries instead.", - "flags": [ - { - "name": "attributes", - "type": "string", - "usage": "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported." - }, - { - "name": "filter", - "type": "string", - "usage": "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. " - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - } - ] - }, - { - "path": "webex cc generated-summaries update", - "aliases": [ - "update-id" - ], - "short": "Update specific Generated Summaries resource by ID", - "long": "Update an existing Generated Summaries resource by ID in a given organization. Deprecated. Use PUT /ai-feature/generated-summaries/{id} instead.", - "flags": [ - { - "name": "agent-inclusion-type", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "call-drop-summaries-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "consult-transfer-summaries-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "created-time", - "type": "int64", - "default": "0" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Generated Summaries resource.", - "required": true - }, - { - "name": "last-updated-time", - "type": "int64", - "default": "0" - }, - { - "name": "organization-id", - "type": "string" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "version", - "type": "int64", - "default": "0" - }, - { - "name": "virtual-agent-transfer-summaries-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex cc global-variables", - "short": "GlobalVariables commands" - }, - { - "path": "webex cc global-variables bulk-export", - "short": "Bulk export Global Variable(s)", - "long": "Export all Global Variable(s) in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-export" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - } - ] - }, - { - "path": "webex cc global-variables bulk-save", - "short": "Bulk save Global Variable(s)", - "long": "Export all Global Variable(s) in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-save" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc global-variables create", - "short": "Create a new Global Variable", - "long": "Create a new Global Variable in a given organization.", - "flags": [ - { - "name": "active", - "type": "bool", - "default": "false" - }, - { - "name": "agent-editable", - "type": "bool", - "default": "false" - }, - { - "name": "agent-viewable", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "default-value", - "type": "string" - }, - { - "name": "description", - "type": "string" - }, - { - "name": "desktop-label", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "id", - "type": "string" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "organization-id", - "type": "string" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "reportable", - "type": "bool", - "default": "false" - }, - { - "name": "sensitive", - "type": "bool", - "default": "false" - }, - { - "name": "system-default", - "type": "bool", - "default": "false" - }, - { - "name": "variable-type", - "type": "string" - }, - { - "name": "version", - "type": "int64", - "default": "0" - } - ] - }, - { - "path": "webex cc global-variables delete", - "aliases": [ - "delete-id" - ], - "short": "Delete specific Global Variable by ID", - "long": "Delete an existing Global Variable by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "id", - "type": "string", - "usage": "ID of the Global Variable.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc global-variables get", - "aliases": [ - "get-id" - ], - "short": "Get specific Global Variable by ID", - "long": "Retrieve an existing Global Variable by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "id", - "type": "string", - "usage": "ID of the Global Variable.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc global-variables get-reportable-count", - "short": "Get reportable count for Global Variable(s)", - "long": "Get count for all the reportable Global Variable(s) in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-reportable-count" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc global-variables list", - "short": "List Global Variable(s)", - "long": "Retrieve a list of Global Variable(s) in a given organization.", - "flags": [ - { - "name": "attributes", - "type": "string", - "usage": "Specify the attributes to be returned.Default all attributes are returned along with specified columns. All Attributes are supported" - }, - { - "name": "filter", - "type": "string", - "usage": "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain space, and if so kindly bound it with quotes to apply filter. " - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "search", - "type": "string", - "usage": "Filter data based on the search keyword.Supported search columns(name) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\");value==\"Cisco\" " - } - ] - }, - { - "path": "webex cc global-variables list-references", - "short": "List references for a specific Global Variable", - "long": "Retrieve a list of all entities that have reference to an existing Global Variable by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-references" - }, - { - "name": "id", - "type": "string", - "usage": "ID of this contact center resource.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "type", - "type": "string", - "usage": "Entity type of the other entity that has a reference to this specific entity." - } - ] - }, - { - "path": "webex cc global-variables purge-inactive", - "short": "Purge inactive Global Variable(s)", - "long": "Purge inactive Global Variable(s) older than the configured interval for a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for purge-inactive" - }, - { - "name": "next-start-id", - "type": "string", - "usage": "This is the entity ID from which items for the next purge batch with be selected." - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc global-variables update", - "aliases": [ - "update-id" - ], - "short": "Update specific Global Variable by ID", - "long": "Update an existing Global Variable by ID in a given organization. Required fields in payload are agentEditable, variableType, agentViewable, reportable, active, defaultValue.", - "flags": [ - { - "name": "active", - "type": "bool", - "default": "false" - }, - { - "name": "agent-editable", - "type": "bool", - "default": "false" - }, - { - "name": "agent-viewable", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "default-value", - "type": "string" - }, - { - "name": "description", - "type": "string" - }, - { - "name": "desktop-label", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "id", - "type": "string", - "usage": "ID of the Global Variable.", - "required": true - }, - { - "name": "name", - "type": "string" - }, - { - "name": "organization-id", - "type": "string" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "reportable", - "type": "bool", - "default": "false" - }, - { - "name": "sensitive", - "type": "bool", - "default": "false" - }, - { - "name": "system-default", - "type": "bool", - "default": "false" - }, - { - "name": "variable-type", - "type": "string" - }, - { - "name": "version", - "type": "int64", - "default": "0" - } - ] - }, - { - "path": "webex cc holiday-list", - "short": "HolidayList commands" - }, - { - "path": "webex cc holiday-list bulk-export", - "short": "Bulk export Holiday List(s)", - "long": "Export all Holiday List(s) in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-export" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - } - ] - }, - { - "path": "webex cc holiday-list bulk-save", - "short": "Bulk save Holiday Lists", - "long": "Create, Update or delete Holiday Lists in bulk in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-save" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc holiday-list create", - "short": "Create a new Holiday List", - "long": "Create a new Holiday List in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc holiday-list delete", - "aliases": [ - "delete-id" - ], - "short": "Delete specific Holiday List by ID", - "long": "Delete an existing Holiday List by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Holiday List.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc holiday-list get", - "aliases": [ - "get-id" - ], - "short": "Get specific Holiday List by ID", - "long": "Retrieve an existing Holiday List by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Holiday List.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc holiday-list list", - "short": "List Holiday Lists", - "long": "Retrieve a list of Holiday Lists in a given organization.\n Note: Returning array fields in the List (Get All) API response is deprecated. To retrieve the complete resource with all fields, please use the Get-by-ID API instead.", - "flags": [ - { - "name": "attributes", - "type": "string", - "usage": "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported. except holidays" - }, - { - "name": "filter", - "type": "string", - "usage": "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, holidays, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. " - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "include-count", - "type": "string", - "usage": "Enable this flag to get the count of holidays." - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "search", - "type": "string", - "usage": "Filter data based on the search keyword.Supported search columns(name) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\");value==\"Cisco\" " - }, - { - "name": "single-object-response", - "type": "string", - "usage": "Specify whether to include array fields in the response. This query parameter should be used only when the response contains a single record. It is not supported for responses with multiple objects and throws an exception." - }, - { - "name": "sort", - "type": "string", - "usage": "Sorting criteria in the format: property(, asc | desc). Default sort order is ascending. Supported sortable fields (name, createdTime, lastUpdatedTime). The examples below show some sort queries - name,asc - createdTime,desc " - } - ] - }, - { - "path": "webex cc holiday-list list-references", - "short": "List references for a specific Holiday List", - "long": "Retrieve a list of all entities that have reference to an existing Holiday List by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-references" - }, - { - "name": "id", - "type": "string", - "usage": "ID of this contact center resource.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "type", - "type": "string", - "usage": "Entity type of the other entity that has a reference to this specific entity." - } - ] - }, - { - "path": "webex cc holiday-list update", - "aliases": [ - "update-id" - ], - "short": "Update specific Holiday List by ID", - "long": "Update an existing Holiday List by ID in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Holiday List.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc journey", - "short": "Journey commands" - }, - { - "path": "webex cc journey create-action", - "short": "Create a new Journey Action.", - "long": "Create a new Journey Action in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_write scope", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-action" - }, - { - "name": "template-id", - "type": "string", - "usage": "(Required) Template ID", - "required": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "(Required) Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey create-one-more-identities-person", - "short": "Add one/more Identities to a person", - "long": "This Patch Api can be used to add identities(email, phone, customerId) to a person. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_write scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "customer-id", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "email", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-one-more-identities-person" - }, - { - "name": "person-id", - "type": "string", - "usage": "(Required) Person ID", - "required": true - }, - { - "name": "phone", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "temporary-id", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "(Required) Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey create-person", - "short": "Create a Person", - "long": "Creates a Person in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_write scope", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "customer-id", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "email", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "first-name", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-person" - }, - { - "name": "last-name", - "type": "string" - }, - { - "name": "phone", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "temporary-id", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "(Required) Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey create-remove-replace-person", - "short": "Add/Remove/Replace details of a Person.", - "long": "The Patch Api can be used to add/remove identities(email, phone, customerId) or replace firstName and lastName of an Individual. We support only add, replace and remove operations. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_write scope. \n\nFor a more information on Patch Requests, see this [JSON PATCH guide](https://jsonpatch.com)", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-remove-replace-person" - }, - { - "name": "person-id", - "type": "string", - "usage": "(Required) Person ID", - "required": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "(Required) Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey create-template", - "short": "Create Template", - "long": "Creates a Profile View Template in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_write scope", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-template" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "(Required) Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey create-workspace", - "short": "Create Workspace", - "long": "Create Workspace in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_write or cjp:config_write scopes", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "description", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-workspace" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "organization-id", - "type": "string", - "usage": "Organization ID" - } - ] - }, - { - "path": "webex cc journey create-wxcc-subscription", - "short": "Create WXCC Subscription", - "long": "Create WXCC Subscription in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_write or cjp:config_write scopes", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-wxcc-subscription" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "(Required) Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey creates-merges-aliases-individual-jds", - "short": "Creates or merges aliases to an Individual in JDS.", - "long": "Merges one/more aliases in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_write scope", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "customer-id", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "email", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "first-name", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for creates-merges-aliases-individual-jds" - }, - { - "name": "last-name", - "type": "string" - }, - { - "name": "phone", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "temporary-id", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "(Required) Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey delete-action-configuration-actionid", - "short": "Delete Journey Action configuration By ActionId.", - "long": "Delete Journey Action configuration By ActionId in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_write scope", - "flags": [ - { - "name": "action-id", - "type": "string", - "usage": "(Required) Action ID", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-action-configuration-actionid" - }, - { - "name": "template-id", - "type": "string", - "usage": "(Required) Template ID", - "required": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "(Required) Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey delete-one-more-identities-person", - "short": "Remove one/more Identities from a person", - "long": "This Patch Api can be used to remove identities(email, phone, customerId) from a person. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_write scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-one-more-identities-person" - }, - { - "name": "person-id", - "type": "string", - "usage": "(Required) Person ID", - "required": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "(Required) Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey delete-person-id", - "short": "Delete specific Person by id", - "long": "Delete Person Details searched by Person id in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_write scope", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-person-id" - }, - { - "name": "person-id", - "type": "string", - "usage": "(Required) Person ID", - "required": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "(Required) Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey delete-template-template-id", - "short": "Delete Template by template Id", - "long": "Delete Template By template id in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_write scope", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-template-template-id" - }, - { - "name": "template-id", - "type": "string", - "usage": "(Required) Template ID", - "required": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "(Required) Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey delete-workspace", - "short": "Delete Workspace", - "long": "Delete Workspace By Id. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_write or cjp:config_write scopes", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-workspace" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "(Required) Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey delete-wxcc-subscription", - "short": "Delete WXCC Subscription", - "long": "Delete WXCC Subscription in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_write or cjp:config_write scopes", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-wxcc-subscription" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "(Required) Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey event-posting", - "short": "Journey Event Posting", - "long": "Journey Event Posting Api.API accepts events that describe what occurred, when, and by whom on every interaction across touch points and applications. Data Ingestion is based on Cloud Events specification for describing event data in a common way. API accepts data in the form of POST with support for Header based authorization. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_write or cjp:config_write scopes", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for event-posting" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "(Required) Workspace ID" - } - ] - }, - { - "path": "webex cc journey get-action-actionid", - "short": "Get specific Journey Action By ActionId", - "long": "Get specific Journey Action By ActionId in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_read or cjp:config_write scopes", - "flags": [ - { - "name": "action-id", - "type": "string", - "usage": "(Required) Action ID", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-action-actionid" - }, - { - "name": "template-id", - "type": "string", - "usage": "(Required) Template ID", - "required": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "(Required) Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey get-action-name", - "short": "Get specific Journey Action By Name", - "long": "Get specific Journey Action By Name in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_read or cjp:config_write scopes", - "flags": [ - { - "name": "action-name", - "type": "string", - "usage": "(Required) Action Name", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-action-name" - }, - { - "name": "template-id", - "type": "string", - "usage": "(Required) Template ID", - "required": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "(Required) Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey get-all-actions", - "short": "Get all Journey Actions", - "long": "Get all Journey Actions in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_read or cjp:config_write scopes", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-all-actions" - }, - { - "name": "page", - "type": "string", - "usage": "Index of the page of results to be fetched. Results are returned in blocks of pageSize elements. This parameter specifies which page number to retrieve. The page numbering starts with 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Number of items to be displayed on a page." - }, - { - "name": "sort", - "type": "string", - "usage": "Sort direction" - }, - { - "name": "sort-by", - "type": "string", - "usage": "Sort By Field" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "(Required) Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey get-all-actions-template", - "short": "Get all Journey Actions for a template", - "long": "Get all Journey Actions for a template in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_read or cjp:config_write scopes", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-all-actions-template" - }, - { - "name": "template-id", - "type": "string", - "usage": "(Required) Template ID", - "required": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "(Required) Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey get-all-person", - "short": "Get all or a specific Person Details", - "long": "Get Person Details in JDS. If personId is provided by query parameter, this returns the Person whose personId matches the parameter.\nIf not, this will return ALL the Persons within the organization and workspace. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_read or cjp:config_write scopes", - "flags": [ - { - "name": "filter", - "type": "string", - "usage": "Optional filter which can be applied to the elements to be fetched. This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see [this reference](https://developer.here.com/docs/data-client-library/dev_guide/client/rsql.html). For a list of supported operators, see this [syntax guide](https://github.com/perplexhub/rsql-jpa-specification#rsql-syntax-reference)." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-all-person" - }, - { - "name": "page", - "type": "string", - "usage": "Index of the page of results to be fetched. Results are returned in blocks of pageSize elements. This parameter specifies which page number to retrieve. The page numbering starts with 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Number of items to be displayed on a page" - }, - { - "name": "person-id", - "type": "string", - "usage": "Person ID" - }, - { - "name": "sort", - "type": "string", - "usage": "Sort direction" - }, - { - "name": "sort-by", - "type": "string", - "usage": "Sort By Field" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "(Required) Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey get-all-template", - "short": "Get All Template Details.", - "long": "Get Template details by Organization Id and workspaceId in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_read or cjp:config_write scopes", - "flags": [ - { - "name": "filter", - "type": "string", - "usage": "Optional filter which can be applied to the elements to be fetched. This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see [this reference](https://developer.here.com/docs/data-client-library/dev_guide/client/rsql.html). For a list of supported operators, see this [syntax guide](https://github.com/perplexhub/rsql-jpa-specification#rsql-syntax-reference)." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-all-template" - }, - { - "name": "page", - "type": "string", - "usage": "Index of the page of results to be fetched. Results are returned in blocks of pageSize elements. This parameter specifies which page number to retrieve.The page numbering starts with 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Number of items to be displayed on a page." - }, - { - "name": "sort", - "type": "string", - "usage": "Sort direction" - }, - { - "name": "sort-by", - "type": "string", - "usage": "Sort By Field" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "(Required) Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey get-all-workspaces", - "short": "Get All Workspaces", - "long": "Get All Workspaces. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_read or cjds:admin_org_write scopes or cjp:config_read or cjp:config_write scopes", - "flags": [ - { - "name": "filter", - "type": "string", - "usage": "Optional filter which can be applied to the elements to be fetched. This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see [this reference](https://developer.here.com/docs/data-client-library/dev_guide/client/rsql.html). For a list of supported operators, see this [syntax guide](https://github.com/perplexhub/rsql-jpa-specification#rsql-syntax-reference)." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-all-workspaces" - }, - { - "name": "page", - "type": "string", - "usage": "Index of the page of results to be fetched. Results are returned in blocks of pageSize elements. This parameter specifies which page number to retrieve.The page numbering starts with 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Number of items to be displayed on a page." - }, - { - "name": "sort", - "type": "string", - "usage": "Sort direction" - }, - { - "name": "sort-by", - "type": "string", - "usage": "Sort By Field" - } - ] - }, - { - "path": "webex cc journey get-historic-events", - "short": "Historic Journey Events", - "long": "Getting Historic Customer Journey Events from Pinot. These events are append-only, immutable data ledger that can be queried to retrieve snapshot of latest events that moment in time or historically to play-back events as they occurred to understand or analyze Journeys using ML/AI models. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_read or cjds:admin_org_write scopes or cjp:config_read or cjp:config_write scopes ", - "flags": [ - { - "name": "data", - "type": "string", - "usage": "Optional filter on data filed which can be applied to the elements to be fetched. This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see [this reference](https://developer.here.com/docs/data-client-library/dev_guide/client/rsql.html). For a list of supported operators, see this [syntax guide](https://github.com/perplexhub/rsql-jpa-specification#rsql-syntax-reference)." - }, - { - "name": "filter", - "type": "string", - "usage": "Optional filter which can be applied to the elements to be fetched. This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see [this reference](https://developer.here.com/docs/data-client-library/dev_guide/client/rsql.html). For a list of supported operators, see this [syntax guide](https://github.com/perplexhub/rsql-jpa-specification#rsql-syntax-reference)." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-historic-events" - }, - { - "name": "identity", - "type": "string", - "usage": "Identity to search events for. In case the identity contains non-uri-encodable characters, eg: '+', '>' etc, you can URL-encode the same and then pass it as parameter." - }, - { - "name": "page", - "type": "string", - "usage": "Index of the page of results to be fetched. Results are returned in blocks of pageSize elements. This parameter specifies which page number to retrieve.The page numbering starts with 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Number of items to be displayed on a page." - }, - { - "name": "sort", - "type": "string", - "usage": "sort direction" - }, - { - "name": "sort-by", - "type": "string", - "usage": "sort By Field" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "(Required) Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey get-historic-profile-view", - "short": "Historic Progressive Profile View.", - "long": "Get Historic Progressive Profile View in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_read or cjds:admin_org_write scopes or cjp:config_read or cjp:config_write scopes", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-historic-profile-view" - }, - { - "name": "person-id", - "type": "string", - "usage": "(Required) Person ID", - "required": true - }, - { - "name": "template-id", - "type": "string", - "usage": "(Required) Template ID", - "required": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "(Required) Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey get-historic-profile-view-identity-template-id", - "short": "Historic Progressive Profile View By Identity and Template Id", - "long": "Get Historic Progressive Profile View in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_read or cjds:admin_org_write scopes or cjp:config_read or cjp:config_write scopes", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-historic-profile-view-identity-template-id" - }, - { - "name": "identity", - "type": "string", - "usage": "(Required) identity", - "required": true - }, - { - "name": "template-id", - "type": "string", - "usage": "(Required) Template ID", - "required": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "(Required) Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey get-historic-profile-view-identity-template-name", - "short": "Historic Progressive Profile View By Identity and Template Name.", - "long": "Get Historic Progressive Profile View in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_read or cjds:admin_org_write scopes or cjp:config_read or cjp:config_write scopes", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-historic-profile-view-identity-template-name" - }, - { - "name": "identity", - "type": "string", - "usage": "(Required) Identity", - "required": true - }, - { - "name": "template-name", - "type": "string", - "usage": "(Required) Template Name", - "required": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "(Required) Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey get-historic-profile-view-template-name", - "short": "Historic Progressive Profile View using Template Name.", - "long": "Get Historic Progressive Profile View in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_read or cjds:admin_org_write scopes or cjp:config_read or cjp:config_write scopes", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-historic-profile-view-template-name" - }, - { - "name": "person-id", - "type": "string", - "usage": "(Required) Person ID", - "required": true - }, - { - "name": "template-name", - "type": "string", - "usage": "(Required) Template Name", - "required": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "(Required) Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey get-template-searched-template-id", - "short": "Get A specific Template searched by template id", - "long": "Get Template details by template Id in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_read or cjp:config_write scopes", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-template-searched-template-id" - }, - { - "name": "template-id", - "type": "string", - "usage": "(Required) Template ID", - "required": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "(Required) Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey get-template-searched-template-name", - "short": "Get A specific Template searched by template name", - "long": "Get Template details by template Name in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_read or cjp:config_write scopes", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-template-searched-template-name" - }, - { - "name": "template-name", - "type": "string", - "usage": "(Required) Template Name", - "required": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "(Required) Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey get-workspace", - "short": "Get Workspace", - "long": "Get workspace details. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_read or cjds:admin_org_write scopes or cjp:config_read or cjp:config_write scopes", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-workspace" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "(Required) Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey get-wxcc-subscription", - "short": "Get WXCC Subscription", - "long": "Get WXCC Subscription in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_read or cjds:admin_org_write scopes or cjp:config_read or cjp:config_write scopes", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-wxcc-subscription" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "(Required) Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey merges-identities-primary-identity", - "short": "Merges Identities to a Primary Identity.", - "long": "Merges one/more Identities to a **Primary** Individual in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_write scope", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for merges-identities-primary-identity" - }, - { - "name": "person-ids-to-merge", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "primary-person-id", - "type": "string", - "usage": "(Required) Primary Person ID", - "required": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "(Required) Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey search-identity-aliases", - "short": "Search for an Identity via aliases", - "long": "Get one or more Person Details searched by aliases in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_read or cjp:config_write scopes. Multiple aliases should be separated by a comma.", - "flags": [ - { - "name": "aliases", - "type": "string", - "usage": "(Required) Aliases to search for. Multiple aliases should be separated by a comma. In case the alias(es) contain(s) non-uri-encodable characters, eg: '+', '>' etc, you can URL-encode the same and then pass it as parameter.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for search-identity-aliases" - }, - { - "name": "page", - "type": "string", - "usage": "Index of the page of results to be fetched. Results are returned in blocks of pageSize elements. This parameter specifies which page number to retrieve.The page numbering starts with 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Number of items to be displayed on a page." - }, - { - "name": "sort", - "type": "string", - "usage": "Sort direction" - }, - { - "name": "sort-by", - "type": "string", - "usage": "Sort By Field" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "(Required) Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey stream-events-identity", - "short": "Stream Events By Identity", - "long": "Real-time streaming enables API consumers to listen for events as it arrives as part of the Journey; these may be transformed, value-added/enriched, and ready to be consumed or forwarded to another destination. Optionally accepts filter and data parameters slice/dice further. It requires the appropriate cjds:admin_org_read or cjds:admin_org_write scopes or cjp:config_read or cjp:config_write scopes", - "flags": [ - { - "name": "data", - "type": "string", - "usage": "Optional filter on data filed which can be applied to the elements to be fetched. This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see [this reference](https://developer.here.com/docs/data-client-library/dev_guide/client/rsql.html). For a list of supported operators, see this [syntax guide](https://github.com/perplexhub/rsql-jpa-specification#rsql-syntax-reference)." - }, - { - "name": "filter", - "type": "string", - "usage": "Optional filter which can be applied to the elements to be fetched. This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see [this reference](https://developer.here.com/docs/data-client-library/dev_guide/client/rsql.html). For a list of supported operators, see this [syntax guide](https://github.com/perplexhub/rsql-jpa-specification#rsql-syntax-reference)." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for stream-events-identity" - }, - { - "name": "identity", - "type": "string", - "usage": "(Required) Person Identity. In case the identity contains non-uri-encodable characters, eg: '+', '>' etc, you can URL-encode the same and then pass it as parameter.", - "required": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "(Required) Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey stream-profile-views", - "short": "Stream Progressive profile Views", - "long": "Real-time streaming enables API consumers to listen for Progressive profile Views as it created/updated as part of the Journey; these may be transformed, value-added/enriched, and ready to be consumed or forwarded to another destination. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_read or cjds:admin_org_write scopes or cjp:config_read or cjp:config_write scopes", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for stream-profile-views" - }, - { - "name": "identity", - "type": "string", - "usage": "(Required) Identity to search Progressive Profile View for. In case the identity contains non-uri-encodable characters, eg: '+', '>' etc, you can URL-encode the same and then pass it as parameter.", - "required": true - }, - { - "name": "template-id", - "type": "string", - "usage": "(Required) Template ID", - "required": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "(Required) Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey stream-profile-views-template-name", - "short": "Stream Progressive profile Views By Template Name", - "long": "Real-time streaming enables API consumers to listen for Progressive profile Views as it created/updated as part of the Journey; these may be transformed, value-added/enriched, and ready to be consumed or forwarded to another destination. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_read or cjds:admin_org_write scopes or cjp:config_read or cjp:config_write scopes", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for stream-profile-views-template-name" - }, - { - "name": "identity", - "type": "string", - "usage": "(Required) Identity to search Progressive Profile View for. In case the identity contains non-uri-encodable characters, eg: '+', '>' etc, you can URL-encode the same and then pass it as parameter.", - "required": true - }, - { - "name": "template-name", - "type": "string", - "usage": "(Required) Template Name", - "required": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "(Required) Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey update-action", - "short": "Update existing Journey Action.", - "long": "Update existing Journey Action in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_write scope", - "flags": [ - { - "name": "action-id", - "type": "string", - "usage": "(Required) Action ID", - "required": true - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-action" - }, - { - "name": "template-id", - "type": "string", - "usage": "(Required) Template ID", - "required": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "(Required) Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey update-profileviewtemplate", - "short": "Update existing ProfileViewTemplate", - "long": "Update existing Profile View Template in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjp:config_write scope", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-profileviewtemplate" - }, - { - "name": "template-id", - "type": "string", - "usage": "(Required) Template ID", - "required": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "(Required) Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey update-workspace", - "short": "Update Workspace", - "long": "Update workspace by Id. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_write or cjp:config_write scopes", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "description", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-workspace" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "(Required) Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey-customer-identification", - "short": "JourneyCustomerIdentification commands" - }, - { - "path": "webex cc journey-customer-identification create-one-more-identities-person", - "short": "Add one/more Identities to a person", - "long": "This Patch Api can be used to add identities(email, phone, customerId) to a person.\n\nRole and Scope: Requires id full admin or any role with cjp:config_write scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "customer-id", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "email", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-one-more-identities-person" - }, - { - "name": "person-id", - "type": "string", - "usage": "Person ID", - "required": true - }, - { - "name": "phone", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "temporary-id", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey-customer-identification create-person", - "short": "Create a Person", - "long": "This API helps to create a Person in JDS.\n\nRole and Scope: Requires id full admin OR any role with cjp:config_write scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "customer-id", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "email", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "first-name", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-person" - }, - { - "name": "last-name", - "type": "string" - }, - { - "name": "phone", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "temporary-id", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey-customer-identification create-remove-replace-person", - "short": "Add/Remove/Replace details of a Person", - "long": "The Patch Api can be used to add/remove identities (email, phone, customerId, temporaryId, and socialId) or replace firstName and lastName of an Individual. We support only add, replace, and remove operations. \n\nFor more information on Patch Requests, see this [JSON PATCH guide](https://jsonpatch.com). \n\nRole and Scope: Requires id full admin role with cjp:config_write or any role with cjp:user or cjp:config_write scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-remove-replace-person" - }, - { - "name": "person-id", - "type": "string", - "usage": "Person ID", - "required": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey-customer-identification creates-merges-aliases-individual-jds", - "short": "Creates or merges aliases to an Individual in JDS", - "long": "This API enables you to consolidate multiple customer identifiers into a single, unified profile effortlessly. By integrating it with your Flow Designer, you can automatically retrieve and merge customer identifiers from various systems, such as your CRM or other third-party tools. This integration ensures all relevant data is consolidated into one profile, enhancing personalization and streamlining customer interactions. \n\n**Adding a New Alias** - To associate an additional alias (e.g., a new phone number) with an existing customer profile, simply update the API with the new identifier while leaving the existing identifiers intact. The system will automatically merge the new alias into the current profile, maintaining a comprehensive view of the customer.\n\n**Removing an Alias** - If you need to delete an alias from a customer’s profile, set the override flag to true in your API request. Include only the identifiers you wish to retain in the payload. The system will remove any identifiers not included in the updated payload, keeping the profile streamlined and up-to-date.\n\nRole and Scope: Requires id full admin OR any role with cjp:config_write scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "customer-id", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "email", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "first-name", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for creates-merges-aliases-individual-jds" - }, - { - "name": "last-name", - "type": "string" - }, - { - "name": "override", - "type": "bool", - "default": "false" - }, - { - "name": "phone", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "social-id", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "temporary-id", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey-customer-identification delete-one-more-identities-person", - "short": "Remove one/more Identities from a person", - "long": "This Patch Api can be used to remove identities(email, phone, customerId) from a person.\n\nRole and Scope: Requires id full admin or any role with cjp:config_write scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-one-more-identities-person" - }, - { - "name": "person-id", - "type": "string", - "usage": "Person ID", - "required": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey-customer-identification delete-person-id", - "short": "Delete specific Person by id", - "long": "Delete Person Details searched by Person id in JDS. \n\nRole and Scope: Requires id full admin or any role with cjp:config_write scope", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-person-id" - }, - { - "name": "person-id", - "type": "string", - "usage": "Person ID", - "required": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey-customer-identification get-all-person", - "short": "Get all or a specific Person Details", - "long": "Get Person Details in JDS. If personId is provided by query parameter, this returns the Person whose personId matches the parameter.\nIf not, this will return ALL the Persons within the organization and workspace. \n\nRole and Scope: Requires id full admin role with cjp:config_write or cjp:config_read scope. Or it requires any role with cjp:user, cjp:config_write or cjp:config_read scope.", - "flags": [ - { - "name": "filter", - "type": "string", - "usage": "Optional filter which can be applied to the elements to be fetched. This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see [this reference](https://developer.here.com/documentation/data-client-library/dev_guide/client/rsql.html). For a list of supported operators, see this [syntax guide](https://github.com/perplexhub/rsql-jpa-specification#rsql-syntax-reference)." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-all-person" - }, - { - "name": "page", - "type": "string", - "usage": "Index of the page of results to be fetched. Results are returned in blocks of pageSize elements. This parameter specifies which page number to retrieve. The page numbering starts with 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Number of items to be displayed on a page" - }, - { - "name": "person-id", - "type": "string", - "usage": "Person ID" - }, - { - "name": "sort", - "type": "string", - "usage": "Sort direction" - }, - { - "name": "sort-by", - "type": "string", - "usage": "Sort By Field" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey-customer-identification merges-identities-primary-identity", - "short": "Merges Identities to a Primary Identity", - "long": "Merges one/more Identities to a **Primary** Individual in JDS. \n\nRole and Scope: Requires id full admin role with cjp:config_write scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for merges-identities-primary-identity" - }, - { - "name": "person-ids-to-merge", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "primary-person-id", - "type": "string", - "usage": "Primary Person ID", - "required": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey-customer-identification search-identity-aliases", - "short": "Search for an Identity via aliases", - "long": "Get one or more Person Details searched by aliases in JDS. Multiple aliases should be separated by a comma.\n\nRole and Scope: Requires id full admin role with cjp:config_write or cjp:config_read scope. Or it requires any role with cjp:user, cjp:config_write or cjp:config_read scope.", - "flags": [ - { - "name": "aliases", - "type": "string", - "usage": "Aliases to search for. Multiple aliases should be separated by a comma. In case the alias(es) contain(s) non-uri-encodable characters, eg: '+', '>' etc, you can URL-encode the same and then pass it as parameter.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for search-identity-aliases" - }, - { - "name": "page", - "type": "string", - "usage": "Index of the page of results to be fetched. Results are returned in blocks of pageSize elements. This parameter specifies which page number to retrieve.The page numbering starts with 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Number of items to be displayed on a page." - }, - { - "name": "sort", - "type": "string", - "usage": "Sort direction" - }, - { - "name": "sort-by", - "type": "string", - "usage": "Sort By Field" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey-data-ingestion", - "short": "JourneyDataIngestion commands" - }, - { - "path": "webex cc journey-data-ingestion event-posting", - "short": "Journey Event Posting", - "long": "Journey Event Posting API accepts events that describe what occurred, when, and by whom on every interaction across touch points and applications. Data Ingestion is based on Cloud Events specification for describing event data in a common way. API accepts data in the form of POST with support for Header based authorization. \n\nRole and Scope: Requires id full admin role with cjds:admin_org_write or any role with cjp:config_write scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for event-posting" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Workspace ID" - } - ] - }, - { - "path": "webex cc journey-profile-creation-insights", - "short": "JourneyProfileCreationInsights commands" - }, - { - "path": "webex cc journey-profile-creation-insights create-template", - "short": "Create Template", - "long": "Creates a Profile View Template in JDS. \n\n **Role and Scope**: Requires id full admin or any role with cjp:config_write scope.\n\n **Template with single rule**: \n ```\n {\n \"name\": \"ClosedCaller\",\n \"attributes\": [\n {\n \"version\": \"0.1\",\n \"event\": \"Closed Queue\",\n \"metaDataType\": \"string\",\n \"metaData\": \"category\",\n \"limit\": 100,\n \"displayName\": \"ClosedCaller\",\n \"lookBackDurationType\": \"minutes\",\n \"lookBackPeriod\": 5,\n \"aggregationMode\": \"Count\",\n \"rules\": {\n \"logic\": \"SINGLE\",\n \"condition\": \"Closed Queue,category,string,Value EQ Closed\"\n },\n \"widgetAttributes\": {\n \"type\": \"table\"\n },\n \"verbose\": false\n }\n ]\n }\n ```\n\n\n **Example Event:** \n ```\n {\n \"id\": \"{{$guid}}\",\n \"specversion\": \"1.0\",\n \"type\": \"Closed Queue\",\n \"source\": \"Voice%20Contact\",\n \"identity\": \"jes@gmail.com\",\n \"identitytype\": \"email\",\n \"datacontenttype\": \"application/json\",\n \"data\": {\n \"Email\": \"jes@gmail.com\",\n \"CallsQueuedNow\": \"Use GetQueueInfoNode Values\",\n \"OldestCallTime\": \"Use GetQueueInfoNode Values\",\n \"LoggedOnAgents\": \"Use GetQueueInfoNode Values\",\n \"PIQ\": \"Use GetQueueInfoNode Values\",\n \"EWT\": \"Use GetQueueInfoNode Values\",\n \"category\": \"Closed\",\n \"origin\": \"Past Due - 1st Notification\",\n \"channelType\": \"QueueCall\",\n \"channelBreakout\": \"voice\"\n }\n }\n ```\n\n\n **Key components of the rule:** \n * template.event: This refers to the specific event type you want to match (e.g., \"Closed Queue\").\n * event.type: This refers to the actual event type present in the event data.\n * event.data: This is the dictionary/object containing all the metadata associated with the event.\n * template.rules.condition - category: This is the specific metadata field you want to compare within event.data.\n * template.rules.condition - string: This indicates that the category metadata is a string type.\n * template.rules.condition - Value EQ Closed: This defines the condition: the value of the category field (as a string) must be equal to \"Closed\".\n\n\n **Evaluation process:** \n 1. The rule checks if template.event matches the event.type in the incoming event.\n 2. If they match, the rule retrieves the value of the category field from event.data.\n 3. It then compares the value of category (treated as a string) to \"Closed\" using an equality operator (EQ).\n 4. If the values are equal, the condition evaluates to True and creates a progressive profile for the identity. Otherwise, it evaluates to False.\n \n The template has lookBackPeriod and lookBackDurationType which decide how long to look back for the calculation. In the above template, it fetches events triggered in the last 5 minutes and performs the aggregation mode on the data received from rules.\n \n * When the aggregation mode is Value, the profile result will have the value of the rule as the output.\n * When the aggregation mode is Count, the profile will have the count of events with category closed in the past 5 minutes.\n * When the aggregation mode is Distinct, the profile will have the value closed.\n * When aggregation mode is Sum, the data type should be Integer or double and it will be the sum of all matching values in the last 5 minutes.\n * When aggregation mode is Max, the data type should be Integer or double and it will be the max of all matching values in the last 5 minutes.\n * When aggregation mode is Min, the data type should be Integer or double and it will be the min of all matching values in the last 5 minutes.\n * When aggregation mode is Average, the data type should be Integer or double and it will be the average of all matching values in the last 5 minutes.\n\n\n **Example template with multiple rules :** \n ```\n1. {\n2. \"name\": \"sample-template-multi-condition\",\n3. \"attributes\": [\n4. {\n5. \"version\": \"0.1\",\n6. \"event\": \"Quote\",\n7. \"metaDataType\": \"string\",\n8. \"metaData\": \"email\",\n9. \"limit\": 1,\n10. \"displayName\": \"Email\",\n11. \"lookBackDurationType\": \"days\",\n12. \"lookBackPeriod\": 50,\n13. \"aggregationMode\": \"Value\",\n14. \"rules\": {\n15. \"args\": [\n16. \"Quote,isEV,string,Value EQ Yes\",\n17. \"Quote,isEV,string,Value EQ No\",\n18. {\n19. \"args\": [\n20. \"Quote,make,string,Value EQ Honda\",\n21. \"Quote,model,string,Value EQ CR-V\"\n22. ],\n23. \"logic\": \"AND\"\n24. }\n25. ],\n26. \"logic\": \"OR\"\n27. },\n28. \"widgetAttributes\": {\n29. \"type\": \"table\"\n30. },\n31. \"verbose\": false\n32. }\n33. ]\n34. }\n ```\n1. In the above template we have multiple rules.\n2. The arguments in line 20 and 21 are evaluated with logical AND condition.\n3. Then arguments in line 16 and 17 along with the result for 20 AND 21 are evaluated with logical OR (line 26).\n", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-template" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey-profile-creation-insights delete-template-template-id", - "short": "Delete Template by template Id", - "long": "Delete Template By template id in JDS. \n\nRole and Scope: Requires id full admin or any role with cjp:config_write scope.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-template-template-id" - }, - { - "name": "template-id", - "type": "string", - "usage": "Template ID", - "required": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey-profile-creation-insights get-all-template", - "short": "Get All Template Details", - "long": "Get Template details by Organization Id and workspaceId in JDS. \n\nRole and Scope: Requires id full admin role with cjp:config_write or cjp:config_read scope. Or requires any role with cjp:user, cjp:config_write or cjp:config_read scope.", - "flags": [ - { - "name": "filter", - "type": "string", - "usage": "Optional filter which can be applied to the elements to be fetched. This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see [this reference](https://developer.here.com/documentation/data-client-library/dev_guide/client/rsql.html). For a list of supported operators, see this [syntax guide](https://github.com/perplexhub/rsql-jpa-specification#rsql-syntax-reference)." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-all-template" - }, - { - "name": "page", - "type": "string", - "usage": "Index of the page of results to be fetched. Results are returned in blocks of pageSize elements. This parameter specifies which page number to retrieve.The page numbering starts with 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Number of items to be displayed on a page." - }, - { - "name": "sort", - "type": "string", - "usage": "Sort direction" - }, - { - "name": "sort-by", - "type": "string", - "usage": "Sort By Field" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey-profile-creation-insights get-historic-events", - "short": "Historic Journey Events", - "long": "Getting Historic Customer Journey Events from Pinot. These events are append-only, immutable data ledger that can be queried to retrieve snapshot of latest events that moment in time or historically to play-back events as they occurred to understand or analyze Journeys using ML/AI models. \n\nRole and Scope: Requires id full admin role with cjds:admin_org_write or cjds:admin_org_read scope. Or requires any role with cjp:user, cjp:config_write or cjp:config_read scope.", - "flags": [ - { - "name": "data", - "type": "string", - "usage": "Optional filter on data filed which can be applied to the elements to be fetched. This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see [this reference](https://developer.here.com/documentation/data-client-library/dev_guide/client/rsql.html). For a list of supported operators, see this [syntax guide](https://github.com/perplexhub/rsql-jpa-specification#rsql-syntax-reference)." - }, - { - "name": "filter", - "type": "string", - "usage": "Optional filter which can be applied to the elements to be fetched. This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see [this reference](https://developer.here.com/documentation/data-client-library/dev_guide/client/rsql.html). For a list of supported operators, see this [syntax guide](https://github.com/perplexhub/rsql-jpa-specification#rsql-syntax-reference)." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-historic-events" - }, - { - "name": "identity", - "type": "string", - "usage": "Identity to search events for. In case the identity contains non-uri-encodable characters, eg: '+', '>' etc, you can URL-encode the same and then pass it as parameter." - }, - { - "name": "page", - "type": "string", - "usage": "Index of the page of results to be fetched. Results are returned in blocks of pageSize elements. This parameter specifies which page number to retrieve.The page numbering starts with 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Number of items to be displayed on a page." - }, - { - "name": "sort", - "type": "string", - "usage": "sort direction" - }, - { - "name": "sort-by", - "type": "string", - "usage": "sort By Field" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey-profile-creation-insights get-historic-view", - "short": "Historic Progressive Profile View", - "long": "Get Historic Progressive Profile View in JDS. \n\nRole and Scope: Requires id full admin role with cjds:admin_org_write or cjds:admin_org_read scope. Or requires any role with cjp:user, cjp:config_write or cjp:config_read scope.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-historic-view" - }, - { - "name": "person-id", - "type": "string", - "usage": "Person ID", - "required": true - }, - { - "name": "template-id", - "type": "string", - "usage": "Template ID", - "required": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey-profile-creation-insights get-historic-view-template-id", - "short": "Historic Progressive Profile View By Template Id", - "long": "Get Historic Progressive Profile View in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_read or cjds:admin_org_write scopes or cjp:config_read or cjp:config_write scopes", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-historic-view-template-id" - }, - { - "name": "identity", - "type": "string", - "usage": "identity", - "required": true - }, - { - "name": "template-id", - "type": "string", - "usage": "Template ID", - "required": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey-profile-creation-insights get-historic-view-template-name", - "short": "Historic Progressive Profile View by Template Name", - "long": "Get Historic Progressive Profile View in JDS. \n\nRole and Scope: Requires id full admin role with cjds:admin_org_write or cjds:admin_org_read scope. Or requires any role with cjp:user, cjp:config_write or cjp:config_read scope.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-historic-view-template-name" - }, - { - "name": "person-id", - "type": "string", - "usage": "Person ID", - "required": true - }, - { - "name": "template-name", - "type": "string", - "usage": "Template Name", - "required": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey-profile-creation-insights get-historic-view-template-name-2", - "short": "Historic Progressive Profile View By Template Name", - "long": "Get Historic Progressive Profile View in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_read or cjds:admin_org_write scopes or cjp:config_read or cjp:config_write scopes", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-historic-view-template-name-2" - }, - { - "name": "identity", - "type": "string", - "usage": "Identity", - "required": true - }, - { - "name": "template-name", - "type": "string", - "usage": "Template Name", - "required": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey-profile-creation-insights get-template-searched-template-id", - "short": "Get A specific Template searched by template id", - "long": "Get Template details by template Id in JDS. \n\nRole and Scope: Requires id full admin role with cjp:config_write or cjp:config_read scope. Or requires any role with cjp:user, cjp:config_write or cjp:config_write scope.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-template-searched-template-id" - }, - { - "name": "template-id", - "type": "string", - "usage": "Template ID", - "required": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey-profile-creation-insights get-template-searched-template-name", - "short": "Get A specific Template searched by template name", - "long": "Get Template details by template Name in JDS. \n\nRole and Scope: Requires id full admin role with cjp:config_write or cjp:config_read scope. Or requires any role with cjp:user, cjp:config_write or cjp:config_read scope.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-template-searched-template-name" - }, - { - "name": "template-name", - "type": "string", - "usage": "Template Name", - "required": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey-profile-creation-insights stream-events-identity", - "short": "Stream Events By Identity", - "long": "Real-time streaming enables API consumers to listen for events as it arrives as part of the Journey; these may be transformed, value-added/enriched, and ready to be consumed or forwarded to another destination. Optionally accepts filter and data parameters slice/dice further. \n\nRole and Scope: Requires id full admin role with cjds:admin_org_write or cjds:admin_org_read scope. Or requires any role with cjp:user, cjp:config_write or cjp:config_read scope.", - "flags": [ - { - "name": "data", - "type": "string", - "usage": "Optional filter on data filed which can be applied to the elements to be fetched. This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see [this reference](https://developer.here.com/documentation/data-client-library/dev_guide/client/rsql.html). For a list of supported operators, see this [syntax guide](https://github.com/perplexhub/rsql-jpa-specification#rsql-syntax-reference)." - }, - { - "name": "filter", - "type": "string", - "usage": "Optional filter which can be applied to the elements to be fetched. This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see [this reference](https://developer.here.com/documentation/data-client-library/dev_guide/client/rsql.html). For a list of supported operators, see this [syntax guide](https://github.com/perplexhub/rsql-jpa-specification#rsql-syntax-reference)." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for stream-events-identity" - }, - { - "name": "identity", - "type": "string", - "usage": "Person Identity. In case the identity contains non-uri-encodable characters, eg: '+', '>' etc, you can URL-encode the same and then pass it as parameter.", - "required": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey-profile-creation-insights stream-views-template-id", - "short": "Stream Progressive profile Views By Template Id", - "long": "Real-time streaming enables API consumers to listen for Progressive profile Views as it created/updated as part of the Journey; these may be transformed, value-added/enriched, and ready to be consumed or forwarded to another destination. \n\nRole and Scope: Requires id full admin role with cjds:admin_org_write or cjds:admin_org_read scope. Or requires any role with cjp:user, cjp:config_write or cjp:config_read scope.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for stream-views-template-id" - }, - { - "name": "identity", - "type": "string", - "usage": "Identity to search Progressive Profile View for. In case the identity contains non-uri-encodable characters, eg: '+', '>' etc, you can URL-encode the same and then pass it as parameter.", - "required": true - }, - { - "name": "template-id", - "type": "string", - "usage": "Template ID", - "required": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey-profile-creation-insights stream-views-template-name", - "short": "Stream Progressive profile Views By Template Name", - "long": "Real-time streaming enables API consumers to listen for Progressive profile Views as it created/updated as part of the Journey; these may be transformed, value-added/enriched, and ready to be consumed or forwarded to another destination. \n\nRole and Scope: Requires id full admin role with cjds:admin_org_write or cjds:admin_org_read scope. Or requires any role with cjp:user, cjp:config_write or cjp:config_read scope.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for stream-views-template-name" - }, - { - "name": "identity", - "type": "string", - "usage": "Identity to search Progressive Profile View for. In case the identity contains non-uri-encodable characters, eg: '+', '>' etc, you can URL-encode the same and then pass it as parameter.", - "required": true - }, - { - "name": "template-name", - "type": "string", - "usage": "Template Name", - "required": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey-profile-creation-insights update-profileviewtemplate", - "short": "Update existing ProfileViewTemplate", - "long": "Update existing Profile View Template in JDS. \n\nRole and Scope: Requires id full admin or any role with cjp:config_write scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-profileviewtemplate" - }, - { - "name": "template-id", - "type": "string", - "usage": "Template ID", - "required": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey-subscription", - "short": "JourneySubscription commands" - }, - { - "path": "webex cc journey-subscription create-wxcc", - "short": "Create WXCC Subscription", - "long": "Create WXCC Subscription in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_write or cjp:config_write scopes", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-wxcc" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey-subscription delete-wxcc", - "short": "Delete WXCC Subscription", - "long": "Delete WXCC Subscription in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_write or cjp:config_write scopes", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-wxcc" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey-subscription get-wxcc", - "short": "Get WXCC Subscription", - "long": "Get WXCC Subscription in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_read or cjds:admin_org_write scopes or cjp:config_read or cjp:config_write scopes", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-wxcc" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey-trigger-actions", - "short": "JourneyTriggerActions commands" - }, - { - "path": "webex cc journey-trigger-actions create", - "short": "Create a new Journey Action", - "long": "Create a new Journey Action in JDS. \n\n **Role and Scope**: It requires id full admin or any role with cjp:config_write scope.\n\n **Sample Input for Creating new Journey action**: \n ```\n {\n \"name\": \"Closed Queue Action\",\n \"cooldownPeriodInMinutes\": 1,\n \"rules\": {\n \"logic\": \"SINGLE\",\n \"condition\": \"Closed Queue,category,string,Value GTE 2\"\n },\n \"actionTriggers\": [\n {\n \"type\": \"Webhook\",\n \"webhookURL\": \"https://hooks.us.webexconnect.io/events/6M347NJ6\",\n \"attributes\": {\n \"httpverb\": \"post\",\n \"requestbody\": \"{\\\"SMS\\\":\\\"12263762551\\\",\\\"callID\\\":\\\"\\\",\\\"MessageToSend\\\":\\\"Hello there!\\\"}\"\n }\n }\n ],\n \"isActive\": true\n }\n ```\nThe action trigger's evaluation process is predicated on the progressive profile that has been established. \nIn this specific action trigger, the rule assessment verifies whether the progressive profile value from the prior template evaluation was in excess of 2. \nIf this condition is met, the webhook is subsequently activated.\n\n\nPrior to rule evaluation for actions, several conditions must be satisfied. \nFirstly, the event associated with the template must align with the rule event, which, in this case, is 'Closed Queue'. \nSecondly, the metadata assigned to the template must correspond with the metadata set by the rules, which in this context, is 'category'. \nThirdly, the aggregation mode of the template must be equivalent to the rules' aggregation mode, which is 'value' in this instance. \nFinally, the operator of the template's aggregation mode must match those defined for 'value'. \nIn this scenario, it is 'GTE' (greater than or equal), which is an accepted value for 'value'.\n", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "template-id", - "type": "string", - "usage": "Template ID", - "required": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey-trigger-actions delete-configuration-actionid", - "short": "Delete Journey Action configuration By ActionId", - "long": "Delete Journey Action configuration By ActionId in JDS. \n\nRole and Scope: It requires id full admin role with cjp:config_write scope.", - "flags": [ - { - "name": "action-id", - "type": "string", - "usage": "Action ID", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-configuration-actionid" - }, - { - "name": "template-id", - "type": "string", - "usage": "Template ID", - "required": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey-trigger-actions get-actionid", - "short": "Get specific Journey Action By ActionId", - "long": "Get specific Journey Action By ActionId in JDS. \n\nRole and Scope: It requires id full admin role with cjp:config_read or cjp:config_write scope.", - "flags": [ - { - "name": "action-id", - "type": "string", - "usage": "Action ID", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-actionid" - }, - { - "name": "template-id", - "type": "string", - "usage": "Template ID", - "required": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey-trigger-actions get-all", - "short": "Get all Journey Actions", - "long": "Get all Journey Actions in JDS. \n\nRole and Scope: Requires id full admin or any role with cjp:config_write or cjp:config_read scope.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-all" - }, - { - "name": "page", - "type": "string", - "usage": "Index of the page of results to be fetched. Results are returned in blocks of pageSize elements. This parameter specifies which page number to retrieve. The page numbering starts with 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Number of items to be displayed on a page." - }, - { - "name": "sort", - "type": "string", - "usage": "Sort direction" - }, - { - "name": "sort-by", - "type": "string", - "usage": "Sort By Field" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey-trigger-actions get-all-template", - "short": "Get all Journey Actions for a template", - "long": "Get all Journey Actions for a template in JDS. \n\nRole and Scope: It requires id full admin or any role with cjp:config_read or cjp:config_write scope.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-all-template" - }, - { - "name": "template-id", - "type": "string", - "usage": "Template ID", - "required": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey-trigger-actions get-name", - "short": "Get specific Journey Action By Name", - "long": "Get specific Journey Action By Name in JDS. \n\nRole and Scope:It requires id full admin or any role with cjp:config_read or cjp:config_write scope.", - "flags": [ - { - "name": "action-name", - "type": "string", - "usage": "Action Name", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-name" - }, - { - "name": "template-id", - "type": "string", - "usage": "Template ID", - "required": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey-trigger-actions update", - "short": "Update existing Journey Action", - "long": "Update existing Journey Action in JDS. \n\nRole and Scope: It requires id full admin or any role with cjp:config_write scope.", - "flags": [ - { - "name": "action-id", - "type": "string", - "usage": "Action ID", - "required": true - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "template-id", - "type": "string", - "usage": "Template ID", - "required": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey-workspace-management", - "short": "JourneyWorkspaceManagement commands" - }, - { - "path": "webex cc journey-workspace-management create", - "short": "Create Workspace", - "long": "Create Workspace in JDS. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope.It requires the appropriate cjds:admin_org_write or cjp:config_write scopes", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "description", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "name", - "type": "string" - } - ] - }, - { - "path": "webex cc journey-workspace-management delete", - "short": "Delete Workspace", - "long": "Delete Workspace By Id. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_write or cjp:config_write scopes", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey-workspace-management get", - "short": "Get Workspace", - "long": "Get workspace details. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_read or cjds:admin_org_write scopes or cjp:config_read or cjp:config_write scopes", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc journey-workspace-management get-all", - "short": "Get All Workspaces", - "long": "Get All Workspaces. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_read or cjds:admin_org_write scopes or cjp:config_read or cjp:config_write scopes", - "flags": [ - { - "name": "filter", - "type": "string", - "usage": "Optional filter which can be applied to the elements to be fetched. This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see [this reference](https://developer.here.com/documentation/data-client-library/dev_guide/client/rsql.html). For a list of supported operators, see this [syntax guide](https://github.com/perplexhub/rsql-jpa-specification#rsql-syntax-reference)." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-all" - }, - { - "name": "page", - "type": "string", - "usage": "Index of the page of results to be fetched. Results are returned in blocks of pageSize elements. This parameter specifies which page number to retrieve.The page numbering starts with 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Number of items to be displayed on a page." - }, - { - "name": "sort", - "type": "string", - "usage": "Sort direction" - }, - { - "name": "sort-by", - "type": "string", - "usage": "Sort By Field" - } - ] - }, - { - "path": "webex cc journey-workspace-management update", - "short": "Update Workspace", - "long": "Update workspace by Id. Use the cjp scope if you have a contact center license; otherwise, use the cjds scope. It requires the appropriate cjds:admin_org_write or cjp:config_write scopes", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "description", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "Workspace ID", - "required": true - } - ] - }, - { - "path": "webex cc multimedia-profile", - "short": "MultimediaProfile commands" - }, - { - "path": "webex cc multimedia-profile bulk-export", - "short": "Bulk export Multimedia Profile(s)", - "long": "Export all Multimedia Profile(s) in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-export" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - } - ] - }, - { - "path": "webex cc multimedia-profile bulk-save", - "short": "Bulk save Multimedia Profile(s)", - "long": "Create, Update or delete Multimedia Profile(s) in bulk in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-save" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc multimedia-profile create", - "short": "Create a new Multimedia Profile", - "long": "Create a new Multimedia Profile in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc multimedia-profile delete", - "aliases": [ - "delete-id" - ], - "short": "Delete specific Multimedia Profile by ID", - "long": "Delete an existing Multimedia Profile by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Multimedia Profile.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc multimedia-profile get", - "aliases": [ - "get-id" - ], - "short": "Get specific Multimedia Profile by ID", - "long": "Retrieve an existing Multimedia Profile by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Multimedia Profile.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc multimedia-profile list", - "short": "List Multimedia Profile(s)", - "long": "Retrieve a list of Multimedia Profile(s) in a given organization.", - "flags": [ - { - "name": "attributes", - "type": "string", - "usage": "Specify the attributes to be returned.Default all attributes are returned along with specified columns. All Attributes are supported" - }, - { - "name": "filter", - "type": "string", - "usage": "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain space, and if so kindly bound it with quotes to apply filter. " - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "search", - "type": "string", - "usage": "Filter data based on the search keyword.Supported search columns(name, description) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\",\"description\");value==\"Cisco\" " - } - ] - }, - { - "path": "webex cc multimedia-profile list-references", - "short": "List references for a specific Multimedia Profile", - "long": "Retrieve a list of all entities that have reference to an existing Multimedia Profile by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-references" - }, - { - "name": "id", - "type": "string", - "usage": "ID of this contact center resource.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "type", - "type": "string", - "usage": "Entity type of the other entity that has a reference to this specific entity." - } - ] - }, - { - "path": "webex cc multimedia-profile purge-inactive", - "short": "Purge inactive Multimedia Profile(s)", - "long": "Purge inactive Multimedia Profile(s) older than the configured interval for a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for purge-inactive" - }, - { - "name": "next-start-id", - "type": "string", - "usage": "This is the entity ID from which items for the next purge batch with be selected." - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc multimedia-profile update", - "aliases": [ - "update-id" - ], - "short": "Update specific Multimedia Profile by ID", - "long": "Update an existing Multimedia Profile by ID in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Multimedia Profile.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc notification", - "short": "Notification commands" - }, - { - "path": "webex cc notification subscribe", - "short": "Subscribe Notification", - "long": "Access this endpoint when the user has to register for a WebSocket Session. Requires one of the following accepted registration scopes: `cjp:user` or `cloud-contact-center:pod_conv`. The `cjp-hybrid-conn:read` scope is also accepted when CCE authentication is enabled. Tokens with only admin or partner roles and no accepted registration scope are rejected.", - "flags": [ - { - "name": "allow-multi-login", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "client-type", - "type": "string" - }, - { - "name": "force", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for subscribe" - }, - { - "name": "is-keep-alive-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex cc organization-setting", - "short": "OrganizationSetting commands" - }, - { - "path": "webex cc organization-setting get", - "short": "Get specific Organization Setting by ID", - "long": "Retrieve an existing Organization Setting by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "id", - "type": "string", - "usage": "ID of this contact center resource.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc organization-setting list", - "short": "List Organization Settings", - "long": "Retrieve a list of Organization Settings in a given organization.", - "flags": [ - { - "name": "attributes", - "type": "string", - "usage": "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported." - }, - { - "name": "filter", - "type": "string", - "usage": "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, inactivateEntitiesPurgedOn, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. " - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "search", - "type": "string", - "usage": "Filter data based on the search keyword.Supported search columns(name) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\");value==\"Cisco\" " - } - ] - }, - { - "path": "webex cc organization-setting patch", - "short": "Partially update Organization Setting by ID", - "long": "Partially update Organization Setting by ID in a given organization. Requests authenticated with a user token can modify only fields designated as user-modifiable.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for patch" - }, - { - "name": "id", - "type": "string", - "usage": "ID of this contact center resource.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc organization-setting update", - "short": "Update specific Organization Setting by ID", - "long": "Update an existing Organization Setting by ID in a given organization. Requests authenticated with a user token can modify only fields designated as user-modifiable.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "id", - "type": "string", - "usage": "ID of this contact center resource.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc outdial-ani", - "short": "OutdialAni commands" - }, - { - "path": "webex cc outdial-ani bulk-export", - "short": "Bulk export Outdial ANI(s)", - "long": "Export all Outdial ANI(s) in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-export" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - } - ] - }, - { - "path": "webex cc outdial-ani bulk-save", - "short": "Bulk save Outdial ANIs", - "long": "Create, Update or delete Outdial ANIs in bulk in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-save" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc outdial-ani bulk-save-entries", - "aliases": [ - "bulk-save-entry" - ], - "short": "Bulk save Outdial ANI Entries", - "long": "Create, Update or delete Outdial ANI Entries in bulk for an Address Book in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-save-entries" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "out-dial-ani-id", - "type": "string", - "usage": "Resource ID of the Outdial ANI", - "required": true - } - ] - }, - { - "path": "webex cc outdial-ani create", - "short": "Create a new Outdial ANI", - "long": "Create a new Outdial ANI in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc outdial-ani create-entry", - "short": "Create a new Outdial ANI Entry", - "long": "Create a new Outdial ANI Entry in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "created-time", - "type": "int64", - "default": "0" - }, - { - "name": "default-anientry", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-entry" - }, - { - "name": "id", - "type": "string" - }, - { - "name": "last-updated-time", - "type": "int64", - "default": "0" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "number", - "type": "string" - }, - { - "name": "organization-id", - "type": "string" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "out-dial-ani-id", - "type": "string", - "usage": "Resource ID of the Outdial ANI", - "required": true - }, - { - "name": "version", - "type": "int64", - "default": "0" - } - ] - }, - { - "path": "webex cc outdial-ani delete", - "aliases": [ - "delete-id" - ], - "short": "Delete specific Outdial ANI by ID", - "long": "Delete an existing Outdial ANI by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Outdial ANI.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc outdial-ani delete-entry-id", - "short": "Delete specific Outdial ANI Entry by ID", - "long": "Delete an existing Outdial ANI Entry by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-entry-id" - }, - { - "name": "id", - "type": "string", - "usage": "ID of this contact center resource.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "out-dial-ani-id", - "type": "string", - "usage": "Resource ID of the Outdial ANI", - "required": true - } - ] - }, - { - "path": "webex cc outdial-ani get", - "aliases": [ - "get-id" - ], - "short": "Get specific Outdial ANI by ID", - "long": "Retrieve an existing Outdial ANI by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Outdial ANI.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc outdial-ani get-entry-id", - "short": "Get specific Outdial ANI Entry by ID", - "long": "Retrieve an existing Outdial ANI Entry by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-entry-id" - }, - { - "name": "id", - "type": "string", - "usage": "ID of this contact center resource.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "out-dial-ani-id", - "type": "string", - "usage": "Resource ID of the Outdial ANI", - "required": true - } - ] - }, - { - "path": "webex cc outdial-ani list", - "short": "List Outdial ANIs", - "long": "Retrieve a list of Outdial ANIs in a given organization.\n Note: Returning array fields in the List (Get All) API response is deprecated. To retrieve the complete resource with all fields, please use the Get-by-ID API instead.", - "flags": [ - { - "name": "attributes", - "type": "string", - "usage": "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported. except outdialANIEntries" - }, - { - "name": "filter", - "type": "string", - "usage": "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, outdialANIEntries, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. " - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "search", - "type": "string", - "usage": "Filter data based on the search keyword.Supported search columns(name, description) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\",\"description\");value==\"Cisco\" " - }, - { - "name": "single-object-response", - "type": "string", - "usage": "Specify whether to include array fields in the response. This query parameter should be used only when the response contains a single record. It is not supported for responses with multiple objects and throws an exception." - } - ] - }, - { - "path": "webex cc outdial-ani list-entries", - "aliases": [ - "list-entry" - ], - "short": "List Outdial ANI Entries", - "long": "Retrieve a list of Outdial ANI Entries in a given organization.", - "flags": [ - { - "name": "attributes", - "type": "string", - "usage": "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported." - }, - { - "name": "filter", - "type": "string", - "usage": "Specify a filter based on which the results will be fetched. Supported filterable fields: id. The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. " - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-entries" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "search", - "type": "string", - "usage": "Filter data based on the search keyword.Supported search columns(name) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\");value==\"Cisco\" " - } - ] - }, - { - "path": "webex cc outdial-ani list-entries-for-ani", - "aliases": [ - "list-entry-2" - ], - "short": "List Outdial ANI Entries", - "long": "Retrieve a list of Outdial ANI Entries in a given organization.", - "flags": [ - { - "name": "attributes", - "type": "string", - "usage": "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported." - }, - { - "name": "filter", - "type": "string", - "usage": "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. " - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-entries-for-ani" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "out-dial-ani-id", - "type": "string", - "usage": "Resource ID of the Outdial ANI", - "required": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "search", - "type": "string", - "usage": "Filter data based on the search keyword.Supported search columns(name) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\");value==\"Cisco\" " - } - ] - }, - { - "path": "webex cc outdial-ani list-references", - "short": "List references for a specific Outdial ANI", - "long": "Retrieve a list of all entities that have reference to an existing Outdial ANI by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-references" - }, - { - "name": "id", - "type": "string", - "usage": "ID of this contact center resource.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "type", - "type": "string", - "usage": "Entity type of the other entity that has a reference to this specific entity." - } - ] - }, - { - "path": "webex cc outdial-ani update", - "aliases": [ - "update-id" - ], - "short": "Update specific Outdial ANI by ID", - "long": "Update an existing Outdial ANI by ID in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Outdial ANI.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc outdial-ani update-entry-id", - "short": "Update specific Outdial ANI Entry by ID", - "long": "Update an existing Outdial ANI Entry by ID in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "created-time", - "type": "int64", - "default": "0" - }, - { - "name": "default-anientry", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-entry-id" - }, - { - "name": "id", - "type": "string", - "usage": "ID of this contact center resource.", - "required": true - }, - { - "name": "last-updated-time", - "type": "int64", - "default": "0" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "number", - "type": "string" - }, - { - "name": "organization-id", - "type": "string" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "out-dial-ani-id", - "type": "string", - "usage": "Resource ID of the Outdial ANI", - "required": true - }, - { - "name": "version", - "type": "int64", - "default": "0" - } - ] - }, - { - "path": "webex cc overrides", - "short": "Overrides commands" - }, - { - "path": "webex cc overrides bulk-export", - "short": "Bulk export Overrides resource(s)", - "long": "Export all Overrides resource(s) in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-export" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - } - ] - }, - { - "path": "webex cc overrides bulk-save", - "short": "Bulk save Overrides resource(s)", - "long": "Create, Update or delete Overrides resource(s) in bulk in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-save" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc overrides create", - "short": "Create a new Overrides resource", - "long": "Create a new Overrides resource in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc overrides delete", - "aliases": [ - "delete-id" - ], - "short": "Delete specific Overrides resource by ID", - "long": "Delete an existing Overrides resource by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Overrides resource.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc overrides get", - "aliases": [ - "get-id" - ], - "short": "Get specific Overrides resource by ID", - "long": "Retrieve an existing Overrides resource by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Overrides resource.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc overrides list", - "short": "List Overrides resource(s)", - "long": "Retrieve a list of Overrides resource(s) in a given organization.\n Note: Returning array fields in the List (Get All) API response is deprecated. To retrieve the complete resource with all fields, please use the Get-by-ID API instead.", - "flags": [ - { - "name": "attributes", - "type": "string", - "usage": "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported. except (overrides)" - }, - { - "name": "filter", - "type": "string", - "usage": "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, overrides, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. " - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "include-latest-override", - "type": "string", - "usage": "Enable the flag to get the latest Override" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "search", - "type": "string", - "usage": "Filter data based on the search keyword.Supported search columns(name) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\");value==\"Cisco\" " - }, - { - "name": "single-object-response", - "type": "string", - "usage": "Specifiy whether to include array fields in the response, This query param should use only if the response contain single record, if we are using for multiple objects response query param not supported and throws an exception." - }, - { - "name": "sort", - "type": "string", - "usage": "Sorting criteria in the format: property(, asc | desc). Default sort order is ascending. Supported sortable fields (name, timezone, createdTime, lastUpdatedTime). The examples below show some sort queries - name,asc - createdTime,desc " - } - ] - }, - { - "path": "webex cc overrides list-references", - "short": "List references for a specific Overrides resource", - "long": "Retrieve a list of all entities that have reference to an existing Overrides resource by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-references" - }, - { - "name": "id", - "type": "string", - "usage": "ID of this contact center resource.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "type", - "type": "string", - "usage": "Entity type of the other entity that has a reference to this specific entity." - } - ] - }, - { - "path": "webex cc overrides update", - "aliases": [ - "update-id" - ], - "short": "Update specific Overrides resource by ID", - "long": "Update an existing Overrides resource by ID in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Overrides resource.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc queues", - "short": "Queues commands" - }, - { - "path": "webex cc queues get-statistics", - "short": "Get Queue Statistics", - "long": "Retrieve Queue statistics for a given interval of time. \nAn important thing to note is that each stat produced is for a specified time window (last 15, 30, or 60 minutes etc) and is not cumulative. \nContacts that span across intervals will also have stats broken down across intervals. For example: A contact that starts at 12:05 and ends at 12:25 will have stats for Interval A (12:00-12:15) and Interval B (12:15-12:30) assuming the interval window is for 15 minutes. \nStats that only require the start time of the contact like 'totalOfferedTasks' and 'totalAcceptedTasks' will be counted only once and it will be present in the interval where the contact started i.e. Interval A. \nWhereas, stats that require the end time as well for calculations like 'averageHandledTime', will be present in the interval where the contact ended i.e. interval B. \n\nFor this API, response compression using gzip can be enabled by including 'Accept-Encoding' header in the request with its value as 'gzip'. \nThe response will be compressed only if its size exceeds 1 MB.\nIf the header is not present in the request or if gzip is not listed as one of the encodings in the header's value (comma separated encodings), then API response will not be compressed and this can impact the latency as observed from clients. \n", - "flags": [ - { - "name": "from", - "type": "string", - "usage": "Start time for the query (in epoch milliseconds). Any epoch time can be passed in the input, from date will be rounded down to nearest 15 minute window. For example, epoch time of 12:05 will be rounded down to 12:00." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-statistics" - }, - { - "name": "interval", - "type": "string", - "usage": "Time interval (in minutes) to chunk statistics by i.e. break up the entire from-to timeframe by this interval amount so that statistics can be viewed incrementally. Supported values are 15, 30, or 60." - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to use for this operation. If unspecified, inferred from token. Token must have permission to interact with this organization.", - "hidden": true - }, - { - "name": "queue-ids", - "type": "string", - "usage": "Comma-separated list of queue IDs. A maximum of 100 values is permitted. If values are not provided, all queues for an organization are returned." - }, - { - "name": "to", - "type": "string", - "usage": "End time for the query (in epoch milliseconds). Any epoch time can be passed in the input, from date will be rounded down to nearest 15 minute window. For example, epoch time of 12:55 will be rounded down to 12:45. The difference between to and from time must be less than 24 hours (86400000 milliseconds)." - }, - { - "name": "tracking-id", - "type": "string", - "usage": "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. " - } - ] - }, - { - "path": "webex cc realtime", - "short": "Realtime commands" - }, - { - "path": "webex cc realtime subscribe-notification", - "short": "Subscribe Realtime Notification", - "long": "Access this endpoint when the user has to register for a WebSocket Session to receive realtime events. Requires one of the following accepted registration scopes: `cjp:user` or `cloud-contact-center:pod_conv`. The `cjp-hybrid-conn:read` scope is also accepted when CCE authentication is enabled. Tokens with only admin or partner roles and no accepted registration scope are rejected.", - "flags": [ - { - "name": "allow-multi-login", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "client-type", - "type": "string" - }, - { - "name": "force", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for subscribe-notification" - }, - { - "name": "is-keep-alive-enabled", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex cc resource-collection", - "short": "ResourceCollection commands" - }, - { - "path": "webex cc resource-collection bulk-partial-update", - "short": "Bulk partial update Resource Collections", - "long": "Update some or all properties for resource collections in bulk for a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-partial-update" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc resource-collection create", - "short": "Create a new Resource Collection", - "long": "Create a new resource collection in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc resource-collection delete", - "aliases": [ - "delete-id" - ], - "short": "Delete specific Resource Collection by ID", - "long": "Delete an existing resource collection by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Resource Collection.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc resource-collection get", - "aliases": [ - "get-id" - ], - "short": "Get specific Resource Collection by ID", - "long": "Retrieve an existing Resource Collection by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Resource Collection.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc resource-collection list", - "short": "List Resource Collections", - "long": "Retrieve a list of resource collections in a given organization.", - "flags": [ - { - "name": "attributes", - "type": "string", - "usage": "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported." - }, - { - "name": "filter", - "type": "string", - "usage": "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. " - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "search", - "type": "string", - "usage": "Filter data based on the search keyword.Supported search columns(name) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\");value==\"Cisco\" " - } - ] - }, - { - "path": "webex cc resource-collection list-references", - "short": "List references for a specific Resource Collection", - "long": "Retrieve a list of all entities that have reference to an existing resource collection by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-references" - }, - { - "name": "id", - "type": "string", - "usage": "ID of this contact center resource.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "type", - "type": "string", - "usage": "Entity type of the other entity that has a reference to this specific entity." - } - ] - }, - { - "path": "webex cc resource-collection update", - "aliases": [ - "update-id" - ], - "short": "Update specific Resource Collection by ID", - "long": "Update an existing resource collection by ID in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Resource Collection.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc resource-collection update-default", - "short": "Update resource with default resource collection", - "long": "Update resource with default resource collection. Ensure resource should not associated to any resource collection and resource should not be updated and not older than 15 min. Only single Resource Collection is allowed to update.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-default" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc search", - "short": "Search Contact Center historical data (GraphQL)", - "long": "Query Webex Contact Center Search API for tasks, agent sessions, flow interactions, and more.\n\nThe Search API is a GraphQL endpoint that queries historical contact center data.\nAll queries require a time window (--from/--to or --last). The FROM parameter\ncannot be older than 36 months from the current time.\n\nSubcommands provide pre-built queries with convenience flags for filtering,\naggregation, and field selection. Use \"raw\" for full GraphQL control.\n\nExamples:\n webex cc search tasks --last 24h\n webex cc search tasks --last 7d --channel telephony --direction inbound\n webex cc search agent-sessions --last 24h\n webex cc search tasks --last 7d --aggregate totalDuration:sum --aggregate id:count\n webex cc search raw --body '{\"query\":\"{ task(from:1700000000000 to:1700100000000) { tasks { id } } }\"}'" - }, - { - "path": "webex cc search agent-sessions", - "short": "Query agent login sessions with per-channel stats", - "long": "Query agent login session records with per-channel performance breakdown.\n\nKey fields: agentSessionId, agentId, agentName, userLoginId, isActive,\n state (logged_in/logged_out), startTime, endTime, siteName, teamName\n\nPer-channel stats (channelInfo): channelType, totalDuration, idleDuration/Count,\n availableDuration/Count, connectedDuration/Count, holdDuration/Count,\n wrapupDuration/Count, notRespondedCount, ringingDuration/Count\n\nFilter fields: agentId, teamId, siteId, state, isActive,\n channelInfo.channelType, channelInfo.currentState\n\nExamples:\n webex cc search agent-sessions --last 24h\n webex cc search agent-sessions --last 7d --agent-id UUID\n webex cc search agent-sessions --last 7d --aggregate agentId:cardinality:Unique_Agents\n webex cc search agent-sessions --last 7d --filter '{\"state\":{\"equals\":\"logged_in\"}}'", - "flags": [ - { - "name": "agent-id", - "type": "string", - "usage": "Filter by agent/owner ID" - }, - { - "name": "aggregate", - "type": "stringSlice", - "default": "[]", - "usage": "Aggregation in field:type[:name] format (repeatable). Types: sum, average, count, min, max, cardinality" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body (bypasses flag-based query building)" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file (bypasses flag-based query building)" - }, - { - "name": "channel", - "type": "string", - "usage": "Filter by channel type: telephony, email, chat, social" - }, - { - "name": "cursor", - "type": "string", - "usage": "Pagination cursor (from previous response's endCursor)" - }, - { - "name": "direction", - "type": "string", - "usage": "Filter by direction: inbound, outbound" - }, - { - "name": "fields", - "type": "string", - "usage": "GraphQL field selection (overrides defaults)" - }, - { - "name": "filter", - "type": "string", - "usage": "Raw JSON filter (AND-merged with convenience flags)" - }, - { - "name": "from", - "type": "string", - "usage": "Start time (epoch ms, ISO 8601, YYYY-MM-DD, or relative like -24h)" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for agent-sessions" - }, - { - "name": "interval", - "type": "string", - "usage": "Aggregation interval: FIFTEEN_MINUTES, THIRTY_MINUTES, HOURLY, DAILY, WEEKLY, MONTHLY" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 24h, 7d). Sets --from/--to automatically" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID (defaults to token org)", - "hidden": true - }, - { - "name": "page-size", - "type": "int", - "default": "0", - "usage": "Page size (for flow queries)" - }, - { - "name": "queue-id", - "type": "string", - "usage": "Filter by queue ID" - }, - { - "name": "status", - "type": "string", - "usage": "Filter by status: new, parked, connected, ended" - }, - { - "name": "time-comparator", - "type": "string", - "usage": "Time field to filter on: createdTime (default) or endedTime" - }, - { - "name": "timezone", - "type": "string", - "usage": "Timezone for interval aggregation (e.g. America/Los_Angeles)" - }, - { - "name": "to", - "type": "string", - "usage": "End time (same formats as --from, or \"now\")" - }, - { - "name": "tracking-id", - "type": "string", - "usage": "Tracking ID for traceability" - } - ] - }, - { - "path": "webex cc search flow-interactions", - "short": "Query flow execution metadata", - "long": "Query flow execution summaries showing which flows ran and their outcomes.\n\nKey fields: interactionId, flowId, flowVersionId, entryPointName,\n lastExecutedActivity, mainFlowActivities, eventFlowActivities,\n flowStartTime, flowEndTime, status\n\nNote: Flow queries typically require a filter (e.g. by interactionId or flowId)\nand use page-based pagination (--page-size) instead of cursor-based.\n\nExamples:\n webex cc search flow-interactions --last 24h --filter '{\"interactionId\":{\"equals\":\"task-uuid\"}}'\n webex cc search flow-interactions --last 7d --page-size 100", - "flags": [ - { - "name": "agent-id", - "type": "string", - "usage": "Filter by agent/owner ID" - }, - { - "name": "aggregate", - "type": "stringSlice", - "default": "[]", - "usage": "Aggregation in field:type[:name] format (repeatable). Types: sum, average, count, min, max, cardinality" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body (bypasses flag-based query building)" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file (bypasses flag-based query building)" - }, - { - "name": "channel", - "type": "string", - "usage": "Filter by channel type: telephony, email, chat, social" - }, - { - "name": "cursor", - "type": "string", - "usage": "Pagination cursor (from previous response's endCursor)" - }, - { - "name": "direction", - "type": "string", - "usage": "Filter by direction: inbound, outbound" - }, - { - "name": "fields", - "type": "string", - "usage": "GraphQL field selection (overrides defaults)" - }, - { - "name": "filter", - "type": "string", - "usage": "Raw JSON filter (AND-merged with convenience flags)" - }, - { - "name": "from", - "type": "string", - "usage": "Start time (epoch ms, ISO 8601, YYYY-MM-DD, or relative like -24h)" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for flow-interactions" - }, - { - "name": "interval", - "type": "string", - "usage": "Aggregation interval: FIFTEEN_MINUTES, THIRTY_MINUTES, HOURLY, DAILY, WEEKLY, MONTHLY" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 24h, 7d). Sets --from/--to automatically" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID (defaults to token org)", - "hidden": true - }, - { - "name": "page-size", - "type": "int", - "default": "0", - "usage": "Page size (for flow queries)" - }, - { - "name": "queue-id", - "type": "string", - "usage": "Filter by queue ID" - }, - { - "name": "status", - "type": "string", - "usage": "Filter by status: new, parked, connected, ended" - }, - { - "name": "time-comparator", - "type": "string", - "usage": "Time field to filter on: createdTime (default) or endedTime" - }, - { - "name": "timezone", - "type": "string", - "usage": "Timezone for interval aggregation (e.g. America/Los_Angeles)" - }, - { - "name": "to", - "type": "string", - "usage": "End time (same formats as --from, or \"now\")" - }, - { - "name": "tracking-id", - "type": "string", - "usage": "Tracking ID for traceability" - } - ] - }, - { - "path": "webex cc search flow-trace", - "short": "Query granular flow trace events", - "long": "Query per-activity flow trace records showing individual activity inputs,\noutputs, outcomes, and variable changes.\n\nKey fields: interactionId, flowId, activityName, activityProcessId, outcome,\n activityInputs {name value}, activityOutput {name type value},\n modifiedFlowVariables {name type value}, flowStartTime, flowEndTime\n\nNote: Flow queries typically require a filter (e.g. by interactionId) and\nuse page-based pagination (--page-size).\n\nExamples:\n webex cc search flow-trace --last 24h --filter '{\"interactionId\":{\"equals\":\"task-uuid\"}}'\n webex cc search flow-trace --last 7d --page-size 500", - "flags": [ - { - "name": "agent-id", - "type": "string", - "usage": "Filter by agent/owner ID" - }, - { - "name": "aggregate", - "type": "stringSlice", - "default": "[]", - "usage": "Aggregation in field:type[:name] format (repeatable). Types: sum, average, count, min, max, cardinality" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body (bypasses flag-based query building)" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file (bypasses flag-based query building)" - }, - { - "name": "channel", - "type": "string", - "usage": "Filter by channel type: telephony, email, chat, social" - }, - { - "name": "cursor", - "type": "string", - "usage": "Pagination cursor (from previous response's endCursor)" - }, - { - "name": "direction", - "type": "string", - "usage": "Filter by direction: inbound, outbound" - }, - { - "name": "fields", - "type": "string", - "usage": "GraphQL field selection (overrides defaults)" - }, - { - "name": "filter", - "type": "string", - "usage": "Raw JSON filter (AND-merged with convenience flags)" - }, - { - "name": "from", - "type": "string", - "usage": "Start time (epoch ms, ISO 8601, YYYY-MM-DD, or relative like -24h)" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for flow-trace" - }, - { - "name": "interval", - "type": "string", - "usage": "Aggregation interval: FIFTEEN_MINUTES, THIRTY_MINUTES, HOURLY, DAILY, WEEKLY, MONTHLY" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 24h, 7d). Sets --from/--to automatically" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID (defaults to token org)", - "hidden": true - }, - { - "name": "page-size", - "type": "int", - "default": "0", - "usage": "Page size (for flow queries)" - }, - { - "name": "queue-id", - "type": "string", - "usage": "Filter by queue ID" - }, - { - "name": "status", - "type": "string", - "usage": "Filter by status: new, parked, connected, ended" - }, - { - "name": "time-comparator", - "type": "string", - "usage": "Time field to filter on: createdTime (default) or endedTime" - }, - { - "name": "timezone", - "type": "string", - "usage": "Timezone for interval aggregation (e.g. America/Los_Angeles)" - }, - { - "name": "to", - "type": "string", - "usage": "End time (same formats as --from, or \"now\")" - }, - { - "name": "tracking-id", - "type": "string", - "usage": "Tracking ID for traceability" - } - ] - }, - { - "path": "webex cc search raw", - "short": "Send a raw GraphQL query", - "long": "Send a raw GraphQL query to the Search API.\n\nThis is the low-level escape hatch for queries not covered by the other\nsubcommands. You must provide the full GraphQL query as JSON.\n\nExamples:\n webex cc search raw --body '{\"query\":\"{ task(from:1700000000000 to:1700100000000) { tasks { id status } } }\"}'\n webex cc search raw --body-file my_query.json", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for raw" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID (defaults to token org)", - "hidden": true - }, - { - "name": "tracking-id", - "type": "string", - "usage": "Tracking ID for traceability" - } - ] - }, - { - "path": "webex cc search search-tasks", - "short": "Send a raw GraphQL query (alias for 'raw')", - "hidden": true, - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for search-tasks" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID (defaults to token org)", - "hidden": true - }, - { - "name": "tracking-id", - "type": "string", - "usage": "Tracking ID for traceability" - } - ] - }, - { - "path": "webex cc search task-details", - "short": "Query extended task records with activity drill-down", - "long": "Query enriched task records with full activity history, email fields,\ncampaign data, recording info, and AI analytics.\n\nIncludes everything from 'tasks' plus: activities (step-by-step workflow),\ncontributors (all agents), email fields, campaign fields, monitoring/recording\nfields, and AI analytics (sentiment, CSAT, topic classification).\n\nAdditional fields: activities {nodes {activityName eventName agentName duration}},\n contributors {id name}, csatScore, sentiment, autoCsat, terminationType,\n emailBody, isCampaign, campaignName, isMonitored, recordingCount,\n topicName, contactDriver\n\nExamples:\n webex cc search task-details --last 24h\n webex cc search task-details --last 7d --channel telephony --agent-id UUID\n webex cc search task-details --last 1h --filter '{\"id\":{\"equals\":\"task-uuid-here\"}}'", - "flags": [ - { - "name": "agent-id", - "type": "string", - "usage": "Filter by agent/owner ID" - }, - { - "name": "aggregate", - "type": "stringSlice", - "default": "[]", - "usage": "Aggregation in field:type[:name] format (repeatable). Types: sum, average, count, min, max, cardinality" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body (bypasses flag-based query building)" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file (bypasses flag-based query building)" - }, - { - "name": "channel", - "type": "string", - "usage": "Filter by channel type: telephony, email, chat, social" - }, - { - "name": "cursor", - "type": "string", - "usage": "Pagination cursor (from previous response's endCursor)" - }, - { - "name": "direction", - "type": "string", - "usage": "Filter by direction: inbound, outbound" - }, - { - "name": "fields", - "type": "string", - "usage": "GraphQL field selection (overrides defaults)" - }, - { - "name": "filter", - "type": "string", - "usage": "Raw JSON filter (AND-merged with convenience flags)" - }, - { - "name": "from", - "type": "string", - "usage": "Start time (epoch ms, ISO 8601, YYYY-MM-DD, or relative like -24h)" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for task-details" - }, - { - "name": "interval", - "type": "string", - "usage": "Aggregation interval: FIFTEEN_MINUTES, THIRTY_MINUTES, HOURLY, DAILY, WEEKLY, MONTHLY" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 24h, 7d). Sets --from/--to automatically" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID (defaults to token org)", - "hidden": true - }, - { - "name": "page-size", - "type": "int", - "default": "0", - "usage": "Page size (for flow queries)" - }, - { - "name": "queue-id", - "type": "string", - "usage": "Filter by queue ID" - }, - { - "name": "status", - "type": "string", - "usage": "Filter by status: new, parked, connected, ended" - }, - { - "name": "time-comparator", - "type": "string", - "usage": "Time field to filter on: createdTime (default) or endedTime" - }, - { - "name": "timezone", - "type": "string", - "usage": "Timezone for interval aggregation (e.g. America/Los_Angeles)" - }, - { - "name": "to", - "type": "string", - "usage": "End time (same formats as --from, or \"now\")" - }, - { - "name": "tracking-id", - "type": "string", - "usage": "Tracking ID for traceability" - } - ] - }, - { - "path": "webex cc search task-leg-details", - "short": "Query per-leg/per-queue breakdown of tasks", - "long": "Query per-leg breakdown of task interactions. Each leg represents the\ncontact's interaction with a specific queue or agent.\n\nKey fields: id, taskId, status, channelType, direction, origin, destination,\n entryPoint {id name}, queue {id name}, owner {id name}, site {id name},\n callLegType (main/consult/conference), handleType (short/abandoned/normal/dequeued),\n isTaskLegHandled, isWithinServiceLevel, connectedDuration, holdDuration,\n queueDuration, wrapupDuration\n\nExamples:\n webex cc search task-leg-details --last 24h\n webex cc search task-leg-details --last 7d --queue-id UUID\n webex cc search task-leg-details --last 7d --channel telephony", - "flags": [ - { - "name": "agent-id", - "type": "string", - "usage": "Filter by agent/owner ID" - }, - { - "name": "aggregate", - "type": "stringSlice", - "default": "[]", - "usage": "Aggregation in field:type[:name] format (repeatable). Types: sum, average, count, min, max, cardinality" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body (bypasses flag-based query building)" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file (bypasses flag-based query building)" - }, - { - "name": "channel", - "type": "string", - "usage": "Filter by channel type: telephony, email, chat, social" - }, - { - "name": "cursor", - "type": "string", - "usage": "Pagination cursor (from previous response's endCursor)" - }, - { - "name": "direction", - "type": "string", - "usage": "Filter by direction: inbound, outbound" - }, - { - "name": "fields", - "type": "string", - "usage": "GraphQL field selection (overrides defaults)" - }, - { - "name": "filter", - "type": "string", - "usage": "Raw JSON filter (AND-merged with convenience flags)" - }, - { - "name": "from", - "type": "string", - "usage": "Start time (epoch ms, ISO 8601, YYYY-MM-DD, or relative like -24h)" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for task-leg-details" - }, - { - "name": "interval", - "type": "string", - "usage": "Aggregation interval: FIFTEEN_MINUTES, THIRTY_MINUTES, HOURLY, DAILY, WEEKLY, MONTHLY" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 24h, 7d). Sets --from/--to automatically" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID (defaults to token org)", - "hidden": true - }, - { - "name": "page-size", - "type": "int", - "default": "0", - "usage": "Page size (for flow queries)" - }, - { - "name": "queue-id", - "type": "string", - "usage": "Filter by queue ID" - }, - { - "name": "status", - "type": "string", - "usage": "Filter by status: new, parked, connected, ended" - }, - { - "name": "time-comparator", - "type": "string", - "usage": "Time field to filter on: createdTime (default) or endedTime" - }, - { - "name": "timezone", - "type": "string", - "usage": "Timezone for interval aggregation (e.g. America/Los_Angeles)" - }, - { - "name": "to", - "type": "string", - "usage": "End time (same formats as --from, or \"now\")" - }, - { - "name": "tracking-id", - "type": "string", - "usage": "Tracking ID for traceability" - } - ] - }, - { - "path": "webex cc search tasks", - "short": "Query task/contact summary records", - "long": "Query summary-level task (contact) records from the Search API.\n\nReturns one record per customer interaction with key metrics like duration,\nqueue time, and agent information.\n\nCommon fields: id, status, channelType, direction, origin, destination,\n createdTime, endedTime, totalDuration, connectedDuration, queueDuration,\n holdDuration, wrapupDuration, ringingDuration, selfserviceDuration,\n owner {id name}, lastEntryPoint {id name}, lastQueue {id name},\n lastTeam {id name}, lastWrapupCodeName, csatScore\n\nFilter fields: channelType (telephony/email/chat/social), direction (inbound/outbound),\n status (new/parked/connected/ended), isActive, origin, destination,\n owner.id, lastQueue.id, lastWrapupCodeName, totalDuration, connectedDuration\n\nAggregation fields: id, totalDuration, connectedDuration, holdDuration,\n queueDuration, wrapupDuration, ringingDuration, selfserviceDuration,\n csatScore, connectedCount, holdCount, conferenceCount, consultCount,\n blindTransferCount, transferCount\n\nExamples:\n webex cc search tasks --last 24h\n webex cc search tasks --last 7d --channel telephony --direction inbound\n webex cc search tasks --from 2024-01-15 --to 2024-01-16\n webex cc search tasks --last 7d --aggregate totalDuration:sum --aggregate id:count\n webex cc search tasks --last 7d --aggregate connectedDuration:average --interval DAILY\n webex cc search tasks --last 24h --status ended --queue-id UUID", - "flags": [ - { - "name": "agent-id", - "type": "string", - "usage": "Filter by agent/owner ID" - }, - { - "name": "aggregate", - "type": "stringSlice", - "default": "[]", - "usage": "Aggregation in field:type[:name] format (repeatable). Types: sum, average, count, min, max, cardinality" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body (bypasses flag-based query building)" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file (bypasses flag-based query building)" - }, - { - "name": "channel", - "type": "string", - "usage": "Filter by channel type: telephony, email, chat, social" - }, - { - "name": "cursor", - "type": "string", - "usage": "Pagination cursor (from previous response's endCursor)" - }, - { - "name": "direction", - "type": "string", - "usage": "Filter by direction: inbound, outbound" - }, - { - "name": "fields", - "type": "string", - "usage": "GraphQL field selection (overrides defaults)" - }, - { - "name": "filter", - "type": "string", - "usage": "Raw JSON filter (AND-merged with convenience flags)" - }, - { - "name": "from", - "type": "string", - "usage": "Start time (epoch ms, ISO 8601, YYYY-MM-DD, or relative like -24h)" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for tasks" - }, - { - "name": "interval", - "type": "string", - "usage": "Aggregation interval: FIFTEEN_MINUTES, THIRTY_MINUTES, HOURLY, DAILY, WEEKLY, MONTHLY" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 24h, 7d). Sets --from/--to automatically" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID (defaults to token org)", - "hidden": true - }, - { - "name": "page-size", - "type": "int", - "default": "0", - "usage": "Page size (for flow queries)" - }, - { - "name": "queue-id", - "type": "string", - "usage": "Filter by queue ID" - }, - { - "name": "status", - "type": "string", - "usage": "Filter by status: new, parked, connected, ended" - }, - { - "name": "time-comparator", - "type": "string", - "usage": "Time field to filter on: createdTime (default) or endedTime" - }, - { - "name": "timezone", - "type": "string", - "usage": "Timezone for interval aggregation (e.g. America/Los_Angeles)" - }, - { - "name": "to", - "type": "string", - "usage": "End time (same formats as --from, or \"now\")" - }, - { - "name": "tracking-id", - "type": "string", - "usage": "Tracking ID for traceability" - } - ] - }, - { - "path": "webex cc search-metadata", - "short": "SearchMetadata commands" - }, - { - "path": "webex cc search-metadata get", - "short": "Get Search Metadata", - "long": "Returns schema metadata for the Webex Contact Center Search GraphQL API, describing supported queries, fields, nested structures, data types, filters, sorting options, grouping capabilities, and aggregation operations.\n\n**Authentication & Authorization:**\n- **Required Scopes:** `cjp:config` or `cjp:config_read`\n\nAn asterisk (*) in the rendered response schema indicates a required property.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "tracking-id", - "type": "string", - "usage": "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. " - }, - { - "name": "x-organization-id", - "type": "string", - "usage": "Organization ID to use for this operation. If unspecified, inferred from token. Token must have permission to interact with this organization." - } - ] - }, - { - "path": "webex cc site", - "short": "Site commands" - }, - { - "path": "webex cc site bulk-export", - "short": "Bulk export Site(s)", - "long": "Export all Site(s) in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-export" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - } - ] - }, - { - "path": "webex cc site bulk-save", - "short": "Bulk save Site(s)", - "long": "Create, Update or delete Site(s) in bulk in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-save" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc site create", - "short": "Create a new Site", - "long": "Create a new Site in a given organization.", - "flags": [ - { - "name": "active", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "description", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "id", - "type": "string" - }, - { - "name": "multimedia-profile-id", - "type": "string" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "organization-id", - "type": "string" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "system-default", - "type": "bool", - "default": "false" - }, - { - "name": "version", - "type": "int64", - "default": "0" - } - ] - }, - { - "path": "webex cc site delete", - "aliases": [ - "delete-id" - ], - "short": "Delete specific Site by ID", - "long": "Delete an existing Site by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Site.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc site get", - "aliases": [ - "get-id" - ], - "short": "Get specific Site by ID", - "long": "Retrieve an existing Site by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Site.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc site list", - "short": "List Site(s)", - "long": "Retrieve a list of Site(s) in a given organization.", - "flags": [ - { - "name": "attributes", - "type": "string", - "usage": "Specify the attributes to be returned.Default all attributes are returned along with specified columns. All Attributes are supported" - }, - { - "name": "filter", - "type": "string", - "usage": "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain space, and if so kindly bound it with quotes to apply filter. " - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "search", - "type": "string", - "usage": "Filter data based on the search keyword.Supported search columns(name) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\");value==\"Cisco\" " - } - ] - }, - { - "path": "webex cc site list-references", - "short": "List references for a specific Site", - "long": "Retrieve a list of all entities that have reference to an existing Site by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-references" - }, - { - "name": "id", - "type": "string", - "usage": "ID of this contact center resource.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "type", - "type": "string", - "usage": "Entity type of the other entity that has a reference to this specific entity." - } - ] - }, - { - "path": "webex cc site list-v1", - "short": "List Site(s) (v1)", - "long": "Lists sites with every field, through the v1 route. Each item carries lastUpdatedTime.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-v1" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Page number, from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Items per page." - } - ] - }, - { - "path": "webex cc site purge-inactive", - "short": "Purge inactive Site(s)", - "long": "Purge inactive Site(s) older than the configured interval for a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for purge-inactive" - }, - { - "name": "next-start-id", - "type": "string", - "usage": "This is the entity ID from which items for the next purge batch with be selected." - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc site update", - "aliases": [ - "update-id" - ], - "short": "Update specific Site by ID", - "long": "Update an existing Site by ID in a given organization.", - "flags": [ - { - "name": "active", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "description", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Site.", - "required": true - }, - { - "name": "multimedia-profile-id", - "type": "string" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "organization-id", - "type": "string" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "system-default", - "type": "bool", - "default": "false" - }, - { - "name": "version", - "type": "int64", - "default": "0" - } - ] - }, - { - "path": "webex cc skill", - "short": "Skill commands" - }, - { - "path": "webex cc skill bulk-export", - "short": "Bulk export Skill(s)", - "long": "Export all Skill(s) in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-export" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - } - ] - }, - { - "path": "webex cc skill bulk-save", - "short": "Bulk save Skills", - "long": "Create, Update or delete Skills in bulk in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-save" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc skill create", - "short": "Create a new Skill", - "long": "Create a new Skill in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc skill delete", - "aliases": [ - "delete-id" - ], - "short": "Delete specific Skill by ID", - "long": "Delete an existing Skill by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Skill.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc skill get", - "aliases": [ - "get-id" - ], - "short": "Get specific Skill by ID", - "long": "Retrieve an existing Skill by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Skill.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc skill list", - "short": "List Skills", - "long": "Retrieve a list of Skills in a given organization.\n Note: Returning array fields in the List (Get All) API response is deprecated. To retrieve the complete resource with all fields, please use the Get-by-ID API instead.", - "flags": [ - { - "name": "attributes", - "type": "string", - "usage": "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported. except (enumSkillValues)" - }, - { - "name": "filter", - "type": "string", - "usage": "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, enumSkillValues, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. " - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "include", - "type": "string", - "usage": "Fetch array fields on demand only. Supported array fields are enumSkillValues." - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "search", - "type": "string", - "usage": "Filter data based on the search keyword.Supported search columns(name) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\");value==\"Cisco\" " - }, - { - "name": "single-object-response", - "type": "string", - "usage": "Specify whether to include array fields in the response. This query parameter should be used only when the response contains a single record. It is not supported for responses with multiple objects and throws an exception." - } - ] - }, - { - "path": "webex cc skill list-references", - "short": "List references for a specific Skill", - "long": "Retrieve a list of all entities that have reference to an existing Skill by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-references" - }, - { - "name": "id", - "type": "string", - "usage": "ID of this contact center resource.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "type", - "type": "string", - "usage": "Entity type of the other entity that has a reference to this specific entity." - } - ] - }, - { - "path": "webex cc skill list-v1", - "short": "List Skills (v1)", - "long": "Lists skills with every field, through the v1 route. Each item carries lastUpdatedTime.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-v1" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Page number, from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Items per page." - } - ] - }, - { - "path": "webex cc skill populate-json-attributes-field-skill-id-org", - "short": "Populate json-attributes field for a given skill-id of an organization", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for populate-json-attributes-field-skill-id-org" - }, - { - "name": "id", - "type": "string", - "required": true - }, - { - "name": "orgid", - "type": "string", - "hidden": true - } - ] - }, - { - "path": "webex cc skill purge-inactive", - "short": "Purge inactive Skills", - "long": "Purge inactive Skills older than the configured interval for a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for purge-inactive" - }, - { - "name": "next-start-id", - "type": "string", - "usage": "This is the entity ID from which items for the next purge batch will be selected." - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc skill update", - "aliases": [ - "update-id" - ], - "short": "Update specific Skill by ID", - "long": "Update an existing Skill by ID in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Skill.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc skill-profile", - "short": "SkillProfile commands" - }, - { - "path": "webex cc skill-profile bulk-export", - "short": "Bulk export Skill Profile(s)", - "long": "Export all Skill Profile(s) in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-export" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - } - ] - }, - { - "path": "webex cc skill-profile bulk-save", - "short": "Bulk save Skill Profile(s)", - "long": "Create, Update or delete Skill Profile(s) in bulk in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-save" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc skill-profile create", - "short": "Create a new Skill Profile", - "long": "Create a new Skill Profile in a given organization.", - "flags": [ - { - "name": "active-enum-skills", - "type": "string", - "usage": "Skill profile configuration data" - }, - { - "name": "active-skills", - "type": "string", - "usage": "Skill profile configuration data" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "created-time", - "type": "string", - "usage": "Skill profile configuration data" - }, - { - "name": "description", - "type": "string", - "usage": "Skill profile configuration data" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "id", - "type": "string", - "usage": "Skill profile configuration data" - }, - { - "name": "last-updated-time", - "type": "string", - "usage": "Skill profile configuration data" - }, - { - "name": "name", - "type": "string", - "usage": "Skill profile configuration data" - }, - { - "name": "organization-id", - "type": "string", - "usage": "Skill profile configuration data" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "version", - "type": "string", - "usage": "Skill profile configuration data" - } - ] - }, - { - "path": "webex cc skill-profile delete", - "aliases": [ - "delete-id" - ], - "short": "Delete specific Skill Profile by ID", - "long": "Delete an existing Skill Profile by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Skill Profile.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc skill-profile get", - "aliases": [ - "get-id" - ], - "short": "Get specific Skill Profile by ID", - "long": "Retrieve an existing Skill Profile by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Skill Profile.", - "required": true - }, - { - "name": "include-skill-details", - "type": "string", - "usage": "If set to true returns skill details" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc skill-profile list", - "short": "List Skill Profile(s)", - "long": "Retrieve a list of Skill Profile(s) in a given organization.\n Note: Returning array fields in the List (Get All) API response is deprecated. To retrieve the complete resource with all fields, please use the Get-by-ID API instead.", - "flags": [ - { - "name": "attributes", - "type": "string", - "usage": "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported. except (activeSkills,activeEnumSkills)" - }, - { - "name": "filter", - "type": "string", - "usage": "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, activeSkills, activeEnumSkills, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. " - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "search", - "type": "string", - "usage": "Filter data based on the search keyword.Supported search columns(name, description) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\",\"description\");value==\"Cisco\" " - }, - { - "name": "single-object-response", - "type": "string", - "usage": "Specifiy whether to include array fields in the response, This query param should use only if the response contain single record, if we are using for multiple objects response query param not supported and throws an exception." - } - ] - }, - { - "path": "webex cc skill-profile list-references", - "short": "List references for a specific Skill Profile", - "long": "Retrieve a list of all entities that have reference to an existing Skill Profile by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-references" - }, - { - "name": "id", - "type": "string", - "usage": "ID of this contact center resource.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "type", - "type": "string", - "usage": "Entity type of the other entity that has a reference to this specific entity." - } - ] - }, - { - "path": "webex cc skill-profile update", - "aliases": [ - "update-id" - ], - "short": "Update specific Skill Profile by ID", - "long": "Update an existing Skill Profile by ID in a given organization.", - "flags": [ - { - "name": "active-enum-skills", - "type": "string", - "usage": "Skill profile configuration data for update" - }, - { - "name": "active-skills", - "type": "string", - "usage": "Skill profile configuration data for update" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "created-time", - "type": "string", - "usage": "Skill profile configuration data for update" - }, - { - "name": "description", - "type": "string", - "usage": "Skill profile configuration data for update" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Skill Profile.", - "required": true - }, - { - "name": "last-updated-time", - "type": "string", - "usage": "Skill profile configuration data for update" - }, - { - "name": "name", - "type": "string", - "usage": "Skill profile configuration data for update" - }, - { - "name": "organization-id", - "type": "string", - "usage": "Skill profile configuration data for update" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "version", - "type": "string", - "usage": "Skill profile configuration data for update" - } - ] - }, - { - "path": "webex cc subscriptions", - "short": "Subscriptions commands" - }, - { - "path": "webex cc subscriptions delete-v1", - "short": "Delete Subscription", - "long": "Deletes a subscription for a given subscription ID. Requires `cjp:config_write` scope.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-v1" - }, - { - "name": "id", - "type": "string", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. If unspecified, the Organization ID is inferred from the token. The token must have permissions to interact with the organization.", - "hidden": true - }, - { - "name": "tracking-id", - "type": "string", - "usage": "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. If not provided, we will generate one for you." - } - ] - }, - { - "path": "webex cc subscriptions delete-v2", - "short": "Delete Subscription", - "long": "Deletes a subscription for a given subscription ID. Requires `cjp:config_write` scope.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-v2" - }, - { - "name": "id", - "type": "string", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. If unspecified, the Organization ID is inferred from the token. The token must have permissions to interact with the organization.", - "hidden": true - }, - { - "name": "tracking-id", - "type": "string", - "usage": "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. If not provided, we will generate one for you." - } - ] - }, - { - "path": "webex cc subscriptions get-v1", - "short": "Get Subscription", - "long": "Retrieve a subscription for a given subscription ID. Requires `cjp:config_read` scope.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-v1" - }, - { - "name": "id", - "type": "string", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. If unspecified, the Organization ID is inferred from the token. The token must have permissions to interact with the organization.", - "hidden": true - }, - { - "name": "tracking-id", - "type": "string", - "usage": "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. If not provided, we will generate one for you." - } - ] - }, - { - "path": "webex cc subscriptions get-v2", - "short": "Get Subscription", - "long": "Retrieve a subscription for a given subscription ID. Requires `cjp:config_read` scope.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-v2" - }, - { - "name": "id", - "type": "string", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. If unspecified, the Organization ID is inferred from the token. The token must have permissions to interact with the organization.", - "hidden": true - }, - { - "name": "tracking-id", - "type": "string", - "usage": "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. If not provided, we will generate one for you." - } - ] - }, - { - "path": "webex cc subscriptions list-event-types-v1", - "short": "List Event Types", - "long": "Retrieve all available event types for an organization. Requires `cjp:config_read` scope.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-event-types-v1" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. If unspecified, the Organization ID is inferred from the token. The token must have permissions to interact with the organization.", - "hidden": true - }, - { - "name": "tracking-id", - "type": "string", - "usage": "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. If not provided, we will generate one for you." - } - ] - }, - { - "path": "webex cc subscriptions list-event-types-v2", - "short": "List Event Types", - "long": "Retrieve all available event types for an organization along with information about the currently supported resource versions. Requires `cjp:config_read` scope. ", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-event-types-v2" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. If unspecified, the Organization ID is inferred from the token. The token must have permissions to interact with the organization.", - "hidden": true - }, - { - "name": "tracking-id", - "type": "string", - "usage": "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. If not provided, we will generate one for you." - } - ] - }, - { - "path": "webex cc subscriptions list-v1", - "short": "List Subscriptions", - "long": "Retrieve all subscriptions for a given organization. Requires `cjp:config_read` scope.\n\n\n Note: In the response JSON, the 'data' field only contains V1 based subscriptions, while the field 'meta.subscriptionCount' provides the total count encompassing all the created subscriptions in the organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-v1" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. If unspecified, the Organization ID is inferred from the token. The token must have permissions to interact with the organization.", - "hidden": true - }, - { - "name": "tracking-id", - "type": "string", - "usage": "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. If not provided, we will generate one for you." - } - ] - }, - { - "path": "webex cc subscriptions list-v2", - "short": "List Subscriptions", - "long": "Retrieve all subscriptions for a given organization. Requires `cjp:config_read` scope.\n\n\n Note: In the response JSON, the 'data' field only contains V2 based subscriptions, while the field 'meta.subscriptionCount' provides the total count encompassing all the created subscriptions in the organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-v2" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. If unspecified, the Organization ID is inferred from the token. The token must have permissions to interact with the organization.", - "hidden": true - }, - { - "name": "tracking-id", - "type": "string", - "usage": "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. If not provided, we will generate one for you." - } - ] - }, - { - "path": "webex cc subscriptions register-v1", - "short": "Register Subscription", - "long": "Create a subscription which would allow consumers to listen to events. If creating a subscription causes the org-level limit to be exceeded, the subscription registration will be denied. Requires `cjp:config_write` scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "description", - "type": "string" - }, - { - "name": "destination-url", - "type": "string" - }, - { - "name": "event-types", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for register-v1" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "hidden": true - }, - { - "name": "secret", - "type": "string" - }, - { - "name": "tracking-id", - "type": "string", - "usage": "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. If not provided, we will generate one for you." - } - ] - }, - { - "path": "webex cc subscriptions register-v2", - "short": "Register Subscription", - "long": "Create a subscription which would allow consumers to listen to events. If creating a subscription causes the org-level limit to be exceeded, the subscription registration will be denied. Requires `cjp:config_write` scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "description", - "type": "string" - }, - { - "name": "destination-url", - "type": "string" - }, - { - "name": "event-types", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for register-v2" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "hidden": true - }, - { - "name": "resource-version", - "type": "string" - }, - { - "name": "secret", - "type": "string" - }, - { - "name": "tracking-id", - "type": "string", - "usage": "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. If not provided, we will generate one for you." - } - ] - }, - { - "path": "webex cc subscriptions update-v1", - "short": "Update Subscription", - "long": "Updates some of the properties in a subscription, for a given subscription ID. Requires `cjp:config_write` scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "description", - "type": "string" - }, - { - "name": "destination-url", - "type": "string" - }, - { - "name": "event-types", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-v1" - }, - { - "name": "id", - "type": "string", - "required": true - }, - { - "name": "org-id", - "type": "string", - "hidden": true - }, - { - "name": "secret", - "type": "string" - }, - { - "name": "status", - "type": "string" - }, - { - "name": "tracking-id", - "type": "string", - "usage": "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. If not provided, we will generate one for you." - } - ] - }, - { - "path": "webex cc subscriptions update-v2", - "short": "Update Subscription", - "long": "Updates some of the properties in a subscription, for a given subscription ID. Requires `cjp:config_write` scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "description", - "type": "string" - }, - { - "name": "destination-url", - "type": "string" - }, - { - "name": "event-types", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-v2" - }, - { - "name": "id", - "type": "string", - "required": true - }, - { - "name": "org-id", - "type": "string", - "hidden": true - }, - { - "name": "resource-version", - "type": "string" - }, - { - "name": "secret", - "type": "string" - }, - { - "name": "status", - "type": "string" - }, - { - "name": "tracking-id", - "type": "string", - "usage": "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. If not provided, we will generate one for you." - } - ] - }, - { - "path": "webex cc tasks", - "short": "Tasks commands" - }, - { - "path": "webex cc tasks accept", - "short": "Accept Task", - "long": "Access this endpoint when the user has to accept either an inbound or an outbound requests. The request can be social, a chat or an email. Requires one of the following scopes 'cjp:user' or 'cloud-contact-center:pod_conv' for authorization. For a list of possible response messages, see the [Call Control API Guide](/docs/contact-control-apis).", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for accept" - }, - { - "name": "task-id", - "type": "string", - "usage": "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task.", - "required": true - } - ] - }, - { - "path": "webex cc tasks accept-preview", - "short": "Accept Preview Task", - "long": "API to accept the preview campaign task offered to the agent.", - "flags": [ - { - "name": "campaign-id", - "type": "string", - "usage": "The unique ID represents the campaign that the user is currently working on.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for accept-preview" - }, - { - "name": "task-id", - "type": "string", - "usage": "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task.", - "required": true - } - ] - }, - { - "path": "webex cc tasks append-message", - "aliases": [ - "update-2" - ], - "short": "Append Task Message", - "long": "This feature is currently in Beta. Contact your Cisco team if you want access to this feature.\n\nAppends an inbound message to an existing `workItem` or `customMessaging` task. Use this API after the initial task has been created through Create Task. Requires `cjp:task_write` OAuth scope. For partner-initiated inbound message appends, the `cjp:task_write` scope must be present in the partner application's access token.\n\nOn success, returns a `202` response containing the append event identifier as `data.id`. Partners can use this identifier to correlate subsequent webhook delivery for the appended message.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for append-message" - }, - { - "name": "task-id", - "type": "string", - "usage": "UUID of the existing task to which the message will be appended.", - "required": true - } - ] - }, - { - "path": "webex cc tasks assign", - "short": "Assign Task", - "long": "Access this endpoint when users such as administrators, supervisors, or agents with an agent license need to assign tasks to themselves. Authorization requires the `cjp:user` scope. For a list of potential response messages, refer to the [Call Control API Guide](/docs/contact-control-apis).", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for assign" - }, - { - "name": "task-id", - "type": "string", - "usage": "The unique ID represents the task that the user want to assign.", - "required": true - } - ] - }, - { - "path": "webex cc tasks consult-accept", - "short": "Consult Accept Task", - "long": "Access this endpoint when the user has to accept a call to the consulting user. Requires one of the following scopes 'cjp:user' or 'cloud-contact-center:pod_conv' for authorization. For a list of possible response messages, see the [Call Control API Guide](/docs/contact-control-apis).", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for consult-accept" - }, - { - "name": "task-id", - "type": "string", - "usage": "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task.", - "required": true - } - ] - }, - { - "path": "webex cc tasks consult-conference", - "short": "Consult Conference Task", - "long": "Access this endpoint when the user has to initiate a conference with the consulting user. Requires one of the following scopes 'cjp:user' or 'cloud-contact-center:pod_conv' for authorization. For a list of possible response messages, see the [Call Control API Guide](/docs/contact-control-apis).", - "flags": [ - { - "name": "agent-id", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "destination-type", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for consult-conference" - }, - { - "name": "task-id", - "type": "string", - "usage": "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task.", - "required": true - }, - { - "name": "to", - "type": "string" - } - ] - }, - { - "path": "webex cc tasks consult-end", - "short": "Consult End Task", - "long": "Access this endpoint when the user has to end a call with the consulting user. Requires one of the following scopes 'cjp:user' or 'cloud-contact-center:pod_conv' for authorization. For a list of possible response messages, see the [Call Control API Guide](/docs/contact-control-apis).", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for consult-end" - }, - { - "name": "queue-id", - "type": "string" - }, - { - "name": "task-id", - "type": "string", - "usage": "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task.", - "required": true - } - ] - }, - { - "path": "webex cc tasks consult-task", - "short": "Consult Task", - "long": "Access this endpoint when the user has to consult a call to another user. Requires one of the following scopes 'cjp:user' or 'cloud-contact-center:pod_conv' for authorization. For a list of possible response messages, see the [Call Control API Guide](/docs/contact-control-apis).", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "destination-type", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for consult-task" - }, - { - "name": "hold-participants", - "type": "bool", - "default": "false" - }, - { - "name": "task-id", - "type": "string", - "usage": "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task.", - "required": true - }, - { - "name": "to", - "type": "string" - } - ] - }, - { - "path": "webex cc tasks consult-transfer", - "short": "Consult Transfer Task", - "long": "Access this endpoint when the user has to transfer a call to the consulting user. Requires one of the following scopes 'cjp:user' or 'cloud-contact-center:pod_conv' for authorization. For a list of possible response messages, see the [Call Control API Guide](/docs/contact-control-apis).", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "destination-type", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for consult-transfer" - }, - { - "name": "task-id", - "type": "string", - "usage": "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task.", - "required": true - }, - { - "name": "to", - "type": "string" - } - ] - }, - { - "path": "webex cc tasks create", - "short": "Create Task", - "long": "This feature is currently in Beta. Contact your Cisco team if you want access to this feature.\n\nCreates a new contact center task using the v2 task contract. The request body must include a `channelType` discriminator to select the task variant — `workItem` for structured form tasks, `customMessaging` for conversational messaging tasks, or `telephony` for voice tasks.\n\nOn success, returns a `201` response containing the task ID, which can be used to track the task lifecycle.\n\nRequires `cjp:task_write` OAuth scope. For partner-initiated inbound tasks (`workItem`, `customMessaging`), the `cjp:task_write` scope must be present in the partner application's access token. When an authenticated agent initiates an outdial (`telephony`) task, ensure the `cjp:task_write` scope is included in the agent's access token.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - } - ] - }, - { - "path": "webex cc tasks delete-preview", - "short": "Remove Preview Task", - "long": "API to remove the preview campaign task offered to the agent", - "flags": [ - { - "name": "campaign-id", - "type": "string", - "usage": "The unique ID represents the campaign that the user is currently working on.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-preview" - }, - { - "name": "task-id", - "type": "string", - "usage": "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task.", - "required": true - } - ] - }, - { - "path": "webex cc tasks drop-participant-conference", - "short": "Drop Participant From Conference", - "long": "Access this endpoint when the user needs to drop a specific participant from an active conference associated with a task. This operation removes only the targeted participant while keeping the remaining parties in the conference. Requires `cjp:user` scope for authorization. For a list of possible response messages, see the [Call Control API Guide](/docs/contact-control-apis)", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for drop-participant-conference" - }, - { - "name": "participant-id", - "type": "string", - "usage": "The ID of the participant ( Agent / DN / Entry Point DN / Customer) to be dropped from the conference, maximum length 36 characters.", - "required": true - }, - { - "name": "task-id", - "type": "string", - "usage": "The taskId represents the task that the user is currently working on. It will be generated automatically during the creation of a new task.", - "required": true - } - ] - }, - { - "path": "webex cc tasks end", - "short": "End Task", - "long": "Access this endpoint when the user has to end either an inbound or an outbound requests. Requires one of the following scopes 'cjp:user' or 'cloud-contact-center:pod_conv' for authorization. For a list of possible response messages, see the [Call Control API Guide](/docs/contact-control-apis).", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for end" - }, - { - "name": "task-id", - "type": "string", - "usage": "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task.", - "required": true - } - ] - }, - { - "path": "webex cc tasks exit-conference", - "short": "Exit Conference Task", - "long": "Access this endpoint when the user wants to exit from a conference call. Requires one of the following scopes 'cjp:user' or 'cloud-contact-center:pod_conv' for authorization. For a list of possible response messages, see the [Call Control API Guide](/docs/contact-control-apis).", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for exit-conference" - }, - { - "name": "task-id", - "type": "string", - "usage": "The taskId represents the task that the user is currently working on. It will be generated automatically during the creation of a new task.", - "required": true - } - ] - }, - { - "path": "webex cc tasks get", - "short": "Get Tasks", - "long": "Retrieve open and closed tasks. Sorted by createdTime ascending. Uses offset-based pagination.\nFor this API, response compression using gzip can be enabled by including 'Accept-Encoding' header in the request with its value as 'gzip'. \nThe response will be compressed only if its size exceeds 1 MB.\nIf the header is not present in the request or if gzip is not listed as one of the encodings in the header's value (comma separated encodings), then API response will not be compressed and this can impact the latency as observed from clients.", - "flags": [ - { - "name": "channel-types", - "type": "string", - "usage": "Task channel type(s) permitted in response. Separate values with commas. Use lowercase. By default, there is no channelType filtering." - }, - { - "name": "from", - "type": "string", - "usage": "Filters tasks created after the given epoch timestamp (in milliseconds)." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to use for this operation. If unspecified, inferred from token. Token must have permission to interact with this organization.", - "hidden": true - }, - { - "name": "page-size", - "type": "string", - "usage": "Maximum page size in the response. Maximum allowed value is 1000. Defaults to 100 items per page." - }, - { - "name": "to", - "type": "string", - "usage": "Filters tasks created before the given epoch timestamp (in milliseconds); queries up to the present if timestamp is not specified." - }, - { - "name": "tracking-id", - "type": "string", - "usage": "Tracking ID to use for this operation, for traceability, debugging, and error reporting purposes. " - } - ] - }, - { - "path": "webex cc tasks hold", - "short": "Hold Task", - "long": "Access this endpoint when the user has to hold a call. When an user is in consulting state, the task will be put on hold. It is not applicable for chats and emails. Requires one of the following scopes 'cjp:user','cloud-contact-center:pod_conv' for authorization. For a list of possible response messages, see the [Call Control API Guide](/docs/contact-control-apis).", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for hold" - }, - { - "name": "media-resource-id", - "type": "string" - }, - { - "name": "task-id", - "type": "string", - "usage": "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task.", - "required": true - } - ] - }, - { - "path": "webex cc tasks pause-digital", - "short": "Pause Task", - "long": "Access this endpoint when users such as administrators, supervisors, or agents with an agent license need to pause a task that cannot be handled immediately. This API is supported only for non-real-time digital channels, such as email, social, etc. Authorization requires the `cjp:user` scope. For a list of potential response messages, refer to the [Call Control API Guide](/docs/contact-control-apis).", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for pause-digital" - }, - { - "name": "task-id", - "type": "string", - "usage": "The unique ID represents the interaction or task that the user wants to pause.", - "required": true - } - ] - }, - { - "path": "webex cc tasks pause-recording", - "short": "Pause Recording Task", - "long": "When configured by the administrator, telephony tasks are often being recorded for various reasons. When an user is handling sensitive customer information, he/she might want to pause the recording and later on resume recording. For a list of possible response messages, see the [Call Control API Guide](/docs/contact-control-apis). Requires OAuth scope cjp:user. The authenticated user must have a UserProfile of type Agent to access this API.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for pause-recording" - }, - { - "name": "task-id", - "type": "string", - "usage": "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task.", - "required": true - } - ] - }, - { - "path": "webex cc tasks reject", - "short": "Reject Task", - "long": "Access this endpoint when the user has to reject a task. Once a task is rejected, the status of the user goes to idle from available. Requires one of the following scopes 'cjp:user' or 'cloud-contact-center:pod_conv' for authorization. For a list of possible response messages, see the [Call Control API Guide](/docs/contact-control-apis).", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for reject" - }, - { - "name": "media-resource-id", - "type": "string" - }, - { - "name": "task-id", - "type": "string", - "usage": "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task.", - "required": true - } - ] - }, - { - "path": "webex cc tasks resume-digital", - "short": "Resume Task", - "long": "Access this endpoint when users such as administrators, supervisors, or agents with an agent license need to resume a previously paused task. This API is supported only for non-real-time digital channels, such as email, social, etc. Authorization requires the `cjp:user` scope. For a list of potential response messages, refer to the [Call Control API Guide](/docs/contact-control-apis).", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for resume-digital" - }, - { - "name": "task-id", - "type": "string", - "usage": "The unique ID represents the interaction or task that the user wants to resume.", - "required": true - } - ] - }, - { - "path": "webex cc tasks resume-recording", - "short": "Resume Recording Task", - "long": "When configured by the administrator, telephony tasks are often being recorded for various reasons. When an user is handling sensitive customer information, he/she might resume the recording after the pause. For a list of possible response messages, see the [Call Control API Guide](/docs/contact-control-apis). Requires OAuth scope cjp:user. The authenticated user must have a UserProfile of type Agent to access this API.", - "flags": [ - { - "name": "auto-resumed", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for resume-recording" - }, - { - "name": "task-id", - "type": "string", - "usage": "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task.", - "required": true - } - ] - }, - { - "path": "webex cc tasks skip-preview", - "short": "Skip Preview Task", - "long": "API to skip the preview campaign task offered to the agent.", - "flags": [ - { - "name": "campaign-id", - "type": "string", - "usage": "The unique ID represents the campaign that the user is currently working on.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for skip-preview" - }, - { - "name": "task-id", - "type": "string", - "usage": "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task.", - "required": true - } - ] - }, - { - "path": "webex cc tasks transfer", - "short": "Transfer Task", - "long": "Access this endpoint when the user has to transfer a call to another user. Requires one of the following scopes 'cjp:user' or 'cloud-contact-center:pod_conv' scope for authorization. For a list of possible response messages, see the [Call Control API Guide](/docs/contact-control-apis).", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "destination-type", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for transfer" - }, - { - "name": "task-id", - "type": "string", - "usage": "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task.", - "required": true - }, - { - "name": "to", - "type": "string" - } - ] - }, - { - "path": "webex cc tasks unhold", - "aliases": [ - "resume" - ], - "short": "Unhold Task", - "long": "Access this endpoint when the user has to resume a call from hold. When an user is done consulting, the previously held interaction with the customer should be resumed. It is not applicable for chats and emails. Requires one of the following scopes 'cjp:user','cloud-contact-center:pod_conv' for authorization. For a list of possible response messages, see the [Call Control API Guide](/docs/contact-control-apis).", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for unhold" - }, - { - "name": "media-resource-id", - "type": "string" - }, - { - "name": "task-id", - "type": "string", - "usage": "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task.", - "required": true - } - ] - }, - { - "path": "webex cc tasks update", - "short": "Update Task", - "long": "This API is to update a task. Represents both inbound tasks (originating from customer-facing channels) and outbound tasks (originating from contact center to customer-facing channel). Requires one of the following scopes 'cjp:user' or 'cloud-contact-center:pod_conv' for authorization.. For a list of possible response messages, see the Call Control API Guide.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "task-id", - "type": "string", - "usage": "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task.", - "required": true - } - ] - }, - { - "path": "webex cc tasks wrap-up", - "short": "Wrap Up Task", - "long": "Access this endpoint when the user has to wrap up a call. Requires one of the following scopes 'cjp:user' or 'cloud-contact-center:pod_conv' for authorization. For a list of possible response messages, see the [Call Control API Guide](/docs/contact-control-apis).", - "flags": [ - { - "name": "aux-code-id", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for wrap-up" - }, - { - "name": "task-id", - "type": "string", - "usage": "The unique ID represents the task that the user is currently working on. It will be generated automatically during the creation of a new task.", - "required": true - }, - { - "name": "wrap-up-reason", - "type": "string" - } - ] - }, - { - "path": "webex cc team", - "short": "Team commands" - }, - { - "path": "webex cc team bulk-export", - "short": "Bulk export Team(s)", - "long": "Export all Team(s) in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-export" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - } - ] - }, - { - "path": "webex cc team bulk-save", - "short": "Bulk save Teams", - "long": "Create, Update or delete Teams in bulk in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-save" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc team create", - "short": "Create a new Team", - "long": "Create a new Team in a given organization.", - "flags": [ - { - "name": "active", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "capacity", - "type": "string" - }, - { - "name": "created-time", - "type": "string" - }, - { - "name": "description", - "type": "string" - }, - { - "name": "desktop-layout-id", - "type": "string" - }, - { - "name": "dialed-number", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "id", - "type": "string" - }, - { - "name": "last-updated-time", - "type": "string" - }, - { - "name": "multi-media-profile-id", - "type": "string" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "organization-id", - "type": "string" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "queue-rankings", - "type": "string" - }, - { - "name": "rank-queues-for-team", - "type": "string" - }, - { - "name": "site-id", - "type": "string" - }, - { - "name": "skill-profile-id", - "type": "string" - }, - { - "name": "system-default", - "type": "string" - }, - { - "name": "team-status", - "type": "string" - }, - { - "name": "team-type", - "type": "string" - }, - { - "name": "user-ids", - "type": "string" - }, - { - "name": "version", - "type": "string" - } - ] - }, - { - "path": "webex cc team delete", - "aliases": [ - "delete-id" - ], - "short": "Delete specific Team by ID", - "long": "Delete an existing Team by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Team.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc team get", - "aliases": [ - "get-id" - ], - "short": "Get specific Team by ID", - "long": "Retrieve an existing Team by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Team", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc team list", - "short": "List Teams", - "long": "Retrieve a list of Teams in a given organization. Note: Returning array fields in the List (Get All) API response is deprecated. To retrieve the complete resource with all fields, please use the Get-by-ID API instead.", - "flags": [ - { - "name": "attributes", - "type": "string", - "usage": "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported. except (userIds, queueRankings)" - }, - { - "name": "filter", - "type": "string", - "usage": "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, userIds, queueRankings, createdTime, lastUpdatedTime Use the userId field to filter teams associated with the provided user. The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. " - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "provisioning-view", - "type": "string", - "usage": "If set to true, the API will only return data that the user has access to, according to the User Profile." - }, - { - "name": "search", - "type": "string", - "usage": "Filter data based on the search keyword.Supported search columns(name, description) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\",\"description\");value==\"Cisco\" " - }, - { - "name": "single-object-response", - "type": "string", - "usage": "Specify whether to include array fields in the response. This query parameter should be used only when the response contains a single record. It is not supported for responses with multiple objects and throws an exception." - }, - { - "name": "supervisor-view", - "type": "string", - "usage": "If set to true, the API will only return data that the user has access to, according to the User Profile." - } - ] - }, - { - "path": "webex cc team list-references", - "short": "List references for a specific Team", - "long": "Retrieve a list of all entities that have reference to an existing Team by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-references" - }, - { - "name": "id", - "type": "string", - "usage": "ID of this contact center resource.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "type", - "type": "string", - "usage": "Entity type of the other entity that has a reference to this specific entity." - } - ] - }, - { - "path": "webex cc team list-v1", - "short": "List Teams (v1)", - "long": "Lists teams with every field, through the v1 route. Each item carries lastUpdatedTime.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-v1" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Page number, from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Items per page." - } - ] - }, - { - "path": "webex cc team purge-inactive", - "short": "Purge inactive Teams", - "long": "Purge inactive Teams older than the configured interval for a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for purge-inactive" - }, - { - "name": "next-start-id", - "type": "string", - "usage": "This is the entity ID from which items for the next purge batch will be selected." - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc team update", - "aliases": [ - "update-id" - ], - "short": "Update specific Team by ID", - "long": "Update an existing Team by ID in a given organization.", - "flags": [ - { - "name": "active", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "capacity", - "type": "string" - }, - { - "name": "created-time", - "type": "string" - }, - { - "name": "description", - "type": "string" - }, - { - "name": "desktop-layout-id", - "type": "string" - }, - { - "name": "dialed-number", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the Team.", - "required": true - }, - { - "name": "last-updated-time", - "type": "string" - }, - { - "name": "multi-media-profile-id", - "type": "string" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "organization-id", - "type": "string" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "queue-rankings", - "type": "string" - }, - { - "name": "rank-queues-for-team", - "type": "string" - }, - { - "name": "site-id", - "type": "string" - }, - { - "name": "skill-profile-id", - "type": "string" - }, - { - "name": "system-default", - "type": "string" - }, - { - "name": "team-status", - "type": "string" - }, - { - "name": "team-type", - "type": "string" - }, - { - "name": "user-ids", - "type": "string" - }, - { - "name": "version", - "type": "string" - } - ] - }, - { - "path": "webex cc templates", - "short": "Templates commands" - }, - { - "path": "webex cc templates get-flow", - "short": "Get a Flow Template", - "long": "Retrieve a specific flow template by its ID. Use this to inspect a template's flow structure before creating a flow from it.\n\nScope: `cjp:config_read`", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-flow" - }, - { - "name": "id", - "type": "string", - "usage": "Template ID.", - "required": true - } - ] - }, - { - "path": "webex cc templates list-flow", - "short": "List Flow Templates", - "long": "List available flow templates that can be used to create new flows.\n\nScope: `cjp:config_read`", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-flow" - }, - { - "name": "type", - "type": "string", - "usage": "Filter by flow or subflow." - } - ] - }, - { - "path": "webex cc tenant-configuration", - "short": "TenantConfiguration commands" - }, - { - "path": "webex cc tenant-configuration get", - "short": "Get specific Tenant Configuration by ID", - "long": "Retrieve an existing Tenant Configuration by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "id", - "type": "string", - "usage": "ID of this contact center resource.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc tenant-configuration list", - "short": "List Tenant Configuration", - "long": "Retrieve a list of Tenant Configuration in a given organization.", - "flags": [ - { - "name": "attributes", - "type": "string", - "usage": "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported." - }, - { - "name": "filter", - "type": "string", - "usage": "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. " - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "search", - "type": "string", - "usage": "Filter data based on the search keyword.Supported search columns(name) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\");value==\"Cisco\" " - } - ] - }, - { - "path": "webex cc tenant-configuration update", - "short": "Update specific Tenant Configuration by ID", - "long": "Update an existing Tenant Configuration by ID in a given organization. Requests authenticated with a user token can modify only fields designated as user-modifiable.", - "flags": [ - { - "name": "aps-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "aps-url", - "type": "string" - }, - { - "name": "auto-base-url", - "type": "bool", - "default": "false" - }, - { - "name": "auto-wrap-up-interval", - "type": "int64", - "default": "0" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "call-variables-base-url", - "type": "string" - }, - { - "name": "call-variables-suppressed", - "type": "string" - }, - { - "name": "central-log-level", - "type": "string" - }, - { - "name": "configuration-version", - "type": "float64", - "default": "0" - }, - { - "name": "console-log-level", - "type": "string" - }, - { - "name": "created-time", - "type": "int64", - "default": "0" - }, - { - "name": "diagnostics-post-url", - "type": "string" - }, - { - "name": "dn-default-description", - "type": "string" - }, - { - "name": "dn-default-prefix", - "type": "string" - }, - { - "name": "dn-default-regex", - "type": "string" - }, - { - "name": "dn-default-strip-chars", - "type": "string" - }, - { - "name": "dn-other-description", - "type": "string" - }, - { - "name": "dn-other-prefix", - "type": "string" - }, - { - "name": "dn-other-regex", - "type": "string" - }, - { - "name": "dn-other-strip-chars", - "type": "string" - }, - { - "name": "dn-target-prefix", - "type": "string" - }, - { - "name": "dn-target-regex", - "type": "string" - }, - { - "name": "dn-target-strip-chars", - "type": "string" - }, - { - "name": "end-call-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "end-consult-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "force-default-dn", - "type": "bool", - "default": "false" - }, - { - "name": "heart-beat-interval", - "type": "int64", - "default": "0" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "id", - "type": "string", - "usage": "ID of this contact center resource.", - "required": true - }, - { - "name": "incident-reporting-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "last-updated-time", - "type": "int64", - "default": "0" - }, - { - "name": "local-disk-log-level", - "type": "string" - }, - { - "name": "lost-connection-recovery-timeout", - "type": "int64", - "default": "0" - }, - { - "name": "missed-heart-beats-allowed", - "type": "int64", - "default": "0" - }, - { - "name": "not-responding-to-available-timeout", - "type": "int64", - "default": "0" - }, - { - "name": "organization-id", - "type": "string" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "outdial-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "privacy-shield-visible", - "type": "bool", - "default": "false" - }, - { - "name": "reject-duplicate-dn", - "type": "bool", - "default": "false" - }, - { - "name": "system-default", - "type": "bool", - "default": "false" - }, - { - "name": "system-recovery-msg", - "type": "string" - }, - { - "name": "timeout-desktop-inactivity-enabled", - "type": "bool", - "default": "false" - }, - { - "name": "timeout-desktop-inactivity-mins", - "type": "int64", - "default": "0" - }, - { - "name": "timeout-rona-chat-seconds", - "type": "int64", - "default": "0" - }, - { - "name": "timeout-rona-custom-messaging-seconds", - "type": "int64", - "default": "0" - }, - { - "name": "timeout-rona-email-seconds", - "type": "int64", - "default": "0" - }, - { - "name": "timeout-rona-social-seconds", - "type": "int64", - "default": "0" - }, - { - "name": "timeout-rona-telephony-seconds", - "type": "int64", - "default": "0" - }, - { - "name": "timeout-rona-work-item-seconds", - "type": "int64", - "default": "0" - }, - { - "name": "version", - "type": "int64", - "default": "0" - }, - { - "name": "watson-analytics-base-url", - "type": "string" - }, - { - "name": "watson-analytics-password", - "type": "string" - }, - { - "name": "watson-analytics-user-name", - "type": "string" - } - ] - }, - { - "path": "webex cc usage-reports", - "short": "UsageReports commands" - }, - { - "path": "webex cc usage-reports create", - "short": "Create usage report", - "long": "Creates a new usage report for the specified organization, resource type,\nand date range. The report is generated asynchronously in the background.\n\nA single **usage report (reportId)** is always created for each request.\nDepending on the requested date range, the report may contain **one or more\nreport files**, each representing a sub-range of the overall time period.\n\nWhen the requested date range spans **more than 30 days**, the overall range\nis **automatically split by natural calendar months**, and **multiple report\nfiles** are generated under the same report.\n\n**Examples:**\n\n- Requested range: `2025-12-23` ~ `2026-03-20`\n - Generated result:\n - Report ID: single report\n - Report files:\n - `2025-12-23` ~ `2025-12-31`\n - `2026-01-01` ~ `2026-01-31`\n - `2026-02-01` ~ `2026-02-28`\n - `2026-03-01` ~ `2026-03-20`\n\n- Requested range: `2025-12-23` ~ `2026-01-21`\n - Generated result:\n - Report ID: single report\n - Report files:\n - `2025-12-23` ~ `2026-01-21`\n\n**Important Notes:**\n- Only one usage report can be processed at a time for the same organization.\n If there is an ongoing report, new report creation requests will be rejected.\n", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "end-date", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "resource-type", - "type": "string" - }, - { - "name": "start-date", - "type": "string" - } - ] - }, - { - "path": "webex cc usage-reports delete", - "short": "Delete usage report", - "long": "Deletes the specified usage report and its associated file. This operation cannot be undone.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "report-id", - "type": "string", - "usage": "Usage report ID", - "required": true - } - ] - }, - { - "path": "webex cc usage-reports download-file", - "short": "Download usage report file", - "long": "Downloads one completed report file as a binary stream.\n\nUse the `fileId` returned in the report's `reportFiles` array. A `reportId` identifies the overall report and cannot be used with this endpoint. Usage Reports can cover up to 36 months of raw data, so large date ranges may be split into one file per calendar month. This keeps individual compressed files more manageable and avoids requiring customers to download a single very large file. If a report contains multiple files, call this endpoint once for each `fileId`.\n\nPassing a `reportId` to this endpoint returns `404` because the path parameter expects a file-level identifier.\n\nThe Developer Portal may not handle binary downloads reliably. Use Postman, curl, or a programmatic API client to download the file.\n\n**Note:** Both file and download URLs expire 7 days after report completion.\n", - "flags": [ - { - "name": "file-id", - "type": "string", - "usage": "ID of the specific report file to download. Use fileId, not reportId.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for download-file" - } - ] - }, - { - "path": "webex cc usage-reports get", - "short": "Get usage report details", - "long": "Retrieves detailed information for a specific usage report.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "report-id", - "type": "string", - "usage": "Usage report ID", - "required": true - } - ] - }, - { - "path": "webex cc usage-reports list", - "short": "List usage reports", - "long": "Retrieves a list of usage reports for the organization. Supports optional filtering by resource type and creation date range.\n\nEach report has a `reportId` and may contain one or more generated files in `reportFiles[]`. For long date ranges, the service can split results by calendar month to avoid creating a single very large download. For example, a 12-month report can return up to 12 report files, and a 36-month report can return up to 36 report files.\n\nUse `reportId` to retrieve the overall report status, list the generated files, or delete the report. Use each file's `fileId` or `downloadUrl` to download that specific file. The download API does not accept `reportId`.", - "flags": [ - { - "name": "created-after", - "type": "string", - "usage": "Filter reports created after this timestamp (ISO 8601 format)" - }, - { - "name": "created-before", - "type": "string", - "usage": "Filter reports created before this timestamp (ISO 8601 format)" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "resource-type", - "type": "string", - "usage": "Filter by resource type" - } - ] - }, - { - "path": "webex cc usage-reports list-resource-types", - "short": "Get available resource types", - "long": "Returns the list of available resource types that can be used for report generation, along with available data dates.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-resource-types" - } - ] - }, - { - "path": "webex cc user-profiles", - "short": "UserProfiles commands" - }, - { - "path": "webex cc user-profiles bulk-export", - "short": "Bulk export User Profiles", - "long": "Export all user profiles in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-export" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - } - ] - }, - { - "path": "webex cc user-profiles bulk-save", - "short": "Bulk save User Profiles", - "long": "Create, Update or delete user profiles in bulk in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-save" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc user-profiles create", - "short": "Create a new User Profile", - "long": "Create a new user profile in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc user-profiles delete", - "aliases": [ - "delete-id" - ], - "short": "Delete specific User Profile by ID", - "long": "Delete an existing user profile by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the User Profile.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc user-profiles get", - "aliases": [ - "get-id" - ], - "short": "Get specific User Profile by ID", - "long": "Retrieve an existing user profile by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the User Profile.", - "required": true - }, - { - "name": "include-names", - "type": "string", - "usage": "Flag to include resource names in the response." - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc user-profiles get-acl-id", - "short": "Get specific User Profile ACL by ID", - "long": "Retrieve an existing User Profile ACL by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-acl-id" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the User Profile.", - "required": true - }, - { - "name": "names", - "type": "string", - "usage": " Default all resources are returned in the ACL. If you want to filter the ACL by specific resources, provide a comma-separated list of resource names to filter the ACL. Ex: /url?names=site,team " - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc user-profiles list", - "short": "List user profiles", - "long": "Retrieve a list of user profiles in a given organization.\n Note: Returning array fields in the List (Get All) API response is deprecated. To retrieve the complete resource with all fields, please use the Get-by-ID API instead.", - "flags": [ - { - "name": "attributes", - "type": "string", - "usage": "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported. except (entryPoints,sites, queues, teams, userProfileAppModules,editableFolderIds, viewableFolderIds, nonViewableFolderIds)" - }, - { - "name": "filter", - "type": "string", - "usage": "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, userProfileAppModules, entryPoints, sites, queues, teams, editableFolderIds, viewableFolderIds, nonViewableFolderIds, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. " - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "search", - "type": "string", - "usage": "Filter data based on the search keyword.Supported search columns(name, profileType, description) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\",\"description\");value==\"Cisco\" " - } - ] - }, - { - "path": "webex cc user-profiles list-references", - "short": "List references for a specific User Profile", - "long": "Retrieve a list of all entities that have reference to an existing user profile by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-references" - }, - { - "name": "id", - "type": "string", - "usage": "ID of this contact center resource.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "type", - "type": "string", - "usage": "Entity type of the other entity that has a reference to this specific entity." - } - ] - }, - { - "path": "webex cc user-profiles purge-inactive", - "short": "Purge inactive User Profile(s)", - "long": "Purge inactive User Profile(s) older than the configured interval for a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for purge-inactive" - }, - { - "name": "next-start-id", - "type": "string", - "usage": "This is the entity ID from which items for the next purge batch with be selected." - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc user-profiles update", - "aliases": [ - "update-id" - ], - "short": "Update specific User Profile by ID", - "long": "Update an existing user profile by ID in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the User Profile.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc users", - "short": "Users commands" - }, - { - "path": "webex cc users bulk-export", - "short": "Bulk export User(s)", - "long": "Export all User(s) in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-export" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - } - ] - }, - { - "path": "webex cc users bulk-partial-update", - "short": "Bulk partial update Users", - "long": "Update some or all properties for multiple users in bulk for a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-partial-update" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc users bulk-partial-update-dynamic-skills", - "aliases": [ - "bulk-update-dynamic-skills" - ], - "short": "Bulk partial update Users with dynamic skills", - "long": "Assign or unassign a dynamic skill to/from multiple users in bulk for a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-partial-update-dynamic-skills" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "skill-id", - "type": "string", - "usage": "Dynamic skill ID used for bulk update", - "required": true - } - ] - }, - { - "path": "webex cc users get", - "aliases": [ - "get-id" - ], - "short": "Get specific User by ID", - "long": "Retrieve an existing Users by ID in a given organization.", - "flags": [ - { - "name": "check-if-user-has-dynamic-skill", - "type": "string", - "usage": "If set to true, checks if user has the specified dynamic skill" - }, - { - "name": "dynamic-skill-id", - "type": "string", - "usage": "Dynamic skill ID to check if user has it assigned (required when checkIfUserHasDynamicSkill is true)" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the User.", - "required": true - }, - { - "name": "include-count", - "type": "string", - "usage": "If set to true, the API response will include the count of each type of Contact Service Queue to which the user is assigned." - }, - { - "name": "include-reskill-audit-info", - "type": "string", - "usage": "If set to true gives skill profile and dynamic skill modification info." - }, - { - "name": "include-skill-details", - "type": "string", - "usage": "If set to true, the response includes skill information for each dynamic skill assignment." - }, - { - "name": "include-skill-profile-audit", - "type": "string", - "usage": "If set to true gives skill profile modification info." - }, - { - "name": "include-user-profile-type", - "type": "string", - "usage": "If set to true, the API response includes the User Profile." - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc users get-agents-matching-skill-requirements", - "short": "Get the agents matching skill requirements criteria", - "long": "This API can be used to fetch the agents who match the provided skill requirements criteria. Maximum of 50 skill requirements criteria can be passed in the request.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-agents-matching-skill-requirements" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "search", - "type": "string", - "usage": "Filter data based on the search keyword.Supported search columns(firstName, lastName, email) The examples below show some search queries - \"Cisco\" - field==\"firstName\";value==\"Cisco\" - fields=in=(\"firstName\",\"lastName\");value==\"Cisco\" " - } - ] - }, - { - "path": "webex cc users get-along-profile-id", - "short": "Get specific User along with profile by ID", - "long": "Retrieve an existing User along with the corresponding User Profile by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-along-profile-id" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the User.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc users get-ci-id", - "short": "Get specific User by CI User ID", - "long": "Retrieve an existing User using the CI ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-ci-id" - }, - { - "name": "id", - "type": "string", - "usage": "CI ID of the User.", - "required": true - }, - { - "name": "include-names", - "type": "string", - "usage": "Specifiy whether to include resource collection names" - }, - { - "name": "include-skill-details", - "type": "string", - "usage": "If set to true, the response includes skill information for each dynamic skill assignment." - }, - { - "name": "include-user-profile", - "type": "string", - "usage": "Specifiy whether to include user profile data" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc users get-dynamic-skill-id", - "short": "Get users by dynamic skill ID", - "long": "Fetches all users assigned to a specific dynamic skill with search and pagination support. Returns user details with the specific dynamic skill value.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-dynamic-skill-id" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "search", - "type": "string", - "usage": "Filter data based on the search keyword.Supported search columns(firstName, lastName, email, value) The examples below show some search queries - \"Cisco\" " - }, - { - "name": "skill-id", - "type": "string", - "usage": "The dynamic skill ID to fetch users for", - "required": true - } - ] - }, - { - "path": "webex cc users list", - "short": "List Users", - "long": "Retrieve a list of Users in a given organization. Note: Returning array fields in the List (Get All) API response is deprecated. To retrieve the complete resource with all fields, please use the Get-by-ID API instead.", - "flags": [ - { - "name": "attributes", - "type": "string", - "usage": "Specify the attributes to be returned. By default, all attributes are returned along with the specified columns. All attributes are supported." - }, - { - "name": "buddy-team-agents-only", - "type": "string", - "usage": "If set to true, returns only users who are part of buddy teams without PBAC check." - }, - { - "name": "filter", - "type": "string", - "usage": "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, xspVersion, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain spaces. If they do, please enclose them in quotes to apply the filter. " - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "include-aimapping-count", - "type": "string", - "usage": "If set to true, the API response will include the count of each AI feature mapped to the entity." - }, - { - "name": "include-dynamic-skills-limit-reached", - "type": "string", - "usage": "If true, includes whether each user has reached the dynamic skills assignment limit." - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "queue-id", - "type": "string", - "usage": "Contact Service Queue ID for which the list of assigned or unassigned agents must be fetched." - }, - { - "name": "search", - "type": "string", - "usage": "Filter data based on the search keyword.Supported search columns(firstName, lastName, email) The examples below show some search queries - \"Cisco\" - field==\"firstName\";value==\"Cisco\" - fields=in=(\"firstName\",\"lastName\");value==\"Cisco\" " - }, - { - "name": "single-object-response", - "type": "string", - "usage": "Specify whether to include array fields in the response. This query parameter should be used only when the response contains a single record. It is not supported for responses with multiple objects and throws an exception." - }, - { - "name": "supervisor-managed-agents-only", - "type": "string", - "usage": "If set to true, the API will return contact center enabled users based on the invoking supervisor user's user profile access rights to sites and teams." - }, - { - "name": "user-in-queue", - "type": "string", - "usage": "Can be either assigned or unassigned. If passed, returns the users who are assigned or not assigned to an agent based queue managed by the supervisor." - } - ] - }, - { - "path": "webex cc users list-along-profile", - "short": "List Users along with profile", - "long": "Retrieve a list of Users along with their User Profiles in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-along-profile" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc users list-by-call-monitoring-config", - "aliases": [ - "list-call-monitoring-id" - ], - "short": "List users by call monitoring id", - "long": "Fetch paginated users associated to the selected call monitoring team filters while enforcing team ACL.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-by-call-monitoring-config" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the call monitoring.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - } - ] - }, - { - "path": "webex cc users list-by-ids", - "aliases": [ - "get-ids" - ], - "short": "List Users with details", - "long": "Retrieve an existing User's first name, last name and email by list of IDs in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-by-ids" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "queue-id", - "type": "string" - }, - { - "name": "search", - "type": "string" - }, - { - "name": "user-ids", - "type": "stringSlice", - "default": "[]" - } - ] - }, - { - "path": "webex cc users list-references", - "short": "List references for a specific User", - "long": "Retrieve a list of all entities that have reference to an existing User by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-references" - }, - { - "name": "id", - "type": "string", - "usage": "ID of this contact center resource.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "type", - "type": "string", - "usage": "Entity type of the other entity that has a reference to this specific entity." - } - ] - }, - { - "path": "webex cc users list-v1", - "short": "List Users (v1)", - "long": "Lists Contact Center users through the v1 route. Each item carries lastUpdatedTime.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-v1" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Page number, from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Items per page." - } - ] - }, - { - "path": "webex cc users patch", - "aliases": [ - "patch-id" - ], - "short": "Partially update User by ID", - "long": "Partially update User by ID in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for patch" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the User.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "value-type", - "type": "string" - } - ] - }, - { - "path": "webex cc users reskill-agents", - "short": "Reskill Agents", - "long": "Reskill agents by assigning or unassigning skills.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for reskill-agents" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the User.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc users update", - "aliases": [ - "update-id" - ], - "short": "Update specific User by ID", - "long": "Update an existing User by ID in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "id", - "type": "string", - "usage": "Resource ID of the User.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc work-types", - "short": "WorkTypes commands" - }, - { - "path": "webex cc work-types bulk-export", - "short": "Bulk export Work Type(s)", - "long": "Export all Work Type(s) in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-export" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - } - ] - }, - { - "path": "webex cc work-types bulk-save", - "short": "Bulk save Work Type(s)", - "long": "Create, Update or delete Work Type(s) in bulk in a given organization.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for bulk-save" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc work-types create", - "short": "Create a new Work Type", - "long": "Create a new Work Type in a given organization.", - "flags": [ - { - "name": "active", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "description", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "id", - "type": "string" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "organization-id", - "type": "string" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "system-default", - "type": "bool", - "default": "false" - }, - { - "name": "version", - "type": "int64", - "default": "0" - }, - { - "name": "work-type-code", - "type": "string" - } - ] - }, - { - "path": "webex cc work-types delete", - "aliases": [ - "delete-id" - ], - "short": "Delete specific Work Type by ID", - "long": "Delete an existing Work Type by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "id", - "type": "string", - "usage": "ID of the work_type.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc work-types get", - "aliases": [ - "get-id" - ], - "short": "Get specific Work Type by ID", - "long": "Retrieve an existing Work Type by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "id", - "type": "string", - "usage": "ID of the work_type.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc work-types list", - "short": "List Work Type(s)", - "long": "Retrieve a list of Work Type(s) in a given organization.", - "flags": [ - { - "name": "attributes", - "type": "string", - "usage": "Specify the attributes to be returned.Default all attributes are returned along with specified columns. All Attributes are supported" - }, - { - "name": "filter", - "type": "string", - "usage": "Specify a filter based on which the results will be fetched. All the fields are supported except: organizationId, createdTime, lastUpdatedTime The examples below show some search queries - id==\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id!=\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\" - id=in=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") - id=out=(\"57efb0e6-5af0-4245-a67d-d3c5045cdb6e\",\"a421e0b2-732e-46f3-a057-39160a53afb9\") This parameter uses the RSQL query syntax, a URI-friendly format for expressing criteria for filtering REST entities. For more information about RSQL in general, see this reference. For a list of supported operators, see this syntax guide. Note: values to be used in the filter syntax should not contain space, and if so kindly bound it with quotes to apply filter. " - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "search", - "type": "string", - "usage": "Filter data based on the search keyword.Supported search columns(name) The examples below show some search queries - \"Cisco\" - field==\"name\";value==\"Cisco\" - fields=in=(\"name\");value==\"Cisco\" " - } - ] - }, - { - "path": "webex cc work-types list-references", - "short": "List references for a specific Work Type", - "long": "Retrieve a list of all entities that have reference to an existing Work Type by ID in a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-references" - }, - { - "name": "id", - "type": "string", - "usage": "ID of this contact center resource.", - "required": true - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "page", - "type": "string", - "usage": "Defines the number of displayed page. The page number starts from 0." - }, - { - "name": "page-size", - "type": "string", - "usage": "Defines the number of items to be displayed on a page. If the number specified is more than allowed max page size, the API will automatically adjust the page size to the max page size." - }, - { - "name": "type", - "type": "string", - "usage": "Entity type of the other entity that has a reference to this specific entity." - } - ] - }, - { - "path": "webex cc work-types purge-inactive", - "short": "Purge inactive Work Type(s)", - "long": "Purge inactive Work Type(s) older than the configured interval for a given organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for purge-inactive" - }, - { - "name": "next-start-id", - "type": "string", - "usage": "This is the entity ID from which items for the next purge batch with be selected." - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - } - ] - }, - { - "path": "webex cc work-types update", - "aliases": [ - "update-id" - ], - "short": "Update specific Work Type by ID", - "long": "Update an existing Work Type by ID in a given organization.", - "flags": [ - { - "name": "active", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "description", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "id", - "type": "string", - "usage": "ID of the work_type.", - "required": true - }, - { - "name": "name", - "type": "string" - }, - { - "name": "organization-id", - "type": "string" - }, - { - "name": "orgid", - "type": "string", - "usage": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.", - "hidden": true - }, - { - "name": "system-default", - "type": "bool", - "default": "false" - }, - { - "name": "version", - "type": "int64", - "default": "0" - }, - { - "name": "work-type-code", - "type": "string" - } - ] - }, - { - "path": "webex completion", - "short": "Generate the autocompletion script for the specified shell", - "long": "Generate the autocompletion script for webex for the specified shell.\nSee each sub-command's help for details on how to use the generated script.\n" - }, - { - "path": "webex completion bash", - "short": "Generate the autocompletion script for bash", - "long": "Generate the autocompletion script for the bash shell.\n\nThis script depends on the 'bash-completion' package.\nIf it is not installed already, you can install it via your OS's package manager.\n\nTo load completions in your current shell session:\n\n\tsource <(webex completion bash)\n\nTo load completions for every new session, execute once:\n\n#### Linux:\n\n\twebex completion bash > /etc/bash_completion.d/webex\n\n#### macOS:\n\n\twebex completion bash > $(brew --prefix)/etc/bash_completion.d/webex\n\nYou will need to start a new shell for this setup to take effect.\n", - "flags": [ - { - "name": "no-descriptions", - "type": "bool", - "default": "false", - "usage": "disable completion descriptions" - } - ] - }, - { - "path": "webex completion fish", - "short": "Generate the autocompletion script for fish", - "long": "Generate the autocompletion script for the fish shell.\n\nTo load completions in your current shell session:\n\n\twebex completion fish | source\n\nTo load completions for every new session, execute once:\n\n\twebex completion fish > ~/.config/fish/completions/webex.fish\n\nYou will need to start a new shell for this setup to take effect.\n", - "flags": [ - { - "name": "no-descriptions", - "type": "bool", - "default": "false", - "usage": "disable completion descriptions" - } - ] - }, - { - "path": "webex completion powershell", - "short": "Generate the autocompletion script for powershell", - "long": "Generate the autocompletion script for powershell.\n\nTo load completions in your current shell session:\n\n\twebex completion powershell | Out-String | Invoke-Expression\n\nTo load completions for every new session, add the output of the above command\nto your powershell profile.\n", - "flags": [ - { - "name": "no-descriptions", - "type": "bool", - "default": "false", - "usage": "disable completion descriptions" - } - ] - }, - { - "path": "webex completion zsh", - "short": "Generate the autocompletion script for zsh", - "long": "Generate the autocompletion script for the zsh shell.\n\nIf shell completion is not already enabled in your environment you will need\nto enable it. You can execute the following once:\n\n\techo \"autoload -U compinit; compinit\" >> ~/.zshrc\n\nTo load completions in your current shell session:\n\n\tsource <(webex completion zsh)\n\nTo load completions for every new session, execute once:\n\n#### Linux:\n\n\twebex completion zsh > \"${fpath[1]}/_webex\"\n\n#### macOS:\n\n\twebex completion zsh > $(brew --prefix)/share/zsh/site-functions/_webex\n\nYou will need to start a new shell for this setup to take effect.\n", - "flags": [ - { - "name": "no-descriptions", - "type": "bool", - "default": "false", - "usage": "disable completion descriptions" - } - ] - }, - { - "path": "webex config", - "short": "Manage CLI configuration", - "long": "Get and set CLI configuration values like OAuth client credentials.\n\nTo use your own Webex Integration instead of the built-in default:\n\n 1. Create an integration at https://developer.webex.com/my-apps\n 2. Set the redirect URI to: http://localhost:8085/callback\n 3. Add the OAuth scopes required for the APIs you plan to use\n 4. Run: webex config set client-id \n webex config set client-secret \n webex config set scopes \"spark:all spark-admin:all \"" - }, - { - "path": "webex config get", - "short": "Get a configuration value", - "long": "Get a configuration value. Valid keys: client-id, client-secret, scopes, read-only-scopes, region, cc-region" - }, - { - "path": "webex config set", - "short": "Set a configuration value", - "long": "Set a configuration value. Valid keys: client-id, client-secret, scopes, read-only-scopes, region, cc-region. read-only-scopes accepts only read scopes." - }, - { - "path": "webex device", - "aliases": [ - "devices" - ], - "short": "Webex Device APIs", - "long": "Manage Webex devices — workspaces, device configurations, xAPI, and more." - }, - { - "path": "webex device device-call", - "short": "DeviceCall commands" - }, - { - "path": "webex device device-call apply-changes", - "short": "Apply Changes for a specific device", - "long": "Issues request to the device to download and apply changes to the configuration.\n\nApplying changes for a specific device requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "device-id", - "type": "string", - "usage": "Unique identifier for the device.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for apply-changes" - }, - { - "name": "org-id", - "type": "string", - "usage": "Apply changes for a device in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex device device-call apply-line-key-template", - "short": "Apply a Line Key Template", - "long": "Apply a Line Key Template or reset devices to their factory Line Key settings.\n\nLine Keys, also known as Programmable Line Keys (PLK), are the keys found on either side of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to apply a line key template or apply factory default Line Key settings to devices in a set of locations or across all locations in the organization.\n\nApplying a Line Key Template or resetting devices to their default Line Key configuration requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for apply-line-key-template" - }, - { - "name": "org-id", - "type": "string", - "usage": "Apply Line Key Template for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex device device-call create-line-key-template", - "short": "Create a Line Key Template", - "long": "Create a Line Key Template in this organization.\n\nLine Keys, also known as Programmable Line Keys (PLK), are the keys found on either side of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows customers to create a `Line Key Template` for a device model.\n\nCreating a Line Key Template requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-line-key-template" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization to which the line key template belongs.", - "hidden": true - } - ] - }, - { - "path": "webex device device-call delete-background-images", - "short": "Delete Device Background Images", - "long": "Delete the list of designated device background images for an organization. Maximum is 10 images per request.\n\nDeleting a device background image requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-background-images" - }, - { - "name": "org-id", - "type": "string", - "usage": "Deletes the list of images in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex device device-call delete-line-key-template", - "short": "Delete a Line Key Template", - "long": "Delete a Line Key Template by its template ID in an organization.\n\nLine Keys also known as Programmable Line Keys (PLK) are the keys found on either sides of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to delete an existing Line Key Templates by its ID in an organization.\n\nDeleting an existing line key template requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-line-key-template" - }, - { - "name": "org-id", - "type": "string", - "usage": "Delete a line key template for this organization.", - "hidden": true - }, - { - "name": "template-id", - "type": "string", - "usage": "Delete line key template with this template ID.", - "required": true - } - ] - }, - { - "path": "webex device device-call get-change-settings-job-status", - "short": "Get Change Device Settings Job Status", - "long": "Get change device settings job status.\n\nProvides details of the job with `jobId` of `jobType` `calldevicesettings`.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-change-settings-job-status" - }, - { - "name": "job-id", - "type": "string", - "usage": "Retrieve job details for this `jobId`.", - "required": true - } - ] - }, - { - "path": "webex device device-call get-count-available-members", - "short": "Get Count of Available Members", - "long": "Get the count of members that can be assigned to devices.\n\nA device member can be either a person or a workspace.\n\nThis requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "device-location-id", - "type": "string", - "usage": "Unique identifier for the device's location. When specified, filters available members to those in the same location as the device." - }, - { - "name": "exclude-virtual-line", - "type": "string", - "usage": "If true, filters out virtual lines from the available members list." - }, - { - "name": "extension", - "type": "string", - "usage": "Search (Contains) based on extension." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-count-available-members" - }, - { - "name": "location-id", - "type": "string", - "usage": "Unique identifier for the location." - }, - { - "name": "member-name", - "type": "string", - "usage": "Search (Contains) numbers based on member name." - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieves the count of available members in this organization.", - "hidden": true - }, - { - "name": "phone-number", - "type": "string", - "usage": "Search (Contains) based on number." - }, - { - "name": "usage-type", - "type": "string", - "usage": "Search for members eligible to become the owner of the device, or share line on the device. * `DEVICE_OWNER` - Search for members eligible to become the owner of the device. * `SHARED_LINE` - Search for members eligible to share line on the device." - } - ] - }, - { - "path": "webex device device-call get-count-members", - "short": "Get Count of Members", - "long": "Get the count of members that can be assigned to the device.\n\nA device member can be either a person or a workspace.\n\nThis requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "device-id", - "type": "string", - "usage": "Unique identifier for the device.", - "required": true - }, - { - "name": "extension", - "type": "string", - "usage": "Search (Contains) based on extension." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-count-members" - }, - { - "name": "location-id", - "type": "string", - "usage": "Unique identifier for the location." - }, - { - "name": "member-name", - "type": "string", - "usage": "Search (Contains) numbers based on member name." - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieves the count of available members on the device in this organization.", - "hidden": true - }, - { - "name": "phone-number", - "type": "string", - "usage": "Search (Contains) based on number." - }, - { - "name": "usage-type", - "type": "string", - "usage": "Search for members eligible to become the owner of the device, or share line on the device. * `DEVICE_OWNER` - Search for members eligible to become the owner of the device. * `SHARED_LINE` - Search for members eligible to share line on the device." - } - ] - }, - { - "path": "webex device device-call get-customer-dynamic-settings", - "short": "Get Customer Device Dynamic Settings", - "long": "Retrieve dynamic settings for specific device tags at customer level, allowing filters by `familyOrModelDisplayName` and `tag` identifier.\n\nThis API lets you request the values of multiple `Device Settings` at once by specifying a list of `familyOrModelDisplayName` and tag combinations.\n\nThis requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "family-or-model-display-name", - "type": "string", - "usage": "(Required) The family or model name for the device. If no tag is specified, all tags related to `familyOrModelDisplayName` are returned." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-customer-dynamic-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "List of device dynamic settings in this organization.", - "hidden": true - }, - { - "name": "tags", - "type": "stringSlice", - "default": "[]" - } - ] - }, - { - "path": "webex device device-call get-customer-dynamic-settings-2", - "short": "Get Customer Device Dynamic Settings", - "long": "Retrieve dynamic settings for specific device tags at customer level, allowing filters by `familyOrModelDisplayName` and `tag` identifier.\n\nThis API lets you request the values of multiple `Device Settings` at once by specifying a list of `familyOrModelDisplayName` and tag combinations.\n\nThis requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "family-or-model-display-name", - "type": "string", - "usage": "The family or model name for the device. If no tag is specified, all tags related to `familyOrModelDisplayName` are returned." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-customer-dynamic-settings-2" - }, - { - "name": "org-id", - "type": "string", - "usage": "List of device dynamic settings in this organization.", - "hidden": true - }, - { - "name": "tags", - "type": "stringSlice", - "default": "[]" - } - ] - }, - { - "path": "webex device device-call get-dect-type-list", - "short": "Read the DECT device type list", - "long": "
Not supported for Webex for Government (FedRAMP).
\n\nGet DECT device type list with base stations and line ports supported count. This is a static list.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-dect-type-list" - }, - { - "name": "org-id", - "type": "string", - "hidden": true - } - ] - }, - { - "path": "webex device device-call get-dect-type-list-deprecated", - "short": "Read the DECT device type list - Deprecated", - "long": "
Not supported for Webex for Government (FedRAMP).
\n\n
The REST path for this API has changed to [GET /telephony/config/devices/dectNetworks/supportedDevices{?orgId}]. The use of this old REST path is deprecated and will be decommissioned on October 10, 2024. Please start using it for all future projects.
\n\nGet DECT device type list with base stations and line ports supported count. This is a static list.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-dect-type-list-deprecated" - }, - { - "name": "org-id", - "type": "string", - "hidden": true - } - ] - }, - { - "path": "webex device device-call get-dynamic-settings", - "short": "Get Device Dynamic Settings", - "long": "Retrieve settings for a specified device.\n\nThis API retrieves device settings based on the specified `tags`; if the `tags` field is empty or missing, all settings for the device are returned.\n\nThis requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "device-id", - "type": "string", - "usage": "(Required) Device for which to retrieve settings.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-dynamic-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization to which the `device` belongs.", - "hidden": true - }, - { - "name": "tags", - "type": "stringSlice", - "default": "[]" - } - ] - }, - { - "path": "webex device device-call get-dynamic-settings-2", - "short": "Get Device Dynamic Settings", - "long": "Retrieve settings for a specified device.\n\nThis API retrieves device settings based on the specified `tags`; if the `tags` field is empty or missing, all settings for the device are returned.\n\nThis requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "device-id", - "type": "string", - "usage": "Device for which to retrieve settings.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-dynamic-settings-2" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization to which the `device` belongs.", - "hidden": true - }, - { - "name": "tags", - "type": "stringSlice", - "default": "[]" - } - ] - }, - { - "path": "webex device device-call get-dynamic-settings-job-status", - "short": "Get Device Dynamic Settings Job Status", - "long": "Get dynamic device settings job status.\n\nProvides details of the job with `jobId` of `jobType` `dynamicdevicesettings`.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-dynamic-settings-job-status" - }, - { - "name": "job-id", - "type": "string", - "usage": "(Required) Retrieve job details for this `jobId`.", - "required": true - } - ] - }, - { - "path": "webex device device-call get-dynamic-settings-job-status-2", - "short": "Get Device Dynamic Settings Job Status", - "long": "Get device dynamic settings job status.\n\nProvides details of the job with `jobId` of `jobType` `dynamicdevicesettings`.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-dynamic-settings-job-status-2" - }, - { - "name": "job-id", - "type": "string", - "usage": "Retrieve job details for this `jobId`.", - "required": true - } - ] - }, - { - "path": "webex device device-call get-job-errors-apply-line-key-template-job", - "short": "Get job errors for an Apply Line Key Template job", - "long": "GET job errors for an apply Line Key Template job in an organization.\n\nLine Keys also known as Programmable Line Keys (PLK) are the keys found on either sides of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to retrieve all the errors of an apply line key templates job by job ID in an organization.\n\nRetrieving all the errors of an apply line key templates job in an organization requires a full, user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-job-errors-apply-line-key-template-job" - }, - { - "name": "job-id", - "type": "string", - "usage": "Retrieve job errors for this `jobId`.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve list of errors for an apply line key template job in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex device device-call get-job-errors-rebuild-phones-job", - "short": "Get Job Errors for a Rebuild Phones Job", - "long": "
Not supported for Webex for Government (FedRAMP)
.\n\nGet errors for a rebuild phones job in an organization.\n\nRebuild phones jobs are used when there is a change in the network configuration of phones in a location, i.e. a change in the network configuration of devices in a location from public to private and vice-versa.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-job-errors-rebuild-phones-job" - }, - { - "name": "job-id", - "type": "string", - "usage": "Retrieve job errors for this `jobId`.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve list of errors for a rebuild phones job in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex device device-call get-job-status-apply-line-key-template-job", - "short": "Get the job status of an Apply Line Key Template job", - "long": "Get the status of an apply line key template job by its job ID.\n\nLine Keys also known as Programmable Line Keys (PLK) are the keys found on either sides of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to check the status of an apply line key templates job by job ID in an organization.\n\nChecking the the status of an apply line key templates job in an organization requires a full, user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-job-status-apply-line-key-template-job" - }, - { - "name": "job-id", - "type": "string", - "usage": "Retrieve job status for this `jobId`.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Check a line key template job status in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex device device-call get-job-status-rebuild-phones-job", - "short": "Get the Job Status of a Rebuild Phones Job", - "long": "
Not supported for Webex for Government (FedRAMP)
.\n\nGet the details of a rebuild phones job by its job ID.\n\nRebuild phones jobs are used when there is a change in the network configuration of phones in a location, i.e. a change in the network configuration of devices in a location from public to private and vice-versa.\n\nThis API requires requires a full administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-job-status-rebuild-phones-job" - }, - { - "name": "job-id", - "type": "string", - "usage": "Retrieve job status for this `jobId`.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Check a rebuild phones job status in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex device device-call get-layout-id", - "short": "Get Device Layout by Device ID", - "long": "Get layout information of a device by device ID in an organization.\n\nDevice layout customizes a user’s programmable line keys (PLK) on the phone and any attached Key Expansion Modules (KEM) with the existing configured line members and the user’s monitoring list.\n\n**Note:** When `layoutMode` is DEFAULT, the response includes only `layoutMode` and `userReorderEnabled`. The `lineKeys` field is omitted as the device uses system-assigned default line-key assignments. When `layoutMode` is CUSTOM, the response includes the `lineKeys` array with the custom line-key configuration.\n\nThis API requires a full or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "device-id", - "type": "string", - "usage": "Get device layout for this device ID.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-layout-id" - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve a device layout for the device in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex device device-call get-line-key-template", - "short": "Get details of a Line Key Template", - "long": "Get detailed information about a Line Key Template by template ID in an organization.\n\nLine Keys, also known as Programmable Line Keys (PLK), are the keys found on either side of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to retrieve a line key template by its ID in an organization.\n\nRetrieving a line key template requires a full, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-line-key-template" - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve a line key template for this organization.", - "hidden": true - }, - { - "name": "template-id", - "type": "string", - "usage": "Get line key template for this template ID.", - "required": true - } - ] - }, - { - "path": "webex device device-call get-location-dynamic-settings", - "short": "Get Location Device Dynamic Settings", - "long": "Retrieve dynamic settings for specific device tags at the specified location level, allowing filters by `familyOrModelDisplayName` and `tag` identifier.\n\nThis API lets you request the values of multiple `Device Settings` at once by specifying a list of `familyOrModelDisplayName` and tag combinations for a specific location.\n\nThis requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "family-or-model-display-name", - "type": "string", - "usage": "(Required) The family or model name for the device. If no tag is specified, all tags related to `familyOrModelDisplayName` are returned." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-location-dynamic-settings" - }, - { - "name": "location-id", - "type": "string", - "usage": "(Required) Unique identifier for the `location`.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Unique identifier for the `organization` to which this location belongs.", - "hidden": true - }, - { - "name": "tags", - "type": "stringSlice", - "default": "[]" - } - ] - }, - { - "path": "webex device device-call get-location-dynamic-settings-2", - "short": "Get Location Device Dynamic Settings", - "long": "Retrieve dynamic settings for specific device tags at the specified location level, allowing filters by `familyOrModelDisplayName` and `tag` identifier.\n\nThis API lets you request the values of multiple `Device Settings` at once by specifying a list of `familyOrModelDisplayName` and tag combinations for a specific location.\n\nThis requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "family-or-model-display-name", - "type": "string", - "usage": "The family or model name for the device. If no tag is specified, all tags related to `familyOrModelDisplayName` are returned." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-location-dynamic-settings-2" - }, - { - "name": "location-id", - "type": "string", - "usage": "Unique identifier for the `location`.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Unique identifier for the `organization` to which this location belongs.", - "hidden": true - }, - { - "name": "tags", - "type": "stringSlice", - "default": "[]" - } - ] - }, - { - "path": "webex device device-call get-location-settings", - "short": "Get Location Device Settings", - "long": "Get device override settings for a location.\n\nThis requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-location-settings" - }, - { - "name": "location-id", - "type": "string", - "usage": "Unique identifier for the location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization in which the device resides.", - "hidden": true - } - ] - }, - { - "path": "webex device device-call get-members", - "short": "Get Device Members", - "long": "Get the list of all the members of the device including primary and secondary users.\n\nA device member can be either a person or a workspace. An admin can access the list of member details, modify member details and\nsearch for available members on a device.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "device-id", - "type": "string", - "usage": "Unique identifier for the device.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-members" - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieves the list of all members of the device in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex device device-call get-override-settings", - "short": "Read the device override settings for a organization", - "long": "Get device override settings for an organization.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-override-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "List supported devices for an organization.", - "hidden": true - } - ] - }, - { - "path": "webex device device-call get-person", - "short": "Get Person Devices", - "long": "Get all devices for a person.\n\nThis requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization to which the person belongs.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Person for whom to retrieve devices.", - "required": true - } - ] - }, - { - "path": "webex device device-call get-settings", - "short": "Get Device Settings", - "long": "Get override settings for a device.\n\nDevice settings lists all the applicable settings for MPP, ATA and Wifi devices at the device level. An admin can also modify the settings. DECT devices do not support settings at the device level.\n\nThis requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "device-id", - "type": "string", - "usage": "Unique identifier for the device.", - "required": true - }, - { - "name": "device-model", - "type": "string", - "usage": "The model type of the device. The corresponding device model display name sometimes called the product name, can also be used to specify the model." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "Settings on the device in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex device device-call get-settings-groups", - "short": "Get Settings Groups", - "long": "This API returns the `settingsGroups` that define the structure and association of tags for dynamic device settings.\n\n The `settingsGroups` are used to organize the tags into logical groups, making it easier to manage and configure dynamic device settings.", - "flags": [ - { - "name": "family-or-model-display-name", - "type": "string", - "usage": "Device family or model display name to filter the `settingsGroups`." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-settings-groups" - }, - { - "name": "include-settings-type", - "type": "string", - "usage": "To show groups or tabs or both. Query param is case insensitive. Default is `ALL`." - }, - { - "name": "org-id", - "type": "string", - "usage": "Settings groups for devices in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex device device-call get-settings-groups-2", - "short": "Get Settings Groups", - "long": "This API returns the `settingsGroups` that define the structure and association of tags for device dynamic settings.\n\n The `settingsGroups` are used to organize the tags into logical groups, making it easier to manage and configure device dynamic settings.", - "flags": [ - { - "name": "family-or-model-display-name", - "type": "string", - "usage": "Device family or model display name to filter the `settingsGroups`." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-settings-groups-2" - }, - { - "name": "include-settings-type", - "type": "string", - "usage": "To show groups or tabs or both. Query param is case insensitive. Default is `ALL`." - }, - { - "name": "org-id", - "type": "string", - "usage": "Settings groups for devices in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex device device-call get-settings-person", - "short": "Get Device Settings for a Person", - "long": "Device settings list the compression settings for a person.\n\nDevice settings customize a device's behavior and performance. The compression field optimizes call quality for inbound and outbound calls.\n\nThis API requires a full, location, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-settings-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieves the device settings for a person in this organization.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "ID of the person for whom to retrieve device settings.", - "required": true - } - ] - }, - { - "path": "webex device device-call get-settings-workspace", - "short": "Get Device Settings for a Workspace", - "long": "Device settings list the compression settings for a workspace.\n\nDevice settings customize a device's behavior and performance. The compression field optimizes call quality for inbound and outbound calls.\n\nThis API requires a full, location, user, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-settings-workspace" - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieves the device settings for a workspace in this organization.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "ID of the workspace for which to retrieve device settings.", - "required": true - } - ] - }, - { - "path": "webex device device-call get-user-count", - "short": "Get User Devices Count", - "long": "Get the total device and application count for a person.\n\nThe device count can be used to determine if more devices can be added for users with a device count limit. For example, users with standard calling licenses can only have one physical device.\n\nThis requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-user-count" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization to which the person belongs.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Person for whom to retrieve the device count.", - "required": true - } - ] - }, - { - "path": "webex device device-call get-validation-schema", - "short": "Get Validation Schema", - "long": "This API returns the validation schema for `tags` of all or specific `familyOrModelDisplayName`.\n\nThe schema is used to validate the `tag` for devices in the `Webex Calling` platform. The schema includes information about the required fields, data types, and validation rules for each setting.", - "flags": [ - { - "name": "family-or-model-display-name", - "type": "string", - "usage": "Device family or model display name to filter the schema." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-validation-schema" - }, - { - "name": "org-id", - "type": "string", - "usage": "Validation schema for devices in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex device device-call get-webex-calling", - "short": "Get Webex Calling Device Details", - "long": "
Not supported for Webex for Government (FedRAMP)
\n\nRetrieves Webex Calling device details that include information needed for third-party device management.\n\nWebex calling devices are associated with a specific user Workspace or Virtual Line. Webex Calling devices share the location with the entity that owns them.\n\nPerson or workspace to which the device is assigned. Its fields point to a primary line/port of the device.\n\nRequires a full, location, user, or read-only admin auth token with the scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "device-id", - "type": "string", - "usage": "Unique identifier for the device.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-webex-calling" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the device resides.", - "hidden": true - } - ] - }, - { - "path": "webex device device-call get-workspace", - "short": "Get Workspace Devices", - "long": "Get all devices for a workspace.\n\nThis requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-workspace" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization to which the workspace belongs.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "ID of the workspace for which to retrieve devices.", - "required": true - } - ] - }, - { - "path": "webex device device-call list-apply-line-key-template-jobs", - "short": "Get List of Apply Line Key Template jobs", - "long": "Get the list of all apply line key templates jobs in an organization.\n\nLine Keys also known as Programmable Line Keys (PLK) are the keys found on either sides of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to retrieve all the apply line key templates jobs in an organization.\n\nRetrieving the list of apply line key templates jobs in an organization requires a full, user or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-apply-line-key-template-jobs" - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve list of line key templates jobs in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex device device-call list-background-images", - "short": "Read the List of Background Images", - "long": "Gets the list of device background images for an organization.\n\nWebex Calling supports the upload of up to 100 background image files for each org. These image files can then be referenced by MPP phones in that org for use as their background image.\n\nRetrieving this list requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-background-images" - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieves the list of images in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex device device-call list-change-settings-job-errors", - "short": "List Change Device Settings Job Errors", - "long": "List change device settings job errors.\n\nLists all error details of the job with `jobId` of `jobType` `calldevicesettings`.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-change-settings-job-errors" - }, - { - "name": "job-id", - "type": "string", - "usage": "Retrieve job details for this `jobId`.", - "required": true - }, - { - "name": "max", - "type": "string", - "usage": "Specifies the maximum number of records that you want to fetch. Default is 2000" - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve list of jobs for this organization.", - "hidden": true - }, - { - "name": "start", - "type": "string", - "usage": "Specifies the offset from the first result that you want to fetch. Default is 0." - } - ] - }, - { - "path": "webex device device-call list-change-settings-jobs", - "short": "List Change Device Settings Jobs", - "long": "List change device settings jobs.\n\nLists all the jobs for jobType `calldevicesettings` for the given organization in order of most recent one to oldest one irrespective of its status.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-change-settings-jobs" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of jobs returned to this maximum count. Default is 2000." - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve list of 'calldevicesettings' jobs for this organization.", - "hidden": true - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of jobs. Default is 0." - } - ] - }, - { - "path": "webex device device-call list-dynamic-settings-job-errors", - "short": "List Dynamic Device Settings Job Errors", - "long": "List Update dynamic device settings job errors.\n\nLists all error details of the job with `jobId` of `jobType` `dynamicdevicesettings`.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-dynamic-settings-job-errors" - }, - { - "name": "job-id", - "type": "string", - "usage": "(Required) Retrieve job details for this `jobId`.", - "required": true - }, - { - "name": "max", - "type": "string", - "usage": "Specifies the maximum number of records that you want to fetch. Default is 2000" - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve the status of job for this organization.", - "hidden": true - }, - { - "name": "start", - "type": "string", - "usage": "Specifies the offset from the first result that you want to fetch. Default is 0." - } - ] - }, - { - "path": "webex device device-call list-dynamic-settings-job-errors-2", - "short": "List Device Dynamic Settings Job Errors", - "long": "List Update device dynamic settings job errors.\n\nLists all error details of the job with `jobId` of `jobType` `dynamicdevicesettings`.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-dynamic-settings-job-errors-2" - }, - { - "name": "job-id", - "type": "string", - "usage": "Retrieve job details for this `jobId`.", - "required": true - }, - { - "name": "max", - "type": "string", - "usage": "Specifies the maximum number of records that you want to fetch. Default is 2000" - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve the status of job for this organization.", - "hidden": true - }, - { - "name": "start", - "type": "string", - "usage": "Specifies the offset from the first result that you want to fetch. Default is 0." - } - ] - }, - { - "path": "webex device device-call list-dynamic-settings-jobs", - "short": "List dynamic device Settings Jobs", - "long": "List dynamic device settings jobs.\n\nLists all the jobs for job type `dynamicdevicesettings` for the given organization in order of most recent one to oldest one irrespective of its status.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-dynamic-settings-jobs" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of jobs returned to this maximum count. Default is 2000." - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve list of dynamic device settings jobs for this organization.", - "hidden": true - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of jobs. Default is 0." - } - ] - }, - { - "path": "webex device device-call list-dynamic-settings-jobs-2", - "short": "List Device Dynamic Settings Jobs", - "long": "List device dynamic settings jobs.\n\nLists all the jobs for job type `dynamicdevicesettings` for the given organization in order of most recent one to oldest one irrespective of its status.\n\nThis API requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-dynamic-settings-jobs-2" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the number of jobs returned to this maximum count. Default is 2000." - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieve list of device dynamic settings jobs for this organization.", - "hidden": true - }, - { - "name": "start", - "type": "string", - "usage": "Start at the zero-based offset in the list of jobs. Default is 0." - } - ] - }, - { - "path": "webex device device-call list-line-key-templates", - "short": "Read the list of Line Key Templates", - "long": "List all Line Key Templates available for this organization.\n\nLine Keys also known as Programmable Line Keys (PLK) are the keys found on either sides of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to retrieve the list of Line Key Templates that are available for the organization.\n\nRetrieving this list requires a full, user or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-line-key-templates" - }, - { - "name": "org-id", - "type": "string", - "usage": "List line key templates for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex device device-call list-rebuild-phones-jobs", - "short": "List Rebuild Phones Jobs", - "long": "
Not supported for Webex for Government (FedRAMP)
.\n\nGet the list of all Rebuild Phones jobs in an organization.\n\nRebuild phones jobs are used when there is a change in the network configuration of phones in a location, i.e. a change in the network configuration of devices in a location from public to private and vice-versa.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-rebuild-phones-jobs" - }, - { - "name": "org-id", - "type": "string", - "usage": "List of rebuild phones jobs in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex device device-call list-supported", - "short": "Read the List of Supported Devices", - "long": "Gets the list of supported devices for an organization.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "allow-configure-layout-enabled", - "type": "string", - "usage": "List supported devices that allow the user to configure the layout." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-supported" - }, - { - "name": "org-id", - "type": "string", - "usage": "List supported devices for an organization.", - "hidden": true - }, - { - "name": "type", - "type": "string", - "usage": "List supported devices of a specific type. To excluded device types from a request or query, add `type=not:DEVICE_TYPE`. For example, `type=not:MPP`." - } - ] - }, - { - "path": "webex device device-call list-supported-2", - "short": "Read the List of Supported Devices", - "long": "Gets the list of supported devices for an organization.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "allow-configure-layout-enabled", - "type": "string", - "usage": "List supported devices that allow the user to configure the layout." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-supported-2" - }, - { - "name": "org-id", - "type": "string", - "usage": "List supported devices for an organization.", - "hidden": true - }, - { - "name": "type", - "type": "string", - "usage": "List supported devices of a specific type. To excluded device types from a request or query, add `type=not:DEVICE_TYPE`. For example, `type=not:MPP`." - } - ] - }, - { - "path": "webex device device-call list-supported-3", - "short": "Read the List of Supported Devices", - "long": "Gets the list of supported devices for an organization.\n\nRetrieving this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "allow-configure-layout-enabled", - "type": "string", - "usage": "List supported devices that allow the user to configure the layout." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-supported-3" - }, - { - "name": "org-id", - "type": "string", - "usage": "List supported devices for an organization.", - "hidden": true - }, - { - "name": "type", - "type": "string", - "usage": "List supported devices of a specific type. To excluded device types from a request or query, add `type=not:DEVICE_TYPE`. For example, `type=not:MPP`." - } - ] - }, - { - "path": "webex device device-call preview-apply-line-key-template", - "short": "Preview Apply Line Key Template", - "long": "Preview the number of devices that will be affected by the application of a Line Key Template or when resetting devices to their factory Line Key settings.\n\nLine Keys, also known as Programmable Line Keys (PLK), are the keys found on either side of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to preview the number of devices that will be affected if a customer were to apply a Line Key Template or apply factory default Line Key settings to devices.\n\nRetrieving the number of devices affected requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for preview-apply-line-key-template" - }, - { - "name": "org-id", - "type": "string", - "usage": "Preview Line Key Template for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex device device-call rebuild-phones-configuration", - "short": "Rebuild Phones Configuration", - "long": "
Not supported for Webex for Government (FedRAMP)
.\n\nRebuild all phone configurations for the specified location.\n\nRebuild phones jobs are used when there is a change in the network configuration of phones in a location, i.e. a change in the network configuration of devices in a location from public to private and vice-versa.\n\nThis API requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for rebuild-phones-configuration" - }, - { - "name": "location-id", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "Rebuild phones for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex device device-call search-members", - "short": "Search Members", - "long": "Search members that can be assigned to the device.\n\nA device member can be either a person or a workspace. A admin can access the list of member details, modify member details and\nsearch for available members on a device.\n\nThis requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`.", - "flags": [ - { - "name": "device-id", - "type": "string", - "usage": "Unique identifier for the device.", - "required": true - }, - { - "name": "extension", - "type": "string", - "usage": "Search (Contains) based on extension." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for search-members" - }, - { - "name": "location-id", - "type": "string", - "usage": "Unique identifier for the location." - }, - { - "name": "max", - "type": "string", - "usage": "Specifies the maximum number of records that you want to fetch." - }, - { - "name": "member-name", - "type": "string", - "usage": "Search (Contains) numbers based on member name." - }, - { - "name": "order", - "type": "string", - "usage": "Sort the list of available members on the device in ascending order by name, use either last name `lname` or first name `fname`. Default: last name in ascending order." - }, - { - "name": "org-id", - "type": "string", - "usage": "Retrieves the list of available members on the device in this organization.", - "hidden": true - }, - { - "name": "phone-number", - "type": "string", - "usage": "Search (Contains) based on number." - }, - { - "name": "start", - "type": "string", - "usage": "Specifies the offset from the first result that you want to fetch." - }, - { - "name": "usage-type", - "type": "string", - "usage": "Search for members eligible to become the owner of the device, or share line on the device." - } - ] - }, - { - "path": "webex device device-call update-dynamic-settings", - "short": "Update Device Dynamic Settings", - "long": "Modify dynamic settings for a specified device.\n\nThis API updates device settings based on the specified `tags`. If the `tags` field is empty, the request has no effect.\n\nThis requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "device-id", - "type": "string", - "usage": "Device for which to update settings.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-dynamic-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization to which the device belongs.", - "hidden": true - } - ] - }, - { - "path": "webex device device-call update-dynamic-settings-across-org-location", - "short": "Update Device Dynamic Settings Across Organization or Location", - "long": "Creates a job to update device settings at location or organization level.\n\nThe job runs asynchronously and persistently, applying the requested settings in bulk to all relevant devices, which may belong to multiple families as specified in the request. If a `locationId` is provided, only devices in that location are affected.\n\nA unique job ID is returned to track status and errors.\n\nOnly one job can run per customer per organization at a time. Additionally, this job cannot run in parallel with other device jobs such as [Call device settings](/docs/api/v1/device-call-settings/change-device-settings-across-organization-or-location-job) and [Rebuild Phones](/docs/api/v1/device-call-settings/rebuild-phones-configuration).\n\nRunning a job requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-dynamic-settings-across-org-location" - }, - { - "name": "org-id", - "type": "string", - "usage": "Apply update device dynamic settings for all the devices under this organization.", - "hidden": true - } - ] - }, - { - "path": "webex device device-call update-hoteling-settings-person-primary", - "short": "Modify Hoteling Settings for a Person's Primary Devices", - "long": "Modify hoteling login configuration on a person's Webex Calling Devices which are in effect when the device is the user's primary device and device type is PRIMARY. To view the current hoteling login settings, see the `hoteling` field in [Get Person Devices](/docs/api/v1/device-call-settings/get-person-devices).\n\nModifying devices for a person requires a full administrator or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-hoteling-settings-person-primary" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization to which the person belongs.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "ID of the person associated with the device.", - "required": true - } - ] - }, - { - "path": "webex device device-call update-layout-id", - "short": "Modify Device Layout by Device ID", - "long": "Modify the layout of a device by device ID in an organization.\n\nDevice layout customizes a user’s programmable line keys (PLK) on the phone and any attached Key Expansion Modules (KEM) with the existing configured line members and the user’s monitoring list.\n\n**Note:** When setting `layoutMode` to DEFAULT, do not include the `lineKeys` field in the request body. The device will use system-assigned default line-key assignments. When setting `layoutMode` to CUSTOM, you must include the `lineKeys` array to specify the custom line-key configuration.\n\nThis API requires a full or location administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "device-id", - "type": "string", - "usage": "Modify device layout for this device ID.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-layout-id" - }, - { - "name": "org-id", - "type": "string", - "usage": "Modify a device layout for the device in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex device device-call update-line-key-template", - "short": "Modify a Line Key Template", - "long": "Modify a Line Key Template by its template ID in an organization.\n\nLine Keys, also known as Programmable Line Keys (PLK), are the keys found on either side of a typical desk phone display.\nA Line Key Template is a definition of actions that will be performed by each of the Line Keys for a particular device model.\nThis API allows users to modify an existing Line Key Template by its ID in an organization.\n\nModifying an existing Line Key Template requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-line-key-template" - }, - { - "name": "org-id", - "type": "string", - "usage": "Modify a line key template for this organization.", - "hidden": true - }, - { - "name": "template-id", - "type": "string", - "usage": "Modify line key template with this template ID.", - "required": true - } - ] - }, - { - "path": "webex device device-call update-members", - "short": "Update Members on the device", - "long": "Modify member details on the device.\n\nA device member can be either a person, virtual line or a workspace. An admin can access the list of member details, modify member details and\nsearch for available members on a device.\n\nModifying members on the device requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "device-id", - "type": "string", - "usage": "Unique identifier for the device.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-members" - }, - { - "name": "org-id", - "type": "string", - "usage": "Modify members on the device in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex device device-call update-settings", - "short": "Update device settings", - "long": "Modify override settings for a device.\n\nDevice settings list all the applicable settings for an MPP and an ATA devices at the device level. Admins can also modify the settings. NOTE: DECT devices do not support settings at the device level.\n\nUpdating settings on the device requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "device-id", - "type": "string", - "usage": "Unique identifier for the device.", - "required": true - }, - { - "name": "device-model", - "type": "string", - "usage": "The model type of the device. The corresponding device model display name sometimes called the product name, can also be used to specify the model." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization in which the device resides..", - "hidden": true - } - ] - }, - { - "path": "webex device device-call update-settings-across-org-location-job", - "short": "Change Device Settings Across Organization Or Location Job", - "long": "Change device settings across organization or locations jobs.\n\nPerforms bulk and asynchronous processing for all types of device settings initiated by organization and system admins in a stateful persistent manner. This job will modify the requested device settings across all the devices. Whenever a location ID is specified in the request, it will modify the requested device settings only for the devices that are part of the provided location within an organization.\n\nReturns a unique job ID which can then be utilized further to retrieve status and errors for the same.\n\nOnly one job per customer can be running at any given time within the same organization. An attempt to run multiple jobs at the same time will result in a 409 error response.\n\nRunning a job requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-settings-across-org-location-job" - }, - { - "name": "org-id", - "type": "string", - "usage": "Apply change device settings for all the devices under this organization.", - "hidden": true - } - ] - }, - { - "path": "webex device device-call update-settings-person", - "short": "Update Device Settings for a Person", - "long": "Update device settings modifies the compression settings for a person.\n\nDevice settings customize a device's behavior and performance. The compression field optimizes call quality for inbound and outbound calls.\n\nThis API requires a full, location, or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "compression", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-settings-person" - }, - { - "name": "org-id", - "type": "string", - "usage": "Modify device settings for a person in this organization.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "ID of the person for whom to update device settings.", - "required": true - } - ] - }, - { - "path": "webex device device-call update-settings-workspace", - "short": "Update Device Settings for a Workspace", - "long": "Update device settings modifies the compression settings for a workspace.\n\nDevice settings customize a device's behavior and performance. The compression field optimizes call quality for inbound and outbound calls.\n\nThis API requires a full, location, or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "compression", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-settings-workspace" - }, - { - "name": "org-id", - "type": "string", - "usage": "Modify the device settings for a workspace in this organization.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "ID of the workspace for which to update device settings.", - "required": true - } - ] - }, - { - "path": "webex device device-call update-specified-settings", - "short": "Update specified settings for the device.", - "long": "Modify dynamic settings for a specified device.\n\nThis API updates device settings based on the specified `tags`. If the `tags` field is empty, the request has no effect.\n\nThis requires a full, device, or read-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "device-id", - "type": "string", - "usage": "(Required) Device for which to update settings.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-specified-settings" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization to which the device belongs.", - "hidden": true - } - ] - }, - { - "path": "webex device device-call update-third-party", - "short": "Update Third Party Device", - "long": "
Not supported for Webex for Government (FedRAMP)
\n\nModify a device's `sipPassword`.\n\nUpdating `sipPassword` on the device requires a full or user administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "device-id", - "type": "string", - "usage": "Unique identifier for the device.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-third-party" - }, - { - "name": "org-id", - "type": "string", - "usage": "ID of the organization in which the device resides.", - "hidden": true - }, - { - "name": "sip-password", - "type": "string" - } - ] - }, - { - "path": "webex device device-call update-workspace", - "short": "Modify Workspace Devices", - "long": "Modify devices for a workspace.\n\nModifying devices for a workspace requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "enabled", - "type": "bool", - "default": "false" - }, - { - "name": "guest-hours-limit", - "type": "int64", - "default": "0" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-workspace" - }, - { - "name": "limit-guest-use", - "type": "bool", - "default": "false" - }, - { - "name": "org-id", - "type": "string", - "usage": "Organization to which the workspace belongs.", - "hidden": true - }, - { - "name": "workspace-id", - "type": "string", - "usage": "ID of the workspace for which to modify devices.", - "required": true - } - ] - }, - { - "path": "webex device device-call updates-dynamic-settings-across-org-location", - "short": "Updates dynamic Device Settings Across Organization Or Location", - "long": "Creates a job to update device settings at location or organization level.\n\nThe job runs asynchronously and persistently, applying the requested settings in bulk to all relevant devices, which may belong to multiple families as specified in the request. If a `locationId` is provided, only devices in that location are affected.\n\nA unique job ID is returned to track status and errors.\n\nOnly one job can run per customer per organization at a time. Additionally, this job cannot run in parallel with other device jobs such as [Call device settings](/docs/api/v1/device-call-settings/change-device-settings-across-organization-or-location-job) and [Rebuild Phones](/docs/api/v1/device-call-settings/rebuild-phones-configuration).\n\nRunning a job requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for updates-dynamic-settings-across-org-location" - }, - { - "name": "org-id", - "type": "string", - "usage": "Apply update dynamic device settings for all the devices under this organization.", - "hidden": true - } - ] - }, - { - "path": "webex device device-call upload-background-image", - "short": "Upload a Device Background Image", - "long": "Configure a device's background image by uploading an image with file format, `.jpeg` or `.png`, encoded image file. Maximum image file size allowed to upload is 625 KB.\n\nThe request must be a multipart/form-data request rather than JSON, using the image/jpeg or image/png content-type.\n\nWebex Calling supports the upload of up to 100 background image files for each org. These image files can then be referenced by MPP phones in that org for use as their background image.\n\nUploading a device background image requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`.\n\n**WARNING:** This API is not callable using the developer portal web interface due to the lack of support for multipart POST. This API can be utilized using other tools that support multipart POST, such as Postman.", - "flags": [ - { - "name": "device-id", - "type": "string", - "usage": "Unique identifier for the device.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for upload-background-image" - }, - { - "name": "org-id", - "type": "string", - "usage": "Uploads the image in this organization.", - "hidden": true - } - ] - }, - { - "path": "webex device device-call validate-list-mac-address", - "short": "Validate a list of MAC address", - "long": "Validate a list of MAC addresses.\n\nValidating this list requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_write`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for validate-list-mac-address" - }, - { - "name": "macs", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "org-id", - "type": "string", - "usage": "Validate the mac address(es) for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex device device-configurations", - "short": "DeviceConfigurations commands" - }, - { - "path": "webex device device-configurations list", - "short": "List Device Configurations for device", - "long": "Lists all device configurations associated with the given device ID. Administrators can list configurations for all devices within an organization.", - "flags": [ - { - "name": "device-id", - "type": "string", - "usage": "List device configurations by device ID." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "key", - "type": "string", - "usage": "This can optionally be used to filter configurations. Keys are composed of segments. It's possible to use absolute paths, wildcards or ranges. - **Absolute** gives only one configuration as a result. `Conference.MaxReceiveCallRate` for example gives the Conference `MaxReceiveCallRate` configuration. + **Wildcards** (\\*) can specify multiple configurations with shared segments. `Audio.Ultrasound.*` for example will filter on all Audio Ultrasound configurations. - **Range** ([_number_]) can be used to filter numbered segments. `FacilityService.Service[1].Name` for instance only shows the first `FacilityService` Service Name configuration, `FacilityService.Service[*].Name` shows all, `FacilityService.Service[1..3].Name` shows the first three and `FacilityService.Service[2..n].Name` shows all starting at 2. Note that [RFC 3986 3.2.2](https://www.ietf.org/rfc/rfc3986.html#section-3.2.2) does not allow square brackets in urls outside the host, so to specify range in a configuration key you will need to encode them to %5B for [ and %5D for ]." - } - ] - }, - { - "path": "webex device device-configurations update", - "short": "Update Device Configurations", - "long": "Edit configurations for the device specified by device ID.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "device-id", - "type": "string", - "usage": "Update device configurations by device ID." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "op", - "type": "string" - }, - { - "name": "path", - "type": "string" - } - ] - }, - { - "path": "webex device devices", - "short": "Devices commands" - }, - { - "path": "webex device devices create-activation-code", - "short": "Create a Device Activation Code", - "long": "Generate an activation code for a device in a specific workspace by `workspaceId` or for a person by `personId`. This requires an auth token with the `spark-admin:devices_write` scope, and either `identity:placeonetimepassword_create` (allows creating activation codes for workspaces only) or `identity:one_time_password` (allows creating activation codes for workspaces or persons).\n\n* Adding a device to a workspace with calling type `none` or `thirdPartySipCalling` will reset the workspace calling type to `freeCalling`.\n\n* Either `workspaceId` or `personId` should be provided. If both are supplied, the request will be invalid.\n\n* If no `model` is supplied, the `code` returned will only be accepted on RoomOS devices.\n\n* If your device is a phone, you must provide the `model` as a field. You can get the `model` from the [supported devices](/docs/api/v1/device-call-settings/read-the-list-of-supported-devices) API.\n\n
Adding a device to a person with a Webex Calling Standard license will disable Webex Calling across their Webex mobile, tablet, desktop, and browser applications.

When adding devices to a Webex Calling Professional licensed person or workspace, wait for each API call to finish before starting the next. This prevents race conditions that can cause errors when assigning primary versus secondary device status.
", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-activation-code" - }, - { - "name": "model", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "The organization associated with the activation code generated. If left empty, the organization associated with the caller will be used.", - "hidden": true - }, - { - "name": "person-id", - "type": "string" - }, - { - "name": "workspace-id", - "type": "string" - } - ] - }, - { - "path": "webex device devices create-mac-address", - "short": "Create a Device by MAC Address", - "long": "Create a phone by its MAC address in a specific workspace or for a person.\n\nSpecify the `mac`, `model` and either `workspaceId` or `personId`.\n\n* You can get the `model` from the [supported devices](/docs/api/v1/device-call-settings/read-the-list-of-supported-devices) API.\n\n* Either `workspaceId` or `personId` should be provided. If both are supplied, the request will be invalid.\n\n* The `password` field is only required for third party devices. You can obtain the required third party phone configuration from [here](/docs/api/v1/beta-device-call-settings-with-third-party-device-support/get-third-party-device).\n\n
Adding a device to a person with a Webex Calling Standard license will disable Webex Calling across their Webex mobile, tablet, desktop, and browser applications.

When adding devices to a Webex Calling Professional licensed person or workspace, wait for each API call to finish before starting the next. This prevents race conditions that can cause errors when assigning primary versus secondary device status.
", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-mac-address" - }, - { - "name": "mac", - "type": "string" - }, - { - "name": "model", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "The organization associated with the device. If left empty, the organization associated with the caller will be used.", - "hidden": true - }, - { - "name": "password", - "type": "string" - }, - { - "name": "person-id", - "type": "string" - }, - { - "name": "workspace-id", - "type": "string" - } - ] - }, - { - "path": "webex device devices delete", - "short": "Delete a Device", - "long": "Deletes a device, by ID. Deleting your own device requires an auth token with the `spark:devices_write` scope. Deleting any other device in the organization will require an administrator auth token with the `spark-admin:devices_write` scope.\n\nSpecify the device ID in the `deviceId` parameter in the URI.\n\n
Deleting a device from a person with a Webex Calling Standard license will enable Webex Calling across their Webex mobile, tablet, desktop, and browser applications.
", - "flags": [ - { - "name": "device-id", - "type": "string", - "usage": "A unique identifier for the device.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "org-id", - "type": "string", - "usage": "The organization associated with the device. If left empty, the organization associated with the caller will be used.", - "hidden": true - } - ] - }, - { - "path": "webex device devices get", - "short": "Get Device Details", - "long": "Shows details for a device, by ID. This requires an auth token with the `spark:devices_read` scope to see your own device, or `spark-admin:devices_read` to see any other device in your organization.\n\nSpecify the device ID in the `deviceId` parameter in the URI.", - "flags": [ - { - "name": "device-id", - "type": "string", - "usage": " A unique identifier for the device. ", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "org-id", - "type": "string", - "usage": "The organization associated with the device. If left empty, the organization associated with the caller will be used.", - "hidden": true - } - ] - }, - { - "path": "webex device devices list", - "short": "List Devices", - "long": "Lists all active Webex devices associated with the authenticated user, such as devices activated in personal mode. This requires the `spark:devices_read` scope. Administrators can list all devices within their organization. This requires an administrator auth token with the `spark-admin:devices_read` scope.", - "flags": [ - { - "name": "capability", - "type": "string", - "usage": " List devices with this capability. " - }, - { - "name": "connection-status", - "type": "string", - "usage": " List devices with this connection status. " - }, - { - "name": "device-platform", - "type": "string", - "usage": " List devices with this device platform. " - }, - { - "name": "display-name", - "type": "string", - "usage": " List devices with this display name. " - }, - { - "name": "error-code", - "type": "string", - "usage": " List devices with this error code. " - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "location-id", - "type": "string", - "usage": " List devices by location ID. " - }, - { - "name": "mac", - "type": "string", - "usage": " List devices with this MAC address. " - }, - { - "name": "max", - "type": "string", - "usage": "Limit the maximum number of devices in the response." - }, - { - "name": "org-id", - "type": "string", - "usage": " List devices in this organization. Only admin users of another organization (such as partners) may use this parameter. ", - "hidden": true - }, - { - "name": "permission", - "type": "string", - "usage": " List devices with this permission. " - }, - { - "name": "person-id", - "type": "string", - "usage": " List devices by person ID. " - }, - { - "name": "planned-maintenance", - "type": "string", - "usage": " List devices with this planned maintenance. " - }, - { - "name": "product", - "type": "string", - "usage": " List devices with this product name. " - }, - { - "name": "serial", - "type": "string", - "usage": " List devices with this serial number. " - }, - { - "name": "software", - "type": "string", - "usage": " List devices with this software version. " - }, - { - "name": "start", - "type": "string", - "usage": " Offset. Default is 0. " - }, - { - "name": "tag", - "type": "string", - "usage": " List devices which have a tag. Searching for multiple tags (logical AND) can be done by comma separating the `tag` values or adding several `tag` parameters. " - }, - { - "name": "type", - "type": "string", - "usage": " List devices with this type. " - }, - { - "name": "upgrade-channel", - "type": "string", - "usage": " List devices with this upgrade channel. " - }, - { - "name": "workspace-id", - "type": "string", - "usage": " List devices by workspace ID. " - }, - { - "name": "workspace-location-id", - "type": "string", - "usage": " List devices by workspace location ID. Deprecated, prefer `locationId`. " - } - ] - }, - { - "path": "webex device devices update-tags", - "short": "Modify Device Tags", - "long": "Create, delete or update tags on a device. For your own device, this requires an auth token with the `spark:devices_write` scope. An auth token with the `spark-admin:devices_write` scope is required to operate on other devices within the organization.\n\nSpecify the device ID in the `deviceId` parameter in the URI.\n\nInclude only the tag array in the request body, no other device attributes can be changed. This action will overwrite any previous tags. A common approach is to first [GET the devices's details](/docs/api/v1/devices/get-device-details), make changes to the `tags` array, and then PATCH the new complete array with this endpoint.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "device-id", - "type": "string", - "usage": "Unique identifier for the device.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-tags" - }, - { - "name": "op", - "type": "string" - }, - { - "name": "org-id", - "type": "string", - "usage": "The organization associated with the device. If left empty, the organization associated with the caller will be used.", - "hidden": true - }, - { - "name": "path", - "type": "string" - }, - { - "name": "value", - "type": "stringSlice", - "default": "[]" - } - ] - }, - { - "path": "webex device hot-desk", - "short": "HotDesk commands" - }, - { - "path": "webex device hot-desk delete-session", - "short": "Delete Session", - "long": "Delete a hot desk session.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-session" - }, - { - "name": "session-id", - "type": "string", - "usage": "The unique identifier for the hot desk session.", - "required": true - } - ] - }, - { - "path": "webex device hot-desk list-sessions", - "short": "List Sessions", - "long": "List hot desk sessions.\n\nUse query parameters to filter the response.\nThe `orgId` parameter is for use by partner administrators acting on a managed organization.\nThe `personId` and `workspaceId` parameters are optional and are used to filter the response to only include sessions for a specific person or workspace.\nWhen used together they are used as an AND filter.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-sessions" - }, - { - "name": "org-id", - "type": "string", - "usage": "List sessions in this organization. Only admin users of another organization (such as partners) may use this parameter.", - "hidden": true - }, - { - "name": "person-id", - "type": "string", - "usage": "List sessions for this person." - }, - { - "name": "workspace-id", - "type": "string", - "usage": "List sessions for this workspace." - } - ] - }, - { - "path": "webex device locations", - "short": "Locations commands" - }, - { - "path": "webex device locations create", - "short": "Create a Location", - "long": "Create a new Location for a given organization. Only an admin in the organization can create a new Location.\n\n* Creating a location in your organization requires a full administrator auth token with a scope of `spark-admin:locations_write`.\n\n* Partners may specify `orgId` query parameter to create location in managed organization.\n\n* The following body parameters are required to create a new location: \n * `name`\n * `timeZone`\n * `preferredLanguage`\n * `address`\n * `announcementLanguage`.\n\n* `latitude`, `longitude` and `notes` are optional parameters to create a new location.\n\n* **Important:** While the `name` field supports up to 256 characters, locations that will be enabled for Webex Calling must have names with a maximum of 80 characters. If you plan to enable calling for this location, ensure the name does not exceed 80 characters to maintain compatibility with Control Hub and calling features.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "org-id", - "type": "string", - "usage": "Create a location common attribute for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex device locations create-floor", - "short": "Create a Location Floor", - "long": "Create a new floor in the given location. The `displayName` parameter is optional, and omitting it will result in the creation of a floor without that value set.\nRequires an administrator auth token with the `spark-admin:locations_write` scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "display-name", - "type": "string" - }, - { - "name": "floor-number", - "type": "int64", - "default": "0" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-floor" - }, - { - "name": "location-id", - "type": "string", - "usage": "A unique identifier for the location.", - "required": true - } - ] - }, - { - "path": "webex device locations delete", - "short": "Delete Location", - "long": "Delete a location, by ID.\n\n* Specify the location ID in the `locationId` parameter in the URI.\n\n* Deleting a location in your organization requires a full administrator auth token with a scope of `spark-admin:locations_write`.\n\n* NOTE: Disabling Webex Calling for a Webex Calling enabled location is required prior to deleting a location.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "location-id", - "type": "string", - "usage": "A unique identifier for the location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Specify the organization for the location to be deleted.", - "hidden": true - } - ] - }, - { - "path": "webex device locations delete-floor", - "short": "Delete a Location Floor", - "long": "Deletes a floor, by ID.\nRequires an administrator auth token with the `spark-admin:locations_write` scope.", - "flags": [ - { - "name": "floor-id", - "type": "string", - "usage": "A unique identifier for the floor.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-floor" - }, - { - "name": "location-id", - "type": "string", - "usage": "A unique identifier for the location.", - "required": true - } - ] - }, - { - "path": "webex device locations get", - "short": "Get Location Details", - "long": "Shows details for a location, by ID.\n\n* Specify the location ID in the `locationId` parameter in the URI.\n\n* Use query parameter `orgId` to filter the result set by organization(optional).\n\n* Searching and viewing location in your organization requires an administrator or location administrator auth token with any of the following scopes:\n\n * `spark-admin:locations_read`\n * `spark-admin:people_read`\n * `spark-admin:device_read`", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "location-id", - "type": "string", - "usage": "A unique identifier for the location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Get location common attributes for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex device locations get-floor", - "short": "Get Location Floor Details", - "long": "Shows details for a floor, by ID. Specify the floor ID in the `floorId` parameter in the URI.\nRequires an administrator auth token with the `spark-admin:locations_read` scope.", - "flags": [ - { - "name": "floor-id", - "type": "string", - "usage": "A unique identifier for the floor.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-floor" - }, - { - "name": "location-id", - "type": "string", - "usage": "A unique identifier for the location.", - "required": true - } - ] - }, - { - "path": "webex device locations list", - "short": "List Locations", - "long": "List locations for an organization.\n\n* Use query parameters to filter the result set by location name, ID, or organization.\n\n* Long result sets will be split into [pages](/docs/basics#pagination).\n\n* Searching and viewing locations in your organization requires an administrator or location administrator auth token with any of the following scopes: `spark-admin:locations_read`, `spark-admin:people_read` or `spark-admin:device_read`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "id", - "type": "string", - "usage": "List locations by ID." - }, - { - "name": "max", - "type": "string", - "usage": "Limit the maximum number of location in the response." - }, - { - "name": "name", - "type": "string", - "usage": "List locations whose name contains this string (case-insensitive)." - }, - { - "name": "org-id", - "type": "string", - "usage": "List locations in this organization. Only admin users of another organization (such as partners) may use this parameter.", - "hidden": true - } - ] - }, - { - "path": "webex device locations list-floors", - "short": "List Location Floors", - "long": "List location floors.\nRequires an administrator auth token with the `spark-admin:locations_read` scope.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-floors" - }, - { - "name": "location-id", - "type": "string", - "usage": "A unique identifier for the location.", - "required": true - } - ] - }, - { - "path": "webex device locations update", - "short": "Update a Location", - "long": "Update details for a location, by ID.\n\n* Updating a location in your organization requires a full administrator or location administrator auth token with a scope of `spark-admin:locations_write`.\n\n* Specify the location ID in the `locationId` parameter in the URI.\n\n* Partners may specify `orgId` query parameter to update location in managed organization.\n\n* **Important:** While the `name` field supports up to 256 characters, locations that are enabled for Webex Calling must have names with a maximum of 80 characters. If the location is enabled for calling, ensure the name does not exceed 80 characters to maintain compatibility with Control Hub and calling features.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "location-id", - "type": "string", - "usage": "Update location common attributes for this location.", - "required": true - }, - { - "name": "org-id", - "type": "string", - "usage": "Update location common attributes for this organization.", - "hidden": true - } - ] - }, - { - "path": "webex device locations update-floor", - "short": "Update a Location Floor", - "long": "Updates details for a floor, by ID. Specify the floor ID in the `floorId` parameter in the URI. Include all details for the floor returned by a previous call to [Get Location Floor Details](/docs/api/v1/locations/get-location-floor-details). Omitting the optional `displayName` field will result in that field no longer being defined for the floor.\nRequires an administrator auth token with the `spark-admin:locations_write` scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "display-name", - "type": "string" - }, - { - "name": "floor-id", - "type": "string", - "usage": "A unique identifier for the floor.", - "required": true - }, - { - "name": "floor-number", - "type": "int64", - "default": "0" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-floor" - }, - { - "name": "location-id", - "type": "string", - "usage": "A unique identifier for the location.", - "required": true - } - ] - }, - { - "path": "webex device workspace-locations", - "short": "WorkspaceLocations commands" - }, - { - "path": "webex device workspace-locations create", - "short": "Create a Workspace Location", - "long": "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nCreate a location. The `cityName` and `notes` parameters are optional, and omitting them will result in the creation of a location without values for those attributes.\nRequires an administrator auth token with the `spark-admin:workspace_locations_write` scope.", - "flags": [ - { - "name": "address", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "city-name", - "type": "string" - }, - { - "name": "country-code", - "type": "string" - }, - { - "name": "display-name", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "latitude", - "type": "int64", - "default": "0" - }, - { - "name": "longitude", - "type": "int64", - "default": "0" - }, - { - "name": "notes", - "type": "string" - } - ] - }, - { - "path": "webex device workspace-locations create-floor", - "short": "Create a Workspace Location Floor", - "long": "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nCreate a new floor in the given location. The `displayName` parameter is optional, and omitting it will result in the creation of a floor without that value set.\nRequires an administrator auth token with the `spark-admin:workspace_locations_write` scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "display-name", - "type": "string" - }, - { - "name": "floor-number", - "type": "int64", - "default": "0" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-floor" - }, - { - "name": "location-id", - "type": "string", - "usage": "A unique identifier for the location.", - "required": true - } - ] - }, - { - "path": "webex device workspace-locations delete", - "short": "Delete a Workspace Location", - "long": "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nDeletes a location, by ID. The workspaces associated to that location will no longer have a location, but a new location can be reassigned to them.\nRequires an administrator auth token with the `spark-admin:workspace_locations_write` scope.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "location-id", - "type": "string", - "usage": "A unique identifier for the location.", - "required": true - } - ] - }, - { - "path": "webex device workspace-locations delete-floor", - "short": "Delete a Workspace Location Floor", - "long": "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nDeletes a floor, by ID.\nRequires an administrator auth token with the `spark-admin:workspace_locations_write` scope.", - "flags": [ - { - "name": "floor-id", - "type": "string", - "usage": "A unique identifier for the floor.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-floor" - }, - { - "name": "location-id", - "type": "string", - "usage": "A unique identifier for the location.", - "required": true - } - ] - }, - { - "path": "webex device workspace-locations get", - "short": "Get a Workspace Location Details", - "long": "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nShows details for a location, by ID. Specify the location ID in the `locationId` parameter in the URI.\nRequires an administrator auth token with the `spark-admin:workspace_locations_read` scope.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "location-id", - "type": "string", - "usage": "A unique identifier for the location.", - "required": true - } - ] - }, - { - "path": "webex device workspace-locations get-floor", - "short": "Get a Workspace Location Floor Details", - "long": "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nShows details for a floor, by ID. Specify the floor ID in the `floorId` parameter in the URI.\nRequires an administrator auth token with the `spark-admin:workspace_locations_read` scope.", - "flags": [ - { - "name": "floor-id", - "type": "string", - "usage": "A unique identifier for the floor.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-floor" - }, - { - "name": "location-id", - "type": "string", - "usage": "A unique identifier for the location.", - "required": true - } - ] - }, - { - "path": "webex device workspace-locations list", - "short": "List Workspace Locations", - "long": "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nList workspace locations. Use query parameters to filter the response. The `orgId` parameter can only be used by admin users of another\norganization (such as partners). The `displayName`, `address`, `countryCode` and `cityName` parameters are all optional.\nRequires an administrator auth token with the `spark-admin:workspace_locations_read` scope.", - "flags": [ - { - "name": "address", - "type": "string", - "usage": "Location address." - }, - { - "name": "city-name", - "type": "string", - "usage": "Location city name." - }, - { - "name": "country-code", - "type": "string", - "usage": "Location country code (ISO 3166-1)." - }, - { - "name": "display-name", - "type": "string", - "usage": "Location display name." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "org-id", - "type": "string", - "usage": "List workspace locations in this organization. Only admin users of another organization (such as partners) may use this parameter.", - "hidden": true - } - ] - }, - { - "path": "webex device workspace-locations list-floors", - "short": "List Workspace Location Floors", - "long": "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nList workspace location floors.\nRequires an administrator auth token with the `spark-admin:workspace_locations_read` scope.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-floors" - }, - { - "name": "location-id", - "type": "string", - "usage": "A unique identifier for the location.", - "required": true - } - ] - }, - { - "path": "webex device workspace-locations update", - "short": "Update a Workspace Location", - "long": "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nUpdates details for a location, by ID. Specify the location ID in the `locationId` parameter in the URI. The request should include all details for the location returned in a previous call to [Get Workspace Location Details](/docs/api/v1/workspace-locations/get-a-workspace-location-details). Omitting the optional `cityName` or `notes` fields will result in those fields no longer being defined for the location.\nRequires an administrator auth token with the `spark-admin:workspace_locations_write` scope.", - "flags": [ - { - "name": "address", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "city-name", - "type": "string" - }, - { - "name": "country-code", - "type": "string" - }, - { - "name": "display-name", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "id", - "type": "string" - }, - { - "name": "latitude", - "type": "int64", - "default": "0" - }, - { - "name": "location-id", - "type": "string", - "usage": "A unique identifier for the location.", - "required": true - }, - { - "name": "longitude", - "type": "int64", - "default": "0" - }, - { - "name": "notes", - "type": "string" - } - ] - }, - { - "path": "webex device workspace-locations update-floor", - "short": "Update a Workspace Location Floor", - "long": "
The Workspace Locations API is deprecated and will be decommissioned November 30, 2024. Please use the [/locations API](/docs/api/v1/locations) for future projects, and use `locationId` instead of `workspaceLocationId` when interacting with device or workspace APIs.
\n\nUpdates details for a floor, by ID. Specify the floor ID in the `floorId` parameter in the URI. Include all details for the floor returned by a previous call to [Get Workspace Location Floor Details](/docs/api/v1/workspace-locations/get-a-workspace-location-details). Omitting the optional `displayName` field will result in that field no longer being defined for the floor.\nRequires an administrator auth token with the `spark-admin:workspace_locations_write` scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "display-name", - "type": "string" - }, - { - "name": "floor-id", - "type": "string", - "usage": "A unique identifier for the floor.", - "required": true - }, - { - "name": "floor-number", - "type": "int64", - "default": "0" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-floor" - }, - { - "name": "location-id", - "type": "string", - "usage": "A unique identifier for the location.", - "required": true - } - ] - }, - { - "path": "webex device workspace-metrics", - "short": "WorkspaceMetrics commands" - }, - { - "path": "webex device workspace-metrics duration", - "short": "Workspace Duration Metrics", - "long": "Get metrics for how much time a workspace has been in the state given by the `measurement` parameter.\n\nFor example, if the measurement is `timeBooked` then the duration for which the workspace has been booked is returned. The `workspaceId` parameter indicates which workspace to fetch metrics for. If no `measurement` is given, the default value is `timeUsed`.\n\n* When executing a query, the result bucket start times will default to the start of an hour or a day, depending on\nthe aggregation interval. However, the buckets will not contain data from outside the requested time range. For example, when\npassing `from=2020-10-21T10:34:56.000Z` and `aggregation=hourly`, the first output bucket would start at `2020-10-21T10:00:00.000Z`,\nbut the bucket would only aggregate data timestamped after `10:34:56`.\n\n* For aggregation mode `hourly`, the maximum time span is 48 hours. For aggregation mode `daily`, the maximum\ntime span is 30 days.", - "flags": [ - { - "name": "aggregation", - "type": "string", - "usage": "Unit of time over which to aggregate measurements." - }, - { - "name": "from", - "type": "string", - "usage": "Include data points after a specific date and time (ISO 8601 timestamp)." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for duration" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "measurement", - "type": "string", - "usage": "The measurement to return duration for." - }, - { - "name": "to", - "type": "string", - "usage": "Include data points before a specific date and time (ISO 8601 timestamp)." - }, - { - "name": "workspace-id", - "type": "string", - "usage": "ID of the workspace to get metrics for." - } - ] - }, - { - "path": "webex device workspace-metrics workspace-metrics", - "short": "Workspace Metrics", - "long": "Get metric data for the specified workspace and metric name, optionally aggregated over a specified time period.\n\n* The `workspaceId` and `metricName` parameters indicate which workspace to fetch metrics for and what kind of metrics to get.\n\n* When executing an aggregated query, the result bucket start times will be truncated to the start of an hour or a day, depending on\nthe aggregation interval. However, the buckets will not contain data from outside the requested time range. For example, when\npassing `from=2020-10-21T10:34:56.000Z` and `aggregation=hourly`, the first output bucket would start at `2020-10-21T10:00:00.000Z`,\nbut the bucket would only aggregate data timestamped after `10:34:56`.\n\n* For aggregation modes `none` and `hourly`, the maximum time span is 48 hours. For aggregation mode `daily`, the maximum\ntime span is 30 days.\n\n* If the aggregation mode query parameter is set to `none`, the returned data in the response will be an array of items with the `deviceId`, `timestamp` and the raw `value`.\n\n* If the aggregation mode is `hourly` or `daily`, the returned data in the response will be an array of items with the `start` and `end` of the aggregation time bucket, and the `mean`, `max` and `min` values of the requested value. Note that zeroes and negative values are ignored. For example, this means that the `peopleCount` mean value should be interpreted as the average number of people in the room _when it is in use_.", - "flags": [ - { - "name": "aggregation", - "type": "string", - "usage": "Time unit over which to aggregate measurements." - }, - { - "name": "from", - "type": "string", - "usage": "List only data points after a specific date and time (ISO 8601 timestamp)" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for workspace-metrics" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "metric-name", - "type": "string", - "usage": "The type of data to extract." - }, - { - "name": "sort-by", - "type": "string", - "usage": "Sort results." - }, - { - "name": "to", - "type": "string", - "usage": "List data points before a specific date and time (ISO 8601 timestamp)" - }, - { - "name": "unit", - "type": "string", - "usage": "Output data unit (only a valid parameter if `metricName` is `temperature`)." - }, - { - "name": "workspace-id", - "type": "string", - "usage": "ID of the workspace to get metrics for." - } - ] - }, - { - "path": "webex device workspace-personalization", - "short": "WorkspacePersonalization commands" - }, - { - "path": "webex device workspace-personalization get-task", - "short": "Get Personalization Task", - "long": "Returns the status of a personalization task for a given workspace.\n\nWhilst in progress the endpoint will return `Accepted` and provide a `Retry-After` header indicating the number of seconds a client should wait before retrying.\n\nUpon completion of the task, the endpoint will return `OK` with a body detailing if the personalization was successful and an error description if appropriate.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-task" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "A unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex device workspace-personalization personalize", - "short": "Personalize a Workspace", - "long": "Initializes the personalization for a given workspace for the user email provided.\n\nThe personalization process is asynchronous and thus a background task is created when this endpoint is invoked.\nAfter successful invocation of this endpoint a personalization task status URL will be returned in the `Location` header, which will point to the [Get Personalization Task](/docs/api/v1/workspace-personalization/get-personalization-task) endpoint for this workspace.\nThe task should be completed in approximately 30 seconds.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "email", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for personalize" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "A unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex device workspaces", - "short": "Workspaces commands" - }, - { - "path": "webex device workspaces create", - "short": "Create a Workspace", - "long": "Create a workspace.\n\nThe `locationId`, `workspaceLocationId`, `floorId`, `indoorNavigation`, `capacity`, `type`, `notes` and `hotdeskingStatus` parameters are optional, and omitting them will result in the creation of a workspace without these values set, or set to their default. A `locationId` must be provided when the `floorId` is set. Calendar and calling can also be set for a new workspace. Omitting them will default to free calling and no calendaring. The `orgId` parameter can only be used by admin users of another organization (such as partners).\n\n* Information for Webex Calling fields may be found here: [locations](/docs/api/v1/locations/list-locations), [available numbers](/docs/api/v1/numbers/get-phone-numbers-for-an-organization-with-given-criterias) and [licenses](/docs/api/v1/licenses).\n\n* The `locationId` and `supportedDevices` fields cannot be changed once configured.\n\n* When creating a `webexCalling` workspace that is not hot desk only, a `locationId` and either a `phoneNumber` or `extension` or both is required. Furthermore, it is possible to set the `licenses` field with a list of Webex Calling license IDs, if desired. If multiple license IDs are provided, the oldest suitable one will be applied. If no licenses are supplied, the oldest suitable one from the active subscriptions will be automaticaly applied.\n\n* When creating a hot desk only workspace, `phoneNumber` and `extension` fields are not applicable. Furthermore, `deviceHostedMeetingsEnabled`, and `calendar` services are not applicable. If any of these fields are provided the API will return an error. The `calling` type is `webexCalling`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - } - ] - }, - { - "path": "webex device workspaces delete", - "short": "Delete a Workspace", - "long": "Deletes a workspace by ID.\n\nAlso deletes all devices associated with the workspace. Any deleted devices will need to be reactivated. Specify the workspace ID in the `workspaceId` parameter in the URI.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "A unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex device workspaces get", - "short": "Get Workspace Details", - "long": "Shows details for a workspace, by ID.\n\nThe `locationId`, `workspaceLocationId`, `floorId`, `indoorNavigation`, `capacity`, `type` and `notes` fields will only be present if they have been set for the workspace. Specify the workspace ID in the `workspaceId` parameter in the URI.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "include-devices", - "type": "string", - "usage": "Flag identifying whether to include the devices associated with the workspace in the response." - }, - { - "name": "workspace-id", - "type": "string", - "usage": "(Required) A unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex device workspaces get-2", - "short": "Get Workspace Details", - "long": "Shows details for a workspace, by ID.\n\nThe `locationId`, `workspaceLocationId`, `floorId`, `indoorNavigation`, `capacity`, `type` and `notes` fields will only be present if they have been set for the workspace. Specify the workspace ID in the `workspaceId` parameter in the URI.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-2" - }, - { - "name": "include-capabilities", - "type": "string", - "usage": "Flag identifying whether to include the workspace capabilities in the response." - }, - { - "name": "include-devices", - "type": "string", - "usage": "Flag identifying whether to include the devices associated with the workspace in the response." - }, - { - "name": "workspace-id", - "type": "string", - "usage": "A unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex device workspaces get-capabilities", - "short": "Get Workspace Capabilities", - "long": "Shows the capabilities for a workspace by ID.\n\nReturns a set of capabilities, including whether or not the capability is supported by any device in the workspace, and if the capability is configured (enabled). For example for a specific capability like `occupancyDetection`, the API will return if the capability is supported and/or configured such that occupancy detection data will flow from the workspace (device) to the cloud. Specify the workspace ID in the `workspaceId` parameter in the URI.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-capabilities" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "A unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex device workspaces list", - "short": "List Workspaces", - "long": "List workspaces.\n\nUse query parameters to filter the response. The `orgId` parameter can only be used by admin users of another organization (such as partners). The `locationId`, `workspaceLocationId`, `indoorNavigation`, `floorId`, `capacity` and `type` fields will only be present for workspaces that have a value set for them. The special values `notSet` (for filtering on category) and `-1` (for filtering on capacity) can be used to filter for workspaces without a type and/or capacity.", - "flags": [ - { - "name": "calendar", - "type": "string", - "usage": "List workspaces by calendar type." - }, - { - "name": "calling", - "type": "string", - "usage": "List workspaces by calling type." - }, - { - "name": "capacity", - "type": "string", - "usage": "List workspaces with the given capacity. Must be -1 or higher. A value of -1 lists workspaces with no capacity set." - }, - { - "name": "custom-attribute", - "type": "string", - "usage": "List workspaces with given custom attribute key." - }, - { - "name": "device-hosted-meetings-enabled", - "type": "string", - "usage": "List workspaces enabled for device hosted meetings." - }, - { - "name": "device-platform", - "type": "string", - "usage": "List workspaces by device platform." - }, - { - "name": "display-name", - "type": "string", - "usage": "List workspaces by display name." - }, - { - "name": "floor-id", - "type": "string", - "usage": "Floor associated with the workspace." - }, - { - "name": "health-level", - "type": "string", - "usage": "List workspaces by health level." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "include-capabilities", - "type": "string", - "usage": "Flag identifying whether to include the workspace capabilities in the response." - }, - { - "name": "include-devices", - "type": "string", - "usage": "Flag identifying whether to include the devices associated with the workspace in the response." - }, - { - "name": "location-id", - "type": "string", - "usage": "Location associated with the workspace. Values must originate from the /locations API and not the legacy /workspaceLocations API." - }, - { - "name": "max", - "type": "string", - "usage": "Limit the maximum number of workspaces in the response." - }, - { - "name": "org-id", - "type": "string", - "usage": "List workspaces in this organization. Only admin users of another organization (such as partners) may use this parameter.", - "hidden": true - }, - { - "name": "planned-maintenance", - "type": "string", - "usage": "List workspaces with given maintenance mode." - }, - { - "name": "start", - "type": "string", - "usage": "Offset. Default is 0." - }, - { - "name": "supported-devices", - "type": "string", - "usage": "List workspaces by supported devices." - }, - { - "name": "type", - "type": "string", - "usage": "List workspaces by type." - }, - { - "name": "workspace-location-id", - "type": "string", - "usage": "Location associated with the workspace. Both values from the /locations API and the legacy /workspaceLocations API are supported. This field is deprecated and integrations should prefer `locationId` going forward." - } - ] - }, - { - "path": "webex device workspaces update", - "short": "Update a Workspace", - "long": "Updates details for a workspace by ID.\n\nSpecify the workspace ID in the `workspaceId` parameter in the URI. Include all details for the workspace that are present in a [GET request for the workspace details](/docs/api/v1/workspaces/get-workspace-details). Not including the optional `capacity`, `type` or `notes` fields will result in the fields no longer being defined for the workspace. A `locationId` must be provided when the `floorId` is set. The `locationId`, `workspaceLocationId`, `floorId`, `supportedDevices`, `calendar` and `calling` fields do not change when omitted from the update request.\n\n* Information for Webex Calling fields may be found here: [locations](/docs/api/v1/locations/list-locations) and [available numbers](/docs/api/v1/numbers/get-phone-numbers-for-an-organization-with-given-criterias).\n\n* Updating the `calling` parameter is only supported if the existing `calling` type is `freeCalling`, `none`, `thirdPartySipCalling` or `webexCalling`.\n\n* Updating the `calling` parameter to `none`, `thirdPartySipCalling` or `webexCalling` is not supported if the workspace contains any devices.\n\n* The `locationId` and `supportedDevices` fields cannot be changed once configured.\n\n* When updating `webexCalling` information on a workspace that is not hot desk only, a `locationId` and either a `phoneNumber` or `extension` or both is required. Furthermore, the `licenses` field can be set with a list of Webex Calling license IDs, if desired. If multiple license IDs are provided, the oldest suitable one will be applied. If a previously applied license ID is omitted, it will be replaced with one from the list provided. If the `licenses` field is omitted, the current calling license will be retained.\n\n* When specifying a hot desk only license on a hot desk only workspace, `deviceHostedMeetingsEnabled`, and `calendar` services are not supported and will be automatically disabled. In addition to this, the `phoneNumber` and `extension` will be removed from the workspace. Attempting to enable any of these services, or provide a `phoneNumber` or `extension` will result in an error. The `calling` type for these requests is `webexCalling`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "workspace-id", - "type": "string", - "usage": "A unique identifier for the workspace.", - "required": true - } - ] - }, - { - "path": "webex device xapi", - "short": "Xapi commands" - }, - { - "path": "webex device xapi execute-command", - "short": "Execute Command", - "long": "Executes a command on the Webex RoomOS Device. Specify the command to execute in the `commandName` URI parameter.\n\nSee the [xAPI section of the Device Developers Guide](/docs/devices#xapi) for a description of command expressions.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "command-name", - "type": "string", - "usage": "Command to execute on the Webex RoomOS Device.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for execute-command" - } - ] - }, - { - "path": "webex device xapi query-schema", - "short": "Query Schema", - "long": "Query the schema for statuses and commands of Webex RoomOS Devices. You specify the target devices in the `deviceId` parameter in the URI. Querying command schemas requires the `spark:xapi_commands` scope and querying status schemas requires the `spark:xapi_statuses` scope.\n\nIf no `status` or `command` expressions are specified, the full schema is returned, including both status and command schemas. If you specify any expression, the response is limited to only the types you queried for. For example, if you provide a `status` expression but no `command` expression, only status schemas will be included in the result.\n\nSee the [xAPI section of the Device Developers Guide](/docs/api/guides/device-developers-guide#xapi) or the [xAPI Command Reference](https://roomos.cisco.com/xapi) for a description of status and command expressions.", - "flags": [ - { - "name": "command", - "type": "string", - "usage": "A list of command key expressions to query schemas for. Supports patterns. Requires the `spark:xapi_commands` scope." - }, - { - "name": "device-id", - "type": "string", - "usage": "A list of device IDs to query schemas from. A request can contain at most 5 device IDs." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for query-schema" - }, - { - "name": "status", - "type": "string", - "usage": "A list of status key expressions to query schemas for. Supports patterns. Requires the `spark:xapi_statuses` scope." - } - ] - }, - { - "path": "webex device xapi query-status", - "short": "Query Status", - "long": "Query the current status of the Webex RoomOS Device. You specify the target device in the `deviceId` parameter in the URI. The target device is queried for statuses according to the expression in the `name` parameter.\n\nSee the [xAPI section of the Device Developers Guide](/docs/api/guides/device-developers-guide#xapi) or the [xAPI Command Reference](https://roomos.cisco.com/xapi) for a description of status expressions.", - "flags": [ - { - "name": "device-id", - "type": "string", - "usage": "The unique identifier for the Webex RoomOS Device." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for query-status" - }, - { - "name": "name", - "type": "string", - "usage": "A list of status expressions used to query the Webex RoomOS Device. See the [xAPI section of the Device Developers Guide](/docs/api/guides/device-developers-guide#xapi) for a description of status expressions. A request can contain at most 10 different status expressions." - } - ] - }, - { - "path": "webex help", - "short": "Help about any command", - "long": "Help provides help for any command in the application.\nSimply type webex help [path to command] for full details." - }, - { - "path": "webex login", - "short": "Log in to Webex via OAuth", - "long": "Logs in to Webex with OAuth and stores the tokens for the authenticated user.\n\nOn a desktop, login opens a browser. With --device, or automatically over SSH,\nin CI, on Linux without a display, or when no browser can be opened, login\nprints a URL and a code to approve from any browser instead. Set\n$WEBEX_LOGIN_MODE=device or =browser to choose the flow without a flag.\nWith --output json, the device code is printed as JSON on stdout.\n\nTokens are stored in the OS keyring. When no keyring is available they are\nstored in plain text in `~/.config/webex-cli/credentials.json` (mode 0600);\nset $WEBEX_TOKEN_STORE=keyring or =file to choose the store.\n\nWith --read-only, the login requests only read scopes and turns on read-only\nmode: stored logins with write access are deleted, write requests are refused,\nand only read-only logins can be used. Leaving read-only mode requires a plain\n'webex login' from an interactive terminal.", - "flags": [ - { - "name": "browser", - "type": "bool", - "default": "false", - "usage": "Force the local browser login even when no browser is detected" - }, - { - "name": "device", - "type": "bool", - "default": "false", - "usage": "Log in with a code approved from any browser (no local browser needed)" - }, - { - "name": "read-only", - "type": "bool", - "default": "false", - "usage": "Log in with read-only scopes and turn on read-only mode" - } - ] - }, - { - "path": "webex logout", - "short": "Log out and remove stored credentials", - "long": "Removes stored tokens from the OS keyring and the credentials file. Without arguments, removes the default user. Specify an email to remove a specific user, or --all to remove all users and any tokens cached from $WEBEX_REFRESH_TOKEN.", - "flags": [ - { - "name": "all", - "type": "bool", - "default": "false", - "usage": "Remove all stored users and tokens" - } - ] - }, - { - "path": "webex mcp", - "short": "MCP server integration", - "long": "Commands for integrating with MCP-compatible AI clients (Claude Code, etc.)." - }, - { - "path": "webex mcp serve", - "short": "Start an MCP server exposing Webex tools to AI clients", - "long": "Start a Model Context Protocol (MCP) server.\n\nDefaults to stdio transport (Claude Code, Codex, Cursor):\n webex mcp serve\n\nUse --http for HTTP transport (Claude Desktop and other HTTP-based clients):\n webex mcp serve --http\n\nThe HTTP server binds to loopback only and cannot be exposed on public interfaces.\nUse 'webex mcp stop' to stop a running HTTP server.\n\nAuthentication is shared with the CLI — run 'webex login' once and the server\nuses the same stored credentials with automatic token refresh.\n\nTools:\n webex_read Execute a read-only CLI command (list, get, download, export)\n webex_write Execute a command that creates, updates, or deletes a resource\n webex_help Get help text for any command or command group\n webex_usage Query the MCP usage log (recent commands, timing)\n\nIn read-only mode (webex login --read-only, or WEBEX_READ_ONLY=1) the server\ndoes not register webex_write.\n\nResources:\n webex://commands JSON array of all available CLI commands\n webex://usage Last 50 lines of the raw usage log\n\nHTTP transport flags:\n --http Enable HTTP transport instead of stdio\n --http-addr Listen address — must be loopback (default 127.0.0.1:47890)\n\nUsage log flags:\n --log-path Path for the usage log (default ~/.webex-mcp/usage.log)\n --log-max-size Max log file size in bytes before rotation (default 5MB)\n --log-max-files Number of rotated log files to keep (default 3)", - "flags": [ - { - "name": "http", - "type": "bool", - "default": "false", - "usage": "Start HTTP server instead of stdio transport" - }, - { - "name": "http-addr", - "type": "string", - "default": "127.0.0.1:47890", - "usage": "HTTP listen address — must be loopback (used with --http)" - }, - { - "name": "log-max-files", - "type": "int", - "default": "3", - "usage": "Number of rotated log files to keep" - }, - { - "name": "log-max-size", - "type": "int64", - "default": "5242880", - "usage": "Max log file size in bytes before rotation" - }, - { - "name": "log-path", - "type": "string", - "usage": "Usage log path (default ~/.webex-mcp/usage.log)" - } - ] - }, - { - "path": "webex mcp stop", - "short": "Stop a running HTTP MCP server", - "long": "Stop a running 'webex mcp serve --http' server.\n\nReads the PID from ~/.webex-mcp/server.pid, sends SIGTERM, and the server\nshuts down gracefully. The PID file is removed automatically on shutdown." - }, - { - "path": "webex meetings", - "aliases": [ - "meeting" - ], - "short": "Webex Meetings APIs", - "long": "Manage Webex Meetings — scheduling, participants, recordings, and more." - }, - { - "path": "webex meetings chats", - "short": "Chats commands" - }, - { - "path": "webex meetings chats delete-meeting", - "short": "Delete Meeting Chats", - "long": "Deletes the meeting chats of a finished [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) specified by `meetingId`.\n\nUse this operation to delete the chats of a finished [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) when they are ready. Please note that only **meeting instances** in state `ended` are supported for `meetingId`. **Meeting series**, **scheduled meetings** and `in-progress` **meeting instances** are not supported.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-meeting" - }, - { - "name": "meeting-id", - "type": "string", - "usage": "A unique identifier for the [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) to which the chats belong. Meeting IDs of a scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meeting are not supported." - } - ] - }, - { - "path": "webex meetings chats list-meeting", - "short": "List Meeting Chats", - "long": "Lists the meeting chats of a finished [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) specified by `meetingId`. You can set a maximum number of chats to return.\n\nUse this operation to list the chats of a finished [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) when they are ready. Please note that only **meeting instances** in state `ended` are supported for `meetingId`. **Meeting series**, **scheduled meetings** and `in-progress` **meeting instances** are not supported.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-meeting" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the maximum number of meeting chats in the response, up to 100." - }, - { - "name": "meeting-id", - "type": "string", - "usage": "A unique identifier for the [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) to which the chats belong. The meeting ID of a scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meeting is not supported." - }, - { - "name": "offset", - "type": "string", - "usage": "Offset from the first result that you want to fetch." - } - ] - }, - { - "path": "webex meetings closed-captions", - "short": "ClosedCaptions commands" - }, - { - "path": "webex meetings closed-captions download-meeting-snippets", - "short": "Download Meeting Closed Caption Snippets", - "long": "Download meeting closed caption snippets from the meeting closed caption specified by `closedCaptionId` formatted either as a Video Text Track (.vtt) file or plain text (.txt) file.\n\n#### Request Header\n\n* `timezone`: *[Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) for time stamps in response body, defined in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default value is `UTC` if not specified.*", - "flags": [ - { - "name": "closed-caption-id", - "type": "string", - "usage": "Unique identifier for the meeting closed caption.", - "required": true - }, - { - "name": "format", - "type": "string", - "usage": "Format for the downloaded meeting closed caption snippets." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for download-meeting-snippets" - }, - { - "name": "meeting-id", - "type": "string", - "usage": "Unique identifier for the [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) which the closed caption snippets belong to. This parameter only applies to meeting instances in the `ended` state. It does not apply to meeting series, scheduled meetings or scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meetings." - }, - { - "name": "timezone", - "type": "string", - "usage": "e.g. UTC" - } - ] - }, - { - "path": "webex meetings closed-captions list-meeting", - "short": "List Meeting Closed Captions", - "long": "Lists closed captions of a finished [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) specified by `meetingId`.\n\n* Closed captions are ready 15 minutes after the meeting is finished.\n\n* Only **meeting instances** in state `ended` are supported for `meetingId`. **Meeting series**, **scheduled meetings** and `in-progress` **meeting instances** are not supported.\n\n* Currently, a meeting may have only one closed caption associated with its `meetingId`. The response is a closed captions array, which may contain multiple values to allow for future expansion, but currently only one closed caption is included in the response.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-meeting" - }, - { - "name": "meeting-id", - "type": "string", - "usage": "Unique identifier for the [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) which the closed captions belong to. This parameter only applies to ended meeting instances. It does not apply to meeting series, scheduled meetings or scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meetings." - } - ] - }, - { - "path": "webex meetings closed-captions list-meeting-snippets", - "short": "List Meeting Closed Caption Snippets", - "long": "Lists snippets of a meeting closed caption specified by `closedCaptionId`.", - "flags": [ - { - "name": "closed-caption-id", - "type": "string", - "usage": "Unique identifier for the meeting closed caption which the snippets belong to.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-meeting-snippets" - }, - { - "name": "meeting-id", - "type": "string", - "usage": "Unique identifier for the [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) which the closed caption snippets belong to. This parameter only applies to ended meeting instances. It does not apply to meeting series, scheduled meetings or scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meetings." - } - ] - }, - { - "path": "webex meetings invitees", - "short": "Invitees commands" - }, - { - "path": "webex meetings invitees create-meeting", - "short": "Create a Meeting Invitee", - "long": "* Invite a person to attend a meeting.\n\n* Identify the invitee in the request body, by email address.\n\n* The `sendEmail` parameter is `true` by default and the meeting emails will be sent to the invitee's `email`. Please set `sendEmail` to `false` to prevent the invitee from receiving emails.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "co-host", - "type": "bool", - "default": "false" - }, - { - "name": "display-name", - "type": "string" - }, - { - "name": "email", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-meeting" - }, - { - "name": "host-email", - "type": "string" - }, - { - "name": "meeting-id", - "type": "string" - }, - { - "name": "panelist", - "type": "bool", - "default": "false" - }, - { - "name": "send-email", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex meetings invitees create-meeting-2", - "short": "Create Meeting Invitees", - "long": "* Invite people to attend a meeting in bulk.\n\n* Identify each invitee by the email address of each item in the `items` of the request body.\n\n* Each invitee should have a unique `email`.\n\n* This API limits the maximum size of `items` in the request body to 100.\n\n* The `sendEmail` parameter for each invitee is `true` by default and the meeting emails will be sent to the invitee's `email`. Please set `sendEmail` to `false` to prevent an invitee from receiving emails.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-meeting-2" - } - ] - }, - { - "path": "webex meetings invitees delete-meeting", - "short": "Delete a Meeting Invitee", - "long": "Removes a meeting invitee identified by a `meetingInviteeId` specified in the URI. The deleted meeting invitee cannot be recovered.\n\nIf the meeting invitee is associated with a meeting series, the invitee will be removed from the entire meeting series. If the invitee is associated with a scheduled meeting, the invitee will be removed from only that scheduled meeting.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-meeting" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin on-behalf-of scopes. If set, the admin may specify the email of a user in a site they manage and the API will delete a meeting invitee that is hosted by that user." - }, - { - "name": "meeting-invitee-id", - "type": "string", - "usage": "Unique identifier for the invitee to be removed. This parameter only applies to an invitee to a meeting series or a scheduled meeting. It doesn't apply to an invitee to an ended or ongoing meeting instance.", - "required": true - }, - { - "name": "send-email", - "type": "string", - "usage": "If `true`, send an email to the invitee." - } - ] - }, - { - "path": "webex meetings invitees get-meeting", - "short": "Get a Meeting Invitee", - "long": "Retrieve details for a meeting invitee identified by a `meetingInviteeId` in the URI.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-meeting" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin on-behalf-of scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for a meeting invitee that is hosted by that user." - }, - { - "name": "meeting-invitee-id", - "type": "string", - "usage": "Unique identifier for the invitee whose details are being requested.", - "required": true - } - ] - }, - { - "path": "webex meetings invitees list-meeting", - "short": "List Meeting Invitees", - "long": "Lists meeting invitees for a meeting with a specified `meetingId`. You can set a maximum number of invitees to return.\n\nThis operation can be used for meeting series, scheduled meetings, and ended or ongoing meeting instance objects. If the specified `meetingId` is for a meeting series, the invitees for the series will be listed; if the `meetingId` is for a scheduled meeting, the invitees for the particular scheduled meeting will be listed; if the `meetingId` is for an ended or ongoing meeting instance, the invitees for the particular meeting instance will be listed. See the [Webex Meetings](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) guide for more information about the types of meetings.\n\nThe list returned is sorted in ascending order by email address.\n\nLong result sets are split into [pages](/docs/basics#pagination).", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-meeting" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin on-behalf-of scopes. If set, the admin may specify the email of a user in a site they manage and the API will return meeting invitees that are hosted by that user." - }, - { - "name": "max", - "type": "string", - "usage": "Limit the maximum number of meeting invitees in the response, up to 100." - }, - { - "name": "meeting-id", - "type": "string", - "usage": "Unique identifier for the meeting for which invitees are being requested. The meeting can be a meeting series, a scheduled meeting, or a meeting instance which has ended or is ongoing. The meeting ID of a scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meeting is not supported for this API." - }, - { - "name": "panelist", - "type": "string", - "usage": "Filter invitees or attendees for webinars only. If `true`, returns invitees. If `false`, returns attendees. If `null`, returns both invitees and attendees." - } - ] - }, - { - "path": "webex meetings invitees update-meeting", - "short": "Update a Meeting Invitee", - "long": "Update details for a meeting invitee identified by a `meetingInviteeId` in the URI.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "co-host", - "type": "bool", - "default": "false" - }, - { - "name": "display-name", - "type": "string" - }, - { - "name": "email", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-meeting" - }, - { - "name": "host-email", - "type": "string" - }, - { - "name": "meeting-invitee-id", - "type": "string", - "usage": "Unique identifier for the invitee to be updated. This parameter only applies to an invitee to a meeting series or a scheduled meeting. It doesn't apply to an invitee to an ended or ongoing meeting instance.", - "required": true - }, - { - "name": "panelist", - "type": "bool", - "default": "false" - }, - { - "name": "send-email", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex meetings meeting-polls", - "short": "MeetingPolls commands" - }, - { - "path": "webex meetings meeting-polls get-pollresults", - "short": "Get Meeting PollResults", - "long": "List the meeting polls, the poll's questions, and answers from the meeting when ready.\n\n* Only [meeting instances](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) in state `ended` or `inProgress` are supported for `meetingId`.\n\n* Long result sets will be split into [pages](/docs/basics#pagination).\n\n* This API is paginated by the sum of respondents from all questions in a meeting, these pagination links are returned in the response header.\n\n
Polls results are available within 15 minutes following the meeting.
", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-pollresults" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the maximum number of respondents in a meeting in the response, up to 100." - }, - { - "name": "meeting-id", - "type": "string", - "usage": "A unique identifier for the [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) to which the polls belong." - } - ] - }, - { - "path": "webex meetings meeting-polls list", - "short": "List Meeting Polls", - "long": "Lists all the polls and the poll questions in a meeting when ready.\n\n* Only [meeting instances](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) in state `ended` or `inProgress` are supported for `meetingId`.\n\n* No pagination for this API because we don't expect a large number of questions for each meeting.\n\n
Polls are available within 15 minutes following the meeting.
", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "meeting-id", - "type": "string", - "usage": "A unique identifier for the [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) to which the polls belong." - } - ] - }, - { - "path": "webex meetings meeting-polls list-respondents-question", - "short": "List Respondents of a Question", - "long": "Lists the respondents to a specific questions in a poll.\n\n* Only [meeting instances](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) in state `ended` or `inProgress` are supported for `meetingId`.\n\n* Long result sets are split into [pages](/docs/basics#pagination).\n\n
The list of poll respondents are available within 15 minutes following the meeting.
", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-respondents-question" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the maximum number of respondents in a specified question in the response, up to 100." - }, - { - "name": "meeting-id", - "type": "string", - "usage": "A unique identifier for the [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) to which the respondents belong." - }, - { - "name": "poll-id", - "type": "string", - "usage": "A unique identifier for the poll to which the respondents belong.", - "required": true - }, - { - "name": "question-id", - "type": "string", - "usage": "A unique identifier for the question to which the respondents belong.", - "required": true - } - ] - }, - { - "path": "webex meetings meeting-qa", - "short": "MeetingQa commands" - }, - { - "path": "webex meetings meeting-qa list-answers-question", - "short": "List Answers of a Question", - "long": "Lists the answers to a specific question asked in a meeting.\n\n* Only [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) in state `ended` or `inProgress` are supported for `meetingId`.\n\n* Long result sets will be split into [pages](/docs/basics#pagination).", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-answers-question" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the maximum number of Q&A's answers in the response, up to 100." - }, - { - "name": "meeting-id", - "type": "string", - "usage": "A unique identifier for the [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) which the Q&A belongs to." - }, - { - "name": "question-id", - "type": "string", - "usage": "The ID of a question.", - "required": true - } - ] - }, - { - "path": "webex meetings meeting-qa list-q", - "short": "List Meeting Q and A", - "long": "Lists questions and answers from a meeting, when ready.\n\nNotes:\n\n* Only [meeting instances](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) in state `ended` or `inProgress` are supported for `meetingId`.\n\n* Long result sets will be split into [pages](/docs/basics#pagination).\n\n* This API is paginated by the sum of answers in a meeting, These pagination links are returned in the response header.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-q" - }, - { - "name": "max", - "type": "string", - "usage": "Limits the maximum number of answers in the response, up to 100." - }, - { - "name": "meeting-id", - "type": "string", - "usage": "A unique identifier for the [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) which the Q&A belongs to." - } - ] - }, - { - "path": "webex meetings meeting-qualities", - "short": "MeetingQualities commands" - }, - { - "path": "webex meetings meeting-qualities get", - "short": "Get Meeting Qualities", - "long": "Get quality data for a meeting, by `meetingId`. Only organization administrators can retrieve meeting quality data.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the maximum number of media sessions in the response." - }, - { - "name": "meeting-id", - "type": "string", - "usage": "Unique identifier for the specific meeting instance. **Note:** The `meetingId` can be obtained via the Meeting List API when meetingType=meeting. The `id` attribute in the Meeting List Response is what is needed, for example, `e5dba9613a9d455aa49f6ffdafb6e7db_I_191395283063545470`." - }, - { - "name": "offset", - "type": "string", - "usage": "Offset from the first result that you want to fetch." - } - ] - }, - { - "path": "webex meetings meeting-summary", - "short": "MeetingSummary commands" - }, - { - "path": "webex meetings meeting-summary list-attendee-reports", - "short": "List Meeting Attendee Reports", - "long": "Lists of meeting attendee reports by a date range, the maximum number of meeting attendee reports, a meeting ID, a meeting number or a meeting title.\n\nIf the requesting user is an admin, the API returns meeting attendee reports of the meetings hosted by all the users on the specified site filtered by meeting ID, meeting number or meeting title.\n\nIf it's a normal meeting host, the API returns meeting attendee reports of the meetings hosted by the user himself on the specified site filtered by meeting ID, meeting number or meeting title.\n\nThe list returned is grouped by meeting instances. Both the groups and items of each group are sorted in descending order of `joinedTime`. For example, if `meetingId` is specified and it's a meeting series ID, the returned list is grouped by meeting instances of that series. The groups are sorted in descending order of `joinedTime`, and within each group the items are also sorted in descending order of `joinedTime`. Please refer to [Meetings Overview](/docs/meetings) for details of meeting series, scheduled meeting and meeting instance.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n* `siteUrl` is required, and the meeting attendee reports of the specified site are listed. All available Webex sites can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\n* `meetingId`, `meetingNumber` and `meetingTitle` are optional parameters to query the meeting attendee reports, but at least one of them should be specified. If more than one parameter in the sequence of `meetingId`, `meetingNumber`, and `meetingTitle` are specified, the first one in the sequence is used. Currently, only ended meeting instance IDs and meeting series IDs are supported for `meetingId`. IDs of scheduled meetings or personal room meetings are not supported.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default timezone is `UTC` if not defined.", - "flags": [ - { - "name": "from", - "type": "string", - "usage": "Starting date and time for the meeting attendee reports to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`. The interval between `to` and `from` cannot exceed 30 days and `from` cannot be earlier than 90 days ago." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-attendee-reports" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "max", - "type": "string", - "usage": "Maximum number of meeting attendees to include in the meeting attendee report in a single page. `max` must be greater than 0 and equal to or less than `1000`." - }, - { - "name": "meeting-id", - "type": "string", - "usage": "Meeting ID for the meeting attendee reports to return. If specified, return meeting attendee reports of the specified meeting; otherwise, return meeting attendee reports of all meetings. Currently, only ended meeting instance IDs are supported. IDs of meeting series, scheduled meetings or personal room meetings are not supported." - }, - { - "name": "meeting-number", - "type": "string", - "usage": "Meeting number for the meeting attendee reports to return. If specified, return meeting attendee reports of the specified meeting; otherwise, return meeting attendee reports of all meetings." - }, - { - "name": "meeting-title", - "type": "string", - "usage": "Meeting title for the meeting attendee reports to return. If specified, return meeting attendee reports of the specified meeting; otherwise, return meeting attendee reports of all meetings." - }, - { - "name": "site-url", - "type": "string", - "usage": "URL of the Webex site which the API lists meeting attendee reports from. All available Webex sites can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API." - }, - { - "name": "timezone", - "type": "string", - "usage": "e.g. Asia/Shanghai" - }, - { - "name": "to", - "type": "string", - "usage": "Ending date and time for the meeting attendee reports to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`. The interval between `to` and `from` cannot exceed 30 days." - } - ] - }, - { - "path": "webex meetings meeting-summary list-usage-reports", - "short": "List Meeting Usage Reports", - "long": "List meeting usage reports of all the users on the specified site by an admin. You can specify a date range and the maximum number of meeting usage reports to return.\n\nThe list returned is sorted in descending order by the date and time the meetings were started.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n* `siteUrl` is required, and the meeting usage reports of the specified site are listed. All available Webex sites can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default timezone is `UTC` if not defined.", - "flags": [ - { - "name": "from", - "type": "string", - "usage": "Starting date and time for meeting usage reports to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`. The interval between `to` and `from` cannot exceed 30 days and `from` cannot be earlier than 90 days ago." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-usage-reports" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "max", - "type": "string", - "usage": "Maximum number of meetings to include in the meetings usage report in a single page. `max` must be greater than 0 and equal to or less than `1000`." - }, - { - "name": "service-type", - "type": "string", - "usage": "Meeting usage report's service-type. If `serviceType` is specified, the API filters meeting usage reports by service-type. If `serviceType` is not specified, the API returns meeting usage reports by `MeetingCenter` by default. Valid values: + `MeetingCenter` + `EventCenter` + `SupportCenter` + `TrainingCenter`" - }, - { - "name": "site-url", - "type": "string", - "usage": "URL of the Webex site which the API lists meeting usage reports from. All available Webex sites can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API." - }, - { - "name": "timezone", - "type": "string", - "usage": "e.g. Asia/Shanghai" - }, - { - "name": "to", - "type": "string", - "usage": "Ending date and time for meeting usage reports to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`. The interval between `to` and `from` cannot exceed 30 days." - } - ] - }, - { - "path": "webex meetings meetings", - "short": "Meetings commands" - }, - { - "path": "webex meetings meetings batch-approve-registrants", - "short": "Batch Approve Meeting Registrants", - "long": "Batch approve a set of registrants for a meeting by the meeting host or cohost.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "current", - "type": "string", - "usage": "Whether or not to retrieve only the current scheduled meeting of the meeting series, i.e. the meeting ready to join or start or the upcoming meeting of the meeting series. If it's `true`, return details for the current scheduled meeting of the series, i.e. the scheduled meeting ready to join or start or the upcoming scheduled meeting of the meeting series. If it's `false` or not specified, return details for the entire meeting series. This parameter only applies to meeting series. + Default: `false` " - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for batch-approve-registrants" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for a meeting that is hosted by that user." - }, - { - "name": "meeting-id", - "type": "string", - "usage": "Unique identifier for the meeting. Only the ID of the meeting series is supported for meetingId. IDs of scheduled meetings, meeting instances, or scheduled personal room meetings are not supported. See the [Meetings Overview](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) for more information about meeting types.", - "required": true - } - ] - }, - { - "path": "webex meetings meetings batch-cancel-registrants", - "short": "Batch Cancel Meeting Registrants", - "long": "Batch cancel a set of registrants for a meeting by the meeting host or cohost.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "current", - "type": "string", - "usage": "Whether or not to retrieve only the current scheduled meeting of the meeting series, i.e. the meeting ready to join or start or the upcoming meeting of the meeting series. If it's `true`, return details for the current scheduled meeting of the series, i.e. the scheduled meeting ready to join or start or the upcoming scheduled meeting of the meeting series. If it's `false` or not specified, return details for the entire meeting series. This parameter only applies to meeting series. + Default: `false` " - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for batch-cancel-registrants" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for a meeting that is hosted by that user." - }, - { - "name": "meeting-id", - "type": "string", - "usage": "Unique identifier for the meeting. Only the ID of the meeting series is supported for meetingId. IDs of scheduled meetings, meeting instances, or scheduled personal room meetings are not supported. See the [Meetings Overview](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) for more information about meeting types.", - "required": true - } - ] - }, - { - "path": "webex meetings meetings batch-delete-registrants", - "short": "Batch Delete Meeting Registrants", - "long": "Batch delete a set of registrants for a meeting by the meeting host or cohost.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "current", - "type": "string", - "usage": "Whether or not to retrieve only the current scheduled meeting of the meeting series, i.e. the meeting ready to join or start or the upcoming meeting of the meeting series. If it's `true`, return details for the current scheduled meeting of the series, i.e. the scheduled meeting ready to join or start or the upcoming scheduled meeting of the meeting series. If it's `false` or not specified, return details for the entire meeting series. This parameter only applies to meeting series. + Default: `false` " - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for batch-delete-registrants" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for a meeting that is hosted by that user." - }, - { - "name": "meeting-id", - "type": "string", - "usage": "Unique identifier for the meeting. Only the ID of the meeting series is supported for meetingId. IDs of scheduled meetings, meeting instances, or scheduled personal room meetings are not supported. See the [Meetings Overview](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) for more information about meeting types.", - "required": true - } - ] - }, - { - "path": "webex meetings meetings batch-register-registrants", - "short": "Batch register Meeting Registrants", - "long": "Bulk register new registrants for a meeting. When a meeting or webinar is created, this API can only be used if Registration is checked on the page or the registration attribute is specified through the [Create a Meeting](/docs/api/v1/meetings/create-a-meeting) API.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "current", - "type": "string", - "usage": "Whether or not to retrieve only the current scheduled meeting of the meeting series, i.e. the meeting ready to join or start or the upcoming meeting of the meeting series. If it's `true`, return details for the current scheduled meeting of the series, i.e. the scheduled meeting ready to join or start or the upcoming scheduled meeting of the meeting series. If it's `false` or not specified, return details for the entire meeting series. This parameter only applies to meeting series." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for batch-register-registrants" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for a meeting that is hosted by that user." - }, - { - "name": "meeting-id", - "type": "string", - "usage": "Unique identifier for the meeting. Only the ID of the meeting series is supported for meetingId. IDs of scheduled meetings, meeting instances, or scheduled personal room meetings are not supported. See the [Meetings Overview](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) for more information about meeting types.", - "required": true - } - ] - }, - { - "path": "webex meetings meetings batch-reject-registrants", - "short": "Batch Reject Meeting Registrants", - "long": "Batch reject a set of registrants for a meeting by the meeting host or cohost.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "current", - "type": "string", - "usage": "Whether or not to retrieve only the current scheduled meeting of the meeting series, i.e. the meeting ready to join or start or the upcoming meeting of the meeting series. If it's `true`, return details for the current scheduled meeting of the series, i.e. the scheduled meeting ready to join or start or the upcoming scheduled meeting of the meeting series. If it's `false` or not specified, return details for the entire meeting series. This parameter only applies to meeting series. + Default: `false` " - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for batch-reject-registrants" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for a meeting that is hosted by that user." - }, - { - "name": "meeting-id", - "type": "string", - "usage": "Unique identifier for the meeting. Only the ID of the meeting series is supported for meetingId. IDs of scheduled meetings, meeting instances, or scheduled personal room meetings are not supported. See the [Meetings Overview](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) for more information about meeting types.", - "required": true - } - ] - }, - { - "path": "webex meetings meetings batch-update-registrants-status", - "short": "Batch Update Meeting Registrants status", - "long": "Meeting's host or cohost can update the set of registrants for a meeting. `cancel` means the registrant(s) will be moved back to the registration list. `bulkDelete` means the registrant(s) will be deleted.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "current", - "type": "string", - "usage": "Whether or not to retrieve only the current scheduled meeting of the meeting series, i.e. the meeting ready to join or start or the upcoming meeting of the meeting series. If it's `true`, return details for the current scheduled meeting of the series, i.e. the scheduled meeting ready to join or start or the upcoming scheduled meeting of the meeting series. If it's `false` or not specified, return details for the entire meeting series. This parameter only applies to meeting series. + Default: `false` " - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for batch-update-registrants-status" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for a meeting that is hosted by that user." - }, - { - "name": "meeting-id", - "type": "string", - "usage": "Unique identifier for the meeting. Only the ID of the meeting series is supported for meetingId. IDs of scheduled meetings, meeting instances, or scheduled personal room meetings are not supported. See the [Meetings Overview](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) for more information about meeting types.", - "required": true - }, - { - "name": "status-op-type", - "type": "string", - "usage": "Update registrant's status.", - "required": true - } - ] - }, - { - "path": "webex meetings meetings create", - "short": "Create a Meeting", - "long": "Creates a new meeting. Regular users can schedule up to 100 meetings in 24 hours and admin users up to 3000 overall or 800 for a single user. Please note that the failed requests are also counted toward the limits.\n\n* The `spark:all` scope is required when `roomId` is specified.\n\n* If the parameter `adhoc` is `true` and `roomId` is specified, an ad-hoc meeting is created for the target room. An ad-hoc meeting is a non-recurring instant meeting for the target room which is supposed to be started immediately after being created for a quick collaboration. There's only one ad-hoc meeting for a room at the same time. So, if there's already an ongoing ad-hoc meeting for the room, the API returns this ongoing meeting instead of creating a new one. If it's a [direct](/docs/api/v1/rooms/get-room-details) room, both members of the room can create an ad-hoc meeting for the room. If it's a [group](/docs/api/v1/rooms/get-room-details) room, only room members that are in the same [organization](/docs/api/v1/organizations/get-organization-details) as the room can create an ad-hoc meeting for the room. Please note that an ad-hoc meeting is for the purpose of an instant collaboration with people in a room, user should not persist the `id` and `meetingNumber` of the ad-hoc meeting when it's been created since this meeting may become an inactive ad-hoc meeting for the room if it's not been started after being created for a while or it has been started and ended. Each time a user needs an ad-hoc meeting for a room, they should create one instead of reusing the previous persisted one. Moreover, for the same reason, no email will be sent when an ad-hoc meeting is created. Ad-hoc meetings cannot be updated by [Update a Meeting](/docs/api/v1/meetings/update-a-meeting) or deleted by [Delete a Meeting](/docs/api/v1/meetings/delete-a-meeting). Ad-hoc meetings cannot be listed by [List Meetings](/docs/api/v1/meetings/list-meetings) and the scheduled meetings of an ad-hoc meeting cannot be listed by [List Meetings of a Meeting Series](/docs/api/v1/meetings/list-meetings-of-a-meeting-series), but the ended and ongoing instances of ad-hoc meetings can be listed by [List Meetings](/docs/api/v1/meetings/list-meetings) and [List Meetings of a Meeting Series](/docs/api/v1/meetings/list-meetings-of-a-meeting-series).\n\n* If the parameter `adhoc` is `true`, `roomId` is required and the others are optional or ignored.\n\n* The default value of `title` for an ad-hoc meeting is the user's name if not specified. The following parameters for an ad-hoc meeting have default values and the user's input values will be ignored: `scheduledType` is always `meeting`; `start` and `end` are 5 minutes after the current time and 20 minutes after the current time respectively; `timezone` is `UTC`; `allowAnyUserToBeCoHost`, `allowAuthenticatedDevices`, `enabledJoinBeforeHost`, `enableConnectAudioBeforeHost` are always `true`; `allowFirstUserToBeCoHost`, `enableAutomaticLock`, `publicMeeting`, `sendEmail` are always `false`; `invitees` is the room members except \"me\"; `joinBeforeHostMinutes` is 5; `automaticLockMinutes` is null; `unlockedMeetingJoinSecurity` is `allowJoinWithLobby`. An ad-hoc meeting can be started immediately even if the `start` is 5 minutes after the current time.\n\n* The following parameters are not supported and will be ignored for an ad-hoc meeting: `templateId`, `recurrence`, `excludePassword`, `reminderTime`, `registration`, `integrationTags`, `enabledWebcastView`, and `panelistPassword`.\n\n* If the value of the parameter `recurrence` is null, a non-recurring meeting is created.\n\n* If the parameter `recurrence` has a value, a recurring meeting is created based on the rule defined by the value of `recurrence`. For a non-recurring meeting which has no `recurrence` value set, its `meetingType` is also `meetingSeries` which is a meeting series with only one occurrence in Webex meeting modeling. If you specify a `recurrence` like `FREQ=DAILY;INTERVAL=1` which never ends, the furthest date of the series is unlimited. You can also specify a `recurrence` with a very distant ending date in the future, e.g. `FREQ=DAILY;INTERVAL=1;UNTIL=21241001T000000Z`, but the actual furthest date accepted for the recurring meeting is five years from now. Specifically, if it has an ending date, there can be up to 5 occurrences for a yearly meeting, 60 occurrences for a monthly meeting, 261 occurrences for a weekly meeting, or 1826 occurrences for a daily meeting.\n\n* If the parameter `templateId` has a value, the meeting is created based on the meeting template specified by `templateId`. The list of meeting templates that is available for the authenticated user can be retrieved from [List Meeting Templates](/docs/api/v1/meetings/list-meeting-templates).\n\n* If the parameter `siteUrl` has a value, the meeting is created on the specified site. Otherwise, the meeting is created on the user's preferred site. All available Webex sites and preferred site of the user can be retrieved by `Get Site List` API.\n\n* If the parameter `scheduledType` equals \"personalRoomMeeting\", the meeting is created in the user's [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings).\n\n* If the parameter `roomId` has a value, the meeting is created for the Webex space specified by `roomId`. If `roomId` is specified but the user calling the API is not a member of the Webex space specified by `roomId`, the API will fail even if the user has the admin-level scopes or he is calling the API on behalf of another user which is specified by `hostEmail` and is a member of the Webex space.\n\n* If the parameter `enabledAudioWatermark` is `true`, `scheduledType` equals or defaults to `meeting`, and `audioConnectionOptions.audioConnectionType` equals `VoIP`, the audio for this meeting will have a watermark. In this case, a unique identifier is embedded into the audio that plays out of each Webex app and device. An administrator can use this watermark when analyzing an unauthorized recording to identify which Webex app or device was the source of the recording.\n\n* If the parameter `enabledVisualWatermark` is `true`, the video for this meeting will have a watermark. In this case, Webex superimposes a watermark image pattern on top of the meeting video and shared content to deter participants from leaking meeting information. Each participant viewing the meeting sees a watermark image pattern with their email address. If the participant is not signed in, the watermark image pattern includes their display name and email address.\n\n* The default value of `visualWatermarkOpacity` is 10 if not specified. The value must be between 5 and 80, inclusive. A smaller value means less distraction for meeting participants, while a larger value shows a clearer watermark. It's supported when `enabledVisualWatermark` is `true`.\n\n* When `enabledLiveStream` is `true`, `liveStream` must be specified. With these setting, the RTMP streaming specified by `liveStream.rtmpUrl` can be started and viewed during the meeting without any ad-hoc settings.\n\n* The `registration` can be specified when creating a meeting, but it can't be updated by [Update a Meeting](/docs/api/v1/meetings/update-a-meeting) or [Patch a Meeting](/docs/api/v1/meetings/patch-a-meeting). Create a registration form for a meeting that doesn't have one or update the registration form for a meeting that already has one by using [Update Meeting Registration Form](/docs/api/v1/meetings/update-meeting-registration-form). Delete the registration form for a meeting by using [Delete Meeting Registration Form](/docs/api/v1/meetings/delete-meeting-registration-form).\n\n* You can't create a meeting that starts 10 years or more in the future.\n\n* If all meeting invitees of a meeting should not receive emails, the host can create a meeting with invitees, and the parameter `sendEmail` is set to `false`. If only some meeting invitees should not receive emails and others can, the host should not invite these invitees along with creating a meeting request. Instead, the host should add the invitees by [Create a Meeting Invitee](/docs/api/v1/meeting-invitees/create-a-meeting-invitee) or [Create Meeting Invitees](/docs/api/v1/meeting-invitees/create-meeting-invitees) with the parameter `sendEmail` is set to `false` after the meeting has been created.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - } - ] - }, - { - "path": "webex meetings meetings create-interpreter", - "short": "Create a Meeting Interpreter", - "long": "Assign an interpreter to a bi-directional simultaneous interpretation language channel for a meeting.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "display-name", - "type": "string" - }, - { - "name": "email", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-interpreter" - }, - { - "name": "host-email", - "type": "string" - }, - { - "name": "language-code1", - "type": "string" - }, - { - "name": "language-code2", - "type": "string" - }, - { - "name": "meeting-id", - "type": "string", - "usage": "Unique identifier for the meeting to which the interpreter is to be assigned.", - "required": true - }, - { - "name": "send-email", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex meetings meetings create-invitation-sources", - "short": "Create Invitation Sources", - "long": "Creates one or more invitation sources for a meeting.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-invitation-sources" - }, - { - "name": "meeting-id", - "type": "string", - "usage": "Unique identifier for the meeting. Only the meeting ID of a scheduled webinar is supported for this API.", - "required": true - } - ] - }, - { - "path": "webex meetings meetings delete", - "short": "Delete a Meeting", - "long": "
\nIf only guests are waiting in the lobby and the host or cohost has not started the meeting, the meeting state remains `inProgress` for 5 minutes after the last guest leaves. The meeting cannot be deleted during this time. If the meeting is started by the host or cohost and then ended normally, it can be deleted immediately after it ends.\n
\n\nDeletes a meeting with a specified meeting ID. The deleted meeting cannot be recovered. This operation applies to meeting series and scheduled meetings. It doesn't apply to ended or in-progress meeting instances. Ad-hoc meetings created by [Create a Meeting](/docs/api/v1/meetings/create-a-meeting) with `adhoc` of `true` and a `roomId` cannot be deleted.\n\n* If the `meetingId` value specified is for a scheduled meeting, the operation deletes that scheduled meeting without impact on other scheduled meeting of the parent meeting series.\n\n* If the `meetingId` value specified is for a meeting series, the operation deletes the entire meeting series.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will delete a meeting that is hosted by that user." - }, - { - "name": "meeting-id", - "type": "string", - "usage": "Unique identifier for the meeting to be deleted. This parameter applies to meeting series and scheduled meetings. It doesn't apply to ended or in-progress meeting instances.", - "required": true - }, - { - "name": "send-email", - "type": "string", - "usage": "Whether or not to send emails to host and invitees. It is an optional field and default value is true." - } - ] - }, - { - "path": "webex meetings meetings delete-breakout-sessions", - "short": "Delete Meeting Breakout Sessions", - "long": "Deletes breakout sessions with a specified meeting ID. The deleted breakout sessions cannot be recovered. The value of `enabledBreakoutSessions` attribute is set to `false` automatically.\nThis operation applies to meeting series and scheduled meetings. It doesn't apply to ended or in-progress meeting instances.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-breakout-sessions" - }, - { - "name": "host-email", - "type": "string", - "usage": "e.g. `john.andersen@example.com` (string, optional) - Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will delete breakout sessions that are created by that user." - }, - { - "name": "meeting-id", - "type": "string", - "usage": "Unique identifier for the meeting. This parameter applies to meeting series and scheduled meetings. It doesn't apply to ended or in-progress meeting instances.", - "required": true - }, - { - "name": "send-email", - "type": "string", - "usage": "Whether or not to send emails to host and invitees. It is an optional field and default value is true." - } - ] - }, - { - "path": "webex meetings meetings delete-interpreter", - "short": "Delete a Meeting Interpreter", - "long": "Removes a meeting interpreter identified by `meetingId` and `interpreterId` in the URI. The deleted meeting interpreter cannot be recovered.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-interpreter" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin on-behalf-of scopes. If set, the admin may specify the email of a user in a site they manage and the API will delete an interpreter of the meeting that is hosted by that user." - }, - { - "name": "interpreter-id", - "type": "string", - "usage": "Unique identifier for the interpreter to be removed.", - "required": true - }, - { - "name": "meeting-id", - "type": "string", - "usage": "Unique identifier for the meeting whose interpreters were belong to.", - "required": true - }, - { - "name": "send-email", - "type": "string", - "usage": "If `true`, send email to the interpreter." - } - ] - }, - { - "path": "webex meetings meetings delete-registrant", - "short": "Delete a Meeting Registrant", - "long": "Meeting's host or cohost can delete a registrant with a specified registrant ID.", - "flags": [ - { - "name": "current", - "type": "string", - "usage": "Whether or not to retrieve only the current scheduled meeting of the meeting series, i.e. the meeting ready to join or start or the upcoming meeting of the meeting series. If it's `true`, return details for the current scheduled meeting of the series, i.e. the scheduled meeting ready to join or start or the upcoming scheduled meeting of the meeting series. If it's `false` or not specified, return details for the entire meeting series. This parameter only applies to meeting series." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-registrant" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for a meeting that is hosted by that user." - }, - { - "name": "meeting-id", - "type": "string", - "usage": "Unique identifier for the meeting. Only the ID of the meeting series is supported for meetingId. IDs of scheduled meetings, meeting instances, or scheduled personal room meetings are not supported. See the [Meetings Overview](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) for more information about meeting types.", - "required": true - }, - { - "name": "registrant-id", - "type": "string", - "usage": "Unique identifier for the registrant.", - "required": true - } - ] - }, - { - "path": "webex meetings meetings delete-registration-form", - "short": "Delete Meeting Registration Form", - "long": "Disable the registration form for a meeting.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-registration-form" - }, - { - "name": "host-email", - "type": "string", - "usage": "e.g. `brenda.song@example.com` (string, optional) - Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin on-behalf-of scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for an interpreter of the meeting that is hosted by that user." - }, - { - "name": "meeting-id", - "type": "string", - "usage": "Unique identifier for the meeting. Only the ID of the meeting series is supported for meetingId. IDs of scheduled meetings, meeting instances, or scheduled personal room meetings are not supported. See the [Meetings Overview](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) for more information about meeting types.", - "required": true - } - ] - }, - { - "path": "webex meetings meetings end", - "short": "End a Meeting", - "long": "Ends a meeting with a specified meeting ID. This operation applies to meeting series, scheduled meetings, and in-progress meetings. Only the meeting host, cohost, or compliance officer can end a meeting with this API.\n\n* If the `meetingId` value specified is for a scheduled meeting, the operation ends that meeting without impacting other scheduled meetings of the parent meeting series.\n\n* If the `meetingId` value specified is for a meeting series, the operation ends the current meeting occurrence.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for end" - }, - { - "name": "meeting-id", - "type": "string", - "usage": "Unique identifier for the meeting to be ended.", - "required": true - }, - { - "name": "reason", - "type": "string" - } - ] - }, - { - "path": "webex meetings meetings get", - "short": "Get a Meeting", - "long": "Retrieves details for a meeting with a specified meeting ID.\n\n* If the `meetingId` value specified is for a meeting series and `current` is `true`, the operation returns details for the current scheduled meeting of the series, i.e. the scheduled meeting ready to join or start or the upcoming scheduled meeting of the meeting series.\n\n* If the `meetingId` value specified is for a meeting series and `current` is `false` or `current` is not specified, the operation returns details for the entire meeting series.\n\n* If the `meetingId` value specified is for a scheduled meeting from a meeting series, the operation returns details for that scheduled meeting.\n\n* If the `meetingId` value specified is for a meeting instance which is happening or has happened, the operation returns details for that meeting instance.\n\n* `trackingCodes` is not supported for ended meeting instances.\n\n* To learn more about which attributes are available for different meeting states, please refer to [Available Meeting Attributes for Different Meeting States](/docs/meetings#available-meeting-attributes-for-different-meeting-states).\n\n#### Request Header\n\n* `password`: Meeting password. Required when the meeting is protected by a password and the current user is not privileged to view it if they are not a host, cohost or invitee of the meeting.\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) for time stamps in response body, defined in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default value is `UTC` if not specified.", - "flags": [ - { - "name": "current", - "type": "string", - "usage": "Whether or not to retrieve only the current scheduled meeting of the meeting series, i.e. the meeting ready to join or start or the upcoming meeting of the meeting series. If it's `true`, return details for the current scheduled meeting of the series, i.e. the scheduled meeting ready to join or start or the upcoming scheduled meeting of the meeting series. If it's `false` or not specified, return details for the entire meeting series. This parameter only applies to meeting series." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for a meeting that is hosted by that user." - }, - { - "name": "meeting-id", - "type": "string", - "usage": "Unique identifier for the meeting being requested.", - "required": true - }, - { - "name": "password", - "type": "string", - "usage": "e.g. BgJep@4323" - }, - { - "name": "timezone", - "type": "string", - "usage": "e.g. UTC" - } - ] - }, - { - "path": "webex meetings meetings get-admin", - "short": "Get a Meeting By an Admin", - "long": "Retrieves details for a meeting with a specified meeting ID by an admin. The following sensitive attributes are hidden from the response: `agenda`, `hostKey`, `password`, `phoneAndVideoSystemPassword`, `panelistPassword`, `phoneAndVideoSystemPanelistPassword`, `webLink`, `sipAddress`, `dialInIpAddress`, `registration` and `telephony.accessCode`.\n\n* If the `meetingId` value specified is for a meeting series and `current` is `true`, the operation returns details for the current scheduled meeting of the series, i.e. the scheduled meeting ready to join or start or the upcoming scheduled meeting of the meeting series.\n\n* If the `meetingId` value specified is for a meeting series and `current` is `false` or `current` is not specified, the operation returns details for the entire meeting series.\n\n* If the `meetingId` value specified is for a scheduled meeting from a meeting series, the operation returns details for that scheduled meeting.\n\n* If the `meetingId` value specified is for a meeting instance which is happening or has happened, the operation returns details for that meeting instance.\n\n* `trackingCodes` is not supported for ended meeting instances.\n\n* To learn more about which attributes are available for different meeting states, please refer to [Available Meeting Attributes for Different Meeting States](/docs/meetings#available-meeting-attributes-for-different-meeting-states).\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) for time stamps in response body, defined in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default value is `UTC` if not specified.", - "flags": [ - { - "name": "current", - "type": "string", - "usage": "Whether or not to retrieve only the current scheduled meeting of the meeting series, i.e. the meeting ready to join or start or the upcoming meeting of the meeting series. If it's `true`, return details for the current scheduled meeting of the series, i.e. the scheduled meeting ready to join or start or the upcoming scheduled meeting of the meeting series. If it's `false` or not specified, return details for the entire meeting series. This parameter only applies to meeting series. The default value is `false`." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-admin" - }, - { - "name": "meeting-id", - "type": "string", - "usage": "Unique identifier for the meeting being requested.", - "required": true - }, - { - "name": "timezone", - "type": "string", - "usage": "e.g. UTC" - } - ] - }, - { - "path": "webex meetings meetings get-control-status", - "short": "Get Meeting Control Status", - "long": "Get the meeting control of a live meeting, which is consisted of meeting control status on \"locked\" and \"recording\" to reflect whether the meeting is currently locked and there is recording in progress.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-control-status" - }, - { - "name": "meeting-id", - "type": "string", - "usage": "Unique identifier for the meeting. Does not support meeting IDs for a scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meeting." - } - ] - }, - { - "path": "webex meetings meetings get-detailed-information-registrant", - "short": "Get Detailed Information for a Meeting Registrant", - "long": "Retrieves details for a meeting registrant with a specified registrant Id.", - "flags": [ - { - "name": "current", - "type": "string", - "usage": "Whether or not to retrieve only the current scheduled meeting of the meeting series, i.e. the meeting ready to join or start or the upcoming meeting of the meeting series. If it's `true`, return details for the current scheduled meeting of the series, i.e. the scheduled meeting ready to join or start or the upcoming scheduled meeting of the meeting series. If it's `false` or not specified, return details for the entire meeting series. This parameter only applies to meeting series." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-detailed-information-registrant" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for a meeting that is hosted by that user." - }, - { - "name": "meeting-id", - "type": "string", - "usage": "Unique identifier for the meeting. Only the ID of the meeting series is supported for meetingId. IDs of scheduled meetings, meeting instances, or scheduled personal room meetings are not supported. See the [Meetings Overview](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) for more information about meeting types.", - "required": true - }, - { - "name": "registrant-id", - "type": "string", - "usage": "Unique identifier for the registrant", - "required": true - } - ] - }, - { - "path": "webex meetings meetings get-interpreter", - "short": "Get a Meeting Interpreter", - "long": "Retrieves details for a meeting interpreter identified by `meetingId` and `interpreterId` in the URI.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-interpreter" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin on-behalf-of scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for an interpreter of the meeting that is hosted by that user." - }, - { - "name": "interpreter-id", - "type": "string", - "usage": "Unique identifier for the interpreter whose details are being requested.", - "required": true - }, - { - "name": "meeting-id", - "type": "string", - "usage": "Unique identifier for the meeting to which the interpreter has been assigned.", - "required": true - } - ] - }, - { - "path": "webex meetings meetings get-registration-form", - "short": "Get registration form for a meeting", - "long": "Get a meeting's registration form to understand which fields are required.", - "flags": [ - { - "name": "current", - "type": "string", - "usage": "Whether or not to retrieve only the current scheduled meeting of the meeting series, i.e. the meeting ready to join or start or the upcoming meeting of the meeting series. If it's `true`, return details for the current scheduled meeting of the series, i.e. the scheduled meeting ready to join or start or the upcoming scheduled meeting of the meeting series. If it's `false` or not specified, return details for the entire meeting series. This parameter only applies to meeting series." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-registration-form" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for a meeting that is hosted by that user." - }, - { - "name": "meeting-id", - "type": "string", - "usage": "Unique identifier for the meeting. Only the ID of the meeting series is supported for meetingId. IDs of scheduled meetings, meeting instances, or scheduled personal room meetings are not supported. See the [Meetings Overview](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) for more information about meeting types.", - "required": true - } - ] - }, - { - "path": "webex meetings meetings get-session-type", - "short": "Get a Meeting Session Type", - "long": "Retrieves details for a meeting session type with a specified session type ID.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-session-type" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email address for the user. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will get a meeting session type with the specified session type ID enabled for the user." - }, - { - "name": "session-type-id", - "type": "string", - "usage": "A unique identifier for the sessionType.", - "required": true - }, - { - "name": "site-url", - "type": "string", - "usage": "Webex site URL to query. If `siteUrl` is not specified, the users' preferred site will be used. If the authorization token has the admin-level scopes, the admin can set the Webex site URL on behalf of the user specified in the `hostEmail` parameter." - } - ] - }, - { - "path": "webex meetings meetings get-survey", - "short": "Get a Meeting Survey", - "long": "Retrieves details for a meeting survey identified by `meetingId`.\n\n#### Request Header\n\n* `hostEmail`: Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin on-behalf-of scopes. If set, the admin may specify the email of a user in a site they manage and the API will return survey details of that user.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-survey" - }, - { - "name": "host-email", - "type": "string", - "usage": "e.g. john.andersen@example.com" - }, - { - "name": "meeting-id", - "type": "string", - "usage": "Unique identifier for the meeting. Please note that only the meeting ID of a scheduled webinar is supported for this API.", - "required": true - } - ] - }, - { - "path": "webex meetings meetings get-survey-links", - "short": "Get Meeting Survey Links", - "long": "Get survey links of a meeting for different users.\n\n#### Request Header\n\n* `timezone`: Time zone for the `meetingStartTimeFrom` and `meetingStartTimeTo` parameters and defined in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default value is `UTC` if not specified.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "emails", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-survey-links" - }, - { - "name": "host-email", - "type": "string" - }, - { - "name": "meeting-id", - "type": "string", - "usage": "Unique identifier for the meeting. Only applies to webinars. Meetings and personal room meetings are not supported.", - "required": true - }, - { - "name": "meeting-start-time-from", - "type": "string" - }, - { - "name": "meeting-start-time-to", - "type": "string" - }, - { - "name": "timezone", - "type": "string", - "usage": "e.g. UTC" - } - ] - }, - { - "path": "webex meetings meetings get-template", - "short": "Get a Meeting Template", - "long": "Retrieves details for a meeting template with a specified meeting template ID.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) for time stamps in response body, defined in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default value is `UTC` if not specified.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-template" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will return the meeting template that is available for that user." - }, - { - "name": "template-id", - "type": "string", - "usage": "Unique identifier for the meeting template being requested.", - "required": true - }, - { - "name": "timezone", - "type": "string", - "usage": "e.g. UTC" - } - ] - }, - { - "path": "webex meetings meetings join", - "short": "Join a Meeting", - "long": "Retrieves links for a meeting with a specified `meetingId`, `meetingNumber`, or `webLink` that allow users to start or join the meeting directly without logging in and entering a password.\n\n* Please note that `meetingId`, `meetingNumber` and `webLink` are mutually exclusive and they cannot be specified simultaneously.\n\n* If `joinDirectly` is true or not specified, the response will have HTTP response code 302 and the request will be redirected to `joinLink`; otherwise, the response will have HTTP response code 200 and `joinLink` will be returned in response body.\n\n* Only the meeting host or cohost can generate the `startLink`.\n\n* An admin user or a [Service App](/docs/service-apps) can generate the `startLink` and `joinLink` on behalf of another meeting host using the `hostEmail` parameter. When a [Service App](/docs/service-apps) generates the `startLink` and `joinLink`, the `hostEmail` parameter is required. The `hostEmail` parameter only applies to meetings, not webinars.\n\n* For Service Apps, `hostEmail` must be provided in the request.\n\n* Generating a join link or a start link before the time specified by `joinBeforeHostMinutes` for a webinar is not supported.\n\n* The `joinLink` and `startLink` generated by the API only work in a web browser, not in mobile apps. When the `joinLink` or `startLink` is used in a mobile app, the user can't join or start the meeting directly by the dial-in or dial-out phone numbers displayed in the app.\n\n* When `createJoinLinkAsWebLink` or `createStartLinkAsWebLink` is set to true, a user cannot join or start the meeting using the `joinLink` or `startLink` returned in the response, and must complete the login flow. Those options are typically useful if mandatory user login is configured in Control Hub.\n\n* Appending the parameter `&launchApp=true` to the weblink will launch directly into the browser experience without showing the user the download selection for the native client.\n\n* [Embedded Apps](/docs/embedded-apps) are not supported in a meeting which is started from the `startLink` generated by this API.\n\n
When the `email` or `displayName` is omitted from the API request, the backend inserts the data from the user making the request. That may lead to situations where an attendee is shown in the roster with the hostname which should be avoided. In the future, we will make those two fields required.
", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "create-join-link-as-web-link", - "type": "bool", - "default": "false" - }, - { - "name": "create-start-link-as-web-link", - "type": "bool", - "default": "false" - }, - { - "name": "display-name", - "type": "string" - }, - { - "name": "email", - "type": "string" - }, - { - "name": "expiration-minutes", - "type": "int64", - "default": "0" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for join" - }, - { - "name": "host-email", - "type": "string" - }, - { - "name": "join-directly", - "type": "bool", - "default": "false" - }, - { - "name": "meeting-id", - "type": "string" - }, - { - "name": "meeting-number", - "type": "string" - }, - { - "name": "password", - "type": "string" - }, - { - "name": "registration-id", - "type": "string" - }, - { - "name": "web-link", - "type": "string" - } - ] - }, - { - "path": "webex meetings meetings list", - "short": "List Meetings", - "long": "
The previous `List Meetings of a Meeting Series` API is merged into the [List Meetings](/docs/api/v1/meetings/list-meetings) API.
\n\nRetrieves details for meetings with a specified meeting number, web link, meeting type, etc. Please note that there are various products in the [Webex Suite](https://www.webex.com/collaboration-suite.html) such as `Meetings` and `Events`. Currently, only meetings of the `Meetings` product are supported by this API, meetings of others in the suite are not supported. Ad-hoc meetings created by [Create a Meeting](/docs/api/v1/meetings/create-a-meeting) with `adhoc` of `true` and a `roomId` will not be listed, but the ended and ongoing ad-hoc meeting instances will be listed.\n\nLists scheduled meeting and meeting instances of a meeting series identified by `meetingSeriesId`. Scheduled meetings of an ad-hoc meeting created by [Create a Meeting](/docs/api/v1/meetings/create-a-meeting) with `adhoc` of `true` and a `roomId` are not listed, but the ended and ongoing meeting instances of it are. Each _scheduled meeting_ or _meeting_ instance of a _meeting series_ has its own `start`, `end`, etc. Thus, for example, when a daily meeting has been scheduled from `2019-04-01` to `2019-04-10`, there are 10 scheduled meeting instances in this series, one instance for each day, and each one has its own attributes. When a scheduled meeting has been started and ended or is happening, there are even more ended or in-progress meeting instances.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n* The default value of `meetingSeries` will be used if `meetingType` is not specified. When listing meetings with `meetingType=meetingSeries` implicitly or explicitly, the API returns all the recurring meeting series where the user is the meeting host or an invitee to the meeting. Please note that a meeting with no `recurrence` attribute is considered a meeting series with only one occurrence and it can also be listed with `meetingType=meetingSeries`. A recurring meeting series may have multiple occurrences which are scattered over weeks, months, or years. So, any meeting series that overlaps with the time range specified by `from` and `to` will be listed. For example, a monthly meeting series with `start=2024-01-01T10:00:00Z`, `end=2024-01-01T11:00:00Z` and `recurrence=FREQ=MONTHLY;INTERVAL=1;BYMONTHDAY=1;UNTIL=20250210T000000Z` can be listed with `meetingType=meetingSeries&from=2024-10-01&to=2024-11-01` even if the `start` and `end` are not in the specified time range.\n\n* If `meetingType` is specified and equals `meeting`, it lists ongoing and ended instances of the meeting series. The default value of `from` and `to` is: `from` equals the current date and time minus 7 days, and `to` equals the current date and time.\n\n* If `meetingSeriesId` is specified, `meetingNumber`, `webLink`, `roomId`, `current`, `integrationTag`, `scheduledType`, `siteUrl` will be ignored.\n\n* If `meetingNumber` is specified, the operation returns an array of meeting objects specified by the `meetingNumber`. Each object in the array can be a scheduled meeting or a meeting series depending on whether the `current` parameter is `true` or `false`, and each object contains the simultaneous interpretation object. When `meetingNumber` is specified, parameters of `from`, `to`, `meetingType`, `state`, `isModified` and `siteUrl` will be ignored. Please note that `meetingNumber`, `webLink` and `roomId` are mutually exclusive and they cannot be specified simultaneously.\n\n* If `webLink` is specified, the operation returns an array of meeting objects specified by the `webLink`. Each object in the array can be a scheduled meeting or a meeting series depending on whether the `current` parameter is `true` or `false`, and each object contains the simultaneous interpretation object. When `webLink` is specified, parameters of `from`, `to`, `meetingType`, `state`, `isModified` and `siteUrl` will be ignored. Please note that `meetingNumber`, `webLink` and `roomId` are mutually exclusive and they cannot be specified simultaneously.\n\n* If `roomId` is specified, the operation returns an array of meeting objects of the Webex space specified by the `roomId`. When `roomId` is specified, parameters of `current`, `meetingType`, `state` and `isModified` will be ignored. The meeting objects are queried on the user's preferred site if no `siteUrl` is specified; otherwise, queried on the specified site. `meetingNumber`, `webLink` and `roomId` are mutually exclusive and they cannot be specified simultaneously.\n\n* If `state` parameter is specified, the returned array only has items in the specified state. If `state` is not specified, return items of all states.\n\n* If `meetingType` equals \"meetingSeries\", the `scheduledType` parameter can be \"meeting\", \"webinar\" or null. If `scheduledType` is specified, the returned array only has items of the specified scheduled type; otherwise, it has items of \"meeting\" and \"webinar\".\n\n* If `meetingType` equals \"scheduledMeeting\", the `scheduledType` parameter can be \"meeting\", \"webinar\", \"personalRoomMeeting\" or null. If `scheduledType` is specified, the returned array only has items of the specified scheduled type; otherwise, it has items of all scheduled types.\n\n* If `meetingType` equals \"meeting\", the `scheduledType` parameter can be \"meeting\", \"webinar\" or null. If `scheduledType` is specified, the returned array only has items of the specified scheduled type; otherwise, it has items of \"meeting\" and \"webinar\". Please note that ended or in-progress meeting instances of [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) also fall into the category of \"meeting\" `scheduledType`.\n\n* If `meetingType` equals \"meeting\", a maximum of 10000 meeting instances can be listed even if pagination is enabled.\n\n* If `isModified` parameter is specified, the returned array only has items which have been modified to exceptional meetings. This parameter only applies to scheduled meeting.\n\n* If any of the `hasChat`, `hasRecording`, `hasTranscription`, `hasSummary`, `hasClosedCaption`, `hasPolls `, `hasQA` and `hasSlido` parameters is specified, the `meetingType` must be \"meeting\" and `state` must be \"ended\". These parameters are null by default.\n\n* The `current` parameter only applies to meeting series. If it's `false`, the `start` and `end` attributes of each returned meeting series object are for the first scheduled meeting of that series. If it's `true` or not specified, the `start` and `end` attributes are for the scheduled meeting which is ready to start or join or the upcoming scheduled meeting of that series.\n\n* If `from` and `to` are specified, the operation returns an array of meeting objects in that specified time range.\n\n* If the parameter `siteUrl` has a value, the operation lists meetings on the specified site; otherwise, lists meetings on the user's all sites. All available Webex sites of the user can be retrieved by `Get Site List` API.\n\n* `trackingCodes` is not supported for ended meeting instances.\n\n* A full admin or a content admin can list all the ended and ongoing meeting instances of the organization he manages with the `meeting:admin_schedule_read` scope and `meetingType=meeting` parameter.\n\n* To learn more about which attributes are available for different meeting states, please refer to [Available Meeting Attributes for Different Meeting States](/docs/meetings#available-meeting-attributes-for-different-meeting-states).\n\n#### Request Header\n\n* `password`: Meeting password. Required when the meeting is protected by a password and the current user is not privileged to view it if they are not a host, cohost or invitee of the meeting.\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) for time stamps in response body, defined in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default value is `UTC` if not specified.", - "flags": [ - { - "name": "current", - "type": "string", - "usage": "Flag identifying to retrieve the current scheduled meeting of the meeting series or the entire meeting series. This parameter only applies to scenarios where the meeting is not an exceptional meeting from a meeting series. If it's `true`, return the scheduled meeting of the meeting series which is ready to join or start or the upcoming scheduled meeting of the meeting series; if it's `false`, return the entire meeting series." - }, - { - "name": "from", - "type": "string", - "usage": "Start date and time (inclusive) for the range for which meetings are to be returned in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`. This parameter will be ignored if `meetingNumber`, `webLink` or `roomId` is specified. When `meetingType` is `meetingSeries`(either explicitly set or by default), if `to` is specified, the default value for `from` is `to` minus 7 days. If `to` is also not specified, the default value for `from` is the current date and time. When `meetingType` is `scheduledMeeting`, `from` is the same as above. When `meetingType` is `meeting`, if `to` is specified, the default value for `from` is `to` minus 7 days. If `to` is also not specified, the default value for `from` is 7 days before the current date and time." - }, - { - "name": "has-chat", - "type": "string", - "usage": "Flag identifying whether a meeting has a chat log. Only applies to ended meeting instances. If `true`, only return meeting instances which have chats; if `false`, only return meeting instances which have no chats; if not specified, all meeting instances will be returned." - }, - { - "name": "has-closed-caption", - "type": "string", - "usage": "Flag identifying meetings with closed captions. Only applies to ended meeting instances. If `true`, only return meeting instances which have closed captions; if `false`, only return meeting instances which have no closed captions; if not specified, all meeting instances will be returned." - }, - { - "name": "has-polls", - "type": "string", - "usage": "Flag identifying meetings with polls. Only applies to ended meeting instances. If `true`, only return meeting instances which have polls; if `false`, only return meeting instances which have no polls; if not specified, all meeting instances will be returned." - }, - { - "name": "has-qa", - "type": "string", - "usage": "Flag identifying meetings with Q&A. Only applies to ended meeting instances. If `true`, only return meeting instances which have Q&A; if `false`, only return meeting instances which have no Q&A; if not specified, all meeting instances will be returned." - }, - { - "name": "has-recording", - "type": "string", - "usage": "Flag identifying meetings which have been recorded. Only applies to ended meeting instances. If true, only return meeting instances which have been recorded; if false, only return meeting instances which have not been recorded; if not specified, all meeting instances will be returned." - }, - { - "name": "has-slido", - "type": "string", - "usage": "Flag identifying meetings with Slido interactions. Only applies to ended meeting instances. If `true`, only return meeting instances which have Slido interactions like Q&A or polling; if `false`, only return meeting instances which have no Slido interactions; if not specified, all meeting instances will be returned." - }, - { - "name": "has-summary", - "type": "string", - "usage": "Flag identifying meetings with summaries. Only applies to ended meeting instances. If `true`, only return meeting instances which have summaries; if `false`, only return meeting instances which have no summaries; if not specified, all meeting instances will be returned." - }, - { - "name": "has-transcription", - "type": "string", - "usage": "Flag identifying meetings with transcripts. Only applies to ended meeting instances. If `true`, only return meeting instances which have transcripts; if `false`, only return meeting instances which have no transcripts; if not specified, all meeting instances will be returned." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API returns meetings as if the user calling the API were the user of `hostEmail` themself, and the meetings returned by the API include the meetings where the user of `hostEmail` is the meeting host and those where they are an invitee." - }, - { - "name": "integration-tag", - "type": "string", - "usage": "External key created by an integration application. This parameter is used by the integration application to query meetings by a key in its own domain such as a Zendesk ticket ID, a Jira ID, a Salesforce Opportunity ID, etc. An integrationTag created by one client cannot be accessed or used as a filtering parameter by another client. For example, if a meeting has an `integrationTag` of \"Sales\" which is created by the client behind the developer portal, then this integrationTag can't be accessed on the meeting or its recordings by another client. Neither can it be used to filter meetings or recordings by a client other than the one that created the integrationTag of \"Sales\"." - }, - { - "name": "is-modified", - "type": "string", - "usage": "Flag identifying whether a meeting has been modified. Only applies to scheduled meetings. If `true`, only return modified scheduled meetings; if `false`, only return unmodified scheduled meetings; if not specified, all scheduled meetings will be returned." - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "max", - "type": "string", - "usage": "Limit the maximum number of meetings in the response, up to 100. This parameter is ignored if `meetingNumber`, `webLink` or `roomId` is specified. The default value is 10." - }, - { - "name": "meeting-number", - "type": "string", - "usage": "Meeting number for the meeting objects being requested. `meetingNumber`, `webLink` and `roomId` are mutually exclusive. If it's an exceptional meeting from a meeting series, the exceptional meeting instead of the primary meeting series is returned." - }, - { - "name": "meeting-series-id", - "type": "string", - "usage": "Unique identifier for the meeting series. The meeting ID of a scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meeting is not supported. If `meetingSeriesId` is specified, it lists all occurrences and instances of the meeting series by default; with `meetingType` of `scheduledMeeting`, it lists occurrences; with `meetingType` of `meeting`, it lists ongoing and ended instances." - }, - { - "name": "meeting-type", - "type": "string", - "usage": "Meeting type for the meeting objects being requested. This parameter will be ignored if `meetingNumber`, `webLink` or `roomId` is specified." - }, - { - "name": "password", - "type": "string", - "usage": "e.g. BgJep@4323" - }, - { - "name": "room-id", - "type": "string", - "usage": "Associated Webex space ID for the meeting objects being requested. `meetingNumber`, `webLink` and `roomId` are mutually exclusive." - }, - { - "name": "scheduled-type", - "type": "string", - "usage": "Scheduled type for the meeting objects being requested." - }, - { - "name": "site-url", - "type": "string", - "usage": "URL of the Webex site which the API lists meetings from. If not specified, the API lists meetings from user's all sites. All available Webex sites of the user can be retrieved by `Get Site List` API." - }, - { - "name": "state", - "type": "string", - "usage": "Meeting state for the meeting objects being requested. If not specified, return meetings of all states. This parameter will be ignored if `meetingNumber`, `webLink` or `roomId` is specified. Details of an `ended` meeting will only be available 15 minutes after the meeting has ended. `inProgress` meetings are not fully supported. The API will try to return details of an `inProgress` meeting 15 minutes after the meeting starts. However, it may take longer depending on the traffic. See the [Webex Meetings](/docs/meetings#meeting-states) guide for more information about the states of meetings." - }, - { - "name": "timezone", - "type": "string", - "usage": "e.g. UTC" - }, - { - "name": "to", - "type": "string", - "usage": "End date and time (exclusive) for the range for which meetings are to be returned in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`. This parameter will be ignored if `meetingNumber`, `webLink` or `roomId` is specified. When `meetingType` is `meetingSeries`(either explicitly set or by default), if `from` is specified, the default value for `to` is `from` plus 7 days. If `from` is also not specified, the default value for `to` is 7 days after the current date and time. When `meetingType` is `scheduledMeeting`, `to` is the same as above. When `meetingType` is `meeting`, if `from` is specified, the default value for `to` is `from` plus 7 days. If `from` is also not specified, the default value for `to` is the current date and time." - }, - { - "name": "web-link", - "type": "string", - "usage": "URL encoded link to information page for the meeting objects being requested. `meetingNumber`, `webLink` and `roomId` are mutually exclusive." - } - ] - }, - { - "path": "webex meetings meetings list-admin", - "short": "List Meetings By an Admin", - "long": "Retrieves details for meetings by an admin with a specified meeting number or web link. Please note that there are various products in the [Webex Suite](https://www.webex.com/collaboration-suite.html) such as `Meetings` and `Events`. Currently, only meetings of the `Meetings` product are supported by this API, meetings of others in the suite are not supported. Ad-hoc meetings created by [Create a Meeting](/docs/api/v1/meetings/create-a-meeting) with `adhoc` of `true` and a `roomId` will not be listed, but the ended and ongoing ad-hoc meeting instances will be listed. The following sensitive attributes are hidden from the response: `agenda`, `hostKey`, `password`, `phoneAndVideoSystemPassword`, `panelistPassword`, `phoneAndVideoSystemPanelistPassword`, `webLink`, `sipAddress`, `dialInIpAddress`, `registration` and `telephony.accessCode`.\n\n* If `meetingNumber` is specified, the operation returns an array of meeting objects specified by the `meetingNumber`. Each object in the array can be a scheduled meeting or a meeting series depending on whether the `current` parameter is `true` or `false`, and each object contains the simultaneous interpretation object. Please note that `meetingNumber` and `webLink` are mutually exclusive and they cannot be specified simultaneously.\n\n* If `webLink` is specified, the operation returns an array of meeting objects specified by the `webLink`. Each object in the array can be a scheduled meeting or a meeting series depending on whether the `current` parameter is `true` or `false`, and each object contains the simultaneous interpretation object. Please note that `meetingNumber` and `webLink` are mutually exclusive and they cannot be specified simultaneously.\n\n* The `current` parameter only applies to meeting series. If it's `false`, the `start` and `end` attributes of each returned meeting series object are for the first scheduled meeting of that series. If it's `true` or not specified, the `start` and `end` attributes are for the scheduled meeting which is ready to start or join or the upcoming scheduled meeting of that series.\n\n* To learn more about which attributes are available for different meeting states, please refer to [Available Meeting Attributes for Different Meeting States](/docs/meetings#available-meeting-attributes-for-different-meeting-states).\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) for time stamps in response body, defined in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default value is `UTC` if not specified.", - "flags": [ - { - "name": "current", - "type": "string", - "usage": "Flag identifying to retrieve the current scheduled meeting of the meeting series or the entire meeting series. This parameter only applies to scenarios where `meetingNumber` is specified and the meeting is not an exceptional meeting from a meeting series. If it's `true`, return the scheduled meeting of the meeting series which is ready to join or start or the upcoming scheduled meeting of the meeting series; if it's `false`, return the entire meeting series. The default value is `true`." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-admin" - }, - { - "name": "meeting-number", - "type": "string", - "usage": "Meeting number for the meeting objects being requested. `meetingNumber` and `webLink` are mutually exclusive. If it's an exceptional meeting from a meeting series, the exceptional meeting instead of the primary meeting series is returned." - }, - { - "name": "timezone", - "type": "string", - "usage": "e.g. UTC" - }, - { - "name": "web-link", - "type": "string", - "usage": "URL encoded link to information page for the meeting objects being requested. `meetingNumber` and `webLink` are mutually exclusive." - } - ] - }, - { - "path": "webex meetings meetings list-breakout-sessions", - "short": "List Meeting Breakout Sessions", - "long": "Lists meeting breakout sessions for a meeting with a specified `meetingId`.\n\nThis operation can be used for meeting series, scheduled meeting and ended or ongoing meeting instance objects. See the [Webex Meetings](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) guide for more information about the types of meetings.\n\n* If the meeting of `meetingId` is in progress, the operation returns the breakout sessions which are currently held in the meeting.\n\n* If the meeting of `meetingId` is ended meeting instance, the operation returns the breakout sessions which happended during the meeting instance.\n\n* Otherwise, if it's a meeting series or scheduled meeting and it's not in progress, the operation returns the breakout sessions which are created when the meeting is scheduled.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-breakout-sessions" - }, - { - "name": "host-email", - "type": "string", - "usage": "e.g. `john.andersen@example.com` (string, optional) - Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for a meeting that is hosted by that user." - }, - { - "name": "meeting-id", - "type": "string", - "usage": "Unique identifier for the meeting. This parameter applies to meeting series, scheduled meeting and ended or ongoing meeting instance objects. Please note that currently meeting ID of a scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meeting is not supported for this API.", - "required": true - } - ] - }, - { - "path": "webex meetings meetings list-group", - "short": "List Group Meetings", - "long": "List group meetings with a specified meeting number or web link by a service app which has group meeting access. You can specify the `personId` parameter or `hostEmail` header of whom the meetings will be retrieved. Please note that there are various products in the [Webex Suite](https://www.webex.com/collaboration-suite.html) such as `Meetings` and `Events`. Currently, only meetings of the `Meetings` product are supported by this API, meetings of others in the suite are not supported. Ad-hoc meetings created by [Create a Meeting](/docs/api/v1/meetings/create-a-meeting) with `adhoc` of `true` and a `roomId` will not be listed.\n\n* One of the `personId` parameter and `hostEmail` header must be specified so that only meetings hosted by the person of `personId` or `hostEmail` will be listed.\n\n* `meetingNumber` and `webLink` are mutually exclusive and they cannot be specified simultaneously, but one of them must be specified. The operation returns an array of meeting objects specified by the `meetingNumber` or `webLink`.\n\n* Each object in the array can be a scheduled meeting or a meeting series depending on whether the `current` parameter is `true` or `false`. If it's `false`, the `start` and `end` attributes are for the first scheduled meeting of that series. If it's `true` or not specified, the `start` and `end` attributes are for the scheduled meeting which is ready to start or join or the upcoming scheduled meeting of that series.\n\n* To learn more about which attributes are available for different meeting states, please refer to [Available Meeting Attributes for Different Meeting States](/docs/meetings#available-meeting-attributes-for-different-meeting-states).\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) for time stamps in response body, defined in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default value is `UTC` if not specified.\n\n* `hostEmail`: Email of the user whose meetings will be retrieved. The `hostEmail` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified.", - "flags": [ - { - "name": "current", - "type": "string", - "usage": "Flag identifying to retrieve the current scheduled meeting of the meeting series or the entire meeting series. This parameter only applies to scenarios where the meeting is not an exceptional meeting from a meeting series. If it's `true`, return the scheduled meeting of the meeting series which is ready to join or start or the upcoming scheduled meeting of the meeting series; if it's `false`, return the entire meeting series. The default value is `true`." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-group" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email of the user whose meetings will be retrieved. The `hostEmail` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified." - }, - { - "name": "meeting-number", - "type": "string", - "usage": "Meeting number for the meeting objects being requested. `meetingNumber` and `webLink` are mutually exclusive. If it's an exceptional meeting from a meeting series, the exceptional meeting instead of the primary meeting series is returned." - }, - { - "name": "person-id", - "type": "string", - "usage": "Person ID of the user whose meetings will be retrieved. The person ID can be retrieved from the [People APIs](/docs/api/v1/people), e.g. [Lit People](/docs/api/v1/people/list-people). Note that a person ID retrieved from the People APIs is a Base64-encoded string, e.g. `Y2lzY29zcGFyazovL3VzL1BFT1BMRS9kNDdiMmU3ZC01ZTBmLTRmNjktYWVmNC1lNGZmOTBhZWE3Yzk`. The person ID in the raw UUID format which is the last part of the Base64-decoded string, e.g. `d47b2e7d-5e0f-4f69-aef4-e4ff90aea7c9`, is also supported. The `personId` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified." - }, - { - "name": "timezone", - "type": "string", - "usage": "[Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) for time stamps in response body, defined in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default value is `UTC` if not specified." - }, - { - "name": "web-link", - "type": "string", - "usage": "URL encoded link to information page for the meeting objects being requested. `meetingNumber` and `webLink` are mutually exclusive." - } - ] - }, - { - "path": "webex meetings meetings list-interpreters", - "short": "List Meeting Interpreters", - "long": "Lists meeting interpreters for a meeting with a specified `meetingId`.\n\nThis operation can be used for meeting series, scheduled meeting and ended or ongoing meeting instance objects. If the specified `meetingId` is for a meeting series, the interpreters for the series will be listed; if the `meetingId` is for a scheduled meeting, the interpreters for the particular scheduled meeting will be listed; if the `meetingId` is for an ended or ongoing meeting instance, the interpreters for the particular meeting instance will be listed. See the [Webex Meetings](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) guide for more information about the types of meetings.\n\nThe list returned is sorted in descending order by when interpreters were created.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-interpreters" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin on-behalf-of scopes. If set, the admin may specify the email of a user in a site they manage and the API will return interpreters of the meeting that is hosted by that user." - }, - { - "name": "meeting-id", - "type": "string", - "usage": "Unique identifier for the meeting for which interpreters are being requested. The meeting can be meeting series, scheduled meeting or meeting instance which has ended or is ongoing. Please note that currently meeting ID of a scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meeting is not supported for this API.", - "required": true - } - ] - }, - { - "path": "webex meetings meetings list-invitation-sources", - "short": "List Invitation Sources", - "long": "Lists invitation sources for a meeting.\n\n#### Request Header\n\n* `hostEmail`: Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin on-behalf-of scopes. If set, the admin may specify the email of a user in a site they manage and the API will return recording details of that user.\n\n* `personId`: Unique identifier for the meeting host. This attribute should only be set if the user or application calling the API has the admin-level scopes. When used, the admin may specify the email of a user in a site they manage to be the meeting host.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-invitation-sources" - }, - { - "name": "host-email", - "type": "string", - "usage": "e.g. john.andersen@example.com" - }, - { - "name": "meeting-id", - "type": "string", - "usage": "Unique identifier for the meeting. Only the meeting ID of a scheduled webinar is supported for this API.", - "required": true - }, - { - "name": "person-id", - "type": "string", - "usage": "e.g. Y2lzY29zcGFyazovL3VzL1BFT1BMRS8yNWJiZjgzMS01YmU5LTRjMjUtYjRiMC05YjU5MmM4YTA4NmI" - } - ] - }, - { - "path": "webex meetings meetings list-registrants", - "short": "List Meeting Registrants", - "long": "Meeting's host and cohost can retrieve the list of registrants for a meeting with a specified meeting Id.", - "flags": [ - { - "name": "current", - "type": "string", - "usage": "Whether or not to retrieve only the current scheduled meeting of the meeting series, i.e. the meeting ready to join or start or the upcoming meeting of the meeting series. If it's `true`, return details for the current scheduled meeting of the series, i.e. the scheduled meeting ready to join or start or the upcoming scheduled meeting of the meeting series. If it's `false` or not specified, return details for the entire meeting series. This parameter only applies to meeting series." - }, - { - "name": "email", - "type": "string", - "usage": "Registrant's email to filter registrants." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-registrants" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for a meeting that is hosted by that user." - }, - { - "name": "max", - "type": "string", - "usage": "Limit the maximum number of registrants in the response, up to 100. The default is 10." - }, - { - "name": "meeting-id", - "type": "string", - "usage": "Unique identifier for the meeting. Only the ID of the meeting series is supported for meetingId. IDs of scheduled meetings, meeting instances, or scheduled personal room meetings are not supported. See the [Meetings Overview](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) for more information about meeting types.", - "required": true - }, - { - "name": "registration-time-from", - "type": "string", - "usage": "The time registrants register a meeting starts from the specified date and time (inclusive) in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. If `registrationTimeFrom` is not specified, it equals `registrationTimeTo` minus 7 days." - }, - { - "name": "registration-time-to", - "type": "string", - "usage": "The time registrants register a meeting before the specified date and time (exclusive) in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. If `registrationTimeTo` is not specified, it equals `registrationTimeFrom` plus 7 days. The interval between `registrationTimeFrom` and `registrationTimeTo` must be within 90 days." - } - ] - }, - { - "path": "webex meetings meetings list-session-types", - "short": "List Meeting Session Types", - "long": "List all the meeting session types enabled for a given user.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-session-types" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email address for the user. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will list all the meeting session types enabled for the user." - }, - { - "name": "site-url", - "type": "string", - "usage": "Webex site URL to query. If `siteUrl` is not specified, the users' preferred site will be used. If the authorization token has the admin-level scopes, the admin can set the Webex site URL on behalf of the user specified in the `hostEmail` parameter." - } - ] - }, - { - "path": "webex meetings meetings list-survey-results", - "short": "List Meeting Survey Results", - "long": "Retrieves results for a meeting survey identified by `meetingId`.\n\n#### Request Header\n\n* `timezone`: Time zone for time stamps in response body, defined in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default value is `UTC` if not specified.\n\n* `hostEmail`: Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin on-behalf-of scopes. If set, the admin may specify the email of a user in a site they manage and the API will return the survey results of that user.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-survey-results" - }, - { - "name": "host-email", - "type": "string", - "usage": "e.g. john.andersen@example.com" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the maximum number of meetings in the response, up to 100. The default is 10." - }, - { - "name": "meeting-id", - "type": "string", - "usage": "Unique identifier for the meeting. Please note that only the meeting ID of a scheduled webinar is supported for this API.", - "required": true - }, - { - "name": "meeting-start-time-from", - "type": "string", - "usage": "Start date and time (inclusive) in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format for the meeting objects being requested. `meetingStartTimeFrom` cannot be after `meetingStartTimeTo`. This parameter will be ignored if `meetingId` is the unique identifier for the specific meeting instance. When `meetingId` is not the unique identifier for the specific meeting instance, the `meetingStartTimeFrom`, if not specified, equals `meetingStartTimeTo` minus `1` month; if `meetingStartTimeTo` is also not specified, the default value for `meetingStartTimeFrom` is `1` month before the current date and time. " - }, - { - "name": "meeting-start-time-to", - "type": "string", - "usage": "End date and time (exclusive) in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format for the meeting objects being requested. `meetingStartTimeTo` cannot be prior to `meetingStartTimeFrom`. This parameter will be ignored if `meetingId` is the unique identifier for the specific meeting instance. When `meetingId` is not the unique identifier for the specific meeting instance, if `meetingStartTimeFrom` is also not specified, the default value for `meetingStartTimeTo` is the current date and time;For example,if `meetingStartTimeFrom` is a month ago, the default value for `meetingStartTimeTo` is `1` month after `meetingStartTimeFrom`.Otherwise it is the current date and time. " - }, - { - "name": "timezone", - "type": "string", - "usage": "e.g. UTC" - } - ] - }, - { - "path": "webex meetings meetings list-templates", - "short": "List Meeting Templates", - "long": "Retrieves the list of meeting templates that is available for the authenticated user.\n\nThere are separate lists of meeting templates for different `templateType`, `locale` and `siteUrl`.\n\n* If `templateType` is specified, the operation returns an array of meeting template objects specified by the `templateType`; otherwise, returns an array of meeting template objects of all template types.\n\n* If `locale` is specified, the operation returns an array of meeting template objects specified by the `locale`; otherwise, returns an array of meeting template objects of the default `en_US` locale. Refer to [Meeting Template Locales](/docs/meetings#meeting-template-locales) for all the locales supported by Webex.\n\n* If the parameter `siteUrl` has a value, the operation lists meeting templates on the specified site; otherwise, lists meeting templates on the user's preferred site. All available Webex sites and preferred site of the user can be retrieved by `Get Site List` API.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-templates" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will return meeting templates that are available for that user." - }, - { - "name": "is-default", - "type": "string", - "usage": "The value is `true` or `false`. If it's `true`, return the default meeting templates; if it's `false`, return the non-default meeting templates. If it's not specified, return both default and non-default meeting templates." - }, - { - "name": "is-standard", - "type": "string", - "usage": "The value is `true` or `false`. If it's `true`, return the standard meeting templates; if it's `false`, return the non-standard meeting templates. If it's not specified, return both standard and non-standard meeting templates." - }, - { - "name": "locale", - "type": "string", - "usage": "Locale for the meeting template objects being requested. If not specified, return meeting templates of the default `en_US` locale. Refer to [Meeting Template Locales](/docs/meetings#meeting-template-locales) for all the locales supported by Webex." - }, - { - "name": "site-url", - "type": "string", - "usage": "URL of the Webex site which the API lists meeting templates from. If not specified, the API lists meeting templates from user's preferred site. All available Webex sites and preferred site of the user can be retrieved by `Get Site List` API." - }, - { - "name": "template-type", - "type": "string", - "usage": "Meeting template type for the meeting template objects being requested. If not specified, return meeting templates of all types." - } - ] - }, - { - "path": "webex meetings meetings list-tracking-codes", - "short": "List Meeting Tracking Codes", - "long": "Lists tracking codes on a site by a meeting host. The result indicates which tracking codes and what options can be used to create or update a meeting on the specified site.\n\n* The `options` here differ from those in the [site-level tracking codes](/docs/api/v1/tracking-codes/get-a-tracking-code) and the [user-level tracking codes](/docs/api/v1/tracking-codes/get-user-tracking-codes). It is the result of a selective combination of the two.\n\n* For a tracking code, if there is no user-level tracking code, the API returns the site-level options, and the `defaultValue` of the site-level default option is `true`. If there is a user-level tracking code, it is merged into the `options`. Meanwhile, the `defaultValue` of this user-level option is `true` and the site-level default option becomes non default.\n\n* If `siteUrl` is specified, tracking codes of the specified site will be listed; otherwise, tracking codes of the user's preferred site will be listed. All available Webex sites and the preferred sites of a user can be retrieved by [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-tracking-codes" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email address for the meeting host. This parameter is only used if a user or application calling the API has the admin-level scopes. The admin may specify the email of a user on a site they manage and the API will return meeting participants of the meetings that are hosted by that user." - }, - { - "name": "service", - "type": "string", - "usage": "Service for schedule or sign-up pages." - }, - { - "name": "site-url", - "type": "string", - "usage": "URL of the Webex site which the API retrieves the tracking code from. If not specified, the API retrieves the tracking code from the user's preferred site. All available Webex sites and preferred sites of a user can be retrieved by [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API." - } - ] - }, - { - "path": "webex meetings meetings patch", - "short": "Patch a Meeting", - "long": "
\nIf only guests are waiting in the lobby and the host or cohost has not started the meeting, the meeting state remains `inProgress` for 5 minutes after the last guest leaves. The meeting cannot be patched during this time. If the meeting is started by the host or cohost and then ended normally, it can be patched immediately after it ends.\n
\n\nUpdates details for a meeting with a specified meeting ID. This operation applies to meeting series and scheduled meetings. It doesn't apply to ended or in-progress meeting instances. Ad-hoc meetings created by [Create a Meeting](/docs/api/v1/meetings/create-a-meeting) with `adhoc` of `true` and a `roomId` cannot be updated.\n\n* If the `meetingId` value specified is for a scheduled meeting, the operation updates that scheduled meeting without impact on other scheduled meeting of the parent meeting series.\n\n* If the `meetingId` value specified is for a meeting series, the operation updates the entire meeting series. **Note**: If the value of `start`, `end`, or `recurrence` for the meeting series is changed, any exceptional scheduled meeting in this series is cancelled when the meeting series is updated.\n\n* The `agenda`, `recurrence`, and `trackingCodes` attributes can be specified as `null` so that these attributes become null and hidden from the response after the patch. Note that it's the keyword `null` not the string \"null\".\n\n* If the parameter `recurrence` has a value, a recurring meeting is created based on the rule defined by the value of `recurrence`. For a non-recurring meeting which has no `recurrence` value set, its `meetingType` is also `meetingSeries` which is a meeting series with only one occurrence in Webex meeting modeling. If you specify a `recurrence` like `FREQ=DAILY;INTERVAL=1` which never ends, the furthest date of the series is unlimited. You can also specify a `recurrence` with a very distant ending date in the future, e.g. `FREQ=DAILY;INTERVAL=1;UNTIL=21241001T000000Z`, but the actual furthest date accepted for the recurring meeting is five years from now. Specifically, if it has an ending date, there can be up to 5 occurrences for a yearly meeting, 60 occurrences for a monthly meeting, 261 occurrences for a weekly meeting, or 1826 occurrences for a daily meeting.\n\n* You can't update a meeting that starts 10 years or more in the future.\n\n* Updating a meeting in the API that was created via a calendar connector is not allowed. The meeting may be updated in Webex, but the calendar event may not be updated, resulting in duplicate entries. This action is therefore blocked. In case you must overwrite this behavior, please contact devsupport@webex.com.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for patch" - }, - { - "name": "meeting-id", - "type": "string", - "usage": "Unique identifier for the meeting to be updated. This parameter applies to meeting series and scheduled meetings. It doesn't apply to ended or in-progress meeting instances. Please note that currently meeting ID of a scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meeting is not supported for this API.", - "required": true - } - ] - }, - { - "path": "webex meetings meetings patch-group", - "short": "Patch a Group Meeting", - "long": "Patches details for a group meeting with a specified meeting ID by a service app which has group meeting access. This operation applies to meeting series and scheduled meetings. It doesn't apply to ended or in-progress meeting instances. Ad-hoc meetings created by [Create a Meeting](/docs/api/v1/meetings/create-a-meeting) with `adhoc` of `true` and a `roomId` cannot be updated.\n\n* One of the `personId` parameter and `hostEmail` header must be specified so that only meetings hosted by the person of `personId` or `hostEmail` will be patch.\n\n* If the `meetingId` value specified is for a scheduled meeting, the operation updates that scheduled meeting without impact on other scheduled meeting of the parent meeting series.\n\n* If the `meetingId` value specified is for a meeting series, the operation updates the entire meeting series. **Note**: If the value of `start`, `end`, or `recurrence` for the meeting series is changed, any exceptional scheduled meeting in this series is cancelled when the meeting series is updated.\n\n* The `agenda`, `recurrence`, and `trackingCodes` attributes can be specified as `null` so that these attributes become null and hidden from the response after the patch. Note that it's the keyword `null` not the string \"null\".\n\n* If the parameter `recurrence` has a value, a recurring meeting is created based on the rule defined by the value of `recurrence`. For a non-recurring meeting which has no `recurrence` value set, its `meetingType` is also `meetingSeries` which is a meeting series with only one occurrence in Webex meeting modeling. If you specify a `recurrence` like `FREQ=DAILY;INTERVAL=1` which never ends, the furthest date of the series is unlimited. You can also specify a `recurrence` with a very distant ending date in the future, e.g. `FREQ=DAILY;INTERVAL=1;UNTIL=21241001T000000Z`, but the actual furthest date accepted for the recurring meeting is five years from now. Specifically, if it has an ending date, there can be up to 5 occurrences for a yearly meeting, 60 occurrences for a monthly meeting, 261 occurrences for a weekly meeting, or 1826 occurrences for a daily meeting.\n\n* You can't update a meeting that starts 10 years or more in the future.\n\n* Updating a meeting in the API that was created via a calendar connector is not allowed. The meeting may be updated in Webex, but the calendar event may not be updated, resulting in duplicate entries. This action is therefore blocked. In case you must overwrite this behavior, please contact devsupport@webex.com.\n\n#### Request Header\n\n* `hostEmail`: Email of the user whose meeting will be patched. The `hostEmail` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for patch-group" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email of the user whose meetings will be patched. The `hostEmail` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified." - }, - { - "name": "meeting-id", - "type": "string", - "usage": "Unique identifier for the meeting to be updated. This parameter applies to meeting series and scheduled meetings. It doesn't apply to ended or in-progress meeting instances. Please note that currently meeting ID of a scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meeting is not supported for this API.", - "required": true - }, - { - "name": "person-id", - "type": "string", - "usage": "Person ID of the user whose meeting will be patched. The person ID can be retrieved from the [People APIs](/docs/api/v1/people), e.g. [Lit People](/docs/api/v1/people/list-people). Note that a person ID retrieved from the People APIs is a Base64-encoded string, e.g. `Y2lzY29zcGFyazovL3VzL1BFT1BMRS9kNDdiMmU3ZC01ZTBmLTRmNjktYWVmNC1lNGZmOTBhZWE3Yzk`. The person ID in the raw UUID format which is the last part of the Base64-decoded string, e.g. `d47b2e7d-5e0f-4f69-aef4-e4ff90aea7c9`, is also supported. The `personId` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified." - } - ] - }, - { - "path": "webex meetings meetings query-registrants", - "short": "Query Meeting Registrants", - "long": "Meeting's host and cohost can query the list of registrants for a meeting with a specified meeting ID and registrants email.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "current", - "type": "string", - "usage": "Whether or not to retrieve only the current scheduled meeting of the meeting series, i.e. the meeting ready to join or start or the upcoming meeting of the meeting series. If it's `true`, return details for the current scheduled meeting of the series, i.e. the scheduled meeting ready to join or start or the upcoming scheduled meeting of the meeting series. If it's `false` or not specified, return details for the entire meeting series. This parameter only applies to meeting series." - }, - { - "name": "emails", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for query-registrants" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for a meeting that is hosted by that user." - }, - { - "name": "max", - "type": "string", - "usage": "Limit the maximum number of registrants in the response, up to 100. The default is 10." - }, - { - "name": "meeting-id", - "type": "string", - "usage": "Unique identifier for the meeting. Only the ID of the meeting series is supported for meetingId. IDs of scheduled meetings, meeting instances, or scheduled personal room meetings are not supported. See the [Meetings Overview](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) for more information about meeting types.", - "required": true - }, - { - "name": "order-by", - "type": "string" - }, - { - "name": "order-type", - "type": "string" - }, - { - "name": "status", - "type": "string" - } - ] - }, - { - "path": "webex meetings meetings reassign-host", - "short": "Reassign Meetings to a New Host", - "long": "Reassigns a list of meetings to a new host by an admin user.\n\nAll the meetings of `meetingIds` should belong to the same site, which is the `siteUrl` in the request header, if specified, or the admin user's preferred site, if not specified. All available Webex sites and the preferred sites of a user can be retrieved by [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\nIf the user of `hostEmail` is not qualified to be a host of the target site, the API returns an error with the HTTP status code `403`. If all the meetings referenced by `meetingIds` have been reassigned the new host successfully, the API returns an empty response with the HTTP status code `204`. Otherwise, if all the meetings of `meetingIds` fail or some of them fail, the API returns a \"Multi-Status\" response with status code of `207`, and individual errors for each meeting in the response body.\n\nIf a meeting already has several ended meeting instances before it's assigned to a new host, the existing ended instances are accessible to the original host and not accessible to the new host, but the new meeting instances which happen after the reassignment are only accessible to the new host.\n\nAfter the reassignment, the original host will receive an email of meeting cancellation. However, the meeting in the original host's calendar will not necessarily be removed because user's calendar, e.g. Outlook calendar, is not managed by the meeting system directly.\n\n**Note**: Only IDs of meeting series are supported for the `meetingIds`. IDs of scheduled meetings, meeting instances, or scheduled personal room meetings are not supported. To learn more about different types of meetings, please refer to [Meeting Series, Scheduled Meetings, and Meeting Instances](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances).\n\nThere are several limitations when reassigning meetings:\n\n* Users cannot assign an in-progress meeting.\n\n* Users cannot assign a meeting to a user who is not a Webex user, or an attendee who does not have host privilege.\n\n* Users cannot assign a meeting with calling/callback to a host user who does not have calling/callback privileges\n\n* Users cannot assign a meeting with session type A to a host user who does not have session type A privileges.\n\n* Users cannot assign an MC or Webinar to a new host who does not have an MC license or a Webinar license.\n\n* Users cannot assign a TC/EC1.0/SC meeting, or a meeting that is created by on-behalf to a new host.\n\n* Users can reassign hosts for meetings from third-party integrations, such as Outlook or Google. Note that this is not recommended because it may result in inconsistent data between both parties.\n\n#### Request Header\n\n* `siteUrl`: Optional request header parameter. All the meetings of `meetingIds` should belong to the site referenced by siteUrl if specified. Otherwise, the meetings should belong to the admin user's preferred sites. All available Webex sites and the preferred sites of a user can be retrieved by [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for reassign-host" - }, - { - "name": "host-email", - "type": "string" - }, - { - "name": "meeting-ids", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "site-url", - "type": "string", - "usage": "e.g. example.webex.com" - } - ] - }, - { - "path": "webex meetings meetings register-registrant", - "short": "Register a Meeting Registrant", - "long": "Register a new registrant for a meeting. When a meeting or webinar is created, this API can only be used if Registration is checked on the page or the registration attribute is specified through the [Create a Meeting](/docs/api/v1/meetings/create-a-meeting) API.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "current", - "type": "string", - "usage": "Whether or not to retrieve only the current scheduled meeting of the meeting series, i.e. the meeting ready to join or start or the upcoming meeting of the meeting series. If it's `true`, return details for the current scheduled meeting of the series, i.e. the scheduled meeting ready to join or start or the upcoming scheduled meeting of the meeting series. If it's `false` or not specified, return details for the entire meeting series. This parameter only applies to meeting series." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for register-registrant" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for a meeting that is hosted by that user." - }, - { - "name": "meeting-id", - "type": "string", - "usage": "Unique identifier for the meeting. Only the ID of the meeting series is supported for meetingId. IDs of scheduled meetings, meeting instances, or scheduled personal room meetings are not supported. See the [Meetings Overview](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) for more information about meeting types.", - "required": true - } - ] - }, - { - "path": "webex meetings meetings update", - "short": "Update a Meeting", - "long": "
\nThe PUT method is still supported and behaves the same as before, will be deprecated in the future. Use the PATCH method instead.\n
\n\n
\nIf only guests are waiting in the lobby and the host or cohost has not started the meeting, the meeting state remains `inProgress` for 5 minutes after the last guest leaves. The meeting cannot be updated during this time. If the meeting is started by the host or cohost and then ended normally, it can be updated immediately after it ends.\n
\n\nUpdates details for a meeting with a specified meeting ID. This operation applies to meeting series and scheduled meetings. It doesn't apply to ended or in-progress meeting instances. Ad-hoc meetings created by [Create a Meeting](/docs/api/v1/meetings/create-a-meeting) with `adhoc` of `true` and a `roomId` cannot be updated.\n\n* If the `meetingId` value specified is for a scheduled meeting, the operation updates that scheduled meeting without impact on other scheduled meeting of the parent meeting series.\n\n* If the `meetingId` value specified is for a meeting series, the operation updates the entire meeting series. **Note**: If the value of `start`, `end`, or `recurrence` for the meeting series is changed, any exceptional scheduled meeting in this series is cancelled when the meeting series is updated.\n\n* If the parameter `recurrence` has a value, a recurring meeting is created based on the rule defined by the value of `recurrence`. For a non-recurring meeting which has no `recurrence` value set, its `meetingType` is also `meetingSeries` which is a meeting series with only one occurrence in Webex meeting modeling. If you specify a `recurrence` like `FREQ=DAILY;INTERVAL=1` which never ends, the furthest date of the series is unlimited. You can also specify a `recurrence` with a very distant ending date in the future, e.g. `FREQ=DAILY;INTERVAL=1;UNTIL=21241001T000000Z`, but the actual furthest date accepted for the recurring meeting is five years from now. Specifically, if it has an ending date, there can be up to 5 occurrences for a yearly meeting, 60 occurrences for a monthly meeting, 261 occurrences for a weekly meeting, or 1826 occurrences for a daily meeting.\n\n* You can't update a meeting that starts 10 years or more in the future.\n\n* Updating a meeting created using the API via a calendar connector is not supported. While the meeting may be updated in Webex, the calendar event may not be updated resulting in duplicate entries. If you need to override this behavior, contact devsupport@webex.com.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "meeting-id", - "type": "string", - "usage": "Unique identifier for the meeting to be updated. This parameter applies to meeting series and scheduled meetings. It doesn't apply to ended or in-progress meeting instances. Please note that currently meeting ID of a scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meeting is not supported for this API.", - "required": true - } - ] - }, - { - "path": "webex meetings meetings update-breakout-sessions", - "short": "Update Meeting Breakout Sessions", - "long": "Updates breakout sessions of a meeting with a specified meeting ID in the pre-meeting state. This operation applies to meeting series and scheduled meetings.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-breakout-sessions" - }, - { - "name": "meeting-id", - "type": "string", - "usage": "Unique identifier for the meeting. Does not support meeting IDs for a scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meeting.", - "required": true - } - ] - }, - { - "path": "webex meetings meetings update-control-status", - "short": "Update Meeting Control Status", - "long": "To start, pause, resume, or stop a meeting recording; To lock or unlock an on-going meeting.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-control-status" - }, - { - "name": "locked", - "type": "bool", - "default": "false" - }, - { - "name": "meeting-id", - "type": "string", - "usage": "Unique identifier for the meeting. Does not support meeting IDs for a scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meeting." - }, - { - "name": "recording-paused", - "type": "bool", - "default": "false" - }, - { - "name": "recording-started", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex meetings meetings update-group-control-status", - "short": "Update Group Meeting Control Status", - "long": "Update meeting recording control status by a service app which has group meeting access. The service app can use this API to start, stop, pause, or resume meeting recording by providing an `action` value. The `personId` parameter or `hostEmail` header of the person to whom the meeting belongs must be specified. The service app which invokes the API manages one or more groups, and it also manages one or more sites. The user specified by `hostEmail` or `personId` must be in a group that is managed by the service app. The meeting specified by `meetingId` must be on a site that is managed by the service app. Please note that once the meeting recording has been controlled by a person in the meeting, the recording control of this meeting can no longer be controlled by the service app via the API.", - "flags": [ - { - "name": "action", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-group-control-status" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email of the user whose meeting control will be updated. The `hostEmail` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified." - }, - { - "name": "meeting-id", - "type": "string" - }, - { - "name": "person-id", - "type": "string", - "usage": "Person ID of the user whose meeting control will be updated. The person ID can be retrieved from the [People APIs](/docs/api/v1/people), e.g. [Lit People](/docs/api/v1/people/list-people). Note that a person ID retrieved from the People APIs is a Base64-encoded string, e.g. `Y2lzY29zcGFyazovL3VzL1BFT1BMRS9kNDdiMmU3ZC01ZTBmLTRmNjktYWVmNC1lNGZmOTBhZWE3Yzk`. The person ID in the raw UUID format which is the last part of the Base64-decoded string, e.g. `d47b2e7d-5e0f-4f69-aef4-e4ff90aea7c9`, is also supported. The `personId` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified." - } - ] - }, - { - "path": "webex meetings meetings update-interpreter", - "short": "Update a Meeting Interpreter", - "long": "Updates details for a meeting interpreter identified by `meetingId` and `interpreterId` in the URI.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "display-name", - "type": "string" - }, - { - "name": "email", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-interpreter" - }, - { - "name": "host-email", - "type": "string" - }, - { - "name": "interpreter-id", - "type": "string", - "usage": "Unique identifier for the interpreter whose details are being requested.", - "required": true - }, - { - "name": "language-code1", - "type": "string" - }, - { - "name": "language-code2", - "type": "string" - }, - { - "name": "meeting-id", - "type": "string", - "usage": "Unique identifier for the meeting whose interpreters were belong to.", - "required": true - }, - { - "name": "send-email", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex meetings meetings update-registration-form", - "short": "Update Meeting Registration Form", - "long": "Enable or update a registration form for a meeting.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-registration-form" - }, - { - "name": "meeting-id", - "type": "string", - "usage": "Unique identifier for the meeting. Only the ID of the meeting series is supported for meetingId. IDs of scheduled meetings, meeting instances, or scheduled personal room meetings are not supported. See the [Meetings Overview](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) for more information about meeting types.", - "required": true - } - ] - }, - { - "path": "webex meetings meetings update-simultaneous-interpretation", - "short": "Update Meeting Simultaneous interpretation", - "long": "Updates simultaneous interpretation options of a meeting with a specified meeting ID. This operation applies to meeting series and scheduled meetings. It doesn't apply to ended or in-progress meeting instances.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-simultaneous-interpretation" - }, - { - "name": "meeting-id", - "type": "string", - "usage": "Unique identifier for the meeting. Does not support meeting IDs for a scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meeting.", - "required": true - } - ] - }, - { - "path": "webex meetings messages", - "short": "Messages commands" - }, - { - "path": "webex meetings messages delete-meeting", - "short": "Delete a Meeting Message", - "long": "Deletes a Meeting Message from the In Meeting Chat, using its ID.\n\nThis ID can be retrieved by a Compliance Officer using the [events API](/docs/api/v1/events/list-events) filtering on the `meetingMessages` resource type.\n\nNOTE: When viewing the response from the events API, there are 2 `id` fields. The ID to be used here can be found under the `data` field in the response.\n\nSpecify the `meetingMessage` ID in the `meetingMessageId` parameter in the URI.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-meeting" - }, - { - "name": "meeting-message-id", - "type": "string", - "usage": "The unique identifier for the message.", - "required": true - } - ] - }, - { - "path": "webex meetings participants", - "short": "Participants commands" - }, - { - "path": "webex meetings participants admit", - "short": "Admit Participants", - "long": "Admit multiple participants to a meeting in progress.\n\nThis API limits the maximum size of `items` in the request body to 100.\n\nEach `participantId` of `items` in the request body should have the same prefix of `meetingId`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for admit" - } - ] - }, - { - "path": "webex meetings participants call-out-sip", - "short": "Call Out a SIP Participant", - "long": "Initiate a call to a SIP participant to join a meeting.\n\nIf a user invoking the API is not a [Service App](/docs/service-apps), the user must join the meeting before invoking the API. If a user is a [Service App](/docs/service-apps), the service app can invoke the API without joining the meeting. In both cases, the normal user or the service app that invokes the API must be the meeting host or cohost. If the meeting is created by the service app on behalf of the real host, the service app cannot use the admin on behalf function to invoke this API. Instead the host or cohost must execute the action.\n\nThe authenticated user calling this API must have the `meeting:participants_write` scope.\n\nThe ringing on the invited SIP device stops in 30 seconds if there is no response.", - "flags": [ - { - "name": "address", - "type": "string" - }, - { - "name": "address-type", - "type": "string" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "display-name", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for call-out-sip" - }, - { - "name": "invitation-correlation-id", - "type": "string" - }, - { - "name": "meeting-id", - "type": "string" - }, - { - "name": "meeting-number", - "type": "string" - } - ] - }, - { - "path": "webex meetings participants cancel-calling-out-sip", - "short": "Cancel Calling Out a SIP Participant", - "long": "Cancel the call to a SIP participant before the ringing on the invited SIP device stops. The ringing on the invited SIP device stops in 30 seconds if there is no response.\n\nIf a user invoking the API is not a [Service App](/docs/service-apps), the user must join the meeting before invoking the API. If a user is a [Service App](/docs/service-apps), the service app can invoke the API without joining the meeting. In both cases, the normal user or the service app that invokes the API must be the meeting host or cohost. If the meeting is created by the service app on behalf of the real host, the service app cannot use the admin on behalf function to invoke this API. Instead the host or cohost must execute the action.\n\nThe authenticated user calling this API must have the `meeting:participants_write` scope.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for cancel-calling-out-sip" - }, - { - "name": "participant-id", - "type": "string" - } - ] - }, - { - "path": "webex meetings participants get-meeting", - "short": "Get Meeting Participant Details", - "long": "Get a meeting participant details of a live or post meeting. The `participantId` is required to identify the meeting and the participant.\n\nThe authenticated user calling this API must either have an Administrator role with the `meeting:admin_participants_read` scope, or be the meeting host.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-meeting" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes, the admin may specify the email of a user in a site they manage and the API will return meeting participants of the meetings that are hosted by that user." - }, - { - "name": "participant-id", - "type": "string", - "usage": "The unique identifier for the meeting and the participant.", - "required": true - } - ] - }, - { - "path": "webex meetings participants list-meeting", - "short": "List Meeting Participants", - "long": "List all participants in an in-progress meeting or an ended meeting. The `meetingId` parameter is required, which is the unique identifier for the meeting.\n\nThe authenticated user calling this API must either have an Administrator role with the `meeting:admin_participants_read` scope, or be the meeting host.\n\n* If the `meetingId` value specified is for a meeting series, the operation returns participants' details for the last instance in the meeting series. If the `meetingStartTimeFrom` value and the `meetingStartTimeTo` value are specified, the operation returns participants' details for the last instance in the meeting series in the time range.\n\n* If the `meetingId` value specified is for a scheduled meeting from a meeting series, the operation returns participants' details for that scheduled meeting. If the `meetingStartTimeFrom` value and the `meetingStartTimeTo` value are specified, the operation returns participants' details for the last instance in the scheduled meeting in the time range.\n\n* If the `meetingId` value specified is for a meeting instance which is in progress or ended, the operation returns participants' details for that meeting instance.\n\n* If the meeting is in progress, the operation returns all the real-time participants. If the meeting is ended, the operation returns all the participants that have joined the meeting.\n\n* If the `breakoutSessionId` parameter is specified, the operation returns participants who joined the specified breakout session. It only applies to end meeting instances.\n\n* The `breakoutSessionsAttended` attribute is only returned for a participant of an ended meeting instance if the participant joined breakout sessions in the meeitng.\n\n* The `meetingStartTimeFrom` and `meetingStartTimeTo` only apply when `meetingId` is a series ID or an occurrence ID.\n\n* If the webinar is in progress when the attendee has ever been unmuted to speak in the webinar, this attendee becomes a panelist. The operation returns include the people who have been designated as panelists when the webinar is created and have joined the webinar, and the attendees who have joined the webinar and are unmuted to speak in the webinar temporarily. If the webinar is ended, the operation returns all the participants, including all panelists and all attendees who are not panelists.\n\n#### Request Header\n\n* `timezone`: Time zone for time stamps in the response body, defined in conformance with the [IANA time zone database](https://www.iana.org/time-zones).", - "flags": [ - { - "name": "breakout-session-id", - "type": "string", - "usage": "The unique identifier for a breakout session which happened during an ended meeting instance. If the `breakoutSessionId` is specified, the operation returns participants who joined the breakout session. Only applies to ended meeting instances." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-meeting" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes, the admin may specify the email of a user in a site they manage and the API will return meeting participants of the meetings that are hosted by that user." - }, - { - "name": "join-time-from", - "type": "string", - "usage": "The time participants join a meeting starts from the specified date and time (inclusive) in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. If `joinTimeFrom` is not specified, it equals `joinTimeTo` minus 7 days." - }, - { - "name": "join-time-to", - "type": "string", - "usage": "The time participants join a meeting before the specified date and time (exclusive) in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. If `joinTimeTo` is not specified, it equals `joinTimeFrom` plus 7 days. The interval between `joinTimeFrom` and `joinTimeTo` must be within 90 days." - }, - { - "name": "max", - "type": "string", - "usage": "Limit the maximum number of participants in the response, up to 100." - }, - { - "name": "meeting-id", - "type": "string", - "usage": "The unique identifier for the meeting. Please note that currently meeting ID of a scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meeting is not supported for this API." - }, - { - "name": "meeting-start-time-from", - "type": "string", - "usage": "Meetings start from the specified date and time(exclusive) in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. If `meetingStartTimeFrom` is not specified, it equals `meetingStartTimeTo` minus 1 month; if `meetingStartTimeTo` is also not specified, the default value for `meetingStartTimeFrom` is 1 month before current date and time." - }, - { - "name": "meeting-start-time-to", - "type": "string", - "usage": "Meetings start before the specified date and time(exclusive) in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. If `meetingStartTimeTo` is not specified, it equals the result of a comparison, `meetingStartTimeFrom` plus one month and the current time, and the result is the earlier of the two; if `meetingStartTimeFrom` is also not specified, the default value for `meetingStartTimeTo` is current date and time minus 1 month." - }, - { - "name": "timezone", - "type": "string", - "usage": "e.g. UTC" - } - ] - }, - { - "path": "webex meetings participants query-meeting-email", - "short": "Query Meeting Participants with Email", - "long": "Query participants in a live meeting, or after the meeting, using participant's email. The `meetingId` parameter is the unique identifier for the meeting and is required.\n\nThe authenticated user calling this API must either have an Administrator role with the `meeting:admin_participants_read` scope, or be the meeting host.\n\n* If the `meetingId` value specified is for a meeting series, the operation returns participants' details for the last instance in the meeting series. If the `meetingStartTimeFrom` value and the `meetingStartTimeTo` value are specified, the operation returns participants' details for the last instance in the meeting series in the time range.\n\n* If the `meetingId` value specified is for a scheduled meeting from a meeting series, the operation returns participants' details for that scheduled meeting. If the `meetingStartTimeFrom` value and the `meetingStartTimeTo` value are specified, the operation returns participants' details for the last instance in the scheduled meeting in the time range.\n\n* If the `meetingId` value specified is for a meeting instance which is in progress or ended, the operation returns participants' details for that meeting instance.\n\n* The `meetingStartTimeFrom` and `meetingStartTimeTo` only apply when `meetingId` is a series ID or an occurrence ID.\n\n#### Request Header\n\n* `timezone`: Time zone for time stamps in the response body, defined in conformance with the [IANA time zone database](https://www.iana.org/time-zones).", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "emails", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for query-meeting-email" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin-level scopes, the admin may specify the email of a user in a site they manage and the API will return meeting participants of the meetings that are hosted by that user." - }, - { - "name": "join-time-from", - "type": "string" - }, - { - "name": "join-time-to", - "type": "string" - }, - { - "name": "meeting-id", - "type": "string", - "usage": "The unique identifier for the meeting." - }, - { - "name": "meeting-start-time-from", - "type": "string", - "usage": "Meetings start from the specified date and time(exclusive) in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. If `meetingStartTimeFrom` is not specified, it equals `meetingStartTimeTo` minus 1 month; if `meetingStartTimeTo` is also not specified, the default value for `meetingStartTimeFrom` is 1 month before current date and time." - }, - { - "name": "meeting-start-time-to", - "type": "string", - "usage": "Meetings start before the specified date and time(exclusive) in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. If `meetingStartTimeTo` is not specified, it equals the result of a comparison, `meetingStartTimeFrom` plus one month and the current time, and the result is the earlier of the two; if `meetingStartTimeFrom` is also not specified, the default value for `meetingStartTimeTo` is current date and time minus 1 month." - }, - { - "name": "timezone", - "type": "string", - "usage": "e.g. UTC" - } - ] - }, - { - "path": "webex meetings participants update", - "short": "Update a Participant", - "long": "Mute, un-mute, expel, or admit a participant in a live meeting. The `participantId` is required to identify the meeting and the participant.\n\nNotes:\n\n* The owner of the OAuth token calling this API needs to be the meeting host or co-host.\n\n* The `expel` attribute always takes precedence over `admit` and `muted`. The request can have all `expel`, `admit` and `muted` or any of them.\n\n
There is an inconsistent behavior in Webex Meetings App when all active meeting participants join using Webex Meetings App and the host attempts to change meeting participant status using this API. Requests to mute, un-mute, admit, or expel a meeting participant return a successful response and update the state in the API, but the changes will not be applied to the Webex Meetings App participants. The inconsistent behavior in Webex Meetings App will be corrected in a future release.\n**Workaround**: [Enable closed captions](https://help.webex.com/en-us/article/WBX47352/How-Do-I-Enable-Closed-Captions?) or enable the [Webex Assistant](https://help.webex.com/en-us/article/n91uf2x/Turn-on-or-turn-off-Webex-Assistant-during-a-meeting-or-webinar).
", - "flags": [ - { - "name": "admit", - "type": "bool", - "default": "false" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "expel", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "muted", - "type": "bool", - "default": "false" - }, - { - "name": "participant-id", - "type": "string", - "usage": "The unique identifier for the meeting and the participant.", - "required": true - } - ] - }, - { - "path": "webex meetings people", - "short": "People commands" - }, - { - "path": "webex meetings people create-person", - "short": "Create a Person", - "long": "Create a new user account for a given organization. Only an admin can create a new user account.\n\nAt least one of the following body parameters is required to create a new user: `displayName`, `firstName`, `lastName`.\n\nCurrently, users may have only one email address associated with their account. The `emails` parameter is an array, which accepts multiple values to allow for future expansion, but currently only one email address will be used for the new user.\n\nAdmin users can include `Webex calling` (BroadCloud) user details in the response by specifying `callingData` parameter as true. It may happen that the POST request with calling data returns a 400 status, but the person was created still. One way to get into this state is if an invalid phone number is assigned to a user. The people API aggregates calls to several other microservices, and one may have failed. A best practice is to check if the user exists before retrying. This can be done with the user's email address and a GET /people.\n\nWhen doing attendee management, append `#attendee` to the `siteUrl` parameter (e.g. `mysite.webex.com#attendee`) to make the new user an attendee for a site.\n\n**NOTES**:\n\n* For creating a `Webex Calling` user, you must provide `phoneNumbers` or `extension`, `locationId`, and `licenses` string in the same request.\n\n* `SipAddresses` are asigned via an asynchronous process. This means that the POST response may not show the SIPAddresses immediately. Instead you can verify them with a separate GET to /people, after they were newly configured.\n\n* When assigning multiple licenses in a single request, the system will assign all valid and available licenses. If any requested licenses cannot be assigned, the operation will continue with the remaining licenses. As a result, it is possible that not all requested licenses are assigned to the user.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calling-data", - "type": "string", - "usage": "Include Webex Calling user details in the response." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-person" - }, - { - "name": "min-response", - "type": "string", - "usage": "Set to `true` to improve performance by omitting person details and returning only the ID in the response when successful. If unsuccessful the response will have optional error details." - } - ] - }, - { - "path": "webex meetings people delete-person", - "short": "Delete a Person", - "long": "Remove a person from the system.\n\n**Required Administrator Roles:**\n\nThe following administrators have permission to use this API:\n\n**Customer Organization:**\n- Full administrator\n- User administrator\n\n**Partner/External Access:**\n- External full administrator\n\n**Note:** External read-only administrators, provisioning administrators, and device administrators cannot delete users.\n\nSpecify the person ID in the `personId` parameter in the URI.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-person" - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex meetings people get-my-own", - "short": "Get My Own Details", - "long": "Get profile details for the authenticated user. This is the same as GET `/people/{personId}` using the Person ID associated with your Auth token.\n\nAdmin users can include `Webex Calling` (BroadCloud) user details in the response by specifying `callingData` parameter as true.", - "flags": [ - { - "name": "calling-data", - "type": "string", - "usage": "Include Webex Calling user details in the response." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-my-own" - } - ] - }, - { - "path": "webex meetings people get-person", - "short": "Get Person Details", - "long": "Shows details for a person, by ID.\n\nResponse properties associated with a user's presence status, such as `status` or `lastActivity`, will only be displayed for people within your organization or an organization you manage. Presence information will not be shown if the authenticated user has [disabled status sharing](https://help.webex.com/nkzs6wl/).\n\nAdmin users can include `Webex Calling` (BroadCloud) user details in the response by specifying `callingData` parameter as `true`.\n\nSpecify the person ID in the `personId` parameter in the URI.", - "flags": [ - { - "name": "calling-data", - "type": "string", - "usage": "Include Webex Calling user details in the response." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-person" - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex meetings people list", - "short": "List People", - "long": "List people in your organization. For most users, either the `email` or `displayName` parameter is required. Admin users can omit these fields and list all users in their organization.\n\nResponse properties associated with a user's presence status, such as `status` or `lastActivity`, will only be returned for people within your organization or an organization you manage. Presence information will not be returned if the authenticated user has [disabled status sharing](https://help.webex.com/nkzs6wl/). Calling /people frequently to poll `status` information for a large set of users will quickly lead to `429` errors and throttling of such requests and is therefore discouraged.\n\nAdmin users can include `Webex Calling` (BroadCloud) user details in the response by specifying `callingData` parameter as `true`. Admin users can list all users in a location. Admin users will receive an enriched payload with additional administrative fields like `licenses`,`roles`, `locations` etc. These fields are shown when accessing a user via GET /people/{id}, not when doing a GET /people?id=\n\nLookup by `email` is only supported for people within the same org or where a partner admin relationship is in place.\n\nLookup by `roles` is only supported for Admin users for the people within the same org.\n\nLong result sets will be split into [pages](/docs/basics#pagination).", - "flags": [ - { - "name": "calling-data", - "type": "string", - "usage": "Include Webex Calling user details in the response." - }, - { - "name": "display-name", - "type": "string", - "usage": "List people whose name starts with this string. For non-admin requests, either this or email are required." - }, - { - "name": "email", - "type": "string", - "usage": "List people with this email address. For non-admin requests, either this or `displayName` are required. With the exception of partner admins and a managed org relationship, people lookup by email is only available for users in the same org." - }, - { - "name": "exclude-status", - "type": "string", - "usage": "Omit people status/availability to enhance query performance." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "id", - "type": "string", - "usage": "List people by ID. Accepts up to 85 person IDs separated by commas. If this parameter is provided then presence information (such as the `lastActivity` or `status` properties) will not be included in the response." - }, - { - "name": "location-id", - "type": "string", - "usage": "List people present in this location." - }, - { - "name": "max", - "type": "string", - "usage": "Limit the maximum number of people in the response. If `callingData`=true, then `max` will not be more than 100. If `locationId` is specified then `max` will not be more than 50." - }, - { - "name": "org-id", - "type": "string", - "usage": "List people in this organization. Only admin users of another organization (such as partners) may use this parameter.", - "hidden": true - }, - { - "name": "roles", - "type": "string", - "usage": "List of roleIds separated by commas." - } - ] - }, - { - "path": "webex meetings people update-person", - "short": "Update a Person", - "long": "Update details for a person, by ID.\n\nSpecify the person ID in the `personId` parameter in the URI. Only an admin can update a person details.\n\nInclude all details for the person. This action expects all user details to be present in the request. A common approach is to first [GET the person's details](/docs/api/v1/people/get-person-details), make changes, then PUT both the changed and unchanged values.\n\nAdmin users can include `Webex Calling` (BroadCloud) user details in the response by specifying `callingData` parameter as true.\n\nWhen doing attendee management, to update a user from host role to an attendee for a site append `#attendee` to the respective `siteUrl` and remove the meeting host license for this site from the license array.\nTo update a person from an attendee role to a host for a site, add the meeting license for this site in the meeting array, and remove that site from the `siteurl` parameter.\n\nTo remove the attendee privilege for a user on a meeting site, remove the `sitename#attendee` from the `siteUrl`s array. The `showAllTypes` parameter must be set to `true`.\n\n**NOTE**:\n\n* When assigning a Webex Calling license, either a telephone number or extension must already be assigned to the person or provided in the request payload.\n\n* When `callingData` is set to `true`, a Webex Calling license must be included in the `licenses` array.\n\n* The `locationId` can only be set when assigning a calling license to a user. It cannot be changed if a user is already an existing calling user.\n\n* The `extension` field should be used to update the Webex Calling extension for a person. The extension value should not include the location routing prefix. The `work_extension` type in the `phoneNumbers` object as seen in the response payload of [List People](/docs/api/v1/people/list-people) or [Get Person Details](/docs/api/v1/people/get-person-details), cannot be used to set the Webex Calling extension for a person.\n\n* When updating a user with multiple email addresses using a PUT request, ensure that the primary email address is listed first in the array. Note that the order of email addresses returned by a GET request is not guaranteed..\n\n* The People API is a combination of several microservices, each responsible for specific attributes of a person. As a result, a PUT request that returns an error response code may still have altered some values of the person's data. Therefore, it is recommended to perform a GET request after encountering an error to verify the current state of the resource. \n\n* Some licenses are implicitly assigned by the system and cannot be admin controlled. They are necessary for the baseline function of the Webex system. If you get an error about implicitly assigned licensed that cannot be removed, please ensure you have the corresponding license in your PUT request.\n\n* When assigning multiple licenses in a single request, the system will assign all valid and available licenses. If any requested licenses cannot be assigned, the operation will continue with the remaining licenses. As a result, it is possible that not all requested licenses are assigned to the user.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calling-data", - "type": "string", - "usage": "Include Webex Calling user details in the response." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-person" - }, - { - "name": "min-response", - "type": "string", - "usage": "Set to `true` to improve performance by omitting person details in the response. If unsuccessful the response will have optional error details." - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - }, - { - "name": "show-all-types", - "type": "string", - "usage": "Include additional user data like `#attendee` role." - } - ] - }, - { - "path": "webex meetings preferences", - "short": "Preferences commands" - }, - { - "path": "webex meetings preferences batch-refresh-personal-meeting-room-id", - "short": "Batch Refresh Personal Meeting Room ID", - "long": "Refreshes personal room IDs automatically according to the current personal room ID rule of the target site or by the values specified by the admin user.\n\nThe new personal room IDs are generated by the site's settings automatically if `systemGenerated` is true; otherwise, replace the existing personal room IDs with the specified values if `systemGenerated` is false or not specified.\n\nIt may take up to 30 minutes to see the updated personal room ID on the Webex meeting page after refreshing the personal room ID due to cache.\n\nEither all items in `personalMeetingRoomIds` have `personalMeetingRoomId`, or they all have `systemGenerated` which equals true. `personalMeetingRoomId` and `systemGenerated: true` cannot be specified at the same time.\n\nThe items in `personalMeetingRoomIds` either all have `personId` or all have `email` in a single request. Partial `personId` and partial `email` is not allowed in the same request.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for batch-refresh-personal-meeting-room-id" - } - ] - }, - { - "path": "webex meetings preferences delete-delegate-emails", - "short": "Delete Delegate Emails", - "long": "Delete delegate emails for the authenticated user.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "emails", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-delegate-emails" - }, - { - "name": "site-url", - "type": "string", - "usage": "URL of the Webex site to query. For individual use, if `siteUrl` is not specified, the query will use the default site of the user. For admin use, if `siteUrl` is not specified, the query will use the default site for the admin's authorization token used to make the call. In the case where the user belongs to a site different than the admin’s default site, the admin can set the site to query using the `siteUrl` parameter. All available Webex sites and default site of a user can be retrieved from [/meetingPreferences/sites](/docs/api/v1/meeting-preferences/get-site-list)." - }, - { - "name": "user-email", - "type": "string", - "usage": "Email address for the user. This parameter is only used if the user or application calling the API has the [admin-level scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will update scheduling options for that user." - } - ] - }, - { - "path": "webex meetings preferences get-audio-options", - "short": "Get Audio Options", - "long": "Retrieves audio options for the authenticated user.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-audio-options" - }, - { - "name": "site-url", - "type": "string", - "usage": "URL of the Webex site to query. For individual use, if `siteUrl` is not specified, the query will use the default site of the user. For admin use, if `siteUrl` is not specified, the query will use the default site for the admin's authorization token used to make the call. In the case where the user belongs to a site different than the admin’s default site, the admin can set the site to query using the `siteUrl` parameter. All available Webex sites and default site of a user can be retrieved from [/meetingPreferences/sites](/docs/api/v1/meeting-preferences/get-site-list)." - }, - { - "name": "user-email", - "type": "string", - "usage": "Email address for the user. This parameter is only used if the user or application calling the API has the [admin-level scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will return details of the audio options for that user." - } - ] - }, - { - "path": "webex meetings preferences get-meeting", - "short": "Get Meeting Preference Details", - "long": "Retrieves meeting preferences for the authenticated user.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-meeting" - }, - { - "name": "site-url", - "type": "string", - "usage": "URL of the Webex site to query. For individual use, if `siteUrl` is not specified, the query will use the default site of the user. For admin use, if `siteUrl` is not specified, the query will use the default site for the admin's authorization token used to make the call. In the case where the user belongs to a site different than the admin’s default site, the admin can set the site to query using the `siteUrl` parameter. All available Webex sites and default site of a user can be retrieved from [/meetingPreferences/sites](/docs/api/v1/meeting-preferences/get-site-list)." - }, - { - "name": "user-email", - "type": "string", - "usage": "Email address for the user. This parameter is only used if the user or application calling the API has the required [admin-level scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will return details of the meeting preferences for that user." - } - ] - }, - { - "path": "webex meetings preferences get-personal-meeting-room-options", - "short": "Get Personal Meeting Room Options", - "long": "Retrieves the Personal Meeting Room options for the authenticated user.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-personal-meeting-room-options" - }, - { - "name": "site-url", - "type": "string", - "usage": "URL of the Webex site to query. For individual use, if `siteUrl` is not specified, the query will use the default site of the user. For admin use, if `siteUrl` is not specified, the query will use the default site for the admin's authorization token used to make the call. In the case where the user belongs to a site different than the admin’s default site, the admin can set the site to query using the `siteUrl` parameter. All available Webex sites and default site of a user can be retrieved from [/meetingPreferences/sites](/docs/api/v1/meeting-preferences/get-site-list)." - }, - { - "name": "user-email", - "type": "string", - "usage": "Email address for the user. This parameter is only used if the user or application calling the API has the [admin-level scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will return details of the Personal Meeting Room options for that user." - } - ] - }, - { - "path": "webex meetings preferences get-scheduling-options", - "short": "Get Scheduling Options", - "long": "Retrieves scheduling options for the authenticated user.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-scheduling-options" - }, - { - "name": "site-url", - "type": "string", - "usage": "URL of the Webex site to query. For individual use, if `siteUrl` is not specified, the query will use the default site of the user. For admin use, if `siteUrl` is not specified, the query will use the default site for the admin's authorization token used to make the call. In the case where the user belongs to a site different than the admin’s default site, the admin can set the site to query using the `siteUrl` parameter. All available Webex sites and default site of a user can be retrieved from [/meetingPreferences/sites](/docs/api/v1/meeting-preferences/get-site-list)." - }, - { - "name": "user-email", - "type": "string", - "usage": "Email address for the user. This parameter is only used if the user or application calling the API has the [admin-level scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will return details of the scheduling options for that user." - } - ] - }, - { - "path": "webex meetings preferences get-site-list", - "short": "Get Site List", - "long": "Retrieves the list of Webex sites that the authenticated user is set up to use.\nWhen the admin tries to get the site list via `userEmail`, if `siteUrl` is not specified, the API searches the user ID from the admin's default site. If `siteUrl` is specified, the API searches the user ID from the specified site.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-site-list" - }, - { - "name": "site-url", - "type": "string", - "usage": "URL of the Webex site to query. If `siteUrl` is not specified, the query will use the default site for the admin's authorization token used to make the call." - }, - { - "name": "user-email", - "type": "string", - "usage": "Email address for the user. This parameter is only used if the user or application calling the API has the [admin-level scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user and the API will return the list of Webex sites for that user." - } - ] - }, - { - "path": "webex meetings preferences get-video-options", - "short": "Get Video Options", - "long": "Retrieves video options for the authenticated user.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-video-options" - }, - { - "name": "site-url", - "type": "string", - "usage": "URL of the Webex site to query. For individual use, if `siteUrl` is not specified, the query will use the default site of the user. For admin use, if `siteUrl` is not specified, the query will use the default site for the admin's authorization token used to make the call. In the case where the user belongs to a site different than the admin’s default site, the admin can set the site to query using the `siteUrl` parameter. All available Webex sites and default site of a user can be retrieved using [Get Site List](/docs/api/v1/meeting-preferences/get-site-list)." - }, - { - "name": "user-email", - "type": "string", - "usage": "Email address for the user. This parameter is only used if the user or application calling the API has the [admin-level scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will return details of the video options for that user." - } - ] - }, - { - "path": "webex meetings preferences insert-delegate-emails", - "short": "Insert Delegate Emails", - "long": "Insert delegate emails for the authenticated user.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "emails", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for insert-delegate-emails" - }, - { - "name": "site-url", - "type": "string", - "usage": "URL of the Webex site to query. For individual use, if `siteUrl` is not specified, the query will use the default site of the user. For admin use, if `siteUrl` is not specified, the query will use the default site for the admin's authorization token used to make the call. In the case where the user belongs to a site different than the admin’s default site, the admin can set the site to query using the `siteUrl` parameter. All available Webex sites and default site of a user can be retrieved from [/meetingPreferences/sites](/docs/api/v1/meeting-preferences/get-site-list)." - }, - { - "name": "user-email", - "type": "string", - "usage": "Email address for the user. This parameter is only used if the user or application calling the API has the [admin-level scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will update scheduling options for that user." - } - ] - }, - { - "path": "webex meetings preferences update-audio-options", - "short": "Update Audio Options", - "long": "Updates audio options for the authenticated user.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-audio-options" - }, - { - "name": "site-url", - "type": "string", - "usage": "URL of the Webex site to query. For individual use, if `siteUrl` is not specified, the query will use the default site of the user. For admin use, if `siteUrl` is not specified, the query will use the default site for the admin's authorization token used to make the call. In the case where the user belongs to a site different than the admin’s default site, the admin can set the site to query using the `siteUrl` parameter. All available Webex sites and default site of a user can be retrieved from [/meetingPreferences/sites](/docs/api/v1/meeting-preferences/get-site-list)." - }, - { - "name": "user-email", - "type": "string", - "usage": "Email address for the user. This parameter is only used if the user or application calling the API has the [admin-level scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will update audio options for that user." - } - ] - }, - { - "path": "webex meetings preferences update-default-site", - "short": "Update Default Site", - "long": "Updates the default site for the authenticated user.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "default-site", - "type": "string", - "usage": "Whether or not to change user's default site. ***Note***: `defaultSite` should be set to true for the user's single default site" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-default-site" - }, - { - "name": "site-url", - "type": "string" - }, - { - "name": "user-email", - "type": "string", - "usage": "Email address for the user. This parameter is only used if the user or application calling the API has the [admin-level scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will update default site for that user." - } - ] - }, - { - "path": "webex meetings preferences update-personal-meeting-room-options", - "short": "Update Personal Meeting Room Options", - "long": "Updates Personal Meeting Room options for the authenticated user.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-personal-meeting-room-options" - }, - { - "name": "site-url", - "type": "string", - "usage": "URL of the Webex site to query. For individual use, if `siteUrl` is not specified, the query will use the default site of the user. For admin use, if `siteUrl` is not specified, the query will use the default site for the admin's authorization token used to make the call. In the case where the user belongs to a site different than the admin’s default site, the admin can set the site to query using the `siteUrl` parameter. All available Webex sites and default site of a user can be retrieved from [/meetingPreferences/sites](/docs/api/v1/meeting-preferences/get-site-list)." - }, - { - "name": "user-email", - "type": "string", - "usage": "Email address for the user. This parameter is only used if the user or application calling the API has the [admin-level scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will update Personal Meeting Room options for that user." - } - ] - }, - { - "path": "webex meetings preferences update-scheduling-options", - "short": "Update Scheduling Options", - "long": "Updates scheduling options for the authenticated user.\n\n* If `delegateEmails` is null or not specified, the user's delegate emails are not changed. If `delegateEmails` is specified and not empty, the user's delegate emails are updated with the specified emails. If `delegateEmails` is specified as an empty array, the user's existing delegate emails are removed.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "delegate-emails", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "enabled-auto-share-recording", - "type": "bool", - "default": "false" - }, - { - "name": "enabled-join-before-host", - "type": "bool", - "default": "false" - }, - { - "name": "enabled-webex-assistant-by-default", - "type": "bool", - "default": "false" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-scheduling-options" - }, - { - "name": "join-before-host-minutes", - "type": "int64", - "default": "0" - }, - { - "name": "site-url", - "type": "string", - "usage": "URL of the Webex site to query. For individual use, if `siteUrl` is not specified, the query will use the default site of the user. For admin use, if `siteUrl` is not specified, the query will use the default site for the admin's authorization token used to make the call. In the case where the user belongs to a site different than the admin’s default site, the admin can set the site to query using the `siteUrl` parameter. All available Webex sites and default site of a user can be retrieved from [/meetingPreferences/sites](/docs/api/v1/meeting-preferences/get-site-list)." - }, - { - "name": "user-email", - "type": "string", - "usage": "Email address for the user. This parameter is only used if the user or application calling the API has the [admin-level scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will update scheduling options for that user." - } - ] - }, - { - "path": "webex meetings preferences update-video-options", - "short": "Update Video Options", - "long": "Updates video options for the authenticated user.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-video-options" - }, - { - "name": "site-url", - "type": "string", - "usage": "URL of the Webex site to query. For individual use, if `siteUrl` is not specified, the query will use the default site of the user. For admin use, if `siteUrl` is not specified, the query will use the default site for the admin's authorization token used to make the call. In the case where the user belongs to a site different than the admin’s default site, the admin can set the site to query using the `siteUrl` parameter. All available Webex sites and default site of a user can be retrieved from [/meetingPreferences/sites](/docs/api/v1/meeting-preferences/get-site-list)." - }, - { - "name": "user-email", - "type": "string", - "usage": "Email address for the user. This parameter is only used if the user or application calling the API has the [admin-level scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will update video options for that user." - } - ] - }, - { - "path": "webex meetings recording-report", - "short": "RecordingReport commands" - }, - { - "path": "webex meetings recording-report get-audit", - "short": "Get Recording Audit Report Details", - "long": "Retrieves details for a recording audit report with a specified recording ID.\n\nOnly recording audit report details of meetings hosted by or shared with the authenticated user may be retrieved.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-audit" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin on-behalf-of scopes. If set, the admin may specify the email of a user in a site they manage and the API will return recording details of that user." - }, - { - "name": "max", - "type": "string", - "usage": "Maximum number of recording audit report details to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`." - }, - { - "name": "recording-id", - "type": "string", - "usage": "A unique identifier for the recording." - }, - { - "name": "timezone", - "type": "string", - "usage": "e.g. UTC" - } - ] - }, - { - "path": "webex meetings recording-report get-meeting-archive", - "short": "Get Meeting Archive Details", - "long": "Retrieves details for a meeting archive report with a specified archive ID, which contains recording metadata.\n\nMeeting archive details are only available to full administrators, not even the meeting host.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.", - "flags": [ - { - "name": "archive-id", - "type": "string", - "usage": "A unique identifier for the meeting archive summary.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-meeting-archive" - }, - { - "name": "timezone", - "type": "string", - "usage": "e.g. UTC" - } - ] - }, - { - "path": "webex meetings recording-report list-audit-summaries", - "short": "List of Recording Audit Report Summaries", - "long": "Lists of recording audit report summaries. You can specify a date range and the maximum number of recording audit report summaries to return.\n\nOnly recording audit report summaries of meetings hosted by or shared with the authenticated user will be listed.\n\nThe list returned is sorted in descending order by the date and time that the recordings were created.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n* If `siteUrl` is specified, the recording audit report summaries of the specified site will be listed; otherwise, recording audit report summaries of the user's preferred site will be listed. All available Webex sites and the preferred site of the user can be retrieved by the `Get Site List` API.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.", - "flags": [ - { - "name": "from", - "type": "string", - "usage": "Starting date and time (inclusive) for recording audit report summaries to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`. Please note that the interval between `to` and `from` cannot exceed 90 days and the interval between the current time and `from` cannot exceed 365 days." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-audit-summaries" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email address for the meeting host. This parameter is only used if the user or application calling the API has the admin on-behalf-of scopes. If set, the admin may specify the email of a user in a site they manage and the API will return recording audit report summaries of that user. If a special value of `all` is set for `hostEmail`, the admin can list recording audit report summaries of all users on the target site, not of a single user." - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "max", - "type": "string", - "usage": "Maximum number of recording audit report summaries to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`." - }, - { - "name": "site-url", - "type": "string", - "usage": "URL of the Webex site which the API lists recording audit report summaries from. If not specified, the API lists summary audit report for recordings from the user's preferred site. All available Webex sites and the preferred site of the user can be retrieved by `Get Site List` API." - }, - { - "name": "timezone", - "type": "string", - "usage": "e.g. UTC" - }, - { - "name": "to", - "type": "string", - "usage": "Ending date and time (exclusive) for recording audit report summaries to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`. Please note that the interval between `to` and `from` cannot exceed 90 days and the interval between the current time and `from` cannot exceed 365 days." - } - ] - }, - { - "path": "webex meetings recording-report list-meeting-archive-summaries", - "short": "List Meeting Archive Summaries", - "long": "Lists of meeting archive summaries. You can specify a date range and the maximum number of meeting archive summaries to return.\n\nMeeting archive summaries are only available to full administrators, not even the meeting host.\n\nThe list returned is sorted in descending order by the date and time that the archives were created.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n* If `siteUrl` is specified, the meeting archive summaries of the specified site will be listed; otherwise, meeting archive summaries of the user's preferred site will be listed. All available Webex sites and the preferred site of the user can be retrieved by the `Get Site List` API.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.", - "flags": [ - { - "name": "from", - "type": "string", - "usage": "Starting date and time (inclusive) for meeting archive summaries to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`. Please note that the interval between `to` and `from` cannot exceed 30 days." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-meeting-archive-summaries" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "max", - "type": "string", - "usage": "Maximum number of meeting archive summaries to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`." - }, - { - "name": "site-url", - "type": "string", - "usage": "URL of the Webex site which the API lists meeting archive summaries from. If not specified, the API lists meeting archive summaries for recordings from the user's preferred site. All available Webex sites and the preferred site of the user can be retrieved by `Get Site List` API." - }, - { - "name": "timezone", - "type": "string", - "usage": "e.g. UTC" - }, - { - "name": "to", - "type": "string", - "usage": "Ending date and time (exclusive) for meeting archive summaries to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`. Please note that the interval between `to` and `from` cannot exceed 30 days." - } - ] - }, - { - "path": "webex meetings recordings", - "short": "Recordings commands" - }, - { - "path": "webex meetings recordings delete", - "short": "Delete a Recording", - "long": "Removes a recording with a specified recording ID. The deleted recording cannot be recovered. If a Compliance Officer deletes another user's recording, the recording will be inaccessible to regular users (host, attendees and shared), but will be still available to the Compliance Officer.\n\nOnly recordings of meetings hosted by the authenticated user can be deleted.\n\nThe `temporaryDirectDownloadLinks` of a recording which are retrieved by the [Get Recording Details](/docs/api/v1/recordings/get-recording-details) API are still available to Compliance Officers even if the recording has been deleted.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "comment", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email address for the meeting host. Only used if the user or application calling the API has the required [admin-level meeting scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will delete a recording of that user." - }, - { - "name": "reason", - "type": "string" - }, - { - "name": "recording-id", - "type": "string", - "usage": "A unique identifier for the recording.", - "required": true - } - ] - }, - { - "path": "webex meetings recordings delete-admin", - "short": "Delete a Recording By an Admin", - "long": "Removes a recording with a specified recording ID by an admin. The deleted recording cannot be recovered. It will be inaccessible to regular users (host, attendees and shared) or an admin, but it will be still available to the Compliance Officer.\n\nAny recording on a site which is managed by the admin can be deleted by him.\n\nThe `temporaryDirectDownloadLinks` of a recording which are retrieved by the [Get Recording Details](/docs/api/v1/recordings/get-recording-details) API are still available to Compliance Officers even if the recording has been deleted.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-admin" - }, - { - "name": "recording-id", - "type": "string", - "usage": "A unique identifier for the recording.", - "required": true - } - ] - }, - { - "path": "webex meetings recordings download", - "short": "Download a meeting recording to disk", - "long": "Download a meeting recording, audio, or transcript to a local file.\n\nFetches the recording metadata to obtain the temporary download link,\nthen downloads the binary content and writes it to the specified output path.\n\nThe --type flag selects which download link to use:\n video - Full video recording (MP4, default)\n audio - MP3 audio track\n transcript - VTT transcript file\n\nExamples:\n webex meetings recordings download --recording-id --output meeting.mp4\n webex meetings recordings download --recording-id --output meeting.mp3 --type audio\n webex meetings recordings download --recording-id --output meeting.vtt --type transcript\n webex meetings recordings download --recording-id --output meeting.mp4 --host-email admin@example.com", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for download" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email of the recording host (admin access to other users' recordings)" - }, - { - "name": "output", - "type": "string", - "usage": "File path to write recording to", - "required": true - }, - { - "name": "recording-id", - "type": "string", - "usage": "Recording ID", - "required": true - }, - { - "name": "type", - "type": "string", - "default": "video", - "usage": "Download type: video, audio, or transcript (default: video)" - } - ] - }, - { - "path": "webex meetings recordings get", - "short": "Get Recording Details", - "long": "Retrieves details for a recording with a specified recording ID.\n\nOnly recordings of meetings hosted by or shared with the authenticated user may be retrieved.\n\n#### Request Header\n\n* `timezone`: *[Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.*\n\n* `siteUrl`: Optional request header parameter. If specified, retrieve the recording details from that site; otherwise, retrieve it from the site which is implied based on the recording ID.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email address for the meeting host. Only used if the user or application calling the API has required [admin-level meeting scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage, and the API will return recording details of that user." - }, - { - "name": "recording-id", - "type": "string", - "usage": "A unique identifier for the recording.", - "required": true - }, - { - "name": "site-url", - "type": "string", - "usage": "e.g. example.webex.com" - }, - { - "name": "timezone", - "type": "string", - "usage": "e.g. UTC" - } - ] - }, - { - "path": "webex meetings recordings get-group", - "short": "Get Group Recording Details", - "long": "Retrieves details for a group recording for a service app which has group recording access.\n\n* Only recordings which are in the `available` status and not shared by others can be listed. Those in the `deleted` or `purged` status or shared by others can't be listed.\n\n* One of the `personId` parameter and `hostEmail` header must be specified so that only recordings of meetings hosted by the person of `personId` or `hostEmail` will be returned.\n\n#### Request Header\n\n* `timezone`: *[Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.*\n\n* `hostEmail`: Email of the user whose recordings will be retrieved. The `hostEmail` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-group" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email of the user whose recordings will be retrieved. The `hostEmail` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified." - }, - { - "name": "person-id", - "type": "string", - "usage": "Person ID of the user whose recordings will be retrieved. The person ID can be retrieved from the [People APIs](/docs/api/v1/people), e.g. [Lit People](/docs/api/v1/people/list-people). Note that a person ID retrieved from the People APIs is a Base64-encoded string, e.g. `Y2lzY29zcGFyazovL3VzL1BFT1BMRS9kNDdiMmU3ZC01ZTBmLTRmNjktYWVmNC1lNGZmOTBhZWE3Yzk`. The person ID in the raw UUID format which is the last part of the Base64-decoded string, e.g. `d47b2e7d-5e0f-4f69-aef4-e4ff90aea7c9`, is also supported. The `personId` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified." - }, - { - "name": "recording-id", - "type": "string", - "usage": "A unique identifier for the recording.", - "required": true - }, - { - "name": "timezone", - "type": "string", - "usage": "e.g. UTC" - } - ] - }, - { - "path": "webex meetings recordings list", - "short": "List Recordings", - "long": "
This API is still supported and behaves the same as before, but will be deprecated in the future. Due to limited support for special characters when filtering recordings by `topic`, it is recommended to use the new [Query Recordings](/docs/api/v1/recordings/query-recordings) API instead.
\n\nLists recordings. You can specify a date range, a parent meeting ID, and the maximum number of recordings to return.\n\nOnly recordings of meetings hosted by or shared with the authenticated user will be listed.\n\nThe list returned is sorted in descending order by the date and time that the recordings were created.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n* If `meetingId` is specified, only recordings associated with the specified meeting will be listed. **NOTE**: when `meetingId` is specified, parameter of `siteUrl` will be ignored.\n\n* If `siteUrl` is specified, recordings of the specified site will be listed; otherwise, the API lists recordings of all the user's sites. All available Webex sites and preferred site of the user can be retrieved by [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\n#### Request Header\n\n* `timezone`: *[Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.*", - "flags": [ - { - "name": "format", - "type": "string", - "usage": "Recording's file format. If specified, the API filters recordings by format." - }, - { - "name": "from", - "type": "string", - "usage": "Starting date and time (inclusive) for recordings to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email address for the meeting host. This parameter is only used if the user or application calling the API has the required [admin-level meeting scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will return recordings of that user." - }, - { - "name": "integration-tag", - "type": "string", - "usage": "External key of the parent meeting created by an integration application. This parameter is used by the integration application to query recordings by a key in its own domain, such as a Zendesk ticket ID, a Jira ID, a Salesforce Opportunity ID, etc. An integrationTag created by one client cannot be accessed or used as a filtering parameter by another client. For example, if a meeting has an `integrationTag` of \"Sales\" which is created by the client behind the developer portal, then this integrationTag can't be accessed on the meeting or its recordings by another client. Neither can it be used to filter meetings or recordings by a client other than the one that created the integrationTag of \"Sales\"." - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "max", - "type": "string", - "usage": "Maximum number of recordings to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`." - }, - { - "name": "meeting-id", - "type": "string", - "usage": "Unique identifier for the parent meeting series, scheduled meeting, or meeting instance for which recordings are being requested. If a meeting series ID is specified, the operation returns an array of recordings for the specified meeting series. If a scheduled meeting ID is specified, the operation returns an array of recordings for the specified scheduled meeting. If a meeting instance ID is specified, the operation returns an array of recordings for the specified meeting instance. If no ID is specified, the operation returns an array of recordings for all meetings of the current user. When `meetingId` is specified, the `siteUrl` parameter is ignored." - }, - { - "name": "service-type", - "type": "string", - "usage": "The service type for recordings. If this item is specified, the API filters recordings by service-type." - }, - { - "name": "site-url", - "type": "string", - "usage": "URL of the Webex site from which the API lists recordings. If not specified, the API lists recordings from all of a user's sites. All available Webex sites and the preferred site of the user can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API." - }, - { - "name": "status", - "type": "string", - "usage": "Recording's status. If not specified or `available`, retrieves recordings that are available. Otherwise, if specified as `deleted`, retrieves recordings that have been moved into the recycle bin. The `purged` status only applies if the user calling the API is a Compliance Officer and `meetingId` is specified." - }, - { - "name": "timezone", - "type": "string", - "usage": "e.g. UTC" - }, - { - "name": "to", - "type": "string", - "usage": "Ending date and time (exclusive) for List recordings to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`." - }, - { - "name": "topic", - "type": "string", - "usage": "Recording's topic. If specified, the API filters recordings by topic in a case-insensitive manner." - } - ] - }, - { - "path": "webex meetings recordings list-admin-compliance-officer", - "short": "List Recordings For an Admin or Compliance Officer", - "long": "
This API is still supported and behaves the same as before, but will be deprecated in the future. Due to limited support for special characters when filtering recordings by `topic`, it is recommended to use the new [Query Recordings For an Admin or Compliance Officer](/docs/api/v1/recordings/query-recordings-for-an-admin-or-compliance-officer) API instead.
\n\nList recordings for an admin or compliance officer. You can specify a date range, a parent meeting ID, and the maximum number of recordings to return.\n\nThe list returned is sorted in descending order by the date and time that the recordings were created.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n* If `meetingId` is specified, only recordings associated with the specified meeting will be listed. Please note that when `meetingId` is specified, parameters of `siteUrl`, `from`, and `to` will be ignored.\n\n* If `siteUrl` is specified, all the recordings on the specified site are listed; otherwise, all the recordings on the admin user's or compliance officer's preferred site are listed. All the available Webex sites and the admin user's or compliance officer's preferred site can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\n#### Request Header\n\n* `timezone`: *[Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.*", - "flags": [ - { - "name": "format", - "type": "string", - "usage": "Recording's file format. If specified, the API filters recordings by format." - }, - { - "name": "from", - "type": "string", - "usage": "Starting date and time (inclusive) for recordings to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`. The interval between `from` and `to` must be within 30 days. If `to` is specified, the default value for `from` is `to` minus 7 days. If `to` is also not specified, the default value for `from` is current date and time minus 7 days." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-admin-compliance-officer" - }, - { - "name": "integration-tag", - "type": "string", - "usage": "External key of the parent meeting created by an integration application. This parameter is used by the integration application to query recordings by a key in its own domain such as a Zendesk ticket ID, a Jira ID, a Salesforce Opportunity ID, etc. An integrationTag created by one client cannot be accessed or used as a filtering parameter by another client. For example, if a meeting has an `integrationTag` of \"Sales\" which is created by the client behind the developer portal, then this integrationTag can't be accessed on the meeting or its recordings by another client. Neither can it be used to filter meetings or recordings by a client other than the one that created the integrationTag of \"Sales\"." - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "max", - "type": "string", - "usage": "Maximum number of recordings to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`." - }, - { - "name": "meeting-id", - "type": "string", - "usage": "Unique identifier for the parent meeting series, scheduled meeting, or meeting instance for which recordings are being requested. If a meeting series ID is specified, the operation returns an array of recordings for the specified meeting series. If a scheduled meeting ID is specified, the operation returns an array of recordings for the specified scheduled meeting. If a meeting instance ID is specified, the operation returns an array of recordings for the specified meeting instance. If not specified, the operation returns an array of recordings for all the current user's meetings. When `meetingId` is specified, the `siteUrl` parameter is ignored." - }, - { - "name": "service-type", - "type": "string", - "usage": "The service type for recordings. If specified, the API filters recordings by service type." - }, - { - "name": "site-url", - "type": "string", - "usage": "URL of the Webex site which the API lists recordings from. If not specified, the API lists recordings from user's preferred site. All available Webex sites and preferred site of the user can be retrieved by [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API." - }, - { - "name": "status", - "type": "string", - "usage": "Recording's status. If not specified or `available`, retrieves recordings that are available. If specified as `deleted`, retrieves recordings that have been moved to the recycle bin. Otherwise, if specified as `purged`, retrieves recordings that have been purged from the recycle bin." - }, - { - "name": "timezone", - "type": "string", - "usage": "e.g. UTC" - }, - { - "name": "to", - "type": "string", - "usage": "Ending date and time (exclusive) for List recordings to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`. The interval between `from` and `to` must be within 30 days. If `from` is specified, the default value for `to` is `from` plus 7 days. If `from` is also not specified, the default value for `to` is the current date and time." - }, - { - "name": "topic", - "type": "string", - "usage": "Recording topic. If specified, the API filters recordings by topic in a case-insensitive manner." - } - ] - }, - { - "path": "webex meetings recordings list-group", - "short": "List Group Recordings", - "long": "List group recordings for a service app which has group recording access. You can specify a date range, the maximum number of recordings to return, and `personId` or `hostEmail` of whom the recordings will be retrieved.\n\n* The list returned is sorted in descending order by the date and time that the recordings were created.\n\n* Only recordings which are in the `available` status and not shared by others can be listed. Those in the `deleted` or `purged` status or shared by others can't be listed.\n\n* Long result sets are split into [pages](/docs/basics#pagination).\n\n* If `siteUrl` is specified, the API lists group recordings on the specified site; otherwise, the API lists group recordings on all the sites managed by the service app. All the sites managed by a service app can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\n* One of the `personId` parameter and `hostEmail` header must be specified so that only recordings of meetings hosted by the person of `personId` or `hostEmail` will be returned.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.\n\n* `hostEmail`: Email of the user whose recordings will be retrieved. The `hostEmail` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified.", - "flags": [ - { - "name": "format", - "type": "string", - "usage": "Recording's file format. If specified, the API filters recordings by format." - }, - { - "name": "from", - "type": "string", - "usage": "Starting date and time (inclusive) for recordings to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`. The interval between `from` and `to` must be within 30 days." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-group" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email of the user whose recordings will be retrieved. The `hostEmail` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified." - }, - { - "name": "integration-tag", - "type": "string", - "usage": "External key of the parent meeting created by an integration application. This parameter is used by the integration application to query recordings by a key in its own domain such as a Zendesk ticket ID, a Jira ID, a Salesforce Opportunity ID, etc. An integrationTag created by one client cannot be accessed or used as a filtering parameter by another client. For example, if a meeting has an `integrationTag` of \"Sales\" which is created by the client behind the developer portal, then this integrationTag can't be accessed on the meeting or its recordings by another client. Neither can it be used to filter meetings or recordings by a client other than the one that created the integrationTag of \"Sales\"." - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "max", - "type": "string", - "usage": "Maximum number of recordings to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`." - }, - { - "name": "person-id", - "type": "string", - "usage": "Person ID of the user whose recordings will be retrieved. The person ID can be retrieved from the [People APIs](/docs/api/v1/people), e.g. [Lit People](/docs/api/v1/people/list-people). Note that a person ID retrieved from the People APIs is a Base64-encoded string, e.g. `Y2lzY29zcGFyazovL3VzL1BFT1BMRS9kNDdiMmU3ZC01ZTBmLTRmNjktYWVmNC1lNGZmOTBhZWE3Yzk`. The person ID in the raw UUID format which is the last part of the Base64-decoded string, e.g. `d47b2e7d-5e0f-4f69-aef4-e4ff90aea7c9`, is also supported. The `personId` parameter is optional, but one of the `personId` parameter and `hostEmail` header must be specified." - }, - { - "name": "service-type", - "type": "string", - "usage": "The service type for recordings. If specified, the API filters recordings by service type." - }, - { - "name": "site-url", - "type": "string", - "usage": "URL of the Webex site which the API lists recordings from. If not specified, the API lists recordings from user's preferred site. All available Webex sites and preferred site of the user can be retrieved by [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API." - }, - { - "name": "timezone", - "type": "string", - "usage": "e.g. UTC" - }, - { - "name": "to", - "type": "string", - "usage": "Ending date and time (exclusive) for List recordings to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`. The interval between `from` and `to` must be within 30 days." - } - ] - }, - { - "path": "webex meetings recordings move-recycle-bin", - "short": "Move Recordings into the Recycle Bin", - "long": "Move recordings into the recycle bin with recording IDs. Recordings in the recycle bin can be recovered by [Restore Recordings from Recycle Bin](/docs/api/v1/recordings/restore-recordings-from-recycle-bin) API. If you'd like to empty recordings from the recycle bin, you can use [Purge Recordings from Recycle Bin](/docs/api/v1/recordings/purge-recordings-from-recycle-bin) API to purge all or some of them.\n\nOnly recordings of meetings hosted by the authenticated user can be moved into the recycle bin.\n\n* `recordingIds` should not be empty and its maximum size is `100`.\n\n* All the IDs of `recordingIds` should belong to the site of `siteUrl` or the user's preferred site if `siteUrl` is not specified.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for move-recycle-bin" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email address for the meeting host. Only used if the user or application calling the API has the required [admin-level meeting scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will move recordings into recycle bin of that user" - }, - { - "name": "recording-ids", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "site-url", - "type": "string" - } - ] - }, - { - "path": "webex meetings recordings purge-recycle-bin", - "short": "Purge Recordings from Recycle Bin", - "long": "Purge recordings from recycle bin with recording IDs or purge all the recordings that are in the recycle bin.\n\nOnly recordings of meetings hosted by the authenticated user can be purged from recycle bin.\n\n* If `purgeAll` is `true`, `recordingIds` should be empty.\n\n* If `purgeAll` is `false`, `recordingIds` should not be empty and its maximum size is `100`.\n\n* All the IDs of `recordingIds` should belong to the site of `siteUrl` or the user's preferred site if `siteUrl` is not specified.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for purge-recycle-bin" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email address for the meeting host. Only used if the user or application calling the API has the required [admin-level meeting scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will purge recordings from recycle bin of that user." - }, - { - "name": "purge-all", - "type": "bool", - "default": "false" - }, - { - "name": "recording-ids", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "site-url", - "type": "string" - } - ] - }, - { - "path": "webex meetings recordings query", - "short": "Query Recordings", - "long": "Queries recordings with filters in the request body. You can specify a date range, a parent meeting ID, the maximum number of recordings to return, and additional filters such as siteUrl, integrationTag, hostEmail, topic, format, serviceType, and status.\n\nOnly recordings of meetings hosted by or shared with the authenticated user will be listed.\n\nThe list returned is sorted in descending order by the date and time that the recordings were created.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n* If `meetingId` is specified, only recordings associated with the specified meeting will be listed. **NOTE**: when `meetingId` is specified, parameter of `siteUrl` will be ignored.\n\n* If `siteUrl` is specified, recordings of the specified site will be listed; otherwise, the API lists recordings of all the user's sites. All available Webex sites and preferred site of the user can be retrieved by [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\n#### Request Header\n\n* `timezone`: *[Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.*", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "format", - "type": "string" - }, - { - "name": "from", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for query" - }, - { - "name": "host-email", - "type": "string" - }, - { - "name": "integration-tag", - "type": "string" - }, - { - "name": "max", - "type": "int64", - "default": "0" - }, - { - "name": "meeting-id", - "type": "string" - }, - { - "name": "service-type", - "type": "string" - }, - { - "name": "site-url", - "type": "string" - }, - { - "name": "status", - "type": "string" - }, - { - "name": "timezone", - "type": "string", - "usage": "e.g. UTC" - }, - { - "name": "to", - "type": "string" - }, - { - "name": "topic", - "type": "string" - } - ] - }, - { - "path": "webex meetings recordings query-admin-compliance-officer", - "short": "Query Recordings For an Admin or Compliance Officer", - "long": "Queries recordings for an admin or compliance officer with filters in the request body. You can specify a date range, a parent meeting ID, the maximum number of recordings to return, and additional filters such as siteUrl, integrationTag, topic, format, serviceType, and status.\n\nThe list returned is sorted in descending order by the date and time that the recordings were created.\n\nLong result sets are split into [pages](/docs/basics#pagination).\n\n* If `meetingId` is specified, only recordings associated with the specified meeting will be listed. Please note that when `meetingId` is specified, parameters of `siteUrl`, `from`, and `to` will be ignored.\n\n* If `siteUrl` is specified, all the recordings on the specified site are listed; otherwise, all the recordings on the admin user's or compliance officer's preferred site are listed. All the available Webex sites and the admin user's or compliance officer's preferred site can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\n#### Request Header\n\n* `timezone`: *[Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.*", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "format", - "type": "string" - }, - { - "name": "from", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for query-admin-compliance-officer" - }, - { - "name": "integration-tag", - "type": "string" - }, - { - "name": "max", - "type": "int64", - "default": "0" - }, - { - "name": "meeting-id", - "type": "string" - }, - { - "name": "service-type", - "type": "string" - }, - { - "name": "site-url", - "type": "string" - }, - { - "name": "status", - "type": "string" - }, - { - "name": "timezone", - "type": "string", - "usage": "e.g. UTC" - }, - { - "name": "to", - "type": "string" - }, - { - "name": "topic", - "type": "string" - } - ] - }, - { - "path": "webex meetings recordings restore-recycle-bin", - "short": "Restore Recordings from Recycle Bin", - "long": "Restore all or some recordings from the recycle bin. Only recordings of meetings hosted by the authenticated user can be restored from recycle bin.\n\n* If `restoreAll` is `true`, `recordingIds` should be empty.\n\n* If `restoreAll` is `false`, `recordingIds` should not be empty and its maximum size is `100`.\n\n* All the IDs of `recordingIds` should belong to the site of `siteUrl` or the user's preferred site if `siteUrl` is not specified.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for restore-recycle-bin" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email address for the meeting host. This parameter is only used if the user or application calling the API has the required [admin-level meeting scopes](/docs/meetings#adminorganization-level-authentication-and-scopes). If set, the admin may specify the email of a user in a site they manage and the API will restore recordings of that user." - }, - { - "name": "recording-ids", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "restore-all", - "type": "bool", - "default": "false" - }, - { - "name": "site-url", - "type": "string" - } - ] - }, - { - "path": "webex meetings recordings share", - "short": "Share a Recording", - "long": "Share or unshare a recording with other users by recording ID and email addresses.", - "flags": [ - { - "name": "add-emails", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for share" - }, - { - "name": "host-email", - "type": "string" - }, - { - "name": "recording-id", - "type": "string", - "usage": "A unique identifier for the recording.", - "required": true - }, - { - "name": "remove-emails", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "send-email", - "type": "bool", - "default": "false" - } - ] - }, - { - "path": "webex meetings recordings share-link", - "short": "Share a Recording Link", - "long": "Share or unshare a recording with other users by recording link and email addresses.", - "flags": [ - { - "name": "add-emails", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for share-link" - }, - { - "name": "host-email", - "type": "string" - }, - { - "name": "remove-emails", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "send-email", - "type": "bool", - "default": "false" - }, - { - "name": "web-share-link", - "type": "string" - } - ] - }, - { - "path": "webex meetings session-types", - "short": "SessionTypes commands" - }, - { - "path": "webex meetings session-types list-site", - "short": "List Site Session Types", - "long": "List session types for a specific site.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-site" - }, - { - "name": "site-url", - "type": "string", - "usage": "URL of the Webex site to query. If siteUrl is not specified, the query will use the default site for the admin's authorization token used to make the call." - } - ] - }, - { - "path": "webex meetings session-types list-user", - "short": "List User Session Type", - "long": "List session types for a specific user.", - "flags": [ - { - "name": "email", - "type": "string", - "usage": "e.g. `john.andersen@example.com` (string, optional) - The email of the user." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-user" - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the user." - }, - { - "name": "site-url", - "type": "string", - "usage": "URL of the Webex site to query." - } - ] - }, - { - "path": "webex meetings session-types update-user", - "short": "Update User Session Types", - "long": "Assign session types to specific users.\n\n* At least one of the following body parameters is required to update a specific user session type: `personId`, `email`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "email", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-user" - }, - { - "name": "person-id", - "type": "string" - }, - { - "name": "session-type-ids", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "site-url", - "type": "string" - } - ] - }, - { - "path": "webex meetings site", - "short": "Site commands" - }, - { - "path": "webex meetings site get-meeting-common-settings-configuration", - "short": "Get Meeting Common Settings Configuration", - "long": "Site administrators can use this API to get a list of functions, options, and privileges that are configured for their Webex service sites.\n\n* If `siteUrl` is specified, common settings of the meeting's configuration of the specified site will be queried; otherwise, the API will query from the site administrator's preferred site. All available Webex sites and preferred site of the user can be retrieved by [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-meeting-common-settings-configuration" - }, - { - "name": "site-url", - "type": "string", - "usage": "URL of the Webex site which the API queries common settings of the meeting's configuration from. If not specified, the API will query from the site administrator's preferred site. All available Webex sites and the preferred site of the user can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API." - } - ] - }, - { - "path": "webex meetings site update-meeting-common-settings-configuration", - "short": "Update Meeting Common Settings Configuration", - "long": "Site administrators can use this API to update the option of features, options and privileges that are configured for their WebEx service sites.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-meeting-common-settings-configuration" - } - ] - }, - { - "path": "webex meetings slido", - "short": "Slido commands" - }, - { - "path": "webex meetings slido list-compliance-events", - "short": "List Compliance Events", - "long": "Lists events representing actions that occurred during a Slido Secure Premium session (creating a poll, modifying a poll, activating a poll, posting an answer, etc.)\n\nEvents capture who performed the action and on what resource.\n\nThe events are paginated by the server into pages of max 256 items per page without any order.\n\nThe events are available within 15 minutes after they happened.\n\nEvery resource has properties:\n* type - event type\n\n* ... event specific ids\n\n* ... event specific properties\n", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-compliance-events" - }, - { - "name": "session-id", - "type": "string", - "usage": "Webex meeting instance ID (`{meetingSeriesId}_I_{conferenceId}`)." - }, - { - "name": "session-org-id", - "type": "string", - "usage": "Webex organization UUID." - }, - { - "name": "start", - "type": "string", - "usage": "Pagination token. Returned in the response body as the `next` property." - } - ] - }, - { - "path": "webex meetings slidosecurepremium", - "short": "Slidosecurepremium commands" - }, - { - "path": "webex meetings slidosecurepremium list-compliance-events", - "short": "List Compliance Events", - "long": "Lists events representing actions that occurred during a Slido Secure Premium session (creating a poll, modifying a poll, activating a poll, posting an answer, etc.)\n\nEvents capture who performed the action and on what resource.\n\nThe events are paginated by the server into pages of max 256 items per page without any order.\n\nThe events are available within 15 minutes after they happened.\n\nEvery resource has properties:\n* type - event type\n\n* ... event specific ids\n\n* ... event specific properties\n", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-compliance-events" - }, - { - "name": "session-id", - "type": "string", - "usage": "Webex meeting instance ID (`{meetingSeriesId}_I_{conferenceId}`)." - }, - { - "name": "session-org-id", - "type": "string", - "usage": "Webex organization UUID." - }, - { - "name": "start", - "type": "string", - "usage": "Pagination token. Returned in the response body as the `next` property." - } - ] - }, - { - "path": "webex meetings summaries", - "short": "Summaries commands" - }, - { - "path": "webex meetings summaries delete", - "short": "Delete a Summary", - "long": "Removes a summary with a specified summary ID. The deleted summary cannot be recovered. A deleted summary can not be accessed by regular users, i.e. host or attendees, but can be access by compliance officers", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "summary-id", - "type": "string", - "usage": "Unique identifier for the meeting summary.", - "required": true - } - ] - }, - { - "path": "webex meetings summaries get-compliance-officer", - "short": "Get Summary For Compliance Officer", - "long": "Lists available or deleted summaries of an ended [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) by meeting ID. This API can only be accessed by compliance officers. With this API, a compliance officer can list summaries of any ended meeting instances in his organization including available and deleted summaries", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-compliance-officer" - }, - { - "name": "meeting-id", - "type": "string", - "usage": "Unique identifier for the [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) to which the summary belongs. Please note that currently the meeting ID of a meeting series, a scheduled meeting, an in-progress meeting instance, or a scheduled personal room meeting is not supported for this API. If `meetingId` is not specified, the query will be rejected." - } - ] - }, - { - "path": "webex meetings summaries get-meeting-id", - "short": "Get Summary by Meeting ID", - "long": "Get the summary of an ended [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) by the meeting ID.\n\nPlease note that only **meeting instances** in state `ended` are supported, and currently the meeting ID of a meeting series, a scheduled meeting, an in-progress meeting instance, or a scheduled personal room meeting is not supported for this API. This API can only fetch summaries that you have access to, and if a meeting summary is deleted, you won't be able to see it either. And, this is an API for normal user. If you are a compliance officer, please use the Get Summary For Compliance Officer API", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-meeting-id" - }, - { - "name": "meeting-id", - "type": "string", - "usage": "Unique identifier for the [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) to which the summary belongs. Please note that currently the meeting ID of a meeting series, a scheduled meeting, an in-progress meeting instance, or a scheduled personal room meeting is not supported for this API. If `meetingId` is not specified, the query will be rejected." - } - ] - }, - { - "path": "webex meetings tracking-codes", - "short": "TrackingCodes commands" - }, - { - "path": "webex meetings tracking-codes create", - "short": "Create a Tracking Code", - "long": "Create a new tracking code by an admin user.\n\n* The `siteUrl` is required. The operation creates a tracking code for the specified site. All or a user's available Webex sites can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\n* The `inputMode` of `hostProfileSelect` is only available for a host profile and sign-up pages and does not apply to the meeting scheduler page or the meeting start page. The value for `scheduleStartCodes` must be `null` or the value for all services must be `notUsed` when the `inputMode` is `hostProfileSelect`.\n\n* The `hostProfileCode` of `required` is only allowed for a Site Admin managed site, and not for a Control Hub managed site.\n\n* When the `hostProfileCode` is `adminSet`, only `adminSet`, `notUsed`, and `notApplicable` are available for the types of `scheduleStartCodes`. When the `hostProfileCode` is not `adminSet`, only `optional`, `required`, `notUsed`, and `notApplicable` are available for `scheduleStartCodes`.\n\n* If the type of the `All` service has a value other than `notApplicable`, and another service, e.g. `EventCenter`, is missing from the `scheduleStartCodes`, then the type of this missing `EventCenter` service shares the same type as the `All` service. If the type of `All` service has a value other than `notApplicable`, and another service, e.g. `EventCenter`, has a type, then the type specified should be the same as the `All` service.\n\n* If the `All` service is missing from the `scheduleStartCodes`, any of the other four services, e.g. `EventCenter`, have a default type of `notUsed` if it is also missing from the `scheduleStartCodes`.\n\n* Admins can switch any Control Hub managed site from using classic tracking codes to mapped tracking codes in Control Hub, this is a one-time irreversible operation. Once the tracking codes are mapped to custom or user profile attributes, they cannot create tracking codes when the mapping process is in progress or the mapping process is completed.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - } - ] - }, - { - "path": "webex meetings tracking-codes delete", - "short": "Delete a Tracking Code", - "long": "Deletes a tracking code by an admin user.\n\n* The `siteUrl` is required. The operation deletes a tracking code for the specified site. All of a user's available Webex sites can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\n* Admins can switch any Control Hub managed site from using classic tracking codes to mapped tracking codes in Control Hub, this is a one-time irreversible operation. Once the tracking codes are mapped to custom or user profile attributes, they cannot delete tracking codes when the mapping process is in progress or the mapping process is completed.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "site-url", - "type": "string", - "usage": "URL of the Webex site from which the API deletes the tracking code. All available Webex sites and preferred sites of a user can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API." - }, - { - "name": "tracking-code-id", - "type": "string", - "usage": "Unique identifier for the tracking code to be deleted.", - "required": true - } - ] - }, - { - "path": "webex meetings tracking-codes get", - "short": "Get a Tracking Code", - "long": "Retrieves details for a tracking code by an admin user.\n\n* If `siteUrl` is specified, the tracking code is retrieved from the specified site; otherwise, the tracking code is retrieved from the user's preferred site. All available Webex sites and the preferred sites of a user can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\n* Admins can switch any Control Hub managed site from using classic tracking codes to mapped tracking codes in Control Hub, this is a one-time irreversible operation. Once the tracking codes are mapped to custom or user profile attributes, the response returns details for a mapped tracking code.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "site-url", - "type": "string", - "usage": "URL of the Webex site which the API retrieves the tracking code from. If not specified, the API retrieves the tracking code from the user's preferred site. All available Webex sites and the preferred sites of a user can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API." - }, - { - "name": "tracking-code-id", - "type": "string", - "usage": "Unique identifier for the tracking code whose details are being requested.", - "required": true - } - ] - }, - { - "path": "webex meetings tracking-codes get-user", - "short": "Get User Tracking Codes", - "long": "Lists user's tracking codes by an admin user.\n\n* At least one parameter, either `personId`, or `email` is required. `personId` must come before `email` if both are specified. Please note that `email` is specified in the request header.\n\n* If `siteUrl` is specified, the tracking codes of the specified site will be listed; otherwise, the tracking codes of a user's preferred site are listed. All available Webex sites and preferred sites of a user can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API. Please note that the user here is the admin user who invokes the API, not the user specified by `personId` or email.\n\n* Admins can switch any Control Hub managed site from using classic tracking codes to mapped tracking codes in Control Hub, this is a one-time irreversible operation. Once the tracking codes are mapped to custom or user profile attributes, the response returns the user's mapped tracking codes.\n\n#### Request Header\n\n* `email`: Email address for the user whose tracking codes are being retrieved. The admin users can specify the email of a user on a site they manage and the API returns details for the user's tracking codes. At least one parameter of `personId` or `email` is required.", - "flags": [ - { - "name": "email", - "type": "string", - "usage": "e.g. john.andersen@example.com" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-user" - }, - { - "name": "person-id", - "type": "string", - "usage": "Unique identifier for the user whose tracking codes are being retrieved. The admin user can specify the `personId` of a user on a site they manage and the API returns details for the user's tracking codes. At least one parameter of `personId` or `email` is required." - }, - { - "name": "site-url", - "type": "string", - "usage": "URL of the Webex site from which the API retrieves the tracking code. If not specified, the API retrieves the tracking code from the user's preferred site. All available Webex sites and preferred sites of a user can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API." - } - ] - }, - { - "path": "webex meetings tracking-codes list", - "short": "List Tracking Codes", - "long": "Lists tracking codes on a site by an admin user.\n\n* If `siteUrl` is specified, tracking codes of the specified site will be listed; otherwise, tracking codes of the user's preferred site will be listed. All available Webex sites and the preferred sites of a user can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\n* Admins can switch any Control Hub managed site from using classic tracking codes to mapped tracking codes in Control Hub. This is a one-time irreversible operation. Once the tracking codes are mapped to custom or user profile attributes, the response returns the mapped tracking codes.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "site-url", - "type": "string", - "usage": "URL of the Webex site which the API retrieves the tracking code from. If not specified, the API retrieves the tracking code from the user's preferred site. All available Webex sites and preferred sites of a user can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API." - } - ] - }, - { - "path": "webex meetings tracking-codes update", - "short": "Update a Tracking Code", - "long": "Updates details for a tracking code by an admin user.\n\n* The `siteUrl` is required. The operation updates a tracking code for the specified site. All of a user's available Webex sites can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API.\n\n* The `inputMode` of `hostProfileSelect` is only available for the host profile and sign-up pages and it doesn't apply to the meeting scheduler page or meeting start page. Therefore, `scheduleStartCodes` must be `null` or type of all services must be `notUsed` when the `inputMode` is `hostProfileSelect`.\n\n* Currently, the `hostProfileCode` of `required` is only allowed for a Site Admin managed site, and not allowed for a Control Hub managed site.\n\n* When the `hostProfileCode` is `adminSet`, only `adminSet`, `notUsed` and `notApplicable` are available for the types of `scheduleStartCodes`. When the `hostProfileCode` is not `adminSet`, only `optional`, `required`, `notUsed` and `notApplicable` are available for types of `scheduleStartCodes`.\n\n* If the type of the `All` service has a value other than `notApplicable`, and another service, e.g. `EventCenter`, is missing from the `scheduleStartCodes`, then the type of this missing `EventCenter` service shares the same type as the `All` service silently. If the type of `All` service has a value other than `notApplicable`, and another service, e.g. `EventCenter`, has a type, then the type specified should be the same as the `All` service.\n\n* If the `All` service is missing from the `scheduleStartCodes`, any of the other four services, e.g. `EventCenter`, has a default type of `notUsed` if that service is also missing from the `scheduleStartCodes`.\n\n* Admins can switch any Control Hub managed site from using classic tracking codes to mapped tracking codes in Control Hub, this is a one-time irreversible operation. Once the tracking codes are mapped to custom or user profile attributes, they cannot update tracking codes when the mapping process is in progress or the mapping process is completed.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "tracking-code-id", - "type": "string", - "required": true - } - ] - }, - { - "path": "webex meetings tracking-codes update-user", - "short": "Update User Tracking Codes", - "long": "Updates tracking codes for a specified user by an admin user.\n\n* The `siteUrl` is required. The operation updates a user's tracking code on the specified site. All a user's available Webex sites can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API. Please note that the user here is the admin user who invokes the API, not the user specified by `personId` or `email`.\n\n* A name that is not found in the site-level tracking codes cannot be set for a user's tracking codes. All available site-level tracking codes for a site can be retrieved by the [List Tracking Codes](/docs/api/v1/tracking-codes/list-tracking-codes) API.\n\n* If the `inputMode` of a user's tracking code is `select` or `hostProfileSelect`, its value must be one of the site-level options of that tracking code. All available site-level tracking codes for a site can be retrieved by the [List Tracking Codes](/docs/api/v1/tracking-codes/list-tracking-codes) API.\n\n* Admins can switch any Control Hub managed site from using classic tracking codes to mapped tracking codes in Control Hub, this is a one-time irreversible operation. Once the tracking codes are mapped to custom or user profile attributes, they cannot update user's tracking codes when the mapping process is in progress or the mapping process is completed.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-user" - } - ] - }, - { - "path": "webex meetings transcripts", - "short": "Transcripts commands" - }, - { - "path": "webex meetings transcripts delete", - "short": "Delete a Transcript", - "long": "Removes a transcript with a specified transcript ID. The deleted transcript cannot be recovered. If a Compliance Officer deletes another user's transcript, the transcript will be inaccessible to regular users (host, attendees), but will be still available to the Compliance Officer.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "comment", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "reason", - "type": "string" - }, - { - "name": "transcript-id", - "type": "string", - "usage": "Unique identifier for the meeting transcript.", - "required": true - } - ] - }, - { - "path": "webex meetings transcripts download-meeting", - "short": "Download a Meeting Transcript", - "long": "Download a meeting transcript from the meeting transcript specified by `transcriptId`.", - "flags": [ - { - "name": "format", - "type": "string", - "usage": "Format for the downloaded meeting transcript." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for download-meeting" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email address for the meeting host. This parameter is only used if the user or application calling the API has the `admin-level` scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for a meeting that is hosted by that user." - }, - { - "name": "transcript-id", - "type": "string", - "usage": "Unique identifier for the meeting transcript.", - "required": true - } - ] - }, - { - "path": "webex meetings transcripts get-snippet", - "short": "Get a Transcript Snippet", - "long": "Retrieves details for a transcript snippet specified by `snippetId` from the meeting transcript specified by `transcriptId`.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-snippet" - }, - { - "name": "snippet-id", - "type": "string", - "usage": "Unique identifier for the snippet being requested.", - "required": true - }, - { - "name": "transcript-id", - "type": "string", - "usage": "Unique identifier for the meeting transcript to which the requested snippet belongs.", - "required": true - } - ] - }, - { - "path": "webex meetings transcripts list-meeting", - "short": "List Meeting Transcripts", - "long": "Lists available transcripts of an ended [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances).\n\nUse this operation to list transcripts of an ended [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) when they are ready. Please note that only **meeting instances** in state `ended` are supported for `meetingId`. **Meeting series**, **scheduled meetings** and `in-progress` **meeting instances** are not supported.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.", - "flags": [ - { - "name": "from", - "type": "string", - "usage": "Starting date and time (inclusive) for transcripts to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-meeting" - }, - { - "name": "host-email", - "type": "string", - "usage": "Email address for the meeting host. This parameter is only used if the user or application calling the API has the `admin-level` scopes. If set, the admin may specify the email of a user in a site they manage and the API will return details for a meeting that is hosted by that user. If `meetingId` is not specified, it can not support `hostEmail`." - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "max", - "type": "string", - "usage": "Maximum number of transcripts to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`." - }, - { - "name": "meeting-id", - "type": "string", - "usage": "Unique identifier for the [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) to which the transcript belongs. Please note that currently the meeting ID of a scheduled [personal room](https://help.webex.com/en-us/article/nul0wut/Webex-Personal-Rooms-in-Webex-Meetings) meeting is not supported for this API. If `meetingId` is not specified, the operation returns an array of transcripts for all meetings of the current user." - }, - { - "name": "site-url", - "type": "string", - "usage": "URL of the Webex site from which the API lists transcripts. If not specified, the API lists transcripts from user's preferred site. All available Webex sites and the preferred site of the user can be retrieved by the [Get Site List](/docs/api/v1/meeting-preferences/get-site-list) API." - }, - { - "name": "to", - "type": "string", - "usage": "Ending date and time (exclusive) for List transcripts to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`." - } - ] - }, - { - "path": "webex meetings transcripts list-meeting-compliance-officer", - "short": "List Meeting Transcripts For Compliance Officer", - "long": "Lists available or deleted transcripts of an ended [meeting instance](/docs/meetings#meeting-series-scheduled-meetings-and-meeting-instances) for a specific site.\n\nThe returned list is sorted in descending order by the date and time that the transcript was created.\n\n#### Request Header\n\n* `timezone`: [Time zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) in conformance with the [IANA time zone database](https://www.iana.org/time-zones). The default is UTC if `timezone` is not defined.", - "flags": [ - { - "name": "from", - "type": "string", - "usage": "Starting date and time (inclusive) for transcripts to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-meeting-compliance-officer" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "max", - "type": "string", - "usage": "Maximum number of transcripts to return in a single page. `max` must be equal to or greater than `1` and equal to or less than `100`." - }, - { - "name": "site-url", - "type": "string", - "usage": "URL of the Webex site from which the API lists transcripts." - }, - { - "name": "to", - "type": "string", - "usage": "Ending date and time (exclusive) for List transcripts to return, in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `to` cannot be before `from`." - } - ] - }, - { - "path": "webex meetings transcripts list-snippets-meeting", - "short": "List Snippets of a Meeting Transcript", - "long": "Lists snippets of a meeting transcript specified by `transcriptId`.\n\nUse this operation to list snippets of a meeting transcript when they are ready.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-snippets-meeting" - }, - { - "name": "max", - "type": "string", - "usage": "Maximum snippet items to be returned for this query, to support pagination." - }, - { - "name": "transcript-id", - "type": "string", - "usage": "Unique identifier for the meeting transcript to which the snippets belong.", - "required": true - } - ] - }, - { - "path": "webex meetings transcripts update-snippet", - "short": "Update a Transcript Snippet", - "long": "Updates details for a transcript snippet specified by `snippetId` from the meeting transcript specified by `transcriptId`.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-snippet" - }, - { - "name": "reason", - "type": "string" - }, - { - "name": "snippet-id", - "type": "string", - "usage": "Unique identifier for the snippet being updated.", - "required": true - }, - { - "name": "text", - "type": "string" - }, - { - "name": "transcript-id", - "type": "string", - "usage": "Unique identifier for the meeting transcript to which the snippet to be updated belongs.", - "required": true - } - ] - }, - { - "path": "webex meetings video-mesh", - "short": "VideoMesh commands" - }, - { - "path": "webex meetings video-mesh get-cluster", - "short": "Get Cluster Details", - "long": "Returns the cluster details for a single Video Mesh cluster.", - "flags": [ - { - "name": "cluster-id", - "type": "string", - "usage": "The unique Video Mesh Cluster ID.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-cluster" - } - ] - }, - { - "path": "webex meetings video-mesh get-cluster-availability", - "short": "Get Cluster Availability", - "long": "Returns the availability details of a single Video Mesh cluster in an organization.", - "flags": [ - { - "name": "cluster-id", - "type": "string", - "usage": "The unique Video Mesh clusterID", - "required": true - }, - { - "name": "from", - "type": "string", - "usage": "The starting date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-cluster-availability" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "to", - "type": "string", - "usage": "The ending date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format." - } - ] - }, - { - "path": "webex meetings video-mesh get-cluster-client-type-distribution", - "short": "Get Cluster Client Type Distribution details", - "long": "Returns the client type distribution details for a single Video Mesh cluster.", - "flags": [ - { - "name": "cluster-id", - "type": "string", - "usage": "Unique ID of the Video Mesh cluster." - }, - { - "name": "device-type", - "type": "string", - "usage": "Device type(s). - Possible values: `webexDevices` `webexAppVdi` `webexForMobile` `sipEndpoint` `webexForDesktop`" - }, - { - "name": "from", - "type": "string", - "usage": "The start date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. The `from` parameter cannot have date and time values that exceed `to`." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-cluster-client-type-distribution" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "to", - "type": "string", - "usage": "The end date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format." - } - ] - }, - { - "path": "webex meetings video-mesh get-cluster-redirect", - "short": "Get Cluster Redirect details", - "long": "Returns details of cluster redirects for a single Video Mesh cluster.", - "flags": [ - { - "name": "cluster-id", - "type": "string", - "usage": "The unique Video Mesh Cluster ID." - }, - { - "name": "from", - "type": "string", - "usage": "The starting date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-cluster-redirect" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "to", - "type": "string", - "usage": "The ending date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format." - } - ] - }, - { - "path": "webex meetings video-mesh get-cluster-utilization", - "short": "Get Cluster Utilization details", - "long": "Returns the utilization details for a single Video Mesh cluster.", - "flags": [ - { - "name": "cluster-id", - "type": "string", - "usage": "The unique Video Mesh Cluster ID." - }, - { - "name": "from", - "type": "string", - "usage": "The starting date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-cluster-utilization" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "to", - "type": "string", - "usage": "The ending date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format." - } - ] - }, - { - "path": "webex meetings video-mesh get-event-threshold-configuration", - "short": "Get Event Threshold Configuration", - "long": "Returns the event threshold configurations for `eventThresholdId`.", - "flags": [ - { - "name": "event-threshold-id", - "type": "string", - "usage": "Unique ID of the event threshold configuration.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-event-threshold-configuration" - } - ] - }, - { - "path": "webex meetings video-mesh get-media-health-monitoring-tool-test-results-clusters-v2", - "short": "Get Media Health Monitoring Tool Test results for clusters V2", - "long": "Returns the test results of the Media Health Monitoring Tool tests for a single Video Mesh cluster.\n\n
\n\nChanges in V2:\n\n
\n\nOn-demand test results can be obtained along with the periodic tests that are executed on Video Mesh nodes.", - "flags": [ - { - "name": "cluster-id", - "type": "string", - "usage": "Unique ID of the Video Mesh cluster." - }, - { - "name": "from", - "type": "string", - "usage": "The start date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. The `from` parameter cannot have date and time values that exceed `to`." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-media-health-monitoring-tool-test-results-clusters-v2" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "to", - "type": "string", - "usage": "The end date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format." - }, - { - "name": "trigger-type", - "type": "string", - "usage": "Trigger type." - } - ] - }, - { - "path": "webex meetings video-mesh get-media-health-monitoring-tool-test-results-node-v2", - "short": "Get Media Health Monitoring Tool Test results for node V2", - "long": "Returns the test results of the Media Health Monitoring Tool tests for a single Video Mesh node.\n\n
\n\nChanges in V2:\n\n
\n\nOn-demand test results can be obtained along with the periodic tests that are executed on Video Mesh nodes.", - "flags": [ - { - "name": "from", - "type": "string", - "usage": "The start date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. The `from` parameter cannot have date and time values that exceed `to`." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-media-health-monitoring-tool-test-results-node-v2" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "node-id", - "type": "string", - "usage": "Unique ID of the Video Mesh node." - }, - { - "name": "to", - "type": "string", - "usage": "The end date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format." - }, - { - "name": "trigger-type", - "type": "string", - "usage": "Trigger type." - } - ] - }, - { - "path": "webex meetings video-mesh get-network-test-results-cluster", - "short": "Get Network Test results for cluster", - "long": "Returns the test results of the Network tests triggered for a single Video Mesh cluster. The tests listed below are run as a part of the Network Test execution on the node.\n\nBandwidth Test - Tests the bandwidth parameters of the Video Mesh node's network. The test is run between the Video Mesh node and cloud services.
\nDNS Resolution Test - Tests the resolution of IP addresses related to cloud services, against the DNS servers configured on the Video Mesh node's network.
\nHTTPS Connectivity Test - Tests whether the Video Mesh node is able to connect to cloud services via HTTPS protocol.
\nWebsocket Connectivity Test - Tests whether the Video Mesh node is able to connect to Webex cloud services via Websocket.
", - "flags": [ - { - "name": "cluster-id", - "type": "string", - "usage": "Unique ID of the Video Mesh cluster." - }, - { - "name": "from", - "type": "string", - "usage": "The start date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. The `from` parameter cannot have date and time values that exceed `to`." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-network-test-results-cluster" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "to", - "type": "string", - "usage": "The end date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format." - }, - { - "name": "trigger-type", - "type": "string", - "usage": "Trigger type." - } - ] - }, - { - "path": "webex meetings video-mesh get-network-test-results-node", - "short": "Get Network Test results for node", - "long": "Returns the test results of the Network tests triggered for a single Video Mesh node. The tests listed below are run as a part of the Network Test execution on the node.\n\nBandwidth Test - Tests the bandwidth parameters of the Video Mesh node's network. The test is run between the Video Mesh node and cloud services.
\nDNS Resolution Test - Tests the resolution of IP addresses related to cloud services, against the DNS servers configured on the Video Mesh node's network.
\nHTTPS Connectivity Test - Tests whether the Video Mesh node is able to connect to cloud services via HTTPS protocol.
\nWebsocket Connectivity Test - Tests whether the Video Mesh node is able to connect to Webex cloud services via Websocket.
", - "flags": [ - { - "name": "from", - "type": "string", - "usage": "The start date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. The `from` parameter cannot have date and time values that exceed `to`." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-network-test-results-node" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "node-id", - "type": "string", - "usage": "Unique ID of the Video Mesh node." - }, - { - "name": "to", - "type": "string", - "usage": "The end date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format." - }, - { - "name": "trigger-type", - "type": "string", - "usage": "Trigger type." - } - ] - }, - { - "path": "webex meetings video-mesh get-node-availability", - "short": "Get Node Availability", - "long": "Returns the availability details of a single node in a Video Mesh cluster.", - "flags": [ - { - "name": "from", - "type": "string", - "usage": "The starting date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-node-availability" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "node-id", - "type": "string", - "usage": "The unique Video Mesh node ID.", - "required": true - }, - { - "name": "to", - "type": "string", - "usage": "The ending date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format." - } - ] - }, - { - "path": "webex meetings video-mesh get-reachability-test-results-cluster-v2", - "short": "Get Reachability Test results for cluster V2", - "long": "Returns the test results of the Reachability tests for a single Video Mesh cluster.\n\n
\n\nChanges in V2:\n\n
\n\n1. On-demand test results can be obtained along with the periodic tests that are executed on Video Mesh nodes.\n\n
\n\n2. You can now view the destination IP address of the destination cluster in the JSON response.", - "flags": [ - { - "name": "cluster-id", - "type": "string", - "usage": "Unique ID of the Video Mesh cluster." - }, - { - "name": "from", - "type": "string", - "usage": "The start date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. The `from` parameter cannot have date and time values that exceed `to`." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-reachability-test-results-cluster-v2" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "to", - "type": "string", - "usage": "The end date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format." - }, - { - "name": "trigger-type", - "type": "string", - "usage": "Trigger type." - } - ] - }, - { - "path": "webex meetings video-mesh get-reachability-test-results-node-v2", - "short": "Get Reachability Test results for node V2", - "long": "Returns the test results of the Reachability tests for a single Video Mesh node.\n\n
\n\nChanges in V2:\n\n
\n\n1. On-demand test results can be obtained along with the periodic tests that are executed on Video Mesh nodes.\n\n
\n\n2. You can now view the destination IP address of the destination cluster in the JSON response.", - "flags": [ - { - "name": "from", - "type": "string", - "usage": "The start date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. The `from` parameter cannot have date and time values that exceed `to`." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-reachability-test-results-node-v2" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "node-id", - "type": "string", - "usage": "Unique ID of the Video Mesh node." - }, - { - "name": "to", - "type": "string", - "usage": "The end date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format." - }, - { - "name": "trigger-type", - "type": "string", - "usage": "Trigger type." - } - ] - }, - { - "path": "webex meetings video-mesh get-triggered-test-results", - "short": "Get Triggered test results", - "long": "Returns the results of the test triggered using the command ID.
\nNOTE: The response format depends on the type of test triggered and it is the same as that of [NetworkTest API](/docs/api/v1/video-mesh/list-network-test-results), [MediaHealthMonitorTest API](/docs/api/v1/video-mesh/list-media-health-monitoring-tool-test-results-v2), and [ReachabilityTest API](/docs/api/v1/video-mesh/list-reachability-test-results-v2) respectively.", - "flags": [ - { - "name": "command-id", - "type": "string", - "usage": "The unique command ID generated from Trigger on-demand test API." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-triggered-test-results" - } - ] - }, - { - "path": "webex meetings video-mesh get-triggered-test-status", - "short": "Get Triggered test status", - "long": "Returns the status of the test triggered using the Trigger on-demand test API.", - "flags": [ - { - "name": "command-id", - "type": "string", - "usage": "The unique command ID generated from Trigger on-demand test API." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-triggered-test-status" - } - ] - }, - { - "path": "webex meetings video-mesh list-cluster", - "short": "List Cluster Details", - "long": "Returns the cluster details of all Video Mesh clusters in an organization.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-cluster" - }, - { - "name": "org-id", - "type": "string", - "usage": "The unique ID for the organization.", - "hidden": true - } - ] - }, - { - "path": "webex meetings video-mesh list-cluster-client-type-distribution", - "short": "List Cluster Client Type Distribution details", - "long": "Returns the client type distribution details for all Video Mesh clusters in an organization.", - "flags": [ - { - "name": "device-type", - "type": "string", - "usage": "Device type(s). - Possible values: `webexDevices` `webexAppVdi` `webexForMobile` `sipEndpoint` `webexForDesktop`" - }, - { - "name": "from", - "type": "string", - "usage": "The start date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. The `from` parameter cannot have date and time values that exceed `to`." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-cluster-client-type-distribution" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "org-id", - "type": "string", - "usage": "Unique ID of the organization.", - "hidden": true - }, - { - "name": "to", - "type": "string", - "usage": "The end date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format." - } - ] - }, - { - "path": "webex meetings video-mesh list-cluster-redirect", - "short": "List Cluster Redirect details", - "long": "Returns the redirect details of all Video Mesh clusters in an organization.", - "flags": [ - { - "name": "from", - "type": "string", - "usage": "The starting date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-cluster-redirect" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "org-id", - "type": "string", - "usage": "The unique Video Mesh organization ID.", - "hidden": true - }, - { - "name": "to", - "type": "string", - "usage": "The ending date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format." - } - ] - }, - { - "path": "webex meetings video-mesh list-clusters-availability", - "short": "List Clusters Availability", - "long": "Returns the availability details for all Video Mesh clusters in an organization.", - "flags": [ - { - "name": "from", - "type": "string", - "usage": "The starting date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-clusters-availability" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "org-id", - "type": "string", - "usage": "The unique ID for the organization.", - "hidden": true - }, - { - "name": "to", - "type": "string", - "usage": "The ending date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format." - } - ] - }, - { - "path": "webex meetings video-mesh list-clusters-utilization", - "short": "List Clusters Utilization", - "long": "Returns the utilization details of all Video Mesh clusters in an organization.", - "flags": [ - { - "name": "from", - "type": "string", - "usage": "The starting date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-clusters-utilization" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "org-id", - "type": "string", - "usage": "The unique ID for the organization.", - "hidden": true - }, - { - "name": "to", - "type": "string", - "usage": "The ending date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format." - } - ] - }, - { - "path": "webex meetings video-mesh list-event-threshold-configuration", - "short": "List Event Threshold Configuration", - "long": "Returns the event threshold configurations for `orgId` or `clusterId`, with optional filters `eventName` and `eventScope`.", - "flags": [ - { - "name": "cluster-id", - "type": "string", - "usage": "Unique ID of the Video Mesh Cluster." - }, - { - "name": "event-name", - "type": "string", - "usage": "Event name to fetch threshold details." - }, - { - "name": "event-scope", - "type": "string", - "usage": "Scope name to filter events." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-event-threshold-configuration" - }, - { - "name": "org-id", - "type": "string", - "usage": "Unique ID of the Organization.", - "hidden": true - } - ] - }, - { - "path": "webex meetings video-mesh list-media-health-monitoring-tool-test-results-v2", - "short": "List Media Health Monitoring Tool Test results V2", - "long": "Returns the test results of the Media Health Monitoring Tool tests for an organization.\n\n
\n\nChanges in V2:\n\n
\n\nOn-demand test results can be obtained along with the periodic tests that are executed on Video Mesh nodes.", - "flags": [ - { - "name": "from", - "type": "string", - "usage": "The start date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. The `from` parameter cannot have date and time values that exceed `to`." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-media-health-monitoring-tool-test-results-v2" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "org-id", - "type": "string", - "usage": "Unique ID of the organization.", - "hidden": true - }, - { - "name": "to", - "type": "string", - "usage": "The end date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format." - }, - { - "name": "trigger-type", - "type": "string", - "usage": "Trigger type." - } - ] - }, - { - "path": "webex meetings video-mesh list-network-test-results", - "short": "List Network Test results", - "long": "Returns the test results of the Network tests triggered for an organization. The tests listed below are run as a part of the Network Test execution on the node.\n\nBandwidth Test - Tests the bandwidth parameters of the Video Mesh node's network. The test is run between the Video Mesh node and cloud services.
\nDNS Resolution Test - Tests the resolution of IP addresses related to cloud services, against the DNS servers configured on the Video Mesh node's network.
\nHTTPS Connectivity Test - Tests whether the Video Mesh node is able to connect to cloud services via HTTPS protocol.
\nWebsocket Connectivity Test - Tests whether the Video Mesh node is able to connect to Webex cloud services via Websocket.
", - "flags": [ - { - "name": "from", - "type": "string", - "usage": "The start date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. The `from` parameter cannot have date and time values that exceed `to`." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-network-test-results" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "org-id", - "type": "string", - "usage": "Unique ID of the organization.", - "hidden": true - }, - { - "name": "to", - "type": "string", - "usage": "The end date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format." - }, - { - "name": "trigger-type", - "type": "string", - "usage": "Trigger type." - } - ] - }, - { - "path": "webex meetings video-mesh list-node-availability", - "short": "List Node Availability", - "long": "Returns the availability details of all nodes in a Video Mesh cluster.", - "flags": [ - { - "name": "cluster-id", - "type": "string", - "usage": "The unique Video Mesh cluster ID." - }, - { - "name": "from", - "type": "string", - "usage": "The starting date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-node-availability" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "to", - "type": "string", - "usage": "The ending date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format." - } - ] - }, - { - "path": "webex meetings video-mesh list-overflow-cloud", - "short": "List Overflow to Cloud details", - "long": "Returns details of overflows to the cloud in an organization.", - "flags": [ - { - "name": "from", - "type": "string", - "usage": "The starting date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. `from` cannot be after `to`." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-overflow-cloud" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "org-id", - "type": "string", - "usage": "The unique Video Mesh organization ID.", - "hidden": true - }, - { - "name": "to", - "type": "string", - "usage": "The ending date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format." - } - ] - }, - { - "path": "webex meetings video-mesh list-reachability-test-results-v2", - "short": "List Reachability Test results V2", - "long": "Returns the test results of the Reachability tests for an organization.\n\n
\n\nChanges in V2:\n\n
\n\n1. On-demand test results can be obtained along with the periodic tests that are executed on Video Mesh nodes.\n\n
\n\n2. You can now view the destination IP address of the destination cluster in the JSON response.", - "flags": [ - { - "name": "from", - "type": "string", - "usage": "The start date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. The `from` parameter cannot have date and time values that exceed `to`." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-reachability-test-results-v2" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "org-id", - "type": "string", - "usage": "Unique ID of the organization.", - "hidden": true - }, - { - "name": "to", - "type": "string", - "usage": "The end date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format." - }, - { - "name": "trigger-type", - "type": "string", - "usage": "Trigger type." - } - ] - }, - { - "path": "webex meetings video-mesh reset-event-threshold-configuration", - "short": "Reset Event Threshold Configuration", - "long": "Resets the existing event threshold configuration for given Event Threshold IDs to default value. To stop receiving webhook events, use the [Webhooks API](docs/api/v1/webhooks) to delete the webhook in question.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "event-threshold-ids", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for reset-event-threshold-configuration" - } - ] - }, - { - "path": "webex meetings video-mesh trigger-on-demand-test-cluster", - "short": "Trigger on-demand test for cluster", - "long": "Triggers an on-demand test for a cluster.\nThe test is run on a maximum of 10 nodes present in the cluster, chosen at random, or based on input from the user.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "cluster-id", - "type": "string", - "usage": "Unique ID of the Video Mesh cluster.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for trigger-on-demand-test-cluster" - }, - { - "name": "nodes", - "type": "stringSlice", - "default": "[]" - }, - { - "name": "type", - "type": "string" - } - ] - }, - { - "path": "webex meetings video-mesh trigger-on-demand-test-node", - "short": "Trigger on-demand test for node", - "long": "Triggers an on-demand test for a node.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for trigger-on-demand-test-node" - }, - { - "name": "node-id", - "type": "string", - "usage": "Unique ID of the Video Mesh node.", - "required": true - }, - { - "name": "type", - "type": "string" - } - ] - }, - { - "path": "webex meetings video-mesh update-event-threshold-configuration", - "short": "Update Event Threshold Configuration", - "long": "Updates an existing event threshold configuration for given Event Threshold IDs.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-event-threshold-configuration" - } - ] - }, - { - "path": "webex meetings webhooks", - "short": "Webhooks commands" - }, - { - "path": "webex meetings webhooks create", - "short": "Create a Webhook", - "long": "Creates a webhook.\n\nTo learn more about how to create and use webhooks, see The [Webhooks Guide](/docs/api/guides/webhooks).", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "event", - "type": "string" - }, - { - "name": "filter", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "owned-by", - "type": "string" - }, - { - "name": "resource", - "type": "string" - }, - { - "name": "secret", - "type": "string" - }, - { - "name": "target-url", - "type": "string" - } - ] - }, - { - "path": "webex meetings webhooks delete", - "short": "Delete a Webhook", - "long": "Deletes a webhook, by ID.\n\nSpecify the webhook ID in the `webhookId` parameter in the URI.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "webhook-id", - "type": "string", - "usage": "The unique identifier for the webhook.", - "required": true - } - ] - }, - { - "path": "webex meetings webhooks get", - "short": "Get Webhook Details", - "long": "Shows details for a webhook, by ID.\n\nSpecify the webhook ID in the `webhookId` parameter in the URI.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "webhook-id", - "type": "string", - "usage": "The unique identifier for the webhook.", - "required": true - } - ] - }, - { - "path": "webex meetings webhooks list", - "short": "List Webhooks", - "long": "List all of your webhooks.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the maximum number of webhooks in the response." - }, - { - "name": "owned-by", - "type": "string", - "usage": "Limit the result list to org wide webhooks. Only allowed value is `org`." - } - ] - }, - { - "path": "webex meetings webhooks update", - "short": "Update a Webhook", - "long": "Updates a webhook, by ID. You cannot use this call to deactivate a webhook, only to activate a webhook that was auto deactivated.\nThe fields that can be updated are `name`, `targetURL`, `secret` and `status`. All other fields, if supplied, are ignored.\n\nSpecify the webhook ID in the `webhookId` parameter in the URI.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "owned-by", - "type": "string" - }, - { - "name": "secret", - "type": "string" - }, - { - "name": "status", - "type": "string" - }, - { - "name": "target-url", - "type": "string" - }, - { - "name": "webhook-id", - "type": "string", - "usage": "The unique identifier for the webhook.", - "required": true - } - ] - }, - { - "path": "webex messaging", - "aliases": [ - "msg" - ], - "short": "Webex Messaging APIs", - "long": "Manage Webex Messaging — rooms, messages, teams, webhooks, and more." - }, - { - "path": "webex messaging attachment-actions", - "short": "AttachmentActions commands" - }, - { - "path": "webex messaging attachment-actions create", - "short": "Create an Attachment Action", - "long": "Create a new attachment action.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - } - ] - }, - { - "path": "webex messaging attachment-actions get", - "short": "Get Attachment Action Details", - "long": "Shows details for a attachment action, by ID.\n\nSpecify the attachment action ID in the `id` URI parameter.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "id", - "type": "string", - "usage": "A unique identifier for the attachment action.", - "required": true - } - ] - }, - { - "path": "webex messaging ecm-folder-linking", - "short": "EcmFolderLinking commands" - }, - { - "path": "webex messaging ecm-folder-linking create-configuration", - "short": "Create an ECM folder configuration", - "long": "Adds an existing ECM folder to a room as (default or reference) file storage. There is no data validation happening for the request. Please ensure the correct `driveId` and `itemId.` These can be collected from the MS Graph API. The `contentUrl` and `displayName` are used only for user convenience. The folder will be configured with the MS folder name as `displayName`, and the `contentURL` may be updated or corrected as needed. To assess final configuration, please make a GET request on the linkedFolder.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "content-url", - "type": "string" - }, - { - "name": "default-folder", - "type": "string" - }, - { - "name": "display-name", - "type": "string" - }, - { - "name": "drive-id", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-configuration" - }, - { - "name": "item-id", - "type": "string" - }, - { - "name": "room-id", - "type": "string" - } - ] - }, - { - "path": "webex messaging ecm-folder-linking get", - "short": "Get ECM Folder Details", - "long": "Get details for a room ECM folder with the specified folder id.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "id", - "type": "string", - "usage": "The unique identifier for the folder.", - "required": true - } - ] - }, - { - "path": "webex messaging ecm-folder-linking list", - "short": "List ECM folder", - "long": "Lists the ECM folder of a room specified by the `roomId` query parameter.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "room-id", - "type": "string", - "usage": "ID of the room for which to list the ECM folder." - } - ] - }, - { - "path": "webex messaging ecm-folder-linking unlink-linked", - "short": "Unlink an ECM linked folder", - "long": "Unlinks the room-linked folder with the specified ID from the space.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for unlink-linked" - }, - { - "name": "id", - "type": "string", - "usage": "The unique identifier for the folder to disassociate from the space.", - "required": true - } - ] - }, - { - "path": "webex messaging ecm-folder-linking update-linked", - "short": "Update an ECM Linked Folder", - "long": "Updates the configuration of the specified Room folder. There is no data validation happening for the request. Please ensure the correct `driveId` and `itemId.` These can be collected from the MS Graph API. The `contentUrl` and `displayName` are used only for user convenience. The folder will be configured with the MS folder name as `displayName`, and the `contentURL` may be updated or corrected as needed. To assess final configuration, please make a GET request on the linkedFolder.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "content-url", - "type": "string" - }, - { - "name": "default-folder", - "type": "string" - }, - { - "name": "display-name", - "type": "string" - }, - { - "name": "drive-id", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-linked" - }, - { - "name": "id", - "type": "string", - "usage": "The unique identifier for the room folder.", - "required": true - }, - { - "name": "item-id", - "type": "string" - }, - { - "name": "room-id", - "type": "string" - } - ] - }, - { - "path": "webex messaging events", - "short": "Events commands" - }, - { - "path": "webex messaging events get", - "short": "Get Event Details", - "long": "Shows details for an event, by event ID.\n\nSpecify the event ID in the `eventId` parameter in the URI.", - "flags": [ - { - "name": "event-id", - "type": "string", - "usage": "The unique identifier for the event.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - } - ] - }, - { - "path": "webex messaging events list", - "short": "List Events", - "long": "List events in your organization. Several query parameters are available to filter the events returned in the response.\n\nLong result sets will be split into [pages](/docs/basics#pagination).", - "flags": [ - { - "name": "actor-id", - "type": "string", - "usage": "List events performed by this person, by person ID." - }, - { - "name": "from", - "type": "string", - "usage": "List events which occurred after a specific date and time." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "max", - "type": "string", - "usage": "Limit the maximum number of events in the response. Value must be between 1 and 1000, inclusive." - }, - { - "name": "resource", - "type": "string", - "usage": "List events with a specific resource type." - }, - { - "name": "service-type", - "type": "string", - "usage": "List events for a specific service type. This parameter is only applicable and mandatory when resource is set to `convergedRecordings`." - }, - { - "name": "to", - "type": "string", - "usage": "List events that occurred before a specific date and time. If not specified, events up to the present time will be listed. Cannot be set to a future date relative to the current time." - }, - { - "name": "type", - "type": "string", - "usage": "List events with a specific event type." - } - ] - }, - { - "path": "webex messaging hds", - "aliases": [ - "hybrid-data-security" - ], - "short": "Hds commands" - }, - { - "path": "webex messaging hds get-alarms-node", - "short": "Get alarms for an HDS node", - "long": "Returns the alarm details for a single HDS node for the provided time range (last 24 hours).\nTo obtain the Node ID needed for this API, use the [List nodes for an HDS cluster API]()", - "flags": [ - { - "name": "from", - "type": "string", - "usage": "The start date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-alarms-node" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "node-id", - "type": "string", - "usage": "Unique ID of the HDS node.", - "required": true - }, - { - "name": "to", - "type": "string", - "usage": "The end date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format." - } - ] - }, - { - "path": "webex messaging hds get-availability-cluster", - "short": "Get availability details for HDS cluster", - "long": "Get the availability details for an HDS cluster, where each segment specifies the start and end times, as well as the number of online, offline, and total nodes within that segment.\nTo obtain the Cluster ID needed for this API, use the [Get organization details API]()", - "flags": [ - { - "name": "cluster-id", - "type": "string", - "usage": "Unique ID of the HDS cluster.", - "required": true - }, - { - "name": "from", - "type": "string", - "usage": "The start date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format. The 'from' value cannot be later than the 'to' value, and it cannot be more than 1 day older than the current date and time." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-availability-cluster" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "to", - "type": "string", - "usage": "The end date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format." - } - ] - }, - { - "path": "webex messaging hds get-cluster", - "short": "Get cluster details", - "long": "Retrieve details for a specific HDS cluster, such as the cluster name, cluster status, upgrade schedule, and HDS nodes in the cluster.\nTo obtain the Cluster ID needed for this API, use the [Get organization details API]()", - "flags": [ - { - "name": "cluster-id", - "type": "string", - "usage": "Unique ID of the HDS cluster.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-cluster" - } - ] - }, - { - "path": "webex messaging hds get-database-config-org", - "aliases": [ - "get-database-org-2" - ], - "short": "Get database details for the HDS organization", - "long": "Retrieve details of database information for an HDS organization, such as database type and version used.\nTo obtain the Organization ID needed for this API, use the [Organizations API]()", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-database-config-org" - }, - { - "name": "organization-id", - "type": "string", - "usage": "Unique ID of the HDS organization", - "required": true - } - ] - }, - { - "path": "webex messaging hds get-database-org", - "short": "Get database details for the HDS organization", - "long": "Retrieve details of database information for an HDS organization, such as database type and version used.\nTo obtain the Organization ID needed for this API, use the [Organizations API]()", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-database-org" - }, - { - "name": "organization-id", - "type": "string", - "usage": "Unique ID of the HDS organization", - "required": true - } - ] - }, - { - "path": "webex messaging hds get-multi-tenant-org", - "short": "Get Multi-Tenant HDS organization details", - "long": "Retrieve details of Multi-Tenant HDS organization such as Organization Name and ID, CMK state and state of Tenants Organizations.\nTo obtain the Organization ID needed for this API, use the [Organizations API]()", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-multi-tenant-org" - }, - { - "name": "organization-id", - "type": "string", - "usage": "Unique ID of the HDS organization.", - "required": true - } - ] - }, - { - "path": "webex messaging hds get-node", - "short": "Get node details", - "long": "Retrieve details for a specific HDS node, such as host name, release version, proxy details, deployment and build type, availability details, etc.\nTo obtain the Node ID needed for this API, use the [Get cluster details API]()", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-node" - }, - { - "name": "node-id", - "type": "string", - "usage": "Unique ID of the HDS node", - "required": true - } - ] - }, - { - "path": "webex messaging hds get-org", - "short": "Get organization details", - "long": "Retrieve details for an HDS organization, such as the organization name, type of organization.\nTo obtain the Organization ID needed for this API, use the [Organizations API]()", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-org" - }, - { - "name": "organization-id", - "type": "string", - "usage": "Unique ID of the HDS organization.", - "required": true - } - ] - }, - { - "path": "webex messaging hds get-test-results-node", - "short": "Get test results for HDS node", - "long": "Get the latest results of the network tests triggered for a single HDS node. The test results are generated as part of the Network Test execution on the node. The network tests include the Bandwidth Test, DNS Resolution Test, and HTTPS Connectivity Test.\n The results from the latest test run are provided, covering up to the past 90 days if available.\nTo obtain the Node ID needed for this API, use the [Get cluster details API]()", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-test-results-node" - }, - { - "name": "node-id", - "type": "string", - "usage": "Unique ID of the HDS node.", - "required": true - }, - { - "name": "trigger-type", - "type": "string", - "usage": "Trigger type." - } - ] - }, - { - "path": "webex messaging hds get-usage-node", - "short": "Get resource usage for an HDS node", - "long": "Retrieve CPU, memory, and disk resource usage details for a specific HDS node over the requested time range.\nTo obtain the Node ID needed for this API, use the [List nodes for an HDS cluster API]()", - "flags": [ - { - "name": "from", - "type": "string", - "usage": "The start date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-usage-node" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "node-id", - "type": "string", - "usage": "Unique ID of the HDS node.", - "required": true - }, - { - "name": "to", - "type": "string", - "usage": "The end date and time of the requested data in any [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compliant format." - } - ] - }, - { - "path": "webex messaging hds list-clusters-org", - "short": "List clusters for an HDS organization", - "long": "Retrieve a list of all clusters for a specific HDS organization, including cluster status, release channel, and upgrade schedule details.\nTo obtain the Organization ID needed for this API, use the [Organizations API]()", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-clusters-org" - }, - { - "name": "organization-id", - "type": "string", - "usage": "Unique ID of the HDS organization.", - "required": true - } - ] - }, - { - "path": "webex messaging hds list-nodes-cluster", - "short": "List nodes for an HDS cluster", - "long": "Retrieve a list of all nodes for a specific HDS cluster, including availability, proxy details, deployment type, and release version.\nTo obtain the Cluster ID needed for this API, use the [List clusters for an HDS organization API]()", - "flags": [ - { - "name": "cluster-id", - "type": "string", - "usage": "Unique ID of the HDS cluster.", - "required": true - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-nodes-cluster" - } - ] - }, - { - "path": "webex messaging hds list-tenants-org", - "aliases": [ - "get-multi-tenant-org-2" - ], - "short": "Get Multi-Tenant HDS organization details", - "long": "Retrieve details of Multi-Tenant HDS organization such as Organization Name and ID, CMK state and state of Tenants Organizations.\nTo obtain the Organization ID needed for this API, use the [Organizations API]()", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-tenants-org" - }, - { - "name": "organization-id", - "type": "string", - "usage": "Unique ID of the HDS organization.", - "required": true - } - ] - }, - { - "path": "webex messaging memberships", - "short": "Memberships commands" - }, - { - "path": "webex messaging memberships create", - "short": "Create a Membership", - "long": "Add someone to a room by Person ID or email address, optionally making them a moderator. Compliance Officers cannot add people to empty (team) spaces.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "is-moderator", - "type": "bool", - "default": "false" - }, - { - "name": "person-email", - "type": "string" - }, - { - "name": "person-id", - "type": "string" - }, - { - "name": "room-id", - "type": "string" - } - ] - }, - { - "path": "webex messaging memberships delete", - "short": "Delete a Membership", - "long": "Deletes a membership by ID.\n\nSpecify the membership ID in the `membershipId` URI parameter.\n\nThe membership for the last moderator of a [Team](/docs/api/v1/teams)'s General space may not be deleted; [promote another user](/docs/api/v1/team-memberships/update-a-team-membership) to team moderator first.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "membership-id", - "type": "string", - "usage": "The unique identifier for the membership.", - "required": true - } - ] - }, - { - "path": "webex messaging memberships get", - "short": "Get Membership Details", - "long": "Get details for a membership by ID.\n\nSpecify the membership ID in the `membershipId` URI parameter.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "membership-id", - "type": "string", - "usage": "The unique identifier for the membership.", - "required": true - } - ] - }, - { - "path": "webex messaging memberships list", - "short": "List Memberships", - "long": "Lists all room memberships. By default, lists memberships for rooms to which the authenticated user belongs.\n\nUse query parameters to filter the response.\n\nUse `roomId` to list memberships for a room, by ID.\n\n**NOTE**: For moderated team spaces, the list of memberships will include only the space moderators if the user is a team member but not a direct participant of the space.\n\nUse either `personId` or `personEmail` to filter the results. The `roomId` parameter is required when using these parameters.\n\nWhen the requester is a compliance officer, they can query by `personId` or `personEmail` **WITHOUT** specifying a `roomId`. The response will include **ALL** memberships for the user where a space is owned by an org to which the user belongs.\n\nLong result sets will be split into [pages](/docs/basics#pagination).", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the maximum number of memberships in the response." - }, - { - "name": "person-email", - "type": "string", - "usage": "List memberships associated with a person, by email address. The `roomId` parameter is required when using this parameter." - }, - { - "name": "person-id", - "type": "string", - "usage": "List memberships associated with a person, by ID. The `roomId` parameter is required when using this parameter." - }, - { - "name": "room-id", - "type": "string", - "usage": "List memberships associated with a room, by ID." - } - ] - }, - { - "path": "webex messaging memberships update", - "short": "Update a Membership", - "long": "Updates properties for a membership by ID.\n\nSpecify the membership ID in the `membershipId` URI parameter.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "is-moderator", - "type": "bool", - "default": "false" - }, - { - "name": "is-room-hidden", - "type": "bool", - "default": "false" - }, - { - "name": "membership-id", - "type": "string", - "usage": "The unique identifier for the membership.", - "required": true - } - ] - }, - { - "path": "webex messaging messages", - "short": "Messages commands" - }, - { - "path": "webex messaging messages create", - "short": "Create a Message", - "long": "Post a plain text or rich text message to a room or person, optionally with one\nattachment in the JSON files array. File previews are only rendered for attachments\nof 1 MB or less.\n\nEntries starting with http:// or https:// keep the JSON request; any other entry is a\nlocal path uploaded as multipart/form-data.\nRelative attachment paths resolve against the current working directory, not the body file.\nLocal uploads accept string-valued message fields and one regular file up to 100 MiB.\n\nExamples:\n webex messaging messages create --body '{\"toPersonEmail\":\"user@example.com\",\"files\":[\"./guide.md\"]}'\n webex messaging messages create --body-file message.json --dry-run", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - } - ] - }, - { - "path": "webex messaging messages delete", - "short": "Delete a Message", - "long": "Delete a message, by message ID.\n\nSpecify the message ID in the `messageId` parameter in the URI.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "message-id", - "type": "string", - "usage": "The unique identifier for the message.", - "required": true - } - ] - }, - { - "path": "webex messaging messages edit", - "short": "Edit a Message", - "long": "Update a message you have posted not more than 10 times.\n\nSpecify the `messageId` of the message you want to edit.\n\nEdits of messages containing files or attachments are not currently supported.\nIf a user attempts to edit a message containing files or attachments a `400 Bad Request` will be returned by the API with a message stating that the feature is currently unsupported.\n\nThere is also a maximum number of times a user can edit a message. The maximum currently supported is 10 edits per message.\n If a user attempts to edit a message greater that the maximum times allowed the API will return 400 Bad Request with a message stating the edit limit has been reached.\n\nWhile only the `roomId` and `text` or `markdown` attributes are *required* in the request body, a common pattern for editing message is to first call `GET /messages/{id}` for the message you wish to edit and to then update the `text` or `markdown` attribute accordingly, passing the updated message object in the request body of the `PUT /messages/{id}` request.\nWhen this pattern is used on a message that included markdown, the `html` attribute must be deleted prior to making the `PUT` request.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for edit" - }, - { - "name": "markdown", - "type": "string" - }, - { - "name": "message-id", - "type": "string", - "usage": "The unique identifier for the message.", - "required": true - }, - { - "name": "room-id", - "type": "string" - }, - { - "name": "text", - "type": "string" - } - ] - }, - { - "path": "webex messaging messages get", - "short": "Get Message Details", - "long": "Show details for a message, by message ID.\n\nSpecify the message ID in the `messageId` parameter in the URI.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "message-id", - "type": "string", - "usage": "The unique identifier for the message.", - "required": true - } - ] - }, - { - "path": "webex messaging messages list", - "short": "List Messages", - "long": "Lists all messages in a room. Each message will include content attachments if present.\n\nThe list sorts the messages in descending order by creation date.\n\nLong result sets will be split into [pages](/docs/basics#pagination).", - "flags": [ - { - "name": "before", - "type": "string", - "usage": "List messages sent before a date and time." - }, - { - "name": "before-message", - "type": "string", - "usage": "List messages sent before a message, by ID." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the maximum number of messages in the response. Cannot exceed 100 if used with `mentionedPeople`." - }, - { - "name": "mentioned-people", - "type": "string", - "usage": "List messages with these people mentioned, by ID. Use `me` as a shorthand for the current API user. Only `me` or the person ID of the current user may be specified. Bots must include this parameter to list messages in group rooms (spaces)." - }, - { - "name": "parent-id", - "type": "string", - "usage": "List messages with a parent, by ID." - }, - { - "name": "room-id", - "type": "string", - "usage": "List messages in a room, by ID." - } - ] - }, - { - "path": "webex messaging messages list-direct", - "short": "List Direct Messages", - "long": "List all messages in a 1:1 (direct) room. Use the `personId` or `personEmail` query parameter to specify the room. Each message will include content attachments if present.\n\nThe list sorts the messages in descending order by creation date.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list-direct" - }, - { - "name": "parent-id", - "type": "string", - "usage": "List messages with a parent, by ID." - }, - { - "name": "person-email", - "type": "string", - "usage": "List messages in a 1:1 room, by person email." - }, - { - "name": "person-id", - "type": "string", - "usage": "List messages in a 1:1 room, by person ID." - } - ] - }, - { - "path": "webex messaging people", - "short": "People commands" - }, - { - "path": "webex messaging people create-person", - "short": "Create a Person", - "long": "Create a new user account for a given organization. Only an admin can create a new user account.\n\nAt least one of the following body parameters is required to create a new user: `displayName`, `firstName`, `lastName`.\n\nCurrently, users may have only one email address associated with their account. The `emails` parameter is an array, which accepts multiple values to allow for future expansion, but currently only one email address will be used for the new user.\n\nAdmin users can include `Webex calling` (BroadCloud) user details in the response by specifying `callingData` parameter as true. It may happen that the POST request with calling data returns a 400 status, but the person was created still. One way to get into this state is if an invalid phone number is assigned to a user. The people API aggregates calls to several other microservices, and one may have failed. A best practice is to check if the user exists before retrying. This can be done with the user's email address and a GET /people.\n\nWhen doing attendee management, append `#attendee` to the `siteUrl` parameter (e.g. `mysite.webex.com#attendee`) to make the new user an attendee for a site.\n\n**NOTES**:\n\n* For creating a `Webex Calling` user, you must provide `phoneNumbers` or `extension`, `locationId`, and `licenses` string in the same request.\n\n* `SipAddresses` are asigned via an asynchronous process. This means that the POST response may not show the SIPAddresses immediately. Instead you can verify them with a separate GET to /people, after they were newly configured.\n\n* When assigning multiple licenses in a single request, the system will assign all valid and available licenses. If any requested licenses cannot be assigned, the operation will continue with the remaining licenses. As a result, it is possible that not all requested licenses are assigned to the user.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calling-data", - "type": "string", - "usage": "Include Webex Calling user details in the response." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create-person" - }, - { - "name": "min-response", - "type": "string", - "usage": "Set to `true` to improve performance by omitting person details and returning only the ID in the response when successful. If unsuccessful the response will have optional error details." - } - ] - }, - { - "path": "webex messaging people delete-person", - "short": "Delete a Person", - "long": "Remove a person from the system.\n\n**Required Administrator Roles:**\n\nThe following administrators have permission to use this API:\n\n**Customer Organization:**\n- Full administrator\n- User administrator\n\n**Partner/External Access:**\n- External full administrator\n\n**Note:** External read-only administrators, provisioning administrators, and device administrators cannot delete users.\n\nSpecify the person ID in the `personId` parameter in the URI.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete-person" - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex messaging people get-my-own", - "short": "Get My Own Details", - "long": "Get profile details for the authenticated user. This is the same as GET `/people/{personId}` using the Person ID associated with your Auth token.\n\nAdmin users can include `Webex Calling` (BroadCloud) user details in the response by specifying `callingData` parameter as true.", - "flags": [ - { - "name": "calling-data", - "type": "string", - "usage": "Include Webex Calling user details in the response." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-my-own" - } - ] - }, - { - "path": "webex messaging people get-person", - "short": "Get Person Details", - "long": "Shows details for a person, by ID.\n\nResponse properties associated with a user's presence status, such as `status` or `lastActivity`, will only be displayed for people within your organization or an organization you manage. Presence information will not be shown if the authenticated user has [disabled status sharing](https://help.webex.com/nkzs6wl/).\n\nAdmin users can include `Webex Calling` (BroadCloud) user details in the response by specifying `callingData` parameter as `true`.\n\nSpecify the person ID in the `personId` parameter in the URI.", - "flags": [ - { - "name": "calling-data", - "type": "string", - "usage": "Include Webex Calling user details in the response." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-person" - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - } - ] - }, - { - "path": "webex messaging people list", - "short": "List People", - "long": "List people in your organization. For most users, either the `email` or `displayName` parameter is required. Admin users can omit these fields and list all users in their organization.\n\nResponse properties associated with a user's presence status, such as `status` or `lastActivity`, will only be returned for people within your organization or an organization you manage. Presence information will not be returned if the authenticated user has [disabled status sharing](https://help.webex.com/nkzs6wl/). Calling /people frequently to poll `status` information for a large set of users will quickly lead to `429` errors and throttling of such requests and is therefore discouraged.\n\nAdmin users can include `Webex Calling` (BroadCloud) user details in the response by specifying `callingData` parameter as `true`. Admin users can list all users in a location. Admin users will receive an enriched payload with additional administrative fields like `licenses`,`roles`, `locations` etc. These fields are shown when accessing a user via GET /people/{id}, not when doing a GET /people?id=\n\nLookup by `email` is only supported for people within the same org or where a partner admin relationship is in place.\n\nLookup by `roles` is only supported for Admin users for the people within the same org.\n\nLong result sets will be split into [pages](/docs/basics#pagination).", - "flags": [ - { - "name": "calling-data", - "type": "string", - "usage": "Include Webex Calling user details in the response." - }, - { - "name": "display-name", - "type": "string", - "usage": "List people whose name starts with this string. For non-admin requests, either this or email are required." - }, - { - "name": "email", - "type": "string", - "usage": "List people with this email address. For non-admin requests, either this or `displayName` are required. With the exception of partner admins and a managed org relationship, people lookup by email is only available for users in the same org." - }, - { - "name": "exclude-status", - "type": "string", - "usage": "Omit people status/availability to enhance query performance." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "id", - "type": "string", - "usage": "List people by ID. Accepts up to 85 person IDs separated by commas. If this parameter is provided then presence information (such as the `lastActivity` or `status` properties) will not be included in the response." - }, - { - "name": "location-id", - "type": "string", - "usage": "List people present in this location." - }, - { - "name": "max", - "type": "string", - "usage": "Limit the maximum number of people in the response. If `callingData`=true, then `max` will not be more than 100. If `locationId` is specified then `max` will not be more than 50." - }, - { - "name": "org-id", - "type": "string", - "usage": "List people in this organization. Only admin users of another organization (such as partners) may use this parameter.", - "hidden": true - }, - { - "name": "roles", - "type": "string", - "usage": "List of roleIds separated by commas." - } - ] - }, - { - "path": "webex messaging people update-person", - "short": "Update a Person", - "long": "Update details for a person, by ID.\n\nSpecify the person ID in the `personId` parameter in the URI. Only an admin can update a person details.\n\nInclude all details for the person. This action expects all user details to be present in the request. A common approach is to first [GET the person's details](/docs/api/v1/people/get-person-details), make changes, then PUT both the changed and unchanged values.\n\nAdmin users can include `Webex Calling` (BroadCloud) user details in the response by specifying `callingData` parameter as true.\n\nWhen doing attendee management, to update a user from host role to an attendee for a site append `#attendee` to the respective `siteUrl` and remove the meeting host license for this site from the license array.\nTo update a person from an attendee role to a host for a site, add the meeting license for this site in the meeting array, and remove that site from the `siteurl` parameter.\n\nTo remove the attendee privilege for a user on a meeting site, remove the `sitename#attendee` from the `siteUrl`s array. The `showAllTypes` parameter must be set to `true`.\n\n**NOTE**:\n\n* When assigning a Webex Calling license, either a telephone number or extension must already be assigned to the person or provided in the request payload.\n\n* When `callingData` is set to `true`, a Webex Calling license must be included in the `licenses` array.\n\n* The `locationId` can only be set when assigning a calling license to a user. It cannot be changed if a user is already an existing calling user.\n\n* The `extension` field should be used to update the Webex Calling extension for a person. The extension value should not include the location routing prefix. The `work_extension` type in the `phoneNumbers` object as seen in the response payload of [List People](/docs/api/v1/people/list-people) or [Get Person Details](/docs/api/v1/people/get-person-details), cannot be used to set the Webex Calling extension for a person.\n\n* When updating a user with multiple email addresses using a PUT request, ensure that the primary email address is listed first in the array. Note that the order of email addresses returned by a GET request is not guaranteed..\n\n* The People API is a combination of several microservices, each responsible for specific attributes of a person. As a result, a PUT request that returns an error response code may still have altered some values of the person's data. Therefore, it is recommended to perform a GET request after encountering an error to verify the current state of the resource. \n\n* Some licenses are implicitly assigned by the system and cannot be admin controlled. They are necessary for the baseline function of the Webex system. If you get an error about implicitly assigned licensed that cannot be removed, please ensure you have the corresponding license in your PUT request.\n\n* When assigning multiple licenses in a single request, the system will assign all valid and available licenses. If any requested licenses cannot be assigned, the operation will continue with the remaining licenses. As a result, it is possible that not all requested licenses are assigned to the user.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "calling-data", - "type": "string", - "usage": "Include Webex Calling user details in the response." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update-person" - }, - { - "name": "min-response", - "type": "string", - "usage": "Set to `true` to improve performance by omitting person details in the response. If unsuccessful the response will have optional error details." - }, - { - "name": "person-id", - "type": "string", - "usage": "A unique identifier for the person.", - "required": true - }, - { - "name": "show-all-types", - "type": "string", - "usage": "Include additional user data like `#attendee` role." - } - ] - }, - { - "path": "webex messaging room-tabs", - "short": "RoomTabs commands" - }, - { - "path": "webex messaging room-tabs create", - "short": "Create a Room Tab", - "long": "Add a tab with a specified URL to a room.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "content-url", - "type": "string" - }, - { - "name": "display-name", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "room-id", - "type": "string" - } - ] - }, - { - "path": "webex messaging room-tabs delete", - "short": "Delete a Room Tab", - "long": "Deletes a Room Tab with the specified ID.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "id", - "type": "string", - "usage": "The unique identifier for the Room Tab to delete.", - "required": true - } - ] - }, - { - "path": "webex messaging room-tabs get", - "short": "Get Room Tab Details", - "long": "Get details for a Room Tab with the specified room tab ID.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "id", - "type": "string", - "usage": "The unique identifier for the Room Tab.", - "required": true - } - ] - }, - { - "path": "webex messaging room-tabs list", - "short": "List Room Tabs", - "long": "Lists all Room Tabs of a room specified by the `roomId` query parameter.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "room-id", - "type": "string", - "usage": "ID of the room for which to list room tabs." - } - ] - }, - { - "path": "webex messaging room-tabs update", - "short": "Update a Room Tab", - "long": "Updates the content URL of the specified Room Tab ID.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "content-url", - "type": "string" - }, - { - "name": "display-name", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "id", - "type": "string", - "usage": "The unique identifier for the Room Tab.", - "required": true - }, - { - "name": "room-id", - "type": "string" - } - ] - }, - { - "path": "webex messaging rooms", - "short": "Rooms commands" - }, - { - "path": "webex messaging rooms create", - "short": "Create a Room", - "long": "Creates a room. The authenticated user is automatically added as a member of the room. See the [Memberships API](/docs/api/v1/memberships) to learn how to add more people to the room.\n\nTo create a 1:1 room, use the [Create Messages](/docs/api/v1/messages/create-a-message) endpoint to send a message directly to another person by using the `toPersonId` or `toPersonEmail` parameters.\n\nBots are not able to create and simultaneously classify a room. A bot may update a space classification after a person of the same owning organization joined the space as the first human user.\nA space can only be put into announcement mode when it is locked.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "classification-id", - "type": "string" - }, - { - "name": "description", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "is-announcement-only", - "type": "bool", - "default": "false" - }, - { - "name": "is-locked", - "type": "bool", - "default": "false" - }, - { - "name": "is-public", - "type": "bool", - "default": "false" - }, - { - "name": "team-id", - "type": "string" - }, - { - "name": "title", - "type": "string" - } - ] - }, - { - "path": "webex messaging rooms delete", - "short": "Delete a Room", - "long": "Deletes a room, by ID. Deleted rooms cannot be recovered.\nAs a security measure to prevent accidental deletion, when a non moderator deletes the room they are removed from the room instead.\n\nDeleting a room that is part of a team will archive the room instead.\n\nA Compliance Officer has no special privileges, i.e. they cannot delete rooms they are not part of.\n\nSpecify the room ID in the `roomId` parameter in the URI.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "room-id", - "type": "string", - "usage": "The unique identifier for the room.", - "required": true - } - ] - }, - { - "path": "webex messaging rooms get", - "short": "Get Room Details", - "long": "Shows details for a room, by ID.\n\nThe `title` of the room for 1:1 rooms will be the display name of the other person. When a Compliance Officer lists 1:1 rooms, the \"other\" person cannot be determined. This means that the room's title may not be filled in and instead shows \"Empty Title\". Please use the [memberships API](https://developer.webex.com/docs/api/v1/memberships) to list the other person in the space.\n\nSpecify the room ID in the `roomId` parameter in the URI.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "room-id", - "type": "string", - "usage": "The unique identifier for the room.", - "required": true - } - ] - }, - { - "path": "webex messaging rooms get-meeting", - "short": "Get Room Meeting Details", - "long": "
\n\nThe meetingInfo API is deprecated and will be EOL on Jan 31, 2025. Meetings in the WSMP must be scheduled and licensed via the meetings backend.\nThe [Create a Meeting](/docs/api/v1/meetings/create-a-meeting) endpoint will provide the SIP address for the meeting to call.\n\n
\n\nShows Webex meeting details for a room such as the SIP address, meeting URL, toll-free and toll dial-in numbers.\n\nSpecify the room ID in the `roomId` parameter in the URI.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get-meeting" - }, - { - "name": "room-id", - "type": "string", - "usage": "The unique identifier for the room.", - "required": true - } - ] - }, - { - "path": "webex messaging rooms list", - "short": "List Rooms", - "long": "List rooms to which the authenticated user belongs to.\n\nThe `title` of the room for 1:1 rooms will be the display name of the other person. Please use the [memberships API](https://developer.webex.com/docs/api/v1/memberships) to list the people in the space.\n\nLong result sets will be split into [pages](/docs/basics#pagination).\n\nKnown Limitations:\nThe underlying database does not support natural sorting by `lastactivity` and will only sort on limited set of results, which are pulled from the database in order of `roomId`. For users or bots in more than 3000 spaces this can result in anomalies such as spaces that have had recent activity not being returned in the results when sorting by `lastacivity`.", - "flags": [ - { - "name": "from", - "type": "string", - "usage": "Filters rooms, that were made public after this time. See `madePublic` timestamp" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "last", - "type": "string", - "usage": "Time range shorthand (e.g. 1h, 30m, 24h). Sets --from automatically." - }, - { - "name": "max", - "type": "string", - "usage": "Limit the maximum number of rooms in the response. Value must be between 1 and 1000, inclusive." - }, - { - "name": "org-public-spaces", - "type": "string", - "usage": "Shows the org's public spaces joined and unjoined. When set the result list is sorted by the `madePublic` timestamp." - }, - { - "name": "sort-by", - "type": "string", - "usage": "Sort results. Cannot be set in combination with `orgPublicSpaces`." - }, - { - "name": "team-id", - "type": "string", - "usage": "List rooms associated with a team, by ID. Cannot be set in combination with `orgPublicSpaces`." - }, - { - "name": "to", - "type": "string", - "usage": "Filters rooms, that were made public before this time. See `maePublic` timestamp" - }, - { - "name": "type", - "type": "string", - "usage": "List rooms by type. Cannot be set in combination with `orgPublicSpaces`." - } - ] - }, - { - "path": "webex messaging rooms update", - "short": "Update a Room", - "long": "Updates details for a room, by ID.\n\nSpecify the room ID in the `roomId` parameter in the URI.\nA space can only be put into announcement mode when it is locked.\nAny space participant or compliance officer can convert a space from public to private. Only a compliance officer can convert a space from private to public and only if the space is classified with the lowest category (usually `public`), and the space has a description.\nTo remove a `description` please use a space character ` ` by itself.\n\n
When using this method for moving a space under a team, ensure that all moderators in the space are also team members. If a moderator is not part of the team, demote or remove them as a moderator. Alternatively, add the non-team moderators to the team. This ensures compliance with the requirement that all space moderators must be team members for successful operation execution.\n
\n\n
A Compliance Officer who is not a member of a space can only update the `classificationId`, `isAnnouncementOnly`, `description`, and `isPublic` fields.\n
", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "classification-id", - "type": "string" - }, - { - "name": "description", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "is-announcement-only", - "type": "bool", - "default": "false" - }, - { - "name": "is-locked", - "type": "bool", - "default": "false" - }, - { - "name": "is-public", - "type": "bool", - "default": "false" - }, - { - "name": "is-read-only", - "type": "bool", - "default": "false" - }, - { - "name": "room-id", - "type": "string", - "usage": "The unique identifier for the room.", - "required": true - }, - { - "name": "team-id", - "type": "string" - }, - { - "name": "title", - "type": "string" - } - ] - }, - { - "path": "webex messaging team-memberships", - "short": "TeamMemberships commands" - }, - { - "path": "webex messaging team-memberships create", - "short": "Create a Team Membership", - "long": "Add someone to a team by Person ID or email address, optionally making them a moderator.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "is-moderator", - "type": "bool", - "default": "false" - }, - { - "name": "person-email", - "type": "string" - }, - { - "name": "person-id", - "type": "string" - }, - { - "name": "team-id", - "type": "string" - } - ] - }, - { - "path": "webex messaging team-memberships delete", - "short": "Delete a Team Membership", - "long": "Deletes a team membership, by ID.\n\nSpecify the team membership ID in the `membershipId` URI parameter.\n\nThe team membership for the last moderator of a team may not be deleted; [promote another user](/docs/api/v1/team-memberships/update-a-team-membership) to team moderator first.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "membership-id", - "type": "string", - "usage": "The unique identifier for the team membership.", - "required": true - } - ] - }, - { - "path": "webex messaging team-memberships get", - "short": "Get Team Membership Details", - "long": "Shows details for a team membership, by ID.\n\nSpecify the team membership ID in the `membershipId` URI parameter.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "membership-id", - "type": "string", - "usage": "The unique identifier for the team membership.", - "required": true - } - ] - }, - { - "path": "webex messaging team-memberships list", - "short": "List Team Memberships", - "long": "Lists all team memberships for a given team, specified by the `teamId` query parameter.\n\nUse query parameters to filter the response.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the maximum number of team memberships in the response." - }, - { - "name": "team-id", - "type": "string", - "usage": "List memberships for a team, by ID." - } - ] - }, - { - "path": "webex messaging team-memberships update", - "short": "Update a Team Membership", - "long": "Updates a team membership, by ID.\n\nSpecify the team membership ID in the `membershipId` URI parameter.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "is-moderator", - "type": "bool", - "default": "false" - }, - { - "name": "membership-id", - "type": "string", - "usage": "The unique identifier for the team membership.", - "required": true - } - ] - }, - { - "path": "webex messaging teams", - "short": "Teams commands" - }, - { - "path": "webex messaging teams create", - "short": "Create a Team", - "long": "Creates a team.\n\nThe authenticated user is automatically added as a member of the team. See the [Team Memberships API](/docs/api/v1/team-memberships) to learn how to add more people to the team.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "description", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "name", - "type": "string" - } - ] - }, - { - "path": "webex messaging teams delete", - "short": "Delete a Team", - "long": "Deletes a team, by ID.\n\nSpecify the team ID in the `teamId` parameter in the URI.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "team-id", - "type": "string", - "usage": "The unique identifier for the team.", - "required": true - } - ] - }, - { - "path": "webex messaging teams get", - "short": "Get Team Details", - "long": "Shows details for a team, by ID.\n\nSpecify the team ID in the `teamId` parameter in the URI.", - "flags": [ - { - "name": "description", - "type": "string", - "usage": "The teams description." - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "team-id", - "type": "string", - "usage": "The unique identifier for the team.", - "required": true - } - ] - }, - { - "path": "webex messaging teams list", - "short": "List Teams", - "long": "Lists teams to which the authenticated user belongs.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the maximum number of teams in the response." - } - ] - }, - { - "path": "webex messaging teams update", - "short": "Update a Team", - "long": "Updates details for a team, by ID.\n\nSpecify the team ID in the `teamId` parameter in the URI.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "description", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "team-id", - "type": "string", - "usage": "The unique identifier for the team.", - "required": true - } - ] - }, - { - "path": "webex messaging webhooks", - "short": "Webhooks commands" - }, - { - "path": "webex messaging webhooks create", - "short": "Create a Webhook", - "long": "Creates a webhook.\n\nTo learn more about how to create and use webhooks, see The [Webhooks Guide](/docs/api/guides/webhooks).", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "event", - "type": "string" - }, - { - "name": "filter", - "type": "string" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for create" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "owned-by", - "type": "string" - }, - { - "name": "resource", - "type": "string" - }, - { - "name": "secret", - "type": "string" - }, - { - "name": "target-url", - "type": "string" - } - ] - }, - { - "path": "webex messaging webhooks delete", - "short": "Delete a Webhook", - "long": "Deletes a webhook, by ID.\n\nSpecify the webhook ID in the `webhookId` parameter in the URI.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for delete" - }, - { - "name": "webhook-id", - "type": "string", - "usage": "The unique identifier for the webhook.", - "required": true - } - ] - }, - { - "path": "webex messaging webhooks get", - "short": "Get Webhook Details", - "long": "Shows details for a webhook, by ID.\n\nSpecify the webhook ID in the `webhookId` parameter in the URI.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for get" - }, - { - "name": "webhook-id", - "type": "string", - "usage": "The unique identifier for the webhook.", - "required": true - } - ] - }, - { - "path": "webex messaging webhooks list", - "short": "List Webhooks", - "long": "List all of your webhooks.", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for list" - }, - { - "name": "max", - "type": "string", - "usage": "Limit the maximum number of webhooks in the response." - }, - { - "name": "owned-by", - "type": "string", - "usage": "Limit the result list to org wide webhooks. Only allowed value is `org`." - } - ] - }, - { - "path": "webex messaging webhooks update", - "short": "Update a Webhook", - "long": "Updates a webhook, by ID. You cannot use this call to deactivate a webhook, only to activate a webhook that was auto deactivated.\nThe fields that can be updated are `name`, `targetURL`, `secret` and `status`. All other fields, if supplied, are ignored.\n\nSpecify the webhook ID in the `webhookId` parameter in the URI.", - "flags": [ - { - "name": "body", - "type": "string", - "usage": "Raw JSON body" - }, - { - "name": "body-file", - "type": "string", - "usage": "Path to JSON body file" - }, - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for update" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "owned-by", - "type": "string" - }, - { - "name": "secret", - "type": "string" - }, - { - "name": "status", - "type": "string" - }, - { - "name": "target-url", - "type": "string" - }, - { - "name": "webhook-id", - "type": "string", - "usage": "The unique identifier for the webhook.", - "required": true - } - ] - }, - { - "path": "webex post-install", - "short": "Run post-installation setup (PATH, agent skills)", - "long": "Adds the install directory to PATH and installs the Webex agent skill.\n\nWithout a terminal, or with --yes or $WEBEX_CLI_NONINTERACTIVE=1, nothing is\nasked: the skill is installed for detected agents (Claude Code, Codex, Cursor).\nWithout --yes, the PATH line to add is printed instead of editing shell files.", - "flags": [ - { - "name": "no-skills", - "type": "bool", - "default": "false", - "usage": "Skip agent skill installation" - }, - { - "name": "skills-only", - "type": "bool", - "default": "false", - "usage": "Only check installed agent skills against this binary's skill", - "hidden": true - }, - { - "name": "yes", - "shorthand": "y", - "type": "bool", - "default": "false", - "usage": "Do not prompt; add the PATH line and install skills for detected agents" - } - ] - }, - { - "path": "webex update", - "short": "Update webex-cli to the latest version" - }, - { - "path": "webex version", - "short": "Print the version", - "flags": [ - { - "name": "help", - "shorthand": "h", - "type": "bool", - "default": "false", - "usage": "help for version" - } - ] - } -] diff --git a/testdata/golden/requests-admin.json b/testdata/golden/requests-admin.json deleted file mode 100644 index 54e5698..0000000 --- a/testdata/golden/requests-admin.json +++ /dev/null @@ -1,7523 +0,0 @@ -[ - { - "command": "admin admin-audit list-event-categories", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/adminAudit/eventCategories", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin admin-audit list-event-categories", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/adminAudit/eventCategories", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin admin-audit list-event-categories", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/adminAudit/eventCategories", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin admin-audit list-events", - "variant": "all-flags", - "args": [ - "--actor-id=s-actor-id", - "--event-categories=s-event-categories", - "--from=2026-01-01T00:00:00.000Z", - "--max=s-max", - "--offset=s-offset", - "--to=2026-01-02T00:00:00.000Z" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/adminAudit/events?actorId=s-actor-id&eventCategories=s-event-categories&from=2026-01-01T00%3A00%3A00.000Z&max=s-max&offset=s-offset&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&to=2026-01-02T00%3A00%3A00.000Z", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin admin-audit list-events", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/adminAudit/events?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin admin-audit list-events", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/adminAudit/events?max=100&offset=0&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin analytics historical-data-related-meetings", - "variant": "all-flags", - "args": [ - "--from=2026-01-01T00:00:00.000Z", - "--site-url=s-site-url", - "--to=2026-01-02T00:00:00.000Z" - ], - "requests": [ - { - "method": "GET", - "url": "https://analytics.webexapis.com/v1/analytics/meetingsMetrics/aggregates?from=2026-01-01T00%3A00%3A00.000Z&siteUrl=s-site-url&to=2026-01-02T00%3A00%3A00.000Z", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin analytics historical-data-related-meetings", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://analytics.webexapis.com/v1/analytics/meetingsMetrics/aggregates", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin analytics historical-data-related-meetings", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://analytics.webexapis.com/v1/analytics/meetingsMetrics/aggregates", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin analytics historical-data-related-messaging", - "variant": "all-flags", - "args": [ - "--from=2026-01-01T00:00:00.000Z", - "--to=2026-01-02T00:00:00.000Z" - ], - "requests": [ - { - "method": "GET", - "url": "https://analytics.webexapis.com/v1/analytics/messagingMetrics/dailyTotals?from=2026-01-01T00%3A00%3A00.000Z&to=2026-01-02T00%3A00%3A00.000Z", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin analytics historical-data-related-messaging", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://analytics.webexapis.com/v1/analytics/messagingMetrics/dailyTotals", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin analytics historical-data-related-messaging", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://analytics.webexapis.com/v1/analytics/messagingMetrics/dailyTotals", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin analytics historical-data-related-room-devices", - "variant": "all-flags", - "args": [ - "--from=2026-01-01T00:00:00.000Z", - "--to=2026-01-02T00:00:00.000Z" - ], - "requests": [ - { - "method": "GET", - "url": "https://analytics.webexapis.com/v1/analytics/roomDeviceMetrics/dailyTotals?from=2026-01-01T00%3A00%3A00.000Z&to=2026-01-02T00%3A00%3A00.000Z", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin analytics historical-data-related-room-devices", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://analytics.webexapis.com/v1/analytics/roomDeviceMetrics/dailyTotals", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin analytics historical-data-related-room-devices", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://analytics.webexapis.com/v1/analytics/roomDeviceMetrics/dailyTotals", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin archive-users get", - "variant": "all-flags", - "args": [ - "--useruuid=s-useruuid" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/identity/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/v1/ArchivedUser/s-useruuid", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin archive-users get", - "variant": "required", - "args": [ - "--useruuid=s-useruuid" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/identity/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/v1/ArchivedUser/s-useruuid", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin archive-users get", - "variant": "paginate", - "args": [ - "--useruuid=s-useruuid", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/identity/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/v1/ArchivedUser/s-useruuid", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin archive-users query", - "variant": "all-flags", - "args": [ - "--filter=s-filter" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/identity/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/v1/ArchivedUser?filter=s-filter", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin archive-users query", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/identity/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/v1/ArchivedUser", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin archive-users query", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/identity/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/v1/ArchivedUser", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin authorizations delete", - "variant": "all-flags", - "args": [ - "--authorization-id=s-authorization-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/authorizations/s-authorization-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin authorizations delete", - "variant": "required", - "args": [ - "--authorization-id=s-authorization-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/authorizations/s-authorization-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin authorizations delete-org-client-id", - "variant": "all-flags", - "args": [ - "--client-id=s-client-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/authorizations?clientId=s-client-id&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin authorizations delete-org-client-id", - "variant": "required", - "args": null, - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/authorizations?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin authorizations get-expiration-status-token", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/authorizations/tokenExpiry", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin authorizations get-expiration-status-token", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/authorizations/tokenExpiry", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin authorizations get-expiration-status-token", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/authorizations/tokenExpiry", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin authorizations list-user", - "variant": "all-flags", - "args": [ - "--person-email=s-person-email", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/authorizations?personEmail=s-person-email&personId=s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin authorizations list-user", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/authorizations", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin authorizations list-user", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/authorizations", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin classifications list", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/classifications", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin classifications list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/classifications", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin classifications list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/classifications", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin data-sources delete", - "variant": "all-flags", - "args": [ - "--data-source-id=s-data-source-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/dataSources/s-data-source-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin data-sources delete", - "variant": "required", - "args": [ - "--data-source-id=s-data-source-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/dataSources/s-data-source-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin data-sources get", - "variant": "all-flags", - "args": [ - "--data-source-id=s-data-source-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/dataSources/s-data-source-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin data-sources get", - "variant": "required", - "args": [ - "--data-source-id=s-data-source-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/dataSources/s-data-source-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin data-sources get", - "variant": "paginate", - "args": [ - "--data-source-id=s-data-source-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/dataSources/s-data-source-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin data-sources get-all", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/dataSources", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin data-sources get-all", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/dataSources", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin data-sources get-all", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/dataSources", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin data-sources get-schema", - "variant": "all-flags", - "args": [ - "--schema-id=s-schema-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/dataSources/schemas/s-schema-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin data-sources get-schema", - "variant": "required", - "args": [ - "--schema-id=s-schema-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/dataSources/schemas/s-schema-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin data-sources get-schema", - "variant": "paginate", - "args": [ - "--schema-id=s-schema-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/dataSources/schemas/s-schema-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin data-sources get-schemas", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/dataSources/schemas", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin data-sources get-schemas", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/dataSources/schemas", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin data-sources get-schemas", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/dataSources/schemas", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin data-sources register", - "variant": "all-flags", - "args": [ - "--audience=s-audience", - "--nonce=s-nonce", - "--schema-id=s-schema-id", - "--subject=s-subject", - "--token-lifetime-minutes=7", - "--url=s-url" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/dataSources", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"audience\":\"s-audience\",\"nonce\":\"s-nonce\",\"schemaId\":\"s-schema-id\",\"subject\":\"s-subject\",\"tokenLifetimeMinutes\":7,\"url\":\"s-url\"}" - } - ] - }, - { - "command": "admin data-sources register", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/dataSources", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin data-sources register", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/dataSources", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "admin data-sources update", - "variant": "all-flags", - "args": [ - "--audience=s-audience", - "--data-source-id=s-data-source-id", - "--error-message=s-error-message", - "--nonce=s-nonce", - "--schema-id=s-schema-id", - "--status=s-status", - "--subject=s-subject", - "--token-lifetime-minutes=7", - "--url=s-url" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/dataSources/s-data-source-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"audience\":\"s-audience\",\"errorMessage\":\"s-error-message\",\"nonce\":\"s-nonce\",\"schemaId\":\"s-schema-id\",\"status\":\"s-status\",\"subject\":\"s-subject\",\"tokenLifetimeMinutes\":7,\"url\":\"s-url\"}" - } - ] - }, - { - "command": "admin data-sources update", - "variant": "required", - "args": [ - "--data-source-id=s-data-source-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/dataSources/s-data-source-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin data-sources update", - "variant": "body", - "args": [ - "--data-source-id=s-data-source-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/dataSources/s-data-source-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "admin domain-management claim", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/identity/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/actions/claimDomain", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin domain-management claim", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/identity/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/actions/claimDomain", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin domain-management claim", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/identity/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/actions/claimDomain", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "admin domain-management get-verification-token", - "variant": "all-flags", - "args": [ - "--domain=s-domain" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/identity/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/actions/getDomainVerificationToken", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"domain\":\"s-domain\"}" - } - ] - }, - { - "command": "admin domain-management get-verification-token", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/identity/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/actions/getDomainVerificationToken", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin domain-management get-verification-token", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/identity/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/actions/getDomainVerificationToken", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "admin domain-management unclaim", - "variant": "all-flags", - "args": [ - "--domain=s-domain" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/identity/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/actions/unclaimDomain", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"domain\":\"s-domain\"}" - } - ] - }, - { - "command": "admin domain-management unclaim", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/identity/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/actions/unclaimDomain", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin domain-management unclaim", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/identity/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/actions/unclaimDomain", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "admin domain-management unverify", - "variant": "all-flags", - "args": [ - "--domain=s-domain", - "--remove-pending=true" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/identity/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/actions/unverifyDomain", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"domain\":\"s-domain\",\"removePending\":true}" - } - ] - }, - { - "command": "admin domain-management unverify", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/identity/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/actions/unverifyDomain", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin domain-management unverify", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/identity/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/actions/unverifyDomain", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "admin domain-management verify", - "variant": "all-flags", - "args": [ - "--claim-domain=true", - "--domain=s-domain", - "--reserve-domain=true" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/identity/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/actions/verifyDomain", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"claimDomain\":true,\"domain\":\"s-domain\",\"reserveDomain\":true}" - } - ] - }, - { - "command": "admin domain-management verify", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/identity/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/actions/verifyDomain", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin domain-management verify", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/identity/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/actions/verifyDomain", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "admin events get", - "variant": "all-flags", - "args": [ - "--event-id=s-event-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/events/s-event-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin events get", - "variant": "required", - "args": [ - "--event-id=s-event-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/events/s-event-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin events get", - "variant": "paginate", - "args": [ - "--event-id=s-event-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/events/s-event-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin events list", - "variant": "all-flags", - "args": [ - "--actor-id=s-actor-id", - "--from=2026-01-01T00:00:00.000Z", - "--max=s-max", - "--resource=s-resource", - "--service-type=s-service-type", - "--to=2026-01-02T00:00:00.000Z", - "--type=s-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/events?actorId=s-actor-id&from=2026-01-01T00%3A00%3A00.000Z&max=s-max&resource=s-resource&serviceType=s-service-type&to=2026-01-02T00%3A00%3A00.000Z&type=s-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin events list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/events", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin events list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/events?max=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin groups create", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/groups", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin groups create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/groups", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin groups create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/groups", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "admin groups delete", - "variant": "all-flags", - "args": [ - "--group-id=s-group-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/groups/s-group-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin groups delete", - "variant": "required", - "args": [ - "--group-id=s-group-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/groups/s-group-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin groups get", - "variant": "all-flags", - "args": [ - "--group-id=s-group-id", - "--include-members=s-include-members" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/groups/s-group-id?includeMembers=s-include-members", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin groups get", - "variant": "required", - "args": [ - "--group-id=s-group-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/groups/s-group-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin groups get", - "variant": "paginate", - "args": [ - "--group-id=s-group-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/groups/s-group-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin groups get-members", - "variant": "all-flags", - "args": [ - "--count=s-count", - "--group-id=s-group-id", - "--start-index=s-start-index" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/groups/s-group-id/members?count=s-count&startIndex=s-start-index", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin groups get-members", - "variant": "required", - "args": [ - "--group-id=s-group-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/groups/s-group-id/members", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin groups get-members", - "variant": "paginate", - "args": [ - "--group-id=s-group-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/groups/s-group-id/members?count=100&startIndex=1", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin groups list-search", - "variant": "all-flags", - "args": [ - "--attributes=s-attributes", - "--count=s-count", - "--filter=s-filter", - "--include-members=s-include-members", - "--sort-by=s-sort-by", - "--sort-order=s-sort-order", - "--start-index=s-start-index" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/groups?attributes=s-attributes&count=s-count&filter=s-filter&includeMembers=s-include-members&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&sortBy=s-sort-by&sortOrder=s-sort-order&startIndex=s-start-index", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin groups list-search", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/groups?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin groups list-search", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/groups?count=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&startIndex=1", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin groups update", - "variant": "all-flags", - "args": [ - "--group-id=s-group-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://webexapis.com/v1/groups/s-group-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin groups update", - "variant": "required", - "args": [ - "--group-id=s-group-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://webexapis.com/v1/groups/s-group-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin groups update", - "variant": "body", - "args": [ - "--group-id=s-group-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://webexapis.com/v1/groups/s-group-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "admin guest-management create", - "variant": "all-flags", - "args": [ - "--display-name=s-display-name", - "--subject=s-subject" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/guests/token", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"displayName\":\"s-display-name\",\"subject\":\"s-subject\"}" - } - ] - }, - { - "command": "admin guest-management create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/guests/token", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin guest-management create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/guests/token", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "admin guest-management get-count", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/guests/count", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin guest-management get-count", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/guests/count", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin guest-management get-count", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/guests/count", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin hybrid-clusters get", - "variant": "all-flags", - "args": [ - "--hybrid-cluster-id=s-hybrid-cluster-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hybrid/clusters/s-hybrid-cluster-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin hybrid-clusters get", - "variant": "required", - "args": [ - "--hybrid-cluster-id=s-hybrid-cluster-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hybrid/clusters/s-hybrid-cluster-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin hybrid-clusters get", - "variant": "paginate", - "args": [ - "--hybrid-cluster-id=s-hybrid-cluster-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hybrid/clusters/s-hybrid-cluster-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin hybrid-clusters list", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hybrid/clusters?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin hybrid-clusters list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hybrid/clusters?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin hybrid-clusters list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hybrid/clusters?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin hybrid-connectors get", - "variant": "all-flags", - "args": [ - "--connector-id=s-connector-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hybrid/connectors/s-connector-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin hybrid-connectors get", - "variant": "required", - "args": [ - "--connector-id=s-connector-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hybrid/connectors/s-connector-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin hybrid-connectors get", - "variant": "paginate", - "args": [ - "--connector-id=s-connector-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hybrid/connectors/s-connector-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin hybrid-connectors list", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hybrid/connectors?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin hybrid-connectors list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hybrid/connectors?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin hybrid-connectors list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hybrid/connectors?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin identity-org generate-otp", - "variant": "all-flags", - "args": [ - "--user-id=s-user-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/identity/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/users/s-user-id/actions/generateOtp", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin identity-org generate-otp", - "variant": "required", - "args": [ - "--user-id=s-user-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/identity/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/users/s-user-id/actions/generateOtp", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin identity-org get", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/identity/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin identity-org get", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/identity/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin identity-org get", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/identity/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin identity-org update", - "variant": "all-flags", - "args": [ - "--display-name=s-display-name", - "--preferred-language=s-preferred-language", - "--schemas=s-schemas-1,s-schemas-2" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://webexapis.com/v1/identity/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"displayName\":\"s-display-name\",\"preferredLanguage\":\"s-preferred-language\",\"schemas\":[\"s-schemas-1\",\"s-schemas-2\"]}" - } - ] - }, - { - "command": "admin identity-org update", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PATCH", - "url": "https://webexapis.com/v1/identity/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin identity-org update", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://webexapis.com/v1/identity/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "admin identity-org update-authentication-configuration-settings", - "variant": "all-flags", - "args": [ - "--mfa-enabled=true", - "--remember-my-login-id=true", - "--remember-my-login-id-duration=7", - "--schemas=s-schemas-1,s-schemas-2" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://webexapis.com/v1/identity/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/authenticationConfig", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"RememberMyLoginId\":true,\"RememberMyLoginIdDuration\":7,\"mfaEnabled\":true,\"schemas\":[\"s-schemas-1\",\"s-schemas-2\"]}" - } - ] - }, - { - "command": "admin identity-org update-authentication-configuration-settings", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PATCH", - "url": "https://webexapis.com/v1/identity/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/authenticationConfig", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin identity-org update-authentication-configuration-settings", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://webexapis.com/v1/identity/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/authenticationConfig", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "admin identity-org update-password-policy", - "variant": "all-flags", - "args": [ - "--history-count=s-history-count", - "--max-password-age=s-max-password-age", - "--minimum-cap-alpha=s-minimum-cap-alpha", - "--minimum-length=s-minimum-length", - "--minimum-low-alpha=s-minimum-low-alpha", - "--minimum-numeric=s-minimum-numeric", - "--minimum-special=s-minimum-special", - "--not-acceptable-strings=s-not-acceptable-strings", - "--schemas=s-schemas-1,s-schemas-2" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://webexapis.com/v1/identity/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/passwordPolicy", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"historyCount\":\"s-history-count\",\"maxPasswordAge\":\"s-max-password-age\",\"minimumCapAlpha\":\"s-minimum-cap-alpha\",\"minimumLength\":\"s-minimum-length\",\"minimumLowAlpha\":\"s-minimum-low-alpha\",\"minimumNumeric\":\"s-minimum-numeric\",\"minimumSpecial\":\"s-minimum-special\",\"notAcceptableStrings\":\"s-not-acceptable-strings\",\"schemas\":[\"s-schemas-1\",\"s-schemas-2\"]}" - } - ] - }, - { - "command": "admin identity-org update-password-policy", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PATCH", - "url": "https://webexapis.com/v1/identity/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/passwordPolicy", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin identity-org update-password-policy", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://webexapis.com/v1/identity/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/passwordPolicy", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "admin licenses assign-users", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "PATCH", - "url": "https://webexapis.com/v1/licenses/users", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin licenses assign-users", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PATCH", - "url": "https://webexapis.com/v1/licenses/users", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin licenses assign-users", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://webexapis.com/v1/licenses/users", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "admin licenses get-license", - "variant": "all-flags", - "args": [ - "--include-assigned-to=s-include-assigned-to", - "--license-id=s-license-id", - "--limit=s-limit", - "--next=s-next" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/licenses/s-license-id?includeAssignedTo=s-include-assigned-to&limit=s-limit&next=s-next", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin licenses get-license", - "variant": "required", - "args": [ - "--license-id=s-license-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/licenses/s-license-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin licenses get-license", - "variant": "paginate", - "args": [ - "--license-id=s-license-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/licenses/s-license-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin licenses list", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/licenses?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin licenses list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/licenses?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin licenses list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/licenses?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin live-monitoring get-meeting-metrics-categorized-country", - "variant": "all-flags", - "args": [ - "--site-ids=s-site-ids-1,s-site-ids-2", - "--site-url=s-site-url" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/livemonitoring/liveMeetingsByCountry", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"siteIds\":[\"s-site-ids-1\",\"s-site-ids-2\"],\"siteUrl\":\"s-site-url\"}" - } - ] - }, - { - "command": "admin live-monitoring get-meeting-metrics-categorized-country", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/livemonitoring/liveMeetingsByCountry", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin live-monitoring get-meeting-metrics-categorized-country", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/livemonitoring/liveMeetingsByCountry", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "admin meeting-qualities get", - "variant": "all-flags", - "args": [ - "--max=s-max", - "--meeting-id=s-meeting-id", - "--offset=s-offset" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meeting/qualities?max=s-max&meetingId=s-meeting-id&offset=s-offset", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin meeting-qualities get", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meeting/qualities", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin meeting-qualities get", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meeting/qualities?max=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin org-contacts bulk-create-update", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/contacts/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/contacts/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin org-contacts bulk-create-update", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/contacts/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/contacts/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin org-contacts bulk-create-update", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/contacts/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/contacts/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "admin org-contacts bulk-delete", - "variant": "all-flags", - "args": [ - "--object-ids=s-object-ids-1,s-object-ids-2", - "--schemas=s-schemas" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/contacts/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/contacts/bulk/delete", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"objectIds\":[\"s-object-ids-1\",\"s-object-ids-2\"],\"schemas\":\"s-schemas\"}" - } - ] - }, - { - "command": "admin org-contacts bulk-delete", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/contacts/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/contacts/bulk/delete", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin org-contacts bulk-delete", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/contacts/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/contacts/bulk/delete", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "admin org-contacts create", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/contacts/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/contacts", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin org-contacts create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/contacts/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/contacts", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin org-contacts create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/contacts/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/contacts", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "admin org-contacts delete", - "variant": "all-flags", - "args": [ - "--contact-id=s-contact-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/contacts/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/contacts/s-contact-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin org-contacts delete", - "variant": "required", - "args": [ - "--contact-id=s-contact-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/contacts/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/contacts/s-contact-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin org-contacts get", - "variant": "all-flags", - "args": [ - "--contact-id=s-contact-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/contacts/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/contacts/s-contact-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin org-contacts get", - "variant": "required", - "args": [ - "--contact-id=s-contact-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/contacts/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/contacts/s-contact-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin org-contacts get", - "variant": "paginate", - "args": [ - "--contact-id=s-contact-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/contacts/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/contacts/s-contact-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin org-contacts list", - "variant": "all-flags", - "args": [ - "--group-ids=s-group-ids", - "--keyword=s-keyword", - "--limit=s-limit", - "--source=s-source" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/contacts/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/contacts/search?groupIds=s-group-ids&keyword=s-keyword&limit=s-limit&source=s-source", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin org-contacts list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/contacts/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/contacts/search", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin org-contacts list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/contacts/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/contacts/search", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin org-contacts update", - "variant": "all-flags", - "args": [ - "--contact-id=s-contact-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://webexapis.com/v1/contacts/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/contacts/s-contact-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin org-contacts update", - "variant": "required", - "args": [ - "--contact-id=s-contact-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://webexapis.com/v1/contacts/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/contacts/s-contact-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin org-contacts update", - "variant": "body", - "args": [ - "--contact-id=s-contact-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://webexapis.com/v1/contacts/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/contacts/s-contact-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "admin organizations delete", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin organizations delete", - "variant": "required", - "args": null, - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin organizations get", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin organizations get", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin organizations get", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin organizations list", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/organizations", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin organizations list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/organizations", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin organizations list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/organizations", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin partner-administrators assign-admin-customer", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/partner/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/partnerAdmin/s-person-id/assign", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin partner-administrators assign-admin-customer", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/partner/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/partnerAdmin/s-person-id/assign", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin partner-administrators get-all-admins-assigned-customer", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/partner/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/partnerAdmins", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin partner-administrators get-all-admins-assigned-customer", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/partner/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/partnerAdmins", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin partner-administrators get-all-admins-assigned-customer", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/partner/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/partnerAdmins", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin partner-administrators get-all-customers-managed-admin", - "variant": "all-flags", - "args": [ - "--managed-by=s-managed-by" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/partner/organizations?managedBy=s-managed-by", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin partner-administrators get-all-customers-managed-admin", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/partner/organizations", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin partner-administrators get-all-customers-managed-admin", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/partner/organizations", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin partner-administrators revoke-all-admin-roles-person-id", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/partner/organizations/partnerAdmin/s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin partner-administrators revoke-all-admin-roles-person-id", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/partner/organizations/partnerAdmin/s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin partner-administrators unassign-admin-customer", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/partner/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/partnerAdmin/s-person-id/unassign", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin partner-administrators unassign-admin-customer", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/partner/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/partnerAdmin/s-person-id/unassign", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin partner-reports-templates create", - "variant": "all-flags", - "args": [ - "--end-date=s-end-date", - "--on-behalf-of-sub-partner-org-id=s-on-behalf-of-sub-partner-org-id", - "--region-id=s-region-id", - "--start-date=s-start-date", - "--template-id=7" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/partner/reports?onBehalfOfSubPartnerOrgId=s-on-behalf-of-sub-partner-org-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"endDate\":\"s-end-date\",\"regionId\":\"s-region-id\",\"startDate\":\"s-start-date\",\"templateId\":7}" - } - ] - }, - { - "command": "admin partner-reports-templates create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/partner/reports", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin partner-reports-templates create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/partner/reports", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "admin partner-reports-templates delete", - "variant": "all-flags", - "args": [ - "--on-behalf-of-sub-partner-org-id=s-on-behalf-of-sub-partner-org-id", - "--report-id=s-report-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/partner/reports/s-report-id?onBehalfOfSubPartnerOrgId=s-on-behalf-of-sub-partner-org-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin partner-reports-templates delete", - "variant": "required", - "args": [ - "--report-id=s-report-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/partner/reports/s-report-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin partner-reports-templates get", - "variant": "all-flags", - "args": [ - "--on-behalf-of-sub-partner-org-id=s-on-behalf-of-sub-partner-org-id", - "--report-id=s-report-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/partner/reports/s-report-id?onBehalfOfSubPartnerOrgId=s-on-behalf-of-sub-partner-org-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin partner-reports-templates get", - "variant": "required", - "args": [ - "--report-id=s-report-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/partner/reports/s-report-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin partner-reports-templates get", - "variant": "paginate", - "args": [ - "--report-id=s-report-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/partner/reports/s-report-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin partner-reports-templates list", - "variant": "all-flags", - "args": [ - "--from=2026-01-01T00:00:00.000Z", - "--on-behalf-of-sub-partner-org-id=s-on-behalf-of-sub-partner-org-id", - "--region-id=s-region-id", - "--service=s-service", - "--template-id=s-template-id", - "--to=2026-01-02T00:00:00.000Z" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/partner/reports?from=2026-01-01T00%3A00%3A00.000Z&onBehalfOfSubPartnerOrgId=s-on-behalf-of-sub-partner-org-id®ionId=s-region-id&service=s-service&templateId=s-template-id&to=2026-01-02T00%3A00%3A00.000Z", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin partner-reports-templates list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/partner/reports", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin partner-reports-templates list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/partner/reports", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin partner-reports-templates list-2", - "variant": "all-flags", - "args": [ - "--on-behalf-of-sub-partner-org-id=s-on-behalf-of-sub-partner-org-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/partner/reports/templates?onBehalfOfSubPartnerOrgId=s-on-behalf-of-sub-partner-org-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin partner-reports-templates list-2", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/partner/reports/templates", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin partner-reports-templates list-2", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/partner/reports/templates", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin partner-tags create-replace-customer-provided-ones", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/partner/tags/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/assignTags", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin partner-tags create-replace-customer-provided-ones", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/partner/tags/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/assignTags", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin partner-tags create-replace-customer-provided-ones", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/partner/tags/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/assignTags", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "admin partner-tags create-replace-subscription-provided-ones", - "variant": "all-flags", - "args": [ - "--subscription-id=s-subscription-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/partner/tags/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/subscriptions/s-subscription-id/assignTags", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin partner-tags create-replace-subscription-provided-ones", - "variant": "required", - "args": [ - "--subscription-id=s-subscription-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/partner/tags/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/subscriptions/s-subscription-id/assignTags", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin partner-tags create-replace-subscription-provided-ones", - "variant": "body", - "args": [ - "--subscription-id=s-subscription-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/partner/tags/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/subscriptions/s-subscription-id/assignTags", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "admin partner-tags get-all-customer", - "variant": "all-flags", - "args": [ - "--type=s-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/partner/tags?type=s-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin partner-tags get-all-customer", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/partner/tags", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin partner-tags get-all-customer", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/partner/tags", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin partner-tags get-all-customers-set", - "variant": "all-flags", - "args": [ - "--max=s-max", - "--tags=s-tags" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/partner/tags/organizations?max=s-max&tags=s-tags", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin partner-tags get-all-customers-set", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/partner/tags/organizations", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin partner-tags get-all-customers-set", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/partner/tags/organizations?max=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin partner-tags get-customer-org", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/partner/tags/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin partner-tags get-customer-org", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/partner/tags/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin partner-tags get-customer-org", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/partner/tags/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin partner-tags get-subscription", - "variant": "all-flags", - "args": [ - "--subscription-id=s-subscription-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/partner/tags/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/subscriptions/s-subscription-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin partner-tags get-subscription", - "variant": "required", - "args": [ - "--subscription-id=s-subscription-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/partner/tags/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/subscriptions/s-subscription-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin partner-tags get-subscription", - "variant": "paginate", - "args": [ - "--subscription-id=s-subscription-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/partner/tags/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/subscriptions/s-subscription-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin partner-tags subscription-list-name-set", - "variant": "all-flags", - "args": [ - "--max=s-max", - "--tags=s-tags" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/partner/tags/subscriptions?max=s-max&tags=s-tags", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin partner-tags subscription-list-name-set", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/partner/tags/subscriptions", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin partner-tags subscription-list-name-set", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/partner/tags/subscriptions?max=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin people create-person", - "variant": "all-flags", - "args": [ - "--calling-data=s-calling-data", - "--min-response=s-min-response" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/people?callingData=s-calling-data&minResponse=s-min-response", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin people create-person", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/people", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin people create-person", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/people", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "admin people delete-person", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/people/s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin people delete-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/people/s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin people get-my-own", - "variant": "all-flags", - "args": [ - "--calling-data=s-calling-data" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/me?callingData=s-calling-data", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin people get-my-own", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/me", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin people get-my-own", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/me", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin people get-person", - "variant": "all-flags", - "args": [ - "--calling-data=s-calling-data", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id?callingData=s-calling-data", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin people get-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin people get-person", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin people list", - "variant": "all-flags", - "args": [ - "--calling-data=s-calling-data", - "--display-name=s-display-name", - "--email=s-email", - "--exclude-status=s-exclude-status", - "--id=s-id", - "--location-id=s-location-id", - "--max=s-max", - "--roles=s-roles" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people?callingData=s-calling-data&displayName=s-display-name&email=s-email&excludeStatus=s-exclude-status&id=s-id&locationId=s-location-id&max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&roles=s-roles", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin people list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin people list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin people update-person", - "variant": "all-flags", - "args": [ - "--calling-data=s-calling-data", - "--min-response=s-min-response", - "--person-id=s-person-id", - "--show-all-types=s-show-all-types" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id?callingData=s-calling-data&minResponse=s-min-response&showAllTypes=s-show-all-types", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin people update-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin people update-person", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "admin recording-report get-audit", - "variant": "all-flags", - "args": [ - "--host-email=s-host-email", - "--max=s-max", - "--recording-id=s-recording-id", - "--timezone=s-timezone" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/recordingReport/accessDetail?hostEmail=s-host-email&max=s-max&recordingId=s-recording-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Timezone": "s-timezone" - } - } - ] - }, - { - "command": "admin recording-report get-audit", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/recordingReport/accessDetail", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin recording-report get-audit", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/recordingReport/accessDetail?max=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin recording-report get-meeting-archive", - "variant": "all-flags", - "args": [ - "--archive-id=s-archive-id", - "--timezone=s-timezone" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/recordingReport/meetingArchives/s-archive-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Timezone": "s-timezone" - } - } - ] - }, - { - "command": "admin recording-report get-meeting-archive", - "variant": "required", - "args": [ - "--archive-id=s-archive-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/recordingReport/meetingArchives/s-archive-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin recording-report get-meeting-archive", - "variant": "paginate", - "args": [ - "--archive-id=s-archive-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/recordingReport/meetingArchives/s-archive-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin recording-report list-audit-summaries", - "variant": "all-flags", - "args": [ - "--from=2026-01-01T00:00:00.000Z", - "--host-email=s-host-email", - "--max=s-max", - "--site-url=s-site-url", - "--timezone=s-timezone", - "--to=2026-01-02T00:00:00.000Z" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/recordingReport/accessSummary?from=2026-01-01T00%3A00%3A00.000Z&hostEmail=s-host-email&max=s-max&siteUrl=s-site-url&to=2026-01-02T00%3A00%3A00.000Z", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Timezone": "s-timezone" - } - } - ] - }, - { - "command": "admin recording-report list-audit-summaries", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/recordingReport/accessSummary", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin recording-report list-audit-summaries", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/recordingReport/accessSummary?max=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin recording-report list-meeting-archive-summaries", - "variant": "all-flags", - "args": [ - "--from=2026-01-01T00:00:00.000Z", - "--max=s-max", - "--site-url=s-site-url", - "--timezone=s-timezone", - "--to=2026-01-02T00:00:00.000Z" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/recordingReport/meetingArchiveSummaries?from=2026-01-01T00%3A00%3A00.000Z&max=s-max&siteUrl=s-site-url&to=2026-01-02T00%3A00%3A00.000Z", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Timezone": "s-timezone" - } - } - ] - }, - { - "command": "admin recording-report list-meeting-archive-summaries", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/recordingReport/meetingArchiveSummaries", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin recording-report list-meeting-archive-summaries", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/recordingReport/meetingArchiveSummaries?max=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin recordings delete", - "variant": "all-flags", - "args": [ - "--comment=s-comment", - "--host-email=s-host-email", - "--reason=s-reason", - "--recording-id=s-recording-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/recordings/s-recording-id?hostEmail=s-host-email", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"comment\":\"s-comment\",\"reason\":\"s-reason\"}" - } - ] - }, - { - "command": "admin recordings delete", - "variant": "required", - "args": [ - "--recording-id=s-recording-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/recordings/s-recording-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin recordings delete", - "variant": "body", - "args": [ - "--recording-id=s-recording-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/recordings/s-recording-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "admin recordings delete-admin", - "variant": "all-flags", - "args": [ - "--recording-id=s-recording-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/admin/recordings/s-recording-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin recordings delete-admin", - "variant": "required", - "args": [ - "--recording-id=s-recording-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/admin/recordings/s-recording-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin recordings get", - "variant": "all-flags", - "args": [ - "--host-email=s-host-email", - "--recording-id=s-recording-id", - "--site-url=s-site-url", - "--timezone=s-timezone" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/recordings/s-recording-id?hostEmail=s-host-email", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Siteurl": "s-site-url", - "Timezone": "s-timezone" - } - } - ] - }, - { - "command": "admin recordings get", - "variant": "required", - "args": [ - "--recording-id=s-recording-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/recordings/s-recording-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin recordings get", - "variant": "paginate", - "args": [ - "--recording-id=s-recording-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/recordings/s-recording-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin recordings get-group", - "variant": "all-flags", - "args": [ - "--host-email=s-host-email", - "--person-id=s-person-id", - "--recording-id=s-recording-id", - "--timezone=s-timezone" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/group/recordings/s-recording-id?personId=s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Hostemail": "s-host-email", - "Timezone": "s-timezone" - } - } - ] - }, - { - "command": "admin recordings get-group", - "variant": "required", - "args": [ - "--recording-id=s-recording-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/group/recordings/s-recording-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin recordings get-group", - "variant": "paginate", - "args": [ - "--recording-id=s-recording-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/group/recordings/s-recording-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin recordings list", - "variant": "all-flags", - "args": [ - "--format=s-format", - "--from=2026-01-01T00:00:00.000Z", - "--host-email=s-host-email", - "--integration-tag=s-integration-tag", - "--max=s-max", - "--meeting-id=s-meeting-id", - "--service-type=s-service-type", - "--site-url=s-site-url", - "--status=s-status", - "--timezone=s-timezone", - "--to=2026-01-02T00:00:00.000Z", - "--topic=s-topic" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/recordings?format=s-format&from=2026-01-01T00%3A00%3A00.000Z&hostEmail=s-host-email&integrationTag=s-integration-tag&max=s-max&meetingId=s-meeting-id&serviceType=s-service-type&siteUrl=s-site-url&status=s-status&to=2026-01-02T00%3A00%3A00.000Z&topic=s-topic", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Timezone": "s-timezone" - } - } - ] - }, - { - "command": "admin recordings list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/recordings", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin recordings list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/recordings?max=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin recordings list-admin-compliance-officer", - "variant": "all-flags", - "args": [ - "--format=s-format", - "--from=2026-01-01T00:00:00.000Z", - "--integration-tag=s-integration-tag", - "--max=s-max", - "--meeting-id=s-meeting-id", - "--service-type=s-service-type", - "--site-url=s-site-url", - "--status=s-status", - "--timezone=s-timezone", - "--to=2026-01-02T00:00:00.000Z", - "--topic=s-topic" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/admin/recordings?format=s-format&from=2026-01-01T00%3A00%3A00.000Z&integrationTag=s-integration-tag&max=s-max&meetingId=s-meeting-id&serviceType=s-service-type&siteUrl=s-site-url&status=s-status&to=2026-01-02T00%3A00%3A00.000Z&topic=s-topic", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Timezone": "s-timezone" - } - } - ] - }, - { - "command": "admin recordings list-admin-compliance-officer", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/admin/recordings", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin recordings list-admin-compliance-officer", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/admin/recordings?max=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin recordings list-group", - "variant": "all-flags", - "args": [ - "--format=s-format", - "--from=2026-01-01T00:00:00.000Z", - "--host-email=s-host-email", - "--integration-tag=s-integration-tag", - "--max=s-max", - "--person-id=s-person-id", - "--service-type=s-service-type", - "--site-url=s-site-url", - "--timezone=s-timezone", - "--to=2026-01-02T00:00:00.000Z" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/group/recordings?format=s-format&from=2026-01-01T00%3A00%3A00.000Z&integrationTag=s-integration-tag&max=s-max&personId=s-person-id&serviceType=s-service-type&siteUrl=s-site-url&to=2026-01-02T00%3A00%3A00.000Z", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Hostemail": "s-host-email", - "Timezone": "s-timezone" - } - } - ] - }, - { - "command": "admin recordings list-group", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/group/recordings", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin recordings list-group", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/group/recordings?max=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin recordings move-recycle-bin", - "variant": "all-flags", - "args": [ - "--host-email=s-host-email", - "--recording-ids=s-recording-ids-1,s-recording-ids-2", - "--site-url=s-site-url" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/recordings/softDelete?hostEmail=s-host-email", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"recordingIds\":[\"s-recording-ids-1\",\"s-recording-ids-2\"],\"siteUrl\":\"s-site-url\"}" - } - ] - }, - { - "command": "admin recordings move-recycle-bin", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/recordings/softDelete", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin recordings move-recycle-bin", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/recordings/softDelete", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "admin recordings purge-recycle-bin", - "variant": "all-flags", - "args": [ - "--host-email=s-host-email", - "--purge-all=true", - "--recording-ids=s-recording-ids-1,s-recording-ids-2", - "--site-url=s-site-url" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/recordings/purge?hostEmail=s-host-email", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"purgeAll\":true,\"recordingIds\":[\"s-recording-ids-1\",\"s-recording-ids-2\"],\"siteUrl\":\"s-site-url\"}" - } - ] - }, - { - "command": "admin recordings purge-recycle-bin", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/recordings/purge", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin recordings purge-recycle-bin", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/recordings/purge", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "admin recordings query", - "variant": "all-flags", - "args": [ - "--format=s-format", - "--from=2026-01-01T00:00:00.000Z", - "--host-email=s-host-email", - "--integration-tag=s-integration-tag", - "--max=7", - "--meeting-id=s-meeting-id", - "--service-type=s-service-type", - "--site-url=s-site-url", - "--status=s-status", - "--timezone=s-timezone", - "--to=2026-01-02T00:00:00.000Z", - "--topic=s-topic" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/recordings/query", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json", - "Timezone": "s-timezone" - }, - "body": "{\"format\":\"s-format\",\"from\":\"2026-01-01T00:00:00.000Z\",\"hostEmail\":\"s-host-email\",\"integrationTag\":\"s-integration-tag\",\"max\":7,\"meetingId\":\"s-meeting-id\",\"serviceType\":\"s-service-type\",\"siteUrl\":\"s-site-url\",\"status\":\"s-status\",\"to\":\"2026-01-02T00:00:00.000Z\",\"topic\":\"s-topic\"}" - } - ] - }, - { - "command": "admin recordings query", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/recordings/query", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin recordings query", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/recordings/query", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "admin recordings query-admin-compliance-officer", - "variant": "all-flags", - "args": [ - "--format=s-format", - "--from=2026-01-01T00:00:00.000Z", - "--integration-tag=s-integration-tag", - "--max=7", - "--meeting-id=s-meeting-id", - "--service-type=s-service-type", - "--site-url=s-site-url", - "--status=s-status", - "--timezone=s-timezone", - "--to=2026-01-02T00:00:00.000Z", - "--topic=s-topic" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/admin/recordings/query", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json", - "Timezone": "s-timezone" - }, - "body": "{\"format\":\"s-format\",\"from\":\"2026-01-01T00:00:00.000Z\",\"integrationTag\":\"s-integration-tag\",\"max\":7,\"meetingId\":\"s-meeting-id\",\"serviceType\":\"s-service-type\",\"siteUrl\":\"s-site-url\",\"status\":\"s-status\",\"timezone\":\"s-timezone\",\"to\":\"2026-01-02T00:00:00.000Z\",\"topic\":\"s-topic\"}" - } - ] - }, - { - "command": "admin recordings query-admin-compliance-officer", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/admin/recordings/query", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin recordings query-admin-compliance-officer", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/admin/recordings/query", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "admin recordings restore-recycle-bin", - "variant": "all-flags", - "args": [ - "--host-email=s-host-email", - "--recording-ids=s-recording-ids-1,s-recording-ids-2", - "--restore-all=true", - "--site-url=s-site-url" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/recordings/restore?hostEmail=s-host-email", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"recordingIds\":[\"s-recording-ids-1\",\"s-recording-ids-2\"],\"restoreAll\":true,\"siteUrl\":\"s-site-url\"}" - } - ] - }, - { - "command": "admin recordings restore-recycle-bin", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/recordings/restore", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin recordings restore-recycle-bin", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/recordings/restore", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "admin recordings share", - "variant": "all-flags", - "args": [ - "--add-emails=s-add-emails-1,s-add-emails-2", - "--host-email=s-host-email", - "--recording-id=s-recording-id", - "--remove-emails=s-remove-emails-1,s-remove-emails-2", - "--send-email=true" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/recordings/s-recording-id/accessList", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"addEmails\":[\"s-add-emails-1\",\"s-add-emails-2\"],\"hostEmail\":\"s-host-email\",\"removeEmails\":[\"s-remove-emails-1\",\"s-remove-emails-2\"],\"sendEmail\":true}" - } - ] - }, - { - "command": "admin recordings share", - "variant": "required", - "args": [ - "--recording-id=s-recording-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/recordings/s-recording-id/accessList", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin recordings share", - "variant": "body", - "args": [ - "--recording-id=s-recording-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/recordings/s-recording-id/accessList", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "admin recordings share-link", - "variant": "all-flags", - "args": [ - "--add-emails=s-add-emails-1,s-add-emails-2", - "--host-email=s-host-email", - "--remove-emails=s-remove-emails-1,s-remove-emails-2", - "--send-email=true", - "--web-share-link=s-web-share-link" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/recordings/accessList", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"addEmails\":[\"s-add-emails-1\",\"s-add-emails-2\"],\"hostEmail\":\"s-host-email\",\"removeEmails\":[\"s-remove-emails-1\",\"s-remove-emails-2\"],\"sendEmail\":true,\"webShareLink\":\"s-web-share-link\"}" - } - ] - }, - { - "command": "admin recordings share-link", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/recordings/accessList", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin recordings share-link", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/recordings/accessList", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "admin report-templates list", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/report/templates", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin report-templates list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/report/templates", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin report-templates list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/report/templates", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin reports create", - "variant": "all-flags", - "args": [ - "--end-date=s-end-date", - "--site-list=s-site-list", - "--start-date=s-start-date", - "--template-id=7", - "--time-zone=s-time-zone" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/reports", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"endDate\":\"s-end-date\",\"siteList\":\"s-site-list\",\"startDate\":\"s-start-date\",\"templateId\":7,\"timeZone\":\"s-time-zone\"}" - } - ] - }, - { - "command": "admin reports create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/reports", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin reports create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/reports", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "admin reports delete", - "variant": "all-flags", - "args": [ - "--report-id=s-report-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/reports/s-report-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin reports delete", - "variant": "required", - "args": [ - "--report-id=s-report-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/reports/s-report-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin reports get", - "variant": "all-flags", - "args": [ - "--report-id=s-report-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/reports/s-report-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin reports get", - "variant": "required", - "args": [ - "--report-id=s-report-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/reports/s-report-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin reports get", - "variant": "paginate", - "args": [ - "--report-id=s-report-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/reports/s-report-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin reports list", - "variant": "all-flags", - "args": [ - "--from=2026-01-01T00:00:00.000Z", - "--report-id=s-report-id", - "--service=s-service", - "--template-id=s-template-id", - "--to=2026-01-02T00:00:00.000Z" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/reports?from=2026-01-01T00%3A00%3A00.000Z&reportId=s-report-id&service=s-service&templateId=s-template-id&to=2026-01-02T00%3A00%3A00.000Z", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin reports list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/reports", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin reports list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/reports", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin resource-groups get", - "variant": "all-flags", - "args": [ - "--resource-group-id=s-resource-group-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/resourceGroups/s-resource-group-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin resource-groups get", - "variant": "required", - "args": [ - "--resource-group-id=s-resource-group-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/resourceGroups/s-resource-group-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin resource-groups get", - "variant": "paginate", - "args": [ - "--resource-group-id=s-resource-group-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/resourceGroups/s-resource-group-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin resource-groups list", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/resourceGroups?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin resource-groups list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/resourceGroups?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin resource-groups list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/resourceGroups?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin resource-memberships get-group", - "variant": "all-flags", - "args": [ - "--resource-group-membership-id=s-resource-group-membership-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/resourceGroup/memberships/s-resource-group-membership-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin resource-memberships get-group", - "variant": "required", - "args": [ - "--resource-group-membership-id=s-resource-group-membership-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/resourceGroup/memberships/s-resource-group-membership-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin resource-memberships get-group", - "variant": "paginate", - "args": [ - "--resource-group-membership-id=s-resource-group-membership-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/resourceGroup/memberships/s-resource-group-membership-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin resource-memberships list-group", - "variant": "all-flags", - "args": [ - "--license-id=s-license-id", - "--max=s-max", - "--person-id=s-person-id", - "--person-org-id=s-person-org-id", - "--status=s-status" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/resourceGroup/memberships?licenseId=s-license-id&max=s-max&personId=s-person-id&personOrgId=s-person-org-id&status=s-status", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin resource-memberships list-group", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/resourceGroup/memberships", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin resource-memberships list-group", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/resourceGroup/memberships?max=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin resource-memberships list-group-v2", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--license-id=s-license-id", - "--max=s-max", - "--status=s-status", - "--type=s-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/resourceGroup/memberships/v2?id=s-id&licenseId=s-license-id&max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&status=s-status&type=s-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin resource-memberships list-group-v2", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/resourceGroup/memberships/v2?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin resource-memberships list-group-v2", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/resourceGroup/memberships/v2?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin resource-memberships update-group", - "variant": "all-flags", - "args": [ - "--license-id=s-license-id", - "--person-id=s-person-id", - "--person-org-id=s-person-org-id", - "--resource-group-id=s-resource-group-id", - "--resource-group-membership-id=s-resource-group-membership-id", - "--status=s-status" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/resourceGroup/memberships/s-resource-group-membership-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"licenseId\":\"s-license-id\",\"personId\":\"s-person-id\",\"personOrgId\":\"s-person-org-id\",\"resourceGroupId\":\"s-resource-group-id\",\"status\":\"s-status\"}" - } - ] - }, - { - "command": "admin resource-memberships update-group", - "variant": "required", - "args": [ - "--resource-group-membership-id=s-resource-group-membership-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/resourceGroup/memberships/s-resource-group-membership-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin resource-memberships update-group", - "variant": "body", - "args": [ - "--resource-group-membership-id=s-resource-group-membership-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/resourceGroup/memberships/s-resource-group-membership-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "admin roles get", - "variant": "all-flags", - "args": [ - "--role-id=s-role-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/roles/s-role-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin roles get", - "variant": "required", - "args": [ - "--role-id=s-role-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/roles/s-role-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin roles get", - "variant": "paginate", - "args": [ - "--role-id=s-role-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/roles/s-role-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin roles list", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/roles", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin roles list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/roles", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin roles list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/roles", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin scim-2-bulk user-api", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/identity/scim/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/v2/Bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin scim-2-bulk user-api", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/identity/scim/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/v2/Bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin scim-2-bulk user-api", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/identity/scim/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/v2/Bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "admin scim-2-groups create", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/identity/scim/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/v2/Groups", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin scim-2-groups create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/identity/scim/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/v2/Groups", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin scim-2-groups create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/identity/scim/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/v2/Groups", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "admin scim-2-groups delete", - "variant": "all-flags", - "args": [ - "--group-id=s-group-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/identity/scim/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/v2/Groups/s-group-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin scim-2-groups delete", - "variant": "required", - "args": [ - "--group-id=s-group-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/identity/scim/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/v2/Groups/s-group-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin scim-2-groups get", - "variant": "all-flags", - "args": [ - "--excluded-attributes=s-excluded-attributes", - "--group-id=s-group-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/identity/scim/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/v2/Groups/s-group-id?excludedAttributes=s-excluded-attributes", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin scim-2-groups get", - "variant": "required", - "args": [ - "--group-id=s-group-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/identity/scim/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/v2/Groups/s-group-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin scim-2-groups get", - "variant": "paginate", - "args": [ - "--group-id=s-group-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/identity/scim/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/v2/Groups/s-group-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin scim-2-groups get-members", - "variant": "all-flags", - "args": [ - "--count=s-count", - "--group-id=s-group-id", - "--member-type=s-member-type", - "--start-index=s-start-index" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/identity/scim/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/v2/Groups/s-group-id/Members?count=s-count&memberType=s-member-type&startIndex=s-start-index", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin scim-2-groups get-members", - "variant": "required", - "args": [ - "--group-id=s-group-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/identity/scim/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/v2/Groups/s-group-id/Members", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin scim-2-groups get-members", - "variant": "paginate", - "args": [ - "--group-id=s-group-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/identity/scim/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/v2/Groups/s-group-id/Members?count=100&startIndex=1", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin scim-2-groups search", - "variant": "all-flags", - "args": [ - "--attributes=s-attributes", - "--count=s-count", - "--excluded-attributes=s-excluded-attributes", - "--filter=s-filter", - "--include-members=s-include-members", - "--member-type=s-member-type", - "--sort-by=s-sort-by", - "--sort-order=s-sort-order", - "--start-index=s-start-index" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/identity/scim/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/v2/Groups?attributes=s-attributes&count=s-count&excludedAttributes=s-excluded-attributes&filter=s-filter&includeMembers=s-include-members&memberType=s-member-type&sortBy=s-sort-by&sortOrder=s-sort-order&startIndex=s-start-index", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin scim-2-groups search", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/identity/scim/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/v2/Groups", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin scim-2-groups search", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/identity/scim/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/v2/Groups?count=100&startIndex=1", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin scim-2-groups update-patch", - "variant": "all-flags", - "args": [ - "--group-id=s-group-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://webexapis.com/v1/identity/scim/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/v2/Groups/s-group-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin scim-2-groups update-patch", - "variant": "required", - "args": [ - "--group-id=s-group-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://webexapis.com/v1/identity/scim/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/v2/Groups/s-group-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin scim-2-groups update-patch", - "variant": "body", - "args": [ - "--group-id=s-group-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://webexapis.com/v1/identity/scim/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/v2/Groups/s-group-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "admin scim-2-groups update-put", - "variant": "all-flags", - "args": [ - "--group-id=s-group-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/identity/scim/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/v2/Groups/s-group-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin scim-2-groups update-put", - "variant": "required", - "args": [ - "--group-id=s-group-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/identity/scim/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/v2/Groups/s-group-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin scim-2-groups update-put", - "variant": "body", - "args": [ - "--group-id=s-group-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/identity/scim/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/v2/Groups/s-group-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "admin scim-2-schemas get-group", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/Schemas/SCIM2/Group", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin scim-2-schemas get-group", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/Schemas/SCIM2/Group", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin scim-2-schemas get-group", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/Schemas/SCIM2/Group", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin scim-2-schemas get-group-id", - "variant": "all-flags", - "args": [ - "--schema-id=s-schema-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/Schemas/SCIM2/s-schema-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin scim-2-schemas get-group-id", - "variant": "required", - "args": [ - "--schema-id=s-schema-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/Schemas/SCIM2/s-schema-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin scim-2-schemas get-group-id", - "variant": "paginate", - "args": [ - "--schema-id=s-schema-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/Schemas/SCIM2/s-schema-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin scim-2-schemas get-user", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/Schemas/SCIM2/User", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin scim-2-schemas get-user", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/Schemas/SCIM2/User", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin scim-2-schemas get-user", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/Schemas/SCIM2/User", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin scim-2-users create", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/identity/scim/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/v2/Users", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin scim-2-users create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/identity/scim/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/v2/Users", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin scim-2-users create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/identity/scim/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/v2/Users", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "admin scim-2-users delete", - "variant": "all-flags", - "args": [ - "--user-id=s-user-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/identity/scim/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/v2/Users/s-user-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin scim-2-users delete", - "variant": "required", - "args": [ - "--user-id=s-user-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/identity/scim/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/v2/Users/s-user-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin scim-2-users get", - "variant": "all-flags", - "args": [ - "--user-id=s-user-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/identity/scim/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/v2/Users/s-user-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin scim-2-users get", - "variant": "required", - "args": [ - "--user-id=s-user-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/identity/scim/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/v2/Users/s-user-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin scim-2-users get", - "variant": "paginate", - "args": [ - "--user-id=s-user-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/identity/scim/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/v2/Users/s-user-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin scim-2-users get-me", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/identity/scim/v2/Users/me", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin scim-2-users get-me", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/identity/scim/v2/Users/me", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin scim-2-users get-me", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/identity/scim/v2/Users/me", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin scim-2-users search", - "variant": "all-flags", - "args": [ - "--attributes=s-attributes", - "--count=s-count", - "--excluded-attributes=s-excluded-attributes", - "--filter=s-filter", - "--group-usage-types=s-group-usage-types", - "--include-group-details=s-include-group-details", - "--return-groups=s-return-groups", - "--sort-by=s-sort-by", - "--sort-order=s-sort-order", - "--start-index=s-start-index" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/identity/scim/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/v2/Users?attributes=s-attributes&count=s-count&excludedAttributes=s-excluded-attributes&filter=s-filter&groupUsageTypes=s-group-usage-types&includeGroupDetails=s-include-group-details&returnGroups=s-return-groups&sortBy=s-sort-by&sortOrder=s-sort-order&startIndex=s-start-index", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin scim-2-users search", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/identity/scim/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/v2/Users", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin scim-2-users search", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/identity/scim/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/v2/Users?count=100&startIndex=1", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin scim-2-users update-patch", - "variant": "all-flags", - "args": [ - "--user-id=s-user-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://webexapis.com/v1/identity/scim/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/v2/Users/s-user-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin scim-2-users update-patch", - "variant": "required", - "args": [ - "--user-id=s-user-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://webexapis.com/v1/identity/scim/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/v2/Users/s-user-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin scim-2-users update-patch", - "variant": "body", - "args": [ - "--user-id=s-user-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://webexapis.com/v1/identity/scim/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/v2/Users/s-user-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "admin scim-2-users update-put", - "variant": "all-flags", - "args": [ - "--user-id=s-user-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/identity/scim/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/v2/Users/s-user-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin scim-2-users update-put", - "variant": "required", - "args": [ - "--user-id=s-user-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/identity/scim/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/v2/Users/s-user-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin scim-2-users update-put", - "variant": "body", - "args": [ - "--user-id=s-user-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/identity/scim/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/v2/Users/s-user-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "admin security-audit list-events", - "variant": "all-flags", - "args": [ - "--actor-id=s-actor-id", - "--end-time=s-end-time", - "--event-categories=s-event-categories", - "--max=s-max", - "--start-time=s-start-time" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/admin/securityAudit/events?actorId=s-actor-id&endTime=s-end-time&eventCategories=s-event-categories&max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&startTime=s-start-time", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin security-audit list-events", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/admin/securityAudit/events?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin security-audit list-events", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/admin/securityAudit/events?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin send-activation-email get-bulk-resend-job-errors", - "variant": "all-flags", - "args": [ - "--job-id=s-job-id", - "--max=s-max" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/identity/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/jobs/sendActivationEmails/s-job-id/errors?max=s-max", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin send-activation-email get-bulk-resend-job-errors", - "variant": "required", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/identity/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/jobs/sendActivationEmails/s-job-id/errors", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin send-activation-email get-bulk-resend-job-errors", - "variant": "paginate", - "args": [ - "--job-id=s-job-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/identity/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/jobs/sendActivationEmails/s-job-id/errors?max=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin send-activation-email get-bulk-resend-job-status", - "variant": "all-flags", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/identity/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/jobs/sendActivationEmails/s-job-id/status", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin send-activation-email get-bulk-resend-job-status", - "variant": "required", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/identity/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/jobs/sendActivationEmails/s-job-id/status", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin send-activation-email get-bulk-resend-job-status", - "variant": "paginate", - "args": [ - "--job-id=s-job-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/identity/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/jobs/sendActivationEmails/s-job-id/status", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin send-activation-email initiate-bulk-resend-job", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/identity/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/jobs/sendActivationEmails", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin send-activation-email initiate-bulk-resend-job", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/identity/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/jobs/sendActivationEmails", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin service-apps create-access-token", - "variant": "all-flags", - "args": [ - "--application-id=s-application-id", - "--client-id=s-client-id", - "--client-secret=s-client-secret", - "--target-org-id=s-target-org-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/applications/s-application-id/token", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"clientId\":\"s-client-id\",\"clientSecret\":\"s-client-secret\",\"targetOrgId\":\"s-target-org-id\"}" - } - ] - }, - { - "command": "admin service-apps create-access-token", - "variant": "required", - "args": [ - "--application-id=s-application-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/applications/s-application-id/token", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin service-apps create-access-token", - "variant": "body", - "args": [ - "--application-id=s-application-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/applications/s-application-id/token", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "admin settings create-update-org", - "variant": "all-flags", - "args": [ - "--key=s-key", - "--value=true" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/settings/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/settings", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"key\":\"s-key\",\"value\":true}" - } - ] - }, - { - "command": "admin settings create-update-org", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/settings/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/settings", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin settings create-update-org", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/settings/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/settings", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "admin settings get-org", - "variant": "all-flags", - "args": [ - "--setting-key=s-setting-key" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/settings/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/settings/s-setting-key", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin settings get-org", - "variant": "required", - "args": [ - "--setting-key=s-setting-key" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/settings/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/settings/s-setting-key", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin settings get-org", - "variant": "paginate", - "args": [ - "--setting-key=s-setting-key", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/settings/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/settings/s-setting-key", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin workspace-locations create", - "variant": "all-flags", - "args": [ - "--address=s-address", - "--city-name=s-city-name", - "--country-code=s-country-code", - "--display-name=s-display-name", - "--latitude=7", - "--longitude=7", - "--notes=s-notes" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/workspaceLocations", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"address\":\"s-address\",\"cityName\":\"s-city-name\",\"countryCode\":\"s-country-code\",\"displayName\":\"s-display-name\",\"latitude\":7,\"longitude\":7,\"notes\":\"s-notes\"}" - } - ] - }, - { - "command": "admin workspace-locations create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/workspaceLocations", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin workspace-locations create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/workspaceLocations", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "admin workspace-locations create-floor", - "variant": "all-flags", - "args": [ - "--display-name=s-display-name", - "--floor-number=7", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/workspaceLocations/s-location-id/floors", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"displayName\":\"s-display-name\",\"floorNumber\":7}" - } - ] - }, - { - "command": "admin workspace-locations create-floor", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/workspaceLocations/s-location-id/floors", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin workspace-locations create-floor", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/workspaceLocations/s-location-id/floors", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "admin workspace-locations delete", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/workspaceLocations/s-location-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin workspace-locations delete", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/workspaceLocations/s-location-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin workspace-locations delete-floor", - "variant": "all-flags", - "args": [ - "--floor-id=s-floor-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/workspaceLocations/s-location-id/floors/s-floor-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin workspace-locations delete-floor", - "variant": "required", - "args": [ - "--floor-id=s-floor-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/workspaceLocations/s-location-id/floors/s-floor-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin workspace-locations get", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaceLocations/s-location-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin workspace-locations get", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaceLocations/s-location-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin workspace-locations get", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaceLocations/s-location-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin workspace-locations get-floor", - "variant": "all-flags", - "args": [ - "--floor-id=s-floor-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaceLocations/s-location-id/floors/s-floor-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin workspace-locations get-floor", - "variant": "required", - "args": [ - "--floor-id=s-floor-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaceLocations/s-location-id/floors/s-floor-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin workspace-locations get-floor", - "variant": "paginate", - "args": [ - "--floor-id=s-floor-id", - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaceLocations/s-location-id/floors/s-floor-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin workspace-locations list", - "variant": "all-flags", - "args": [ - "--address=s-address", - "--city-name=s-city-name", - "--country-code=s-country-code", - "--display-name=s-display-name" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaceLocations?address=s-address&cityName=s-city-name&countryCode=s-country-code&displayName=s-display-name&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin workspace-locations list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaceLocations?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin workspace-locations list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaceLocations?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin workspace-locations list-floors", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaceLocations/s-location-id/floors", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin workspace-locations list-floors", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaceLocations/s-location-id/floors", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin workspace-locations list-floors", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaceLocations/s-location-id/floors", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin workspace-locations update", - "variant": "all-flags", - "args": [ - "--address=s-address", - "--city-name=s-city-name", - "--country-code=s-country-code", - "--display-name=s-display-name", - "--id=s-id", - "--latitude=7", - "--location-id=s-location-id", - "--longitude=7", - "--notes=s-notes" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/workspaceLocations/s-location-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"address\":\"s-address\",\"cityName\":\"s-city-name\",\"countryCode\":\"s-country-code\",\"displayName\":\"s-display-name\",\"id\":\"s-id\",\"latitude\":7,\"longitude\":7,\"notes\":\"s-notes\"}" - } - ] - }, - { - "command": "admin workspace-locations update", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/workspaceLocations/s-location-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin workspace-locations update", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/workspaceLocations/s-location-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "admin workspace-locations update-floor", - "variant": "all-flags", - "args": [ - "--display-name=s-display-name", - "--floor-id=s-floor-id", - "--floor-number=7", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/workspaceLocations/s-location-id/floors/s-floor-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"displayName\":\"s-display-name\",\"floorNumber\":7}" - } - ] - }, - { - "command": "admin workspace-locations update-floor", - "variant": "required", - "args": [ - "--floor-id=s-floor-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/workspaceLocations/s-location-id/floors/s-floor-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin workspace-locations update-floor", - "variant": "body", - "args": [ - "--floor-id=s-floor-id", - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/workspaceLocations/s-location-id/floors/s-floor-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "admin workspace-metrics duration", - "variant": "all-flags", - "args": [ - "--aggregation=s-aggregation", - "--from=2026-01-01T00:00:00.000Z", - "--measurement=s-measurement", - "--to=2026-01-02T00:00:00.000Z", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaceDurationMetrics?aggregation=s-aggregation&from=2026-01-01T00%3A00%3A00.000Z&measurement=s-measurement&to=2026-01-02T00%3A00%3A00.000Z&workspaceId=s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin workspace-metrics duration", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaceDurationMetrics", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin workspace-metrics duration", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaceDurationMetrics", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin workspace-metrics workspace-metrics", - "variant": "all-flags", - "args": [ - "--aggregation=s-aggregation", - "--from=2026-01-01T00:00:00.000Z", - "--metric-name=s-metric-name", - "--sort-by=s-sort-by", - "--to=2026-01-02T00:00:00.000Z", - "--unit=s-unit", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaceMetrics?aggregation=s-aggregation&from=2026-01-01T00%3A00%3A00.000Z&metricName=s-metric-name&sortBy=s-sort-by&to=2026-01-02T00%3A00%3A00.000Z&unit=s-unit&workspaceId=s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin workspace-metrics workspace-metrics", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaceMetrics", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "admin workspace-metrics workspace-metrics", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaceMetrics", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - } -] diff --git a/testdata/golden/requests-calling.json b/testdata/golden/requests-calling.json deleted file mode 100644 index 77b3582..0000000 --- a/testdata/golden/requests-calling.json +++ /dev/null @@ -1,57921 +0,0 @@ -[ - { - "command": "calling announcement-playlist create", - "variant": "all-flags", - "args": [ - "--announcement-ids=s-announcement-ids-1,s-announcement-ids-2", - "--name=s-name" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/announcements/playlists?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"announcementIds\":[\"s-announcement-ids-1\",\"s-announcement-ids-2\"],\"name\":\"s-name\"}" - } - ] - }, - { - "command": "calling announcement-playlist create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/announcements/playlists?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling announcement-playlist create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/announcements/playlists?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling announcement-playlist delete", - "variant": "all-flags", - "args": [ - "--playlist-id=s-playlist-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/announcements/playlists/s-playlist-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling announcement-playlist delete", - "variant": "required", - "args": [ - "--playlist-id=s-playlist-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/announcements/playlists/s-playlist-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling announcement-playlist get", - "variant": "all-flags", - "args": [ - "--playlist-id=s-playlist-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/announcements/playlists/s-playlist-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling announcement-playlist get", - "variant": "required", - "args": [ - "--playlist-id=s-playlist-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/announcements/playlists/s-playlist-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling announcement-playlist get", - "variant": "paginate", - "args": [ - "--playlist-id=s-playlist-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/announcements/playlists/s-playlist-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling announcement-playlist list", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/announcements/playlists?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling announcement-playlist list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/announcements/playlists?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling announcement-playlist list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/announcements/playlists?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling announcement-playlist list-locations", - "variant": "all-flags", - "args": [ - "--playlist-id=s-playlist-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/announcements/playlists/s-playlist-id/locations?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling announcement-playlist list-locations", - "variant": "required", - "args": [ - "--playlist-id=s-playlist-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/announcements/playlists/s-playlist-id/locations?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling announcement-playlist list-locations", - "variant": "paginate", - "args": [ - "--playlist-id=s-playlist-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/announcements/playlists/s-playlist-id/locations?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling announcement-playlist update", - "variant": "all-flags", - "args": [ - "--announcement-ids=s-announcement-ids-1,s-announcement-ids-2", - "--name=s-name", - "--playlist-id=s-playlist-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/announcements/playlists/s-playlist-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"announcementIds\":[\"s-announcement-ids-1\",\"s-announcement-ids-2\"],\"name\":\"s-name\"}" - } - ] - }, - { - "command": "calling announcement-playlist update", - "variant": "required", - "args": [ - "--playlist-id=s-playlist-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/announcements/playlists/s-playlist-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling announcement-playlist update", - "variant": "body", - "args": [ - "--playlist-id=s-playlist-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/announcements/playlists/s-playlist-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling announcement-playlist update-locations", - "variant": "all-flags", - "args": [ - "--location-ids=s-location-ids-1,s-location-ids-2", - "--playlist-id=s-playlist-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/announcements/playlists/s-playlist-id/locations?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"locationIds\":[\"s-location-ids-1\",\"s-location-ids-2\"]}" - } - ] - }, - { - "command": "calling announcement-playlist update-locations", - "variant": "required", - "args": [ - "--playlist-id=s-playlist-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/announcements/playlists/s-playlist-id/locations?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling announcement-playlist update-locations", - "variant": "body", - "args": [ - "--playlist-id=s-playlist-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/announcements/playlists/s-playlist-id/locations?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling announcement-repository delete-greeting-location", - "variant": "all-flags", - "args": [ - "--announcement-id=s-announcement-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/announcements/s-announcement-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling announcement-repository delete-greeting-location", - "variant": "required", - "args": [ - "--announcement-id=s-announcement-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/announcements/s-announcement-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling announcement-repository delete-greeting-org", - "variant": "all-flags", - "args": [ - "--announcement-id=s-announcement-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/announcements/s-announcement-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling announcement-repository delete-greeting-org", - "variant": "required", - "args": [ - "--announcement-id=s-announcement-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/announcements/s-announcement-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling announcement-repository generate-text-to-speech-prompt", - "variant": "all-flags", - "args": [ - "--language-code=s-language-code", - "--text=s-text", - "--voice=s-voice" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/textToSpeech/actions/generate/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"languageCode\":\"s-language-code\",\"text\":\"s-text\",\"voice\":\"s-voice\"}" - } - ] - }, - { - "command": "calling announcement-repository generate-text-to-speech-prompt", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/textToSpeech/actions/generate/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling announcement-repository generate-text-to-speech-prompt", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/textToSpeech/actions/generate/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling announcement-repository get-binary-greeting", - "variant": "all-flags", - "args": [ - "--announcement-id=s-announcement-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/announcements/s-announcement-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling announcement-repository get-binary-greeting", - "variant": "required", - "args": [ - "--announcement-id=s-announcement-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/announcements/s-announcement-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling announcement-repository get-binary-greeting", - "variant": "paginate", - "args": [ - "--announcement-id=s-announcement-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/announcements/s-announcement-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling announcement-repository get-binary-greeting-2", - "variant": "all-flags", - "args": [ - "--announcement-id=s-announcement-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/announcements/s-announcement-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling announcement-repository get-binary-greeting-2", - "variant": "required", - "args": [ - "--announcement-id=s-announcement-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/announcements/s-announcement-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling announcement-repository get-binary-greeting-2", - "variant": "paginate", - "args": [ - "--announcement-id=s-announcement-id", - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/announcements/s-announcement-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling announcement-repository get-text-to-speech-generation-status", - "variant": "all-flags", - "args": [ - "--tts-id=s-tts-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/textToSpeech/s-tts-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling announcement-repository get-text-to-speech-generation-status", - "variant": "required", - "args": [ - "--tts-id=s-tts-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/textToSpeech/s-tts-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling announcement-repository get-text-to-speech-generation-status", - "variant": "paginate", - "args": [ - "--tts-id=s-tts-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/textToSpeech/s-tts-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling announcement-repository get-text-to-speech-usage", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/textToSpeech/usage?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling announcement-repository get-text-to-speech-usage", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/textToSpeech/usage?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling announcement-repository get-text-to-speech-usage", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/textToSpeech/usage?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling announcement-repository get-usage", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/announcements/usage?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling announcement-repository get-usage", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/announcements/usage?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling announcement-repository get-usage", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/announcements/usage?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling announcement-repository get-usage-location", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/announcements/usage?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling announcement-repository get-usage-location", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/announcements/usage?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling announcement-repository get-usage-location", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/announcements/usage?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling announcement-repository list-greetings", - "variant": "all-flags", - "args": [ - "--file-name=s-file-name", - "--file-type=s-file-type", - "--location-id=s-location-id", - "--max=s-max", - "--media-file-type=s-media-file-type", - "--name=s-name", - "--order=s-order", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/announcements?fileName=s-file-name&fileType=s-file-type&locationId=s-location-id&max=s-max&mediaFileType=s-media-file-type&name=s-name&order=s-order&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling announcement-repository list-greetings", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/announcements?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling announcement-repository list-greetings", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/announcements?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling announcement-repository list-text-to-speech-voices", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/textToSpeech/voices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling announcement-repository list-text-to-speech-voices", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/textToSpeech/voices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling announcement-repository list-text-to-speech-voices", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/textToSpeech/voices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling announcement-repository update-binary-greeting", - "variant": "all-flags", - "args": [ - "--announcement-id=s-announcement-id", - "--file=s-file", - "--name=s-name" - ], - "requests": [], - "error": "reading audio file: open s-file: no such file or directory" - }, - { - "command": "calling announcement-repository update-binary-greeting", - "variant": "required", - "args": [ - "--announcement-id=s-announcement-id", - "--file=s-file", - "--name=s-name" - ], - "requests": [], - "error": "reading audio file: open s-file: no such file or directory" - }, - { - "command": "calling announcement-repository update-binary-greeting-2", - "variant": "all-flags", - "args": [ - "--announcement-id=s-announcement-id", - "--file=s-file", - "--location-id=s-location-id", - "--name=s-name" - ], - "requests": [], - "error": "reading audio file: open s-file: no such file or directory" - }, - { - "command": "calling announcement-repository update-binary-greeting-2", - "variant": "required", - "args": [ - "--announcement-id=s-announcement-id", - "--file=s-file", - "--location-id=s-location-id", - "--name=s-name" - ], - "requests": [], - "error": "reading audio file: open s-file: no such file or directory" - }, - { - "command": "calling announcement-repository upload-binary-greeting", - "variant": "all-flags", - "args": [ - "--file=s-file", - "--name=s-name" - ], - "requests": [], - "error": "reading audio file: open s-file: no such file or directory" - }, - { - "command": "calling announcement-repository upload-binary-greeting", - "variant": "required", - "args": [ - "--file=s-file", - "--name=s-name" - ], - "requests": [], - "error": "reading audio file: open s-file: no such file or directory" - }, - { - "command": "calling announcement-repository upload-binary-greeting-2", - "variant": "all-flags", - "args": [ - "--file=s-file", - "--location-id=s-location-id", - "--name=s-name" - ], - "requests": [], - "error": "reading audio file: open s-file: no such file or directory" - }, - { - "command": "calling announcement-repository upload-binary-greeting-2", - "variant": "required", - "args": [ - "--file=s-file", - "--location-id=s-location-id", - "--name=s-name" - ], - "requests": [], - "error": "reading audio file: open s-file: no such file or directory" - }, - { - "command": "calling auto-attendant create", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/autoAttendants?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling auto-attendant create", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/autoAttendants?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling auto-attendant create", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/autoAttendants?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling auto-attendant create-selective-forward-rule", - "variant": "all-flags", - "args": [ - "--auto-attendant-id=s-auto-attendant-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/autoAttendants/s-auto-attendant-id/callForwarding/selectiveRules?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling auto-attendant create-selective-forward-rule", - "variant": "required", - "args": [ - "--auto-attendant-id=s-auto-attendant-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/autoAttendants/s-auto-attendant-id/callForwarding/selectiveRules?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling auto-attendant create-selective-forward-rule", - "variant": "body", - "args": [ - "--auto-attendant-id=s-auto-attendant-id", - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/autoAttendants/s-auto-attendant-id/callForwarding/selectiveRules?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling auto-attendant delete", - "variant": "all-flags", - "args": [ - "--auto-attendant-id=s-auto-attendant-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/autoAttendants/s-auto-attendant-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling auto-attendant delete", - "variant": "required", - "args": [ - "--auto-attendant-id=s-auto-attendant-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/autoAttendants/s-auto-attendant-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling auto-attendant delete-announcement-file", - "variant": "all-flags", - "args": [ - "--auto-attendant-id=s-auto-attendant-id", - "--file-name=s-file-name", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/autoAttendants/s-auto-attendant-id/announcements/s-file-name?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling auto-attendant delete-announcement-file", - "variant": "required", - "args": [ - "--auto-attendant-id=s-auto-attendant-id", - "--file-name=s-file-name", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/autoAttendants/s-auto-attendant-id/announcements/s-file-name?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling auto-attendant delete-selective-forward-rule", - "variant": "all-flags", - "args": [ - "--auto-attendant-id=s-auto-attendant-id", - "--location-id=s-location-id", - "--rule-id=s-rule-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/autoAttendants/s-auto-attendant-id/callForwarding/selectiveRules/s-rule-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling auto-attendant delete-selective-forward-rule", - "variant": "required", - "args": [ - "--auto-attendant-id=s-auto-attendant-id", - "--location-id=s-location-id", - "--rule-id=s-rule-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/autoAttendants/s-auto-attendant-id/callForwarding/selectiveRules/s-rule-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling auto-attendant get", - "variant": "all-flags", - "args": [ - "--auto-attendant-id=s-auto-attendant-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/autoAttendants/s-auto-attendant-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling auto-attendant get", - "variant": "required", - "args": [ - "--auto-attendant-id=s-auto-attendant-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/autoAttendants/s-auto-attendant-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling auto-attendant get", - "variant": "paginate", - "args": [ - "--auto-attendant-id=s-auto-attendant-id", - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/autoAttendants/s-auto-attendant-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling auto-attendant get-alternate-numbers", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--max=s-max", - "--phone-number=s-phone-number", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/autoAttendants/alternate/availableNumbers?max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling auto-attendant get-alternate-numbers", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/autoAttendants/alternate/availableNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling auto-attendant get-alternate-numbers", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/autoAttendants/alternate/availableNumbers?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling auto-attendant get-call-forward", - "variant": "all-flags", - "args": [ - "--auto-attendant-id=s-auto-attendant-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/autoAttendants/s-auto-attendant-id/callForwarding?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling auto-attendant get-call-forward", - "variant": "required", - "args": [ - "--auto-attendant-id=s-auto-attendant-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/autoAttendants/s-auto-attendant-id/callForwarding?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling auto-attendant get-call-forward", - "variant": "paginate", - "args": [ - "--auto-attendant-id=s-auto-attendant-id", - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/autoAttendants/s-auto-attendant-id/callForwarding?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling auto-attendant get-forward-available-numbers", - "variant": "all-flags", - "args": [ - "--extension=s-extension", - "--location-id=s-location-id", - "--max=s-max", - "--owner-name=s-owner-name", - "--phone-number=s-phone-number", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/autoAttendants/callForwarding/availableNumbers?extension=s-extension&max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&ownerName=s-owner-name&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling auto-attendant get-forward-available-numbers", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/autoAttendants/callForwarding/availableNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling auto-attendant get-forward-available-numbers", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/autoAttendants/callForwarding/availableNumbers?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling auto-attendant get-primary-numbers", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--max=s-max", - "--phone-number=s-phone-number", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/autoAttendants/availableNumbers?max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling auto-attendant get-primary-numbers", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/autoAttendants/availableNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling auto-attendant get-primary-numbers", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/autoAttendants/availableNumbers?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling auto-attendant get-selective-forward-rule", - "variant": "all-flags", - "args": [ - "--auto-attendant-id=s-auto-attendant-id", - "--location-id=s-location-id", - "--rule-id=s-rule-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/autoAttendants/s-auto-attendant-id/callForwarding/selectiveRules/s-rule-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling auto-attendant get-selective-forward-rule", - "variant": "required", - "args": [ - "--auto-attendant-id=s-auto-attendant-id", - "--location-id=s-location-id", - "--rule-id=s-rule-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/autoAttendants/s-auto-attendant-id/callForwarding/selectiveRules/s-rule-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling auto-attendant get-selective-forward-rule", - "variant": "paginate", - "args": [ - "--auto-attendant-id=s-auto-attendant-id", - "--location-id=s-location-id", - "--rule-id=s-rule-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/autoAttendants/s-auto-attendant-id/callForwarding/selectiveRules/s-rule-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling auto-attendant list", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--max=s-max", - "--name=s-name", - "--phone-number=s-phone-number", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/autoAttendants?locationId=s-location-id&max=s-max&name=s-name&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling auto-attendant list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/autoAttendants?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling auto-attendant list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/autoAttendants?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling auto-attendant list-announcement-files", - "variant": "all-flags", - "args": [ - "--auto-attendant-id=s-auto-attendant-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/autoAttendants/s-auto-attendant-id/announcements?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling auto-attendant list-announcement-files", - "variant": "required", - "args": [ - "--auto-attendant-id=s-auto-attendant-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/autoAttendants/s-auto-attendant-id/announcements?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling auto-attendant list-announcement-files", - "variant": "paginate", - "args": [ - "--auto-attendant-id=s-auto-attendant-id", - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/autoAttendants/s-auto-attendant-id/announcements?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling auto-attendant switch-mode-call-forward", - "variant": "all-flags", - "args": [ - "--auto-attendant-id=s-auto-attendant-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/autoAttendants/s-auto-attendant-id/callForwarding/actions/switchMode/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling auto-attendant switch-mode-call-forward", - "variant": "required", - "args": [ - "--auto-attendant-id=s-auto-attendant-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/autoAttendants/s-auto-attendant-id/callForwarding/actions/switchMode/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling auto-attendant switch-mode-call-forward", - "variant": "body", - "args": [ - "--auto-attendant-id=s-auto-attendant-id", - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/autoAttendants/s-auto-attendant-id/callForwarding/actions/switchMode/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling auto-attendant update", - "variant": "all-flags", - "args": [ - "--auto-attendant-id=s-auto-attendant-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/autoAttendants/s-auto-attendant-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling auto-attendant update", - "variant": "required", - "args": [ - "--auto-attendant-id=s-auto-attendant-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/autoAttendants/s-auto-attendant-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling auto-attendant update", - "variant": "body", - "args": [ - "--auto-attendant-id=s-auto-attendant-id", - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/autoAttendants/s-auto-attendant-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling auto-attendant update-call-forward", - "variant": "all-flags", - "args": [ - "--auto-attendant-id=s-auto-attendant-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/autoAttendants/s-auto-attendant-id/callForwarding?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling auto-attendant update-call-forward", - "variant": "required", - "args": [ - "--auto-attendant-id=s-auto-attendant-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/autoAttendants/s-auto-attendant-id/callForwarding?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling auto-attendant update-call-forward", - "variant": "body", - "args": [ - "--auto-attendant-id=s-auto-attendant-id", - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/autoAttendants/s-auto-attendant-id/callForwarding?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling auto-attendant update-selective-forward-rule", - "variant": "all-flags", - "args": [ - "--auto-attendant-id=s-auto-attendant-id", - "--location-id=s-location-id", - "--rule-id=s-rule-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/autoAttendants/s-auto-attendant-id/callForwarding/selectiveRules/s-rule-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling auto-attendant update-selective-forward-rule", - "variant": "required", - "args": [ - "--auto-attendant-id=s-auto-attendant-id", - "--location-id=s-location-id", - "--rule-id=s-rule-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/autoAttendants/s-auto-attendant-id/callForwarding/selectiveRules/s-rule-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling auto-attendant update-selective-forward-rule", - "variant": "body", - "args": [ - "--auto-attendant-id=s-auto-attendant-id", - "--location-id=s-location-id", - "--rule-id=s-rule-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/autoAttendants/s-auto-attendant-id/callForwarding/selectiveRules/s-rule-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-controls answer", - "variant": "all-flags", - "args": [ - "--call-id=s-call-id", - "--endpoint-id=s-endpoint-id", - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/answer", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"callId\":\"s-call-id\",\"endpointId\":\"s-endpoint-id\",\"lineOwnerId\":\"s-line-owner-id\"}" - } - ] - }, - { - "command": "calling call-controls answer", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/answer", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-controls answer", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/answer", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-controls answer-member-id", - "variant": "all-flags", - "args": [ - "--call-id=s-call-id", - "--endpoint-id=s-endpoint-id", - "--member-id=s-member-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/members/s-member-id/answer?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"callId\":\"s-call-id\",\"endpointId\":\"s-endpoint-id\"}" - } - ] - }, - { - "command": "calling call-controls answer-member-id", - "variant": "required", - "args": [ - "--member-id=s-member-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/members/s-member-id/answer?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-controls answer-member-id", - "variant": "body", - "args": [ - "--member-id=s-member-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/members/s-member-id/answer?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-controls barge", - "variant": "all-flags", - "args": [ - "--endpoint-id=s-endpoint-id", - "--line-owner-id=s-line-owner-id", - "--single-number-reach-phone-number=s-single-number-reach-phone-number", - "--target=s-target" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/bargeIn", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"endpointId\":\"s-endpoint-id\",\"lineOwnerId\":\"s-line-owner-id\",\"singleNumberReachPhoneNumber\":\"s-single-number-reach-phone-number\",\"target\":\"s-target\"}" - } - ] - }, - { - "command": "calling call-controls barge", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/bargeIn", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-controls barge", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/bargeIn", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-controls dial", - "variant": "all-flags", - "args": [ - "--destination=s-destination", - "--endpoint-id=s-endpoint-id", - "--line-owner-id=s-line-owner-id", - "--single-number-reach-phone-number=s-single-number-reach-phone-number" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/dial", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"destination\":\"s-destination\",\"endpointId\":\"s-endpoint-id\",\"lineOwnerId\":\"s-line-owner-id\",\"singleNumberReachPhoneNumber\":\"s-single-number-reach-phone-number\"}" - } - ] - }, - { - "command": "calling call-controls dial", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/dial", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-controls dial", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/dial", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-controls dial-member-id", - "variant": "all-flags", - "args": [ - "--destination=s-destination", - "--endpoint-id=s-endpoint-id", - "--member-id=s-member-id", - "--single-number-reach-phone-number=s-single-number-reach-phone-number" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/members/s-member-id/dial?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"destination\":\"s-destination\",\"endpointId\":\"s-endpoint-id\",\"singleNumberReachPhoneNumber\":\"s-single-number-reach-phone-number\"}" - } - ] - }, - { - "command": "calling call-controls dial-member-id", - "variant": "required", - "args": [ - "--member-id=s-member-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/members/s-member-id/dial?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-controls dial-member-id", - "variant": "body", - "args": [ - "--member-id=s-member-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/members/s-member-id/dial?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-controls divert", - "variant": "all-flags", - "args": [ - "--call-id=s-call-id", - "--destination=s-destination", - "--line-owner-id=s-line-owner-id", - "--to-voicemail=true" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/divert", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"callId\":\"s-call-id\",\"destination\":\"s-destination\",\"lineOwnerId\":\"s-line-owner-id\",\"toVoicemail\":true}" - } - ] - }, - { - "command": "calling call-controls divert", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/divert", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-controls divert", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/divert", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-controls get", - "variant": "all-flags", - "args": [ - "--destination=s-destination", - "--endpoint-id=s-endpoint-id", - "--line-owner-id=s-line-owner-id", - "--single-number-reach-phone-number=s-single-number-reach-phone-number" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/retrieve", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"destination\":\"s-destination\",\"endpointId\":\"s-endpoint-id\",\"lineOwnerId\":\"s-line-owner-id\",\"singleNumberReachPhoneNumber\":\"s-single-number-reach-phone-number\"}" - } - ] - }, - { - "command": "calling call-controls get", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/retrieve", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-controls get", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/retrieve", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-controls get-2", - "variant": "all-flags", - "args": [ - "--call-id=s-call-id", - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/calls/s-call-id?lineOwnerId=s-line-owner-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-controls get-2", - "variant": "required", - "args": [ - "--call-id=s-call-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/calls/s-call-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-controls get-2", - "variant": "paginate", - "args": [ - "--call-id=s-call-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/calls/s-call-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-controls get-member-id", - "variant": "all-flags", - "args": [ - "--call-id=s-call-id", - "--member-id=s-member-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/calls/members/s-member-id/calls/s-call-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-controls get-member-id", - "variant": "required", - "args": [ - "--call-id=s-call-id", - "--member-id=s-member-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/calls/members/s-member-id/calls/s-call-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-controls get-member-id", - "variant": "paginate", - "args": [ - "--call-id=s-call-id", - "--member-id=s-member-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/calls/members/s-member-id/calls/s-call-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-controls hangup", - "variant": "all-flags", - "args": [ - "--call-id=s-call-id", - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/hangup", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"callId\":\"s-call-id\",\"lineOwnerId\":\"s-line-owner-id\"}" - } - ] - }, - { - "command": "calling call-controls hangup", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/hangup", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-controls hangup", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/hangup", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-controls hangup-member-id", - "variant": "all-flags", - "args": [ - "--call-id=s-call-id", - "--member-id=s-member-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/members/s-member-id/hangup?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"callId\":\"s-call-id\"}" - } - ] - }, - { - "command": "calling call-controls hangup-member-id", - "variant": "required", - "args": [ - "--member-id=s-member-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/members/s-member-id/hangup?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-controls hangup-member-id", - "variant": "body", - "args": [ - "--member-id=s-member-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/members/s-member-id/hangup?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-controls hold", - "variant": "all-flags", - "args": [ - "--call-id=s-call-id", - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/hold", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"callId\":\"s-call-id\",\"lineOwnerId\":\"s-line-owner-id\"}" - } - ] - }, - { - "command": "calling call-controls hold", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/hold", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-controls hold", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/hold", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-controls list", - "variant": "all-flags", - "args": [ - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/calls?lineOwnerId=s-line-owner-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-controls list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/calls", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-controls list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/calls", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-controls list-history", - "variant": "all-flags", - "args": [ - "--type=s-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/calls/history?type=s-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-controls list-history", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/calls/history", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-controls list-history", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/calls/history", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-controls list-member-id", - "variant": "all-flags", - "args": [ - "--member-id=s-member-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/calls/members/s-member-id/calls?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-controls list-member-id", - "variant": "required", - "args": [ - "--member-id=s-member-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/calls/members/s-member-id/calls?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-controls list-member-id", - "variant": "paginate", - "args": [ - "--member-id=s-member-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/calls/members/s-member-id/calls?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-controls mute", - "variant": "all-flags", - "args": [ - "--call-id=s-call-id", - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/mute", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"callId\":\"s-call-id\",\"lineOwnerId\":\"s-line-owner-id\"}" - } - ] - }, - { - "command": "calling call-controls mute", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/mute", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-controls mute", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/mute", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-controls park", - "variant": "all-flags", - "args": [ - "--call-id=s-call-id", - "--destination=s-destination", - "--is-group-park=true", - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/park", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"callId\":\"s-call-id\",\"destination\":\"s-destination\",\"isGroupPark\":true,\"lineOwnerId\":\"s-line-owner-id\"}" - } - ] - }, - { - "command": "calling call-controls park", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/park", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-controls park", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/park", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-controls pause-recording", - "variant": "all-flags", - "args": [ - "--call-id=s-call-id", - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/pauseRecording", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"callId\":\"s-call-id\",\"lineOwnerId\":\"s-line-owner-id\"}" - } - ] - }, - { - "command": "calling call-controls pause-recording", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/pauseRecording", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-controls pause-recording", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/pauseRecording", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-controls pickup", - "variant": "all-flags", - "args": [ - "--endpoint-id=s-endpoint-id", - "--line-owner-id=s-line-owner-id", - "--single-number-reach-phone-number=s-single-number-reach-phone-number", - "--target=s-target" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/pickup", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"endpointId\":\"s-endpoint-id\",\"lineOwnerId\":\"s-line-owner-id\",\"singleNumberReachPhoneNumber\":\"s-single-number-reach-phone-number\",\"target\":\"s-target\"}" - } - ] - }, - { - "command": "calling call-controls pickup", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/pickup", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-controls pickup", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/pickup", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-controls pull", - "variant": "all-flags", - "args": [ - "--endpoint-id=s-endpoint-id", - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/pull", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"endpointId\":\"s-endpoint-id\",\"lineOwnerId\":\"s-line-owner-id\"}" - } - ] - }, - { - "command": "calling call-controls pull", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/pull", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-controls pull", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/pull", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-controls push", - "variant": "all-flags", - "args": [ - "--call-id=s-call-id", - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/push", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"callId\":\"s-call-id\",\"lineOwnerId\":\"s-line-owner-id\"}" - } - ] - }, - { - "command": "calling call-controls push", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/push", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-controls push", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/push", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-controls reject", - "variant": "all-flags", - "args": [ - "--action=s-action", - "--call-id=s-call-id", - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/reject", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"action\":\"s-action\",\"callId\":\"s-call-id\",\"lineOwnerId\":\"s-line-owner-id\"}" - } - ] - }, - { - "command": "calling call-controls reject", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/reject", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-controls reject", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/reject", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-controls resume", - "variant": "all-flags", - "args": [ - "--call-id=s-call-id", - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/resume", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"callId\":\"s-call-id\",\"lineOwnerId\":\"s-line-owner-id\"}" - } - ] - }, - { - "command": "calling call-controls resume", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/resume", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-controls resume", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/resume", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-controls resume-recording", - "variant": "all-flags", - "args": [ - "--call-id=s-call-id", - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/resumeRecording", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"callId\":\"s-call-id\",\"lineOwnerId\":\"s-line-owner-id\"}" - } - ] - }, - { - "command": "calling call-controls resume-recording", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/resumeRecording", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-controls resume-recording", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/resumeRecording", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-controls start-recording", - "variant": "all-flags", - "args": [ - "--call-id=s-call-id", - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/startRecording", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"callId\":\"s-call-id\",\"lineOwnerId\":\"s-line-owner-id\"}" - } - ] - }, - { - "command": "calling call-controls start-recording", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/startRecording", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-controls start-recording", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/startRecording", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-controls stop-recording", - "variant": "all-flags", - "args": [ - "--call-id=s-call-id", - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/stopRecording", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"callId\":\"s-call-id\",\"lineOwnerId\":\"s-line-owner-id\"}" - } - ] - }, - { - "command": "calling call-controls stop-recording", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/stopRecording", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-controls stop-recording", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/stopRecording", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-controls transfer", - "variant": "all-flags", - "args": [ - "--call-id1=s-call-id1", - "--call-id2=s-call-id2", - "--destination=s-destination", - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/transfer", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"callId1\":\"s-call-id1\",\"callId2\":\"s-call-id2\",\"destination\":\"s-destination\",\"lineOwnerId\":\"s-line-owner-id\"}" - } - ] - }, - { - "command": "calling call-controls transfer", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/transfer", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-controls transfer", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/transfer", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-controls transmit-dtmf", - "variant": "all-flags", - "args": [ - "--call-id=s-call-id", - "--dtmf=s-dtmf", - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/transmitDtmf", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"callId\":\"s-call-id\",\"dtmf\":\"s-dtmf\",\"lineOwnerId\":\"s-line-owner-id\"}" - } - ] - }, - { - "command": "calling call-controls transmit-dtmf", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/transmitDtmf", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-controls transmit-dtmf", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/transmitDtmf", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-controls unmute", - "variant": "all-flags", - "args": [ - "--call-id=s-call-id", - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/unmute", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"callId\":\"s-call-id\",\"lineOwnerId\":\"s-line-owner-id\"}" - } - ] - }, - { - "command": "calling call-controls unmute", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/unmute", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-controls unmute", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/unmute", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-controls-for-me answer", - "variant": "all-flags", - "args": [ - "--call-id=s-call-id", - "--endpoint-id=s-endpoint-id", - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/members/me/answer", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"callId\":\"s-call-id\",\"endpointId\":\"s-endpoint-id\",\"lineOwnerId\":\"s-line-owner-id\"}" - } - ] - }, - { - "command": "calling call-controls-for-me answer", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/members/me/answer", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-controls-for-me answer", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/members/me/answer", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-controls-for-me dial", - "variant": "all-flags", - "args": [ - "--destination=s-destination", - "--endpoint-id=s-endpoint-id", - "--line-owner-id=s-line-owner-id", - "--single-number-reach-phone-number=s-single-number-reach-phone-number" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/members/me/dial", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"destination\":\"s-destination\",\"endpointId\":\"s-endpoint-id\",\"lineOwnerId\":\"s-line-owner-id\",\"singleNumberReachPhoneNumber\":\"s-single-number-reach-phone-number\"}" - } - ] - }, - { - "command": "calling call-controls-for-me dial", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/members/me/dial", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-controls-for-me dial", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/members/me/dial", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-controls-for-me get", - "variant": "all-flags", - "args": [ - "--call-id=s-call-id", - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/calls/members/me/calls/s-call-id?lineOwnerId=s-line-owner-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-controls-for-me get", - "variant": "required", - "args": [ - "--call-id=s-call-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/calls/members/me/calls/s-call-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-controls-for-me get", - "variant": "paginate", - "args": [ - "--call-id=s-call-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/calls/members/me/calls/s-call-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-controls-for-me hangup", - "variant": "all-flags", - "args": [ - "--call-id=s-call-id", - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/members/me/hangup", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"callId\":\"s-call-id\",\"lineOwnerId\":\"s-line-owner-id\"}" - } - ] - }, - { - "command": "calling call-controls-for-me hangup", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/members/me/hangup", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-controls-for-me hangup", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/members/me/hangup", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-controls-for-me list", - "variant": "all-flags", - "args": [ - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/calls/members/me/calls?lineOwnerId=s-line-owner-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-controls-for-me list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/calls/members/me/calls", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-controls-for-me list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/calls/members/me/calls", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-park create", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callParks?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-park create", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callParks?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-park create", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callParks?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-park create-extension", - "variant": "all-flags", - "args": [ - "--extension=s-extension", - "--location-id=s-location-id", - "--name=s-name" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callParkExtensions?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"extension\":\"s-extension\",\"name\":\"s-name\"}" - } - ] - }, - { - "command": "calling call-park create-extension", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callParkExtensions?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-park create-extension", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callParkExtensions?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-park delete", - "variant": "all-flags", - "args": [ - "--call-park-id=s-call-park-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callParks/s-call-park-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-park delete", - "variant": "required", - "args": [ - "--call-park-id=s-call-park-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callParks/s-call-park-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-park delete-extension", - "variant": "all-flags", - "args": [ - "--call-park-extension-id=s-call-park-extension-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callParkExtensions/s-call-park-extension-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-park delete-extension", - "variant": "required", - "args": [ - "--call-park-extension-id=s-call-park-extension-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callParkExtensions/s-call-park-extension-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-park get", - "variant": "all-flags", - "args": [ - "--call-park-id=s-call-park-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callParks/s-call-park-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-park get", - "variant": "required", - "args": [ - "--call-park-id=s-call-park-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callParks/s-call-park-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-park get", - "variant": "paginate", - "args": [ - "--call-park-id=s-call-park-id", - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callParks/s-call-park-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-park get-2", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callParks/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-park get-2", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callParks/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-park get-2", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callParks/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-park get-available-agents", - "variant": "all-flags", - "args": [ - "--call-park-name=s-call-park-name", - "--location-id=s-location-id", - "--max=s-max", - "--name=s-name", - "--order=s-order", - "--phone-number=s-phone-number", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callParks/availableUsers?callParkName=s-call-park-name&max=s-max&name=s-name&order=s-order&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-park get-available-agents", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callParks/availableUsers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-park get-available-agents", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callParks/availableUsers?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-park get-available-recall-hunt-groups", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--max=s-max", - "--name=s-name", - "--order=s-order", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callParks/availableRecallHuntGroups?max=s-max&name=s-name&order=s-order&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-park get-available-recall-hunt-groups", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callParks/availableRecallHuntGroups?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-park get-available-recall-hunt-groups", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callParks/availableRecallHuntGroups?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-park get-extension", - "variant": "all-flags", - "args": [ - "--call-park-extension-id=s-call-park-extension-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callParkExtensions/s-call-park-extension-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-park get-extension", - "variant": "required", - "args": [ - "--call-park-extension-id=s-call-park-extension-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callParkExtensions/s-call-park-extension-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-park get-extension", - "variant": "paginate", - "args": [ - "--call-park-extension-id=s-call-park-extension-id", - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callParkExtensions/s-call-park-extension-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-park list", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--max=s-max", - "--name=s-name", - "--order=s-order", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callParks?max=s-max&name=s-name&order=s-order&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-park list", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callParks?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-park list", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callParks?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-park list-extensions", - "variant": "all-flags", - "args": [ - "--extension=s-extension", - "--location-id=s-location-id", - "--location-name=s-location-name", - "--max=s-max", - "--name=s-name", - "--order=s-order", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/callParkExtensions?extension=s-extension&locationId=s-location-id&locationName=s-location-name&max=s-max&name=s-name&order=s-order&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-park list-extensions", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/callParkExtensions?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-park list-extensions", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/callParkExtensions?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-park update", - "variant": "all-flags", - "args": [ - "--call-park-id=s-call-park-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callParks/s-call-park-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-park update", - "variant": "required", - "args": [ - "--call-park-id=s-call-park-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callParks/s-call-park-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-park update", - "variant": "body", - "args": [ - "--call-park-id=s-call-park-id", - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callParks/s-call-park-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-park update-2", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callParks/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-park update-2", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callParks/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-park update-2", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callParks/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-park update-extension", - "variant": "all-flags", - "args": [ - "--call-park-extension-id=s-call-park-extension-id", - "--extension=s-extension", - "--location-id=s-location-id", - "--name=s-name" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callParkExtensions/s-call-park-extension-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"extension\":\"s-extension\",\"name\":\"s-name\"}" - } - ] - }, - { - "command": "calling call-park update-extension", - "variant": "required", - "args": [ - "--call-park-extension-id=s-call-park-extension-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callParkExtensions/s-call-park-extension-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-park update-extension", - "variant": "body", - "args": [ - "--call-park-extension-id=s-call-park-extension-id", - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callParkExtensions/s-call-park-extension-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-pickup create", - "variant": "all-flags", - "args": [ - "--agents=s-agents-1,s-agents-2", - "--location-id=s-location-id", - "--name=s-name", - "--notification-delay-timer-seconds=7", - "--notification-type=s-notification-type" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callPickups?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"agents\":[\"s-agents-1\",\"s-agents-2\"],\"name\":\"s-name\",\"notificationDelayTimerSeconds\":7,\"notificationType\":\"s-notification-type\"}" - } - ] - }, - { - "command": "calling call-pickup create", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callPickups?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-pickup create", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callPickups?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-pickup delete", - "variant": "all-flags", - "args": [ - "--call-pickup-id=s-call-pickup-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callPickups/s-call-pickup-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-pickup delete", - "variant": "required", - "args": [ - "--call-pickup-id=s-call-pickup-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callPickups/s-call-pickup-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-pickup get", - "variant": "all-flags", - "args": [ - "--call-pickup-id=s-call-pickup-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callPickups/s-call-pickup-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-pickup get", - "variant": "required", - "args": [ - "--call-pickup-id=s-call-pickup-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callPickups/s-call-pickup-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-pickup get", - "variant": "paginate", - "args": [ - "--call-pickup-id=s-call-pickup-id", - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callPickups/s-call-pickup-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-pickup get-available-agents", - "variant": "all-flags", - "args": [ - "--call-pickup-name=s-call-pickup-name", - "--location-id=s-location-id", - "--max=s-max", - "--name=s-name", - "--order=s-order", - "--phone-number=s-phone-number", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callPickups/availableUsers?callPickupName=s-call-pickup-name&max=s-max&name=s-name&order=s-order&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-pickup get-available-agents", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callPickups/availableUsers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-pickup get-available-agents", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callPickups/availableUsers?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-pickup list", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--max=s-max", - "--name=s-name", - "--order=s-order", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callPickups?max=s-max&name=s-name&order=s-order&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-pickup list", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callPickups?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-pickup list", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callPickups?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-pickup update", - "variant": "all-flags", - "args": [ - "--agents=s-agents-1,s-agents-2", - "--call-pickup-id=s-call-pickup-id", - "--location-id=s-location-id", - "--name=s-name", - "--notification-delay-timer-seconds=7", - "--notification-type=s-notification-type" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callPickups/s-call-pickup-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"agents\":[\"s-agents-1\",\"s-agents-2\"],\"name\":\"s-name\",\"notificationDelayTimerSeconds\":7,\"notificationType\":\"s-notification-type\"}" - } - ] - }, - { - "command": "calling call-pickup update", - "variant": "required", - "args": [ - "--call-pickup-id=s-call-pickup-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callPickups/s-call-pickup-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-pickup update", - "variant": "body", - "args": [ - "--call-pickup-id=s-call-pickup-id", - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callPickups/s-call-pickup-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-queue assign-unassign-agents-supervisor-customer-assist", - "variant": "all-flags", - "args": [ - "--has-cx-essentials=s-has-cx-essentials", - "--supervisor-id=s-supervisor-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/supervisors/s-supervisor-id?hasCxEssentials=s-has-cx-essentials&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue assign-unassign-agents-supervisor-customer-assist", - "variant": "required", - "args": [ - "--supervisor-id=s-supervisor-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/supervisors/s-supervisor-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue assign-unassign-agents-supervisor-customer-assist", - "variant": "body", - "args": [ - "--supervisor-id=s-supervisor-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/supervisors/s-supervisor-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-queue create-customer-assist", - "variant": "all-flags", - "args": [ - "--has-cx-essentials=s-has-cx-essentials", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues?hasCxEssentials=s-has-cx-essentials&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue create-customer-assist", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue create-customer-assist", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-queue create-selective-forward-rule", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/callForwarding/selectiveRules?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue create-selective-forward-rule", - "variant": "required", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/callForwarding/selectiveRules?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue create-selective-forward-rule", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/callForwarding/selectiveRules?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-queue create-supervisor-customer-assist", - "variant": "all-flags", - "args": [ - "--has-cx-essentials=s-has-cx-essentials" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/supervisors?hasCxEssentials=s-has-cx-essentials&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue create-supervisor-customer-assist", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/supervisors?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue create-supervisor-customer-assist", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/supervisors?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-queue delete", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue delete", - "variant": "required", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue delete-announcement-file", - "variant": "all-flags", - "args": [ - "--file-name=s-file-name", - "--location-id=s-location-id", - "--queue-id=s-queue-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/announcements/s-file-name?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue delete-announcement-file", - "variant": "required", - "args": [ - "--file-name=s-file-name", - "--location-id=s-location-id", - "--queue-id=s-queue-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/announcements/s-file-name?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue delete-bulk-supervisors", - "variant": "all-flags", - "args": [ - "--delete-all=true", - "--supervisor-ids=s-supervisor-ids-1,s-supervisor-ids-2" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/supervisors?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"deleteAll\":true,\"supervisorIds\":[\"s-supervisor-ids-1\",\"s-supervisor-ids-2\"]}" - } - ] - }, - { - "command": "calling call-queue delete-bulk-supervisors", - "variant": "required", - "args": null, - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/supervisors?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue delete-bulk-supervisors", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/supervisors?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-queue delete-selective-forward-rule", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id", - "--rule-id=s-rule-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/callForwarding/selectiveRules/s-rule-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue delete-selective-forward-rule", - "variant": "required", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id", - "--rule-id=s-rule-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/callForwarding/selectiveRules/s-rule-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue delete-supervisor", - "variant": "all-flags", - "args": [ - "--supervisor-id=s-supervisor-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/supervisors/s-supervisor-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue delete-supervisor", - "variant": "required", - "args": [ - "--supervisor-id=s-supervisor-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/supervisors/s-supervisor-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue get-agent-customer-assist", - "variant": "all-flags", - "args": [ - "--has-cx-essentials=s-has-cx-essentials", - "--id=s-id", - "--max=s-max", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/queues/agents/s-id?hasCxEssentials=s-has-cx-essentials&max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue get-agent-customer-assist", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/queues/agents/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue get-agent-customer-assist", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/queues/agents/s-id?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue get-alternate-numbers", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--max=s-max", - "--phone-number=s-phone-number", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/alternate/availableNumbers?max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue get-alternate-numbers", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/alternate/availableNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue get-alternate-numbers", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/alternate/availableNumbers?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue get-available-agents", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--max=s-max", - "--name=s-name", - "--order=s-order", - "--phone-number=s-phone-number", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/queues/agents/availableAgents?locationId=s-location-id&max=s-max&name=s-name&order=s-order&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue get-available-agents", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/queues/agents/availableAgents?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue get-available-agents", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/queues/agents/availableAgents?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue get-customer-assist", - "variant": "all-flags", - "args": [ - "--has-cx-essentials=s-has-cx-essentials", - "--location-id=s-location-id", - "--queue-id=s-queue-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id?hasCxEssentials=s-has-cx-essentials&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue get-customer-assist", - "variant": "required", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue get-customer-assist", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue get-forced-forward", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/forcedForward?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue get-forced-forward", - "variant": "required", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/forcedForward?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue get-forced-forward", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/forcedForward?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue get-forward", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/callForwarding?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue get-forward", - "variant": "required", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/callForwarding?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue get-forward", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/callForwarding?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue get-forward-available-numbers", - "variant": "all-flags", - "args": [ - "--extension=s-extension", - "--location-id=s-location-id", - "--max=s-max", - "--owner-name=s-owner-name", - "--phone-number=s-phone-number", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/callForwarding/availableNumbers?extension=s-extension&max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&ownerName=s-owner-name&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue get-forward-available-numbers", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/callForwarding/availableNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue get-forward-available-numbers", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/callForwarding/availableNumbers?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue get-holiday-service", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/holidayService?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue get-holiday-service", - "variant": "required", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/holidayService?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue get-holiday-service", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/holidayService?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue get-night-service", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/nightService?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue get-night-service", - "variant": "required", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/nightService?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue get-night-service", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/nightService?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue get-playlist-usage", - "variant": "all-flags", - "args": [ - "--play-list-id=s-play-list-id", - "--playlist-usage-type=s-playlist-usage-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/announcements/playlists/s-play-list-id/usage?playlistUsageType=s-playlist-usage-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue get-playlist-usage", - "variant": "required", - "args": [ - "--play-list-id=s-play-list-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/announcements/playlists/s-play-list-id/usage", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue get-playlist-usage", - "variant": "paginate", - "args": [ - "--play-list-id=s-play-list-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/announcements/playlists/s-play-list-id/usage", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue get-primary-numbers", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--max=s-max", - "--phone-number=s-phone-number", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/availableNumbers?max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue get-primary-numbers", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/availableNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue get-primary-numbers", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/availableNumbers?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue get-selective-forward-rule", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id", - "--rule-id=s-rule-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/callForwarding/selectiveRules/s-rule-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue get-selective-forward-rule", - "variant": "required", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id", - "--rule-id=s-rule-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/callForwarding/selectiveRules/s-rule-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue get-selective-forward-rule", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id", - "--rule-id=s-rule-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/callForwarding/selectiveRules/s-rule-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue get-stranded", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/strandedCalls?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue get-stranded", - "variant": "required", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/strandedCalls?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue get-stranded", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/strandedCalls?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue get-supervisor-detail-customer-assist", - "variant": "all-flags", - "args": [ - "--has-cx-essentials=s-has-cx-essentials", - "--max=s-max", - "--name=s-name", - "--order=s-order", - "--phone-number=s-phone-number", - "--start=s-start", - "--supervisor-id=s-supervisor-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/supervisors/s-supervisor-id?hasCxEssentials=s-has-cx-essentials&max=s-max&name=s-name&order=s-order&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue get-supervisor-detail-customer-assist", - "variant": "required", - "args": [ - "--supervisor-id=s-supervisor-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/supervisors/s-supervisor-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue get-supervisor-detail-customer-assist", - "variant": "paginate", - "args": [ - "--supervisor-id=s-supervisor-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/supervisors/s-supervisor-id?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue list-agents-customer-assist", - "variant": "all-flags", - "args": [ - "--has-cx-essentials=s-has-cx-essentials", - "--join-enabled=s-join-enabled", - "--location-id=s-location-id", - "--max=s-max", - "--name=s-name", - "--order=s-order", - "--phone-number=s-phone-number", - "--queue-id=s-queue-id", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/queues/agents?hasCxEssentials=s-has-cx-essentials&joinEnabled=s-join-enabled&locationId=s-location-id&max=s-max&name=s-name&order=s-order&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&phoneNumber=s-phone-number&queueId=s-queue-id&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue list-agents-customer-assist", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/queues/agents?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue list-agents-customer-assist", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/queues/agents?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue list-announcement-files", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/announcements?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue list-announcement-files", - "variant": "required", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/announcements?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue list-announcement-files", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/announcements?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue list-available-agents-customer-assist", - "variant": "all-flags", - "args": [ - "--has-cx-essentials=s-has-cx-essentials", - "--max=s-max", - "--name=s-name", - "--order=s-order", - "--phone-number=s-phone-number", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/supervisors/availableAgents?hasCxEssentials=s-has-cx-essentials&max=s-max&name=s-name&order=s-order&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue list-available-agents-customer-assist", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/supervisors/availableAgents?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue list-available-agents-customer-assist", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/supervisors/availableAgents?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue list-available-supervisors-customer-assist", - "variant": "all-flags", - "args": [ - "--has-cx-essentials=s-has-cx-essentials", - "--max=s-max", - "--name=s-name", - "--order=s-order", - "--phone-number=s-phone-number", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/supervisors/availableSupervisors?hasCxEssentials=s-has-cx-essentials&max=s-max&name=s-name&order=s-order&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue list-available-supervisors-customer-assist", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/supervisors/availableSupervisors?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue list-available-supervisors-customer-assist", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/supervisors/availableSupervisors?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue list-customer-assist", - "variant": "all-flags", - "args": [ - "--department-id=s-department-id", - "--department-name=s-department-name", - "--has-cx-essentials=s-has-cx-essentials", - "--location-id=s-location-id", - "--max=s-max", - "--name=s-name", - "--phone-number=s-phone-number", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/queues?departmentId=s-department-id&departmentName=s-department-name&hasCxEssentials=s-has-cx-essentials&locationId=s-location-id&max=s-max&name=s-name&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue list-customer-assist", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/queues?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue list-customer-assist", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/queues?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue list-supervisors-customer-assist", - "variant": "all-flags", - "args": [ - "--has-cx-essentials=s-has-cx-essentials", - "--max=s-max", - "--name=s-name", - "--order=s-order", - "--phone-number=s-phone-number", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/supervisors?hasCxEssentials=s-has-cx-essentials&max=s-max&name=s-name&order=s-order&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue list-supervisors-customer-assist", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/supervisors?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue list-supervisors-customer-assist", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/supervisors?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue switch-mode-forward", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/callForwarding/actions/switchMode/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue switch-mode-forward", - "variant": "required", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/callForwarding/actions/switchMode/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue switch-mode-forward", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/callForwarding/actions/switchMode/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-queue update", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue update", - "variant": "required", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue update", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-queue update-agent-settings-one-more-customer-assist", - "variant": "all-flags", - "args": [ - "--has-cx-essentials=s-has-cx-essentials", - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/queues/agents/s-id/settings?hasCxEssentials=s-has-cx-essentials&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue update-agent-settings-one-more-customer-assist", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/queues/agents/s-id/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue update-agent-settings-one-more-customer-assist", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/queues/agents/s-id/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-queue update-forced-forward-service", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/forcedForward?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue update-forced-forward-service", - "variant": "required", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/forcedForward?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue update-forced-forward-service", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/forcedForward?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-queue update-forward", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/callForwarding?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue update-forward", - "variant": "required", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/callForwarding?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue update-forward", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/callForwarding?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-queue update-holiday-service", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/holidayService?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue update-holiday-service", - "variant": "required", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/holidayService?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue update-holiday-service", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/holidayService?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-queue update-night-service", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/nightService?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue update-night-service", - "variant": "required", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/nightService?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue update-night-service", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/nightService?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-queue update-selective-forward-rule", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id", - "--rule-id=s-rule-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/callForwarding/selectiveRules/s-rule-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue update-selective-forward-rule", - "variant": "required", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id", - "--rule-id=s-rule-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/callForwarding/selectiveRules/s-rule-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue update-selective-forward-rule", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id", - "--rule-id=s-rule-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/callForwarding/selectiveRules/s-rule-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-queue update-stranded-service", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/strandedCalls?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue update-stranded-service", - "variant": "required", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/strandedCalls?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-queue update-stranded-service", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/strandedCalls?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-recording get", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/callRecording?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-recording get", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/callRecording?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-recording get", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/callRecording?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-recording get-job-errors-job", - "variant": "all-flags", - "args": [ - "--job-id=s-job-id", - "--max=s-max" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/callRecording/s-job-id/errors?max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-recording get-job-errors-job", - "variant": "required", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/callRecording/s-job-id/errors?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-recording get-job-errors-job", - "variant": "paginate", - "args": [ - "--job-id=s-job-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/callRecording/s-job-id/errors?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-recording get-job-status-job", - "variant": "all-flags", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/callRecording/s-job-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-recording get-job-status-job", - "variant": "required", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/callRecording/s-job-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-recording get-job-status-job", - "variant": "paginate", - "args": [ - "--job-id=s-job-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/callRecording/s-job-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-recording get-location-compliance-announcement", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callRecording/complianceAnnouncement?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-recording get-location-compliance-announcement", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callRecording/complianceAnnouncement?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-recording get-location-compliance-announcement", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callRecording/complianceAnnouncement?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-recording get-location-vendors", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callRecording/vendors?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-recording get-location-vendors", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callRecording/vendors?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-recording get-location-vendors", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callRecording/vendors?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-recording get-org-compliance-announcement", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/callRecording/complianceAnnouncement?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-recording get-org-compliance-announcement", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/callRecording/complianceAnnouncement?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-recording get-org-compliance-announcement", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/callRecording/complianceAnnouncement?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-recording get-org-vendors", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/callRecording/vendors?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-recording get-org-vendors", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/callRecording/vendors?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-recording get-org-vendors", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/callRecording/vendors?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-recording get-regions", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/callRecording/regions?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-recording get-regions", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/callRecording/regions?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-recording get-regions", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/callRecording/regions?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-recording get-terms-settings", - "variant": "all-flags", - "args": [ - "--vendor-id=s-vendor-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/callRecording/vendors/s-vendor-id/termsOfService?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-recording get-terms-settings", - "variant": "required", - "args": [ - "--vendor-id=s-vendor-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/callRecording/vendors/s-vendor-id/termsOfService?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-recording get-terms-settings", - "variant": "paginate", - "args": [ - "--vendor-id=s-vendor-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/callRecording/vendors/s-vendor-id/termsOfService?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-recording get-vendor-users", - "variant": "all-flags", - "args": [ - "--max=s-max", - "--standard-user-only=s-standard-user-only", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/callRecording/vendorUsers?max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&standardUserOnly=s-standard-user-only&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-recording get-vendor-users", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/callRecording/vendorUsers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-recording get-vendor-users", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/callRecording/vendorUsers?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-recording get-vendor-users-location", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--max=s-max", - "--standard-user-only=s-standard-user-only", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callRecording/vendorUsers?max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&standardUserOnly=s-standard-user-only&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-recording get-vendor-users-location", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callRecording/vendorUsers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-recording get-vendor-users-location", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callRecording/vendorUsers?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-recording list-jobs", - "variant": "all-flags", - "args": [ - "--max=s-max", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/callRecording?max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-recording list-jobs", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/callRecording?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-recording list-jobs", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/callRecording?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-recording update", - "variant": "all-flags", - "args": [ - "--enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/callRecording?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"enabled\":true}" - } - ] - }, - { - "command": "calling call-recording update", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/callRecording?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-recording update", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/callRecording?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-recording update-location-compliance-announcement", - "variant": "all-flags", - "args": [ - "--delay-in-seconds=7", - "--inbound-pstncalls-enabled=true", - "--location-id=s-location-id", - "--outbound-pstncalls-delay-enabled=true", - "--outbound-pstncalls-enabled=true", - "--use-org-settings-enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callRecording/complianceAnnouncement?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"delayInSeconds\":7,\"inboundPSTNCallsEnabled\":true,\"outboundPSTNCallsDelayEnabled\":true,\"outboundPSTNCallsEnabled\":true,\"useOrgSettingsEnabled\":true}" - } - ] - }, - { - "command": "calling call-recording update-location-compliance-announcement", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callRecording/complianceAnnouncement?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-recording update-location-compliance-announcement", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callRecording/complianceAnnouncement?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-recording update-org-compliance-announcement", - "variant": "all-flags", - "args": [ - "--delay-in-seconds=7", - "--inbound-pstncalls-enabled=true", - "--outbound-pstncalls-delay-enabled=true", - "--outbound-pstncalls-enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/callRecording/complianceAnnouncement?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"delayInSeconds\":7,\"inboundPSTNCallsEnabled\":true,\"outboundPSTNCallsDelayEnabled\":true,\"outboundPSTNCallsEnabled\":true}" - } - ] - }, - { - "command": "calling call-recording update-org-compliance-announcement", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/callRecording/complianceAnnouncement?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-recording update-org-compliance-announcement", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/callRecording/complianceAnnouncement?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-recording update-org-vendor", - "variant": "all-flags", - "args": [ - "--failure-behavior=s-failure-behavior", - "--storage-region=s-storage-region", - "--vendor-id=s-vendor-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/callRecording/vendor?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"failureBehavior\":\"s-failure-behavior\",\"storageRegion\":\"s-storage-region\",\"vendorId\":\"s-vendor-id\"}" - } - ] - }, - { - "command": "calling call-recording update-org-vendor", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/callRecording/vendor?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-recording update-org-vendor", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/callRecording/vendor?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-recording update-terms-settings", - "variant": "all-flags", - "args": [ - "--terms-of-service-enabled=true", - "--vendor-id=s-vendor-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/callRecording/vendors/s-vendor-id/termsOfService?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"termsOfServiceEnabled\":true}" - } - ] - }, - { - "command": "calling call-recording update-terms-settings", - "variant": "required", - "args": [ - "--vendor-id=s-vendor-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/callRecording/vendors/s-vendor-id/termsOfService?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-recording update-terms-settings", - "variant": "body", - "args": [ - "--vendor-id=s-vendor-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/callRecording/vendors/s-vendor-id/termsOfService?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-recording update-vendor-location", - "variant": "all-flags", - "args": [ - "--failure-behavior=s-failure-behavior", - "--id=s-id", - "--location-id=s-location-id", - "--org-default-enabled=true", - "--org-failure-behavior-enabled=true", - "--org-storage-region-enabled=true", - "--storage-region=s-storage-region" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callRecording/vendor?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"failureBehavior\":\"s-failure-behavior\",\"id\":\"s-id\",\"orgDefaultEnabled\":true,\"orgFailureBehaviorEnabled\":true,\"orgStorageRegionEnabled\":true,\"storageRegion\":\"s-storage-region\"}" - } - ] - }, - { - "command": "calling call-recording update-vendor-location", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callRecording/vendor?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-recording update-vendor-location", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callRecording/vendor?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-routing create-dial-plan", - "variant": "all-flags", - "args": [ - "--dial-patterns=s-dial-patterns-1,s-dial-patterns-2", - "--name=s-name", - "--route-id=s-route-id", - "--route-type=s-route-type" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/dialPlans?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"dialPatterns\":[\"s-dial-patterns-1\",\"s-dial-patterns-2\"],\"name\":\"s-name\",\"routeId\":\"s-route-id\",\"routeType\":\"s-route-type\"}" - } - ] - }, - { - "command": "calling call-routing create-dial-plan", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/dialPlans?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing create-dial-plan", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/dialPlans?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-routing create-route-group", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/routeGroups?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing create-route-group", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/routeGroups?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing create-route-group", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/routeGroups?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-routing create-route-list", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--name=s-name", - "--route-group-id=s-route-group-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/routeLists?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"locationId\":\"s-location-id\",\"name\":\"s-name\",\"routeGroupId\":\"s-route-group-id\"}" - } - ] - }, - { - "command": "calling call-routing create-route-list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/routeLists?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing create-route-list", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/routeLists?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-routing create-translation-pattern", - "variant": "all-flags", - "args": [ - "--matching-pattern=s-matching-pattern", - "--name=s-name", - "--replacement-pattern=s-replacement-pattern" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/callRouting/translationPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"matchingPattern\":\"s-matching-pattern\",\"name\":\"s-name\",\"replacementPattern\":\"s-replacement-pattern\"}" - } - ] - }, - { - "command": "calling call-routing create-translation-pattern", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/callRouting/translationPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing create-translation-pattern", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/callRouting/translationPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-routing create-translation-pattern-location", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--matching-pattern=s-matching-pattern", - "--name=s-name", - "--replacement-pattern=s-replacement-pattern" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callRouting/translationPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"matchingPattern\":\"s-matching-pattern\",\"name\":\"s-name\",\"replacementPattern\":\"s-replacement-pattern\"}" - } - ] - }, - { - "command": "calling call-routing create-translation-pattern-location", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callRouting/translationPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing create-translation-pattern-location", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callRouting/translationPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-routing create-trunk", - "variant": "all-flags", - "args": [ - "--address=s-address", - "--device-type=s-device-type", - "--domain=s-domain", - "--dual-identity-support-enabled=true", - "--location-id=s-location-id", - "--max-concurrent-calls=7", - "--name=s-name", - "--p-charge-info-support-policy=s-p-charge-info-support-policy", - "--password=s-password", - "--port=7", - "--trunk-type=s-trunk-type" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/trunks?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"address\":\"s-address\",\"deviceType\":\"s-device-type\",\"domain\":\"s-domain\",\"dualIdentitySupportEnabled\":true,\"locationId\":\"s-location-id\",\"maxConcurrentCalls\":7,\"name\":\"s-name\",\"pChargeInfoSupportPolicy\":\"s-p-charge-info-support-policy\",\"password\":\"s-password\",\"port\":7,\"trunkType\":\"s-trunk-type\"}" - } - ] - }, - { - "command": "calling call-routing create-trunk", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/trunks?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing create-trunk", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/trunks?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-routing delete-dial-plan", - "variant": "all-flags", - "args": [ - "--dial-plan-id=s-dial-plan-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/dialPlans/s-dial-plan-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing delete-dial-plan", - "variant": "required", - "args": [ - "--dial-plan-id=s-dial-plan-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/dialPlans/s-dial-plan-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing delete-route-group-org", - "variant": "all-flags", - "args": [ - "--route-group-id=s-route-group-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/routeGroups/s-route-group-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing delete-route-group-org", - "variant": "required", - "args": [ - "--route-group-id=s-route-group-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/routeGroups/s-route-group-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing delete-route-list", - "variant": "all-flags", - "args": [ - "--route-list-id=s-route-list-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/routeLists/s-route-list-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing delete-route-list", - "variant": "required", - "args": [ - "--route-list-id=s-route-list-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/routeLists/s-route-list-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing delete-translation-pattern", - "variant": "all-flags", - "args": [ - "--translation-id=s-translation-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/callRouting/translationPatterns/s-translation-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing delete-translation-pattern", - "variant": "required", - "args": [ - "--translation-id=s-translation-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/callRouting/translationPatterns/s-translation-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing delete-translation-pattern-location", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--translation-id=s-translation-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callRouting/translationPatterns/s-translation-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing delete-translation-pattern-location", - "variant": "required", - "args": [ - "--location-id=s-location-id", - "--translation-id=s-translation-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callRouting/translationPatterns/s-translation-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing delete-trunk", - "variant": "all-flags", - "args": [ - "--trunk-id=s-trunk-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/trunks/s-trunk-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing delete-trunk", - "variant": "required", - "args": [ - "--trunk-id=s-trunk-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/trunks/s-trunk-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing get-dial-plan", - "variant": "all-flags", - "args": [ - "--dial-plan-id=s-dial-plan-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/dialPlans/s-dial-plan-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing get-dial-plan", - "variant": "required", - "args": [ - "--dial-plan-id=s-dial-plan-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/dialPlans/s-dial-plan-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing get-dial-plan", - "variant": "paginate", - "args": [ - "--dial-plan-id=s-dial-plan-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/dialPlans/s-dial-plan-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing get-dial-plan-locations-group", - "variant": "all-flags", - "args": [ - "--location-name=s-location-name", - "--max=s-max", - "--order=s-order", - "--route-group-id=s-route-group-id", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/routeGroups/s-route-group-id/usageDialPlan?locationName=s-location-name&max=s-max&order=s-order&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing get-dial-plan-locations-group", - "variant": "required", - "args": [ - "--route-group-id=s-route-group-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/routeGroups/s-route-group-id/usageDialPlan?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing get-dial-plan-locations-group", - "variant": "paginate", - "args": [ - "--route-group-id=s-route-group-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/routeGroups/s-route-group-id/usageDialPlan?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing get-extension-locations-group", - "variant": "all-flags", - "args": [ - "--location-name=s-location-name", - "--max=s-max", - "--order=s-order", - "--route-group-id=s-route-group-id", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/routeGroups/s-route-group-id/usageCallToExtension?locationName=s-location-name&max=s-max&order=s-order&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing get-extension-locations-group", - "variant": "required", - "args": [ - "--route-group-id=s-route-group-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/routeGroups/s-route-group-id/usageCallToExtension?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing get-extension-locations-group", - "variant": "paginate", - "args": [ - "--route-group-id=s-route-group-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/routeGroups/s-route-group-id/usageCallToExtension?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing get-lgw-dial-plan-usage-trunk", - "variant": "all-flags", - "args": [ - "--max=s-max", - "--name=s-name", - "--order=s-order", - "--start=s-start", - "--trunk-id=s-trunk-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/trunks/s-trunk-id/usageDialPlan?max=s-max&name=s-name&order=s-order&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing get-lgw-dial-plan-usage-trunk", - "variant": "required", - "args": [ - "--trunk-id=s-trunk-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/trunks/s-trunk-id/usageDialPlan?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing get-lgw-dial-plan-usage-trunk", - "variant": "paginate", - "args": [ - "--trunk-id=s-trunk-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/trunks/s-trunk-id/usageDialPlan?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing get-lgw-on-premises-extension-usage-trunk", - "variant": "all-flags", - "args": [ - "--max=s-max", - "--name=s-name", - "--order=s-order", - "--start=s-start", - "--trunk-id=s-trunk-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/trunks/s-trunk-id/usageCallToExtension?max=s-max&name=s-name&order=s-order&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing get-lgw-on-premises-extension-usage-trunk", - "variant": "required", - "args": [ - "--trunk-id=s-trunk-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/trunks/s-trunk-id/usageCallToExtension?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing get-lgw-on-premises-extension-usage-trunk", - "variant": "paginate", - "args": [ - "--trunk-id=s-trunk-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/trunks/s-trunk-id/usageCallToExtension?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing get-lgw-usage-count", - "variant": "all-flags", - "args": [ - "--trunk-id=s-trunk-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/trunks/s-trunk-id/usage?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing get-lgw-usage-count", - "variant": "required", - "args": [ - "--trunk-id=s-trunk-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/trunks/s-trunk-id/usage?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing get-lgw-usage-count", - "variant": "paginate", - "args": [ - "--trunk-id=s-trunk-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/trunks/s-trunk-id/usage?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing get-locations-lgw-pstn-connection", - "variant": "all-flags", - "args": [ - "--trunk-id=s-trunk-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/trunks/s-trunk-id/usagePstnConnection?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing get-locations-lgw-pstn-connection", - "variant": "required", - "args": [ - "--trunk-id=s-trunk-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/trunks/s-trunk-id/usagePstnConnection?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing get-locations-lgw-pstn-connection", - "variant": "paginate", - "args": [ - "--trunk-id=s-trunk-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/trunks/s-trunk-id/usagePstnConnection?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing get-numbers-assigned-route-list", - "variant": "all-flags", - "args": [ - "--max=s-max", - "--number=s-number", - "--order=s-order", - "--route-list-id=s-route-list-id", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/routeLists/s-route-list-id/numbers?max=s-max&number=s-number&order=s-order&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing get-numbers-assigned-route-list", - "variant": "required", - "args": [ - "--route-list-id=s-route-list-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/routeLists/s-route-list-id/numbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing get-numbers-assigned-route-list", - "variant": "paginate", - "args": [ - "--route-list-id=s-route-list-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/routeLists/s-route-list-id/numbers?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing get-pstn-connection-locations-group", - "variant": "all-flags", - "args": [ - "--location-name=s-location-name", - "--max=s-max", - "--order=s-order", - "--route-group-id=s-route-group-id", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/routeGroups/s-route-group-id/usagePstnConnection?locationName=s-location-name&max=s-max&order=s-order&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing get-pstn-connection-locations-group", - "variant": "required", - "args": [ - "--route-group-id=s-route-group-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/routeGroups/s-route-group-id/usagePstnConnection?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing get-pstn-connection-locations-group", - "variant": "paginate", - "args": [ - "--route-group-id=s-route-group-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/routeGroups/s-route-group-id/usagePstnConnection?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing get-route-group", - "variant": "all-flags", - "args": [ - "--route-group-id=s-route-group-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/routeGroups/s-route-group-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing get-route-group", - "variant": "required", - "args": [ - "--route-group-id=s-route-group-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/routeGroups/s-route-group-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing get-route-group", - "variant": "paginate", - "args": [ - "--route-group-id=s-route-group-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/routeGroups/s-route-group-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing get-route-groups-lgw", - "variant": "all-flags", - "args": [ - "--trunk-id=s-trunk-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/trunks/s-trunk-id/usageRouteGroup?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing get-route-groups-lgw", - "variant": "required", - "args": [ - "--trunk-id=s-trunk-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/trunks/s-trunk-id/usageRouteGroup?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing get-route-groups-lgw", - "variant": "paginate", - "args": [ - "--trunk-id=s-trunk-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/trunks/s-trunk-id/usageRouteGroup?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing get-route-list", - "variant": "all-flags", - "args": [ - "--route-list-id=s-route-list-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/routeLists/s-route-list-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing get-route-list", - "variant": "required", - "args": [ - "--route-list-id=s-route-list-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/routeLists/s-route-list-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing get-route-list", - "variant": "paginate", - "args": [ - "--route-list-id=s-route-list-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/routeLists/s-route-list-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing get-route-lists-group", - "variant": "all-flags", - "args": [ - "--max=s-max", - "--name=s-name", - "--order=s-order", - "--route-group-id=s-route-group-id", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/routeGroups/s-route-group-id/usageRouteList?max=s-max&name=s-name&order=s-order&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing get-route-lists-group", - "variant": "required", - "args": [ - "--route-group-id=s-route-group-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/routeGroups/s-route-group-id/usageRouteList?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing get-route-lists-group", - "variant": "paginate", - "args": [ - "--route-group-id=s-route-group-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/routeGroups/s-route-group-id/usageRouteList?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing get-translation-pattern", - "variant": "all-flags", - "args": [ - "--translation-id=s-translation-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/callRouting/translationPatterns/s-translation-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing get-translation-pattern", - "variant": "required", - "args": [ - "--translation-id=s-translation-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/callRouting/translationPatterns/s-translation-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing get-translation-pattern", - "variant": "paginate", - "args": [ - "--translation-id=s-translation-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/callRouting/translationPatterns/s-translation-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing get-translation-pattern-location", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--translation-id=s-translation-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callRouting/translationPatterns/s-translation-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing get-translation-pattern-location", - "variant": "required", - "args": [ - "--location-id=s-location-id", - "--translation-id=s-translation-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callRouting/translationPatterns/s-translation-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing get-translation-pattern-location", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--translation-id=s-translation-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callRouting/translationPatterns/s-translation-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing get-trunk", - "variant": "all-flags", - "args": [ - "--trunk-id=s-trunk-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/trunks/s-trunk-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing get-trunk", - "variant": "required", - "args": [ - "--trunk-id=s-trunk-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/trunks/s-trunk-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing get-trunk", - "variant": "paginate", - "args": [ - "--trunk-id=s-trunk-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/trunks/s-trunk-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing get-usage-group", - "variant": "all-flags", - "args": [ - "--route-group-id=s-route-group-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/routeGroups/s-route-group-id/usage?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing get-usage-group", - "variant": "required", - "args": [ - "--route-group-id=s-route-group-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/routeGroups/s-route-group-id/usage?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing get-usage-group", - "variant": "paginate", - "args": [ - "--route-group-id=s-route-group-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/routeGroups/s-route-group-id/usage?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing list-dial-plans", - "variant": "all-flags", - "args": [ - "--dial-plan-name=s-dial-plan-name", - "--max=s-max", - "--order=s-order", - "--route-group-name=s-route-group-name", - "--start=s-start", - "--trunk-name=s-trunk-name" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/dialPlans?dialPlanName=s-dial-plan-name&max=s-max&order=s-order&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&routeGroupName=s-route-group-name&start=s-start&trunkName=s-trunk-name", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing list-dial-plans", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/dialPlans?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing list-dial-plans", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/dialPlans?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing list-groups", - "variant": "all-flags", - "args": [ - "--max=s-max", - "--name=s-name", - "--order=s-order", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/routeGroups?max=s-max&name=s-name&order=s-order&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing list-groups", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/routeGroups?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing list-groups", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/routeGroups?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing list-route-lists", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--max=s-max", - "--name=s-name", - "--order=s-order", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/routeLists?locationId=s-location-id&max=s-max&name=s-name&order=s-order&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing list-route-lists", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/routeLists?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing list-route-lists", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/routeLists?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing list-translation-patterns", - "variant": "all-flags", - "args": [ - "--limit-to-location-id=s-limit-to-location-id", - "--limit-to-org-level-enabled=s-limit-to-org-level-enabled", - "--matching-pattern=s-matching-pattern", - "--max=s-max", - "--name=s-name", - "--order=s-order", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/callRouting/translationPatterns?limitToLocationId=s-limit-to-location-id&limitToOrgLevelEnabled=s-limit-to-org-level-enabled&matchingPattern=s-matching-pattern&max=s-max&name=s-name&order=s-order&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing list-translation-patterns", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/callRouting/translationPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing list-translation-patterns", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/callRouting/translationPatterns?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing list-trunk-types", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/trunks/trunkTypes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing list-trunk-types", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/trunks/trunkTypes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing list-trunk-types", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/trunks/trunkTypes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing list-trunks", - "variant": "all-flags", - "args": [ - "--location-name=s-location-name", - "--max=s-max", - "--name=s-name", - "--order=s-order", - "--start=s-start", - "--trunk-type=s-trunk-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/trunks?locationName=s-location-name&max=s-max&name=s-name&order=s-order&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=s-start&trunkType=s-trunk-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing list-trunks", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/trunks?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing list-trunks", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/trunks?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing test", - "variant": "all-flags", - "args": [ - "--destination=s-destination", - "--include-applied-services=true", - "--originator-id=s-originator-id", - "--originator-number=s-originator-number", - "--originator-type=s-originator-type" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/actions/testCallRouting/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"destination\":\"s-destination\",\"includeAppliedServices\":true,\"originatorId\":\"s-originator-id\",\"originatorNumber\":\"s-originator-number\",\"originatorType\":\"s-originator-type\"}" - } - ] - }, - { - "command": "calling call-routing test", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/actions/testCallRouting/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing test", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/actions/testCallRouting/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-routing update-dial-patterns", - "variant": "all-flags", - "args": [ - "--dial-plan-id=s-dial-plan-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/dialPlans/s-dial-plan-id/dialPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing update-dial-patterns", - "variant": "required", - "args": [ - "--dial-plan-id=s-dial-plan-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/dialPlans/s-dial-plan-id/dialPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing update-dial-patterns", - "variant": "body", - "args": [ - "--dial-plan-id=s-dial-plan-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/dialPlans/s-dial-plan-id/dialPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-routing update-dial-plan", - "variant": "all-flags", - "args": [ - "--dial-plan-id=s-dial-plan-id", - "--name=s-name", - "--route-id=s-route-id", - "--route-type=s-route-type" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/dialPlans/s-dial-plan-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"name\":\"s-name\",\"routeId\":\"s-route-id\",\"routeType\":\"s-route-type\"}" - } - ] - }, - { - "command": "calling call-routing update-dial-plan", - "variant": "required", - "args": [ - "--dial-plan-id=s-dial-plan-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/dialPlans/s-dial-plan-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing update-dial-plan", - "variant": "body", - "args": [ - "--dial-plan-id=s-dial-plan-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/dialPlans/s-dial-plan-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-routing update-numbers-route-list", - "variant": "all-flags", - "args": [ - "--route-list-id=s-route-list-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/routeLists/s-route-list-id/numbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing update-numbers-route-list", - "variant": "required", - "args": [ - "--route-list-id=s-route-list-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/routeLists/s-route-list-id/numbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing update-numbers-route-list", - "variant": "body", - "args": [ - "--route-list-id=s-route-list-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/routeLists/s-route-list-id/numbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-routing update-route-group", - "variant": "all-flags", - "args": [ - "--route-group-id=s-route-group-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/routeGroups/s-route-group-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing update-route-group", - "variant": "required", - "args": [ - "--route-group-id=s-route-group-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/routeGroups/s-route-group-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing update-route-group", - "variant": "body", - "args": [ - "--route-group-id=s-route-group-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/routeGroups/s-route-group-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-routing update-route-list", - "variant": "all-flags", - "args": [ - "--name=s-name", - "--route-group-id=s-route-group-id", - "--route-list-id=s-route-list-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/routeLists/s-route-list-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"name\":\"s-name\",\"routeGroupId\":\"s-route-group-id\"}" - } - ] - }, - { - "command": "calling call-routing update-route-list", - "variant": "required", - "args": [ - "--route-list-id=s-route-list-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/routeLists/s-route-list-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing update-route-list", - "variant": "body", - "args": [ - "--route-list-id=s-route-list-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/routeLists/s-route-list-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-routing update-translation-pattern", - "variant": "all-flags", - "args": [ - "--matching-pattern=s-matching-pattern", - "--name=s-name", - "--replacement-pattern=s-replacement-pattern", - "--translation-id=s-translation-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/callRouting/translationPatterns/s-translation-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"matchingPattern\":\"s-matching-pattern\",\"name\":\"s-name\",\"replacementPattern\":\"s-replacement-pattern\"}" - } - ] - }, - { - "command": "calling call-routing update-translation-pattern", - "variant": "required", - "args": [ - "--translation-id=s-translation-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/callRouting/translationPatterns/s-translation-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing update-translation-pattern", - "variant": "body", - "args": [ - "--translation-id=s-translation-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/callRouting/translationPatterns/s-translation-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-routing update-translation-pattern-location", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--matching-pattern=s-matching-pattern", - "--name=s-name", - "--replacement-pattern=s-replacement-pattern", - "--translation-id=s-translation-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callRouting/translationPatterns/s-translation-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"matchingPattern\":\"s-matching-pattern\",\"name\":\"s-name\",\"replacementPattern\":\"s-replacement-pattern\"}" - } - ] - }, - { - "command": "calling call-routing update-translation-pattern-location", - "variant": "required", - "args": [ - "--location-id=s-location-id", - "--translation-id=s-translation-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callRouting/translationPatterns/s-translation-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing update-translation-pattern-location", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--translation-id=s-translation-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callRouting/translationPatterns/s-translation-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-routing update-trunk", - "variant": "all-flags", - "args": [ - "--dual-identity-support-enabled=true", - "--max-concurrent-calls=7", - "--name=s-name", - "--p-charge-info-support-policy=s-p-charge-info-support-policy", - "--password=s-password", - "--trunk-id=s-trunk-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/trunks/s-trunk-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"dualIdentitySupportEnabled\":true,\"maxConcurrentCalls\":7,\"name\":\"s-name\",\"pChargeInfoSupportPolicy\":\"s-p-charge-info-support-policy\",\"password\":\"s-password\"}" - } - ] - }, - { - "command": "calling call-routing update-trunk", - "variant": "required", - "args": [ - "--trunk-id=s-trunk-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/trunks/s-trunk-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing update-trunk", - "variant": "body", - "args": [ - "--trunk-id=s-trunk-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/trunks/s-trunk-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-routing validate-dial-pattern", - "variant": "all-flags", - "args": [ - "--dial-patterns=s-dial-patterns-1,s-dial-patterns-2" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/actions/validateDialPatterns/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"dialPatterns\":[\"s-dial-patterns-1\",\"s-dial-patterns-2\"]}" - } - ] - }, - { - "command": "calling call-routing validate-dial-pattern", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/actions/validateDialPatterns/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing validate-dial-pattern", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/actions/validateDialPatterns/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-routing validate-lgw-fqdn-domain-trunk", - "variant": "all-flags", - "args": [ - "--address=s-address", - "--domain=s-domain", - "--port=7" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/trunks/actions/fqdnValidation/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"address\":\"s-address\",\"domain\":\"s-domain\",\"port\":7}" - } - ] - }, - { - "command": "calling call-routing validate-lgw-fqdn-domain-trunk", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/trunks/actions/fqdnValidation/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-routing validate-lgw-fqdn-domain-trunk", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/trunks/actions/fqdnValidation/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me create-event-user-schedule", - "variant": "all-flags", - "args": [ - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/schedules/s-schedule-type/s-schedule-id/events", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me create-event-user-schedule", - "variant": "required", - "args": [ - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/schedules/s-schedule-type/s-schedule-id/events", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me create-event-user-schedule", - "variant": "body", - "args": [ - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/schedules/s-schedule-type/s-schedule-id/events", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me create-event-user-schedule-2", - "variant": "all-flags", - "args": [ - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/schedules/s-schedule-type/s-schedule-id/events", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me create-event-user-schedule-2", - "variant": "required", - "args": [ - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/schedules/s-schedule-type/s-schedule-id/events", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me create-event-user-schedule-2", - "variant": "body", - "args": [ - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/schedules/s-schedule-type/s-schedule-id/events", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me create-my-simultaneous-ring", - "variant": "all-flags", - "args": [ - "--anonymous-callers-enabled=true", - "--calls-from=s-calls-from", - "--phone-numbers=s-phone-numbers-1,s-phone-numbers-2", - "--ring-enabled=true", - "--schedule-level=s-schedule-level", - "--schedule-name=s-schedule-name", - "--schedule-type=s-schedule-type", - "--unavailable-callers-enabled=true" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/simultaneousRing/criteria", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"anonymousCallersEnabled\":true,\"callsFrom\":\"s-calls-from\",\"phoneNumbers\":[\"s-phone-numbers-1\",\"s-phone-numbers-2\"],\"ringEnabled\":true,\"scheduleLevel\":\"s-schedule-level\",\"scheduleName\":\"s-schedule-name\",\"scheduleType\":\"s-schedule-type\",\"unavailableCallersEnabled\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me create-my-simultaneous-ring", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/simultaneousRing/criteria", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me create-my-simultaneous-ring", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/simultaneousRing/criteria", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me create-notify", - "variant": "all-flags", - "args": [ - "--anonymous-callers-enabled=true", - "--calls-from=s-calls-from", - "--notification-enabled=true", - "--phone-numbers=s-phone-numbers-1,s-phone-numbers-2", - "--schedule-level=s-schedule-level", - "--schedule-name=s-schedule-name", - "--schedule-type=s-schedule-type", - "--unavailable-callers-enabled=true" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callNotify/criteria", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"anonymousCallersEnabled\":true,\"callsFrom\":\"s-calls-from\",\"notificationEnabled\":true,\"phoneNumbers\":[\"s-phone-numbers-1\",\"s-phone-numbers-2\"],\"scheduleLevel\":\"s-schedule-level\",\"scheduleName\":\"s-schedule-name\",\"scheduleType\":\"s-schedule-type\",\"unavailableCallersEnabled\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me create-notify", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callNotify/criteria", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me create-notify", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callNotify/criteria", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me create-notify-2", - "variant": "all-flags", - "args": [ - "--anonymous-callers-enabled=true", - "--calls-from=s-calls-from", - "--notification-enabled=true", - "--phone-numbers=s-phone-numbers-1,s-phone-numbers-2", - "--schedule-level=s-schedule-level", - "--schedule-name=s-schedule-name", - "--schedule-type=s-schedule-type", - "--unavailable-callers-enabled=true" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callNotify/criteria", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"anonymousCallersEnabled\":true,\"callsFrom\":\"s-calls-from\",\"notificationEnabled\":true,\"phoneNumbers\":[\"s-phone-numbers-1\",\"s-phone-numbers-2\"],\"scheduleLevel\":\"s-schedule-level\",\"scheduleName\":\"s-schedule-name\",\"scheduleType\":\"s-schedule-type\",\"unavailableCallersEnabled\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me create-notify-2", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callNotify/criteria", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me create-notify-2", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callNotify/criteria", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me create-phone-number-user-block-list", - "variant": "all-flags", - "args": [ - "--phone-number=s-phone-number" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callBlock/numbers", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"phoneNumber\":\"s-phone-number\"}" - } - ] - }, - { - "command": "calling call-settings-for-me create-phone-number-user-block-list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callBlock/numbers", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me create-phone-number-user-block-list", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callBlock/numbers", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me create-phone-number-user-single-number-reach", - "variant": "all-flags", - "args": [ - "--answer-confirmation-enabled=true", - "--do-not-forward-calls-enabled=true", - "--enabled=true", - "--name=s-name", - "--phone-number=s-phone-number" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/singleNumberReach/numbers", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"answerConfirmationEnabled\":true,\"doNotForwardCallsEnabled\":true,\"enabled\":true,\"name\":\"s-name\",\"phoneNumber\":\"s-phone-number\"}" - } - ] - }, - { - "command": "calling call-settings-for-me create-phone-number-user-single-number-reach", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/singleNumberReach/numbers", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me create-phone-number-user-single-number-reach", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/singleNumberReach/numbers", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me create-priority-alert", - "variant": "all-flags", - "args": [ - "--anonymous-callers-enabled=true", - "--calls-from=s-calls-from", - "--notification-enabled=true", - "--phone-numbers=s-phone-numbers-1,s-phone-numbers-2", - "--schedule-level=s-schedule-level", - "--schedule-name=s-schedule-name", - "--schedule-type=s-schedule-type", - "--unavailable-callers-enabled=true" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/priorityAlert/criteria", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"anonymousCallersEnabled\":true,\"callsFrom\":\"s-calls-from\",\"notificationEnabled\":true,\"phoneNumbers\":[\"s-phone-numbers-1\",\"s-phone-numbers-2\"],\"scheduleLevel\":\"s-schedule-level\",\"scheduleName\":\"s-schedule-name\",\"scheduleType\":\"s-schedule-type\",\"unavailableCallersEnabled\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me create-priority-alert", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/priorityAlert/criteria", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me create-priority-alert", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/priorityAlert/criteria", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me create-priority-alert-2", - "variant": "all-flags", - "args": [ - "--anonymous-callers-enabled=true", - "--calls-from=s-calls-from", - "--notification-enabled=true", - "--phone-numbers=s-phone-numbers-1,s-phone-numbers-2", - "--schedule-level=s-schedule-level", - "--schedule-name=s-schedule-name", - "--schedule-type=s-schedule-type", - "--unavailable-callers-enabled=true" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/priorityAlert/criteria", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"anonymousCallersEnabled\":true,\"callsFrom\":\"s-calls-from\",\"notificationEnabled\":true,\"phoneNumbers\":[\"s-phone-numbers-1\",\"s-phone-numbers-2\"],\"scheduleLevel\":\"s-schedule-level\",\"scheduleName\":\"s-schedule-name\",\"scheduleType\":\"s-schedule-type\",\"unavailableCallersEnabled\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me create-priority-alert-2", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/priorityAlert/criteria", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me create-priority-alert-2", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/priorityAlert/criteria", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me create-selective-forward", - "variant": "all-flags", - "args": [ - "--anonymous-callers-enabled=true", - "--calls-from=s-calls-from", - "--destination-voicemail-enabled=true", - "--forward-enabled=true", - "--forward-to-phone-number=s-forward-to-phone-number", - "--phone-numbers=s-phone-numbers-1,s-phone-numbers-2", - "--schedule-level=s-schedule-level", - "--schedule-name=s-schedule-name", - "--schedule-type=s-schedule-type", - "--unavailable-callers-enabled=true" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveForward/criteria", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"anonymousCallersEnabled\":true,\"callsFrom\":\"s-calls-from\",\"destinationVoicemailEnabled\":true,\"forwardEnabled\":true,\"forwardToPhoneNumber\":\"s-forward-to-phone-number\",\"phoneNumbers\":[\"s-phone-numbers-1\",\"s-phone-numbers-2\"],\"scheduleLevel\":\"s-schedule-level\",\"scheduleName\":\"s-schedule-name\",\"scheduleType\":\"s-schedule-type\",\"unavailableCallersEnabled\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me create-selective-forward", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveForward/criteria", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me create-selective-forward", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveForward/criteria", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me create-selective-forward-2", - "variant": "all-flags", - "args": [ - "--anonymous-callers-enabled=true", - "--calls-from=s-calls-from", - "--destination-voicemail-enabled=true", - "--forward-enabled=true", - "--forward-to-phone-number=s-forward-to-phone-number", - "--phone-numbers=s-phone-numbers-1,s-phone-numbers-2", - "--schedule-level=s-schedule-level", - "--schedule-name=s-schedule-name", - "--schedule-type=s-schedule-type", - "--unavailable-callers-enabled=true" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveForward/criteria", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"anonymousCallersEnabled\":true,\"callsFrom\":\"s-calls-from\",\"destinationVoicemailEnabled\":true,\"forwardEnabled\":true,\"forwardToPhoneNumber\":\"s-forward-to-phone-number\",\"phoneNumbers\":[\"s-phone-numbers-1\",\"s-phone-numbers-2\"],\"scheduleLevel\":\"s-schedule-level\",\"scheduleName\":\"s-schedule-name\",\"scheduleType\":\"s-schedule-type\",\"unavailableCallersEnabled\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me create-selective-forward-2", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveForward/criteria", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me create-selective-forward-2", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveForward/criteria", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me create-user-executive-filtering", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/executive/callFiltering/criteria", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me create-user-executive-filtering", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/executive/callFiltering/criteria", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me create-user-executive-filtering", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/executive/callFiltering/criteria", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me create-user-schedule", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/schedules", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me create-user-schedule", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/schedules", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me create-user-schedule", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/schedules", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me create-user-schedule-2", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/schedules", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me create-user-schedule-2", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/schedules", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me create-user-schedule-2", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/schedules", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me create-user-selective-accept", - "variant": "all-flags", - "args": [ - "--accept-enabled=true", - "--anonymous-callers-enabled=true", - "--calls-from=s-calls-from", - "--phone-numbers=s-phone-numbers-1,s-phone-numbers-2", - "--schedule-level=s-schedule-level", - "--schedule-name=s-schedule-name", - "--schedule-type=s-schedule-type", - "--unavailable-callers-enabled=true" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveAccept/criteria", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"acceptEnabled\":true,\"anonymousCallersEnabled\":true,\"callsFrom\":\"s-calls-from\",\"phoneNumbers\":[\"s-phone-numbers-1\",\"s-phone-numbers-2\"],\"scheduleLevel\":\"s-schedule-level\",\"scheduleName\":\"s-schedule-name\",\"scheduleType\":\"s-schedule-type\",\"unavailableCallersEnabled\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me create-user-selective-accept", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveAccept/criteria", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me create-user-selective-accept", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveAccept/criteria", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me create-user-selective-accept-2", - "variant": "all-flags", - "args": [ - "--accept-enabled=true", - "--anonymous-callers-enabled=true", - "--calls-from=s-calls-from", - "--phone-numbers=s-phone-numbers-1,s-phone-numbers-2", - "--schedule-level=s-schedule-level", - "--schedule-name=s-schedule-name", - "--schedule-type=s-schedule-type", - "--unavailable-callers-enabled=true" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveAccept/criteria", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"acceptEnabled\":true,\"anonymousCallersEnabled\":true,\"callsFrom\":\"s-calls-from\",\"phoneNumbers\":[\"s-phone-numbers-1\",\"s-phone-numbers-2\"],\"scheduleLevel\":\"s-schedule-level\",\"scheduleName\":\"s-schedule-name\",\"scheduleType\":\"s-schedule-type\",\"unavailableCallersEnabled\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me create-user-selective-accept-2", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveAccept/criteria", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me create-user-selective-accept-2", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveAccept/criteria", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me create-user-selective-reject", - "variant": "all-flags", - "args": [ - "--anonymous-callers-enabled=true", - "--calls-from=s-calls-from", - "--phone-numbers=s-phone-numbers-1,s-phone-numbers-2", - "--reject-enabled=true", - "--schedule-level=s-schedule-level", - "--schedule-name=s-schedule-name", - "--schedule-type=s-schedule-type", - "--unavailable-callers-enabled=true" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveReject/criteria", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"anonymousCallersEnabled\":true,\"callsFrom\":\"s-calls-from\",\"phoneNumbers\":[\"s-phone-numbers-1\",\"s-phone-numbers-2\"],\"rejectEnabled\":true,\"scheduleLevel\":\"s-schedule-level\",\"scheduleName\":\"s-schedule-name\",\"scheduleType\":\"s-schedule-type\",\"unavailableCallersEnabled\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me create-user-selective-reject", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveReject/criteria", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me create-user-selective-reject", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveReject/criteria", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me create-user-selective-reject-2", - "variant": "all-flags", - "args": [ - "--anonymous-callers-enabled=true", - "--calls-from=s-calls-from", - "--phone-numbers=s-phone-numbers-1,s-phone-numbers-2", - "--reject-enabled=true", - "--schedule-level=s-schedule-level", - "--schedule-name=s-schedule-name", - "--schedule-type=s-schedule-type", - "--unavailable-callers-enabled=true" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveReject/criteria", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"anonymousCallersEnabled\":true,\"callsFrom\":\"s-calls-from\",\"phoneNumbers\":[\"s-phone-numbers-1\",\"s-phone-numbers-2\"],\"rejectEnabled\":true,\"scheduleLevel\":\"s-schedule-level\",\"scheduleName\":\"s-schedule-name\",\"scheduleType\":\"s-schedule-type\",\"unavailableCallersEnabled\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me create-user-selective-reject-2", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveReject/criteria", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me create-user-selective-reject-2", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveReject/criteria", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me create-user-sequential-ring", - "variant": "all-flags", - "args": [ - "--anonymous-callers-enabled=true", - "--calls-from=s-calls-from", - "--phone-numbers=s-phone-numbers-1,s-phone-numbers-2", - "--ring-enabled=true", - "--schedule-level=s-schedule-level", - "--schedule-name=s-schedule-name", - "--schedule-type=s-schedule-type", - "--unavailable-callers-enabled=true" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/sequentialRing/criteria", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"anonymousCallersEnabled\":true,\"callsFrom\":\"s-calls-from\",\"phoneNumbers\":[\"s-phone-numbers-1\",\"s-phone-numbers-2\"],\"ringEnabled\":true,\"scheduleLevel\":\"s-schedule-level\",\"scheduleName\":\"s-schedule-name\",\"scheduleType\":\"s-schedule-type\",\"unavailableCallersEnabled\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me create-user-sequential-ring", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/sequentialRing/criteria", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me create-user-sequential-ring", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/sequentialRing/criteria", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me create-user-sequential-ring-2", - "variant": "all-flags", - "args": [ - "--anonymous-callers-enabled=true", - "--calls-from=s-calls-from", - "--phone-numbers=s-phone-numbers-1,s-phone-numbers-2", - "--ring-enabled=true", - "--schedule-level=s-schedule-level", - "--schedule-name=s-schedule-name", - "--schedule-type=s-schedule-type", - "--unavailable-callers-enabled=true" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/sequentialRing/criteria", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"anonymousCallersEnabled\":true,\"callsFrom\":\"s-calls-from\",\"phoneNumbers\":[\"s-phone-numbers-1\",\"s-phone-numbers-2\"],\"ringEnabled\":true,\"scheduleLevel\":\"s-schedule-level\",\"scheduleName\":\"s-schedule-name\",\"scheduleType\":\"s-schedule-type\",\"unavailableCallersEnabled\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me create-user-sequential-ring-2", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/sequentialRing/criteria", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me create-user-sequential-ring-2", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/sequentialRing/criteria", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me delete-my-simultaneous-ring", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/simultaneousRing/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me delete-my-simultaneous-ring", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/simultaneousRing/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me delete-notify", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callNotify/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me delete-notify", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callNotify/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me delete-notify-2", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callNotify/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me delete-notify-2", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callNotify/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me delete-priority-alert", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/priorityAlert/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me delete-priority-alert", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/priorityAlert/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me delete-priority-alert-2", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/priorityAlert/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me delete-priority-alert-2", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/priorityAlert/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me delete-selective-accept", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveAccept/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me delete-selective-accept", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveAccept/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me delete-selective-accept-2", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveAccept/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me delete-selective-accept-2", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveAccept/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me delete-selective-forward", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveForward/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me delete-selective-forward", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveForward/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me delete-selective-forward-2", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveForward/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me delete-selective-forward-2", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveForward/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me delete-selective-reject", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveReject/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me delete-selective-reject", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveReject/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me delete-selective-reject-2", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveReject/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me delete-selective-reject-2", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveReject/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me delete-sequential-ring", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/sequentialRing/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me delete-sequential-ring", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/sequentialRing/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me delete-sequential-ring-2", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/sequentialRing/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me delete-sequential-ring-2", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/sequentialRing/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me delete-user-block-number", - "variant": "all-flags", - "args": [ - "--phone-number-id=s-phone-number-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callBlock/numbers/s-phone-number-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me delete-user-block-number", - "variant": "required", - "args": [ - "--phone-number-id=s-phone-number-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callBlock/numbers/s-phone-number-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me delete-user-executive-filtering", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/executive/callFiltering/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me delete-user-executive-filtering", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/executive/callFiltering/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me delete-user-schedule", - "variant": "all-flags", - "args": [ - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/me/schedules/s-schedule-type/s-schedule-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me delete-user-schedule", - "variant": "required", - "args": [ - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/me/schedules/s-schedule-type/s-schedule-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me delete-user-schedule-2", - "variant": "all-flags", - "args": [ - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/me/schedules/s-schedule-type/s-schedule-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me delete-user-schedule-2", - "variant": "required", - "args": [ - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/me/schedules/s-schedule-type/s-schedule-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me delete-user-schedule-event", - "variant": "all-flags", - "args": [ - "--event-id=s-event-id", - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/me/schedules/s-schedule-type/s-schedule-id/events/s-event-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me delete-user-schedule-event", - "variant": "required", - "args": [ - "--event-id=s-event-id", - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/me/schedules/s-schedule-type/s-schedule-id/events/s-event-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me delete-user-schedule-event-2", - "variant": "all-flags", - "args": [ - "--event-id=s-event-id", - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/me/schedules/s-schedule-type/s-schedule-id/events/s-event-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me delete-user-schedule-event-2", - "variant": "required", - "args": [ - "--event-id=s-event-id", - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/me/schedules/s-schedule-type/s-schedule-id/events/s-event-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me delete-user-single-number-reach-contact", - "variant": "all-flags", - "args": [ - "--phone-number-id=s-phone-number-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/singleNumberReach/numbers/s-phone-number-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me delete-user-single-number-reach-contact", - "variant": "required", - "args": [ - "--phone-number-id=s-phone-number-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/singleNumberReach/numbers/s-phone-number-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-announcement-languages-authenticated-user", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/announcementLanguages", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-announcement-languages-authenticated-user", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/announcementLanguages", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-announcement-languages-authenticated-user", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/announcementLanguages", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-anonymous-rejection-user", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/anonymousCallReject", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-anonymous-rejection-user", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/anonymousCallReject", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-anonymous-rejection-user", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/anonymousCallReject", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-anonymous-rejection-user-2", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/anonymousCallReject", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-anonymous-rejection-user-2", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/anonymousCallReject", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-anonymous-rejection-user-2", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/anonymousCallReject", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-available-hoteling-hosts", - "variant": "all-flags", - "args": [ - "--max=s-max", - "--name=s-name", - "--phone-number=s-phone-number", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/hoteling/availableHosts?max=s-max&name=s-name&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-available-hoteling-hosts", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/hoteling/availableHosts", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-available-hoteling-hosts", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/hoteling/availableHosts?max=100&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-available-numbers-user-location", - "variant": "all-flags", - "args": [ - "--extension=s-extension", - "--max=s-max", - "--name=s-name", - "--order=s-order", - "--phone-number=s-phone-number", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/location/assignedNumbers?extension=s-extension&max=s-max&name=s-name&order=s-order&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-available-numbers-user-location", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/location/assignedNumbers", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-available-numbers-user-location", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/location/assignedNumbers?max=100&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-available-numbers-user-location-2", - "variant": "all-flags", - "args": [ - "--extension=s-extension", - "--max=s-max", - "--name=s-name", - "--order=s-order", - "--phone-number=s-phone-number", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/location/assignedNumbers?extension=s-extension&max=s-max&name=s-name&order=s-order&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-available-numbers-user-location-2", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/location/assignedNumbers", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-available-numbers-user-location-2", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/location/assignedNumbers?max=100&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-barge-in", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/bargeIn", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-barge-in", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/bargeIn", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-barge-in", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/bargeIn", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-country-specific-telephony-configuration-requirements", - "variant": "all-flags", - "args": [ - "--country-code=s-country-code" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/countries/s-country-code", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-country-specific-telephony-configuration-requirements", - "variant": "required", - "args": [ - "--country-code=s-country-code" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/countries/s-country-code", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-country-specific-telephony-configuration-requirements", - "variant": "paginate", - "args": [ - "--country-code=s-country-code", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/countries/s-country-code", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-do-not-disturb-user", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/doNotDisturb", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-do-not-disturb-user", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/doNotDisturb", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-do-not-disturb-user", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/doNotDisturb", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-hoteling-guest", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/hoteling/guest", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-hoteling-guest", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/hoteling/guest", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-hoteling-guest", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/hoteling/guest", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-access-codes", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/featureAccessCode", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-access-codes", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/featureAccessCode", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-access-codes", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/featureAccessCode", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-access-codes-secondary-owner", - "variant": "all-flags", - "args": [ - "--lineowner-id=s-lineowner-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-lineowner-id/featureAccessCode", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-access-codes-secondary-owner", - "variant": "required", - "args": [ - "--lineowner-id=s-lineowner-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-lineowner-id/featureAccessCode", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-access-codes-secondary-owner", - "variant": "paginate", - "args": [ - "--lineowner-id=s-lineowner-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-lineowner-id/featureAccessCode", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-available-caller-id-list", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/availableCallerIds", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-available-caller-id-list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/availableCallerIds", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-available-caller-id-list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/availableCallerIds", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-block", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callBlock", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-block", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callBlock", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-block", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callBlock", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-block-state-number", - "variant": "all-flags", - "args": [ - "--phone-number-id=s-phone-number-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callBlock/numbers/s-phone-number-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-block-state-number", - "variant": "required", - "args": [ - "--phone-number-id=s-phone-number-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callBlock/numbers/s-phone-number-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-block-state-number", - "variant": "paginate", - "args": [ - "--phone-number-id=s-phone-number-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callBlock/numbers/s-phone-number-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-caller-id", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callerId", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-caller-id", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callerId", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-caller-id", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callerId", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-calling-services", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/services", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-calling-services", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/services", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-calling-services", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/services", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-captions", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callCaptions", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-captions", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callCaptions", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-captions", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callCaptions", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-center", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/queues", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-center", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/queues", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-center", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/queues", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-endpoints", - "variant": "all-flags", - "args": [ - "--endpoint-id=s-endpoint-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/endpoints/s-endpoint-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-endpoints", - "variant": "required", - "args": [ - "--endpoint-id=s-endpoint-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/endpoints/s-endpoint-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-endpoints", - "variant": "paginate", - "args": [ - "--endpoint-id=s-endpoint-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/endpoints/s-endpoint-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-executive-assigned-assistants", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/executive/assignedAssistants", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-executive-assigned-assistants", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/executive/assignedAssistants", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-executive-assigned-assistants", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/executive/assignedAssistants", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-executive-assistant", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/executive/assistant", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-executive-assistant", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/executive/assistant", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-executive-assistant", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/executive/assistant", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-executive-available-assistants", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/executive/availableAssistants", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-executive-available-assistants", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/executive/availableAssistants", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-executive-available-assistants", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/executive/availableAssistants", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-forward", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callForwarding", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-forward", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callForwarding", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-forward", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callForwarding", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-guest-calling-numbers", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/guestCalling/numbers", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-guest-calling-numbers", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/guestCalling/numbers", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-guest-calling-numbers", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/guestCalling/numbers", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-monitoring", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/monitoring", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-monitoring", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/monitoring", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-monitoring", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/monitoring", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-own", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-own", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-own", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-park", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callPark", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-park", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callPark", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-park", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callPark", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-personal-assistant", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/personalAssistant", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-personal-assistant", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/personalAssistant", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-personal-assistant", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/personalAssistant", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-pickup-group", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callPickupGroup", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-pickup-group", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callPickupGroup", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-pickup-group", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callPickupGroup", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-recording", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callRecording", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-recording", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callRecording", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-recording", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callRecording", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-secondary-owner-available-caller-id-list", - "variant": "all-flags", - "args": [ - "--lineowner-id=s-lineowner-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-lineowner-id/availableCallerIds", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-secondary-owner-available-caller-id-list", - "variant": "required", - "args": [ - "--lineowner-id=s-lineowner-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-lineowner-id/availableCallerIds", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-secondary-owner-available-caller-id-list", - "variant": "paginate", - "args": [ - "--lineowner-id=s-lineowner-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-lineowner-id/availableCallerIds", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-secondary-owner-available-preferred-endpoint-list", - "variant": "all-flags", - "args": [ - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-line-owner-id/availablePreferredAnswerEndpoints", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-secondary-owner-available-preferred-endpoint-list", - "variant": "required", - "args": [ - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-line-owner-id/availablePreferredAnswerEndpoints", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-secondary-owner-available-preferred-endpoint-list", - "variant": "paginate", - "args": [ - "--line-owner-id=s-line-owner-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-line-owner-id/availablePreferredAnswerEndpoints", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-secondary-owner-caller-id", - "variant": "all-flags", - "args": [ - "--lineowner-id=s-lineowner-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-lineowner-id/callerId", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-secondary-owner-caller-id", - "variant": "required", - "args": [ - "--lineowner-id=s-lineowner-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-lineowner-id/callerId", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-secondary-owner-caller-id", - "variant": "paginate", - "args": [ - "--lineowner-id=s-lineowner-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-lineowner-id/callerId", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-secondary-owner-calling-services", - "variant": "all-flags", - "args": [ - "--lineowner-id=s-lineowner-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-lineowner-id/services", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-secondary-owner-calling-services", - "variant": "required", - "args": [ - "--lineowner-id=s-lineowner-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-lineowner-id/services", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-secondary-owner-calling-services", - "variant": "paginate", - "args": [ - "--lineowner-id=s-lineowner-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-lineowner-id/services", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-secondary-owner-center", - "variant": "all-flags", - "args": [ - "--lineowner-id=s-lineowner-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-lineowner-id/queues", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-secondary-owner-center", - "variant": "required", - "args": [ - "--lineowner-id=s-lineowner-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-lineowner-id/queues", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-secondary-owner-center", - "variant": "paginate", - "args": [ - "--lineowner-id=s-lineowner-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-lineowner-id/queues", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-secondary-owner-forward", - "variant": "all-flags", - "args": [ - "--lineowner-id=s-lineowner-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-lineowner-id/callForwarding", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-secondary-owner-forward", - "variant": "required", - "args": [ - "--lineowner-id=s-lineowner-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-lineowner-id/callForwarding", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-secondary-owner-forward", - "variant": "paginate", - "args": [ - "--lineowner-id=s-lineowner-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-lineowner-id/callForwarding", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-secondary-owner-park", - "variant": "all-flags", - "args": [ - "--lineowner-id=s-lineowner-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-lineowner-id/callPark", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-secondary-owner-park", - "variant": "required", - "args": [ - "--lineowner-id=s-lineowner-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-lineowner-id/callPark", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-secondary-owner-park", - "variant": "paginate", - "args": [ - "--lineowner-id=s-lineowner-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-lineowner-id/callPark", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-secondary-owner-pickup-group", - "variant": "all-flags", - "args": [ - "--lineowner-id=s-lineowner-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-lineowner-id/callPickupGroup", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-secondary-owner-pickup-group", - "variant": "required", - "args": [ - "--lineowner-id=s-lineowner-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-lineowner-id/callPickupGroup", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-secondary-owner-pickup-group", - "variant": "paginate", - "args": [ - "--lineowner-id=s-lineowner-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-lineowner-id/callPickupGroup", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-secondary-owner-preferred-endpoint", - "variant": "all-flags", - "args": [ - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-line-owner-id/preferredAnswerEndpoint", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-secondary-owner-preferred-endpoint", - "variant": "required", - "args": [ - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-line-owner-id/preferredAnswerEndpoint", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-secondary-owner-preferred-endpoint", - "variant": "paginate", - "args": [ - "--line-owner-id=s-line-owner-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-line-owner-id/preferredAnswerEndpoint", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-secondary-owner-recording", - "variant": "all-flags", - "args": [ - "--lineowner-id=s-lineowner-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-lineowner-id/callRecording", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-secondary-owner-recording", - "variant": "required", - "args": [ - "--lineowner-id=s-lineowner-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-lineowner-id/callRecording", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-secondary-owner-recording", - "variant": "paginate", - "args": [ - "--lineowner-id=s-lineowner-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-lineowner-id/callRecording", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-secondary-owner-selected-caller-id", - "variant": "all-flags", - "args": [ - "--lineowner-id=s-lineowner-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-lineowner-id/selectedCallerId", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-secondary-owner-selected-caller-id", - "variant": "required", - "args": [ - "--lineowner-id=s-lineowner-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-lineowner-id/selectedCallerId", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-secondary-owner-selected-caller-id", - "variant": "paginate", - "args": [ - "--lineowner-id=s-lineowner-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-lineowner-id/selectedCallerId", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-secondary-owner-voicemail", - "variant": "all-flags", - "args": [ - "--lineowner-id=s-lineowner-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-lineowner-id/voicemail", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-secondary-owner-voicemail", - "variant": "required", - "args": [ - "--lineowner-id=s-lineowner-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-lineowner-id/voicemail", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-secondary-owner-voicemail", - "variant": "paginate", - "args": [ - "--lineowner-id=s-lineowner-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-lineowner-id/voicemail", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-selected-caller-id", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectedCallerId", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-selected-caller-id", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectedCallerId", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-selected-caller-id", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectedCallerId", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-simultaneous-ring", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/simultaneousRing", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-simultaneous-ring", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/simultaneousRing", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-simultaneous-ring", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/simultaneousRing", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-simultaneous-ring-2", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/simultaneousRing/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-simultaneous-ring-2", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/simultaneousRing/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-simultaneous-ring-2", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/simultaneousRing/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-webexgooverride", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/webexGoOverride", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-webexgooverride", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/webexGoOverride", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-my-webexgooverride", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/webexGoOverride", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-notify", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callNotify/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-notify", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callNotify/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-notify", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callNotify/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-notify-2", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callNotify/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-notify-2", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callNotify/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-notify-2", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callNotify/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-notify-user", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callNotify", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-notify-user", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callNotify", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-notify-user", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callNotify", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-notify-user-2", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callNotify", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-notify-user-2", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callNotify", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-notify-user-2", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callNotify", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-person-voicemail-rules", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/voicemail/rules", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-person-voicemail-rules", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/voicemail/rules", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-person-voicemail-rules", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/voicemail/rules", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-personal-assistant", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/personalAssistant", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-personal-assistant", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/personalAssistant", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-personal-assistant", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/personalAssistant", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-policies-user", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callPolicies", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-policies-user", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callPolicies", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-policies-user", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callPolicies", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-preferred-endpoint", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/preferredAnswerEndpoint", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-preferred-endpoint", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/preferredAnswerEndpoint", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-preferred-endpoint", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/preferredAnswerEndpoint", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-priority-alert", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/priorityAlert", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-priority-alert", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/priorityAlert", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-priority-alert", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/priorityAlert", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-priority-alert-2", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/priorityAlert/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-priority-alert-2", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/priorityAlert/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-priority-alert-2", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/priorityAlert/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-priority-alert-2", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/priorityAlert/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-priority-alert-2", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/priorityAlert/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-priority-alert-2", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/priorityAlert/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-priority-alert-2-2", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/priorityAlert/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-priority-alert-2-2", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/priorityAlert/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-priority-alert-2-2", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/priorityAlert/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-selective-accept-user", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveAccept", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-selective-accept-user", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveAccept", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-selective-accept-user", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveAccept", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-selective-accept-user-2", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveAccept/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-selective-accept-user-2", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveAccept/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-selective-accept-user-2", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveAccept/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-selective-accept-user-2", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveAccept/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-selective-accept-user-2", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveAccept/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-selective-accept-user-2", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveAccept/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-selective-accept-user-2-2", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveAccept/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-selective-accept-user-2-2", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveAccept/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-selective-accept-user-2-2", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveAccept/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-selective-forward", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveForward/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-selective-forward", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveForward/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-selective-forward", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveForward/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-selective-forward-2", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveForward/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-selective-forward-2", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveForward/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-selective-forward-2", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveForward/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-selective-forward-user", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveForward", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-selective-forward-user", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveForward", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-selective-forward-user", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveForward", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-selective-forward-user-2", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveForward", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-selective-forward-user-2", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveForward", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-selective-forward-user-2", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveForward", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-selective-reject-user", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveReject", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-selective-reject-user", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveReject", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-selective-reject-user", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveReject", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-selective-reject-user-2", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveReject/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-selective-reject-user-2", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveReject/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-selective-reject-user-2", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveReject/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-selective-reject-user-2", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveReject/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-selective-reject-user-2", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveReject/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-selective-reject-user-2", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveReject/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-selective-reject-user-2-2", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveReject/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-selective-reject-user-2-2", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveReject/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-selective-reject-user-2-2", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveReject/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-sequential-ring-user", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/sequentialRing", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-sequential-ring-user", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/sequentialRing", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-sequential-ring-user", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/sequentialRing", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-sequential-ring-user-2", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/sequentialRing/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-sequential-ring-user-2", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/sequentialRing/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-sequential-ring-user-2", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/sequentialRing/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-sequential-ring-user-2", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/sequentialRing/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-sequential-ring-user-2", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/sequentialRing/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-sequential-ring-user-2", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/sequentialRing/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-sequential-ring-user-2-2", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/sequentialRing/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-sequential-ring-user-2-2", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/sequentialRing/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-sequential-ring-user-2-2", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/sequentialRing/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-user-executive-alert", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/executive/alert", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-user-executive-alert", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/executive/alert", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-user-executive-alert", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/executive/alert", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-user-executive-filtering", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/executive/callFiltering", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-user-executive-filtering", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/executive/callFiltering", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-user-executive-filtering", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/executive/callFiltering", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-user-executive-filtering-2", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/executive/callFiltering/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-user-executive-filtering-2", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/executive/callFiltering/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-user-executive-filtering-2", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/executive/callFiltering/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-user-executive-screening", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/executive/screening", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-user-executive-screening", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/executive/screening", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-user-executive-screening", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/executive/screening", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-user-location-schedule", - "variant": "all-flags", - "args": [ - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/locations/schedules/s-schedule-type/s-schedule-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-user-location-schedule", - "variant": "required", - "args": [ - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/locations/schedules/s-schedule-type/s-schedule-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-user-location-schedule", - "variant": "paginate", - "args": [ - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/locations/schedules/s-schedule-type/s-schedule-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-user-location-schedule-2", - "variant": "all-flags", - "args": [ - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/locations/schedules/s-schedule-type/s-schedule-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-user-location-schedule-2", - "variant": "required", - "args": [ - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/locations/schedules/s-schedule-type/s-schedule-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-user-location-schedule-2", - "variant": "paginate", - "args": [ - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/locations/schedules/s-schedule-type/s-schedule-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-user-schedule", - "variant": "all-flags", - "args": [ - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/schedules/s-schedule-type/s-schedule-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-user-schedule", - "variant": "required", - "args": [ - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/schedules/s-schedule-type/s-schedule-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-user-schedule", - "variant": "paginate", - "args": [ - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/schedules/s-schedule-type/s-schedule-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-user-schedule-2", - "variant": "all-flags", - "args": [ - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/schedules/s-schedule-type/s-schedule-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-user-schedule-2", - "variant": "required", - "args": [ - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/schedules/s-schedule-type/s-schedule-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-user-schedule-2", - "variant": "paginate", - "args": [ - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/schedules/s-schedule-type/s-schedule-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-user-schedule-event", - "variant": "all-flags", - "args": [ - "--event-id=s-event-id", - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/schedules/s-schedule-type/s-schedule-id/events/s-event-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-user-schedule-event", - "variant": "required", - "args": [ - "--event-id=s-event-id", - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/schedules/s-schedule-type/s-schedule-id/events/s-event-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-user-schedule-event", - "variant": "paginate", - "args": [ - "--event-id=s-event-id", - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/schedules/s-schedule-type/s-schedule-id/events/s-event-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-user-schedule-event-2", - "variant": "all-flags", - "args": [ - "--event-id=s-event-id", - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/schedules/s-schedule-type/s-schedule-id/events/s-event-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-user-schedule-event-2", - "variant": "required", - "args": [ - "--event-id=s-event-id", - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/schedules/s-schedule-type/s-schedule-id/events/s-event-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-user-schedule-event-2", - "variant": "paginate", - "args": [ - "--event-id=s-event-id", - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/schedules/s-schedule-type/s-schedule-id/events/s-event-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-user-schedules", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/schedules", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-user-schedules", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/schedules", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-user-schedules", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/schedules", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-user-schedules-2", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/schedules", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-user-schedules-2", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/schedules", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-user-schedules-2", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/schedules", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-user-single-number-reach", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/singleNumberReach", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-user-single-number-reach", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/singleNumberReach", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-user-single-number-reach", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/singleNumberReach", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-voicemail-person", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/voicemail", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-voicemail-person", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/voicemail", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-voicemail-person", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/voicemail", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-waiting-user", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callWaiting", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-waiting-user", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callWaiting", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-waiting-user", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callWaiting", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-waiting-user-2", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callWaiting", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-waiting-user-2", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callWaiting", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me get-waiting-user-2", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callWaiting", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me list-available-preferred-endpoints", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/availablePreferredAnswerEndpoints", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me list-available-preferred-endpoints", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/availablePreferredAnswerEndpoints", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me list-available-preferred-endpoints", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/availablePreferredAnswerEndpoints", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me list-my-endpoints", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/endpoints", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me list-my-endpoints", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/endpoints", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me list-my-endpoints", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/endpoints", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-anonymous-rejection-user", - "variant": "all-flags", - "args": [ - "--enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/anonymousCallReject", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"enabled\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-anonymous-rejection-user", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/anonymousCallReject", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-anonymous-rejection-user", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/anonymousCallReject", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-anonymous-rejection-user-2", - "variant": "all-flags", - "args": [ - "--enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/anonymousCallReject", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"enabled\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-anonymous-rejection-user-2", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/anonymousCallReject", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-anonymous-rejection-user-2", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/anonymousCallReject", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-barge-in", - "variant": "all-flags", - "args": [ - "--enabled=true", - "--tone-enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/bargeIn", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"enabled\":true,\"toneEnabled\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-barge-in", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/bargeIn", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-barge-in", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/bargeIn", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-do-not-disturb-user", - "variant": "all-flags", - "args": [ - "--enabled=true", - "--ring-splash-enabled=true", - "--webex-go-override-enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/doNotDisturb", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"enabled\":true,\"ringSplashEnabled\":true,\"webexGoOverrideEnabled\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-do-not-disturb-user", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/doNotDisturb", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-do-not-disturb-user", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/doNotDisturb", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-hoteling-guest", - "variant": "all-flags", - "args": [ - "--association-limit-enabled=true", - "--association-limit-hours=7", - "--enabled=true", - "--host-id=s-host-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/hoteling/guest", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"associationLimitEnabled\":true,\"associationLimitHours\":7,\"enabled\":true,\"hostId\":\"s-host-id\"}" - } - ] - }, - { - "command": "calling call-settings-for-me update-hoteling-guest", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/hoteling/guest", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-hoteling-guest", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/hoteling/guest", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-my-caller-id", - "variant": "all-flags", - "args": [ - "--calling-line-id-delivery-blocking-enabled=true", - "--connected-line-identification-restriction-enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callerId", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"callingLineIdDeliveryBlockingEnabled\":true,\"connectedLineIdentificationRestrictionEnabled\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-my-caller-id", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callerId", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-my-caller-id", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callerId", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-my-center", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/queues", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-my-center", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/queues", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-my-center", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/queues", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-my-endpoints", - "variant": "all-flags", - "args": [ - "--endpoint-id=s-endpoint-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/endpoints/s-endpoint-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-my-endpoints", - "variant": "required", - "args": [ - "--endpoint-id=s-endpoint-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/endpoints/s-endpoint-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-my-endpoints", - "variant": "body", - "args": [ - "--endpoint-id=s-endpoint-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/endpoints/s-endpoint-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-my-executive-assigned-assistants", - "variant": "all-flags", - "args": [ - "--allow-opt-in-out-enabled=true", - "--assistant-ids=s-assistant-ids-1,s-assistant-ids-2" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/executive/assignedAssistants", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"allowOptInOutEnabled\":true,\"assistantIds\":[\"s-assistant-ids-1\",\"s-assistant-ids-2\"]}" - } - ] - }, - { - "command": "calling call-settings-for-me update-my-executive-assigned-assistants", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/executive/assignedAssistants", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-my-executive-assigned-assistants", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/executive/assignedAssistants", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-my-executive-assistant", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/executive/assistant", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-my-executive-assistant", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/executive/assistant", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-my-executive-assistant", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/executive/assistant", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-my-forward", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callForwarding", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-my-forward", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callForwarding", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-my-forward", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callForwarding", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-my-personal-assistant", - "variant": "all-flags", - "args": [ - "--alert-me-first-number-of-rings=7", - "--alerting=s-alerting", - "--enabled=true", - "--presence=s-presence", - "--transfer-enabled=true", - "--transfer-number=s-transfer-number", - "--until-date-time=s-until-date-time" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/personalAssistant", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"alertMeFirstNumberOfRings\":7,\"alerting\":\"s-alerting\",\"enabled\":true,\"presence\":\"s-presence\",\"transferEnabled\":true,\"transferNumber\":\"s-transfer-number\",\"untilDateTime\":\"s-until-date-time\"}" - } - ] - }, - { - "command": "calling call-settings-for-me update-my-personal-assistant", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/personalAssistant", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-my-personal-assistant", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/personalAssistant", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-my-secondary-owner-caller-id", - "variant": "all-flags", - "args": [ - "--calling-line-id-delivery-blocking-enabled=true", - "--connected-line-identification-restriction-enabled=true", - "--lineowner-id=s-lineowner-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-lineowner-id/callerId", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"callingLineIdDeliveryBlockingEnabled\":true,\"connectedLineIdentificationRestrictionEnabled\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-my-secondary-owner-caller-id", - "variant": "required", - "args": [ - "--lineowner-id=s-lineowner-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-lineowner-id/callerId", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-my-secondary-owner-caller-id", - "variant": "body", - "args": [ - "--lineowner-id=s-lineowner-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-lineowner-id/callerId", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-my-secondary-owner-center", - "variant": "all-flags", - "args": [ - "--lineowner-id=s-lineowner-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-lineowner-id/queues", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-my-secondary-owner-center", - "variant": "required", - "args": [ - "--lineowner-id=s-lineowner-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-lineowner-id/queues", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-my-secondary-owner-center", - "variant": "body", - "args": [ - "--lineowner-id=s-lineowner-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-lineowner-id/queues", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-my-secondary-owner-forward", - "variant": "all-flags", - "args": [ - "--lineowner-id=s-lineowner-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-lineowner-id/callForwarding", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-my-secondary-owner-forward", - "variant": "required", - "args": [ - "--lineowner-id=s-lineowner-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-lineowner-id/callForwarding", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-my-secondary-owner-forward", - "variant": "body", - "args": [ - "--lineowner-id=s-lineowner-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-lineowner-id/callForwarding", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-my-secondary-owner-preferred-endpoint", - "variant": "all-flags", - "args": [ - "--line-owner-id=s-line-owner-id", - "--preferred-answer-endpoint-id=s-preferred-answer-endpoint-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-line-owner-id/preferredAnswerEndpoint", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"preferredAnswerEndpointId\":\"s-preferred-answer-endpoint-id\"}" - } - ] - }, - { - "command": "calling call-settings-for-me update-my-secondary-owner-preferred-endpoint", - "variant": "required", - "args": [ - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-line-owner-id/preferredAnswerEndpoint", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-my-secondary-owner-preferred-endpoint", - "variant": "body", - "args": [ - "--line-owner-id=s-line-owner-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-line-owner-id/preferredAnswerEndpoint", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-my-secondary-owner-selected-caller-id", - "variant": "all-flags", - "args": [ - "--lineowner-id=s-lineowner-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-lineowner-id/selectedCallerId", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-my-secondary-owner-selected-caller-id", - "variant": "required", - "args": [ - "--lineowner-id=s-lineowner-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-lineowner-id/selectedCallerId", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-my-secondary-owner-selected-caller-id", - "variant": "body", - "args": [ - "--lineowner-id=s-lineowner-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-lineowner-id/selectedCallerId", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-my-secondary-owner-voicemail", - "variant": "all-flags", - "args": [ - "--lineowner-id=s-lineowner-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-lineowner-id/voicemail", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-my-secondary-owner-voicemail", - "variant": "required", - "args": [ - "--lineowner-id=s-lineowner-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-lineowner-id/voicemail", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-my-secondary-owner-voicemail", - "variant": "body", - "args": [ - "--lineowner-id=s-lineowner-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/s-lineowner-id/voicemail", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-my-selected-caller-id", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectedCallerId", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-my-selected-caller-id", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectedCallerId", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-my-selected-caller-id", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectedCallerId", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-my-simultaneous-ring", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/simultaneousRing", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-my-simultaneous-ring", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/simultaneousRing", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-my-simultaneous-ring", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/simultaneousRing", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-my-simultaneous-ring-2", - "variant": "all-flags", - "args": [ - "--anonymous-callers-enabled=true", - "--calls-from=s-calls-from", - "--id=s-id", - "--phone-numbers=s-phone-numbers-1,s-phone-numbers-2", - "--ring-enabled=true", - "--schedule-level=s-schedule-level", - "--schedule-name=s-schedule-name", - "--schedule-type=s-schedule-type", - "--unavailable-callers-enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/simultaneousRing/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"anonymousCallersEnabled\":true,\"callsFrom\":\"s-calls-from\",\"phoneNumbers\":[\"s-phone-numbers-1\",\"s-phone-numbers-2\"],\"ringEnabled\":true,\"scheduleLevel\":\"s-schedule-level\",\"scheduleName\":\"s-schedule-name\",\"scheduleType\":\"s-schedule-type\",\"unavailableCallersEnabled\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-my-simultaneous-ring-2", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/simultaneousRing/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-my-simultaneous-ring-2", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/simultaneousRing/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-my-webexgooverride", - "variant": "all-flags", - "args": [ - "--enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/webexGoOverride", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"enabled\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-my-webexgooverride", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/webexGoOverride", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-my-webexgooverride", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/webexGoOverride", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-notify", - "variant": "all-flags", - "args": [ - "--anonymous-callers-enabled=true", - "--calls-from=s-calls-from", - "--id=s-id", - "--notification-enabled=true", - "--phone-numbers=s-phone-numbers-1,s-phone-numbers-2", - "--schedule-level=s-schedule-level", - "--schedule-name=s-schedule-name", - "--schedule-type=s-schedule-type", - "--unavailable-callers-enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callNotify/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"anonymousCallersEnabled\":true,\"callsFrom\":\"s-calls-from\",\"notificationEnabled\":true,\"phoneNumbers\":[\"s-phone-numbers-1\",\"s-phone-numbers-2\"],\"scheduleLevel\":\"s-schedule-level\",\"scheduleName\":\"s-schedule-name\",\"scheduleType\":\"s-schedule-type\",\"unavailableCallersEnabled\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-notify", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callNotify/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-notify", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callNotify/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-notify-2", - "variant": "all-flags", - "args": [ - "--anonymous-callers-enabled=true", - "--calls-from=s-calls-from", - "--id=s-id", - "--notification-enabled=true", - "--phone-numbers=s-phone-numbers-1,s-phone-numbers-2", - "--schedule-level=s-schedule-level", - "--schedule-name=s-schedule-name", - "--schedule-type=s-schedule-type", - "--unavailable-callers-enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callNotify/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"anonymousCallersEnabled\":true,\"callsFrom\":\"s-calls-from\",\"notificationEnabled\":true,\"phoneNumbers\":[\"s-phone-numbers-1\",\"s-phone-numbers-2\"],\"scheduleLevel\":\"s-schedule-level\",\"scheduleName\":\"s-schedule-name\",\"scheduleType\":\"s-schedule-type\",\"unavailableCallersEnabled\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-notify-2", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callNotify/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-notify-2", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callNotify/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-notify-user", - "variant": "all-flags", - "args": [ - "--email-address=s-email-address", - "--enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callNotify", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"emailAddress\":\"s-email-address\",\"enabled\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-notify-user", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callNotify", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-notify-user", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callNotify", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-notify-user-2", - "variant": "all-flags", - "args": [ - "--email-address=s-email-address", - "--enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callNotify", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"emailAddress\":\"s-email-address\",\"enabled\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-notify-user-2", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callNotify", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-notify-user-2", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callNotify", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-personal-assistant", - "variant": "all-flags", - "args": [ - "--alert-me-first-number-of-rings=7", - "--alerting=s-alerting", - "--enabled=true", - "--presence=s-presence", - "--transfer-enabled=true", - "--transfer-number=s-transfer-number", - "--until-date-time=s-until-date-time" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/personalAssistant", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"alertMeFirstNumberOfRings\":7,\"alerting\":\"s-alerting\",\"enabled\":true,\"presence\":\"s-presence\",\"transferEnabled\":true,\"transferNumber\":\"s-transfer-number\",\"untilDateTime\":\"s-until-date-time\"}" - } - ] - }, - { - "command": "calling call-settings-for-me update-personal-assistant", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/personalAssistant", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-personal-assistant", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/personalAssistant", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-policies-user", - "variant": "all-flags", - "args": [ - "--connected-line-id-privacy-on-redirected-calls=s-connected-line-id-privacy-on-redirected-calls" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callPolicies", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"connectedLineIdPrivacyOnRedirectedCalls\":\"s-connected-line-id-privacy-on-redirected-calls\"}" - } - ] - }, - { - "command": "calling call-settings-for-me update-policies-user", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callPolicies", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-policies-user", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callPolicies", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-preferred-endpoint", - "variant": "all-flags", - "args": [ - "--preferred-answer-endpoint-id=s-preferred-answer-endpoint-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/preferredAnswerEndpoint", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"preferredAnswerEndpointId\":\"s-preferred-answer-endpoint-id\"}" - } - ] - }, - { - "command": "calling call-settings-for-me update-preferred-endpoint", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/preferredAnswerEndpoint", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-preferred-endpoint", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/preferredAnswerEndpoint", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-priority-alert", - "variant": "all-flags", - "args": [ - "--anonymous-callers-enabled=true", - "--calls-from=s-calls-from", - "--id=s-id", - "--notification-enabled=true", - "--phone-numbers=s-phone-numbers-1,s-phone-numbers-2", - "--schedule-level=s-schedule-level", - "--schedule-name=s-schedule-name", - "--schedule-type=s-schedule-type", - "--unavailable-callers-enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/priorityAlert/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"anonymousCallersEnabled\":true,\"callsFrom\":\"s-calls-from\",\"notificationEnabled\":true,\"phoneNumbers\":[\"s-phone-numbers-1\",\"s-phone-numbers-2\"],\"scheduleLevel\":\"s-schedule-level\",\"scheduleName\":\"s-schedule-name\",\"scheduleType\":\"s-schedule-type\",\"unavailableCallersEnabled\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-priority-alert", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/priorityAlert/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-priority-alert", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/priorityAlert/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-priority-alert-2", - "variant": "all-flags", - "args": [ - "--anonymous-callers-enabled=true", - "--calls-from=s-calls-from", - "--id=s-id", - "--notification-enabled=true", - "--phone-numbers=s-phone-numbers-1,s-phone-numbers-2", - "--schedule-level=s-schedule-level", - "--schedule-name=s-schedule-name", - "--schedule-type=s-schedule-type", - "--unavailable-callers-enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/priorityAlert/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"anonymousCallersEnabled\":true,\"callsFrom\":\"s-calls-from\",\"notificationEnabled\":true,\"phoneNumbers\":[\"s-phone-numbers-1\",\"s-phone-numbers-2\"],\"scheduleLevel\":\"s-schedule-level\",\"scheduleName\":\"s-schedule-name\",\"scheduleType\":\"s-schedule-type\",\"unavailableCallersEnabled\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-priority-alert-2", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/priorityAlert/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-priority-alert-2", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/priorityAlert/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-priority-alert-user", - "variant": "all-flags", - "args": [ - "--enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/priorityAlert", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"enabled\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-priority-alert-user", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/priorityAlert", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-priority-alert-user", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/priorityAlert", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-priority-alert-user-2", - "variant": "all-flags", - "args": [ - "--enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/priorityAlert", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"enabled\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-priority-alert-user-2", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/priorityAlert", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-priority-alert-user-2", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/priorityAlert", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-selective-accept", - "variant": "all-flags", - "args": [ - "--accept-enabled=true", - "--anonymous-callers-enabled=true", - "--calls-from=s-calls-from", - "--id=s-id", - "--phone-numbers=s-phone-numbers-1,s-phone-numbers-2", - "--schedule-level=s-schedule-level", - "--schedule-name=s-schedule-name", - "--schedule-type=s-schedule-type", - "--unavailable-callers-enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveAccept/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"acceptEnabled\":true,\"anonymousCallersEnabled\":true,\"callsFrom\":\"s-calls-from\",\"phoneNumbers\":[\"s-phone-numbers-1\",\"s-phone-numbers-2\"],\"scheduleLevel\":\"s-schedule-level\",\"scheduleName\":\"s-schedule-name\",\"scheduleType\":\"s-schedule-type\",\"unavailableCallersEnabled\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-selective-accept", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveAccept/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-selective-accept", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveAccept/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-selective-accept-2", - "variant": "all-flags", - "args": [ - "--accept-enabled=true", - "--anonymous-callers-enabled=true", - "--calls-from=s-calls-from", - "--id=s-id", - "--phone-numbers=s-phone-numbers-1,s-phone-numbers-2", - "--schedule-level=s-schedule-level", - "--schedule-name=s-schedule-name", - "--schedule-type=s-schedule-type", - "--unavailable-callers-enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveAccept/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"acceptEnabled\":true,\"anonymousCallersEnabled\":true,\"callsFrom\":\"s-calls-from\",\"phoneNumbers\":[\"s-phone-numbers-1\",\"s-phone-numbers-2\"],\"scheduleLevel\":\"s-schedule-level\",\"scheduleName\":\"s-schedule-name\",\"scheduleType\":\"s-schedule-type\",\"unavailableCallersEnabled\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-selective-accept-2", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveAccept/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-selective-accept-2", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveAccept/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-selective-accept-user", - "variant": "all-flags", - "args": [ - "--enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveAccept", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"enabled\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-selective-accept-user", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveAccept", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-selective-accept-user", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveAccept", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-selective-accept-user-2", - "variant": "all-flags", - "args": [ - "--enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveAccept", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"enabled\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-selective-accept-user-2", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveAccept", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-selective-accept-user-2", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveAccept", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-selective-forward", - "variant": "all-flags", - "args": [ - "--anonymous-callers-enabled=true", - "--calls-from=s-calls-from", - "--destination-voicemail-enabled=true", - "--forward-enabled=true", - "--forward-to-phone-number=s-forward-to-phone-number", - "--id=s-id", - "--phone-numbers=s-phone-numbers-1,s-phone-numbers-2", - "--schedule-level=s-schedule-level", - "--schedule-name=s-schedule-name", - "--schedule-type=s-schedule-type", - "--unavailable-callers-enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveForward/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"anonymousCallersEnabled\":true,\"callsFrom\":\"s-calls-from\",\"destinationVoicemailEnabled\":true,\"forwardEnabled\":true,\"forwardToPhoneNumber\":\"s-forward-to-phone-number\",\"phoneNumbers\":[\"s-phone-numbers-1\",\"s-phone-numbers-2\"],\"scheduleLevel\":\"s-schedule-level\",\"scheduleName\":\"s-schedule-name\",\"scheduleType\":\"s-schedule-type\",\"unavailableCallersEnabled\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-selective-forward", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveForward/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-selective-forward", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveForward/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-selective-forward-2", - "variant": "all-flags", - "args": [ - "--anonymous-callers-enabled=true", - "--calls-from=s-calls-from", - "--destination-voicemail-enabled=true", - "--forward-enabled=true", - "--forward-to-phone-number=s-forward-to-phone-number", - "--id=s-id", - "--phone-numbers=s-phone-numbers-1,s-phone-numbers-2", - "--schedule-level=s-schedule-level", - "--schedule-name=s-schedule-name", - "--schedule-type=s-schedule-type", - "--unavailable-callers-enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveForward/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"anonymousCallersEnabled\":true,\"callsFrom\":\"s-calls-from\",\"destinationVoicemailEnabled\":true,\"forwardEnabled\":true,\"forwardToPhoneNumber\":\"s-forward-to-phone-number\",\"phoneNumbers\":[\"s-phone-numbers-1\",\"s-phone-numbers-2\"],\"scheduleLevel\":\"s-schedule-level\",\"scheduleName\":\"s-schedule-name\",\"scheduleType\":\"s-schedule-type\",\"unavailableCallersEnabled\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-selective-forward-2", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveForward/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-selective-forward-2", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveForward/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-selective-forward-user", - "variant": "all-flags", - "args": [ - "--default-phone-number-to-forward=s-default-phone-number-to-forward", - "--destination-voicemail-enabled=true", - "--enabled=true", - "--ring-reminder-enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveForward", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"defaultPhoneNumberToForward\":\"s-default-phone-number-to-forward\",\"destinationVoicemailEnabled\":true,\"enabled\":true,\"ringReminderEnabled\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-selective-forward-user", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveForward", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-selective-forward-user", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveForward", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-selective-forward-user-2", - "variant": "all-flags", - "args": [ - "--default-phone-number-to-forward=s-default-phone-number-to-forward", - "--destination-voicemail-enabled=true", - "--enabled=true", - "--ring-reminder-enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveForward", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"defaultPhoneNumberToForward\":\"s-default-phone-number-to-forward\",\"destinationVoicemailEnabled\":true,\"enabled\":true,\"ringReminderEnabled\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-selective-forward-user-2", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveForward", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-selective-forward-user-2", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveForward", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-selective-reject", - "variant": "all-flags", - "args": [ - "--anonymous-callers-enabled=true", - "--calls-from=s-calls-from", - "--id=s-id", - "--phone-numbers=s-phone-numbers-1,s-phone-numbers-2", - "--reject-enabled=true", - "--schedule-level=s-schedule-level", - "--schedule-name=s-schedule-name", - "--schedule-type=s-schedule-type", - "--unavailable-callers-enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveReject/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"anonymousCallersEnabled\":true,\"callsFrom\":\"s-calls-from\",\"phoneNumbers\":[\"s-phone-numbers-1\",\"s-phone-numbers-2\"],\"rejectEnabled\":true,\"scheduleLevel\":\"s-schedule-level\",\"scheduleName\":\"s-schedule-name\",\"scheduleType\":\"s-schedule-type\",\"unavailableCallersEnabled\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-selective-reject", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveReject/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-selective-reject", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveReject/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-selective-reject-2", - "variant": "all-flags", - "args": [ - "--anonymous-callers-enabled=true", - "--calls-from=s-calls-from", - "--id=s-id", - "--phone-numbers=s-phone-numbers-1,s-phone-numbers-2", - "--reject-enabled=true", - "--schedule-level=s-schedule-level", - "--schedule-name=s-schedule-name", - "--schedule-type=s-schedule-type", - "--unavailable-callers-enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveReject/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"anonymousCallersEnabled\":true,\"callsFrom\":\"s-calls-from\",\"phoneNumbers\":[\"s-phone-numbers-1\",\"s-phone-numbers-2\"],\"rejectEnabled\":true,\"scheduleLevel\":\"s-schedule-level\",\"scheduleName\":\"s-schedule-name\",\"scheduleType\":\"s-schedule-type\",\"unavailableCallersEnabled\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-selective-reject-2", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveReject/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-selective-reject-2", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveReject/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-selective-reject-user", - "variant": "all-flags", - "args": [ - "--enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveReject", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"enabled\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-selective-reject-user", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveReject", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-selective-reject-user", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveReject", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-selective-reject-user-2", - "variant": "all-flags", - "args": [ - "--enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveReject", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"enabled\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-selective-reject-user-2", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveReject", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-selective-reject-user-2", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/selectiveReject", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-sequential-ring-user", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/sequentialRing", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-sequential-ring-user", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/sequentialRing", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-sequential-ring-user", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/sequentialRing", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-sequential-ring-user-2", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/sequentialRing", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-sequential-ring-user-2", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/sequentialRing", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-sequential-ring-user-2", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/sequentialRing", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-sequential-ring-user-2", - "variant": "all-flags", - "args": [ - "--anonymous-callers-enabled=true", - "--calls-from=s-calls-from", - "--id=s-id", - "--phone-numbers=s-phone-numbers-1,s-phone-numbers-2", - "--ring-enabled=true", - "--schedule-level=s-schedule-level", - "--schedule-name=s-schedule-name", - "--schedule-type=s-schedule-type", - "--unavailable-callers-enabled=true" - ], - "requests": [], - "error": "unknown flag: --anonymous-callers-enabled" - }, - { - "command": "calling call-settings-for-me update-sequential-ring-user-2", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [], - "error": "unknown flag: --id" - }, - { - "command": "calling call-settings-for-me update-sequential-ring-user-2", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [], - "error": "unknown flag: --id" - }, - { - "command": "calling call-settings-for-me update-sequential-ring-user-2-2", - "variant": "all-flags", - "args": [ - "--anonymous-callers-enabled=true", - "--calls-from=s-calls-from", - "--id=s-id", - "--phone-numbers=s-phone-numbers-1,s-phone-numbers-2", - "--ring-enabled=true", - "--schedule-level=s-schedule-level", - "--schedule-name=s-schedule-name", - "--schedule-type=s-schedule-type", - "--unavailable-callers-enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/sequentialRing/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"anonymousCallersEnabled\":true,\"callsFrom\":\"s-calls-from\",\"phoneNumbers\":[\"s-phone-numbers-1\",\"s-phone-numbers-2\"],\"ringEnabled\":true,\"scheduleLevel\":\"s-schedule-level\",\"scheduleName\":\"s-schedule-name\",\"scheduleType\":\"s-schedule-type\",\"unavailableCallersEnabled\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-sequential-ring-user-2-2", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/sequentialRing/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-sequential-ring-user-2-2", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/sequentialRing/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-user-executive-alert", - "variant": "all-flags", - "args": [ - "--alerting-mode=s-alerting-mode", - "--clid-name-mode=s-clid-name-mode", - "--clid-phone-number-mode=s-clid-phone-number-mode", - "--custom-clidname=s-custom-clidname", - "--custom-clidname-in-unicode=s-custom-clidname-in-unicode", - "--custom-clidphone-number=s-custom-clidphone-number", - "--next-assistant-number-of-rings=7", - "--rollover-action=s-rollover-action", - "--rollover-enabled=true", - "--rollover-forward-to-phone-number=s-rollover-forward-to-phone-number", - "--rollover-wait-time-in-secs=7" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/executive/alert", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"alertingMode\":\"s-alerting-mode\",\"clidNameMode\":\"s-clid-name-mode\",\"clidPhoneNumberMode\":\"s-clid-phone-number-mode\",\"customCLIDName\":\"s-custom-clidname\",\"customCLIDNameInUnicode\":\"s-custom-clidname-in-unicode\",\"customCLIDPhoneNumber\":\"s-custom-clidphone-number\",\"nextAssistantNumberOfRings\":7,\"rolloverAction\":\"s-rollover-action\",\"rolloverEnabled\":true,\"rolloverForwardToPhoneNumber\":\"s-rollover-forward-to-phone-number\",\"rolloverWaitTimeInSecs\":7}" - } - ] - }, - { - "command": "calling call-settings-for-me update-user-executive-alert", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/executive/alert", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-user-executive-alert", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/executive/alert", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-user-executive-filtering", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/executive/callFiltering", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-user-executive-filtering", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/executive/callFiltering", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-user-executive-filtering", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/executive/callFiltering", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-user-executive-filtering-2", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/executive/callFiltering/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-user-executive-filtering-2", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/executive/callFiltering/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-user-executive-filtering-2", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/executive/callFiltering/criteria/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-user-executive-screening", - "variant": "all-flags", - "args": [ - "--alert-anywhere-location-enabled=true", - "--alert-mobility-location-enabled=true", - "--alert-shared-call-appearance-location-enabled=true", - "--alert-type=s-alert-type", - "--enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/executive/screening", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"alertAnywhereLocationEnabled\":true,\"alertMobilityLocationEnabled\":true,\"alertSharedCallAppearanceLocationEnabled\":true,\"alertType\":\"s-alert-type\",\"enabled\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-user-executive-screening", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/executive/screening", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-user-executive-screening", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/executive/screening", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-user-schedule", - "variant": "all-flags", - "args": [ - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/schedules/s-schedule-type/s-schedule-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-user-schedule", - "variant": "required", - "args": [ - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/schedules/s-schedule-type/s-schedule-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-user-schedule", - "variant": "body", - "args": [ - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/schedules/s-schedule-type/s-schedule-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-user-schedule-2", - "variant": "all-flags", - "args": [ - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/schedules/s-schedule-type/s-schedule-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-user-schedule-2", - "variant": "required", - "args": [ - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/schedules/s-schedule-type/s-schedule-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-user-schedule-2", - "variant": "body", - "args": [ - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/schedules/s-schedule-type/s-schedule-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-user-schedule-event", - "variant": "all-flags", - "args": [ - "--event-id=s-event-id", - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/schedules/s-schedule-type/s-schedule-id/events/s-event-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-user-schedule-event", - "variant": "required", - "args": [ - "--event-id=s-event-id", - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/schedules/s-schedule-type/s-schedule-id/events/s-event-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-user-schedule-event", - "variant": "body", - "args": [ - "--event-id=s-event-id", - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/schedules/s-schedule-type/s-schedule-id/events/s-event-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-user-schedule-event-2", - "variant": "all-flags", - "args": [ - "--event-id=s-event-id", - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/schedules/s-schedule-type/s-schedule-id/events/s-event-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-user-schedule-event-2", - "variant": "required", - "args": [ - "--event-id=s-event-id", - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/schedules/s-schedule-type/s-schedule-id/events/s-event-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-user-schedule-event-2", - "variant": "body", - "args": [ - "--event-id=s-event-id", - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/schedules/s-schedule-type/s-schedule-id/events/s-event-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-user-single-number-reach", - "variant": "all-flags", - "args": [ - "--alert-all-locations-for-click-to-dial-calls-enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/singleNumberReach", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"alertAllLocationsForClickToDialCallsEnabled\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-user-single-number-reach", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/singleNumberReach", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-user-single-number-reach", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/singleNumberReach", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-user-single-number-reach-contact", - "variant": "all-flags", - "args": [ - "--answer-confirmation-enabled=true", - "--do-not-forward-calls-enabled=true", - "--enabled=true", - "--name=s-name", - "--phone-number=s-phone-number", - "--phone-number-id=s-phone-number-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/singleNumberReach/numbers/s-phone-number-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"answerConfirmationEnabled\":true,\"doNotForwardCallsEnabled\":true,\"enabled\":true,\"name\":\"s-name\",\"phoneNumber\":\"s-phone-number\"}" - } - ] - }, - { - "command": "calling call-settings-for-me update-user-single-number-reach-contact", - "variant": "required", - "args": [ - "--phone-number-id=s-phone-number-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/singleNumberReach/numbers/s-phone-number-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-user-single-number-reach-contact", - "variant": "body", - "args": [ - "--phone-number-id=s-phone-number-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/singleNumberReach/numbers/s-phone-number-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-voicemail-person", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/voicemail", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-voicemail-person", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/voicemail", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-voicemail-person", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/voicemail", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-voicemail-pin", - "variant": "all-flags", - "args": [ - "--passcode=s-passcode" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/voicemail/pin", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"passcode\":\"s-passcode\"}" - } - ] - }, - { - "command": "calling call-settings-for-me update-voicemail-pin", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/voicemail/pin", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-voicemail-pin", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/voicemail/pin", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-waiting-user", - "variant": "all-flags", - "args": [ - "--enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callWaiting", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"enabled\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-waiting-user", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callWaiting", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-waiting-user", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callWaiting", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-waiting-user-2", - "variant": "all-flags", - "args": [ - "--enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callWaiting", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"enabled\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me update-waiting-user-2", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callWaiting", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling call-settings-for-me update-waiting-user-2", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/callWaiting", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling call-settings-for-me upload-voicemail-busy-greeting", - "variant": "all-flags", - "args": [ - "--file=s-file" - ], - "requests": [], - "error": "opening audio file: open s-file: no such file or directory" - }, - { - "command": "calling call-settings-for-me upload-voicemail-busy-greeting", - "variant": "required", - "args": [ - "--file=s-file" - ], - "requests": [], - "error": "opening audio file: open s-file: no such file or directory" - }, - { - "command": "calling call-settings-for-me upload-voicemail-no-answer-greeting", - "variant": "all-flags", - "args": [ - "--file=s-file" - ], - "requests": [], - "error": "opening audio file: open s-file: no such file or directory" - }, - { - "command": "calling call-settings-for-me upload-voicemail-no-answer-greeting", - "variant": "required", - "args": [ - "--file=s-file" - ], - "requests": [], - "error": "opening audio file: open s-file: no such file or directory" - }, - { - "command": "calling caller-reputation-provider get", - "variant": "all-flags", - "args": [ - "--organization-id=s-organization-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/serviceSettings/callerReputationProvider/providers?organizationId=s-organization-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling caller-reputation-provider get", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/serviceSettings/callerReputationProvider/providers", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling caller-reputation-provider get", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/serviceSettings/callerReputationProvider/providers", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling caller-reputation-provider get-settings", - "variant": "all-flags", - "args": [ - "--organization-id=s-organization-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/serviceSettings/callerReputationProvider?organizationId=s-organization-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling caller-reputation-provider get-settings", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/serviceSettings/callerReputationProvider", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling caller-reputation-provider get-settings", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/serviceSettings/callerReputationProvider", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling caller-reputation-provider get-status", - "variant": "all-flags", - "args": [ - "--organization-id=s-organization-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/serviceSettings/callerReputationProvider/status?organizationId=s-organization-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling caller-reputation-provider get-status", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/serviceSettings/callerReputationProvider/status", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling caller-reputation-provider get-status", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/serviceSettings/callerReputationProvider/status", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling caller-reputation-provider unlock", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--organization-id=s-organization-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/serviceSettings/callerReputationProvider/actions/unlock/invoke?organizationId=s-organization-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"id\":\"s-id\"}" - } - ] - }, - { - "command": "calling caller-reputation-provider unlock", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/serviceSettings/callerReputationProvider/actions/unlock/invoke", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling caller-reputation-provider unlock", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/serviceSettings/callerReputationProvider/actions/unlock/invoke", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling caller-reputation-provider update-settings", - "variant": "all-flags", - "args": [ - "--call-allow-score-threshold=s-call-allow-score-threshold", - "--call-block-score-threshold=s-call-block-score-threshold", - "--client-id=s-client-id", - "--client-secret=s-client-secret", - "--enabled=true", - "--id=s-id", - "--name=s-name", - "--organization-id=s-organization-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/serviceSettings/callerReputationProvider?organizationId=s-organization-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"callAllowScoreThreshold\":\"s-call-allow-score-threshold\",\"callBlockScoreThreshold\":\"s-call-block-score-threshold\",\"clientId\":\"s-client-id\",\"clientSecret\":\"s-client-secret\",\"enabled\":true,\"id\":\"s-id\",\"name\":\"s-name\"}" - } - ] - }, - { - "command": "calling caller-reputation-provider update-settings", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/serviceSettings/callerReputationProvider", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling caller-reputation-provider update-settings", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/serviceSettings/callerReputationProvider", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling calling-service get-large-org-status", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/largeOrgStatus?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling calling-service get-large-org-status", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/largeOrgStatus?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling calling-service get-large-org-status", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/largeOrgStatus?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling calling-service get-org-call-captions-settings", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/callCaptions?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling calling-service get-org-call-captions-settings", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/callCaptions?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling calling-service get-org-call-captions-settings", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/callCaptions?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling calling-service get-org-music-hold-configuration", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/moh/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling calling-service get-org-music-hold-configuration", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/moh/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling calling-service get-org-music-hold-configuration", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/moh/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling calling-service get-voicemail", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/voicemail/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling calling-service get-voicemail", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/voicemail/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling calling-service get-voicemail", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/voicemail/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling calling-service get-voicemail-rules", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/voicemail/rules?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling calling-service get-voicemail-rules", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/voicemail/rules?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling calling-service get-voicemail-rules", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/voicemail/rules?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling calling-service list-announcement-languages", - "variant": "all-flags", - "args": [ - "--tts-language=s-tts-language" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/announcementLanguages?ttsLanguage=s-tts-language", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling calling-service list-announcement-languages", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/announcementLanguages", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling calling-service list-announcement-languages", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/announcementLanguages", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling calling-service update-org-call-captions-settings", - "variant": "all-flags", - "args": [ - "--org-closed-captions-enabled=true", - "--org-transcripts-enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/callCaptions?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"orgClosedCaptionsEnabled\":true,\"orgTranscriptsEnabled\":true}" - } - ] - }, - { - "command": "calling calling-service update-org-call-captions-settings", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/callCaptions?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling calling-service update-org-call-captions-settings", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/callCaptions?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling calling-service update-org-music-hold-configuration", - "variant": "all-flags", - "args": [ - "--default-org-moh=s-default-org-moh" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/moh/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"defaultOrgMoh\":\"s-default-org-moh\"}" - } - ] - }, - { - "command": "calling calling-service update-org-music-hold-configuration", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/moh/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling calling-service update-org-music-hold-configuration", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/moh/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling calling-service update-voicemail", - "variant": "all-flags", - "args": [ - "--message-expiry-enabled=true", - "--number-of-days-for-message-expiry=7", - "--strict-deletion-enabled=true", - "--voice-message-forwarding-enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/voicemail/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"messageExpiryEnabled\":true,\"numberOfDaysForMessageExpiry\":7,\"strictDeletionEnabled\":true,\"voiceMessageForwardingEnabled\":true}" - } - ] - }, - { - "command": "calling calling-service update-voicemail", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/voicemail/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling calling-service update-voicemail", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/voicemail/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling calling-service update-voicemail-rules", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/voicemail/rules?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling calling-service update-voicemail-rules", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/voicemail/rules?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling calling-service update-voicemail-rules", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/voicemail/rules?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling client-call get-org-ms-teams-settings", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/settings/msTeams?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling client-call get-org-ms-teams-settings", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/settings/msTeams?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling client-call get-org-ms-teams-settings", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/settings/msTeams?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling client-call update-org-ms-teams-setting", - "variant": "all-flags", - "args": [ - "--setting-name=s-setting-name", - "--value=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/settings/msTeams?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"settingName\":\"s-setting-name\",\"value\":true}" - } - ] - }, - { - "command": "calling client-call update-org-ms-teams-setting", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/settings/msTeams?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling client-call update-org-ms-teams-setting", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/settings/msTeams?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling conference-controls create-participant", - "variant": "all-flags", - "args": [ - "--call-id=s-call-id", - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/conference/addParticipant", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"callId\":\"s-call-id\",\"lineOwnerId\":\"s-line-owner-id\"}" - } - ] - }, - { - "command": "calling conference-controls create-participant", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/conference/addParticipant", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling conference-controls create-participant", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/conference/addParticipant", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling conference-controls deafen-participant", - "variant": "all-flags", - "args": [ - "--call-id=s-call-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/conference/deafen", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"callId\":\"s-call-id\"}" - } - ] - }, - { - "command": "calling conference-controls deafen-participant", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/conference/deafen", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling conference-controls deafen-participant", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/conference/deafen", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling conference-controls get", - "variant": "all-flags", - "args": [ - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/conference?lineOwnerId=s-line-owner-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling conference-controls get", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/conference", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling conference-controls get", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/conference", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling conference-controls hold", - "variant": "all-flags", - "args": [ - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/conference/hold?lineOwnerId=s-line-owner-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling conference-controls hold", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/conference/hold", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling conference-controls mute", - "variant": "all-flags", - "args": [ - "--call-id=s-call-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/conference/mute", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"callId\":\"s-call-id\"}" - } - ] - }, - { - "command": "calling conference-controls mute", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/conference/mute", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling conference-controls mute", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/conference/mute", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling conference-controls release", - "variant": "all-flags", - "args": [ - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/conference?lineOwnerId=s-line-owner-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling conference-controls release", - "variant": "required", - "args": null, - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/conference", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling conference-controls resume", - "variant": "all-flags", - "args": [ - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/conference/resume?lineOwnerId=s-line-owner-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling conference-controls resume", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/conference/resume", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling conference-controls start", - "variant": "all-flags", - "args": [ - "--call-ids=s-call-ids-1,s-call-ids-2", - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/conference", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"callIds\":[\"s-call-ids-1\",\"s-call-ids-2\"],\"lineOwnerId\":\"s-line-owner-id\"}" - } - ] - }, - { - "command": "calling conference-controls start", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/conference", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling conference-controls start", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/conference", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling conference-controls undeafen-participant", - "variant": "all-flags", - "args": [ - "--call-id=s-call-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/conference/undeafen", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"callId\":\"s-call-id\"}" - } - ] - }, - { - "command": "calling conference-controls undeafen-participant", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/conference/undeafen", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling conference-controls undeafen-participant", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/conference/undeafen", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling conference-controls unmute", - "variant": "all-flags", - "args": [ - "--call-id=s-call-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/conference/unmute", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"callId\":\"s-call-id\"}" - } - ] - }, - { - "command": "calling conference-controls unmute", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/conference/unmute", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling conference-controls unmute", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/conference/unmute", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling converged-recordings delete", - "variant": "all-flags", - "args": [ - "--comment=s-comment", - "--reason=s-reason", - "--recording-id=s-recording-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/convergedRecordings/s-recording-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"comment\":\"s-comment\",\"reason\":\"s-reason\"}" - } - ] - }, - { - "command": "calling converged-recordings delete", - "variant": "required", - "args": [ - "--recording-id=s-recording-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/convergedRecordings/s-recording-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling converged-recordings delete", - "variant": "body", - "args": [ - "--recording-id=s-recording-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/convergedRecordings/s-recording-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling converged-recordings download", - "variant": "all-flags", - "args": [ - "--output=s-output", - "--recording-id=s-recording-id", - "--type=s-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/convergedRecordings/s-recording-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ], - "error": "no temporaryDirectDownloadLinks in response (status 200)" - }, - { - "command": "calling converged-recordings download", - "variant": "required", - "args": [ - "--output=s-output", - "--recording-id=s-recording-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/convergedRecordings/s-recording-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ], - "error": "no temporaryDirectDownloadLinks in response (status 200)" - }, - { - "command": "calling converged-recordings download", - "variant": "paginate", - "args": [ - "--output=s-output", - "--recording-id=s-recording-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/convergedRecordings/s-recording-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ], - "error": "no temporaryDirectDownloadLinks in response (status 200)" - }, - { - "command": "calling converged-recordings get", - "variant": "all-flags", - "args": [ - "--recording-id=s-recording-id", - "--timezone=s-timezone" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/convergedRecordings/s-recording-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Timezone": "s-timezone" - } - } - ] - }, - { - "command": "calling converged-recordings get", - "variant": "required", - "args": [ - "--recording-id=s-recording-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/convergedRecordings/s-recording-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling converged-recordings get", - "variant": "paginate", - "args": [ - "--recording-id=s-recording-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/convergedRecordings/s-recording-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling converged-recordings get-metadata", - "variant": "all-flags", - "args": [ - "--recording-id=s-recording-id", - "--show-all-types=s-show-all-types" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/convergedRecordings/s-recording-id/metadata?showAllTypes=s-show-all-types", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling converged-recordings get-metadata", - "variant": "required", - "args": [ - "--recording-id=s-recording-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/convergedRecordings/s-recording-id/metadata", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling converged-recordings get-metadata", - "variant": "paginate", - "args": [ - "--recording-id=s-recording-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/convergedRecordings/s-recording-id/metadata", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling converged-recordings list", - "variant": "all-flags", - "args": [ - "--format=s-format", - "--from=2026-01-01T00:00:00.000Z", - "--location-id=s-location-id", - "--max=s-max", - "--owner-type=s-owner-type", - "--service-type=s-service-type", - "--status=s-status", - "--storage-region=s-storage-region", - "--timezone=s-timezone", - "--to=2026-01-02T00:00:00.000Z", - "--topic=s-topic" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/convergedRecordings?format=s-format&from=2026-01-01T00%3A00%3A00.000Z&locationId=s-location-id&max=s-max&ownerType=s-owner-type&serviceType=s-service-type&status=s-status&storageRegion=s-storage-region&to=2026-01-02T00%3A00%3A00.000Z&topic=s-topic", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Timezone": "s-timezone" - } - } - ] - }, - { - "command": "calling converged-recordings list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/convergedRecordings", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling converged-recordings list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/convergedRecordings?max=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling converged-recordings list-admin-compliance-officer", - "variant": "all-flags", - "args": [ - "--format=s-format", - "--from=2026-01-01T00:00:00.000Z", - "--location-id=s-location-id", - "--max=s-max", - "--owner-email=s-owner-email", - "--owner-id=s-owner-id", - "--owner-type=s-owner-type", - "--service-type=s-service-type", - "--status=s-status", - "--storage-region=s-storage-region", - "--timezone=s-timezone", - "--to=2026-01-02T00:00:00.000Z", - "--topic=s-topic" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/admin/convergedRecordings?format=s-format&from=2026-01-01T00%3A00%3A00.000Z&locationId=s-location-id&max=s-max&ownerEmail=s-owner-email&ownerId=s-owner-id&ownerType=s-owner-type&serviceType=s-service-type&status=s-status&storageRegion=s-storage-region&to=2026-01-02T00%3A00%3A00.000Z&topic=s-topic", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Timezone": "s-timezone" - } - } - ] - }, - { - "command": "calling converged-recordings list-admin-compliance-officer", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/admin/convergedRecordings", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling converged-recordings list-admin-compliance-officer", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/admin/convergedRecordings?max=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling converged-recordings move-recycle-bin", - "variant": "all-flags", - "args": [ - "--owner-email=s-owner-email", - "--recording-ids=s-recording-ids-1,s-recording-ids-2", - "--trash-all=true" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/convergedRecordings/softDelete", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"ownerEmail\":\"s-owner-email\",\"recordingIds\":[\"s-recording-ids-1\",\"s-recording-ids-2\"],\"trashAll\":true}" - } - ] - }, - { - "command": "calling converged-recordings move-recycle-bin", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/convergedRecordings/softDelete", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling converged-recordings move-recycle-bin", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/convergedRecordings/softDelete", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling converged-recordings purge-recycle-bin", - "variant": "all-flags", - "args": [ - "--owner-email=s-owner-email", - "--purge-all=true", - "--recording-ids=s-recording-ids-1,s-recording-ids-2" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/convergedRecordings/purge", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"ownerEmail\":\"s-owner-email\",\"purgeAll\":true,\"recordingIds\":[\"s-recording-ids-1\",\"s-recording-ids-2\"]}" - } - ] - }, - { - "command": "calling converged-recordings purge-recycle-bin", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/convergedRecordings/purge", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling converged-recordings purge-recycle-bin", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/convergedRecordings/purge", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling converged-recordings reassign", - "variant": "all-flags", - "args": [ - "--owner-email=s-owner-email", - "--owner-id=s-owner-id", - "--reassign-owner-email=s-reassign-owner-email", - "--recording-ids=s-recording-ids-1,s-recording-ids-2" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/convergedRecordings/reassign", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"ownerEmail\":\"s-owner-email\",\"ownerID\":\"s-owner-id\",\"reassignOwnerEmail\":\"s-reassign-owner-email\",\"recordingIds\":[\"s-recording-ids-1\",\"s-recording-ids-2\"]}" - } - ] - }, - { - "command": "calling converged-recordings reassign", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/convergedRecordings/reassign", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling converged-recordings reassign", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/convergedRecordings/reassign", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling converged-recordings restore-recycle-bin", - "variant": "all-flags", - "args": [ - "--owner-email=s-owner-email", - "--recording-ids=s-recording-ids-1,s-recording-ids-2", - "--restore-all=true" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/convergedRecordings/restore", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"ownerEmail\":\"s-owner-email\",\"recordingIds\":[\"s-recording-ids-1\",\"s-recording-ids-2\"],\"restoreAll\":true}" - } - ] - }, - { - "command": "calling converged-recordings restore-recycle-bin", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/convergedRecordings/restore", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling converged-recordings restore-recycle-bin", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/convergedRecordings/restore", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling customer-assist create-wrap-up-reason", - "variant": "all-flags", - "args": [ - "--assign-all-queues-enabled=true", - "--description=s-description", - "--name=s-name", - "--queues=s-queues-1,s-queues-2" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/wrapup/reasons", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"assignAllQueuesEnabled\":true,\"description\":\"s-description\",\"name\":\"s-name\",\"queues\":[\"s-queues-1\",\"s-queues-2\"]}" - } - ] - }, - { - "command": "calling customer-assist create-wrap-up-reason", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/wrapup/reasons", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-assist create-wrap-up-reason", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/wrapup/reasons", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling customer-assist delete-wrap-up-reason", - "variant": "all-flags", - "args": [ - "--wrapup-reason-id=s-wrapup-reason-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/wrapup/reasons/s-wrapup-reason-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-assist delete-wrap-up-reason", - "variant": "required", - "args": [ - "--wrapup-reason-id=s-wrapup-reason-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/wrapup/reasons/s-wrapup-reason-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-assist get-available-queues", - "variant": "all-flags", - "args": [ - "--wrapup-reason-id=s-wrapup-reason-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/wrapup/reasons/s-wrapup-reason-id/availableQueues", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-assist get-available-queues", - "variant": "required", - "args": [ - "--wrapup-reason-id=s-wrapup-reason-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/wrapup/reasons/s-wrapup-reason-id/availableQueues", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-assist get-available-queues", - "variant": "paginate", - "args": [ - "--wrapup-reason-id=s-wrapup-reason-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/wrapup/reasons/s-wrapup-reason-id/availableQueues", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-assist get-screen-pop-configuration", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/cxEssentials/screenPop?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-assist get-screen-pop-configuration", - "variant": "required", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/cxEssentials/screenPop?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-assist get-screen-pop-configuration", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/cxEssentials/screenPop?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-assist get-wrap-up-reason", - "variant": "all-flags", - "args": [ - "--wrapup-reason-id=s-wrapup-reason-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/wrapup/reasons/s-wrapup-reason-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-assist get-wrap-up-reason", - "variant": "required", - "args": [ - "--wrapup-reason-id=s-wrapup-reason-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/wrapup/reasons/s-wrapup-reason-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-assist get-wrap-up-reason", - "variant": "paginate", - "args": [ - "--wrapup-reason-id=s-wrapup-reason-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/wrapup/reasons/s-wrapup-reason-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-assist get-wrap-up-reason-settings", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/locations/s-location-id/queues/s-queue-id/wrapup/settings", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-assist get-wrap-up-reason-settings", - "variant": "required", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/locations/s-location-id/queues/s-queue-id/wrapup/settings", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-assist get-wrap-up-reason-settings", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/locations/s-location-id/queues/s-queue-id/wrapup/settings", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-assist list-available-agents", - "variant": "all-flags", - "args": [ - "--has-cx-essentials=s-has-cx-essentials", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/cxEssentials/agents/availableAgents?hasCxEssentials=s-has-cx-essentials&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-assist list-available-agents", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/cxEssentials/agents/availableAgents?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-assist list-available-agents", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/cxEssentials/agents/availableAgents?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-assist list-wrap-up-reasons", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/wrapup/reasons", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-assist list-wrap-up-reasons", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/wrapup/reasons", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-assist list-wrap-up-reasons", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/wrapup/reasons", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-assist update-screen-pop-configuration", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/cxEssentials/screenPop?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-assist update-screen-pop-configuration", - "variant": "required", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/cxEssentials/screenPop?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-assist update-screen-pop-configuration", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/cxEssentials/screenPop?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling customer-assist update-wrap-up-reason", - "variant": "all-flags", - "args": [ - "--assign-all-queues-enabled=true", - "--description=s-description", - "--name=s-name", - "--queues-to-assign=s-queues-to-assign-1,s-queues-to-assign-2", - "--queues-to-unassign=s-queues-to-unassign-1,s-queues-to-unassign-2", - "--unassign-all-queues-enabled=true", - "--wrapup-reason-id=s-wrapup-reason-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/wrapup/reasons/s-wrapup-reason-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"assignAllQueuesEnabled\":true,\"description\":\"s-description\",\"name\":\"s-name\",\"queuesToAssign\":[\"s-queues-to-assign-1\",\"s-queues-to-assign-2\"],\"queuesToUnassign\":[\"s-queues-to-unassign-1\",\"s-queues-to-unassign-2\"],\"unassignAllQueuesEnabled\":true}" - } - ] - }, - { - "command": "calling customer-assist update-wrap-up-reason", - "variant": "required", - "args": [ - "--wrapup-reason-id=s-wrapup-reason-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/wrapup/reasons/s-wrapup-reason-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-assist update-wrap-up-reason", - "variant": "body", - "args": [ - "--wrapup-reason-id=s-wrapup-reason-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/wrapup/reasons/s-wrapup-reason-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling customer-assist update-wrap-up-reason-settings", - "variant": "all-flags", - "args": [ - "--default-wrapup-reason-id=s-default-wrapup-reason-id", - "--location-id=s-location-id", - "--queue-id=s-queue-id", - "--wrapup-reasons=s-wrapup-reasons-1,s-wrapup-reasons-2", - "--wrapup-timer=7", - "--wrapup-timer-enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/locations/s-location-id/queues/s-queue-id/wrapup/settings", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"defaultWrapupReasonId\":\"s-default-wrapup-reason-id\",\"wrapupReasons\":[\"s-wrapup-reasons-1\",\"s-wrapup-reasons-2\"],\"wrapupTimer\":7,\"wrapupTimerEnabled\":true}" - } - ] - }, - { - "command": "calling customer-assist update-wrap-up-reason-settings", - "variant": "required", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/locations/s-location-id/queues/s-queue-id/wrapup/settings", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-assist update-wrap-up-reason-settings", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/locations/s-location-id/queues/s-queue-id/wrapup/settings", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling customer-assist validate-wrap-up-reason", - "variant": "all-flags", - "args": [ - "--name=s-name" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/wrapup/reasons/actions/validateName/invoke", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"name\":\"s-name\"}" - } - ] - }, - { - "command": "calling customer-assist validate-wrap-up-reason", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/wrapup/reasons/actions/validateName/invoke", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-assist validate-wrap-up-reason", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/wrapup/reasons/actions/validateName/invoke", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling customer-experience-essentials create-wrap-up-reason", - "variant": "all-flags", - "args": [ - "--assign-all-queues-enabled=true", - "--description=s-description", - "--name=s-name", - "--queues=s-queues-1,s-queues-2" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/wrapup/reasons", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"assignAllQueuesEnabled\":true,\"description\":\"s-description\",\"name\":\"s-name\",\"queues\":[\"s-queues-1\",\"s-queues-2\"]}" - } - ] - }, - { - "command": "calling customer-experience-essentials create-wrap-up-reason", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/wrapup/reasons", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-experience-essentials create-wrap-up-reason", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/wrapup/reasons", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling customer-experience-essentials delete-wrap-up-reason", - "variant": "all-flags", - "args": [ - "--wrapup-reason-id=s-wrapup-reason-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/wrapup/reasons/s-wrapup-reason-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-experience-essentials delete-wrap-up-reason", - "variant": "required", - "args": [ - "--wrapup-reason-id=s-wrapup-reason-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/wrapup/reasons/s-wrapup-reason-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-experience-essentials get-available-queues", - "variant": "all-flags", - "args": [ - "--wrapup-reason-id=s-wrapup-reason-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/wrapup/reasons/s-wrapup-reason-id/availableQueues", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-experience-essentials get-available-queues", - "variant": "required", - "args": [ - "--wrapup-reason-id=s-wrapup-reason-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/wrapup/reasons/s-wrapup-reason-id/availableQueues", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-experience-essentials get-available-queues", - "variant": "paginate", - "args": [ - "--wrapup-reason-id=s-wrapup-reason-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/wrapup/reasons/s-wrapup-reason-id/availableQueues", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-experience-essentials get-screen-pop-configuration", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/cxEssentials/screenPop?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-experience-essentials get-screen-pop-configuration", - "variant": "required", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/cxEssentials/screenPop?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-experience-essentials get-screen-pop-configuration", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/cxEssentials/screenPop?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-experience-essentials get-wrap-up-reason", - "variant": "all-flags", - "args": [ - "--wrapup-reason-id=s-wrapup-reason-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/wrapup/reasons/s-wrapup-reason-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-experience-essentials get-wrap-up-reason", - "variant": "required", - "args": [ - "--wrapup-reason-id=s-wrapup-reason-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/wrapup/reasons/s-wrapup-reason-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-experience-essentials get-wrap-up-reason", - "variant": "paginate", - "args": [ - "--wrapup-reason-id=s-wrapup-reason-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/wrapup/reasons/s-wrapup-reason-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-experience-essentials get-wrap-up-reason-settings", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/locations/s-location-id/queues/s-queue-id/wrapup/settings", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-experience-essentials get-wrap-up-reason-settings", - "variant": "required", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/locations/s-location-id/queues/s-queue-id/wrapup/settings", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-experience-essentials get-wrap-up-reason-settings", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/locations/s-location-id/queues/s-queue-id/wrapup/settings", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-experience-essentials list-available-agents", - "variant": "all-flags", - "args": [ - "--has-cx-essentials=s-has-cx-essentials", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/cxEssentials/agents/availableAgents?hasCxEssentials=s-has-cx-essentials&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-experience-essentials list-available-agents", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/cxEssentials/agents/availableAgents?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-experience-essentials list-available-agents", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/cxEssentials/agents/availableAgents?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-experience-essentials list-wrap-up-reasons", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/wrapup/reasons", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-experience-essentials list-wrap-up-reasons", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/wrapup/reasons", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-experience-essentials list-wrap-up-reasons", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/wrapup/reasons", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-experience-essentials update-screen-pop-configuration", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/cxEssentials/screenPop?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-experience-essentials update-screen-pop-configuration", - "variant": "required", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/cxEssentials/screenPop?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-experience-essentials update-screen-pop-configuration", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/queues/s-queue-id/cxEssentials/screenPop?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling customer-experience-essentials update-wrap-up-reason", - "variant": "all-flags", - "args": [ - "--assign-all-queues-enabled=true", - "--description=s-description", - "--name=s-name", - "--queues-to-assign=s-queues-to-assign-1,s-queues-to-assign-2", - "--queues-to-unassign=s-queues-to-unassign-1,s-queues-to-unassign-2", - "--unassign-all-queues-enabled=true", - "--wrapup-reason-id=s-wrapup-reason-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/wrapup/reasons/s-wrapup-reason-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"assignAllQueuesEnabled\":true,\"description\":\"s-description\",\"name\":\"s-name\",\"queuesToAssign\":[\"s-queues-to-assign-1\",\"s-queues-to-assign-2\"],\"queuesToUnassign\":[\"s-queues-to-unassign-1\",\"s-queues-to-unassign-2\"],\"unassignAllQueuesEnabled\":true}" - } - ] - }, - { - "command": "calling customer-experience-essentials update-wrap-up-reason", - "variant": "required", - "args": [ - "--wrapup-reason-id=s-wrapup-reason-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/wrapup/reasons/s-wrapup-reason-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-experience-essentials update-wrap-up-reason", - "variant": "body", - "args": [ - "--wrapup-reason-id=s-wrapup-reason-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/wrapup/reasons/s-wrapup-reason-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling customer-experience-essentials update-wrap-up-reason-settings", - "variant": "all-flags", - "args": [ - "--default-wrapup-reason-id=s-default-wrapup-reason-id", - "--location-id=s-location-id", - "--queue-id=s-queue-id", - "--wrapup-reasons=s-wrapup-reasons-1,s-wrapup-reasons-2", - "--wrapup-timer=7", - "--wrapup-timer-enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/locations/s-location-id/queues/s-queue-id/wrapup/settings", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"defaultWrapupReasonId\":\"s-default-wrapup-reason-id\",\"wrapupReasons\":[\"s-wrapup-reasons-1\",\"s-wrapup-reasons-2\"],\"wrapupTimer\":7,\"wrapupTimerEnabled\":true}" - } - ] - }, - { - "command": "calling customer-experience-essentials update-wrap-up-reason-settings", - "variant": "required", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/locations/s-location-id/queues/s-queue-id/wrapup/settings", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-experience-essentials update-wrap-up-reason-settings", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--queue-id=s-queue-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/locations/s-location-id/queues/s-queue-id/wrapup/settings", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling customer-experience-essentials validate-wrap-up-reason", - "variant": "all-flags", - "args": [ - "--name=s-name" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/wrapup/reasons/actions/validateName/invoke", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"name\":\"s-name\"}" - } - ] - }, - { - "command": "calling customer-experience-essentials validate-wrap-up-reason", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/wrapup/reasons/actions/validateName/invoke", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling customer-experience-essentials validate-wrap-up-reason", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/cxEssentials/wrapup/reasons/actions/validateName/invoke", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling dect-devices create-handset-network", - "variant": "all-flags", - "args": [ - "--custom-display-name=s-custom-display-name", - "--dect-network-id=s-dect-network-id", - "--line1-member-id=s-line1-member-id", - "--line2-member-id=s-line2-member-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks/s-dect-network-id/handsets?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"customDisplayName\":\"s-custom-display-name\",\"line1MemberId\":\"s-line1-member-id\",\"line2MemberId\":\"s-line2-member-id\"}" - } - ] - }, - { - "command": "calling dect-devices create-handset-network", - "variant": "required", - "args": [ - "--dect-network-id=s-dect-network-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks/s-dect-network-id/handsets?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling dect-devices create-handset-network", - "variant": "body", - "args": [ - "--dect-network-id=s-dect-network-id", - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks/s-dect-network-id/handsets?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling dect-devices create-list-handsets-network", - "variant": "all-flags", - "args": [ - "--dect-network-id=s-dect-network-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks/s-dect-network-id/handsets/bulk?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling dect-devices create-list-handsets-network", - "variant": "required", - "args": [ - "--dect-network-id=s-dect-network-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks/s-dect-network-id/handsets/bulk?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling dect-devices create-list-handsets-network", - "variant": "body", - "args": [ - "--dect-network-id=s-dect-network-id", - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks/s-dect-network-id/handsets/bulk?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling dect-devices create-multiple-base-stations", - "variant": "all-flags", - "args": [ - "--base-station-macs=s-base-station-macs-1,s-base-station-macs-2", - "--dect-network-id=s-dect-network-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks/s-dect-network-id/baseStations?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"baseStationMacs\":[\"s-base-station-macs-1\",\"s-base-station-macs-2\"]}" - } - ] - }, - { - "command": "calling dect-devices create-multiple-base-stations", - "variant": "required", - "args": [ - "--dect-network-id=s-dect-network-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks/s-dect-network-id/baseStations?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling dect-devices create-multiple-base-stations", - "variant": "body", - "args": [ - "--dect-network-id=s-dect-network-id", - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks/s-dect-network-id/baseStations?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling dect-devices create-network", - "variant": "all-flags", - "args": [ - "--default-access-code=s-default-access-code", - "--default-access-code-enabled=true", - "--display-name=s-display-name", - "--location-id=s-location-id", - "--model=s-model", - "--name=s-name" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"defaultAccessCode\":\"s-default-access-code\",\"defaultAccessCodeEnabled\":true,\"displayName\":\"s-display-name\",\"model\":\"s-model\",\"name\":\"s-name\"}" - } - ] - }, - { - "command": "calling dect-devices create-network", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling dect-devices create-network", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling dect-devices delete-bulk-network-base-stations", - "variant": "all-flags", - "args": [ - "--dect-network-id=s-dect-network-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks/s-dect-network-id/baseStations?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling dect-devices delete-bulk-network-base-stations", - "variant": "required", - "args": [ - "--dect-network-id=s-dect-network-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks/s-dect-network-id/baseStations?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling dect-devices delete-multiple-handsets", - "variant": "all-flags", - "args": [ - "--dect-network-id=s-dect-network-id", - "--delete-all=true", - "--handset-ids=s-handset-ids-1,s-handset-ids-2", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks/s-dect-network-id/handsets?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"deleteAll\":true,\"handsetIds\":[\"s-handset-ids-1\",\"s-handset-ids-2\"]}" - } - ] - }, - { - "command": "calling dect-devices delete-multiple-handsets", - "variant": "required", - "args": [ - "--dect-network-id=s-dect-network-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks/s-dect-network-id/handsets?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling dect-devices delete-multiple-handsets", - "variant": "body", - "args": [ - "--dect-network-id=s-dect-network-id", - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks/s-dect-network-id/handsets?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling dect-devices delete-network", - "variant": "all-flags", - "args": [ - "--dect-network-id=s-dect-network-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks/s-dect-network-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling dect-devices delete-network", - "variant": "required", - "args": [ - "--dect-network-id=s-dect-network-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks/s-dect-network-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling dect-devices delete-network-base-station", - "variant": "all-flags", - "args": [ - "--base-station-id=s-base-station-id", - "--dect-network-id=s-dect-network-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks/s-dect-network-id/baseStations/s-base-station-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling dect-devices delete-network-base-station", - "variant": "required", - "args": [ - "--base-station-id=s-base-station-id", - "--dect-network-id=s-dect-network-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks/s-dect-network-id/baseStations/s-base-station-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling dect-devices delete-network-handset", - "variant": "all-flags", - "args": [ - "--dect-network-id=s-dect-network-id", - "--handset-id=s-handset-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks/s-dect-network-id/handsets/s-handset-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling dect-devices delete-network-handset", - "variant": "required", - "args": [ - "--dect-network-id=s-dect-network-id", - "--handset-id=s-handset-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks/s-dect-network-id/handsets/s-handset-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling dect-devices generate-enable-service-password", - "variant": "all-flags", - "args": [ - "--dect-network-id=s-dect-network-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks/s-dect-network-id/serviceabilityPassword/actions/generate/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling dect-devices generate-enable-service-password", - "variant": "required", - "args": [ - "--dect-network-id=s-dect-network-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks/s-dect-network-id/serviceabilityPassword/actions/generate/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling dect-devices get-network", - "variant": "all-flags", - "args": [ - "--dect-network-id=s-dect-network-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks/s-dect-network-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling dect-devices get-network", - "variant": "required", - "args": [ - "--dect-network-id=s-dect-network-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks/s-dect-network-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling dect-devices get-network", - "variant": "paginate", - "args": [ - "--dect-network-id=s-dect-network-id", - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks/s-dect-network-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling dect-devices get-network-base-station", - "variant": "all-flags", - "args": [ - "--base-station-id=s-base-station-id", - "--dect-network-id=s-dect-network-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks/s-dect-network-id/baseStations/s-base-station-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling dect-devices get-network-base-station", - "variant": "required", - "args": [ - "--base-station-id=s-base-station-id", - "--dect-network-id=s-dect-network-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks/s-dect-network-id/baseStations/s-base-station-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling dect-devices get-network-base-station", - "variant": "paginate", - "args": [ - "--base-station-id=s-base-station-id", - "--dect-network-id=s-dect-network-id", - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks/s-dect-network-id/baseStations/s-base-station-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling dect-devices get-network-handset", - "variant": "all-flags", - "args": [ - "--dect-network-id=s-dect-network-id", - "--handset-id=s-handset-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks/s-dect-network-id/handsets/s-handset-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling dect-devices get-network-handset", - "variant": "required", - "args": [ - "--dect-network-id=s-dect-network-id", - "--handset-id=s-handset-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks/s-dect-network-id/handsets/s-handset-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling dect-devices get-network-handset", - "variant": "paginate", - "args": [ - "--dect-network-id=s-dect-network-id", - "--handset-id=s-handset-id", - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks/s-dect-network-id/handsets/s-handset-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling dect-devices get-service-password-status", - "variant": "all-flags", - "args": [ - "--dect-network-id=s-dect-network-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks/s-dect-network-id/serviceabilityPassword?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling dect-devices get-service-password-status", - "variant": "required", - "args": [ - "--dect-network-id=s-dect-network-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks/s-dect-network-id/serviceabilityPassword?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling dect-devices get-service-password-status", - "variant": "paginate", - "args": [ - "--dect-network-id=s-dect-network-id", - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks/s-dect-network-id/serviceabilityPassword?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling dect-devices list-handsets-network-id", - "variant": "all-flags", - "args": [ - "--basestation-id=s-basestation-id", - "--dect-network-id=s-dect-network-id", - "--location-id=s-location-id", - "--member-id=s-member-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks/s-dect-network-id/handsets?basestationId=s-basestation-id&memberId=s-member-id&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling dect-devices list-handsets-network-id", - "variant": "required", - "args": [ - "--dect-network-id=s-dect-network-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks/s-dect-network-id/handsets?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling dect-devices list-handsets-network-id", - "variant": "paginate", - "args": [ - "--dect-network-id=s-dect-network-id", - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks/s-dect-network-id/handsets?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling dect-devices list-network-base-stations", - "variant": "all-flags", - "args": [ - "--dect-network-id=s-dect-network-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks/s-dect-network-id/baseStations?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling dect-devices list-network-base-stations", - "variant": "required", - "args": [ - "--dect-network-id=s-dect-network-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks/s-dect-network-id/baseStations?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling dect-devices list-network-base-stations", - "variant": "paginate", - "args": [ - "--dect-network-id=s-dect-network-id", - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks/s-dect-network-id/baseStations?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling dect-devices list-networks", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--name=s-name" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/dectNetworks?locationId=s-location-id&name=s-name&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling dect-devices list-networks", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/dectNetworks?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling dect-devices list-networks", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/dectNetworks?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling dect-devices list-networks-associated-person", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/dectNetworks?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling dect-devices list-networks-associated-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/dectNetworks?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling dect-devices list-networks-associated-person", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/dectNetworks?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling dect-devices list-networks-associated-workspace", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/dectNetworks?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling dect-devices list-networks-associated-workspace", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/dectNetworks?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling dect-devices list-networks-associated-workspace", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/dectNetworks?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling dect-devices search-available-members", - "variant": "all-flags", - "args": [ - "--exclude-virtual-line=s-exclude-virtual-line", - "--extension=s-extension", - "--location-id=s-location-id", - "--max=s-max", - "--member-name=s-member-name", - "--order=s-order", - "--phone-number=s-phone-number", - "--start=s-start", - "--usage-type=s-usage-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/availableMembers?excludeVirtualLine=s-exclude-virtual-line&extension=s-extension&locationId=s-location-id&max=s-max&memberName=s-member-name&order=s-order&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&phoneNumber=s-phone-number&start=s-start&usageType=s-usage-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling dect-devices search-available-members", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/availableMembers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling dect-devices search-available-members", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/availableMembers?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling dect-devices update-network", - "variant": "all-flags", - "args": [ - "--dect-network-id=s-dect-network-id", - "--default-access-code=s-default-access-code", - "--default-access-code-enabled=true", - "--display-name=s-display-name", - "--location-id=s-location-id", - "--name=s-name" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks/s-dect-network-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"defaultAccessCode\":\"s-default-access-code\",\"defaultAccessCodeEnabled\":true,\"displayName\":\"s-display-name\",\"name\":\"s-name\"}" - } - ] - }, - { - "command": "calling dect-devices update-network", - "variant": "required", - "args": [ - "--dect-network-id=s-dect-network-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks/s-dect-network-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling dect-devices update-network", - "variant": "body", - "args": [ - "--dect-network-id=s-dect-network-id", - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks/s-dect-network-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling dect-devices update-network-handset", - "variant": "all-flags", - "args": [ - "--custom-display-name=s-custom-display-name", - "--dect-network-id=s-dect-network-id", - "--handset-id=s-handset-id", - "--line1-member-id=s-line1-member-id", - "--line2-member-id=s-line2-member-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks/s-dect-network-id/handsets/s-handset-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"customDisplayName\":\"s-custom-display-name\",\"line1MemberId\":\"s-line1-member-id\",\"line2MemberId\":\"s-line2-member-id\"}" - } - ] - }, - { - "command": "calling dect-devices update-network-handset", - "variant": "required", - "args": [ - "--dect-network-id=s-dect-network-id", - "--handset-id=s-handset-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks/s-dect-network-id/handsets/s-handset-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling dect-devices update-network-handset", - "variant": "body", - "args": [ - "--dect-network-id=s-dect-network-id", - "--handset-id=s-handset-id", - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks/s-dect-network-id/handsets/s-handset-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling dect-devices update-service-password-status", - "variant": "all-flags", - "args": [ - "--dect-network-id=s-dect-network-id", - "--enabled=true", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks/s-dect-network-id/serviceabilityPassword?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"enabled\":true}" - } - ] - }, - { - "command": "calling dect-devices update-service-password-status", - "variant": "required", - "args": [ - "--dect-network-id=s-dect-network-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks/s-dect-network-id/serviceabilityPassword?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling dect-devices update-service-password-status", - "variant": "body", - "args": [ - "--dect-network-id=s-dect-network-id", - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/dectNetworks/s-dect-network-id/serviceabilityPassword?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling device-call apply-changes", - "variant": "all-flags", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/actions/applyChanges/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call apply-changes", - "variant": "required", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/actions/applyChanges/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call apply-line-key-template", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/applyLineKeyTemplate?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call apply-line-key-template", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/applyLineKeyTemplate?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call apply-line-key-template", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/applyLineKeyTemplate?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling device-call create-line-key-template", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/devices/lineKeyTemplates?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call create-line-key-template", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/devices/lineKeyTemplates?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call create-line-key-template", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/devices/lineKeyTemplates?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling device-call delete-background-images", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/devices/backgroundImages?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call delete-background-images", - "variant": "required", - "args": null, - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/devices/backgroundImages?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call delete-background-images", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/devices/backgroundImages?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling device-call delete-line-key-template", - "variant": "all-flags", - "args": [ - "--template-id=s-template-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/devices/lineKeyTemplates/s-template-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call delete-line-key-template", - "variant": "required", - "args": [ - "--template-id=s-template-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/devices/lineKeyTemplates/s-template-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-change-settings-job-status", - "variant": "all-flags", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/callDeviceSettings/s-job-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-change-settings-job-status", - "variant": "required", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/callDeviceSettings/s-job-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-change-settings-job-status", - "variant": "paginate", - "args": [ - "--job-id=s-job-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/callDeviceSettings/s-job-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-count-available-members", - "variant": "all-flags", - "args": [ - "--device-location-id=s-device-location-id", - "--exclude-virtual-line=s-exclude-virtual-line", - "--extension=s-extension", - "--location-id=s-location-id", - "--member-name=s-member-name", - "--phone-number=s-phone-number", - "--usage-type=s-usage-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/availableMembers/count?deviceLocationId=s-device-location-id&excludeVirtualLine=s-exclude-virtual-line&extension=s-extension&locationId=s-location-id&memberName=s-member-name&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&phoneNumber=s-phone-number&usageType=s-usage-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-count-available-members", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/availableMembers/count?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-count-available-members", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/availableMembers/count?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-count-members", - "variant": "all-flags", - "args": [ - "--device-id=s-device-id", - "--extension=s-extension", - "--location-id=s-location-id", - "--member-name=s-member-name", - "--phone-number=s-phone-number", - "--usage-type=s-usage-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/availableMembers/count?extension=s-extension&locationId=s-location-id&memberName=s-member-name&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&phoneNumber=s-phone-number&usageType=s-usage-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-count-members", - "variant": "required", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/availableMembers/count?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-count-members", - "variant": "paginate", - "args": [ - "--device-id=s-device-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/availableMembers/count?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-customer-dynamic-settings", - "variant": "all-flags", - "args": [ - "--family-or-model-display-name=s-family-or-model-display-name", - "--tags=s-tags-1,s-tags-2" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/lists/devices/dynamicSettings/actions/getSettings/invoke?familyOrModelDisplayName=s-family-or-model-display-name&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"tags\":[\"s-tags-1\",\"s-tags-2\"]}" - } - ] - }, - { - "command": "calling device-call get-customer-dynamic-settings", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/lists/devices/dynamicSettings/actions/getSettings/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-customer-dynamic-settings", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/lists/devices/dynamicSettings/actions/getSettings/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling device-call get-customer-dynamic-settings-2", - "variant": "all-flags", - "args": [ - "--family-or-model-display-name=s-family-or-model-display-name", - "--tags=s-tags-1,s-tags-2" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/lists/devices/dynamicSettings/actions/getSettings/invoke?familyOrModelDisplayName=s-family-or-model-display-name&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"tags\":[\"s-tags-1\",\"s-tags-2\"]}" - } - ] - }, - { - "command": "calling device-call get-customer-dynamic-settings-2", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/lists/devices/dynamicSettings/actions/getSettings/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-customer-dynamic-settings-2", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/lists/devices/dynamicSettings/actions/getSettings/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling device-call get-dect-type-list", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/dectNetworks/supportedDevices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-dect-type-list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/dectNetworks/supportedDevices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-dect-type-list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/dectNetworks/supportedDevices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-dect-type-list-deprecated", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/dects/supportedDevices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-dect-type-list-deprecated", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/dects/supportedDevices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-dect-type-list-deprecated", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/dects/supportedDevices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-dynamic-settings", - "variant": "all-flags", - "args": [ - "--device-id=s-device-id", - "--tags=s-tags-1,s-tags-2" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/lists/devices/s-device-id/dynamicSettings/actions/getSettings/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"tags\":[\"s-tags-1\",\"s-tags-2\"]}" - } - ] - }, - { - "command": "calling device-call get-dynamic-settings", - "variant": "required", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/lists/devices/s-device-id/dynamicSettings/actions/getSettings/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-dynamic-settings", - "variant": "body", - "args": [ - "--device-id=s-device-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/lists/devices/s-device-id/dynamicSettings/actions/getSettings/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling device-call get-dynamic-settings-2", - "variant": "all-flags", - "args": [ - "--device-id=s-device-id", - "--tags=s-tags-1,s-tags-2" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/lists/devices/s-device-id/dynamicSettings/actions/getSettings/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"tags\":[\"s-tags-1\",\"s-tags-2\"]}" - } - ] - }, - { - "command": "calling device-call get-dynamic-settings-2", - "variant": "required", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/lists/devices/s-device-id/dynamicSettings/actions/getSettings/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-dynamic-settings-2", - "variant": "body", - "args": [ - "--device-id=s-device-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/lists/devices/s-device-id/dynamicSettings/actions/getSettings/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling device-call get-dynamic-settings-job-status", - "variant": "all-flags", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/dynamicDeviceSettings/s-job-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-dynamic-settings-job-status", - "variant": "required", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/dynamicDeviceSettings/s-job-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-dynamic-settings-job-status", - "variant": "paginate", - "args": [ - "--job-id=s-job-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/dynamicDeviceSettings/s-job-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-dynamic-settings-job-status-2", - "variant": "all-flags", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/dynamicDeviceSettings/s-job-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-dynamic-settings-job-status-2", - "variant": "required", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/dynamicDeviceSettings/s-job-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-dynamic-settings-job-status-2", - "variant": "paginate", - "args": [ - "--job-id=s-job-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/dynamicDeviceSettings/s-job-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-job-errors-apply-line-key-template-job", - "variant": "all-flags", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/applyLineKeyTemplate/s-job-id/errors?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-job-errors-apply-line-key-template-job", - "variant": "required", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/applyLineKeyTemplate/s-job-id/errors?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-job-errors-apply-line-key-template-job", - "variant": "paginate", - "args": [ - "--job-id=s-job-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/applyLineKeyTemplate/s-job-id/errors?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-job-errors-rebuild-phones-job", - "variant": "all-flags", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/rebuildPhones/s-job-id/errors?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-job-errors-rebuild-phones-job", - "variant": "required", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/rebuildPhones/s-job-id/errors?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-job-errors-rebuild-phones-job", - "variant": "paginate", - "args": [ - "--job-id=s-job-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/rebuildPhones/s-job-id/errors?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-job-status-apply-line-key-template-job", - "variant": "all-flags", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/applyLineKeyTemplate/s-job-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-job-status-apply-line-key-template-job", - "variant": "required", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/applyLineKeyTemplate/s-job-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-job-status-apply-line-key-template-job", - "variant": "paginate", - "args": [ - "--job-id=s-job-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/applyLineKeyTemplate/s-job-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-job-status-rebuild-phones-job", - "variant": "all-flags", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/rebuildPhones/s-job-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-job-status-rebuild-phones-job", - "variant": "required", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/rebuildPhones/s-job-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-job-status-rebuild-phones-job", - "variant": "paginate", - "args": [ - "--job-id=s-job-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/rebuildPhones/s-job-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-layout-id", - "variant": "all-flags", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/layout?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-layout-id", - "variant": "required", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/layout?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-layout-id", - "variant": "paginate", - "args": [ - "--device-id=s-device-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/layout?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-line-key-template", - "variant": "all-flags", - "args": [ - "--template-id=s-template-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/lineKeyTemplates/s-template-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-line-key-template", - "variant": "required", - "args": [ - "--template-id=s-template-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/lineKeyTemplates/s-template-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-line-key-template", - "variant": "paginate", - "args": [ - "--template-id=s-template-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/lineKeyTemplates/s-template-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-location-dynamic-settings", - "variant": "all-flags", - "args": [ - "--family-or-model-display-name=s-family-or-model-display-name", - "--location-id=s-location-id", - "--tags=s-tags-1,s-tags-2" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/lists/locations/s-location-id/devices/dynamicSettings/actions/getSettings/invoke?familyOrModelDisplayName=s-family-or-model-display-name&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"tags\":[\"s-tags-1\",\"s-tags-2\"]}" - } - ] - }, - { - "command": "calling device-call get-location-dynamic-settings", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/lists/locations/s-location-id/devices/dynamicSettings/actions/getSettings/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-location-dynamic-settings", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/lists/locations/s-location-id/devices/dynamicSettings/actions/getSettings/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling device-call get-location-dynamic-settings-2", - "variant": "all-flags", - "args": [ - "--family-or-model-display-name=s-family-or-model-display-name", - "--location-id=s-location-id", - "--tags=s-tags-1,s-tags-2" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/lists/locations/s-location-id/devices/dynamicSettings/actions/getSettings/invoke?familyOrModelDisplayName=s-family-or-model-display-name&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"tags\":[\"s-tags-1\",\"s-tags-2\"]}" - } - ] - }, - { - "command": "calling device-call get-location-dynamic-settings-2", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/lists/locations/s-location-id/devices/dynamicSettings/actions/getSettings/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-location-dynamic-settings-2", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/lists/locations/s-location-id/devices/dynamicSettings/actions/getSettings/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling device-call get-location-settings", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/devices/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-location-settings", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/devices/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-location-settings", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/devices/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-members", - "variant": "all-flags", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/members?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-members", - "variant": "required", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/members?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-members", - "variant": "paginate", - "args": [ - "--device-id=s-device-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/members?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-override-settings", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-override-settings", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-override-settings", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-person", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/devices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/devices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-person", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/devices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-settings", - "variant": "all-flags", - "args": [ - "--device-id=s-device-id", - "--device-model=s-device-model" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/settings?deviceModel=s-device-model&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-settings", - "variant": "required", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-settings", - "variant": "paginate", - "args": [ - "--device-id=s-device-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-settings-groups", - "variant": "all-flags", - "args": [ - "--family-or-model-display-name=s-family-or-model-display-name", - "--include-settings-type=s-include-settings-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/dynamicSettings/settingsGroups?familyOrModelDisplayName=s-family-or-model-display-name&includeSettingsType=s-include-settings-type&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-settings-groups", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/dynamicSettings/settingsGroups?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-settings-groups", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/dynamicSettings/settingsGroups?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-settings-groups-2", - "variant": "all-flags", - "args": [ - "--family-or-model-display-name=s-family-or-model-display-name", - "--include-settings-type=s-include-settings-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/dynamicSettings/settingsGroups?familyOrModelDisplayName=s-family-or-model-display-name&includeSettingsType=s-include-settings-type&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-settings-groups-2", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/dynamicSettings/settingsGroups?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-settings-groups-2", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/dynamicSettings/settingsGroups?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-settings-person", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/devices/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-settings-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/devices/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-settings-person", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/devices/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-settings-workspace", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/devices/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-settings-workspace", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/devices/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-settings-workspace", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/devices/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-user-count", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/devices/count?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-user-count", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/devices/count?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-user-count", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/devices/count?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-validation-schema", - "variant": "all-flags", - "args": [ - "--family-or-model-display-name=s-family-or-model-display-name" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/dynamicSettings/validationSchema?familyOrModelDisplayName=s-family-or-model-display-name&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-validation-schema", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/dynamicSettings/validationSchema?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-validation-schema", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/dynamicSettings/validationSchema?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-webex-calling", - "variant": "all-flags", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-webex-calling", - "variant": "required", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-webex-calling", - "variant": "paginate", - "args": [ - "--device-id=s-device-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-workspace", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/devices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-workspace", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/devices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call get-workspace", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/devices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call list-apply-line-key-template-jobs", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/applyLineKeyTemplate?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call list-apply-line-key-template-jobs", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/applyLineKeyTemplate?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call list-apply-line-key-template-jobs", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/applyLineKeyTemplate?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call list-background-images", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/backgroundImages?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call list-background-images", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/backgroundImages?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call list-background-images", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/backgroundImages?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call list-change-settings-job-errors", - "variant": "all-flags", - "args": [ - "--job-id=s-job-id", - "--max=s-max", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/callDeviceSettings/s-job-id/errors?max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call list-change-settings-job-errors", - "variant": "required", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/callDeviceSettings/s-job-id/errors?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call list-change-settings-job-errors", - "variant": "paginate", - "args": [ - "--job-id=s-job-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/callDeviceSettings/s-job-id/errors?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call list-change-settings-jobs", - "variant": "all-flags", - "args": [ - "--max=s-max", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/callDeviceSettings?max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call list-change-settings-jobs", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/callDeviceSettings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call list-change-settings-jobs", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/callDeviceSettings?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call list-dynamic-settings-job-errors", - "variant": "all-flags", - "args": [ - "--job-id=s-job-id", - "--max=s-max", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/dynamicDeviceSettings/s-job-id/errors?max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call list-dynamic-settings-job-errors", - "variant": "required", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/dynamicDeviceSettings/s-job-id/errors?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call list-dynamic-settings-job-errors", - "variant": "paginate", - "args": [ - "--job-id=s-job-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/dynamicDeviceSettings/s-job-id/errors?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call list-dynamic-settings-job-errors-2", - "variant": "all-flags", - "args": [ - "--job-id=s-job-id", - "--max=s-max", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/dynamicDeviceSettings/s-job-id/errors?max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call list-dynamic-settings-job-errors-2", - "variant": "required", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/dynamicDeviceSettings/s-job-id/errors?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call list-dynamic-settings-job-errors-2", - "variant": "paginate", - "args": [ - "--job-id=s-job-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/dynamicDeviceSettings/s-job-id/errors?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call list-dynamic-settings-jobs", - "variant": "all-flags", - "args": [ - "--max=s-max", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/dynamicDeviceSettings?max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call list-dynamic-settings-jobs", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/dynamicDeviceSettings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call list-dynamic-settings-jobs", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/dynamicDeviceSettings?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call list-dynamic-settings-jobs-2", - "variant": "all-flags", - "args": [ - "--max=s-max", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/dynamicDeviceSettings?max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call list-dynamic-settings-jobs-2", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/dynamicDeviceSettings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call list-dynamic-settings-jobs-2", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/dynamicDeviceSettings?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call list-line-key-templates", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/lineKeyTemplates?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call list-line-key-templates", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/lineKeyTemplates?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call list-line-key-templates", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/lineKeyTemplates?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call list-rebuild-phones-jobs", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/rebuildPhones?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call list-rebuild-phones-jobs", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/rebuildPhones?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call list-rebuild-phones-jobs", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/rebuildPhones?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call list-supported", - "variant": "all-flags", - "args": [ - "--allow-configure-layout-enabled=s-allow-configure-layout-enabled", - "--type=s-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/supportedDevices?allowConfigureLayoutEnabled=s-allow-configure-layout-enabled&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&type=s-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call list-supported", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/supportedDevices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call list-supported", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/supportedDevices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call list-supported-2", - "variant": "all-flags", - "args": [ - "--allow-configure-layout-enabled=s-allow-configure-layout-enabled", - "--type=s-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/supportedDevices?allowConfigureLayoutEnabled=s-allow-configure-layout-enabled&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&type=s-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call list-supported-2", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/supportedDevices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call list-supported-2", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/supportedDevices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call list-supported-3", - "variant": "all-flags", - "args": [ - "--allow-configure-layout-enabled=s-allow-configure-layout-enabled", - "--type=s-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/supportedDevices?allowConfigureLayoutEnabled=s-allow-configure-layout-enabled&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&type=s-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call list-supported-3", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/supportedDevices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call list-supported-3", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/supportedDevices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call preview-apply-line-key-template", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/devices/actions/previewApplyLineKeyTemplate/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call preview-apply-line-key-template", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/devices/actions/previewApplyLineKeyTemplate/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call preview-apply-line-key-template", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/devices/actions/previewApplyLineKeyTemplate/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling device-call rebuild-phones-configuration", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/rebuildPhones?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"locationId\":\"s-location-id\"}" - } - ] - }, - { - "command": "calling device-call rebuild-phones-configuration", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/rebuildPhones?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call rebuild-phones-configuration", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/rebuildPhones?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling device-call search-members", - "variant": "all-flags", - "args": [ - "--device-id=s-device-id", - "--extension=s-extension", - "--location-id=s-location-id", - "--max=s-max", - "--member-name=s-member-name", - "--order=s-order", - "--phone-number=s-phone-number", - "--start=s-start", - "--usage-type=s-usage-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/availableMembers?extension=s-extension&locationId=s-location-id&max=s-max&memberName=s-member-name&order=s-order&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&phoneNumber=s-phone-number&start=s-start&usageType=s-usage-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call search-members", - "variant": "required", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/availableMembers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call search-members", - "variant": "paginate", - "args": [ - "--device-id=s-device-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/availableMembers?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call update-dynamic-settings", - "variant": "all-flags", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/dynamicSettings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call update-dynamic-settings", - "variant": "required", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/dynamicSettings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call update-dynamic-settings", - "variant": "body", - "args": [ - "--device-id=s-device-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/dynamicSettings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling device-call update-dynamic-settings-across-org-location", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/dynamicDeviceSettings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call update-dynamic-settings-across-org-location", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/dynamicDeviceSettings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call update-dynamic-settings-across-org-location", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/dynamicDeviceSettings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling device-call update-hoteling-settings-person-primary", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/devices/settings/hoteling?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call update-hoteling-settings-person-primary", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/devices/settings/hoteling?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call update-hoteling-settings-person-primary", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/devices/settings/hoteling?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling device-call update-layout-id", - "variant": "all-flags", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/layout?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call update-layout-id", - "variant": "required", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/layout?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call update-layout-id", - "variant": "body", - "args": [ - "--device-id=s-device-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/layout?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling device-call update-line-key-template", - "variant": "all-flags", - "args": [ - "--template-id=s-template-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/devices/lineKeyTemplates/s-template-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call update-line-key-template", - "variant": "required", - "args": [ - "--template-id=s-template-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/devices/lineKeyTemplates/s-template-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call update-line-key-template", - "variant": "body", - "args": [ - "--template-id=s-template-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/devices/lineKeyTemplates/s-template-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling device-call update-members", - "variant": "all-flags", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/members?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call update-members", - "variant": "required", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/members?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call update-members", - "variant": "body", - "args": [ - "--device-id=s-device-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/members?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling device-call update-settings", - "variant": "all-flags", - "args": [ - "--device-id=s-device-id", - "--device-model=s-device-model" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/settings?deviceModel=s-device-model&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call update-settings", - "variant": "required", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call update-settings", - "variant": "body", - "args": [ - "--device-id=s-device-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling device-call update-settings-across-org-location-job", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/callDeviceSettings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call update-settings-across-org-location-job", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/callDeviceSettings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call update-settings-across-org-location-job", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/callDeviceSettings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling device-call update-settings-person", - "variant": "all-flags", - "args": [ - "--compression=s-compression", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/devices/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"compression\":\"s-compression\"}" - } - ] - }, - { - "command": "calling device-call update-settings-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/devices/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call update-settings-person", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/devices/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling device-call update-settings-workspace", - "variant": "all-flags", - "args": [ - "--compression=s-compression", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/devices/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"compression\":\"s-compression\"}" - } - ] - }, - { - "command": "calling device-call update-settings-workspace", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/devices/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call update-settings-workspace", - "variant": "body", - "args": [ - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/devices/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling device-call update-specified-settings", - "variant": "all-flags", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/dynamicSettings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call update-specified-settings", - "variant": "required", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/dynamicSettings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call update-specified-settings", - "variant": "body", - "args": [ - "--device-id=s-device-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/dynamicSettings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling device-call update-third-party", - "variant": "all-flags", - "args": [ - "--device-id=s-device-id", - "--sip-password=s-sip-password" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"sipPassword\":\"s-sip-password\"}" - } - ] - }, - { - "command": "calling device-call update-third-party", - "variant": "required", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call update-third-party", - "variant": "body", - "args": [ - "--device-id=s-device-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling device-call update-workspace", - "variant": "all-flags", - "args": [ - "--enabled=true", - "--guest-hours-limit=7", - "--limit-guest-use=true", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/devices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"enabled\":true,\"guestHoursLimit\":7,\"limitGuestUse\":true}" - } - ] - }, - { - "command": "calling device-call update-workspace", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/devices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call update-workspace", - "variant": "body", - "args": [ - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/devices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling device-call updates-dynamic-settings-across-org-location", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/dynamicDeviceSettings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call updates-dynamic-settings-across-org-location", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/dynamicDeviceSettings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call updates-dynamic-settings-across-org-location", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/dynamicDeviceSettings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling device-call upload-background-image", - "variant": "all-flags", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/actions/backgroundImageUpload/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call upload-background-image", - "variant": "required", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/actions/backgroundImageUpload/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call validate-list-mac-address", - "variant": "all-flags", - "args": [ - "--macs=s-macs-1,s-macs-2" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/devices/actions/validateMacs/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"macs\":[\"s-macs-1\",\"s-macs-2\"]}" - } - ] - }, - { - "command": "calling device-call validate-list-mac-address", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/devices/actions/validateMacs/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling device-call validate-list-mac-address", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/devices/actions/validateMacs/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling devices create-activation-code", - "variant": "all-flags", - "args": [ - "--model=s-model", - "--person-id=s-person-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/devices/activationCode?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"model\":\"s-model\",\"personId\":\"s-person-id\",\"workspaceId\":\"s-workspace-id\"}" - } - ] - }, - { - "command": "calling devices create-activation-code", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/devices/activationCode?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling devices create-activation-code", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/devices/activationCode?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling devices create-mac-address", - "variant": "all-flags", - "args": [ - "--mac=s-mac", - "--model=s-model", - "--password=s-password", - "--person-id=s-person-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/devices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"mac\":\"s-mac\",\"model\":\"s-model\",\"password\":\"s-password\",\"personId\":\"s-person-id\",\"workspaceId\":\"s-workspace-id\"}" - } - ] - }, - { - "command": "calling devices create-mac-address", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/devices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling devices create-mac-address", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/devices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling devices delete", - "variant": "all-flags", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/devices/s-device-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling devices delete", - "variant": "required", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/devices/s-device-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling devices get", - "variant": "all-flags", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/devices/s-device-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling devices get", - "variant": "required", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/devices/s-device-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling devices get", - "variant": "paginate", - "args": [ - "--device-id=s-device-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/devices/s-device-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling devices list", - "variant": "all-flags", - "args": [ - "--capability=s-capability", - "--connection-status=s-connection-status", - "--device-platform=s-device-platform", - "--display-name=s-display-name", - "--error-code=s-error-code", - "--location-id=s-location-id", - "--mac=s-mac", - "--max=s-max", - "--permission=s-permission", - "--person-id=s-person-id", - "--planned-maintenance=s-planned-maintenance", - "--product=s-product", - "--serial=s-serial", - "--software=s-software", - "--start=s-start", - "--tag=s-tag", - "--type=s-type", - "--upgrade-channel=s-upgrade-channel", - "--workspace-id=s-workspace-id", - "--workspace-location-id=s-workspace-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/devices?capability=s-capability&connectionStatus=s-connection-status&devicePlatform=s-device-platform&displayName=s-display-name&errorCode=s-error-code&locationId=s-location-id&mac=s-mac&max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&permission=s-permission&personId=s-person-id&plannedMaintenance=s-planned-maintenance&product=s-product&serial=s-serial&software=s-software&start=s-start&tag=s-tag&type=s-type&upgradeChannel=s-upgrade-channel&workspaceId=s-workspace-id&workspaceLocationId=s-workspace-location-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling devices list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/devices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling devices list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/devices?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling devices update-tags", - "variant": "all-flags", - "args": [ - "--device-id=s-device-id", - "--op=s-op", - "--path=s-path", - "--value=s-value-1,s-value-2" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://webexapis.com/v1/devices/s-device-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"op\":\"s-op\",\"path\":\"s-path\",\"value\":[\"s-value-1\",\"s-value-2\"]}" - } - ] - }, - { - "command": "calling devices update-tags", - "variant": "required", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://webexapis.com/v1/devices/s-device-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling devices update-tags", - "variant": "body", - "args": [ - "--device-id=s-device-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://webexapis.com/v1/devices/s-device-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling emergency-services create-account-admin-redsky", - "variant": "all-flags", - "args": [ - "--email=s-email", - "--org-prefix=s-org-prefix", - "--partner-redsky-org-id=s-partner-redsky-org-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/redSky?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"email\":\"s-email\",\"orgPrefix\":\"s-org-prefix\",\"partnerRedskyOrgId\":\"s-partner-redsky-org-id\"}" - } - ] - }, - { - "command": "calling emergency-services create-account-admin-redsky", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/redSky?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services create-account-admin-redsky", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/redSky?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling emergency-services create-redsky-building-address-location", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/redSky/building?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services create-redsky-building-address-location", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/redSky/building?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services create-redsky-building-address-location", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/redSky/building?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling emergency-services get-dependencies-hunt-group-callback", - "variant": "all-flags", - "args": [ - "--hunt-group-id=s-hunt-group-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/huntGroups/s-hunt-group-id/emergencyCallbackNumber/dependencies?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services get-dependencies-hunt-group-callback", - "variant": "required", - "args": [ - "--hunt-group-id=s-hunt-group-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/huntGroups/s-hunt-group-id/emergencyCallbackNumber/dependencies?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services get-dependencies-hunt-group-callback", - "variant": "paginate", - "args": [ - "--hunt-group-id=s-hunt-group-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/huntGroups/s-hunt-group-id/emergencyCallbackNumber/dependencies?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services get-dependencies-vline-callback", - "variant": "all-flags", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/emergencyCallbackNumber/dependencies?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services get-dependencies-vline-callback", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/emergencyCallbackNumber/dependencies?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services get-dependencies-vline-callback", - "variant": "paginate", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/emergencyCallbackNumber/dependencies?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services get-location-call-notification", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/emergencyCallNotification?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services get-location-call-notification", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/emergencyCallNotification?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services get-location-call-notification", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/emergencyCallNotification?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services get-location-redsky-calling-parameters", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/redSky?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services get-location-redsky-calling-parameters", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/redSky?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services get-location-redsky-calling-parameters", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/redSky?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services get-location-redsky-compliance-status", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/redSky/status?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services get-location-redsky-compliance-status", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/redSky/status?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services get-location-redsky-compliance-status", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/redSky/status?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services get-org-call-notification", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/emergencyCallNotification?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services get-org-call-notification", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/emergencyCallNotification?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services get-org-call-notification", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/emergencyCallNotification?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services get-org-compliance-status-location-status-list", - "variant": "all-flags", - "args": [ - "--max=s-max", - "--order=s-order", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/redSky/complianceStatus?max=s-max&order=s-order&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services get-org-compliance-status-location-status-list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/redSky/complianceStatus?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services get-org-compliance-status-location-status-list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/redSky/complianceStatus?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services get-org-compliance-status-redsky-account", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/redSky/status?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services get-org-compliance-status-redsky-account", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/redSky/status?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services get-org-compliance-status-redsky-account", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/redSky/status?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services get-person-callback", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/emergencyCallbackNumber?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services get-person-callback", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/emergencyCallbackNumber?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services get-person-callback", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/emergencyCallbackNumber?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services get-person-callback-dependencies", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/emergencyCallbackNumber/dependencies?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services get-person-callback-dependencies", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/emergencyCallbackNumber/dependencies?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services get-person-callback-dependencies", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/emergencyCallbackNumber/dependencies?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services get-redsky-account", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/redSky?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services get-redsky-account", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/redSky?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services get-redsky-account", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/redSky?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services get-vline-callback-settings", - "variant": "all-flags", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/emergencyCallbackNumber?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services get-vline-callback-settings", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/emergencyCallbackNumber?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services get-vline-callback-settings", - "variant": "paginate", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/emergencyCallbackNumber?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services get-workspace-callback", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/emergencyCallbackNumber?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services get-workspace-callback", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/emergencyCallbackNumber?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services get-workspace-callback", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/emergencyCallbackNumber?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services get-workspace-callback-dependencies", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/emergencyCallbackNumber/dependencies?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services get-workspace-callback-dependencies", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/emergencyCallbackNumber/dependencies?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services get-workspace-callback-dependencies", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/emergencyCallbackNumber/dependencies?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services login-redsky-admin-account", - "variant": "all-flags", - "args": [ - "--email=s-email", - "--password=s-password", - "--red-sky-org-id=s-red-sky-org-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/redSky/actions/login/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"email\":\"s-email\",\"password\":\"s-password\",\"redSkyOrgId\":\"s-red-sky-org-id\"}" - } - ] - }, - { - "command": "calling emergency-services login-redsky-admin-account", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/redSky/actions/login/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services login-redsky-admin-account", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/redSky/actions/login/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling emergency-services update-location-call-notification", - "variant": "all-flags", - "args": [ - "--email-address=s-email-address", - "--emergency-call-notification-enabled=true", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/emergencyCallNotification?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"emailAddress\":\"s-email-address\",\"emergencyCallNotificationEnabled\":true}" - } - ] - }, - { - "command": "calling emergency-services update-location-call-notification", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/emergencyCallNotification?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services update-location-call-notification", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/emergencyCallNotification?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling emergency-services update-location-redsky-compliance-status", - "variant": "all-flags", - "args": [ - "--compliance-status=s-compliance-status", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/redSky/status?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"complianceStatus\":\"s-compliance-status\"}" - } - ] - }, - { - "command": "calling emergency-services update-location-redsky-compliance-status", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/redSky/status?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services update-location-redsky-compliance-status", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/redSky/status?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling emergency-services update-org-call-notification", - "variant": "all-flags", - "args": [ - "--allow-email-notification-all-location-enabled=true", - "--email-address=s-email-address", - "--emergency-call-notification-enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/emergencyCallNotification?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"allowEmailNotificationAllLocationEnabled\":true,\"emailAddress\":\"s-email-address\",\"emergencyCallNotificationEnabled\":true}" - } - ] - }, - { - "command": "calling emergency-services update-org-call-notification", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/emergencyCallNotification?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services update-org-call-notification", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/emergencyCallNotification?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling emergency-services update-org-redsky-account-compliance-status", - "variant": "all-flags", - "args": [ - "--compliance-status=s-compliance-status" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/redSky/status?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"complianceStatus\":\"s-compliance-status\"}" - } - ] - }, - { - "command": "calling emergency-services update-org-redsky-account-compliance-status", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/redSky/status?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services update-org-redsky-account-compliance-status", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/redSky/status?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling emergency-services update-person-callback", - "variant": "all-flags", - "args": [ - "--elin-enabled=true", - "--elin-for-webex-app-enabled=true", - "--location-member-id=s-location-member-id", - "--person-id=s-person-id", - "--selected=s-selected" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/emergencyCallbackNumber?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"elinEnabled\":true,\"elinForWebexAppEnabled\":true,\"locationMemberId\":\"s-location-member-id\",\"selected\":\"s-selected\"}" - } - ] - }, - { - "command": "calling emergency-services update-person-callback", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/emergencyCallbackNumber?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services update-person-callback", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/emergencyCallbackNumber?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling emergency-services update-redsky-building-address-location", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/redSky/building?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services update-redsky-building-address-location", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/redSky/building?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services update-redsky-building-address-location", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/redSky/building?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling emergency-services update-redsky-settings", - "variant": "all-flags", - "args": [ - "--company-id=s-company-id", - "--email=s-email", - "--enabled=true", - "--external-tenant-enabled=true", - "--password=s-password", - "--secret=s-secret" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/redSky/serviceSettings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"companyId\":\"s-company-id\",\"email\":\"s-email\",\"enabled\":true,\"externalTenantEnabled\":true,\"password\":\"s-password\",\"secret\":\"s-secret\"}" - } - ] - }, - { - "command": "calling emergency-services update-redsky-settings", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/redSky/serviceSettings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services update-redsky-settings", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/redSky/serviceSettings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling emergency-services update-vline-callback-settings", - "variant": "all-flags", - "args": [ - "--location-member-id=s-location-member-id", - "--selected=s-selected", - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/emergencyCallbackNumber?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"locationMemberId\":\"s-location-member-id\",\"selected\":\"s-selected\"}" - } - ] - }, - { - "command": "calling emergency-services update-vline-callback-settings", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/emergencyCallbackNumber?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services update-vline-callback-settings", - "variant": "body", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/emergencyCallbackNumber?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling emergency-services update-workspace-callback", - "variant": "all-flags", - "args": [ - "--elin-enabled=true", - "--location-member-id=s-location-member-id", - "--selected=s-selected", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/emergencyCallbackNumber?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"elinEnabled\":true,\"locationMemberId\":\"s-location-member-id\",\"selected\":\"s-selected\"}" - } - ] - }, - { - "command": "calling emergency-services update-workspace-callback", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/emergencyCallbackNumber?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling emergency-services update-workspace-callback", - "variant": "body", - "args": [ - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/emergencyCallbackNumber?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling external-voicemail answer", - "variant": "all-flags", - "args": [ - "--call-id=s-call-id", - "--endpoint-id=s-endpoint-id", - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/answer", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"callId\":\"s-call-id\",\"endpointId\":\"s-endpoint-id\",\"lineOwnerId\":\"s-line-owner-id\"}" - } - ] - }, - { - "command": "calling external-voicemail answer", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/answer", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling external-voicemail answer", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/answer", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling external-voicemail barge", - "variant": "all-flags", - "args": [ - "--endpoint-id=s-endpoint-id", - "--line-owner-id=s-line-owner-id", - "--single-number-reach-phone-number=s-single-number-reach-phone-number", - "--target=s-target" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/bargeIn", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"endpointId\":\"s-endpoint-id\",\"lineOwnerId\":\"s-line-owner-id\",\"singleNumberReachPhoneNumber\":\"s-single-number-reach-phone-number\",\"target\":\"s-target\"}" - } - ] - }, - { - "command": "calling external-voicemail barge", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/bargeIn", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling external-voicemail barge", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/bargeIn", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling external-voicemail dial", - "variant": "all-flags", - "args": [ - "--destination=s-destination", - "--endpoint-id=s-endpoint-id", - "--line-owner-id=s-line-owner-id", - "--single-number-reach-phone-number=s-single-number-reach-phone-number" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/dial", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"destination\":\"s-destination\",\"endpointId\":\"s-endpoint-id\",\"lineOwnerId\":\"s-line-owner-id\",\"singleNumberReachPhoneNumber\":\"s-single-number-reach-phone-number\"}" - } - ] - }, - { - "command": "calling external-voicemail dial", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/dial", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling external-voicemail dial", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/dial", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling external-voicemail divert", - "variant": "all-flags", - "args": [ - "--call-id=s-call-id", - "--destination=s-destination", - "--line-owner-id=s-line-owner-id", - "--to-voicemail=true" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/divert", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"callId\":\"s-call-id\",\"destination\":\"s-destination\",\"lineOwnerId\":\"s-line-owner-id\",\"toVoicemail\":true}" - } - ] - }, - { - "command": "calling external-voicemail divert", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/divert", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling external-voicemail divert", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/divert", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling external-voicemail get", - "variant": "all-flags", - "args": [ - "--destination=s-destination", - "--endpoint-id=s-endpoint-id", - "--line-owner-id=s-line-owner-id", - "--single-number-reach-phone-number=s-single-number-reach-phone-number" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/retrieve", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"destination\":\"s-destination\",\"endpointId\":\"s-endpoint-id\",\"lineOwnerId\":\"s-line-owner-id\",\"singleNumberReachPhoneNumber\":\"s-single-number-reach-phone-number\"}" - } - ] - }, - { - "command": "calling external-voicemail get", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/retrieve", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling external-voicemail get", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/retrieve", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling external-voicemail get-call", - "variant": "all-flags", - "args": [ - "--call-id=s-call-id", - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/calls/s-call-id?lineOwnerId=s-line-owner-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling external-voicemail get-call", - "variant": "required", - "args": [ - "--call-id=s-call-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/calls/s-call-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling external-voicemail get-call", - "variant": "paginate", - "args": [ - "--call-id=s-call-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/calls/s-call-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling external-voicemail hangup", - "variant": "all-flags", - "args": [ - "--call-id=s-call-id", - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/hangup", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"callId\":\"s-call-id\",\"lineOwnerId\":\"s-line-owner-id\"}" - } - ] - }, - { - "command": "calling external-voicemail hangup", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/hangup", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling external-voicemail hangup", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/hangup", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling external-voicemail hold", - "variant": "all-flags", - "args": [ - "--call-id=s-call-id", - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/hold", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"callId\":\"s-call-id\",\"lineOwnerId\":\"s-line-owner-id\"}" - } - ] - }, - { - "command": "calling external-voicemail hold", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/hold", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling external-voicemail hold", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/hold", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling external-voicemail list-call-history", - "variant": "all-flags", - "args": [ - "--type=s-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/calls/history?type=s-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling external-voicemail list-call-history", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/calls/history", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling external-voicemail list-call-history", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/calls/history", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling external-voicemail list-calls", - "variant": "all-flags", - "args": [ - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/calls?lineOwnerId=s-line-owner-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling external-voicemail list-calls", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/calls", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling external-voicemail list-calls", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/calls", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling external-voicemail mute", - "variant": "all-flags", - "args": [ - "--call-id=s-call-id", - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/mute", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"callId\":\"s-call-id\",\"lineOwnerId\":\"s-line-owner-id\"}" - } - ] - }, - { - "command": "calling external-voicemail mute", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/mute", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling external-voicemail mute", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/mute", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling external-voicemail park", - "variant": "all-flags", - "args": [ - "--call-id=s-call-id", - "--destination=s-destination", - "--is-group-park=true", - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/park", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"callId\":\"s-call-id\",\"destination\":\"s-destination\",\"isGroupPark\":true,\"lineOwnerId\":\"s-line-owner-id\"}" - } - ] - }, - { - "command": "calling external-voicemail park", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/park", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling external-voicemail park", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/park", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling external-voicemail pause-recording", - "variant": "all-flags", - "args": [ - "--call-id=s-call-id", - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/pauseRecording", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"callId\":\"s-call-id\",\"lineOwnerId\":\"s-line-owner-id\"}" - } - ] - }, - { - "command": "calling external-voicemail pause-recording", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/pauseRecording", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling external-voicemail pause-recording", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/pauseRecording", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling external-voicemail pickup", - "variant": "all-flags", - "args": [ - "--endpoint-id=s-endpoint-id", - "--line-owner-id=s-line-owner-id", - "--single-number-reach-phone-number=s-single-number-reach-phone-number", - "--target=s-target" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/pickup", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"endpointId\":\"s-endpoint-id\",\"lineOwnerId\":\"s-line-owner-id\",\"singleNumberReachPhoneNumber\":\"s-single-number-reach-phone-number\",\"target\":\"s-target\"}" - } - ] - }, - { - "command": "calling external-voicemail pickup", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/pickup", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling external-voicemail pickup", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/pickup", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling external-voicemail pull", - "variant": "all-flags", - "args": [ - "--endpoint-id=s-endpoint-id", - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/pull", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"endpointId\":\"s-endpoint-id\",\"lineOwnerId\":\"s-line-owner-id\"}" - } - ] - }, - { - "command": "calling external-voicemail pull", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/pull", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling external-voicemail pull", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/pull", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling external-voicemail push", - "variant": "all-flags", - "args": [ - "--call-id=s-call-id", - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/push", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"callId\":\"s-call-id\",\"lineOwnerId\":\"s-line-owner-id\"}" - } - ] - }, - { - "command": "calling external-voicemail push", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/push", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling external-voicemail push", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/push", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling external-voicemail reject", - "variant": "all-flags", - "args": [ - "--action=s-action", - "--call-id=s-call-id", - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/reject", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"action\":\"s-action\",\"callId\":\"s-call-id\",\"lineOwnerId\":\"s-line-owner-id\"}" - } - ] - }, - { - "command": "calling external-voicemail reject", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/reject", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling external-voicemail reject", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/reject", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling external-voicemail resume", - "variant": "all-flags", - "args": [ - "--call-id=s-call-id", - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/resume", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"callId\":\"s-call-id\",\"lineOwnerId\":\"s-line-owner-id\"}" - } - ] - }, - { - "command": "calling external-voicemail resume", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/resume", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling external-voicemail resume", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/resume", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling external-voicemail resume-recording", - "variant": "all-flags", - "args": [ - "--call-id=s-call-id", - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/resumeRecording", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"callId\":\"s-call-id\",\"lineOwnerId\":\"s-line-owner-id\"}" - } - ] - }, - { - "command": "calling external-voicemail resume-recording", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/resumeRecording", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling external-voicemail resume-recording", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/resumeRecording", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling external-voicemail start-recording", - "variant": "all-flags", - "args": [ - "--call-id=s-call-id", - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/startRecording", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"callId\":\"s-call-id\",\"lineOwnerId\":\"s-line-owner-id\"}" - } - ] - }, - { - "command": "calling external-voicemail start-recording", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/startRecording", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling external-voicemail start-recording", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/startRecording", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling external-voicemail stop-recording", - "variant": "all-flags", - "args": [ - "--call-id=s-call-id", - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/stopRecording", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"callId\":\"s-call-id\",\"lineOwnerId\":\"s-line-owner-id\"}" - } - ] - }, - { - "command": "calling external-voicemail stop-recording", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/stopRecording", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling external-voicemail stop-recording", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/stopRecording", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling external-voicemail transfer", - "variant": "all-flags", - "args": [ - "--call-id1=s-call-id1", - "--call-id2=s-call-id2", - "--destination=s-destination", - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/transfer", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"callId1\":\"s-call-id1\",\"callId2\":\"s-call-id2\",\"destination\":\"s-destination\",\"lineOwnerId\":\"s-line-owner-id\"}" - } - ] - }, - { - "command": "calling external-voicemail transfer", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/transfer", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling external-voicemail transfer", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/transfer", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling external-voicemail transmit-dtmf", - "variant": "all-flags", - "args": [ - "--call-id=s-call-id", - "--dtmf=s-dtmf", - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/transmitDtmf", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"callId\":\"s-call-id\",\"dtmf\":\"s-dtmf\",\"lineOwnerId\":\"s-line-owner-id\"}" - } - ] - }, - { - "command": "calling external-voicemail transmit-dtmf", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/transmitDtmf", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling external-voicemail transmit-dtmf", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/transmitDtmf", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling external-voicemail unmute", - "variant": "all-flags", - "args": [ - "--call-id=s-call-id", - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/unmute", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"callId\":\"s-call-id\",\"lineOwnerId\":\"s-line-owner-id\"}" - } - ] - }, - { - "command": "calling external-voicemail unmute", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/unmute", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling external-voicemail unmute", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/calls/unmute", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling external-voicemail update-clear-message-waiting-indicator", - "variant": "all-flags", - "args": [ - "--action=s-action", - "--id=s-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/externalVoicemail/mwi?id=s-id&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"action\":\"s-action\"}" - } - ] - }, - { - "command": "calling external-voicemail update-clear-message-waiting-indicator", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/externalVoicemail/mwi?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling external-voicemail update-clear-message-waiting-indicator", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/externalVoicemail/mwi?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling hot-desk delete-session", - "variant": "all-flags", - "args": [ - "--session-id=s-session-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/hotdesk/sessions/s-session-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling hot-desk delete-session", - "variant": "required", - "args": [ - "--session-id=s-session-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/hotdesk/sessions/s-session-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling hot-desk list-sessions", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hotdesk/sessions?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&personId=s-person-id&workspaceId=s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling hot-desk list-sessions", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hotdesk/sessions?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling hot-desk list-sessions", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hotdesk/sessions?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling hot-desking-sign-in-via-voice-portal location", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/features/hotDesking?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling hot-desking-sign-in-via-voice-portal location", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/features/hotDesking?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling hot-desking-sign-in-via-voice-portal location", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/features/hotDesking?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling hot-desking-sign-in-via-voice-portal update-location", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--voice-portal-hot-desk-sign-in-enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/features/hotDesking?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"voicePortalHotDeskSignInEnabled\":true}" - } - ] - }, - { - "command": "calling hot-desking-sign-in-via-voice-portal update-location", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/features/hotDesking?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling hot-desking-sign-in-via-voice-portal update-location", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/features/hotDesking?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling hot-desking-sign-in-via-voice-portal update-user", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id", - "--voice-portal-hot-desk-sign-in-enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/features/hotDesking/guest?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"voicePortalHotDeskSignInEnabled\":true}" - } - ] - }, - { - "command": "calling hot-desking-sign-in-via-voice-portal update-user", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/features/hotDesking/guest?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling hot-desking-sign-in-via-voice-portal update-user", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/features/hotDesking/guest?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling hot-desking-sign-in-via-voice-portal user", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/features/hotDesking/guest?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling hot-desking-sign-in-via-voice-portal user", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/features/hotDesking/guest?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling hot-desking-sign-in-via-voice-portal user", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/features/hotDesking/guest?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling hunt-group create", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/huntGroups?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling hunt-group create", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/huntGroups?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling hunt-group create", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/huntGroups?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling hunt-group create-selective-forward-rule", - "variant": "all-flags", - "args": [ - "--hunt-group-id=s-hunt-group-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/huntGroups/s-hunt-group-id/callForwarding/selectiveRules?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling hunt-group create-selective-forward-rule", - "variant": "required", - "args": [ - "--hunt-group-id=s-hunt-group-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/huntGroups/s-hunt-group-id/callForwarding/selectiveRules?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling hunt-group create-selective-forward-rule", - "variant": "body", - "args": [ - "--hunt-group-id=s-hunt-group-id", - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/huntGroups/s-hunt-group-id/callForwarding/selectiveRules?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling hunt-group delete", - "variant": "all-flags", - "args": [ - "--hunt-group-id=s-hunt-group-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/huntGroups/s-hunt-group-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling hunt-group delete", - "variant": "required", - "args": [ - "--hunt-group-id=s-hunt-group-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/huntGroups/s-hunt-group-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling hunt-group delete-selective-forward-rule", - "variant": "all-flags", - "args": [ - "--hunt-group-id=s-hunt-group-id", - "--location-id=s-location-id", - "--rule-id=s-rule-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/huntGroups/s-hunt-group-id/callForwarding/selectiveRules/s-rule-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling hunt-group delete-selective-forward-rule", - "variant": "required", - "args": [ - "--hunt-group-id=s-hunt-group-id", - "--location-id=s-location-id", - "--rule-id=s-rule-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/huntGroups/s-hunt-group-id/callForwarding/selectiveRules/s-rule-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling hunt-group get", - "variant": "all-flags", - "args": [ - "--hunt-group-id=s-hunt-group-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/huntGroups/s-hunt-group-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling hunt-group get", - "variant": "required", - "args": [ - "--hunt-group-id=s-hunt-group-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/huntGroups/s-hunt-group-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling hunt-group get", - "variant": "paginate", - "args": [ - "--hunt-group-id=s-hunt-group-id", - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/huntGroups/s-hunt-group-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling hunt-group get-alternate-numbers", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--max=s-max", - "--phone-number=s-phone-number", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/huntGroups/alternate/availableNumbers?max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling hunt-group get-alternate-numbers", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/huntGroups/alternate/availableNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling hunt-group get-alternate-numbers", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/huntGroups/alternate/availableNumbers?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling hunt-group get-call-forward", - "variant": "all-flags", - "args": [ - "--hunt-group-id=s-hunt-group-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/huntGroups/s-hunt-group-id/callForwarding?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling hunt-group get-call-forward", - "variant": "required", - "args": [ - "--hunt-group-id=s-hunt-group-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/huntGroups/s-hunt-group-id/callForwarding?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling hunt-group get-call-forward", - "variant": "paginate", - "args": [ - "--hunt-group-id=s-hunt-group-id", - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/huntGroups/s-hunt-group-id/callForwarding?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling hunt-group get-forward-available-numbers", - "variant": "all-flags", - "args": [ - "--extension=s-extension", - "--location-id=s-location-id", - "--max=s-max", - "--owner-name=s-owner-name", - "--phone-number=s-phone-number", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/huntGroups/callForwarding/availableNumbers?extension=s-extension&max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&ownerName=s-owner-name&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling hunt-group get-forward-available-numbers", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/huntGroups/callForwarding/availableNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling hunt-group get-forward-available-numbers", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/huntGroups/callForwarding/availableNumbers?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling hunt-group get-primary-numbers", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--max=s-max", - "--phone-number=s-phone-number", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/huntGroups/availableNumbers?max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling hunt-group get-primary-numbers", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/huntGroups/availableNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling hunt-group get-primary-numbers", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/huntGroups/availableNumbers?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling hunt-group get-selective-forward-rule", - "variant": "all-flags", - "args": [ - "--hunt-group-id=s-hunt-group-id", - "--location-id=s-location-id", - "--rule-id=s-rule-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/huntGroups/s-hunt-group-id/callForwarding/selectiveRules/s-rule-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling hunt-group get-selective-forward-rule", - "variant": "required", - "args": [ - "--hunt-group-id=s-hunt-group-id", - "--location-id=s-location-id", - "--rule-id=s-rule-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/huntGroups/s-hunt-group-id/callForwarding/selectiveRules/s-rule-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling hunt-group get-selective-forward-rule", - "variant": "paginate", - "args": [ - "--hunt-group-id=s-hunt-group-id", - "--location-id=s-location-id", - "--rule-id=s-rule-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/huntGroups/s-hunt-group-id/callForwarding/selectiveRules/s-rule-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling hunt-group list", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--max=s-max", - "--name=s-name", - "--phone-number=s-phone-number", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/huntGroups?locationId=s-location-id&max=s-max&name=s-name&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling hunt-group list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/huntGroups?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling hunt-group list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/huntGroups?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling hunt-group switch-mode-call-forward", - "variant": "all-flags", - "args": [ - "--hunt-group-id=s-hunt-group-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/huntGroups/s-hunt-group-id/callForwarding/actions/switchMode/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling hunt-group switch-mode-call-forward", - "variant": "required", - "args": [ - "--hunt-group-id=s-hunt-group-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/huntGroups/s-hunt-group-id/callForwarding/actions/switchMode/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling hunt-group switch-mode-call-forward", - "variant": "body", - "args": [ - "--hunt-group-id=s-hunt-group-id", - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/huntGroups/s-hunt-group-id/callForwarding/actions/switchMode/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling hunt-group update", - "variant": "all-flags", - "args": [ - "--hunt-group-id=s-hunt-group-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/huntGroups/s-hunt-group-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling hunt-group update", - "variant": "required", - "args": [ - "--hunt-group-id=s-hunt-group-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/huntGroups/s-hunt-group-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling hunt-group update", - "variant": "body", - "args": [ - "--hunt-group-id=s-hunt-group-id", - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/huntGroups/s-hunt-group-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling hunt-group update-call-forward", - "variant": "all-flags", - "args": [ - "--hunt-group-id=s-hunt-group-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/huntGroups/s-hunt-group-id/callForwarding?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling hunt-group update-call-forward", - "variant": "required", - "args": [ - "--hunt-group-id=s-hunt-group-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/huntGroups/s-hunt-group-id/callForwarding?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling hunt-group update-call-forward", - "variant": "body", - "args": [ - "--hunt-group-id=s-hunt-group-id", - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/huntGroups/s-hunt-group-id/callForwarding?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling hunt-group update-selective-forward-rule", - "variant": "all-flags", - "args": [ - "--hunt-group-id=s-hunt-group-id", - "--location-id=s-location-id", - "--rule-id=s-rule-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/huntGroups/s-hunt-group-id/callForwarding/selectiveRules/s-rule-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling hunt-group update-selective-forward-rule", - "variant": "required", - "args": [ - "--hunt-group-id=s-hunt-group-id", - "--location-id=s-location-id", - "--rule-id=s-rule-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/huntGroups/s-hunt-group-id/callForwarding/selectiveRules/s-rule-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling hunt-group update-selective-forward-rule", - "variant": "body", - "args": [ - "--hunt-group-id=s-hunt-group-id", - "--location-id=s-location-id", - "--rule-id=s-rule-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/huntGroups/s-hunt-group-id/callForwarding/selectiveRules/s-rule-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling location-call check-delete-check-disabling-webex-calling", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/actions/precheckForDeletion/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call check-delete-check-disabling-webex-calling", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/actions/precheckForDeletion/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call create-receptionist-contact-directory", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/receptionistContacts/directories?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call create-receptionist-contact-directory", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/receptionistContacts/directories?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call create-receptionist-contact-directory", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/receptionistContacts/directories?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling location-call delete-receptionist-contact-directory", - "variant": "all-flags", - "args": [ - "--directory-id=s-directory-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/receptionistContacts/directories/s-directory-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call delete-receptionist-contact-directory", - "variant": "required", - "args": [ - "--directory-id=s-directory-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/receptionistContacts/directories/s-directory-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call disable-webex-calling", - "variant": "all-flags", - "args": [ - "--force-delete=true", - "--location-id=s-location-id", - "--location-name=s-location-name" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/jobs/locations/deleteCallingLocation?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"forceDelete\":true,\"locationId\":\"s-location-id\",\"locationName\":\"s-location-name\"}" - } - ] - }, - { - "command": "calling location-call disable-webex-calling", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/jobs/locations/deleteCallingLocation?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call disable-webex-calling", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/jobs/locations/deleteCallingLocation?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling location-call enable-webex-calling", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call enable-webex-calling", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call enable-webex-calling", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling location-call get-available-charge-numbers", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--max=s-max", - "--owner-name=s-owner-name", - "--phone-number=s-phone-number", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/chargeNumber/availableNumbers?max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&ownerName=s-owner-name&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call get-available-charge-numbers", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/chargeNumber/availableNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call get-available-charge-numbers", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/chargeNumber/availableNumbers?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call get-available-numbers", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--max=s-max", - "--owner-name=s-owner-name", - "--phone-number=s-phone-number", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/availableNumbers?max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&ownerName=s-owner-name&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call get-available-numbers", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/availableNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call get-available-numbers", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/availableNumbers?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call get-captions-settings", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callCaptions?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call get-captions-settings", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callCaptions?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call get-captions-settings", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callCaptions?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call get-disable-calling-job-status", - "variant": "all-flags", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/locations/deleteCallingLocation/s-job-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call get-disable-calling-job-status", - "variant": "required", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/locations/deleteCallingLocation/s-job-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call get-disable-calling-job-status", - "variant": "paginate", - "args": [ - "--job-id=s-job-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/locations/deleteCallingLocation/s-job-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call get-ecbn-available-numbers", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--max=s-max", - "--owner-name=s-owner-name", - "--phone-number=s-phone-number", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/emergencyCallbackNumber/availableNumbers?max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&ownerName=s-owner-name&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call get-ecbn-available-numbers", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/emergencyCallbackNumber/availableNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call get-ecbn-available-numbers", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/emergencyCallbackNumber/availableNumbers?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call get-emergency-callback", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/features/emergencyCallbackNumber?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call get-emergency-callback", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/features/emergencyCallbackNumber?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call get-emergency-callback", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/features/emergencyCallbackNumber?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call get-errors-disable-calling-job", - "variant": "all-flags", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/locations/deleteCallingLocation/s-job-id/errors?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call get-errors-disable-calling-job", - "variant": "required", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/locations/deleteCallingLocation/s-job-id/errors?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call get-errors-disable-calling-job", - "variant": "paginate", - "args": [ - "--job-id=s-job-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/locations/deleteCallingLocation/s-job-id/errors?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call get-intercept-available-numbers", - "variant": "all-flags", - "args": [ - "--extension=s-extension", - "--location-id=s-location-id", - "--max=s-max", - "--owner-name=s-owner-name", - "--phone-number=s-phone-number", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callIntercept/availableNumbers?extension=s-extension&max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&ownerName=s-owner-name&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call get-intercept-available-numbers", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callIntercept/availableNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call get-intercept-available-numbers", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callIntercept/availableNumbers?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call get-job-errors-update-routing-prefix-job", - "variant": "all-flags", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/updateRoutingPrefix/s-job-id/errors?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call get-job-errors-update-routing-prefix-job", - "variant": "required", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/updateRoutingPrefix/s-job-id/errors?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call get-job-errors-update-routing-prefix-job", - "variant": "paginate", - "args": [ - "--job-id=s-job-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/updateRoutingPrefix/s-job-id/errors?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call get-job-status-update-routing-prefix-job", - "variant": "all-flags", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/updateRoutingPrefix/s-job-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call get-job-status-update-routing-prefix-job", - "variant": "required", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/updateRoutingPrefix/s-job-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call get-job-status-update-routing-prefix-job", - "variant": "paginate", - "args": [ - "--job-id=s-job-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/updateRoutingPrefix/s-job-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call get-music-hold", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/musicOnHold?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call get-music-hold", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/musicOnHold?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call get-music-hold", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/musicOnHold?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call get-private-network-connect", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/privateNetworkConnect?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call get-private-network-connect", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/privateNetworkConnect?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call get-private-network-connect", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/privateNetworkConnect?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call get-receptionist-contact-directory", - "variant": "all-flags", - "args": [ - "--directory-id=s-directory-id", - "--extension=s-extension", - "--first-name=s-first-name", - "--last-name=s-last-name", - "--location-id=s-location-id", - "--person-id=s-person-id", - "--phone-number=s-phone-number", - "--search-criteria-mode-or=s-search-criteria-mode-or" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/receptionistContacts/directories/s-directory-id?extension=s-extension&firstName=s-first-name&lastName=s-last-name&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&personId=s-person-id&phoneNumber=s-phone-number&searchCriteriaModeOr=s-search-criteria-mode-or", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call get-receptionist-contact-directory", - "variant": "required", - "args": [ - "--directory-id=s-directory-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/receptionistContacts/directories/s-directory-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call get-receptionist-contact-directory", - "variant": "paginate", - "args": [ - "--directory-id=s-directory-id", - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/receptionistContacts/directories/s-directory-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call get-webex-calling", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call get-webex-calling", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call get-webex-calling", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call get-webex-go-available-numbers", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--max=s-max", - "--phone-number=s-phone-number", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/webexGo/availableNumbers?max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call get-webex-go-available-numbers", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/webexGo/availableNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call get-webex-go-available-numbers", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/webexGo/availableNumbers?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call list-dial-patterns", - "variant": "all-flags", - "args": [ - "--dial-pattern=s-dial-pattern", - "--dial-plan-id=s-dial-plan-id", - "--max=s-max", - "--order=s-order", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/dialPlans/s-dial-plan-id/dialPatterns?dialPattern=s-dial-pattern&max=s-max&order=s-order&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call list-dial-patterns", - "variant": "required", - "args": [ - "--dial-plan-id=s-dial-plan-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/dialPlans/s-dial-plan-id/dialPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call list-dial-patterns", - "variant": "paginate", - "args": [ - "--dial-plan-id=s-dial-plan-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/premisePstn/dialPlans/s-dial-plan-id/dialPatterns?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call list-disable-calling-jobs", - "variant": "all-flags", - "args": [ - "--max=s-max", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/locations/deleteCallingLocation?max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call list-disable-calling-jobs", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/locations/deleteCallingLocation?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call list-disable-calling-jobs", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/locations/deleteCallingLocation?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call list-phone-numbers-available-external-caller-id", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--max=s-max", - "--owner-name=s-owner-name", - "--person-id=s-person-id", - "--phone-number=s-phone-number", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/externalCallerId/availableNumbers?max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&ownerName=s-owner-name&personId=s-person-id&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call list-phone-numbers-available-external-caller-id", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/externalCallerId/availableNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call list-phone-numbers-available-external-caller-id", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/externalCallerId/availableNumbers?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call list-receptionist-contact-directories", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/receptionistContacts/directories?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call list-receptionist-contact-directories", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/receptionistContacts/directories?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call list-receptionist-contact-directories", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/receptionistContacts/directories?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call list-routing-choices", - "variant": "all-flags", - "args": [ - "--max=s-max", - "--order=s-order", - "--route-group-name=s-route-group-name", - "--start=s-start", - "--trunk-name=s-trunk-name" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/routeChoices?max=s-max&order=s-order&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&routeGroupName=s-route-group-name&start=s-start&trunkName=s-trunk-name", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call list-routing-choices", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/routeChoices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call list-routing-choices", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/routeChoices?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call list-update-routing-prefix-jobs", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/updateRoutingPrefix?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call list-update-routing-prefix-jobs", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/updateRoutingPrefix?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call list-update-routing-prefix-jobs", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/updateRoutingPrefix?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call list-webex-calling", - "variant": "all-flags", - "args": [ - "--max=s-max", - "--name=s-name", - "--order=s-order", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations?max=s-max&name=s-name&order=s-order&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call list-webex-calling", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call list-webex-calling", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call pause-disable-calling-job", - "variant": "all-flags", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/jobs/locations/deleteCallingLocation/s-job-id/actions/pause/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call pause-disable-calling-job", - "variant": "required", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/jobs/locations/deleteCallingLocation/s-job-id/actions/pause/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call resume-paused-disable-calling-job", - "variant": "all-flags", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/jobs/locations/deleteCallingLocation/s-job-id/actions/resume/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call resume-paused-disable-calling-job", - "variant": "required", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/jobs/locations/deleteCallingLocation/s-job-id/actions/resume/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call update-announcement-language", - "variant": "all-flags", - "args": [ - "--agent-enabled=true", - "--announcement-language-code=s-announcement-language-code", - "--location-id=s-location-id", - "--service-enabled=true" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/actions/modifyAnnouncementLanguage/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"agentEnabled\":true,\"announcementLanguageCode\":\"s-announcement-language-code\",\"serviceEnabled\":true}" - } - ] - }, - { - "command": "calling location-call update-announcement-language", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/actions/modifyAnnouncementLanguage/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call update-announcement-language", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/actions/modifyAnnouncementLanguage/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling location-call update-captions-settings", - "variant": "all-flags", - "args": [ - "--location-closed-captions-enabled=true", - "--location-id=s-location-id", - "--location-transcripts-enabled=true", - "--use-org-settings-enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callCaptions?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"locationClosedCaptionsEnabled\":true,\"locationTranscriptsEnabled\":true,\"useOrgSettingsEnabled\":true}" - } - ] - }, - { - "command": "calling location-call update-captions-settings", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callCaptions?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call update-captions-settings", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/callCaptions?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling location-call update-emergency-callback", - "variant": "all-flags", - "args": [ - "--elin-expiry-time-minutes=7", - "--location-id=s-location-id", - "--location-member-id=s-location-member-id", - "--selected=s-selected" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/features/emergencyCallbackNumber?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"elinExpiryTimeMinutes\":7,\"locationMemberId\":\"s-location-member-id\",\"selected\":\"s-selected\"}" - } - ] - }, - { - "command": "calling location-call update-emergency-callback", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/features/emergencyCallbackNumber?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call update-emergency-callback", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/features/emergencyCallbackNumber?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling location-call update-music-hold", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/musicOnHold?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call update-music-hold", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/musicOnHold?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call update-music-hold", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/musicOnHold?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling location-call update-private-network-connect", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--network-connection-type=s-network-connection-type" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/privateNetworkConnect?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"networkConnectionType\":\"s-network-connection-type\"}" - } - ] - }, - { - "command": "calling location-call update-private-network-connect", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/privateNetworkConnect?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call update-private-network-connect", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/privateNetworkConnect?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling location-call update-receptionist-contact-directory", - "variant": "all-flags", - "args": [ - "--contacts=s-contacts-1,s-contacts-2", - "--directory-id=s-directory-id", - "--location-id=s-location-id", - "--name=s-name" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/receptionistContacts/directories/s-directory-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"contacts\":[\"s-contacts-1\",\"s-contacts-2\"],\"name\":\"s-name\"}" - } - ] - }, - { - "command": "calling location-call update-receptionist-contact-directory", - "variant": "required", - "args": [ - "--directory-id=s-directory-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/receptionistContacts/directories/s-directory-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call update-receptionist-contact-directory", - "variant": "body", - "args": [ - "--directory-id=s-directory-id", - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/receptionistContacts/directories/s-directory-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling location-call update-webex-calling", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call update-webex-calling", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call update-webex-calling", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling location-call validate-extensions", - "variant": "all-flags", - "args": [ - "--extensions=s-extensions-1,s-extensions-2", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/actions/validateExtensions/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"extensions\":[\"s-extensions-1\",\"s-extensions-2\"]}" - } - ] - }, - { - "command": "calling location-call validate-extensions", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/actions/validateExtensions/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call validate-extensions", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/actions/validateExtensions/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling location-call validate-list-extensions", - "variant": "all-flags", - "args": [ - "--extensions=s-extensions-1,s-extensions-2" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/actions/validateExtensions/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"extensions\":[\"s-extensions-1\",\"s-extensions-2\"]}" - } - ] - }, - { - "command": "calling location-call validate-list-extensions", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/actions/validateExtensions/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call validate-list-extensions", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/actions/validateExtensions/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling location-call-handling create-outgoing-permission-access-code-customer", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/outgoingPermission/accessCodes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call-handling create-outgoing-permission-access-code-customer", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/outgoingPermission/accessCodes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call-handling create-outgoing-permission-access-code-customer", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/outgoingPermission/accessCodes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling location-call-handling create-outgoing-permission-digit-pattern", - "variant": "all-flags", - "args": [ - "--action=s-action", - "--location-id=s-location-id", - "--name=s-name", - "--pattern=s-pattern", - "--transfer-enabled=true" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/outgoingPermission/digitPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"action\":\"s-action\",\"name\":\"s-name\",\"pattern\":\"s-pattern\",\"transferEnabled\":true}" - } - ] - }, - { - "command": "calling location-call-handling create-outgoing-permission-digit-pattern", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/outgoingPermission/digitPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call-handling create-outgoing-permission-digit-pattern", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/outgoingPermission/digitPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling location-call-handling delete-all-outgoing-access-code", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/outgoingPermission/accessCodes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call-handling delete-all-outgoing-access-code", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/outgoingPermission/accessCodes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call-handling delete-all-outgoing-digit-patterns", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/outgoingPermission/digitPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call-handling delete-all-outgoing-digit-patterns", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/outgoingPermission/digitPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call-handling delete-outgoing-access-code", - "variant": "all-flags", - "args": [ - "--delete-codes=s-delete-codes-1,s-delete-codes-2", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/outgoingPermission/accessCodes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"deleteCodes\":[\"s-delete-codes-1\",\"s-delete-codes-2\"]}" - } - ] - }, - { - "command": "calling location-call-handling delete-outgoing-access-code", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/outgoingPermission/accessCodes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call-handling delete-outgoing-access-code", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/outgoingPermission/accessCodes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling location-call-handling delete-outgoing-digit-pattern", - "variant": "all-flags", - "args": [ - "--digit-pattern-id=s-digit-pattern-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/outgoingPermission/digitPatterns/s-digit-pattern-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call-handling delete-outgoing-digit-pattern", - "variant": "required", - "args": [ - "--digit-pattern-id=s-digit-pattern-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/outgoingPermission/digitPatterns/s-digit-pattern-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call-handling generate-example-password", - "variant": "all-flags", - "args": [ - "--generate=s-generate-1,s-generate-2", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/actions/generatePassword/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"generate\":[\"s-generate-1\",\"s-generate-2\"]}" - } - ] - }, - { - "command": "calling location-call-handling generate-example-password", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/actions/generatePassword/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call-handling generate-example-password", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/actions/generatePassword/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling location-call-handling get-intercept", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/intercept?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call-handling get-intercept", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/intercept?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call-handling get-intercept", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/intercept?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call-handling get-internal-dialing-configuration", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/internalDialing?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call-handling get-internal-dialing-configuration", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/internalDialing?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call-handling get-internal-dialing-configuration", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/internalDialing?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call-handling get-outgoing-auto-transfer", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/outgoingPermission/autoTransferNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call-handling get-outgoing-auto-transfer", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/outgoingPermission/autoTransferNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call-handling get-outgoing-auto-transfer", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/outgoingPermission/autoTransferNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call-handling get-outgoing-digit-pattern", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/outgoingPermission/digitPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call-handling get-outgoing-digit-pattern", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/outgoingPermission/digitPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call-handling get-outgoing-digit-pattern", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/outgoingPermission/digitPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call-handling get-outgoing-digit-pattern-2", - "variant": "all-flags", - "args": [ - "--digit-pattern-id=s-digit-pattern-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/outgoingPermission/digitPatterns/s-digit-pattern-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call-handling get-outgoing-digit-pattern-2", - "variant": "required", - "args": [ - "--digit-pattern-id=s-digit-pattern-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/outgoingPermission/digitPatterns/s-digit-pattern-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call-handling get-outgoing-digit-pattern-2", - "variant": "paginate", - "args": [ - "--digit-pattern-id=s-digit-pattern-id", - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/outgoingPermission/digitPatterns/s-digit-pattern-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call-handling get-outgoing-permission", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/outgoingPermission?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call-handling get-outgoing-permission", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/outgoingPermission?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call-handling get-outgoing-permission", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/outgoingPermission?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call-handling get-outgoing-permission-access-code", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/outgoingPermission/accessCodes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call-handling get-outgoing-permission-access-code", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/outgoingPermission/accessCodes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call-handling get-outgoing-permission-access-code", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/outgoingPermission/accessCodes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call-handling update-intercept", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/intercept?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call-handling update-intercept", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/intercept?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call-handling update-intercept", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/intercept?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling location-call-handling update-internal-dialing-configuration", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/internalDialing?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call-handling update-internal-dialing-configuration", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/internalDialing?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call-handling update-internal-dialing-configuration", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/internalDialing?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling location-call-handling update-outgoing-auto-transfer", - "variant": "all-flags", - "args": [ - "--auto-transfer-number1=s-auto-transfer-number1", - "--auto-transfer-number2=s-auto-transfer-number2", - "--auto-transfer-number3=s-auto-transfer-number3", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/outgoingPermission/autoTransferNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"autoTransferNumber1\":\"s-auto-transfer-number1\",\"autoTransferNumber2\":\"s-auto-transfer-number2\",\"autoTransferNumber3\":\"s-auto-transfer-number3\"}" - } - ] - }, - { - "command": "calling location-call-handling update-outgoing-auto-transfer", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/outgoingPermission/autoTransferNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call-handling update-outgoing-auto-transfer", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/outgoingPermission/autoTransferNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling location-call-handling update-outgoing-digit-pattern", - "variant": "all-flags", - "args": [ - "--action=s-action", - "--digit-pattern-id=s-digit-pattern-id", - "--location-id=s-location-id", - "--name=s-name", - "--pattern=s-pattern", - "--transfer-enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/outgoingPermission/digitPatterns/s-digit-pattern-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"action\":\"s-action\",\"name\":\"s-name\",\"pattern\":\"s-pattern\",\"transferEnabled\":true}" - } - ] - }, - { - "command": "calling location-call-handling update-outgoing-digit-pattern", - "variant": "required", - "args": [ - "--digit-pattern-id=s-digit-pattern-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/outgoingPermission/digitPatterns/s-digit-pattern-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call-handling update-outgoing-digit-pattern", - "variant": "body", - "args": [ - "--digit-pattern-id=s-digit-pattern-id", - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/outgoingPermission/digitPatterns/s-digit-pattern-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling location-call-handling update-outgoing-permission", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/outgoingPermission?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call-handling update-outgoing-permission", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/outgoingPermission?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-call-handling update-outgoing-permission", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/outgoingPermission?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling location-schedules create", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/schedules?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-schedules create", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/schedules?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-schedules create", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/schedules?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling location-schedules create-event", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--schedule-id=s-schedule-id", - "--type=s-type" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/schedules/s-type/s-schedule-id/events?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-schedules create-event", - "variant": "required", - "args": [ - "--location-id=s-location-id", - "--schedule-id=s-schedule-id", - "--type=s-type" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/schedules/s-type/s-schedule-id/events?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-schedules create-event", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--schedule-id=s-schedule-id", - "--type=s-type", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/schedules/s-type/s-schedule-id/events?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling location-schedules delete", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--schedule-id=s-schedule-id", - "--type=s-type" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/schedules/s-type/s-schedule-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-schedules delete", - "variant": "required", - "args": [ - "--location-id=s-location-id", - "--schedule-id=s-schedule-id", - "--type=s-type" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/schedules/s-type/s-schedule-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-schedules delete-event", - "variant": "all-flags", - "args": [ - "--event-id=s-event-id", - "--location-id=s-location-id", - "--schedule-id=s-schedule-id", - "--type=s-type" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/schedules/s-type/s-schedule-id/events/s-event-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-schedules delete-event", - "variant": "required", - "args": [ - "--event-id=s-event-id", - "--location-id=s-location-id", - "--schedule-id=s-schedule-id", - "--type=s-type" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/schedules/s-type/s-schedule-id/events/s-event-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-schedules get", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--schedule-id=s-schedule-id", - "--type=s-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/schedules/s-type/s-schedule-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-schedules get", - "variant": "required", - "args": [ - "--location-id=s-location-id", - "--schedule-id=s-schedule-id", - "--type=s-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/schedules/s-type/s-schedule-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-schedules get", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--schedule-id=s-schedule-id", - "--type=s-type", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/schedules/s-type/s-schedule-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-schedules get-event", - "variant": "all-flags", - "args": [ - "--event-id=s-event-id", - "--location-id=s-location-id", - "--schedule-id=s-schedule-id", - "--type=s-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/schedules/s-type/s-schedule-id/events/s-event-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-schedules get-event", - "variant": "required", - "args": [ - "--event-id=s-event-id", - "--location-id=s-location-id", - "--schedule-id=s-schedule-id", - "--type=s-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/schedules/s-type/s-schedule-id/events/s-event-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-schedules get-event", - "variant": "paginate", - "args": [ - "--event-id=s-event-id", - "--location-id=s-location-id", - "--schedule-id=s-schedule-id", - "--type=s-type", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/schedules/s-type/s-schedule-id/events/s-event-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-schedules list", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--max=s-max", - "--name=s-name", - "--start=s-start", - "--type=s-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/schedules?max=s-max&name=s-name&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=s-start&type=s-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-schedules list", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/schedules?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-schedules list", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/schedules?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-schedules update", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--schedule-id=s-schedule-id", - "--type=s-type" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/schedules/s-type/s-schedule-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-schedules update", - "variant": "required", - "args": [ - "--location-id=s-location-id", - "--schedule-id=s-schedule-id", - "--type=s-type" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/schedules/s-type/s-schedule-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-schedules update", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--schedule-id=s-schedule-id", - "--type=s-type", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/schedules/s-type/s-schedule-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling location-schedules update-event", - "variant": "all-flags", - "args": [ - "--event-id=s-event-id", - "--location-id=s-location-id", - "--schedule-id=s-schedule-id", - "--type=s-type" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/schedules/s-type/s-schedule-id/events/s-event-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-schedules update-event", - "variant": "required", - "args": [ - "--event-id=s-event-id", - "--location-id=s-location-id", - "--schedule-id=s-schedule-id", - "--type=s-type" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/schedules/s-type/s-schedule-id/events/s-event-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-schedules update-event", - "variant": "body", - "args": [ - "--event-id=s-event-id", - "--location-id=s-location-id", - "--schedule-id=s-schedule-id", - "--type=s-type", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/schedules/s-type/s-schedule-id/events/s-event-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling location-voicemail create-group", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/voicemailGroups?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-voicemail create-group", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/voicemailGroups?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-voicemail create-group", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/voicemailGroups?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling location-voicemail delete-group", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--voicemail-group-id=s-voicemail-group-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/voicemailGroups/s-voicemail-group-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-voicemail delete-group", - "variant": "required", - "args": [ - "--location-id=s-location-id", - "--voicemail-group-id=s-voicemail-group-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/voicemailGroups/s-voicemail-group-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-voicemail get", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/voicemail?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-voicemail get", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/voicemail?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-voicemail get", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/voicemail?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-voicemail get-group", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--voicemail-group-id=s-voicemail-group-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/voicemailGroups/s-voicemail-group-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-voicemail get-group", - "variant": "required", - "args": [ - "--location-id=s-location-id", - "--voicemail-group-id=s-voicemail-group-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/voicemailGroups/s-voicemail-group-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-voicemail get-group", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--voicemail-group-id=s-voicemail-group-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/voicemailGroups/s-voicemail-group-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-voicemail get-group-available-numbers", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--max=s-max", - "--phone-number=s-phone-number", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/voicemailGroups/availableNumbers?max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-voicemail get-group-available-numbers", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/voicemailGroups/availableNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-voicemail get-group-available-numbers", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/voicemailGroups/availableNumbers?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-voicemail get-group-fax-available-numbers", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--max=s-max", - "--phone-number=s-phone-number", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/voicemailGroups/faxMessage/availableNumbers?max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-voicemail get-group-fax-available-numbers", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/voicemailGroups/faxMessage/availableNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-voicemail get-group-fax-available-numbers", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/voicemailGroups/faxMessage/availableNumbers?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-voicemail get-voiceportal", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/voicePortal?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-voicemail get-voiceportal", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/voicePortal?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-voicemail get-voiceportal", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/voicePortal?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-voicemail get-voiceportal-available-numbers", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--max=s-max", - "--phone-number=s-phone-number", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/voicePortal/availableNumbers?max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-voicemail get-voiceportal-available-numbers", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/voicePortal/availableNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-voicemail get-voiceportal-available-numbers", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/voicePortal/availableNumbers?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-voicemail get-voiceportal-passcode-rule", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/voicePortal/passcodeRules?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-voicemail get-voiceportal-passcode-rule", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/voicePortal/passcodeRules?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-voicemail get-voiceportal-passcode-rule", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/voicePortal/passcodeRules?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-voicemail list-voicemailgroup", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--max=s-max", - "--name=s-name", - "--phone-number=s-phone-number", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/voicemailGroups?locationId=s-location-id&max=s-max&name=s-name&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-voicemail list-voicemailgroup", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/voicemailGroups?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-voicemail list-voicemailgroup", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/voicemailGroups?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-voicemail update", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--voicemail-transcription-enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/voicemail?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"voicemailTranscriptionEnabled\":true}" - } - ] - }, - { - "command": "calling location-voicemail update", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/voicemail?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-voicemail update", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/voicemail?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling location-voicemail update-group", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--voicemail-group-id=s-voicemail-group-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/voicemailGroups/s-voicemail-group-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-voicemail update-group", - "variant": "required", - "args": [ - "--location-id=s-location-id", - "--voicemail-group-id=s-voicemail-group-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/voicemailGroups/s-voicemail-group-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-voicemail update-group", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--voicemail-group-id=s-voicemail-group-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/voicemailGroups/s-voicemail-group-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling location-voicemail update-voiceportal", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/voicePortal?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-voicemail update-voiceportal", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/voicePortal?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling location-voicemail update-voiceportal", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/voicePortal?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling locations create", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/locations?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling locations create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/locations?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling locations create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/locations?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling locations create-floor", - "variant": "all-flags", - "args": [ - "--display-name=s-display-name", - "--floor-number=7", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/locations/s-location-id/floors", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"displayName\":\"s-display-name\",\"floorNumber\":7}" - } - ] - }, - { - "command": "calling locations create-floor", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/locations/s-location-id/floors", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling locations create-floor", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/locations/s-location-id/floors", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling locations delete", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/locations/s-location-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling locations delete", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/locations/s-location-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling locations delete-floor", - "variant": "all-flags", - "args": [ - "--floor-id=s-floor-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/locations/s-location-id/floors/s-floor-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling locations delete-floor", - "variant": "required", - "args": [ - "--floor-id=s-floor-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/locations/s-location-id/floors/s-floor-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling locations get", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/locations/s-location-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling locations get", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/locations/s-location-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling locations get", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/locations/s-location-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling locations get-floor", - "variant": "all-flags", - "args": [ - "--floor-id=s-floor-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/locations/s-location-id/floors/s-floor-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling locations get-floor", - "variant": "required", - "args": [ - "--floor-id=s-floor-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/locations/s-location-id/floors/s-floor-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling locations get-floor", - "variant": "paginate", - "args": [ - "--floor-id=s-floor-id", - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/locations/s-location-id/floors/s-floor-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling locations list", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--max=s-max", - "--name=s-name" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/locations?id=s-id&max=s-max&name=s-name&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling locations list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/locations?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling locations list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/locations?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling locations list-floors", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/locations/s-location-id/floors", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling locations list-floors", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/locations/s-location-id/floors", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling locations list-floors", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/locations/s-location-id/floors", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling locations update", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/locations/s-location-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling locations update", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/locations/s-location-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling locations update", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/locations/s-location-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling locations update-floor", - "variant": "all-flags", - "args": [ - "--display-name=s-display-name", - "--floor-id=s-floor-id", - "--floor-number=7", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/locations/s-location-id/floors/s-floor-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"displayName\":\"s-display-name\",\"floorNumber\":7}" - } - ] - }, - { - "command": "calling locations update-floor", - "variant": "required", - "args": [ - "--floor-id=s-floor-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/locations/s-location-id/floors/s-floor-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling locations update-floor", - "variant": "body", - "args": [ - "--floor-id=s-floor-id", - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/locations/s-location-id/floors/s-floor-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling metrics get-call-quality-stats", - "variant": "all-flags", - "args": [ - "--from=2026-01-01T00:00:00.000Z", - "--location=s-location", - "--to=2026-01-02T00:00:00.000Z" - ], - "requests": [ - { - "method": "GET", - "url": "https://analytics.webexapis.com/v1/analytics/callQualityStats?from=2026-01-01T00%3A00%3A00.000Z&location=s-location&to=2026-01-02T00%3A00%3A00.000Z", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling metrics get-call-quality-stats", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://analytics.webexapis.com/v1/analytics/callQualityStats", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling metrics get-call-quality-stats", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://analytics.webexapis.com/v1/analytics/callQualityStats", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling mode-management extend-current-operating-duration", - "variant": "all-flags", - "args": [ - "--extension-time=7", - "--feature-id=s-feature-id", - "--operating-mode-id=s-operating-mode-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/modeManagement/features/s-feature-id/actions/extendMode/invoke", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"extensionTime\":7,\"operatingModeId\":\"s-operating-mode-id\"}" - } - ] - }, - { - "command": "calling mode-management extend-current-operating-duration", - "variant": "required", - "args": [ - "--feature-id=s-feature-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/modeManagement/features/s-feature-id/actions/extendMode/invoke", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling mode-management extend-current-operating-duration", - "variant": "body", - "args": [ - "--feature-id=s-feature-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/modeManagement/features/s-feature-id/actions/extendMode/invoke", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling mode-management get-common", - "variant": "all-flags", - "args": [ - "--feature-ids=s-feature-ids" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/modeManagement/features/commonModes?featureIds=s-feature-ids", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling mode-management get-common", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/modeManagement/features/commonModes", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling mode-management get-common", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/modeManagement/features/commonModes", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling mode-management get-feature", - "variant": "all-flags", - "args": [ - "--feature-id=s-feature-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/modeManagement/features/s-feature-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling mode-management get-feature", - "variant": "required", - "args": [ - "--feature-id=s-feature-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/modeManagement/features/s-feature-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling mode-management get-feature", - "variant": "paginate", - "args": [ - "--feature-id=s-feature-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/modeManagement/features/s-feature-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling mode-management get-features", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/modeManagement/features", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling mode-management get-features", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/modeManagement/features", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling mode-management get-features", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/modeManagement/features", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling mode-management get-normal-operation", - "variant": "all-flags", - "args": [ - "--feature-id=s-feature-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/modeManagement/features/s-feature-id/normalOperationMode", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling mode-management get-normal-operation", - "variant": "required", - "args": [ - "--feature-id=s-feature-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/modeManagement/features/s-feature-id/normalOperationMode", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling mode-management get-normal-operation", - "variant": "paginate", - "args": [ - "--feature-id=s-feature-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/modeManagement/features/s-feature-id/normalOperationMode", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling mode-management get-operating", - "variant": "all-flags", - "args": [ - "--feature-id=s-feature-id", - "--mode-id=s-mode-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/modeManagement/features/s-feature-id/modes/s-mode-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling mode-management get-operating", - "variant": "required", - "args": [ - "--feature-id=s-feature-id", - "--mode-id=s-mode-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/modeManagement/features/s-feature-id/modes/s-mode-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling mode-management get-operating", - "variant": "paginate", - "args": [ - "--feature-id=s-feature-id", - "--mode-id=s-mode-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/modeManagement/features/s-feature-id/modes/s-mode-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling mode-management switch-multiple-features", - "variant": "all-flags", - "args": [ - "--feature-ids=s-feature-ids-1,s-feature-ids-2", - "--operating-mode-name=s-operating-mode-name" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/modeManagement/features/actions/switchMode/invoke", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"featureIds\":[\"s-feature-ids-1\",\"s-feature-ids-2\"],\"operatingModeName\":\"s-operating-mode-name\"}" - } - ] - }, - { - "command": "calling mode-management switch-multiple-features", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/modeManagement/features/actions/switchMode/invoke", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling mode-management switch-multiple-features", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/modeManagement/features/actions/switchMode/invoke", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling mode-management switch-normal-operation", - "variant": "all-flags", - "args": [ - "--feature-id=s-feature-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/modeManagement/features/s-feature-id/actions/switchToNormalOperation/invoke", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling mode-management switch-normal-operation", - "variant": "required", - "args": [ - "--feature-id=s-feature-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/modeManagement/features/s-feature-id/actions/switchToNormalOperation/invoke", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling mode-management switch-single-feature", - "variant": "all-flags", - "args": [ - "--feature-id=s-feature-id", - "--is-manual-switchback-enabled=true", - "--operating-mode-id=s-operating-mode-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/modeManagement/features/s-feature-id/actions/switchMode/invoke", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"isManualSwitchbackEnabled\":true,\"operatingModeId\":\"s-operating-mode-id\"}" - } - ] - }, - { - "command": "calling mode-management switch-single-feature", - "variant": "required", - "args": [ - "--feature-id=s-feature-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/modeManagement/features/s-feature-id/actions/switchMode/invoke", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling mode-management switch-single-feature", - "variant": "body", - "args": [ - "--feature-id=s-feature-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/me/settings/modeManagement/features/s-feature-id/actions/switchMode/invoke", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling numbers create-phone-location", - "variant": "all-flags", - "args": [ - "--carrier-id=s-carrier-id", - "--location-id=s-location-id", - "--number-type=s-number-type", - "--number-usage-type=s-number-usage-type", - "--phone-numbers=s-phone-numbers-1,s-phone-numbers-2", - "--state=s-state", - "--subscription-id=s-subscription-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/numbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"carrierId\":\"s-carrier-id\",\"numberType\":\"s-number-type\",\"numberUsageType\":\"s-number-usage-type\",\"phoneNumbers\":[\"s-phone-numbers-1\",\"s-phone-numbers-2\"],\"state\":\"s-state\",\"subscriptionId\":\"s-subscription-id\"}" - } - ] - }, - { - "command": "calling numbers create-phone-location", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/numbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling numbers create-phone-location", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/numbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling numbers delete-phone-location", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--phone-numbers=s-phone-numbers-1,s-phone-numbers-2" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/numbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"phoneNumbers\":[\"s-phone-numbers-1\",\"s-phone-numbers-2\"]}" - } - ] - }, - { - "command": "calling numbers delete-phone-location", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/numbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling numbers delete-phone-location", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/numbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling numbers get-manage-job-status", - "variant": "all-flags", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/numbers/manageNumbers/s-job-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling numbers get-manage-job-status", - "variant": "required", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/numbers/manageNumbers/s-job-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling numbers get-manage-job-status", - "variant": "paginate", - "args": [ - "--job-id=s-job-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/numbers/manageNumbers/s-job-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling numbers get-phone-org", - "variant": "all-flags", - "args": [ - "--available=s-available", - "--details=s-details", - "--extension=s-extension", - "--included-telephony-types=s-included-telephony-types", - "--location-id=s-location-id", - "--max=s-max", - "--number-type=s-number-type", - "--order=s-order", - "--owner-id=s-owner-id", - "--owner-name=s-owner-name", - "--owner-type=s-owner-type", - "--phone-number=s-phone-number", - "--phone-number-type=s-phone-number-type", - "--restricted-non-geo-numbers=s-restricted-non-geo-numbers", - "--service-number=s-service-number", - "--start=s-start", - "--state=s-state", - "--toll-free-numbers=s-toll-free-numbers" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/numbers?available=s-available&details=s-details&extension=s-extension&includedTelephonyTypes=s-included-telephony-types&locationId=s-location-id&max=s-max&numberType=s-number-type&order=s-order&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&ownerId=s-owner-id&ownerName=s-owner-name&ownerType=s-owner-type&phoneNumber=s-phone-number&phoneNumberType=s-phone-number-type&restrictedNonGeoNumbers=s-restricted-non-geo-numbers&serviceNumber=s-service-number&start=s-start&state=s-state&tollFreeNumbers=s-toll-free-numbers", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling numbers get-phone-org", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/numbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling numbers get-phone-org", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/numbers?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling numbers initiate-jobs", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/jobs/numbers/manageNumbers", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling numbers initiate-jobs", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/jobs/numbers/manageNumbers", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling numbers initiate-jobs", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/jobs/numbers/manageNumbers", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling numbers list-manage-job-errors", - "variant": "all-flags", - "args": [ - "--job-id=s-job-id", - "--max=s-max", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/numbers/manageNumbers/s-job-id/errors?max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling numbers list-manage-job-errors", - "variant": "required", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/numbers/manageNumbers/s-job-id/errors?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling numbers list-manage-job-errors", - "variant": "paginate", - "args": [ - "--job-id=s-job-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/numbers/manageNumbers/s-job-id/errors?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling numbers list-manage-jobs", - "variant": "all-flags", - "args": [ - "--max=s-max", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/numbers/manageNumbers?max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling numbers list-manage-jobs", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/numbers/manageNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling numbers list-manage-jobs", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/numbers/manageNumbers?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling numbers manage-state-location", - "variant": "all-flags", - "args": [ - "--action=s-action", - "--location-id=s-location-id", - "--phone-numbers=s-phone-numbers-1,s-phone-numbers-2" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/numbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"action\":\"s-action\",\"phoneNumbers\":[\"s-phone-numbers-1\",\"s-phone-numbers-2\"]}" - } - ] - }, - { - "command": "calling numbers manage-state-location", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/numbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling numbers manage-state-location", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/numbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling numbers pause-manage-job", - "variant": "all-flags", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/jobs/numbers/manageNumbers/s-job-id/actions/pause/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling numbers pause-manage-job", - "variant": "required", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/jobs/numbers/manageNumbers/s-job-id/actions/pause/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling numbers resume-manage-job", - "variant": "all-flags", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/jobs/numbers/manageNumbers/s-job-id/actions/resume/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling numbers resume-manage-job", - "variant": "required", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/jobs/numbers/manageNumbers/s-job-id/actions/resume/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling numbers validate-phone", - "variant": "all-flags", - "args": [ - "--phone-numbers=s-phone-numbers-1,s-phone-numbers-2" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/actions/validateNumbers/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"phoneNumbers\":[\"s-phone-numbers-1\",\"s-phone-numbers-2\"]}" - } - ] - }, - { - "command": "calling numbers validate-phone", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/actions/validateNumbers/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling numbers validate-phone", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/actions/validateNumbers/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling operating-modes create", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/operatingModes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling operating-modes create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/operatingModes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling operating-modes create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/operatingModes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling operating-modes create-holiday", - "variant": "all-flags", - "args": [ - "--mode-id=s-mode-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/operatingModes/s-mode-id/holidays?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling operating-modes create-holiday", - "variant": "required", - "args": [ - "--mode-id=s-mode-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/operatingModes/s-mode-id/holidays?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling operating-modes create-holiday", - "variant": "body", - "args": [ - "--mode-id=s-mode-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/operatingModes/s-mode-id/holidays?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling operating-modes delete", - "variant": "all-flags", - "args": [ - "--mode-id=s-mode-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/operatingModes/s-mode-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling operating-modes delete", - "variant": "required", - "args": [ - "--mode-id=s-mode-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/operatingModes/s-mode-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling operating-modes delete-holiday", - "variant": "all-flags", - "args": [ - "--holiday-id=s-holiday-id", - "--mode-id=s-mode-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/operatingModes/s-mode-id/holidays/s-holiday-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling operating-modes delete-holiday", - "variant": "required", - "args": [ - "--holiday-id=s-holiday-id", - "--mode-id=s-mode-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/operatingModes/s-mode-id/holidays/s-holiday-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling operating-modes get", - "variant": "all-flags", - "args": [ - "--mode-id=s-mode-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/operatingModes/s-mode-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling operating-modes get", - "variant": "required", - "args": [ - "--mode-id=s-mode-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/operatingModes/s-mode-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling operating-modes get", - "variant": "paginate", - "args": [ - "--mode-id=s-mode-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/operatingModes/s-mode-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling operating-modes get-forward-available-numbers", - "variant": "all-flags", - "args": [ - "--extension=s-extension", - "--location-id=s-location-id", - "--max=s-max", - "--owner-name=s-owner-name", - "--phone-number=s-phone-number", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/operatingModes/callForwarding/availableNumbers?extension=s-extension&max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&ownerName=s-owner-name&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling operating-modes get-forward-available-numbers", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/operatingModes/callForwarding/availableNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling operating-modes get-forward-available-numbers", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/operatingModes/callForwarding/availableNumbers?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling operating-modes get-holiday", - "variant": "all-flags", - "args": [ - "--holiday-id=s-holiday-id", - "--mode-id=s-mode-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/operatingModes/s-mode-id/holidays/s-holiday-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling operating-modes get-holiday", - "variant": "required", - "args": [ - "--holiday-id=s-holiday-id", - "--mode-id=s-mode-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/operatingModes/s-mode-id/holidays/s-holiday-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling operating-modes get-holiday", - "variant": "paginate", - "args": [ - "--holiday-id=s-holiday-id", - "--mode-id=s-mode-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/operatingModes/s-mode-id/holidays/s-holiday-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling operating-modes list", - "variant": "all-flags", - "args": [ - "--limit-to-location-id=s-limit-to-location-id", - "--limit-to-org-level-enabled=s-limit-to-org-level-enabled", - "--max=s-max", - "--name=s-name", - "--order=s-order", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/operatingModes?limitToLocationId=s-limit-to-location-id&limitToOrgLevelEnabled=s-limit-to-org-level-enabled&max=s-max&name=s-name&order=s-order&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling operating-modes list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/operatingModes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling operating-modes list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/operatingModes?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling operating-modes list-available-location", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/operatingModes/availableOperatingModes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling operating-modes list-available-location", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/operatingModes/availableOperatingModes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling operating-modes list-available-location", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/operatingModes/availableOperatingModes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling operating-modes update", - "variant": "all-flags", - "args": [ - "--mode-id=s-mode-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/operatingModes/s-mode-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling operating-modes update", - "variant": "required", - "args": [ - "--mode-id=s-mode-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/operatingModes/s-mode-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling operating-modes update", - "variant": "body", - "args": [ - "--mode-id=s-mode-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/operatingModes/s-mode-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling operating-modes update-holiday", - "variant": "all-flags", - "args": [ - "--holiday-id=s-holiday-id", - "--mode-id=s-mode-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/operatingModes/s-mode-id/holidays/s-holiday-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling operating-modes update-holiday", - "variant": "required", - "args": [ - "--holiday-id=s-holiday-id", - "--mode-id=s-mode-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/operatingModes/s-mode-id/holidays/s-holiday-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling operating-modes update-holiday", - "variant": "body", - "args": [ - "--holiday-id=s-holiday-id", - "--mode-id=s-mode-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/operatingModes/s-mode-id/holidays/s-holiday-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling paging-group create", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/paging?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling paging-group create", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/paging?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling paging-group create", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/paging?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling paging-group delete", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--paging-id=s-paging-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/paging/s-paging-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling paging-group delete", - "variant": "required", - "args": [ - "--location-id=s-location-id", - "--paging-id=s-paging-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/paging/s-paging-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling paging-group get", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--paging-id=s-paging-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/paging/s-paging-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling paging-group get", - "variant": "required", - "args": [ - "--location-id=s-location-id", - "--paging-id=s-paging-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/paging/s-paging-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling paging-group get", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paging-id=s-paging-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/paging/s-paging-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling paging-group get-primary-numbers", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--max=s-max", - "--phone-number=s-phone-number", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/paging/availableNumbers?max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling paging-group get-primary-numbers", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/paging/availableNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling paging-group get-primary-numbers", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/paging/availableNumbers?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling paging-group list", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--max=s-max", - "--name=s-name", - "--phone-number=s-phone-number", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/paging?locationId=s-location-id&max=s-max&name=s-name&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling paging-group list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/paging?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling paging-group list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/paging?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling paging-group update", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--paging-id=s-paging-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/paging/s-paging-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling paging-group update", - "variant": "required", - "args": [ - "--location-id=s-location-id", - "--paging-id=s-paging-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/paging/s-paging-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling paging-group update", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--paging-id=s-paging-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/paging/s-paging-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling partner-reports-templates create", - "variant": "all-flags", - "args": [ - "--end-date=s-end-date", - "--on-behalf-of-sub-partner-org-id=s-on-behalf-of-sub-partner-org-id", - "--region-id=s-region-id", - "--start-date=s-start-date", - "--template-id=7" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/partner/reports?onBehalfOfSubPartnerOrgId=s-on-behalf-of-sub-partner-org-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"endDate\":\"s-end-date\",\"regionId\":\"s-region-id\",\"startDate\":\"s-start-date\",\"templateId\":7}" - } - ] - }, - { - "command": "calling partner-reports-templates create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/partner/reports", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling partner-reports-templates create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/partner/reports", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling partner-reports-templates delete", - "variant": "all-flags", - "args": [ - "--on-behalf-of-sub-partner-org-id=s-on-behalf-of-sub-partner-org-id", - "--report-id=s-report-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/partner/reports/s-report-id?onBehalfOfSubPartnerOrgId=s-on-behalf-of-sub-partner-org-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling partner-reports-templates delete", - "variant": "required", - "args": [ - "--report-id=s-report-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/partner/reports/s-report-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling partner-reports-templates get", - "variant": "all-flags", - "args": [ - "--on-behalf-of-sub-partner-org-id=s-on-behalf-of-sub-partner-org-id", - "--report-id=s-report-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/partner/reports/s-report-id?onBehalfOfSubPartnerOrgId=s-on-behalf-of-sub-partner-org-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling partner-reports-templates get", - "variant": "required", - "args": [ - "--report-id=s-report-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/partner/reports/s-report-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling partner-reports-templates get", - "variant": "paginate", - "args": [ - "--report-id=s-report-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/partner/reports/s-report-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling partner-reports-templates list", - "variant": "all-flags", - "args": [ - "--from=2026-01-01T00:00:00.000Z", - "--on-behalf-of-sub-partner-org-id=s-on-behalf-of-sub-partner-org-id", - "--region-id=s-region-id", - "--service=s-service", - "--template-id=s-template-id", - "--to=2026-01-02T00:00:00.000Z" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/partner/reports?from=2026-01-01T00%3A00%3A00.000Z&onBehalfOfSubPartnerOrgId=s-on-behalf-of-sub-partner-org-id®ionId=s-region-id&service=s-service&templateId=s-template-id&to=2026-01-02T00%3A00%3A00.000Z", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling partner-reports-templates list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/partner/reports", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling partner-reports-templates list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/partner/reports", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling partner-reports-templates list-2", - "variant": "all-flags", - "args": [ - "--on-behalf-of-sub-partner-org-id=s-on-behalf-of-sub-partner-org-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/partner/reports/templates?onBehalfOfSubPartnerOrgId=s-on-behalf-of-sub-partner-org-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling partner-reports-templates list-2", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/partner/reports/templates", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling partner-reports-templates list-2", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/partner/reports/templates", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling people create-person", - "variant": "all-flags", - "args": [ - "--calling-data=s-calling-data", - "--min-response=s-min-response" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/people?callingData=s-calling-data&minResponse=s-min-response", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling people create-person", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/people", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling people create-person", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/people", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling people delete-person", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/people/s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling people delete-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/people/s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling people get-my-own", - "variant": "all-flags", - "args": [ - "--calling-data=s-calling-data" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/me?callingData=s-calling-data", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling people get-my-own", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/me", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling people get-my-own", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/me", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling people get-person", - "variant": "all-flags", - "args": [ - "--calling-data=s-calling-data", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id?callingData=s-calling-data", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling people get-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling people get-person", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling people list", - "variant": "all-flags", - "args": [ - "--calling-data=s-calling-data", - "--display-name=s-display-name", - "--email=s-email", - "--exclude-status=s-exclude-status", - "--id=s-id", - "--location-id=s-location-id", - "--max=s-max", - "--roles=s-roles" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people?callingData=s-calling-data&displayName=s-display-name&email=s-email&excludeStatus=s-exclude-status&id=s-id&locationId=s-location-id&max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&roles=s-roles", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling people list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling people list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling people update-person", - "variant": "all-flags", - "args": [ - "--calling-data=s-calling-data", - "--min-response=s-min-response", - "--person-id=s-person-id", - "--show-all-types=s-show-all-types" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id?callingData=s-calling-data&minResponse=s-min-response&showAllTypes=s-show-all-types", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling people update-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling people update-person", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling pstn create-emergency-address-location", - "variant": "all-flags", - "args": [ - "--address1=s-address1", - "--address2=s-address2", - "--city=s-city", - "--country=s-country", - "--location-id=s-location-id", - "--postal-code=s-postal-code", - "--state=s-state" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/pstn/locations/s-location-id/emergencyAddress?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"address1\":\"s-address1\",\"address2\":\"s-address2\",\"city\":\"s-city\",\"country\":\"s-country\",\"postalCode\":\"s-postal-code\",\"state\":\"s-state\"}" - } - ] - }, - { - "command": "calling pstn create-emergency-address-location", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/pstn/locations/s-location-id/emergencyAddress?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling pstn create-emergency-address-location", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/pstn/locations/s-location-id/emergencyAddress?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling pstn emergency-address-lookup-verify-address-is-valid", - "variant": "all-flags", - "args": [ - "--address1=s-address1", - "--address2=s-address2", - "--city=s-city", - "--country=s-country", - "--location-id=s-location-id", - "--postal-code=s-postal-code", - "--state=s-state" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/pstn/locations/s-location-id/emergencyAddress/lookup?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"address1\":\"s-address1\",\"address2\":\"s-address2\",\"city\":\"s-city\",\"country\":\"s-country\",\"postalCode\":\"s-postal-code\",\"state\":\"s-state\"}" - } - ] - }, - { - "command": "calling pstn emergency-address-lookup-verify-address-is-valid", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/pstn/locations/s-location-id/emergencyAddress/lookup?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling pstn emergency-address-lookup-verify-address-is-valid", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/pstn/locations/s-location-id/emergencyAddress/lookup?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling pstn get-connection-location", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/pstn/locations/s-location-id/connection?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling pstn get-connection-location", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/pstn/locations/s-location-id/connection?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling pstn get-connection-location", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/pstn/locations/s-location-id/connection?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling pstn get-connection-options-location", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--service-types=s-service-types" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/pstn/locations/s-location-id/connectionOptions?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&serviceTypes=s-service-types", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling pstn get-connection-options-location", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/pstn/locations/s-location-id/connectionOptions?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling pstn get-connection-options-location", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/pstn/locations/s-location-id/connectionOptions?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling pstn setup-connection-location", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--location-id=s-location-id", - "--premise-route-id=s-premise-route-id", - "--premise-route-type=s-premise-route-type" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/pstn/locations/s-location-id/connection?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"id\":\"s-id\",\"premiseRouteId\":\"s-premise-route-id\",\"premiseRouteType\":\"s-premise-route-type\"}" - } - ] - }, - { - "command": "calling pstn setup-connection-location", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/pstn/locations/s-location-id/connection?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling pstn setup-connection-location", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/pstn/locations/s-location-id/connection?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling pstn update-emergency-address-location", - "variant": "all-flags", - "args": [ - "--address-id=s-address-id", - "--address1=s-address1", - "--address2=s-address2", - "--city=s-city", - "--country=s-country", - "--location-id=s-location-id", - "--postal-code=s-postal-code", - "--state=s-state" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/pstn/locations/s-location-id/emergencyAddresses/s-address-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"address1\":\"s-address1\",\"address2\":\"s-address2\",\"city\":\"s-city\",\"country\":\"s-country\",\"postalCode\":\"s-postal-code\",\"state\":\"s-state\"}" - } - ] - }, - { - "command": "calling pstn update-emergency-address-location", - "variant": "required", - "args": [ - "--address-id=s-address-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/pstn/locations/s-location-id/emergencyAddresses/s-address-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling pstn update-emergency-address-location", - "variant": "body", - "args": [ - "--address-id=s-address-id", - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/pstn/locations/s-location-id/emergencyAddresses/s-address-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling pstn update-emergency-address-phone-number", - "variant": "all-flags", - "args": [ - "--phone-number=s-phone-number" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/pstn/numbers/s-phone-number/emergencyAddress?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling pstn update-emergency-address-phone-number", - "variant": "required", - "args": [ - "--phone-number=s-phone-number" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/pstn/numbers/s-phone-number/emergencyAddress?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling pstn update-emergency-address-phone-number", - "variant": "body", - "args": [ - "--phone-number=s-phone-number", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/pstn/numbers/s-phone-number/emergencyAddress?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling recording-report get-audit", - "variant": "all-flags", - "args": [ - "--host-email=s-host-email", - "--max=s-max", - "--recording-id=s-recording-id", - "--timezone=s-timezone" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/recordingReport/accessDetail?hostEmail=s-host-email&max=s-max&recordingId=s-recording-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Timezone": "s-timezone" - } - } - ] - }, - { - "command": "calling recording-report get-audit", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/recordingReport/accessDetail", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling recording-report get-audit", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/recordingReport/accessDetail?max=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling recording-report get-meeting-archive", - "variant": "all-flags", - "args": [ - "--archive-id=s-archive-id", - "--timezone=s-timezone" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/recordingReport/meetingArchives/s-archive-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Timezone": "s-timezone" - } - } - ] - }, - { - "command": "calling recording-report get-meeting-archive", - "variant": "required", - "args": [ - "--archive-id=s-archive-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/recordingReport/meetingArchives/s-archive-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling recording-report get-meeting-archive", - "variant": "paginate", - "args": [ - "--archive-id=s-archive-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/recordingReport/meetingArchives/s-archive-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling recording-report list-audit-summaries", - "variant": "all-flags", - "args": [ - "--from=2026-01-01T00:00:00.000Z", - "--host-email=s-host-email", - "--max=s-max", - "--site-url=s-site-url", - "--timezone=s-timezone", - "--to=2026-01-02T00:00:00.000Z" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/recordingReport/accessSummary?from=2026-01-01T00%3A00%3A00.000Z&hostEmail=s-host-email&max=s-max&siteUrl=s-site-url&to=2026-01-02T00%3A00%3A00.000Z", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Timezone": "s-timezone" - } - } - ] - }, - { - "command": "calling recording-report list-audit-summaries", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/recordingReport/accessSummary", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling recording-report list-audit-summaries", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/recordingReport/accessSummary?max=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling recording-report list-meeting-archive-summaries", - "variant": "all-flags", - "args": [ - "--from=2026-01-01T00:00:00.000Z", - "--max=s-max", - "--site-url=s-site-url", - "--timezone=s-timezone", - "--to=2026-01-02T00:00:00.000Z" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/recordingReport/meetingArchiveSummaries?from=2026-01-01T00%3A00%3A00.000Z&max=s-max&siteUrl=s-site-url&to=2026-01-02T00%3A00%3A00.000Z", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Timezone": "s-timezone" - } - } - ] - }, - { - "command": "calling recording-report list-meeting-archive-summaries", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/recordingReport/meetingArchiveSummaries", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling recording-report list-meeting-archive-summaries", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/recordingReport/meetingArchiveSummaries?max=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling reports create", - "variant": "all-flags", - "args": [ - "--end-date=s-end-date", - "--site-list=s-site-list", - "--start-date=s-start-date", - "--template-id=7" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/reports", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"endDate\":\"s-end-date\",\"siteList\":\"s-site-list\",\"startDate\":\"s-start-date\",\"templateId\":7}" - } - ] - }, - { - "command": "calling reports create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/reports", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling reports create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/reports", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling reports delete", - "variant": "all-flags", - "args": [ - "--report-id=s-report-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/reports/s-report-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling reports delete", - "variant": "required", - "args": [ - "--report-id=s-report-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/reports/s-report-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling reports get", - "variant": "all-flags", - "args": [ - "--report-id=s-report-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/reports/s-report-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling reports get", - "variant": "required", - "args": [ - "--report-id=s-report-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/reports/s-report-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling reports get", - "variant": "paginate", - "args": [ - "--report-id=s-report-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/reports/s-report-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling reports list", - "variant": "all-flags", - "args": [ - "--from=2026-01-01T00:00:00.000Z", - "--report-id=s-report-id", - "--service=s-service", - "--template-id=s-template-id", - "--to=2026-01-02T00:00:00.000Z" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/reports?from=2026-01-01T00%3A00%3A00.000Z&reportId=s-report-id&service=s-service&templateId=s-template-id&to=2026-01-02T00%3A00%3A00.000Z", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling reports list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/reports", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling reports list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/reports", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling reports-detailed-call-history get", - "variant": "all-flags", - "args": [ - "--end-time=s-end-time", - "--locations=s-locations", - "--max=s-max", - "--start-time=s-start-time" - ], - "requests": [ - { - "method": "GET", - "url": "https://analytics-calling.webexapis.com/v1/cdr_feed?endTime=s-end-time&locations=s-locations&max=s-max&startTime=s-start-time", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling reports-detailed-call-history get", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://analytics-calling.webexapis.com/v1/cdr_feed", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling reports-detailed-call-history get", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://analytics-calling.webexapis.com/v1/cdr_feed?max=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling reports-detailed-call-history get-live-stream", - "variant": "all-flags", - "args": [ - "--end-time=s-end-time", - "--locations=s-locations", - "--max=s-max", - "--start-time=s-start-time" - ], - "requests": [ - { - "method": "GET", - "url": "https://analytics-calling.webexapis.com/v1/cdr_stream?endTime=s-end-time&locations=s-locations&max=s-max&startTime=s-start-time", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling reports-detailed-call-history get-live-stream", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://analytics-calling.webexapis.com/v1/cdr_stream", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling reports-detailed-call-history get-live-stream", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://analytics-calling.webexapis.com/v1/cdr_stream?max=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling send-activation-email get-bulk-resend-job-errors", - "variant": "all-flags", - "args": [ - "--job-id=s-job-id", - "--max=s-max" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/identity/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/jobs/sendActivationEmails/s-job-id/errors?max=s-max", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling send-activation-email get-bulk-resend-job-errors", - "variant": "required", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/identity/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/jobs/sendActivationEmails/s-job-id/errors", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling send-activation-email get-bulk-resend-job-errors", - "variant": "paginate", - "args": [ - "--job-id=s-job-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/identity/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/jobs/sendActivationEmails/s-job-id/errors?max=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling send-activation-email get-bulk-resend-job-status", - "variant": "all-flags", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/identity/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/jobs/sendActivationEmails/s-job-id/status", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling send-activation-email get-bulk-resend-job-status", - "variant": "required", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/identity/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/jobs/sendActivationEmails/s-job-id/status", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling send-activation-email get-bulk-resend-job-status", - "variant": "paginate", - "args": [ - "--job-id=s-job-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/identity/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/jobs/sendActivationEmails/s-job-id/status", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling send-activation-email initiate-bulk-resend-job", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/identity/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/jobs/sendActivationEmails", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling send-activation-email initiate-bulk-resend-job", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/identity/organizations/Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA/jobs/sendActivationEmails", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling single-number-reach create-person", - "variant": "all-flags", - "args": [ - "--answer-confirmation-enabled=true", - "--do-not-forward-calls-enabled=true", - "--enabled=true", - "--name=s-name", - "--person-id=s-person-id", - "--phone-number=s-phone-number" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/singleNumberReach/numbers", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"answerConfirmationEnabled\":true,\"doNotForwardCallsEnabled\":true,\"enabled\":true,\"name\":\"s-name\",\"phoneNumber\":\"s-phone-number\"}" - } - ] - }, - { - "command": "calling single-number-reach create-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/singleNumberReach/numbers", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling single-number-reach create-person", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/singleNumberReach/numbers", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling single-number-reach delete", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/singleNumberReach/numbers/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling single-number-reach delete", - "variant": "required", - "args": [ - "--id=s-id", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/singleNumberReach/numbers/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling single-number-reach get-primary", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--max=s-max", - "--phone-number=s-phone-number", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/singleNumberReach/availableNumbers?max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling single-number-reach get-primary", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/singleNumberReach/availableNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling single-number-reach get-primary", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/singleNumberReach/availableNumbers?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling single-number-reach get-settings-person", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/singleNumberReach", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling single-number-reach get-settings-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/singleNumberReach", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling single-number-reach get-settings-person", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/singleNumberReach", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling single-number-reach update-settings", - "variant": "all-flags", - "args": [ - "--answer-confirmation-enabled=true", - "--do-not-forward-calls-enabled=true", - "--enabled=true", - "--id=s-id", - "--name=s-name", - "--person-id=s-person-id", - "--phone-number=s-phone-number" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/singleNumberReach/numbers/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"answerConfirmationEnabled\":true,\"doNotForwardCallsEnabled\":true,\"enabled\":true,\"name\":\"s-name\",\"phoneNumber\":\"s-phone-number\"}" - } - ] - }, - { - "command": "calling single-number-reach update-settings", - "variant": "required", - "args": [ - "--id=s-id", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/singleNumberReach/numbers/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling single-number-reach update-settings", - "variant": "body", - "args": [ - "--id=s-id", - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/singleNumberReach/numbers/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling single-number-reach update-settings-person", - "variant": "all-flags", - "args": [ - "--alert-all-numbers-for-click-to-dial-calls-enabled=true", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/singleNumberReach", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"alertAllNumbersForClickToDialCallsEnabled\":true}" - } - ] - }, - { - "command": "calling single-number-reach update-settings-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/singleNumberReach", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling single-number-reach update-settings-person", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/singleNumberReach", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call assign-list-features-mode-management", - "variant": "all-flags", - "args": [ - "--feature-ids=s-feature-ids-1,s-feature-ids-2", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/modeManagement/features?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"featureIds\":[\"s-feature-ids-1\",\"s-feature-ids-2\"]}" - } - ] - }, - { - "command": "calling user-call assign-list-features-mode-management", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/modeManagement/features?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call assign-list-features-mode-management", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/modeManagement/features?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call assign-unassign-numbers-person", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/numbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call assign-unassign-numbers-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/numbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call assign-unassign-numbers-person", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/numbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call create-access-codes-person", - "variant": "all-flags", - "args": [ - "--code=s-code", - "--description=s-description", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/outgoingPermission/accessCodes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"code\":\"s-code\",\"description\":\"s-description\"}" - } - ] - }, - { - "command": "calling user-call create-access-codes-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/outgoingPermission/accessCodes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call create-access-codes-person", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/outgoingPermission/accessCodes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call create-digit-patterns-person", - "variant": "all-flags", - "args": [ - "--action=s-action", - "--name=s-name", - "--pattern=s-pattern", - "--person-id=s-person-id", - "--transfer-enabled=true" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/outgoingPermission/digitPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"action\":\"s-action\",\"name\":\"s-name\",\"pattern\":\"s-pattern\",\"transferEnabled\":true}" - } - ] - }, - { - "command": "calling user-call create-digit-patterns-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/outgoingPermission/digitPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call create-digit-patterns-person", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/outgoingPermission/digitPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call create-event-person-schedule", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id", - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/people/s-person-id/features/schedules/s-schedule-type/s-schedule-id/events?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call create-event-person-schedule", - "variant": "required", - "args": [ - "--person-id=s-person-id", - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/people/s-person-id/features/schedules/s-schedule-type/s-schedule-id/events?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call create-event-person-schedule", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/people/s-person-id/features/schedules/s-schedule-type/s-schedule-id/events?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call create-person-executive-filtering", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/executive/callFiltering/criteria?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call create-person-executive-filtering", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/executive/callFiltering/criteria?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call create-person-executive-filtering", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/executive/callFiltering/criteria?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call create-schedule-person", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/people/s-person-id/features/schedules?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call create-schedule-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/people/s-person-id/features/schedules?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call create-schedule-person", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/people/s-person-id/features/schedules?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call create-users-selective-accept-service", - "variant": "all-flags", - "args": [ - "--accept-enabled=true", - "--anonymous-callers-enabled=true", - "--calls-from=s-calls-from", - "--person-id=s-person-id", - "--phone-numbers=s-phone-numbers-1,s-phone-numbers-2", - "--schedule-level=s-schedule-level", - "--schedule-name=s-schedule-name", - "--schedule-type=s-schedule-type", - "--unavailable-callers-enabled=true" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/selectiveAccept/criteria?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"acceptEnabled\":true,\"anonymousCallersEnabled\":true,\"callsFrom\":\"s-calls-from\",\"phoneNumbers\":[\"s-phone-numbers-1\",\"s-phone-numbers-2\"],\"scheduleLevel\":\"s-schedule-level\",\"scheduleName\":\"s-schedule-name\",\"scheduleType\":\"s-schedule-type\",\"unavailableCallersEnabled\":true}" - } - ] - }, - { - "command": "calling user-call create-users-selective-accept-service", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/selectiveAccept/criteria?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call create-users-selective-accept-service", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/selectiveAccept/criteria?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call create-users-selective-forward-service", - "variant": "all-flags", - "args": [ - "--anonymous-callers-enabled=true", - "--calls-from=s-calls-from", - "--forward-enabled=true", - "--forward-to-phone-number=s-forward-to-phone-number", - "--person-id=s-person-id", - "--phone-numbers=s-phone-numbers-1,s-phone-numbers-2", - "--schedule-level=s-schedule-level", - "--schedule-name=s-schedule-name", - "--schedule-type=s-schedule-type", - "--send-to-voicemail-enabled=true", - "--unavailable-callers-enabled=true" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/selectiveForward/criteria?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"anonymousCallersEnabled\":true,\"callsFrom\":\"s-calls-from\",\"forwardEnabled\":true,\"forwardToPhoneNumber\":\"s-forward-to-phone-number\",\"phoneNumbers\":[\"s-phone-numbers-1\",\"s-phone-numbers-2\"],\"scheduleLevel\":\"s-schedule-level\",\"scheduleName\":\"s-schedule-name\",\"scheduleType\":\"s-schedule-type\",\"sendToVoicemailEnabled\":true,\"unavailableCallersEnabled\":true}" - } - ] - }, - { - "command": "calling user-call create-users-selective-forward-service", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/selectiveForward/criteria?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call create-users-selective-forward-service", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/selectiveForward/criteria?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call create-users-selective-reject-service", - "variant": "all-flags", - "args": [ - "--anonymous-callers-enabled=true", - "--calls-from=s-calls-from", - "--person-id=s-person-id", - "--phone-numbers=s-phone-numbers-1,s-phone-numbers-2", - "--reject-enabled=true", - "--schedule-level=s-schedule-level", - "--schedule-name=s-schedule-name", - "--schedule-type=s-schedule-type", - "--unavailable-callers-enabled=true" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/selectiveReject/criteria?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"anonymousCallersEnabled\":true,\"callsFrom\":\"s-calls-from\",\"phoneNumbers\":[\"s-phone-numbers-1\",\"s-phone-numbers-2\"],\"rejectEnabled\":true,\"scheduleLevel\":\"s-schedule-level\",\"scheduleName\":\"s-schedule-name\",\"scheduleType\":\"s-schedule-type\",\"unavailableCallersEnabled\":true}" - } - ] - }, - { - "command": "calling user-call create-users-selective-reject-service", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/selectiveReject/criteria?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call create-users-selective-reject-service", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/selectiveReject/criteria?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call delete-access-codes-person", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/outgoingPermission/accessCodes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call delete-access-codes-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/outgoingPermission/accessCodes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call delete-all-digit-patterns-person", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/outgoingPermission/digitPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call delete-all-digit-patterns-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/outgoingPermission/digitPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call delete-digit-pattern-person", - "variant": "all-flags", - "args": [ - "--digit-pattern-id=s-digit-pattern-id", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/outgoingPermission/digitPatterns/s-digit-pattern-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call delete-digit-pattern-person", - "variant": "required", - "args": [ - "--digit-pattern-id=s-digit-pattern-id", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/outgoingPermission/digitPatterns/s-digit-pattern-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call delete-event-person-schedule", - "variant": "all-flags", - "args": [ - "--event-id=s-event-id", - "--person-id=s-person-id", - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/people/s-person-id/features/schedules/s-schedule-type/s-schedule-id/events/s-event-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call delete-event-person-schedule", - "variant": "required", - "args": [ - "--event-id=s-event-id", - "--person-id=s-person-id", - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/people/s-person-id/features/schedules/s-schedule-type/s-schedule-id/events/s-event-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call delete-message", - "variant": "all-flags", - "args": [ - "--message-id=s-message-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/voiceMessages/s-message-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call delete-message", - "variant": "required", - "args": [ - "--message-id=s-message-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/voiceMessages/s-message-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call delete-person-executive-filtering", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/executive/callFiltering/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call delete-person-executive-filtering", - "variant": "required", - "args": [ - "--id=s-id", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/executive/callFiltering/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call delete-schedule", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id", - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/people/s-person-id/features/schedules/s-schedule-type/s-schedule-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call delete-schedule", - "variant": "required", - "args": [ - "--person-id=s-person-id", - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/people/s-person-id/features/schedules/s-schedule-type/s-schedule-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call delete-users-selective-accept-service", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/selectiveAccept/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call delete-users-selective-accept-service", - "variant": "required", - "args": [ - "--id=s-id", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/selectiveAccept/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call delete-users-selective-forward-service", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/selectiveForward/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call delete-users-selective-forward-service", - "variant": "required", - "args": [ - "--id=s-id", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/selectiveForward/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call delete-users-selective-reject-service", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/selectiveReject/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call delete-users-selective-reject-service", - "variant": "required", - "args": [ - "--id=s-id", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/selectiveReject/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-access-codes-person", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/outgoingPermission/accessCodes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-access-codes-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/outgoingPermission/accessCodes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-access-codes-person", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/outgoingPermission/accessCodes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-agent-caller-id", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/agent/callerId", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-agent-caller-id", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/agent/callerId", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-agent-caller-id", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/agent/callerId", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-agent-list-available-caller-ids", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/agent/availableCallerIds?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-agent-list-available-caller-ids", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/agent/availableCallerIds?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-agent-list-available-caller-ids", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/agent/availableCallerIds?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-barge-settings-person", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/bargeIn?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-barge-settings-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/bargeIn?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-barge-settings-person", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/bargeIn?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-bridge-settings-person", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/features/callBridge?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-bridge-settings-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/features/callBridge?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-bridge-settings-person", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/features/callBridge?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-caller-id-person", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/callerId?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-caller-id-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/callerId?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-caller-id-person", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/callerId?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-captions-settings", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/callCaptions?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-captions-settings", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/callCaptions?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-captions-settings", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/callCaptions?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-count-shared-line-appearance-members", - "variant": "all-flags", - "args": [ - "--extension=s-extension", - "--location-id=s-location-id", - "--member-name=s-member-name", - "--person-id=s-person-id", - "--phone-number=s-phone-number" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/applications/availableMembers/count?extension=s-extension&locationId=s-location-id&memberName=s-member-name&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&phoneNumber=s-phone-number", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-count-shared-line-appearance-members", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/applications/availableMembers/count?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-count-shared-line-appearance-members", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/applications/availableMembers/count?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-country-calling-configuration", - "variant": "all-flags", - "args": [ - "--country-code=s-country-code" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/countries/s-country-code?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-country-calling-configuration", - "variant": "required", - "args": [ - "--country-code=s-country-code" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/countries/s-country-code?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-country-calling-configuration", - "variant": "paginate", - "args": [ - "--country-code=s-country-code", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/countries/s-country-code?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-digit-pattern-person", - "variant": "all-flags", - "args": [ - "--digit-pattern-id=s-digit-pattern-id", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/outgoingPermission/digitPatterns/s-digit-pattern-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-digit-pattern-person", - "variant": "required", - "args": [ - "--digit-pattern-id=s-digit-pattern-id", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/outgoingPermission/digitPatterns/s-digit-pattern-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-digit-pattern-person", - "variant": "paginate", - "args": [ - "--digit-pattern-id=s-digit-pattern-id", - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/outgoingPermission/digitPatterns/s-digit-pattern-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-digit-patterns-person", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/outgoingPermission/digitPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-digit-patterns-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/outgoingPermission/digitPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-digit-patterns-person", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/outgoingPermission/digitPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-do-not-disturb-settings-person", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/doNotDisturb?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-do-not-disturb-settings-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/doNotDisturb?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-do-not-disturb-settings-person", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/doNotDisturb?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-event-person-schedule", - "variant": "all-flags", - "args": [ - "--event-id=s-event-id", - "--person-id=s-person-id", - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/schedules/s-schedule-type/s-schedule-id/events/s-event-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-event-person-schedule", - "variant": "required", - "args": [ - "--event-id=s-event-id", - "--person-id=s-person-id", - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/schedules/s-schedule-type/s-schedule-id/events/s-event-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-event-person-schedule", - "variant": "paginate", - "args": [ - "--event-id=s-event-id", - "--person-id=s-person-id", - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/schedules/s-schedule-type/s-schedule-id/events/s-event-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-executive-assistant-settings-person", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/executiveAssistant?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-executive-assistant-settings-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/executiveAssistant?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-executive-assistant-settings-person", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/executiveAssistant?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-forwarding-settings-person", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/callForwarding?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-forwarding-settings-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/callForwarding?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-forwarding-settings-person", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/callForwarding?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-hoteling-settings-person", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/hoteling?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-hoteling-settings-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/hoteling?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-hoteling-settings-person", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/hoteling?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-incoming-permission-settings-person", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/incomingPermission?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-incoming-permission-settings-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/incomingPermission?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-incoming-permission-settings-person", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/incomingPermission?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-intercept-settings-person", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/intercept?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-intercept-settings-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/intercept?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-intercept-settings-person", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/intercept?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-message-summary", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/voiceMessages/summary", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-message-summary", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/voiceMessages/summary", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-message-summary", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/voiceMessages/summary", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-move-job-status", - "variant": "all-flags", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/person/moveLocation/s-job-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-move-job-status", - "variant": "required", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/person/moveLocation/s-job-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-move-job-status", - "variant": "paginate", - "args": [ - "--job-id=s-job-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/person/moveLocation/s-job-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-music-hold-settings-person", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/musicOnHold?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-music-hold-settings-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/musicOnHold?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-music-hold-settings-person", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/musicOnHold?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-application-services-settings", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/applications?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-application-services-settings", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/applications?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-application-services-settings", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/applications?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-application-services-settings-2", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/applications?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-application-services-settings-2", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/applications?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-application-services-settings-2", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/applications?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-calling-behavior", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/callingBehavior?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-calling-behavior", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/callingBehavior?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-calling-behavior", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/callingBehavior?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-ecbn-available-numbers", - "variant": "all-flags", - "args": [ - "--max=s-max", - "--owner-name=s-owner-name", - "--person-id=s-person-id", - "--phone-number=s-phone-number", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/emergencyCallbackNumber/availableNumbers?max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&ownerName=s-owner-name&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-ecbn-available-numbers", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/emergencyCallbackNumber/availableNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-ecbn-available-numbers", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/emergencyCallbackNumber/availableNumbers?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-executive-alert-settings", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/executive/alert?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-executive-alert-settings", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/executive/alert?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-executive-alert-settings", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/executive/alert?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-executive-assigned-assistants", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/executive/assignedAssistants?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-executive-assigned-assistants", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/executive/assignedAssistants?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-executive-assigned-assistants", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/executive/assignedAssistants?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-executive-assistant-settings", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/executive/assistant?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-executive-assistant-settings", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/executive/assistant?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-executive-assistant-settings", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/executive/assistant?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-executive-available-assistants", - "variant": "all-flags", - "args": [ - "--max=s-max", - "--name=s-name", - "--person-id=s-person-id", - "--phone-number=s-phone-number", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/executive/availableAssistants?max=s-max&name=s-name&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-executive-available-assistants", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/executive/availableAssistants?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-executive-available-assistants", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/executive/availableAssistants?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-executive-filtering-settings", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/executive/callFiltering?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-executive-filtering-settings", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/executive/callFiltering?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-executive-filtering-settings", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/executive/callFiltering?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-executive-filtering-settings-2", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/executive/callFiltering/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-executive-filtering-settings-2", - "variant": "required", - "args": [ - "--id=s-id", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/executive/callFiltering/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-executive-filtering-settings-2", - "variant": "paginate", - "args": [ - "--id=s-id", - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/executive/callFiltering/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-executive-screening-settings", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/executive/screening?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-executive-screening-settings", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/executive/screening?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-executive-screening-settings", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/executive/screening?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-fax-available-numbers", - "variant": "all-flags", - "args": [ - "--max=s-max", - "--person-id=s-person-id", - "--phone-number=s-phone-number", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/faxMessage/availableNumbers?max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-fax-available-numbers", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/faxMessage/availableNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-fax-available-numbers", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/faxMessage/availableNumbers?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-forward-available-numbers", - "variant": "all-flags", - "args": [ - "--extension=s-extension", - "--max=s-max", - "--owner-name=s-owner-name", - "--person-id=s-person-id", - "--phone-number=s-phone-number", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/callForwarding/availableNumbers?extension=s-extension&max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&ownerName=s-owner-name&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-forward-available-numbers", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/callForwarding/availableNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-forward-available-numbers", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/callForwarding/availableNumbers?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-intercept-available-numbers", - "variant": "all-flags", - "args": [ - "--extension=s-extension", - "--max=s-max", - "--owner-name=s-owner-name", - "--person-id=s-person-id", - "--phone-number=s-phone-number", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/callIntercept/availableNumbers?extension=s-extension&max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&ownerName=s-owner-name&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-intercept-available-numbers", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/callIntercept/availableNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-intercept-available-numbers", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/callIntercept/availableNumbers?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-monitoring-settings", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/monitoring?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-monitoring-settings", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/monitoring?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-monitoring-settings", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/monitoring?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-ms-teams-settings", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/settings/msTeams?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-ms-teams-settings", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/settings/msTeams?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-ms-teams-settings", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/settings/msTeams?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-outgoing-permissions-settings", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/outgoingPermission?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-outgoing-permissions-settings", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/outgoingPermission?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-outgoing-permissions-settings", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/outgoingPermission?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-primary-numbers", - "variant": "all-flags", - "args": [ - "--license-type=s-license-type", - "--location-id=s-location-id", - "--max=s-max", - "--phone-number=s-phone-number", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/primary/availableNumbers?licenseType=s-license-type&locationId=s-location-id&max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-primary-numbers", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/primary/availableNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-primary-numbers", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/primary/availableNumbers?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-privacy-settings", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/privacy?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-privacy-settings", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/privacy?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-privacy-settings", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/privacy?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-secondary-available-numbers", - "variant": "all-flags", - "args": [ - "--max=s-max", - "--person-id=s-person-id", - "--phone-number=s-phone-number", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/secondary/availableNumbers?max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-secondary-available-numbers", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/secondary/availableNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-person-secondary-available-numbers", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/secondary/availableNumbers?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-personal-assistant", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/features/personalAssistant?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-personal-assistant", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/features/personalAssistant?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-personal-assistant", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/features/personalAssistant?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-preferred-endpoint", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/preferredAnswerEndpoint?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-preferred-endpoint", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/preferredAnswerEndpoint?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-preferred-endpoint", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/preferredAnswerEndpoint?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-push-to-talk-settings-person", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/pushToTalk?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-push-to-talk-settings-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/pushToTalk?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-push-to-talk-settings-person", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/pushToTalk?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-receptionist-client-settings-person", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/reception?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-receptionist-client-settings-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/reception?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-receptionist-client-settings-person", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/reception?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-recording-person", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/callRecording?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-recording-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/callRecording?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-recording-person", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/callRecording?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-schedule", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id", - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/schedules/s-schedule-type/s-schedule-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-schedule", - "variant": "required", - "args": [ - "--person-id=s-person-id", - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/schedules/s-schedule-type/s-schedule-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-schedule", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/schedules/s-schedule-type/s-schedule-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-shared-line-appearance-members", - "variant": "all-flags", - "args": [ - "--application-id=s-application-id", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/applications/s-application-id/members", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-shared-line-appearance-members", - "variant": "required", - "args": [ - "--application-id=s-application-id", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/applications/s-application-id/members", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-shared-line-appearance-members", - "variant": "paginate", - "args": [ - "--application-id=s-application-id", - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/applications/s-application-id/members", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-shared-line-appearance-members-2", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/applications/members", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-shared-line-appearance-members-2", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/applications/members", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-shared-line-appearance-members-2", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/applications/members", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-timezone-announcement-language-settings-person", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-timezone-announcement-language-settings-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-timezone-announcement-language-settings-person", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-transfer-numbers-person", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/outgoingPermission/autoTransferNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-transfer-numbers-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/outgoingPermission/autoTransferNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-transfer-numbers-person", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/outgoingPermission/autoTransferNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-users-selective-accept-list", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/selectiveAccept?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-users-selective-accept-list", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/selectiveAccept?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-users-selective-accept-list", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/selectiveAccept?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-users-selective-accept-service", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/selectiveAccept/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-users-selective-accept-service", - "variant": "required", - "args": [ - "--id=s-id", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/selectiveAccept/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-users-selective-accept-service", - "variant": "paginate", - "args": [ - "--id=s-id", - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/selectiveAccept/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-users-selective-forward", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/selectiveForward?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-users-selective-forward", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/selectiveForward?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-users-selective-forward", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/selectiveForward?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-users-selective-forward-service", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/selectiveForward/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-users-selective-forward-service", - "variant": "required", - "args": [ - "--id=s-id", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/selectiveForward/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-users-selective-forward-service", - "variant": "paginate", - "args": [ - "--id=s-id", - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/selectiveForward/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-users-selective-reject-listing", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/selectiveReject?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-users-selective-reject-listing", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/selectiveReject?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-users-selective-reject-listing", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/selectiveReject?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-users-selective-reject-service", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/selectiveReject/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-users-selective-reject-service", - "variant": "required", - "args": [ - "--id=s-id", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/selectiveReject/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-users-selective-reject-service", - "variant": "paginate", - "args": [ - "--id=s-id", - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/selectiveReject/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-voicemail-person", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/voicemail?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-voicemail-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/voicemail?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-voicemail-person", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/voicemail?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-waiting-settings-person", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/callWaiting?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-waiting-settings-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/callWaiting?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call get-waiting-settings-person", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/callWaiting?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call list-available-features", - "variant": "all-flags", - "args": [ - "--extension=s-extension", - "--max=s-max", - "--name=s-name", - "--order=s-order", - "--person-id=s-person-id", - "--phone-number=s-phone-number", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/modeManagement/availableFeatures?extension=s-extension&max=s-max&name=s-name&order=s-order&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call list-available-features", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/modeManagement/availableFeatures?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call list-available-features", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/modeManagement/availableFeatures?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call list-features-assigned-mode-management", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/modeManagement/features?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call list-features-assigned-mode-management", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/modeManagement/features?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call list-features-assigned-mode-management", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/modeManagement/features?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call list-messages", - "variant": "all-flags", - "args": [ - "--line-owner-id=s-line-owner-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/voiceMessages?lineOwnerId=s-line-owner-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call list-messages", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/voiceMessages", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call list-messages", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/voiceMessages", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call list-move-job-errors", - "variant": "all-flags", - "args": [ - "--job-id=s-job-id", - "--max=s-max", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/person/moveLocation/s-job-id/errors?max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call list-move-job-errors", - "variant": "required", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/person/moveLocation/s-job-id/errors?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call list-move-job-errors", - "variant": "paginate", - "args": [ - "--job-id=s-job-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/person/moveLocation/s-job-id/errors?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call list-move-jobs", - "variant": "all-flags", - "args": [ - "--max=s-max", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/person/moveLocation?max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call list-move-jobs", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/person/moveLocation?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call list-move-jobs", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/person/moveLocation?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call list-phone-numbers-person", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id", - "--prefer-e164-format=s-prefer-e164-format" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/numbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&preferE164Format=s-prefer-e164-format", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call list-phone-numbers-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/numbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call list-phone-numbers-person", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/numbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call list-schedules-person", - "variant": "all-flags", - "args": [ - "--max=s-max", - "--name=s-name", - "--person-id=s-person-id", - "--start=s-start", - "--type=s-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/schedules?max=s-max&name=s-name&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=s-start&type=s-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call list-schedules-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/schedules?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call list-schedules-person", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id/features/schedules?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call mark-read", - "variant": "all-flags", - "args": [ - "--line-owner-id=s-line-owner-id", - "--message-id=s-message-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/voiceMessages/markAsRead", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"lineOwnerId\":\"s-line-owner-id\",\"messageId\":\"s-message-id\"}" - } - ] - }, - { - "command": "calling user-call mark-read", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/voiceMessages/markAsRead", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call mark-read", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/voiceMessages/markAsRead", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call mark-unread", - "variant": "all-flags", - "args": [ - "--line-owner-id=s-line-owner-id", - "--message-id=s-message-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/voiceMessages/markAsUnread", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"lineOwnerId\":\"s-line-owner-id\",\"messageId\":\"s-message-id\"}" - } - ] - }, - { - "command": "calling user-call mark-unread", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/voiceMessages/markAsUnread", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call mark-unread", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/voiceMessages/markAsUnread", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call pause-move-job", - "variant": "all-flags", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/jobs/person/moveLocation/s-job-id/actions/pause/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call pause-move-job", - "variant": "required", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/jobs/person/moveLocation/s-job-id/actions/pause/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call reset-voicemail-pin", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/people/s-person-id/features/voicemail/actions/resetPin/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call reset-voicemail-pin", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/people/s-person-id/features/voicemail/actions/resetPin/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call reset-voicemail-pin", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/people/s-person-id/features/voicemail/actions/resetPin/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call resume-move-job", - "variant": "all-flags", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/jobs/person/moveLocation/s-job-id/actions/resume/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call resume-move-job", - "variant": "required", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/jobs/person/moveLocation/s-job-id/actions/resume/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call search-shared-line-appearance-members", - "variant": "all-flags", - "args": [ - "--application-id=s-application-id", - "--extension=s-extension", - "--location=s-location", - "--max=s-max", - "--name=s-name", - "--number=s-number", - "--order=s-order", - "--person-id=s-person-id", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/applications/s-application-id/availableMembers?extension=s-extension&location=s-location&max=s-max&name=s-name&number=s-number&order=s-order&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call search-shared-line-appearance-members", - "variant": "required", - "args": [ - "--application-id=s-application-id", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/applications/s-application-id/availableMembers", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call search-shared-line-appearance-members", - "variant": "paginate", - "args": [ - "--application-id=s-application-id", - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/applications/s-application-id/availableMembers?max=100&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call search-shared-line-appearance-members-2", - "variant": "all-flags", - "args": [ - "--extension=s-extension", - "--location=s-location", - "--max=s-max", - "--name=s-name", - "--order=s-order", - "--person-id=s-person-id", - "--phone-number=s-phone-number", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/applications/availableMembers?extension=s-extension&location=s-location&max=s-max&name=s-name&order=s-order&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call search-shared-line-appearance-members-2", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/applications/availableMembers", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call search-shared-line-appearance-members-2", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/applications/availableMembers?max=100&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-access-codes-person", - "variant": "all-flags", - "args": [ - "--delete-codes=s-delete-codes-1,s-delete-codes-2", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/outgoingPermission/accessCodes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"deleteCodes\":[\"s-delete-codes-1\",\"s-delete-codes-2\"]}" - } - ] - }, - { - "command": "calling user-call update-access-codes-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/outgoingPermission/accessCodes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-access-codes-person", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/outgoingPermission/accessCodes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call update-agent-caller-id", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id", - "--selected-caller-id=s-selected-caller-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/agent/callerId", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"selectedCallerId\":\"s-selected-caller-id\"}" - } - ] - }, - { - "command": "calling user-call update-agent-caller-id", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/agent/callerId", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-agent-caller-id", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/agent/callerId", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call update-barge-settings-person", - "variant": "all-flags", - "args": [ - "--enabled=true", - "--person-id=s-person-id", - "--tone-enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/bargeIn?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"enabled\":true,\"toneEnabled\":true}" - } - ] - }, - { - "command": "calling user-call update-barge-settings-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/bargeIn?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-barge-settings-person", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/bargeIn?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call update-bridge-settings-person", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id", - "--warning-tone-enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/features/callBridge?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"warningToneEnabled\":true}" - } - ] - }, - { - "command": "calling user-call update-bridge-settings-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/features/callBridge?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-bridge-settings-person", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/features/callBridge?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call update-busy-voicemail-greeting-person", - "variant": "all-flags", - "args": [ - "--file=s-file", - "--person-id=s-person-id" - ], - "requests": [], - "error": "opening audio file: open s-file: no such file or directory" - }, - { - "command": "calling user-call update-busy-voicemail-greeting-person", - "variant": "required", - "args": [ - "--file=s-file", - "--person-id=s-person-id" - ], - "requests": [], - "error": "opening audio file: open s-file: no such file or directory" - }, - { - "command": "calling user-call update-caller-id-person", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/callerId?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-caller-id-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/callerId?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-caller-id-person", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/callerId?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call update-captions-settings", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id", - "--use-location-settings-enabled=true", - "--user-closed-captions-enabled=true", - "--user-transcripts-enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/callCaptions?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"useLocationSettingsEnabled\":true,\"userClosedCaptionsEnabled\":true,\"userTranscriptsEnabled\":true}" - } - ] - }, - { - "command": "calling user-call update-captions-settings", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/callCaptions?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-captions-settings", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/callCaptions?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call update-digit-pattern-control-person", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id", - "--use-custom-digit-patterns=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/outgoingPermission/digitPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"useCustomDigitPatterns\":true}" - } - ] - }, - { - "command": "calling user-call update-digit-pattern-control-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/outgoingPermission/digitPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-digit-pattern-control-person", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/outgoingPermission/digitPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call update-digit-pattern-person", - "variant": "all-flags", - "args": [ - "--action=s-action", - "--digit-pattern-id=s-digit-pattern-id", - "--name=s-name", - "--pattern=s-pattern", - "--person-id=s-person-id", - "--transfer-enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/outgoingPermission/digitPatterns/s-digit-pattern-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"action\":\"s-action\",\"name\":\"s-name\",\"pattern\":\"s-pattern\",\"transferEnabled\":true}" - } - ] - }, - { - "command": "calling user-call update-digit-pattern-person", - "variant": "required", - "args": [ - "--digit-pattern-id=s-digit-pattern-id", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/outgoingPermission/digitPatterns/s-digit-pattern-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-digit-pattern-person", - "variant": "body", - "args": [ - "--digit-pattern-id=s-digit-pattern-id", - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/outgoingPermission/digitPatterns/s-digit-pattern-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call update-do-not-disturb-settings-person", - "variant": "all-flags", - "args": [ - "--enabled=true", - "--person-id=s-person-id", - "--ring-splash-enabled=true", - "--webex-go-override-enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/doNotDisturb?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"enabled\":true,\"ringSplashEnabled\":true,\"webexGoOverrideEnabled\":true}" - } - ] - }, - { - "command": "calling user-call update-do-not-disturb-settings-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/doNotDisturb?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-do-not-disturb-settings-person", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/doNotDisturb?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call update-event-person-schedule", - "variant": "all-flags", - "args": [ - "--event-id=s-event-id", - "--person-id=s-person-id", - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/schedules/s-schedule-type/s-schedule-id/events/s-event-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-event-person-schedule", - "variant": "required", - "args": [ - "--event-id=s-event-id", - "--person-id=s-person-id", - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/schedules/s-schedule-type/s-schedule-id/events/s-event-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-event-person-schedule", - "variant": "body", - "args": [ - "--event-id=s-event-id", - "--person-id=s-person-id", - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/schedules/s-schedule-type/s-schedule-id/events/s-event-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call update-executive-assistant-settings-person", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id", - "--type=s-type" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/executiveAssistant?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"type\":\"s-type\"}" - } - ] - }, - { - "command": "calling user-call update-executive-assistant-settings-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/executiveAssistant?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-executive-assistant-settings-person", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/executiveAssistant?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call update-forward-person", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/callForwarding?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-forward-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/callForwarding?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-forward-person", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/callForwarding?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call update-hoteling-settings-person", - "variant": "all-flags", - "args": [ - "--enabled=true", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/hoteling?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"enabled\":true}" - } - ] - }, - { - "command": "calling user-call update-hoteling-settings-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/hoteling?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-hoteling-settings-person", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/hoteling?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call update-incoming-permission-settings-person", - "variant": "all-flags", - "args": [ - "--collect-calls-enabled=true", - "--external-transfer=s-external-transfer", - "--internal-calls-enabled=true", - "--person-id=s-person-id", - "--use-custom-enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/incomingPermission?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"collectCallsEnabled\":true,\"externalTransfer\":\"s-external-transfer\",\"internalCallsEnabled\":true,\"useCustomEnabled\":true}" - } - ] - }, - { - "command": "calling user-call update-incoming-permission-settings-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/incomingPermission?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-incoming-permission-settings-person", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/incomingPermission?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call update-intercept-greeting-person", - "variant": "all-flags", - "args": [ - "--file=s-file", - "--person-id=s-person-id" - ], - "requests": [], - "error": "opening audio file: open s-file: no such file or directory" - }, - { - "command": "calling user-call update-intercept-greeting-person", - "variant": "required", - "args": [ - "--file=s-file", - "--person-id=s-person-id" - ], - "requests": [], - "error": "opening audio file: open s-file: no such file or directory" - }, - { - "command": "calling user-call update-intercept-settings-person", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/intercept?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-intercept-settings-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/intercept?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-intercept-settings-person", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/intercept?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call update-music-hold-settings-person", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/musicOnHold?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-music-hold-settings-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/musicOnHold?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-music-hold-settings-person", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/musicOnHold?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call update-no-answer-voicemail-greeting-person", - "variant": "all-flags", - "args": [ - "--file=s-file", - "--person-id=s-person-id" - ], - "requests": [], - "error": "opening audio file: open s-file: no such file or directory" - }, - { - "command": "calling user-call update-no-answer-voicemail-greeting-person", - "variant": "required", - "args": [ - "--file=s-file", - "--person-id=s-person-id" - ], - "requests": [], - "error": "opening audio file: open s-file: no such file or directory" - }, - { - "command": "calling user-call update-person-application-services-settings", - "variant": "all-flags", - "args": [ - "--browser-client-enabled=true", - "--desktop-client-enabled=true", - "--mobile-client-enabled=true", - "--person-id=s-person-id", - "--ring-devices-for-call-park-enabled=true", - "--ring-devices-for-click-to-dial-calls-enabled=true", - "--ring-devices-for-group-page-enabled=true", - "--tablet-client-enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/applications?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"browserClientEnabled\":true,\"desktopClientEnabled\":true,\"mobileClientEnabled\":true,\"ringDevicesForCallParkEnabled\":true,\"ringDevicesForClickToDialCallsEnabled\":true,\"ringDevicesForGroupPageEnabled\":true,\"tabletClientEnabled\":true}" - } - ] - }, - { - "command": "calling user-call update-person-application-services-settings", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/applications?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-person-application-services-settings", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/applications?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call update-person-calling-behavior", - "variant": "all-flags", - "args": [ - "--behavior-type=s-behavior-type", - "--person-id=s-person-id", - "--profile-id=s-profile-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/callingBehavior?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"behaviorType\":\"s-behavior-type\",\"profileId\":\"s-profile-id\"}" - } - ] - }, - { - "command": "calling user-call update-person-calling-behavior", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/callingBehavior?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-person-calling-behavior", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/callingBehavior?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call update-person-executive-alert-settings", - "variant": "all-flags", - "args": [ - "--alerting-mode=s-alerting-mode", - "--clid-name-mode=s-clid-name-mode", - "--clid-phone-number-mode=s-clid-phone-number-mode", - "--custom-clidname=s-custom-clidname", - "--custom-clidname-in-unicode=s-custom-clidname-in-unicode", - "--custom-clidphone-number=s-custom-clidphone-number", - "--next-assistant-number-of-rings=7", - "--person-id=s-person-id", - "--rollover-action=s-rollover-action", - "--rollover-enabled=true", - "--rollover-forward-to-phone-number=s-rollover-forward-to-phone-number", - "--rollover-wait-time-in-secs=7" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/executive/alert?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"alertingMode\":\"s-alerting-mode\",\"clidNameMode\":\"s-clid-name-mode\",\"clidPhoneNumberMode\":\"s-clid-phone-number-mode\",\"customCLIDName\":\"s-custom-clidname\",\"customCLIDNameInUnicode\":\"s-custom-clidname-in-unicode\",\"customCLIDPhoneNumber\":\"s-custom-clidphone-number\",\"nextAssistantNumberOfRings\":7,\"rolloverAction\":\"s-rollover-action\",\"rolloverEnabled\":true,\"rolloverForwardToPhoneNumber\":\"s-rollover-forward-to-phone-number\",\"rolloverWaitTimeInSecs\":7}" - } - ] - }, - { - "command": "calling user-call update-person-executive-alert-settings", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/executive/alert?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-person-executive-alert-settings", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/executive/alert?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call update-person-executive-assigned-assistants", - "variant": "all-flags", - "args": [ - "--assistant-ids=s-assistant-ids-1,s-assistant-ids-2", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/executive/assignedAssistants?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"assistantIds\":[\"s-assistant-ids-1\",\"s-assistant-ids-2\"]}" - } - ] - }, - { - "command": "calling user-call update-person-executive-assigned-assistants", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/executive/assignedAssistants?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-person-executive-assigned-assistants", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/executive/assignedAssistants?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call update-person-executive-assistant-settings", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/executive/assistant?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-person-executive-assistant-settings", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/executive/assistant?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-person-executive-assistant-settings", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/executive/assistant?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call update-person-executive-filtering-settings", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/executive/callFiltering?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-person-executive-filtering-settings", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/executive/callFiltering?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-person-executive-filtering-settings", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/executive/callFiltering?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call update-person-executive-filtering-settings-2", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/executive/callFiltering/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-person-executive-filtering-settings-2", - "variant": "required", - "args": [ - "--id=s-id", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/executive/callFiltering/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-person-executive-filtering-settings-2", - "variant": "body", - "args": [ - "--id=s-id", - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/executive/callFiltering/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call update-person-executive-screening-settings", - "variant": "all-flags", - "args": [ - "--alert-anywhere-location-enabled=true", - "--alert-mobility-location-enabled=true", - "--alert-shared-call-appearance-location-enabled=true", - "--alert-type=s-alert-type", - "--enabled=true", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/executive/screening?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"alertAnywhereLocationEnabled\":true,\"alertMobilityLocationEnabled\":true,\"alertSharedCallAppearanceLocationEnabled\":true,\"alertType\":\"s-alert-type\",\"enabled\":true}" - } - ] - }, - { - "command": "calling user-call update-person-executive-screening-settings", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/executive/screening?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-person-executive-screening-settings", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/executive/screening?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call update-person-monitoring-settings", - "variant": "all-flags", - "args": [ - "--enable-call-park-notification=true", - "--monitored-elements=s-monitored-elements-1,s-monitored-elements-2", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/monitoring?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"enableCallParkNotification\":true,\"monitoredElements\":[\"s-monitored-elements-1\",\"s-monitored-elements-2\"]}" - } - ] - }, - { - "command": "calling user-call update-person-monitoring-settings", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/monitoring?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-person-monitoring-settings", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/monitoring?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call update-person-ms-teams-setting", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id", - "--setting-name=s-setting-name", - "--value=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/settings/msTeams?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"settingName\":\"s-setting-name\",\"value\":true}" - } - ] - }, - { - "command": "calling user-call update-person-ms-teams-setting", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/settings/msTeams?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-person-ms-teams-setting", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/settings/msTeams?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call update-person-outgoing-permissions-settings", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/outgoingPermission?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-person-outgoing-permissions-settings", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/outgoingPermission?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-person-outgoing-permissions-settings", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/outgoingPermission?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call update-person-privacy-settings", - "variant": "all-flags", - "args": [ - "--aa-extension-dialing-enabled=true", - "--aa-naming-dialing-enabled=true", - "--enable-phone-status-directory-privacy=true", - "--enable-phone-status-pickup-barge-in-privacy=true", - "--monitoring-agents=s-monitoring-agents-1,s-monitoring-agents-2", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/privacy?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"aaExtensionDialingEnabled\":true,\"aaNamingDialingEnabled\":true,\"enablePhoneStatusDirectoryPrivacy\":true,\"enablePhoneStatusPickupBargeInPrivacy\":true,\"monitoringAgents\":[\"s-monitoring-agents-1\",\"s-monitoring-agents-2\"]}" - } - ] - }, - { - "command": "calling user-call update-person-privacy-settings", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/privacy?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-person-privacy-settings", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/privacy?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call update-person-voicemail-passcode", - "variant": "all-flags", - "args": [ - "--passcode=s-passcode", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/voicemail/passcode?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"passcode\":\"s-passcode\"}" - } - ] - }, - { - "command": "calling user-call update-person-voicemail-passcode", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/voicemail/passcode?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-person-voicemail-passcode", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/voicemail/passcode?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call update-personal-assistant", - "variant": "all-flags", - "args": [ - "--alert-me-first-number-of-rings=7", - "--alerting=s-alerting", - "--enabled=true", - "--person-id=s-person-id", - "--presence=s-presence", - "--transfer-enabled=true", - "--transfer-number=s-transfer-number", - "--until-date-time=s-until-date-time" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/features/personalAssistant?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"alertMeFirstNumberOfRings\":7,\"alerting\":\"s-alerting\",\"enabled\":true,\"presence\":\"s-presence\",\"transferEnabled\":true,\"transferNumber\":\"s-transfer-number\",\"untilDateTime\":\"s-until-date-time\"}" - } - ] - }, - { - "command": "calling user-call update-personal-assistant", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/features/personalAssistant?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-personal-assistant", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/features/personalAssistant?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call update-preferred-endpoint", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id", - "--preferred-answer-endpoint-id=s-preferred-answer-endpoint-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/preferredAnswerEndpoint?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"preferredAnswerEndpointId\":\"s-preferred-answer-endpoint-id\"}" - } - ] - }, - { - "command": "calling user-call update-preferred-endpoint", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/preferredAnswerEndpoint?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-preferred-endpoint", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/preferredAnswerEndpoint?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call update-push-to-talk-settings-person", - "variant": "all-flags", - "args": [ - "--access-type=s-access-type", - "--allow-auto-answer=true", - "--connection-type=s-connection-type", - "--members=s-members-1,s-members-2", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/pushToTalk?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"accessType\":\"s-access-type\",\"allowAutoAnswer\":true,\"connectionType\":\"s-connection-type\",\"members\":[\"s-members-1\",\"s-members-2\"]}" - } - ] - }, - { - "command": "calling user-call update-push-to-talk-settings-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/pushToTalk?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-push-to-talk-settings-person", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/pushToTalk?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call update-receptionist-client-settings-person", - "variant": "all-flags", - "args": [ - "--monitored-members=s-monitored-members-1,s-monitored-members-2", - "--person-id=s-person-id", - "--reception-enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/reception?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"monitoredMembers\":[\"s-monitored-members-1\",\"s-monitored-members-2\"],\"receptionEnabled\":true}" - } - ] - }, - { - "command": "calling user-call update-receptionist-client-settings-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/reception?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-receptionist-client-settings-person", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/reception?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call update-recording-person", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/callRecording?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-recording-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/callRecording?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-recording-person", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/callRecording?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call update-schedule", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id", - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/schedules/s-schedule-type/s-schedule-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-schedule", - "variant": "required", - "args": [ - "--person-id=s-person-id", - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/schedules/s-schedule-type/s-schedule-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-schedule", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--schedule-id=s-schedule-id", - "--schedule-type=s-schedule-type", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/schedules/s-schedule-type/s-schedule-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call update-shared-line-appearance-members", - "variant": "all-flags", - "args": [ - "--application-id=s-application-id", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/applications/s-application-id/members", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-shared-line-appearance-members", - "variant": "required", - "args": [ - "--application-id=s-application-id", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/applications/s-application-id/members", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-shared-line-appearance-members", - "variant": "body", - "args": [ - "--application-id=s-application-id", - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/applications/s-application-id/members", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call update-shared-line-appearance-members-2", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/applications/members", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-shared-line-appearance-members-2", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/applications/members", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-shared-line-appearance-members-2", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/applications/members", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call update-timezone-announcement-language-settings-person", - "variant": "all-flags", - "args": [ - "--announcement-language=s-announcement-language", - "--person-id=s-person-id", - "--time-zone=s-time-zone" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"announcementLanguage\":\"s-announcement-language\",\"timeZone\":\"s-time-zone\"}" - } - ] - }, - { - "command": "calling user-call update-timezone-announcement-language-settings-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-timezone-announcement-language-settings-person", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call update-transfer-numbers-person", - "variant": "all-flags", - "args": [ - "--auto-transfer-number1=s-auto-transfer-number1", - "--auto-transfer-number2=s-auto-transfer-number2", - "--auto-transfer-number3=s-auto-transfer-number3", - "--person-id=s-person-id", - "--use-custom-transfer-numbers=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/outgoingPermission/autoTransferNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"autoTransferNumber1\":\"s-auto-transfer-number1\",\"autoTransferNumber2\":\"s-auto-transfer-number2\",\"autoTransferNumber3\":\"s-auto-transfer-number3\",\"useCustomTransferNumbers\":true}" - } - ] - }, - { - "command": "calling user-call update-transfer-numbers-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/outgoingPermission/autoTransferNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-transfer-numbers-person", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/outgoingPermission/autoTransferNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call update-users-selective-accept", - "variant": "all-flags", - "args": [ - "--enabled=true", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/selectiveAccept?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"enabled\":true}" - } - ] - }, - { - "command": "calling user-call update-users-selective-accept", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/selectiveAccept?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-users-selective-accept", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/selectiveAccept?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call update-users-selective-accept-service", - "variant": "all-flags", - "args": [ - "--accept-enabled=true", - "--anonymous-callers-enabled=true", - "--calls-from=s-calls-from", - "--id=s-id", - "--person-id=s-person-id", - "--phone-numbers=s-phone-numbers-1,s-phone-numbers-2", - "--schedule-level=s-schedule-level", - "--schedule-name=s-schedule-name", - "--schedule-type=s-schedule-type", - "--unavailable-callers-enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/selectiveAccept/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"acceptEnabled\":true,\"anonymousCallersEnabled\":true,\"callsFrom\":\"s-calls-from\",\"phoneNumbers\":[\"s-phone-numbers-1\",\"s-phone-numbers-2\"],\"scheduleLevel\":\"s-schedule-level\",\"scheduleName\":\"s-schedule-name\",\"scheduleType\":\"s-schedule-type\",\"unavailableCallersEnabled\":true}" - } - ] - }, - { - "command": "calling user-call update-users-selective-accept-service", - "variant": "required", - "args": [ - "--id=s-id", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/selectiveAccept/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-users-selective-accept-service", - "variant": "body", - "args": [ - "--id=s-id", - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/selectiveAccept/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call update-users-selective-forward-list", - "variant": "all-flags", - "args": [ - "--default-phone-number-to-forward=s-default-phone-number-to-forward", - "--destination-voicemail-enabled=true", - "--enabled=true", - "--person-id=s-person-id", - "--ring-reminder-enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/selectiveForward?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"defaultPhoneNumberToForward\":\"s-default-phone-number-to-forward\",\"destinationVoicemailEnabled\":true,\"enabled\":true,\"ringReminderEnabled\":true}" - } - ] - }, - { - "command": "calling user-call update-users-selective-forward-list", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/selectiveForward?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-users-selective-forward-list", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/selectiveForward?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call update-users-selective-forward-service", - "variant": "all-flags", - "args": [ - "--anonymous-callers-enabled=true", - "--calls-from=s-calls-from", - "--forward-enabled=true", - "--forward-to-phone-number=s-forward-to-phone-number", - "--id=s-id", - "--person-id=s-person-id", - "--phone-numbers=s-phone-numbers-1,s-phone-numbers-2", - "--schedule-level=s-schedule-level", - "--schedule-name=s-schedule-name", - "--schedule-type=s-schedule-type", - "--send-to-voicemail-enabled=true", - "--unavailable-callers-enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/selectiveForward/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"anonymousCallersEnabled\":true,\"callsFrom\":\"s-calls-from\",\"forwardEnabled\":true,\"forwardToPhoneNumber\":\"s-forward-to-phone-number\",\"phoneNumbers\":[\"s-phone-numbers-1\",\"s-phone-numbers-2\"],\"scheduleLevel\":\"s-schedule-level\",\"scheduleName\":\"s-schedule-name\",\"scheduleType\":\"s-schedule-type\",\"sendToVoicemailEnabled\":true,\"unavailableCallersEnabled\":true}" - } - ] - }, - { - "command": "calling user-call update-users-selective-forward-service", - "variant": "required", - "args": [ - "--id=s-id", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/selectiveForward/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-users-selective-forward-service", - "variant": "body", - "args": [ - "--id=s-id", - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/selectiveForward/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call update-users-selective-reject-list", - "variant": "all-flags", - "args": [ - "--enabled=true", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/selectiveReject?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"enabled\":true}" - } - ] - }, - { - "command": "calling user-call update-users-selective-reject-list", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/selectiveReject?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-users-selective-reject-list", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/selectiveReject?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call update-users-selective-reject-service", - "variant": "all-flags", - "args": [ - "--anonymous-callers-enabled=true", - "--calls-from=s-calls-from", - "--id=s-id", - "--person-id=s-person-id", - "--phone-numbers=s-phone-numbers-1,s-phone-numbers-2", - "--reject-enabled=true", - "--schedule-level=s-schedule-level", - "--schedule-name=s-schedule-name", - "--schedule-type=s-schedule-type", - "--unavailable-callers-enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/selectiveReject/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"anonymousCallersEnabled\":true,\"callsFrom\":\"s-calls-from\",\"phoneNumbers\":[\"s-phone-numbers-1\",\"s-phone-numbers-2\"],\"rejectEnabled\":true,\"scheduleLevel\":\"s-schedule-level\",\"scheduleName\":\"s-schedule-name\",\"scheduleType\":\"s-schedule-type\",\"unavailableCallersEnabled\":true}" - } - ] - }, - { - "command": "calling user-call update-users-selective-reject-service", - "variant": "required", - "args": [ - "--id=s-id", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/selectiveReject/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-users-selective-reject-service", - "variant": "body", - "args": [ - "--id=s-id", - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/selectiveReject/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call update-voicemail-person", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/voicemail?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-voicemail-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/voicemail?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-voicemail-person", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/voicemail?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call update-waiting-settings-person", - "variant": "all-flags", - "args": [ - "--enabled=true", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/callWaiting?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"enabled\":true}" - } - ] - }, - { - "command": "calling user-call update-waiting-settings-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/callWaiting?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call update-waiting-settings-person", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id/features/callWaiting?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling user-call validate-initiate-move-job", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/jobs/person/moveLocation?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call validate-initiate-move-job", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/jobs/person/moveLocation?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling user-call validate-initiate-move-job", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/jobs/person/moveLocation?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling virtual-extensions create", - "variant": "all-flags", - "args": [ - "--display-name=s-display-name", - "--extension=s-extension", - "--first-name=s-first-name", - "--last-name=s-last-name", - "--location-id=s-location-id", - "--phone-number=s-phone-number" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/virtualExtensions?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"displayName\":\"s-display-name\",\"extension\":\"s-extension\",\"firstName\":\"s-first-name\",\"lastName\":\"s-last-name\",\"locationId\":\"s-location-id\",\"phoneNumber\":\"s-phone-number\"}" - } - ] - }, - { - "command": "calling virtual-extensions create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/virtualExtensions?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-extensions create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/virtualExtensions?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling virtual-extensions create-range", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--name=s-name", - "--patterns=s-patterns-1,s-patterns-2", - "--prefix=s-prefix" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/virtualExtensionRanges?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"locationId\":\"s-location-id\",\"name\":\"s-name\",\"patterns\":[\"s-patterns-1\",\"s-patterns-2\"],\"prefix\":\"s-prefix\"}" - } - ] - }, - { - "command": "calling virtual-extensions create-range", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/virtualExtensionRanges?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-extensions create-range", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/virtualExtensionRanges?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling virtual-extensions delete", - "variant": "all-flags", - "args": [ - "--extension-id=s-extension-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/virtualExtensions/s-extension-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-extensions delete", - "variant": "required", - "args": [ - "--extension-id=s-extension-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/virtualExtensions/s-extension-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-extensions delete-range", - "variant": "all-flags", - "args": [ - "--extension-range-id=s-extension-range-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/virtualExtensionRanges/s-extension-range-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-extensions delete-range", - "variant": "required", - "args": [ - "--extension-range-id=s-extension-range-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/virtualExtensionRanges/s-extension-range-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-extensions get", - "variant": "all-flags", - "args": [ - "--extension-id=s-extension-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualExtensions/s-extension-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-extensions get", - "variant": "required", - "args": [ - "--extension-id=s-extension-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualExtensions/s-extension-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-extensions get", - "variant": "paginate", - "args": [ - "--extension-id=s-extension-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualExtensions/s-extension-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-extensions get-range", - "variant": "all-flags", - "args": [ - "--extension-range-id=s-extension-range-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualExtensionRanges/s-extension-range-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-extensions get-range", - "variant": "required", - "args": [ - "--extension-range-id=s-extension-range-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualExtensionRanges/s-extension-range-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-extensions get-range", - "variant": "paginate", - "args": [ - "--extension-range-id=s-extension-range-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualExtensionRanges/s-extension-range-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-extensions get-settings", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualExtensions/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-extensions get-settings", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualExtensions/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-extensions get-settings", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualExtensions/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-extensions list", - "variant": "all-flags", - "args": [ - "--extension=s-extension", - "--location-id=s-location-id", - "--location-name=s-location-name", - "--max=s-max", - "--name=s-name", - "--order=s-order", - "--org-level-only=s-org-level-only", - "--phone-number=s-phone-number", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualExtensions?extension=s-extension&locationId=s-location-id&locationName=s-location-name&max=s-max&name=s-name&order=s-order&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&orgLevelOnly=s-org-level-only&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-extensions list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualExtensions?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-extensions list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualExtensions?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-extensions list-range", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--max=s-max", - "--name=s-name", - "--order=s-order", - "--org-level-only=s-org-level-only", - "--prefix=s-prefix", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualExtensionRanges?locationId=s-location-id&max=s-max&name=s-name&order=s-order&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&orgLevelOnly=s-org-level-only&prefix=s-prefix&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-extensions list-range", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualExtensionRanges?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-extensions list-range", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualExtensionRanges?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-extensions update", - "variant": "all-flags", - "args": [ - "--display-name=s-display-name", - "--extension=s-extension", - "--extension-id=s-extension-id", - "--first-name=s-first-name", - "--last-name=s-last-name", - "--phone-number=s-phone-number" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualExtensions/s-extension-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"displayName\":\"s-display-name\",\"extension\":\"s-extension\",\"firstName\":\"s-first-name\",\"lastName\":\"s-last-name\",\"phoneNumber\":\"s-phone-number\"}" - } - ] - }, - { - "command": "calling virtual-extensions update", - "variant": "required", - "args": [ - "--extension-id=s-extension-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualExtensions/s-extension-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-extensions update", - "variant": "body", - "args": [ - "--extension-id=s-extension-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualExtensions/s-extension-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling virtual-extensions update-range", - "variant": "all-flags", - "args": [ - "--action=s-action", - "--extension-range-id=s-extension-range-id", - "--name=s-name", - "--patterns=s-patterns-1,s-patterns-2", - "--prefix=s-prefix" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualExtensionRanges/s-extension-range-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"action\":\"s-action\",\"name\":\"s-name\",\"patterns\":[\"s-patterns-1\",\"s-patterns-2\"],\"prefix\":\"s-prefix\"}" - } - ] - }, - { - "command": "calling virtual-extensions update-range", - "variant": "required", - "args": [ - "--extension-range-id=s-extension-range-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualExtensionRanges/s-extension-range-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-extensions update-range", - "variant": "body", - "args": [ - "--extension-range-id=s-extension-range-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualExtensionRanges/s-extension-range-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling virtual-extensions update-settings", - "variant": "all-flags", - "args": [ - "--mode=s-mode" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualExtensions/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"mode\":\"s-mode\"}" - } - ] - }, - { - "command": "calling virtual-extensions update-settings", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualExtensions/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-extensions update-settings", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualExtensions/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling virtual-extensions validate-external-phone-number", - "variant": "all-flags", - "args": [ - "--phone-numbers=s-phone-numbers-1,s-phone-numbers-2" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/virtualExtensions/actions/validateNumbers/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"phoneNumbers\":[\"s-phone-numbers-1\",\"s-phone-numbers-2\"]}" - } - ] - }, - { - "command": "calling virtual-extensions validate-external-phone-number", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/virtualExtensions/actions/validateNumbers/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-extensions validate-external-phone-number", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/virtualExtensions/actions/validateNumbers/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling virtual-extensions validate-prefix-pattern-range", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--name=s-name", - "--patterns=s-patterns-1,s-patterns-2", - "--prefix=s-prefix", - "--range-id=s-range-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/virtualExtensionRanges/actions/validate/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"locationId\":\"s-location-id\",\"name\":\"s-name\",\"patterns\":[\"s-patterns-1\",\"s-patterns-2\"],\"prefix\":\"s-prefix\",\"rangeId\":\"s-range-id\"}" - } - ] - }, - { - "command": "calling virtual-extensions validate-prefix-pattern-range", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/virtualExtensionRanges/actions/validate/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-extensions validate-prefix-pattern-range", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/virtualExtensionRanges/actions/validate/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling virtual-line-call create", - "variant": "all-flags", - "args": [ - "--caller-id-first-name=s-caller-id-first-name", - "--caller-id-last-name=s-caller-id-last-name", - "--caller-id-number=s-caller-id-number", - "--display-name=s-display-name", - "--extension=s-extension", - "--first-name=s-first-name", - "--last-name=s-last-name", - "--location-id=s-location-id", - "--phone-number=s-phone-number" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/virtualLines?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"callerIdFirstName\":\"s-caller-id-first-name\",\"callerIdLastName\":\"s-caller-id-last-name\",\"callerIdNumber\":\"s-caller-id-number\",\"displayName\":\"s-display-name\",\"extension\":\"s-extension\",\"firstName\":\"s-first-name\",\"lastName\":\"s-last-name\",\"locationId\":\"s-location-id\",\"phoneNumber\":\"s-phone-number\"}" - } - ] - }, - { - "command": "calling virtual-line-call create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/virtualLines?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/virtualLines?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling virtual-line-call create-access-codes", - "variant": "all-flags", - "args": [ - "--code=s-code", - "--description=s-description", - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/outgoingPermission/accessCodes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"code\":\"s-code\",\"description\":\"s-description\"}" - } - ] - }, - { - "command": "calling virtual-line-call create-access-codes", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/outgoingPermission/accessCodes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call create-access-codes", - "variant": "body", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/outgoingPermission/accessCodes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling virtual-line-call create-digit-pattern-profile", - "variant": "all-flags", - "args": [ - "--action=s-action", - "--name=s-name", - "--pattern=s-pattern", - "--transfer-enabled=true", - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/outgoingPermission/digitPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"action\":\"s-action\",\"name\":\"s-name\",\"pattern\":\"s-pattern\",\"transferEnabled\":true}" - } - ] - }, - { - "command": "calling virtual-line-call create-digit-pattern-profile", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/outgoingPermission/digitPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call create-digit-pattern-profile", - "variant": "body", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/outgoingPermission/digitPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling virtual-line-call delete", - "variant": "all-flags", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call delete", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call delete-access-codes", - "variant": "all-flags", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/outgoingPermission/accessCodes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call delete-access-codes", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/outgoingPermission/accessCodes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call delete-all-digit-patterns-profile", - "variant": "all-flags", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/outgoingPermission/digitPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call delete-all-digit-patterns-profile", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/outgoingPermission/digitPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call delete-digit-pattern-profile", - "variant": "all-flags", - "args": [ - "--digit-pattern-id=s-digit-pattern-id", - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/outgoingPermission/digitPatterns/s-digit-pattern-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call delete-digit-pattern-profile", - "variant": "required", - "args": [ - "--digit-pattern-id=s-digit-pattern-id", - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/outgoingPermission/digitPatterns/s-digit-pattern-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get", - "variant": "all-flags", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get", - "variant": "paginate", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-access-codes", - "variant": "all-flags", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/outgoingPermission/accessCodes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-access-codes", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/outgoingPermission/accessCodes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-access-codes", - "variant": "paginate", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/outgoingPermission/accessCodes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-agent-caller-id", - "variant": "all-flags", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/agent/callerId", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-agent-caller-id", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/agent/callerId", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-agent-caller-id", - "variant": "paginate", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/agent/callerId", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-agent-list-available-caller-ids", - "variant": "all-flags", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/agent/availableCallerIds?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-agent-list-available-caller-ids", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/agent/availableCallerIds?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-agent-list-available-caller-ids", - "variant": "paginate", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/agent/availableCallerIds?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-available-numbers", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--max=s-max", - "--phone-number=s-phone-number", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/availableNumbers?locationId=s-location-id&max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-available-numbers", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/availableNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-available-numbers", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/availableNumbers?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-barge-settings", - "variant": "all-flags", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/bargeIn?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-barge-settings", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/bargeIn?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-barge-settings", - "variant": "paginate", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/bargeIn?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-bridge-settings", - "variant": "all-flags", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/callBridge?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-bridge-settings", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/callBridge?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-bridge-settings", - "variant": "paginate", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/callBridge?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-caller-id", - "variant": "all-flags", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/callerId?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-caller-id", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/callerId?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-caller-id", - "variant": "paginate", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/callerId?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-digit-patterns-profile", - "variant": "all-flags", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/outgoingPermission/digitPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-digit-patterns-profile", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/outgoingPermission/digitPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-digit-patterns-profile", - "variant": "paginate", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/outgoingPermission/digitPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-donotdisturb-settings", - "variant": "all-flags", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/doNotDisturb?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-donotdisturb-settings", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/doNotDisturb?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-donotdisturb-settings", - "variant": "paginate", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/doNotDisturb?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-ecbn-available-numbers", - "variant": "all-flags", - "args": [ - "--max=s-max", - "--owner-name=s-owner-name", - "--phone-number=s-phone-number", - "--start=s-start", - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/emergencyCallbackNumber/availableNumbers?max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&ownerName=s-owner-name&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-ecbn-available-numbers", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/emergencyCallbackNumber/availableNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-ecbn-available-numbers", - "variant": "paginate", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/emergencyCallbackNumber/availableNumbers?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-fax-available-numbers", - "variant": "all-flags", - "args": [ - "--max=s-max", - "--phone-number=s-phone-number", - "--start=s-start", - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/faxMessage/availableNumbers?max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-fax-available-numbers", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/faxMessage/availableNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-fax-available-numbers", - "variant": "paginate", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/faxMessage/availableNumbers?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-forward", - "variant": "all-flags", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/callForwarding?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-forward", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/callForwarding?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-forward", - "variant": "paginate", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/callForwarding?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-forward-available-numbers", - "variant": "all-flags", - "args": [ - "--extension=s-extension", - "--max=s-max", - "--owner-name=s-owner-name", - "--phone-number=s-phone-number", - "--start=s-start", - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/callForwarding/availableNumbers?extension=s-extension&max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&ownerName=s-owner-name&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-forward-available-numbers", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/callForwarding/availableNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-forward-available-numbers", - "variant": "paginate", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/callForwarding/availableNumbers?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-incoming-permission-settings", - "variant": "all-flags", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/incomingPermission?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-incoming-permission-settings", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/incomingPermission?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-incoming-permission-settings", - "variant": "paginate", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/incomingPermission?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-intercept-available-numbers", - "variant": "all-flags", - "args": [ - "--extension=s-extension", - "--max=s-max", - "--owner-name=s-owner-name", - "--phone-number=s-phone-number", - "--start=s-start", - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/callIntercept/availableNumbers?extension=s-extension&max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&ownerName=s-owner-name&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-intercept-available-numbers", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/callIntercept/availableNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-intercept-available-numbers", - "variant": "paginate", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/callIntercept/availableNumbers?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-intercept-settings", - "variant": "all-flags", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/intercept?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-intercept-settings", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/intercept?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-intercept-settings", - "variant": "paginate", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/intercept?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-music-hold-settings", - "variant": "all-flags", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/musicOnHold?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-music-hold-settings", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/musicOnHold?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-music-hold-settings", - "variant": "paginate", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/musicOnHold?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-outgoing-permissions-settings", - "variant": "all-flags", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/outgoingPermission?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-outgoing-permissions-settings", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/outgoingPermission?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-outgoing-permissions-settings", - "variant": "paginate", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/outgoingPermission?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-phone-number-assigned", - "variant": "all-flags", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/number?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-phone-number-assigned", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/number?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-phone-number-assigned", - "variant": "paginate", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/number?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-privacy-settings", - "variant": "all-flags", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/privacy?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-privacy-settings", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/privacy?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-privacy-settings", - "variant": "paginate", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/privacy?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-push-to-talk-settings", - "variant": "all-flags", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/pushToTalk?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-push-to-talk-settings", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/pushToTalk?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-push-to-talk-settings", - "variant": "paginate", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/pushToTalk?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-recording", - "variant": "all-flags", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/callRecording?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-recording", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/callRecording?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-recording", - "variant": "paginate", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/callRecording?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-specified-digit-pattern-profile", - "variant": "all-flags", - "args": [ - "--digit-pattern-id=s-digit-pattern-id", - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/outgoingPermission/digitPatterns/s-digit-pattern-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-specified-digit-pattern-profile", - "variant": "required", - "args": [ - "--digit-pattern-id=s-digit-pattern-id", - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/outgoingPermission/digitPatterns/s-digit-pattern-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-specified-digit-pattern-profile", - "variant": "paginate", - "args": [ - "--digit-pattern-id=s-digit-pattern-id", - "--virtual-line-id=s-virtual-line-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/outgoingPermission/digitPatterns/s-digit-pattern-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-transfer-numbers", - "variant": "all-flags", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/outgoingPermission/autoTransferNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-transfer-numbers", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/outgoingPermission/autoTransferNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-transfer-numbers", - "variant": "paginate", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/outgoingPermission/autoTransferNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-voicemail", - "variant": "all-flags", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/voicemail?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-voicemail", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/voicemail?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-voicemail", - "variant": "paginate", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/voicemail?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-waiting-settings", - "variant": "all-flags", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/callWaiting?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-waiting-settings", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/callWaiting?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call get-waiting-settings", - "variant": "paginate", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/callWaiting?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call list", - "variant": "all-flags", - "args": [ - "--has-device-assigned=s-has-device-assigned", - "--has-dn-assigned=s-has-dn-assigned", - "--has-extension-assigned=s-has-extension-assigned", - "--id=s-id", - "--location-id=s-location-id", - "--location-name=s-location-name", - "--max=s-max", - "--order=s-order", - "--owner-name=s-owner-name", - "--phone-number=s-phone-number", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines?hasDeviceAssigned=s-has-device-assigned&hasDnAssigned=s-has-dn-assigned&hasExtensionAssigned=s-has-extension-assigned&id=s-id&locationId=s-location-id&locationName=s-location-name&max=s-max&order=s-order&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&ownerName=s-owner-name&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call list-devices-assigned", - "variant": "all-flags", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/devices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call list-devices-assigned", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/devices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call list-devices-assigned", - "variant": "paginate", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/devices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call list-networks-handsets", - "variant": "all-flags", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/dectNetworks?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call list-networks-handsets", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/dectNetworks?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call list-networks-handsets", - "variant": "paginate", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/dectNetworks?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call reset-voicemail-pin", - "variant": "all-flags", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/voicemail/actions/resetPin/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call reset-voicemail-pin", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/voicemail/actions/resetPin/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call reset-voicemail-pin", - "variant": "body", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/voicemail/actions/resetPin/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling virtual-line-call update", - "variant": "all-flags", - "args": [ - "--announcement-language=s-announcement-language", - "--caller-id-first-name=s-caller-id-first-name", - "--caller-id-last-name=s-caller-id-last-name", - "--caller-id-number=s-caller-id-number", - "--display-name=s-display-name", - "--extension=s-extension", - "--first-name=s-first-name", - "--last-name=s-last-name", - "--phone-number=s-phone-number", - "--time-zone=s-time-zone", - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"announcementLanguage\":\"s-announcement-language\",\"callerIdFirstName\":\"s-caller-id-first-name\",\"callerIdLastName\":\"s-caller-id-last-name\",\"callerIdNumber\":\"s-caller-id-number\",\"displayName\":\"s-display-name\",\"extension\":\"s-extension\",\"firstName\":\"s-first-name\",\"lastName\":\"s-last-name\",\"phoneNumber\":\"s-phone-number\",\"timeZone\":\"s-time-zone\"}" - } - ] - }, - { - "command": "calling virtual-line-call update", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call update", - "variant": "body", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling virtual-line-call update-access-codes", - "variant": "all-flags", - "args": [ - "--delete-codes=s-delete-codes-1,s-delete-codes-2", - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/outgoingPermission/accessCodes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"deleteCodes\":[\"s-delete-codes-1\",\"s-delete-codes-2\"]}" - } - ] - }, - { - "command": "calling virtual-line-call update-access-codes", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/outgoingPermission/accessCodes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call update-access-codes", - "variant": "body", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/outgoingPermission/accessCodes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling virtual-line-call update-agent-caller-id", - "variant": "all-flags", - "args": [ - "--selected-caller-id=s-selected-caller-id", - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/agent/callerId", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"selectedCallerId\":\"s-selected-caller-id\"}" - } - ] - }, - { - "command": "calling virtual-line-call update-agent-caller-id", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/agent/callerId", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call update-agent-caller-id", - "variant": "body", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/agent/callerId", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling virtual-line-call update-barge-settings", - "variant": "all-flags", - "args": [ - "--enabled=true", - "--tone-enabled=true", - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/bargeIn?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"enabled\":true,\"toneEnabled\":true}" - } - ] - }, - { - "command": "calling virtual-line-call update-barge-settings", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/bargeIn?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call update-barge-settings", - "variant": "body", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/bargeIn?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling virtual-line-call update-bridge-settings", - "variant": "all-flags", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--warning-tone-enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/callBridge?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"warningToneEnabled\":true}" - } - ] - }, - { - "command": "calling virtual-line-call update-bridge-settings", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/callBridge?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call update-bridge-settings", - "variant": "body", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/callBridge?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling virtual-line-call update-busy-voicemail-greeting", - "variant": "all-flags", - "args": [ - "--file=s-file", - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [], - "error": "opening audio file: open s-file: no such file or directory" - }, - { - "command": "calling virtual-line-call update-busy-voicemail-greeting", - "variant": "required", - "args": [ - "--file=s-file", - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [], - "error": "opening audio file: open s-file: no such file or directory" - }, - { - "command": "calling virtual-line-call update-caller-id", - "variant": "all-flags", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/callerId?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call update-caller-id", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/callerId?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call update-caller-id", - "variant": "body", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/callerId?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling virtual-line-call update-digit-pattern-control-profile", - "variant": "all-flags", - "args": [ - "--use-custom-digit-patterns=true", - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/outgoingPermission/digitPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"useCustomDigitPatterns\":true}" - } - ] - }, - { - "command": "calling virtual-line-call update-digit-pattern-control-profile", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/outgoingPermission/digitPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call update-digit-pattern-control-profile", - "variant": "body", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/outgoingPermission/digitPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling virtual-line-call update-digit-pattern-profile", - "variant": "all-flags", - "args": [ - "--action=s-action", - "--digit-pattern-id=s-digit-pattern-id", - "--name=s-name", - "--pattern=s-pattern", - "--transfer-enabled=true", - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/outgoingPermission/digitPatterns/s-digit-pattern-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"action\":\"s-action\",\"name\":\"s-name\",\"pattern\":\"s-pattern\",\"transferEnabled\":true}" - } - ] - }, - { - "command": "calling virtual-line-call update-digit-pattern-profile", - "variant": "required", - "args": [ - "--digit-pattern-id=s-digit-pattern-id", - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/outgoingPermission/digitPatterns/s-digit-pattern-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call update-digit-pattern-profile", - "variant": "body", - "args": [ - "--digit-pattern-id=s-digit-pattern-id", - "--virtual-line-id=s-virtual-line-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/outgoingPermission/digitPatterns/s-digit-pattern-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling virtual-line-call update-directory-search", - "variant": "all-flags", - "args": [ - "--enabled=true", - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/directorySearch?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"enabled\":true}" - } - ] - }, - { - "command": "calling virtual-line-call update-directory-search", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/directorySearch?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call update-directory-search", - "variant": "body", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/directorySearch?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling virtual-line-call update-donotdisturb-settings", - "variant": "all-flags", - "args": [ - "--enabled=true", - "--ring-splash-enabled=true", - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/doNotDisturb?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"enabled\":true,\"ringSplashEnabled\":true}" - } - ] - }, - { - "command": "calling virtual-line-call update-donotdisturb-settings", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/doNotDisturb?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call update-donotdisturb-settings", - "variant": "body", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/doNotDisturb?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling virtual-line-call update-forward", - "variant": "all-flags", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/callForwarding?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call update-forward", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/callForwarding?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call update-forward", - "variant": "body", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/callForwarding?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling virtual-line-call update-incoming-permission-settings", - "variant": "all-flags", - "args": [ - "--collect-calls-enabled=true", - "--external-transfer=s-external-transfer", - "--internal-calls-enabled=true", - "--use-custom-enabled=true", - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/incomingPermission?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"collectCallsEnabled\":true,\"externalTransfer\":\"s-external-transfer\",\"internalCallsEnabled\":true,\"useCustomEnabled\":true}" - } - ] - }, - { - "command": "calling virtual-line-call update-incoming-permission-settings", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/incomingPermission?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call update-incoming-permission-settings", - "variant": "body", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/incomingPermission?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling virtual-line-call update-intercept-greeting", - "variant": "all-flags", - "args": [ - "--file=s-file", - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [], - "error": "opening audio file: open s-file: no such file or directory" - }, - { - "command": "calling virtual-line-call update-intercept-greeting", - "variant": "required", - "args": [ - "--file=s-file", - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [], - "error": "opening audio file: open s-file: no such file or directory" - }, - { - "command": "calling virtual-line-call update-intercept-settings", - "variant": "all-flags", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/intercept?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call update-intercept-settings", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/intercept?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call update-intercept-settings", - "variant": "body", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/intercept?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling virtual-line-call update-music-hold-settings", - "variant": "all-flags", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/musicOnHold?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call update-music-hold-settings", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/musicOnHold?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call update-music-hold-settings", - "variant": "body", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/musicOnHold?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling virtual-line-call update-no-answer-voicemail-greeting", - "variant": "all-flags", - "args": [ - "--file=s-file", - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [], - "error": "opening audio file: open s-file: no such file or directory" - }, - { - "command": "calling virtual-line-call update-no-answer-voicemail-greeting", - "variant": "required", - "args": [ - "--file=s-file", - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [], - "error": "opening audio file: open s-file: no such file or directory" - }, - { - "command": "calling virtual-line-call update-outgoing-permissions-settings", - "variant": "all-flags", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/outgoingPermission?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call update-outgoing-permissions-settings", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/outgoingPermission?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call update-outgoing-permissions-settings", - "variant": "body", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/outgoingPermission?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling virtual-line-call update-privacy-settings", - "variant": "all-flags", - "args": [ - "--aa-extension-dialing-enabled=true", - "--aa-naming-dialing-enabled=true", - "--enable-phone-status-directory-privacy=true", - "--enable-phone-status-pickup-barge-in-privacy=true", - "--monitoring-agents=s-monitoring-agents-1,s-monitoring-agents-2", - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/privacy?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"aaExtensionDialingEnabled\":true,\"aaNamingDialingEnabled\":true,\"enablePhoneStatusDirectoryPrivacy\":true,\"enablePhoneStatusPickupBargeInPrivacy\":true,\"monitoringAgents\":[\"s-monitoring-agents-1\",\"s-monitoring-agents-2\"]}" - } - ] - }, - { - "command": "calling virtual-line-call update-privacy-settings", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/privacy?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call update-privacy-settings", - "variant": "body", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/privacy?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling virtual-line-call update-push-to-talk-settings", - "variant": "all-flags", - "args": [ - "--access-type=s-access-type", - "--allow-auto-answer=true", - "--connection-type=s-connection-type", - "--members=s-members-1,s-members-2", - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/pushToTalk?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"accessType\":\"s-access-type\",\"allowAutoAnswer\":true,\"connectionType\":\"s-connection-type\",\"members\":[\"s-members-1\",\"s-members-2\"]}" - } - ] - }, - { - "command": "calling virtual-line-call update-push-to-talk-settings", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/pushToTalk?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call update-push-to-talk-settings", - "variant": "body", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/pushToTalk?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling virtual-line-call update-recording", - "variant": "all-flags", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/callRecording?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call update-recording", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/callRecording?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call update-recording", - "variant": "body", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/callRecording?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling virtual-line-call update-transfer-numbers", - "variant": "all-flags", - "args": [ - "--auto-transfer-number1=s-auto-transfer-number1", - "--auto-transfer-number2=s-auto-transfer-number2", - "--auto-transfer-number3=s-auto-transfer-number3", - "--use-custom-transfer-numbers=true", - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/outgoingPermission/autoTransferNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"autoTransferNumber1\":\"s-auto-transfer-number1\",\"autoTransferNumber2\":\"s-auto-transfer-number2\",\"autoTransferNumber3\":\"s-auto-transfer-number3\",\"useCustomTransferNumbers\":true}" - } - ] - }, - { - "command": "calling virtual-line-call update-transfer-numbers", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/outgoingPermission/autoTransferNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call update-transfer-numbers", - "variant": "body", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/outgoingPermission/autoTransferNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling virtual-line-call update-voicemail", - "variant": "all-flags", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/voicemail?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call update-voicemail", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/voicemail?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call update-voicemail", - "variant": "body", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/voicemail?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling virtual-line-call update-voicemail-passcode", - "variant": "all-flags", - "args": [ - "--passcode=s-passcode", - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/voicemail/passcode?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"passcode\":\"s-passcode\"}" - } - ] - }, - { - "command": "calling virtual-line-call update-voicemail-passcode", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/voicemail/passcode?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call update-voicemail-passcode", - "variant": "body", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/voicemail/passcode?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling virtual-line-call update-waiting-settings", - "variant": "all-flags", - "args": [ - "--enabled=true", - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/callWaiting?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"enabled\":true}" - } - ] - }, - { - "command": "calling virtual-line-call update-waiting-settings", - "variant": "required", - "args": [ - "--virtual-line-id=s-virtual-line-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/callWaiting?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling virtual-line-call update-waiting-settings", - "variant": "body", - "args": [ - "--virtual-line-id=s-virtual-line-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/virtualLines/s-virtual-line-id/callWaiting?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling workspace-call assign-unassign-numbers-associated", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/numbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call assign-unassign-numbers-associated", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/numbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call assign-unassign-numbers-associated", - "variant": "body", - "args": [ - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/numbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling workspace-call create-access-codes", - "variant": "all-flags", - "args": [ - "--code=s-code", - "--description=s-description", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/outgoingPermission/accessCodes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"code\":\"s-code\",\"description\":\"s-description\"}" - } - ] - }, - { - "command": "calling workspace-call create-access-codes", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/outgoingPermission/accessCodes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call create-access-codes", - "variant": "body", - "args": [ - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/outgoingPermission/accessCodes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling workspace-call create-digit-pattern", - "variant": "all-flags", - "args": [ - "--action=s-action", - "--name=s-name", - "--pattern=s-pattern", - "--transfer-enabled=true", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/outgoingPermission/digitPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"action\":\"s-action\",\"name\":\"s-name\",\"pattern\":\"s-pattern\",\"transferEnabled\":true}" - } - ] - }, - { - "command": "calling workspace-call create-digit-pattern", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/outgoingPermission/digitPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call create-digit-pattern", - "variant": "body", - "args": [ - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/outgoingPermission/digitPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling workspace-call create-priority-alert", - "variant": "all-flags", - "args": [ - "--anonymous-callers-enabled=true", - "--calls-from=s-calls-from", - "--notification-enabled=true", - "--phone-numbers=s-phone-numbers-1,s-phone-numbers-2", - "--schedule-level=s-schedule-level", - "--schedule-name=s-schedule-name", - "--schedule-type=s-schedule-type", - "--unavailable-callers-enabled=true", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/priorityAlert/criteria?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"anonymousCallersEnabled\":true,\"callsFrom\":\"s-calls-from\",\"notificationEnabled\":true,\"phoneNumbers\":[\"s-phone-numbers-1\",\"s-phone-numbers-2\"],\"scheduleLevel\":\"s-schedule-level\",\"scheduleName\":\"s-schedule-name\",\"scheduleType\":\"s-schedule-type\",\"unavailableCallersEnabled\":true}" - } - ] - }, - { - "command": "calling workspace-call create-priority-alert", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/priorityAlert/criteria?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call create-priority-alert", - "variant": "body", - "args": [ - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/priorityAlert/criteria?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling workspace-call create-selective-accept", - "variant": "all-flags", - "args": [ - "--accept-enabled=true", - "--anonymous-callers-enabled=true", - "--calls-from=s-calls-from", - "--phone-numbers=s-phone-numbers-1,s-phone-numbers-2", - "--schedule-level=s-schedule-level", - "--schedule-name=s-schedule-name", - "--schedule-type=s-schedule-type", - "--unavailable-callers-enabled=true", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/selectiveAccept/criteria?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"acceptEnabled\":true,\"anonymousCallersEnabled\":true,\"callsFrom\":\"s-calls-from\",\"phoneNumbers\":[\"s-phone-numbers-1\",\"s-phone-numbers-2\"],\"scheduleLevel\":\"s-schedule-level\",\"scheduleName\":\"s-schedule-name\",\"scheduleType\":\"s-schedule-type\",\"unavailableCallersEnabled\":true}" - } - ] - }, - { - "command": "calling workspace-call create-selective-accept", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/selectiveAccept/criteria?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call create-selective-accept", - "variant": "body", - "args": [ - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/selectiveAccept/criteria?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling workspace-call create-selective-forward", - "variant": "all-flags", - "args": [ - "--anonymous-callers-enabled=true", - "--calls-from=s-calls-from", - "--destination-voicemail-enabled=true", - "--forward-enabled=true", - "--forward-to-phone-number=s-forward-to-phone-number", - "--numbers=s-numbers-1,s-numbers-2", - "--schedule-level=s-schedule-level", - "--schedule-name=s-schedule-name", - "--schedule-type=s-schedule-type", - "--unavailable-callers-enabled=true", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/selectiveForward/criteria?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"anonymousCallersEnabled\":true,\"callsFrom\":\"s-calls-from\",\"destinationVoicemailEnabled\":true,\"forwardEnabled\":true,\"forwardToPhoneNumber\":\"s-forward-to-phone-number\",\"numbers\":[\"s-numbers-1\",\"s-numbers-2\"],\"scheduleLevel\":\"s-schedule-level\",\"scheduleName\":\"s-schedule-name\",\"scheduleType\":\"s-schedule-type\",\"unavailableCallersEnabled\":true}" - } - ] - }, - { - "command": "calling workspace-call create-selective-forward", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/selectiveForward/criteria?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call create-selective-forward", - "variant": "body", - "args": [ - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/selectiveForward/criteria?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling workspace-call create-selective-reject", - "variant": "all-flags", - "args": [ - "--anonymous-callers-enabled=true", - "--calls-from=s-calls-from", - "--phone-numbers=s-phone-numbers-1,s-phone-numbers-2", - "--reject-enabled=true", - "--schedule-level=s-schedule-level", - "--schedule-name=s-schedule-name", - "--schedule-type=s-schedule-type", - "--unavailable-callers-enabled=true", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/selectiveReject/criteria?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"anonymousCallersEnabled\":true,\"callsFrom\":\"s-calls-from\",\"phoneNumbers\":[\"s-phone-numbers-1\",\"s-phone-numbers-2\"],\"rejectEnabled\":true,\"scheduleLevel\":\"s-schedule-level\",\"scheduleName\":\"s-schedule-name\",\"scheduleType\":\"s-schedule-type\",\"unavailableCallersEnabled\":true}" - } - ] - }, - { - "command": "calling workspace-call create-selective-reject", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/selectiveReject/criteria?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call create-selective-reject", - "variant": "body", - "args": [ - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/selectiveReject/criteria?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling workspace-call create-sequential-ring", - "variant": "all-flags", - "args": [ - "--anonymous-callers-enabled=true", - "--calls-from=s-calls-from", - "--phone-numbers=s-phone-numbers-1,s-phone-numbers-2", - "--ring-enabled=true", - "--schedule-level=s-schedule-level", - "--schedule-name=s-schedule-name", - "--schedule-type=s-schedule-type", - "--unavailable-callers-enabled=true", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/sequentialRing/criteria?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"anonymousCallersEnabled\":true,\"callsFrom\":\"s-calls-from\",\"phoneNumbers\":[\"s-phone-numbers-1\",\"s-phone-numbers-2\"],\"ringEnabled\":true,\"scheduleLevel\":\"s-schedule-level\",\"scheduleName\":\"s-schedule-name\",\"scheduleType\":\"s-schedule-type\",\"unavailableCallersEnabled\":true}" - } - ] - }, - { - "command": "calling workspace-call create-sequential-ring", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/sequentialRing/criteria?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call create-sequential-ring", - "variant": "body", - "args": [ - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/sequentialRing/criteria?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling workspace-call create-simultaneous-ring", - "variant": "all-flags", - "args": [ - "--anonymous-callers-enabled=true", - "--calls-from=s-calls-from", - "--phone-numbers=s-phone-numbers-1,s-phone-numbers-2", - "--ring-enabled=true", - "--schedule-level=s-schedule-level", - "--schedule-name=s-schedule-name", - "--schedule-type=s-schedule-type", - "--unavailable-callers-enabled=true", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/simultaneousRing/criteria?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"anonymousCallersEnabled\":true,\"callsFrom\":\"s-calls-from\",\"phoneNumbers\":[\"s-phone-numbers-1\",\"s-phone-numbers-2\"],\"ringEnabled\":true,\"scheduleLevel\":\"s-schedule-level\",\"scheduleName\":\"s-schedule-name\",\"scheduleType\":\"s-schedule-type\",\"unavailableCallersEnabled\":true}" - } - ] - }, - { - "command": "calling workspace-call create-simultaneous-ring", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/simultaneousRing/criteria?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call create-simultaneous-ring", - "variant": "body", - "args": [ - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/simultaneousRing/criteria?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling workspace-call delete-access-code", - "variant": "all-flags", - "args": [ - "--access-code=s-access-code", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/features/accessCodes/s-access-code?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call delete-access-code", - "variant": "required", - "args": [ - "--access-code=s-access-code", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/features/accessCodes/s-access-code?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call delete-all-access-codes", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/outgoingPermission/accessCodes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call delete-all-access-codes", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/outgoingPermission/accessCodes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call delete-all-digit-patterns", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/outgoingPermission/digitPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call delete-all-digit-patterns", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/outgoingPermission/digitPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call delete-digit-pattern", - "variant": "all-flags", - "args": [ - "--digit-pattern-id=s-digit-pattern-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/outgoingPermission/digitPatterns/s-digit-pattern-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call delete-digit-pattern", - "variant": "required", - "args": [ - "--digit-pattern-id=s-digit-pattern-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/outgoingPermission/digitPatterns/s-digit-pattern-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call delete-priority-alert", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/priorityAlert/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call delete-priority-alert", - "variant": "required", - "args": [ - "--id=s-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/priorityAlert/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call delete-selective-accept", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/selectiveAccept/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call delete-selective-accept", - "variant": "required", - "args": [ - "--id=s-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/selectiveAccept/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call delete-selective-forward", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/selectiveForward/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call delete-selective-forward", - "variant": "required", - "args": [ - "--id=s-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/selectiveForward/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call delete-selective-reject", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/selectiveReject/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call delete-selective-reject", - "variant": "required", - "args": [ - "--id=s-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/selectiveReject/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call delete-sequential-ring", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/sequentialRing/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call delete-sequential-ring", - "variant": "required", - "args": [ - "--id=s-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/sequentialRing/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call delete-simultaneous-ring", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/simultaneousRing/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call delete-simultaneous-ring", - "variant": "required", - "args": [ - "--id=s-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/simultaneousRing/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-access-codes", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/outgoingPermission/accessCodes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-access-codes", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/outgoingPermission/accessCodes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-access-codes", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/outgoingPermission/accessCodes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-all-digit-patterns", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/outgoingPermission/digitPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-all-digit-patterns", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/outgoingPermission/digitPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-all-digit-patterns", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/outgoingPermission/digitPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-anonymous-settings", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/anonymousCallReject?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-anonymous-settings", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/anonymousCallReject?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-anonymous-settings", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/anonymousCallReject?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-available-numbers", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id", - "--max=s-max", - "--phone-number=s-phone-number", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/availableNumbers?locationId=s-location-id&max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-available-numbers", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/availableNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-available-numbers", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/availableNumbers?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-barge-settings", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/bargeIn?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-barge-settings", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/bargeIn?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-barge-settings", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/bargeIn?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-bridge-warning-tone", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/callBridge?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-bridge-warning-tone", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/callBridge?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-bridge-warning-tone", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/callBridge?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-caller-id", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/callerId?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-caller-id", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/callerId?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-caller-id", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/callerId?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-digit-pattern", - "variant": "all-flags", - "args": [ - "--digit-pattern-id=s-digit-pattern-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/outgoingPermission/digitPatterns/s-digit-pattern-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-digit-pattern", - "variant": "required", - "args": [ - "--digit-pattern-id=s-digit-pattern-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/outgoingPermission/digitPatterns/s-digit-pattern-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-digit-pattern", - "variant": "paginate", - "args": [ - "--digit-pattern-id=s-digit-pattern-id", - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/outgoingPermission/digitPatterns/s-digit-pattern-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-donotdisturb-settings", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/doNotDisturb?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-donotdisturb-settings", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/doNotDisturb?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-donotdisturb-settings", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/doNotDisturb?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-ecbn-available-numbers", - "variant": "all-flags", - "args": [ - "--max=s-max", - "--owner-name=s-owner-name", - "--phone-number=s-phone-number", - "--start=s-start", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/emergencyCallbackNumber/availableNumbers?max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&ownerName=s-owner-name&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-ecbn-available-numbers", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/emergencyCallbackNumber/availableNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-ecbn-available-numbers", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/emergencyCallbackNumber/availableNumbers?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-fax-available-numbers", - "variant": "all-flags", - "args": [ - "--max=s-max", - "--phone-number=s-phone-number", - "--start=s-start", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/faxMessage/availableNumbers?max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-fax-available-numbers", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/faxMessage/availableNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-fax-available-numbers", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/faxMessage/availableNumbers?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-forward", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/callForwarding?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-forward", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/callForwarding?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-forward", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/callForwarding?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-forward-available-numbers", - "variant": "all-flags", - "args": [ - "--extension=s-extension", - "--max=s-max", - "--owner-name=s-owner-name", - "--phone-number=s-phone-number", - "--start=s-start", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/callForwarding/availableNumbers?extension=s-extension&max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&ownerName=s-owner-name&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-forward-available-numbers", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/callForwarding/availableNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-forward-available-numbers", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/callForwarding/availableNumbers?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-incoming-permission-settings", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/incomingPermission?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-incoming-permission-settings", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/incomingPermission?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-incoming-permission-settings", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/incomingPermission?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-intercept-available-numbers", - "variant": "all-flags", - "args": [ - "--extension=s-extension", - "--max=s-max", - "--owner-name=s-owner-name", - "--phone-number=s-phone-number", - "--start=s-start", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/callIntercept/availableNumbers?extension=s-extension&max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&ownerName=s-owner-name&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-intercept-available-numbers", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/callIntercept/availableNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-intercept-available-numbers", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/callIntercept/availableNumbers?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-intercept-settings", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/intercept?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-intercept-settings", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/intercept?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-intercept-settings", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/intercept?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-monitoring-settings", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/monitoring?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-monitoring-settings", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/monitoring?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-monitoring-settings", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/monitoring?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-music-hold-settings", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/musicOnHold?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-music-hold-settings", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/musicOnHold?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-music-hold-settings", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/musicOnHold?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-outgoing-permission-settings", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/outgoingPermission?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-outgoing-permission-settings", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/outgoingPermission?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-outgoing-permission-settings", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/outgoingPermission?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-policy-settings", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/callPolicies?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-policy-settings", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/callPolicies?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-policy-settings", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/callPolicies?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-priority-alert", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/priorityAlert/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-priority-alert", - "variant": "required", - "args": [ - "--id=s-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/priorityAlert/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-priority-alert", - "variant": "paginate", - "args": [ - "--id=s-id", - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/priorityAlert/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-priority-alert-settings", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/priorityAlert?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-priority-alert-settings", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/priorityAlert?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-priority-alert-settings", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/priorityAlert?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-privacy-settings", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/privacy?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-privacy-settings", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/privacy?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-privacy-settings", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/privacy?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-push-to-talk-settings", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/pushToTalk?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-push-to-talk-settings", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/pushToTalk?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-push-to-talk-settings", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/pushToTalk?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-recording", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/features/callRecordings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-recording", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/features/callRecordings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-recording", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/features/callRecordings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-secondary-available-numbers", - "variant": "all-flags", - "args": [ - "--max=s-max", - "--phone-number=s-phone-number", - "--start=s-start", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/secondary/availableNumbers?max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&phoneNumber=s-phone-number&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-secondary-available-numbers", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/secondary/availableNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-secondary-available-numbers", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/secondary/availableNumbers?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-selective-accept", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/selectiveAccept/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-selective-accept", - "variant": "required", - "args": [ - "--id=s-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/selectiveAccept/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-selective-accept", - "variant": "paginate", - "args": [ - "--id=s-id", - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/selectiveAccept/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-selective-accept-settings", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/selectiveAccept?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-selective-accept-settings", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/selectiveAccept?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-selective-accept-settings", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/selectiveAccept?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-selective-forward", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/selectiveForward/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-selective-forward", - "variant": "required", - "args": [ - "--id=s-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/selectiveForward/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-selective-forward", - "variant": "paginate", - "args": [ - "--id=s-id", - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/selectiveForward/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-selective-forward-settings", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/selectiveForward?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-selective-forward-settings", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/selectiveForward?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-selective-forward-settings", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/selectiveForward?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-selective-reject", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/selectiveReject/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-selective-reject", - "variant": "required", - "args": [ - "--id=s-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/selectiveReject/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-selective-reject", - "variant": "paginate", - "args": [ - "--id=s-id", - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/selectiveReject/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-selective-reject-settings", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/selectiveReject?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-selective-reject-settings", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/selectiveReject?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-selective-reject-settings", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/selectiveReject?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-sequential-ring", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/sequentialRing/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-sequential-ring", - "variant": "required", - "args": [ - "--id=s-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/sequentialRing/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-sequential-ring", - "variant": "paginate", - "args": [ - "--id=s-id", - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/sequentialRing/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-sequential-ring-settings", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/sequentialRing?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-sequential-ring-settings", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/sequentialRing?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-sequential-ring-settings", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/sequentialRing?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-simultaneous-ring", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/simultaneousRing/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-simultaneous-ring", - "variant": "required", - "args": [ - "--id=s-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/simultaneousRing/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-simultaneous-ring", - "variant": "paginate", - "args": [ - "--id=s-id", - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/simultaneousRing/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-simultaneous-ring-settings", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/simultaneousRing?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-simultaneous-ring-settings", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/simultaneousRing?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-simultaneous-ring-settings", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/simultaneousRing?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-transfer-numbers-settings", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/outgoingPermission/autoTransferNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-transfer-numbers-settings", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/outgoingPermission/autoTransferNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-transfer-numbers-settings", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/outgoingPermission/autoTransferNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-voicemail", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/voicemail?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-voicemail", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/voicemail?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-voicemail", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/voicemail?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-waiting-settings", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/callWaiting?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-waiting-settings", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/callWaiting?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call get-waiting-settings", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/callWaiting?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call list-numbers-associated", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/numbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call list-numbers-associated", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/numbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call list-numbers-associated", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/numbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call update-access-codes", - "variant": "all-flags", - "args": [ - "--delete-codes=s-delete-codes-1,s-delete-codes-2", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/outgoingPermission/accessCodes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"deleteCodes\":[\"s-delete-codes-1\",\"s-delete-codes-2\"]}" - } - ] - }, - { - "command": "calling workspace-call update-access-codes", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/outgoingPermission/accessCodes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call update-access-codes", - "variant": "body", - "args": [ - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/outgoingPermission/accessCodes?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling workspace-call update-anonymous-settings", - "variant": "all-flags", - "args": [ - "--enabled=true", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/anonymousCallReject?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"enabled\":true}" - } - ] - }, - { - "command": "calling workspace-call update-anonymous-settings", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/anonymousCallReject?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call update-anonymous-settings", - "variant": "body", - "args": [ - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/anonymousCallReject?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling workspace-call update-barge-settings", - "variant": "all-flags", - "args": [ - "--enabled=true", - "--tone-enabled=true", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/bargeIn?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"enabled\":true,\"toneEnabled\":true}" - } - ] - }, - { - "command": "calling workspace-call update-barge-settings", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/bargeIn?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call update-barge-settings", - "variant": "body", - "args": [ - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/bargeIn?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling workspace-call update-bridge-warning-tone", - "variant": "all-flags", - "args": [ - "--warning-tone-enabled=true", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/callBridge?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"warningToneEnabled\":true}" - } - ] - }, - { - "command": "calling workspace-call update-bridge-warning-tone", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/callBridge?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call update-bridge-warning-tone", - "variant": "body", - "args": [ - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/callBridge?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling workspace-call update-busy-voicemail-greeting-place", - "variant": "all-flags", - "args": [ - "--file=s-file", - "--workspace-id=s-workspace-id" - ], - "requests": [], - "error": "opening audio file: open s-file: no such file or directory" - }, - { - "command": "calling workspace-call update-busy-voicemail-greeting-place", - "variant": "required", - "args": [ - "--file=s-file", - "--workspace-id=s-workspace-id" - ], - "requests": [], - "error": "opening audio file: open s-file: no such file or directory" - }, - { - "command": "calling workspace-call update-caller-id", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/callerId?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call update-caller-id", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/callerId?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call update-caller-id", - "variant": "body", - "args": [ - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/callerId?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling workspace-call update-digit-pattern", - "variant": "all-flags", - "args": [ - "--action=s-action", - "--digit-pattern-id=s-digit-pattern-id", - "--name=s-name", - "--pattern=s-pattern", - "--transfer-enabled=true", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/outgoingPermission/digitPatterns/s-digit-pattern-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"action\":\"s-action\",\"name\":\"s-name\",\"pattern\":\"s-pattern\",\"transferEnabled\":true}" - } - ] - }, - { - "command": "calling workspace-call update-digit-pattern", - "variant": "required", - "args": [ - "--digit-pattern-id=s-digit-pattern-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/outgoingPermission/digitPatterns/s-digit-pattern-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call update-digit-pattern", - "variant": "body", - "args": [ - "--digit-pattern-id=s-digit-pattern-id", - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/outgoingPermission/digitPatterns/s-digit-pattern-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling workspace-call update-digit-pattern-control", - "variant": "all-flags", - "args": [ - "--use-custom-digit-patterns=true", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/outgoingPermission/digitPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"useCustomDigitPatterns\":true}" - } - ] - }, - { - "command": "calling workspace-call update-digit-pattern-control", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/outgoingPermission/digitPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call update-digit-pattern-control", - "variant": "body", - "args": [ - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/outgoingPermission/digitPatterns?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling workspace-call update-donotdisturb-settings", - "variant": "all-flags", - "args": [ - "--enabled=true", - "--ring-splash-enabled=true", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/doNotDisturb?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"enabled\":true,\"ringSplashEnabled\":true}" - } - ] - }, - { - "command": "calling workspace-call update-donotdisturb-settings", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/doNotDisturb?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call update-donotdisturb-settings", - "variant": "body", - "args": [ - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/doNotDisturb?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling workspace-call update-forward", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/callForwarding?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call update-forward", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/callForwarding?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call update-forward", - "variant": "body", - "args": [ - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/callForwarding?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling workspace-call update-incoming-permission-settings", - "variant": "all-flags", - "args": [ - "--collect-calls-enabled=true", - "--external-transfer=s-external-transfer", - "--internal-calls-enabled=true", - "--use-custom-enabled=true", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/incomingPermission?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"collectCallsEnabled\":true,\"externalTransfer\":\"s-external-transfer\",\"internalCallsEnabled\":true,\"useCustomEnabled\":true}" - } - ] - }, - { - "command": "calling workspace-call update-incoming-permission-settings", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/incomingPermission?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call update-incoming-permission-settings", - "variant": "body", - "args": [ - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/incomingPermission?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling workspace-call update-intercept-settings", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/intercept?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call update-intercept-settings", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/intercept?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call update-intercept-settings", - "variant": "body", - "args": [ - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/intercept?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling workspace-call update-monitoring-settings", - "variant": "all-flags", - "args": [ - "--enable-call-park-notification=true", - "--monitored-elements=s-monitored-elements-1,s-monitored-elements-2", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/monitoring?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"enableCallParkNotification\":true,\"monitoredElements\":[\"s-monitored-elements-1\",\"s-monitored-elements-2\"]}" - } - ] - }, - { - "command": "calling workspace-call update-monitoring-settings", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/monitoring?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call update-monitoring-settings", - "variant": "body", - "args": [ - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/monitoring?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling workspace-call update-music-hold-settings", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/musicOnHold?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call update-music-hold-settings", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/musicOnHold?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call update-music-hold-settings", - "variant": "body", - "args": [ - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/musicOnHold?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling workspace-call update-no-answer-voicemail-greeting-place", - "variant": "all-flags", - "args": [ - "--file=s-file", - "--workspace-id=s-workspace-id" - ], - "requests": [], - "error": "opening audio file: open s-file: no such file or directory" - }, - { - "command": "calling workspace-call update-no-answer-voicemail-greeting-place", - "variant": "required", - "args": [ - "--file=s-file", - "--workspace-id=s-workspace-id" - ], - "requests": [], - "error": "opening audio file: open s-file: no such file or directory" - }, - { - "command": "calling workspace-call update-outgoing-permission-settings", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/outgoingPermission?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call update-outgoing-permission-settings", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/outgoingPermission?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call update-outgoing-permission-settings", - "variant": "body", - "args": [ - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/outgoingPermission?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling workspace-call update-policy-settings", - "variant": "all-flags", - "args": [ - "--connected-line-id-privacy-on-redirected-calls=s-connected-line-id-privacy-on-redirected-calls", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/callPolicies?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"connectedLineIdPrivacyOnRedirectedCalls\":\"s-connected-line-id-privacy-on-redirected-calls\"}" - } - ] - }, - { - "command": "calling workspace-call update-policy-settings", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/callPolicies?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call update-policy-settings", - "variant": "body", - "args": [ - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/callPolicies?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling workspace-call update-priority-alert", - "variant": "all-flags", - "args": [ - "--anonymous-callers-enabled=true", - "--calls-from=s-calls-from", - "--id=s-id", - "--notification-enabled=true", - "--phone-numbers=s-phone-numbers-1,s-phone-numbers-2", - "--schedule-level=s-schedule-level", - "--schedule-name=s-schedule-name", - "--schedule-type=s-schedule-type", - "--unavailable-callers-enabled=true", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/priorityAlert/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"anonymousCallersEnabled\":true,\"callsFrom\":\"s-calls-from\",\"notificationEnabled\":true,\"phoneNumbers\":[\"s-phone-numbers-1\",\"s-phone-numbers-2\"],\"scheduleLevel\":\"s-schedule-level\",\"scheduleName\":\"s-schedule-name\",\"scheduleType\":\"s-schedule-type\",\"unavailableCallersEnabled\":true}" - } - ] - }, - { - "command": "calling workspace-call update-priority-alert", - "variant": "required", - "args": [ - "--id=s-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/priorityAlert/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call update-priority-alert", - "variant": "body", - "args": [ - "--id=s-id", - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/priorityAlert/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling workspace-call update-priority-alert-settings", - "variant": "all-flags", - "args": [ - "--enabled=true", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/priorityAlert?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"enabled\":true}" - } - ] - }, - { - "command": "calling workspace-call update-priority-alert-settings", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/priorityAlert?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call update-priority-alert-settings", - "variant": "body", - "args": [ - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/priorityAlert?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling workspace-call update-privacy-settings", - "variant": "all-flags", - "args": [ - "--aa-extension-dialing-enabled=true", - "--aa-naming-dialing-enabled=true", - "--enable-phone-status-directory-privacy=true", - "--enable-phone-status-pickup-barge-in-privacy=true", - "--monitoring-agents=s-monitoring-agents-1,s-monitoring-agents-2", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/privacy?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"aaExtensionDialingEnabled\":true,\"aaNamingDialingEnabled\":true,\"enablePhoneStatusDirectoryPrivacy\":true,\"enablePhoneStatusPickupBargeInPrivacy\":true,\"monitoringAgents\":[\"s-monitoring-agents-1\",\"s-monitoring-agents-2\"]}" - } - ] - }, - { - "command": "calling workspace-call update-privacy-settings", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/privacy?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call update-privacy-settings", - "variant": "body", - "args": [ - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/privacy?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling workspace-call update-push-to-talk-settings", - "variant": "all-flags", - "args": [ - "--access-type=s-access-type", - "--allow-auto-answer=true", - "--connection-type=s-connection-type", - "--members=s-members-1,s-members-2", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/pushToTalk?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"accessType\":\"s-access-type\",\"allowAutoAnswer\":true,\"connectionType\":\"s-connection-type\",\"members\":[\"s-members-1\",\"s-members-2\"]}" - } - ] - }, - { - "command": "calling workspace-call update-push-to-talk-settings", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/pushToTalk?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call update-push-to-talk-settings", - "variant": "body", - "args": [ - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/pushToTalk?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling workspace-call update-recording", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/features/callRecordings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call update-recording", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/features/callRecordings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call update-recording", - "variant": "body", - "args": [ - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/features/callRecordings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling workspace-call update-selective-accept", - "variant": "all-flags", - "args": [ - "--accept-enabled=true", - "--anonymous-callers-enabled=true", - "--calls-from=s-calls-from", - "--id=s-id", - "--phone-numbers=s-phone-numbers-1,s-phone-numbers-2", - "--schedule-level=s-schedule-level", - "--schedule-name=s-schedule-name", - "--schedule-type=s-schedule-type", - "--unavailable-callers-enabled=true", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/selectiveAccept/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"acceptEnabled\":true,\"anonymousCallersEnabled\":true,\"callsFrom\":\"s-calls-from\",\"phoneNumbers\":[\"s-phone-numbers-1\",\"s-phone-numbers-2\"],\"scheduleLevel\":\"s-schedule-level\",\"scheduleName\":\"s-schedule-name\",\"scheduleType\":\"s-schedule-type\",\"unavailableCallersEnabled\":true}" - } - ] - }, - { - "command": "calling workspace-call update-selective-accept", - "variant": "required", - "args": [ - "--id=s-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/selectiveAccept/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call update-selective-accept", - "variant": "body", - "args": [ - "--id=s-id", - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/selectiveAccept/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling workspace-call update-selective-accept-settings", - "variant": "all-flags", - "args": [ - "--enabled=true", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/selectiveAccept?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"enabled\":true}" - } - ] - }, - { - "command": "calling workspace-call update-selective-accept-settings", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/selectiveAccept?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call update-selective-accept-settings", - "variant": "body", - "args": [ - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/selectiveAccept?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling workspace-call update-selective-forward", - "variant": "all-flags", - "args": [ - "--anonymous-callers-enabled=true", - "--calls-from=s-calls-from", - "--destination-voicemail-enabled=true", - "--forward-enabled=true", - "--forward-to-phone-number=s-forward-to-phone-number", - "--id=s-id", - "--numbers=s-numbers-1,s-numbers-2", - "--schedule-level=s-schedule-level", - "--schedule-name=s-schedule-name", - "--schedule-type=s-schedule-type", - "--unavailable-callers-enabled=true", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/selectiveForward/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"anonymousCallersEnabled\":true,\"callsFrom\":\"s-calls-from\",\"destinationVoicemailEnabled\":true,\"forwardEnabled\":true,\"forwardToPhoneNumber\":\"s-forward-to-phone-number\",\"numbers\":[\"s-numbers-1\",\"s-numbers-2\"],\"scheduleLevel\":\"s-schedule-level\",\"scheduleName\":\"s-schedule-name\",\"scheduleType\":\"s-schedule-type\",\"unavailableCallersEnabled\":true}" - } - ] - }, - { - "command": "calling workspace-call update-selective-forward", - "variant": "required", - "args": [ - "--id=s-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/selectiveForward/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call update-selective-forward", - "variant": "body", - "args": [ - "--id=s-id", - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/selectiveForward/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling workspace-call update-selective-forward-settings", - "variant": "all-flags", - "args": [ - "--default-phone-number-to-forward=s-default-phone-number-to-forward", - "--destination-voicemail-enabled=true", - "--enabled=true", - "--ring-reminder-enabled=true", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/selectiveForward?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"defaultPhoneNumberToForward\":\"s-default-phone-number-to-forward\",\"destinationVoicemailEnabled\":true,\"enabled\":true,\"ringReminderEnabled\":true}" - } - ] - }, - { - "command": "calling workspace-call update-selective-forward-settings", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/selectiveForward?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call update-selective-forward-settings", - "variant": "body", - "args": [ - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/selectiveForward?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling workspace-call update-selective-reject", - "variant": "all-flags", - "args": [ - "--anonymous-callers-enabled=true", - "--calls-from=s-calls-from", - "--id=s-id", - "--phone-numbers=s-phone-numbers-1,s-phone-numbers-2", - "--reject-enabled=true", - "--schedule-level=s-schedule-level", - "--schedule-name=s-schedule-name", - "--schedule-type=s-schedule-type", - "--unavailable-callers-enabled=true", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/selectiveReject/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"anonymousCallersEnabled\":true,\"callsFrom\":\"s-calls-from\",\"phoneNumbers\":[\"s-phone-numbers-1\",\"s-phone-numbers-2\"],\"rejectEnabled\":true,\"scheduleLevel\":\"s-schedule-level\",\"scheduleName\":\"s-schedule-name\",\"scheduleType\":\"s-schedule-type\",\"unavailableCallersEnabled\":true}" - } - ] - }, - { - "command": "calling workspace-call update-selective-reject", - "variant": "required", - "args": [ - "--id=s-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/selectiveReject/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call update-selective-reject", - "variant": "body", - "args": [ - "--id=s-id", - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/selectiveReject/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling workspace-call update-selective-reject-settings", - "variant": "all-flags", - "args": [ - "--enabled=true", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/selectiveReject?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"enabled\":true}" - } - ] - }, - { - "command": "calling workspace-call update-selective-reject-settings", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/selectiveReject?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call update-selective-reject-settings", - "variant": "body", - "args": [ - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/selectiveReject?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling workspace-call update-sequential-ring", - "variant": "all-flags", - "args": [ - "--anonymous-callers-enabled=true", - "--calls-from=s-calls-from", - "--id=s-id", - "--phone-numbers=s-phone-numbers-1,s-phone-numbers-2", - "--ring-enabled=true", - "--schedule-level=s-schedule-level", - "--schedule-name=s-schedule-name", - "--schedule-type=s-schedule-type", - "--unavailable-callers-enabled=true", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/sequentialRing/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"anonymousCallersEnabled\":true,\"callsFrom\":\"s-calls-from\",\"phoneNumbers\":[\"s-phone-numbers-1\",\"s-phone-numbers-2\"],\"ringEnabled\":true,\"scheduleLevel\":\"s-schedule-level\",\"scheduleName\":\"s-schedule-name\",\"scheduleType\":\"s-schedule-type\",\"unavailableCallersEnabled\":true}" - } - ] - }, - { - "command": "calling workspace-call update-sequential-ring", - "variant": "required", - "args": [ - "--id=s-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/sequentialRing/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call update-sequential-ring", - "variant": "body", - "args": [ - "--id=s-id", - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/sequentialRing/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling workspace-call update-sequential-ring-settings", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/sequentialRing?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call update-sequential-ring-settings", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/sequentialRing?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call update-sequential-ring-settings", - "variant": "body", - "args": [ - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/sequentialRing?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling workspace-call update-simultaneous-ring", - "variant": "all-flags", - "args": [ - "--anonymous-callers-enabled=true", - "--calls-from=s-calls-from", - "--id=s-id", - "--phone-numbers=s-phone-numbers-1,s-phone-numbers-2", - "--ring-enabled=true", - "--schedule-level=s-schedule-level", - "--schedule-name=s-schedule-name", - "--schedule-type=s-schedule-type", - "--unavailable-callers-enabled=true", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/simultaneousRing/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"anonymousCallersEnabled\":true,\"callsFrom\":\"s-calls-from\",\"phoneNumbers\":[\"s-phone-numbers-1\",\"s-phone-numbers-2\"],\"ringEnabled\":true,\"scheduleLevel\":\"s-schedule-level\",\"scheduleName\":\"s-schedule-name\",\"scheduleType\":\"s-schedule-type\",\"unavailableCallersEnabled\":true}" - } - ] - }, - { - "command": "calling workspace-call update-simultaneous-ring", - "variant": "required", - "args": [ - "--id=s-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/simultaneousRing/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call update-simultaneous-ring", - "variant": "body", - "args": [ - "--id=s-id", - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/simultaneousRing/criteria/s-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling workspace-call update-simultaneous-ring-settings", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/simultaneousRing?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call update-simultaneous-ring-settings", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/simultaneousRing?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call update-simultaneous-ring-settings", - "variant": "body", - "args": [ - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/simultaneousRing?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling workspace-call update-transfer-numbers-settings", - "variant": "all-flags", - "args": [ - "--auto-transfer-number1=s-auto-transfer-number1", - "--auto-transfer-number2=s-auto-transfer-number2", - "--auto-transfer-number3=s-auto-transfer-number3", - "--use-custom-transfer-numbers=true", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/outgoingPermission/autoTransferNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"autoTransferNumber1\":\"s-auto-transfer-number1\",\"autoTransferNumber2\":\"s-auto-transfer-number2\",\"autoTransferNumber3\":\"s-auto-transfer-number3\",\"useCustomTransferNumbers\":true}" - } - ] - }, - { - "command": "calling workspace-call update-transfer-numbers-settings", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/outgoingPermission/autoTransferNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call update-transfer-numbers-settings", - "variant": "body", - "args": [ - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/outgoingPermission/autoTransferNumbers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling workspace-call update-voicemail", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/voicemail?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call update-voicemail", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/voicemail?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call update-voicemail", - "variant": "body", - "args": [ - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/voicemail?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling workspace-call update-voicemail-passcode", - "variant": "all-flags", - "args": [ - "--passcode=s-passcode", - "--place-id=s-place-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-place-id/voicemail/passcode?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"passcode\":\"s-passcode\"}" - } - ] - }, - { - "command": "calling workspace-call update-voicemail-passcode", - "variant": "required", - "args": [ - "--place-id=s-place-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-place-id/voicemail/passcode?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call update-voicemail-passcode", - "variant": "body", - "args": [ - "--place-id=s-place-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-place-id/voicemail/passcode?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling workspace-call update-waiting-settings", - "variant": "all-flags", - "args": [ - "--enabled=true", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/callWaiting?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"enabled\":true}" - } - ] - }, - { - "command": "calling workspace-call update-waiting-settings", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/callWaiting?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspace-call update-waiting-settings", - "variant": "body", - "args": [ - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/features/callWaiting?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling workspace-call upload-intercept-announcement-file", - "variant": "all-flags", - "args": [ - "--file=s-file", - "--workspace-id=s-workspace-id" - ], - "requests": [], - "error": "opening audio file: open s-file: no such file or directory" - }, - { - "command": "calling workspace-call upload-intercept-announcement-file", - "variant": "required", - "args": [ - "--file=s-file", - "--workspace-id=s-workspace-id" - ], - "requests": [], - "error": "opening audio file: open s-file: no such file or directory" - }, - { - "command": "calling workspaces create", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/workspaces", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspaces create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/workspaces", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspaces create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/workspaces", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "calling workspaces delete", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspaces delete", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspaces get", - "variant": "all-flags", - "args": [ - "--include-devices=s-include-devices", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id?includeDevices=s-include-devices", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspaces get", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspaces get", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspaces get-2", - "variant": "all-flags", - "args": [ - "--include-capabilities=s-include-capabilities", - "--include-devices=s-include-devices", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id?includeCapabilities=s-include-capabilities&includeDevices=s-include-devices", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspaces get-2", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspaces get-2", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspaces get-capabilities", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/capabilities", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspaces get-capabilities", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/capabilities", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspaces get-capabilities", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/capabilities", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspaces list", - "variant": "all-flags", - "args": [ - "--calendar=s-calendar", - "--calling=s-calling", - "--capacity=s-capacity", - "--custom-attribute=s-custom-attribute", - "--device-hosted-meetings-enabled=s-device-hosted-meetings-enabled", - "--device-platform=s-device-platform", - "--display-name=s-display-name", - "--floor-id=s-floor-id", - "--health-level=s-health-level", - "--include-capabilities=s-include-capabilities", - "--include-devices=s-include-devices", - "--location-id=s-location-id", - "--max=s-max", - "--planned-maintenance=s-planned-maintenance", - "--start=s-start", - "--supported-devices=s-supported-devices", - "--type=s-type", - "--workspace-location-id=s-workspace-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces?calendar=s-calendar&calling=s-calling&capacity=s-capacity&customAttribute=s-custom-attribute&deviceHostedMeetingsEnabled=s-device-hosted-meetings-enabled&devicePlatform=s-device-platform&displayName=s-display-name&floorId=s-floor-id&healthLevel=s-health-level&includeCapabilities=s-include-capabilities&includeDevices=s-include-devices&locationId=s-location-id&max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&plannedMaintenance=s-planned-maintenance&start=s-start&supportedDevices=s-supported-devices&type=s-type&workspaceLocationId=s-workspace-location-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspaces list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspaces list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspaces update", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspaces update", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "calling workspaces update", - "variant": "body", - "args": [ - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - } -] diff --git a/testdata/golden/requests-cc.json b/testdata/golden/requests-cc.json deleted file mode 100644 index 58b0e60..0000000 --- a/testdata/golden/requests-cc.json +++ /dev/null @@ -1,28556 +0,0 @@ -[ - { - "command": "cc activities describe", - "variant": "all-flags", - "args": [ - "--activity-name=s-activity-name" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/v2/activities/s-activity-name", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc activities describe", - "variant": "required", - "args": [ - "--activity-name=s-activity-name" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/v2/activities/s-activity-name", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc activities describe", - "variant": "paginate", - "args": [ - "--activity-name=s-activity-name", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/v2/activities/s-activity-name", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc activities get-input-choices", - "variant": "all-flags", - "args": [ - "--activity-name=s-activity-name", - "--input-name=s-input-name", - "--parent-input-name=s-parent-input-name", - "--parent-value=s-parent-value", - "--search=s-search", - "--validate=s-validate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/v2/activities/s-activity-name/inputs/s-input-name/choices?parentInputName=s-parent-input-name&parentValue=s-parent-value&search=s-search&validate=s-validate", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc activities get-input-choices", - "variant": "required", - "args": [ - "--activity-name=s-activity-name", - "--input-name=s-input-name" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/v2/activities/s-activity-name/inputs/s-input-name/choices", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc activities get-input-choices", - "variant": "paginate", - "args": [ - "--activity-name=s-activity-name", - "--input-name=s-input-name", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/v2/activities/s-activity-name/inputs/s-input-name/choices", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc activities list-definitions", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/v2/activities", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc activities list-definitions", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/v2/activities", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc activities list-definitions", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/v2/activities?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc address-book bulk-export", - "variant": "all-flags", - "args": [ - "--page=s-page", - "--page-size=s-page-size" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/address-book/bulk-export?page=s-page&pageSize=s-page-size", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc address-book bulk-export", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/address-book/bulk-export", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc address-book bulk-export", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/address-book/bulk-export?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc address-book bulk-save-entry", - "variant": "all-flags", - "args": [ - "--address-book-id=s-address-book-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/address-book/s-address-book-id/entry/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc address-book bulk-save-entry", - "variant": "required", - "args": [ - "--address-book-id=s-address-book-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/address-book/s-address-book-id/entry/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc address-book bulk-save-entry", - "variant": "body", - "args": [ - "--address-book-id=s-address-book-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/address-book/s-address-book-id/entry/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc address-book create", - "variant": "all-flags", - "args": [ - "--description=s-description", - "--id=s-id", - "--name=s-name", - "--organization-id=s-organization-id", - "--parent-type=s-parent-type", - "--site-id=s-site-id", - "--version=7" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v3/address-book", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"description\":\"s-description\",\"id\":\"s-id\",\"name\":\"s-name\",\"organizationId\":\"s-organization-id\",\"parentType\":\"s-parent-type\",\"siteId\":\"s-site-id\",\"version\":7}" - } - ] - }, - { - "command": "cc address-book create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v3/address-book", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc address-book create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v3/address-book", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc address-book create-entry", - "variant": "all-flags", - "args": [ - "--address-book-id=s-address-book-id", - "--id=s-id", - "--name=s-name", - "--number=s-number", - "--organization-id=s-organization-id", - "--version=7" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/address-book/s-address-book-id/entry", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"id\":\"s-id\",\"name\":\"s-name\",\"number\":\"s-number\",\"organizationId\":\"s-organization-id\",\"version\":7}" - } - ] - }, - { - "command": "cc address-book create-entry", - "variant": "required", - "args": [ - "--address-book-id=s-address-book-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/address-book/s-address-book-id/entry", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc address-book create-entry", - "variant": "body", - "args": [ - "--address-book-id=s-address-book-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/address-book/s-address-book-id/entry", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc address-book delete", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v3/address-book/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc address-book delete", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v3/address-book/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc address-book delete-entry-id", - "variant": "all-flags", - "args": [ - "--address-book-id=s-address-book-id", - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/address-book/s-address-book-id/entry/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc address-book delete-entry-id", - "variant": "required", - "args": [ - "--address-book-id=s-address-book-id", - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/address-book/s-address-book-id/entry/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc address-book get", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v3/address-book/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc address-book get", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v3/address-book/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc address-book get", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v3/address-book/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc address-book get-entry-id", - "variant": "all-flags", - "args": [ - "--address-book-id=s-address-book-id", - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/address-book/s-address-book-id/entry/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc address-book get-entry-id", - "variant": "required", - "args": [ - "--address-book-id=s-address-book-id", - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/address-book/s-address-book-id/entry/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc address-book get-entry-id", - "variant": "paginate", - "args": [ - "--address-book-id=s-address-book-id", - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/address-book/s-address-book-id/entry/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc address-book list", - "variant": "all-flags", - "args": [ - "--attributes=s-attributes", - "--filter=s-filter", - "--page=s-page", - "--page-size=s-page-size", - "--search=s-search" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v3/address-book?attributes=s-attributes&filter=s-filter&page=s-page&pageSize=s-page-size&search=s-search", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc address-book list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v3/address-book", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc address-book list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v3/address-book?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc address-book list-entry", - "variant": "all-flags", - "args": [ - "--address-book-id=s-address-book-id", - "--attributes=s-attributes", - "--filter=s-filter", - "--page=s-page", - "--page-size=s-page-size", - "--search=s-search" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/address-book/s-address-book-id/entry?attributes=s-attributes&filter=s-filter&page=s-page&pageSize=s-page-size&search=s-search", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc address-book list-entry", - "variant": "required", - "args": [ - "--address-book-id=s-address-book-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/address-book/s-address-book-id/entry", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc address-book list-entry", - "variant": "paginate", - "args": [ - "--address-book-id=s-address-book-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/address-book/s-address-book-id/entry?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc address-book list-references", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--page=s-page", - "--page-size=s-page-size", - "--type=s-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/address-book/s-id/incoming-references?page=s-page&pageSize=s-page-size&type=s-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc address-book list-references", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/address-book/s-id/incoming-references", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc address-book list-references", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/address-book/s-id/incoming-references?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc address-book update", - "variant": "all-flags", - "args": [ - "--description=s-description", - "--id=s-id", - "--name=s-name", - "--organization-id=s-organization-id", - "--parent-type=s-parent-type", - "--site-id=s-site-id", - "--version=7" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v3/address-book/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"description\":\"s-description\",\"id\":\"s-id\",\"name\":\"s-name\",\"organizationId\":\"s-organization-id\",\"parentType\":\"s-parent-type\",\"siteId\":\"s-site-id\",\"version\":7}" - } - ] - }, - { - "command": "cc address-book update", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v3/address-book/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"id\":\"s-id\"}" - } - ] - }, - { - "command": "cc address-book update", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v3/address-book/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc address-book update-entry-id", - "variant": "all-flags", - "args": [ - "--address-book-id=s-address-book-id", - "--id=s-id", - "--name=s-name", - "--number=s-number", - "--organization-id=s-organization-id", - "--version=7" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/address-book/s-address-book-id/entry/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"id\":\"s-id\",\"name\":\"s-name\",\"number\":\"s-number\",\"organizationId\":\"s-organization-id\",\"version\":7}" - } - ] - }, - { - "command": "cc address-book update-entry-id", - "variant": "required", - "args": [ - "--address-book-id=s-address-book-id", - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/address-book/s-address-book-id/entry/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"id\":\"s-id\"}" - } - ] - }, - { - "command": "cc address-book update-entry-id", - "variant": "body", - "args": [ - "--address-book-id=s-address-book-id", - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/address-book/s-address-book-id/entry/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc agent-personal-greeting-files create", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/agent-personal-greeting", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc agent-personal-greeting-files create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/agent-personal-greeting", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc agent-personal-greeting-files create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/agent-personal-greeting", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc agent-personal-greeting-files delete", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/agent-personal-greeting/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc agent-personal-greeting-files delete", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/agent-personal-greeting/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc agent-personal-greeting-files delete-references", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/agent-personal-greeting/delete-reference", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc agent-personal-greeting-files delete-references", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/agent-personal-greeting/delete-reference", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc agent-personal-greeting-files delete-references", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/agent-personal-greeting/delete-reference", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc agent-personal-greeting-files download", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--output=s-output" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/agent-personal-greeting/s-id?includeUrl=true", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ], - "error": "no download URL in response (status 200)" - }, - { - "command": "cc agent-personal-greeting-files download", - "variant": "required", - "args": [ - "--id=s-id", - "--output=s-output" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/agent-personal-greeting/s-id?includeUrl=true", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ], - "error": "no download URL in response (status 200)" - }, - { - "command": "cc agent-personal-greeting-files download", - "variant": "paginate", - "args": [ - "--id=s-id", - "--output=s-output", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/agent-personal-greeting/s-id?includeUrl=true", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ], - "error": "no download URL in response (status 200)" - }, - { - "command": "cc agent-personal-greeting-files get", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--include-url=s-include-url" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/agent-personal-greeting/s-id?includeUrl=s-include-url", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc agent-personal-greeting-files get", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/agent-personal-greeting/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc agent-personal-greeting-files get", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/agent-personal-greeting/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc agent-personal-greeting-files list", - "variant": "all-flags", - "args": [ - "--attributes=s-attributes", - "--filter=s-filter", - "--include-agent-details=s-include-agent-details", - "--page=s-page", - "--page-size=s-page-size", - "--search=s-search" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v3/agent-personal-greeting?attributes=s-attributes&filter=s-filter&includeAgentDetails=s-include-agent-details&page=s-page&pageSize=s-page-size&search=s-search", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc agent-personal-greeting-files list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v3/agent-personal-greeting", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc agent-personal-greeting-files list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v3/agent-personal-greeting?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc agent-personal-greeting-files patch", - "variant": "all-flags", - "args": [ - "--attribute-tag=s-attribute-tag", - "--greeting-purpose-id=s-greeting-purpose-id", - "--id=s-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/agent-personal-greeting/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"attributeTag\":\"s-attribute-tag\",\"greetingPurposeId\":\"s-greeting-purpose-id\"}" - } - ] - }, - { - "command": "cc agent-personal-greeting-files patch", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/agent-personal-greeting/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc agent-personal-greeting-files patch", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/agent-personal-greeting/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc agent-personal-greeting-files update", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/agent-personal-greeting/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc agent-personal-greeting-files update", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/agent-personal-greeting/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc agent-personal-greeting-files update", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/agent-personal-greeting/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc agent-personal-greeting-files upload", - "variant": "all-flags", - "args": [ - "--agent-id=s-agent-id", - "--file=s-file", - "--greeting-purpose-id=s-greeting-purpose-id", - "--name=s-name" - ], - "requests": [], - "error": "reading audio file: open s-file: no such file or directory" - }, - { - "command": "cc agent-personal-greeting-files upload", - "variant": "required", - "args": [ - "--agent-id=s-agent-id", - "--file=s-file" - ], - "requests": [], - "error": "reading audio file: open s-file: no such file or directory" - }, - { - "command": "cc agent-summaries list", - "variant": "all-flags", - "args": [ - "--interaction-id=s-interaction-id", - "--search-type=s-search-type" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/summary/list", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"interactionId\":\"s-interaction-id\",\"orgId\":\"Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA\",\"searchType\":\"s-search-type\"}" - } - ] - }, - { - "command": "cc agent-summaries list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/summary/list", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"orgId\":\"Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA\"}" - } - ] - }, - { - "command": "cc agent-summaries list", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/summary/list", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc agent-summaries list-2", - "variant": "all-flags", - "args": [ - "--search-type=s-search-type" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/generated-summaries/search", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"orgId\":\"Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA\",\"searchType\":\"s-search-type\"}" - } - ] - }, - { - "command": "cc agent-summaries list-2", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/generated-summaries/search", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"orgId\":\"Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA\"}" - } - ] - }, - { - "command": "cc agent-summaries list-2", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/generated-summaries/search", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc agent-wellbeing get-burnout-id", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/agent-burnout/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc agent-wellbeing get-burnout-id", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/agent-burnout/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc agent-wellbeing get-burnout-id", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/agent-burnout/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc agent-wellbeing list-burnout", - "variant": "all-flags", - "args": [ - "--attributes=s-attributes", - "--filter=s-filter", - "--page=s-page", - "--page-size=s-page-size" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/agent-burnout?attributes=s-attributes&filter=s-filter&page=s-page&pageSize=s-page-size", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc agent-wellbeing list-burnout", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/agent-burnout", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc agent-wellbeing list-burnout", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/agent-burnout?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc agent-wellbeing record-realtime-burnout-events", - "variant": "all-flags", - "args": [ - "--x-organization-id=s-x-organization-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/agentburnout/action", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "X-Organization-Id": "s-x-organization-id" - } - } - ] - }, - { - "command": "cc agent-wellbeing record-realtime-burnout-events", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/agentburnout/action", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc agent-wellbeing record-realtime-burnout-events", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/agentburnout/action", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc agent-wellbeing subscribe-realtime-burnout-events", - "variant": "all-flags", - "args": [ - "--description=s-description", - "--destination-url=s-destination-url", - "--event-types=s-event-types-1,s-event-types-2", - "--name=s-name", - "--secret=s-secret", - "--x-organization-id=s-x-organization-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/agentburnout/subscribe", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json", - "X-Organization-Id": "s-x-organization-id" - }, - "body": "{\"description\":\"s-description\",\"destinationUrl\":\"s-destination-url\",\"eventTypes\":[\"s-event-types-1\",\"s-event-types-2\"],\"name\":\"s-name\",\"orgId\":\"Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA\",\"secret\":\"s-secret\"}" - } - ] - }, - { - "command": "cc agent-wellbeing subscribe-realtime-burnout-events", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/agentburnout/subscribe", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"orgId\":\"Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA\"}" - } - ] - }, - { - "command": "cc agent-wellbeing subscribe-realtime-burnout-events", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/agentburnout/subscribe", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc agent-wellbeing update-burnout-id", - "variant": "all-flags", - "args": [ - "--agent-inclusion-type=s-agent-inclusion-type", - "--created-time=7", - "--enabled=true", - "--id=s-id", - "--last-updated-time=7", - "--organization-id=s-organization-id", - "--version=7", - "--wellness-break-reminders=s-wellness-break-reminders" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/agent-burnout/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"agentInclusionType\":\"s-agent-inclusion-type\",\"createdTime\":7,\"enabled\":true,\"id\":\"s-id\",\"lastUpdatedTime\":7,\"organizationId\":\"s-organization-id\",\"version\":7,\"wellnessBreakReminders\":\"s-wellness-break-reminders\"}" - } - ] - }, - { - "command": "cc agent-wellbeing update-burnout-id", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/agent-burnout/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"id\":\"s-id\"}" - } - ] - }, - { - "command": "cc agent-wellbeing update-burnout-id", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/agent-burnout/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc agents buddy-list", - "variant": "all-flags", - "args": [ - "--agent-profile-id=s-agent-profile-id", - "--media-type=s-media-type", - "--state=s-state" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/agents/buddyList", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"agentProfileId\":\"s-agent-profile-id\",\"mediaType\":\"s-media-type\",\"state\":\"s-state\"}" - } - ] - }, - { - "command": "cc agents buddy-list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/agents/buddyList", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc agents buddy-list", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/agents/buddyList", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc agents get-activities", - "variant": "all-flags", - "args": [ - "--agent-ids=s-agent-ids", - "--channel-types=s-channel-types", - "--from=2026-01-01T00:00:00.000Z", - "--page=s-page", - "--page-size=s-page-size", - "--team-ids=s-team-ids", - "--to=2026-01-02T00:00:00.000Z", - "--tracking-id=s-tracking-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/agents/activities?agentIds=s-agent-ids&channelTypes=s-channel-types&from=2026-01-01T00%3A00%3A00.000Z&orgId=6ab1d2c4-0000-4000-8000-00000000c1d0&page=s-page&pageSize=s-page-size&teamIds=s-team-ids&to=2026-01-02T00%3A00%3A00.000Z", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Trackingid": "s-tracking-id" - } - } - ] - }, - { - "command": "cc agents get-activities", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/agents/activities?orgId=6ab1d2c4-0000-4000-8000-00000000c1d0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc agents get-activities", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/agents/activities?orgId=6ab1d2c4-0000-4000-8000-00000000c1d0&page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc agents get-statistics", - "variant": "all-flags", - "args": [ - "--agent-ids=s-agent-ids", - "--from=2026-01-01T00:00:00.000Z", - "--interval=s-interval", - "--to=2026-01-02T00:00:00.000Z", - "--tracking-id=s-tracking-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/agents/statistics?agentIds=s-agent-ids&from=2026-01-01T00%3A00%3A00.000Z&interval=s-interval&orgId=6ab1d2c4-0000-4000-8000-00000000c1d0&to=2026-01-02T00%3A00%3A00.000Z", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Trackingid": "s-tracking-id" - } - } - ] - }, - { - "command": "cc agents get-statistics", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/agents/statistics?orgId=6ab1d2c4-0000-4000-8000-00000000c1d0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc agents get-statistics", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/agents/statistics?orgId=6ab1d2c4-0000-4000-8000-00000000c1d0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc agents login", - "variant": "all-flags", - "args": [ - "--device-id=s-device-id", - "--device-type=s-device-type", - "--dial-number=s-dial-number", - "--is-extension=true", - "--roles=s-roles-1,s-roles-2", - "--team-id=s-team-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v2/agents/login", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"deviceId\":\"s-device-id\",\"deviceType\":\"s-device-type\",\"dialNumber\":\"s-dial-number\",\"isExtension\":true,\"roles\":[\"s-roles-1\",\"s-roles-2\"],\"teamId\":\"s-team-id\"}" - } - ] - }, - { - "command": "cc agents login", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v2/agents/login", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc agents login", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v2/agents/login", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc agents logout", - "variant": "all-flags", - "args": [ - "--agent-id=s-agent-id", - "--logout-reason=s-logout-reason" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/v2/agents/logout", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"agentId\":\"s-agent-id\",\"logoutReason\":\"s-logout-reason\"}" - } - ] - }, - { - "command": "cc agents logout", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/v2/agents/logout", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc agents logout", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/v2/agents/logout", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc agents reload", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v2/agents/reload", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc agents reload", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v2/agents/reload", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc agents state-change", - "variant": "all-flags", - "args": [ - "--agent-id=s-agent-id", - "--aux-code-id=s-aux-code-id", - "--channel-type=s-channel-type-1,s-channel-type-2", - "--reason=s-reason", - "--state=s-state" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/v2/agents/session/state", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"agentId\":\"s-agent-id\",\"auxCodeId\":\"s-aux-code-id\",\"channelType\":[\"s-channel-type-1\",\"s-channel-type-2\"],\"reason\":\"s-reason\",\"state\":\"s-state\"}" - } - ] - }, - { - "command": "cc agents state-change", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/v2/agents/session/state", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc agents state-change", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/v2/agents/session/state", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc ai-agent create", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://studio.aiagent-us1.cisco.com/api/v1/bot/", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc ai-agent create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://studio.aiagent-us1.cisco.com/api/v1/bot/", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc ai-agent create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://studio.aiagent-us1.cisco.com/api/v1/bot/", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc ai-agent create-tool", - "variant": "all-flags", - "args": [ - "--agent-id=s-agent-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/?limit=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - }, - { - "method": "POST", - "url": "https://studio.aiagent-us1.cisco.com/api/v1/llmagent/tool/create/", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Bot-Access-Token": "golden-bot-token" - } - } - ] - }, - { - "command": "cc ai-agent create-tool", - "variant": "required", - "args": [ - "--agent-id=s-agent-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/?limit=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - }, - { - "method": "POST", - "url": "https://studio.aiagent-us1.cisco.com/api/v1/llmagent/tool/create/", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Bot-Access-Token": "golden-bot-token" - } - } - ] - }, - { - "command": "cc ai-agent create-tool", - "variant": "body", - "args": [ - "--agent-id=s-agent-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/?limit=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - }, - { - "method": "POST", - "url": "https://studio.aiagent-us1.cisco.com/api/v1/llmagent/tool/create/", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Bot-Access-Token": "golden-bot-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc ai-agent create-tool", - "variant": "paginate", - "args": [ - "--agent-id=s-agent-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/?limit=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - }, - { - "method": "POST", - "url": "https://studio.aiagent-us1.cisco.com/api/v1/llmagent/tool/create/", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Bot-Access-Token": "golden-bot-token" - } - } - ] - }, - { - "command": "cc ai-agent delete", - "variant": "all-flags", - "args": [ - "--agent-id=s-agent-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/?limit=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - }, - { - "method": "DELETE", - "url": "https://studio.aiagent-us1.cisco.com/api/v1/bot/s-agent-id/", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Bot-Access-Token": "golden-bot-token" - } - } - ] - }, - { - "command": "cc ai-agent delete", - "variant": "required", - "args": [ - "--agent-id=s-agent-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/?limit=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - }, - { - "method": "DELETE", - "url": "https://studio.aiagent-us1.cisco.com/api/v1/bot/s-agent-id/", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Bot-Access-Token": "golden-bot-token" - } - } - ] - }, - { - "command": "cc ai-agent delete", - "variant": "paginate", - "args": [ - "--agent-id=s-agent-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/?limit=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - }, - { - "method": "DELETE", - "url": "https://studio.aiagent-us1.cisco.com/api/v1/bot/s-agent-id/", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Bot-Access-Token": "golden-bot-token" - } - } - ] - }, - { - "command": "cc ai-agent delete-tool", - "variant": "all-flags", - "args": [ - "--agent-id=s-agent-id", - "--tool_id=s-tool_id" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/?limit=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - }, - { - "method": "POST", - "url": "https://studio.aiagent-us1.cisco.com/api/v1/llmagent/tool/delete/", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Bot-Access-Token": "golden-bot-token", - "Content-Type": "application/json" - }, - "body": "{\"tool_id\":\"s-tool_id\"}" - } - ] - }, - { - "command": "cc ai-agent delete-tool", - "variant": "required", - "args": [ - "--agent-id=s-agent-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/?limit=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - }, - { - "method": "POST", - "url": "https://studio.aiagent-us1.cisco.com/api/v1/llmagent/tool/delete/", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Bot-Access-Token": "golden-bot-token" - } - } - ] - }, - { - "command": "cc ai-agent delete-tool", - "variant": "body", - "args": [ - "--agent-id=s-agent-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/?limit=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - }, - { - "method": "POST", - "url": "https://studio.aiagent-us1.cisco.com/api/v1/llmagent/tool/delete/", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Bot-Access-Token": "golden-bot-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc ai-agent delete-tool", - "variant": "paginate", - "args": [ - "--agent-id=s-agent-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/?limit=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - }, - { - "method": "POST", - "url": "https://studio.aiagent-us1.cisco.com/api/v1/llmagent/tool/delete/", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Bot-Access-Token": "golden-bot-token" - } - } - ] - }, - { - "command": "cc ai-agent export", - "variant": "all-flags", - "args": [ - "--agent-id=s-agent-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/?limit=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - }, - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v1/llmagent/export/", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Bot-Access-Token": "golden-bot-token" - } - } - ] - }, - { - "command": "cc ai-agent export", - "variant": "required", - "args": [ - "--agent-id=s-agent-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/?limit=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - }, - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v1/llmagent/export/", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Bot-Access-Token": "golden-bot-token" - } - } - ] - }, - { - "command": "cc ai-agent export", - "variant": "paginate", - "args": [ - "--agent-id=s-agent-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/?limit=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - }, - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v1/llmagent/export/", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Bot-Access-Token": "golden-bot-token" - } - } - ] - }, - { - "command": "cc ai-agent get", - "variant": "all-flags", - "args": [ - "--agent-id=s-agent-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/?limit=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - }, - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v1/bot/s-agent-id/", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Bot-Access-Token": "golden-bot-token" - } - } - ] - }, - { - "command": "cc ai-agent get", - "variant": "required", - "args": [ - "--agent-id=s-agent-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/?limit=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - }, - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v1/bot/s-agent-id/", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Bot-Access-Token": "golden-bot-token" - } - } - ] - }, - { - "command": "cc ai-agent get", - "variant": "paginate", - "args": [ - "--agent-id=s-agent-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/?limit=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - }, - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v1/bot/s-agent-id/", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Bot-Access-Token": "golden-bot-token" - } - } - ] - }, - { - "command": "cc ai-agent get-configuration", - "variant": "all-flags", - "args": [ - "--agent-id=s-agent-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/?limit=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - }, - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v1/llmagent/getdefault/", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Bot-Access-Token": "golden-bot-token" - } - } - ] - }, - { - "command": "cc ai-agent get-configuration", - "variant": "required", - "args": [ - "--agent-id=s-agent-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/?limit=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - }, - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v1/llmagent/getdefault/", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Bot-Access-Token": "golden-bot-token" - } - } - ] - }, - { - "command": "cc ai-agent get-configuration", - "variant": "paginate", - "args": [ - "--agent-id=s-agent-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/?limit=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - }, - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v1/llmagent/getdefault/", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Bot-Access-Token": "golden-bot-token" - } - } - ] - }, - { - "command": "cc ai-agent list", - "variant": "all-flags", - "args": [ - "--limit=s-limit", - "--offset=s-offset" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/?limit=s-limit&offset=s-offset", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc ai-agent list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc ai-agent list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/?limit=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc ai-agent list-versions", - "variant": "all-flags", - "args": [ - "--agent-id=s-agent-id", - "--limit=s-limit", - "--offset=s-offset", - "--order_by=s-order_by" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/?limit=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - }, - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v1/llmagent/?limit=s-limit&offset=s-offset&order_by=s-order_by", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Bot-Access-Token": "golden-bot-token" - } - } - ] - }, - { - "command": "cc ai-agent list-versions", - "variant": "required", - "args": [ - "--agent-id=s-agent-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/?limit=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - }, - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v1/llmagent/", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Bot-Access-Token": "golden-bot-token" - } - } - ] - }, - { - "command": "cc ai-agent list-versions", - "variant": "paginate", - "args": [ - "--agent-id=s-agent-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/?limit=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - }, - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v1/llmagent/?limit=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Bot-Access-Token": "golden-bot-token" - } - } - ] - }, - { - "command": "cc ai-agent publish", - "variant": "all-flags", - "args": [ - "--agent-id=s-agent-id", - "--description=s-description" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/?limit=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - }, - { - "method": "POST", - "url": "https://studio.aiagent-us1.cisco.com/api/v1/llmagent/makelive/", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Bot-Access-Token": "golden-bot-token", - "Content-Type": "application/json" - }, - "body": "{\"description\":\"s-description\"}" - } - ] - }, - { - "command": "cc ai-agent publish", - "variant": "required", - "args": [ - "--agent-id=s-agent-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/?limit=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - }, - { - "method": "POST", - "url": "https://studio.aiagent-us1.cisco.com/api/v1/llmagent/makelive/", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Bot-Access-Token": "golden-bot-token" - } - } - ] - }, - { - "command": "cc ai-agent publish", - "variant": "body", - "args": [ - "--agent-id=s-agent-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/?limit=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - }, - { - "method": "POST", - "url": "https://studio.aiagent-us1.cisco.com/api/v1/llmagent/makelive/", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Bot-Access-Token": "golden-bot-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc ai-agent publish", - "variant": "paginate", - "args": [ - "--agent-id=s-agent-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/?limit=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - }, - { - "method": "POST", - "url": "https://studio.aiagent-us1.cisco.com/api/v1/llmagent/makelive/", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Bot-Access-Token": "golden-bot-token" - } - } - ] - }, - { - "command": "cc ai-agent update", - "variant": "all-flags", - "args": [ - "--agent-id=s-agent-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/?limit=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - }, - { - "method": "PUT", - "url": "https://studio.aiagent-us1.cisco.com/api/v1/bot/s-agent-id/", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Bot-Access-Token": "golden-bot-token" - } - } - ] - }, - { - "command": "cc ai-agent update", - "variant": "required", - "args": [ - "--agent-id=s-agent-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/?limit=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - }, - { - "method": "PUT", - "url": "https://studio.aiagent-us1.cisco.com/api/v1/bot/s-agent-id/", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Bot-Access-Token": "golden-bot-token" - } - } - ] - }, - { - "command": "cc ai-agent update", - "variant": "body", - "args": [ - "--agent-id=s-agent-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/?limit=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - }, - { - "method": "PUT", - "url": "https://studio.aiagent-us1.cisco.com/api/v1/bot/s-agent-id/", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Bot-Access-Token": "golden-bot-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc ai-agent update", - "variant": "paginate", - "args": [ - "--agent-id=s-agent-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/?limit=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - }, - { - "method": "PUT", - "url": "https://studio.aiagent-us1.cisco.com/api/v1/bot/s-agent-id/", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Bot-Access-Token": "golden-bot-token" - } - } - ] - }, - { - "command": "cc ai-agent update-tool", - "variant": "all-flags", - "args": [ - "--agent-id=s-agent-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/?limit=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - }, - { - "method": "POST", - "url": "https://studio.aiagent-us1.cisco.com/api/v1/llmagent/tool/update/", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Bot-Access-Token": "golden-bot-token" - } - } - ] - }, - { - "command": "cc ai-agent update-tool", - "variant": "required", - "args": [ - "--agent-id=s-agent-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/?limit=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - }, - { - "method": "POST", - "url": "https://studio.aiagent-us1.cisco.com/api/v1/llmagent/tool/update/", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Bot-Access-Token": "golden-bot-token" - } - } - ] - }, - { - "command": "cc ai-agent update-tool", - "variant": "body", - "args": [ - "--agent-id=s-agent-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/?limit=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - }, - { - "method": "POST", - "url": "https://studio.aiagent-us1.cisco.com/api/v1/llmagent/tool/update/", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Bot-Access-Token": "golden-bot-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc ai-agent update-tool", - "variant": "paginate", - "args": [ - "--agent-id=s-agent-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/?limit=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - }, - { - "method": "POST", - "url": "https://studio.aiagent-us1.cisco.com/api/v1/llmagent/tool/update/", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Bot-Access-Token": "golden-bot-token" - } - } - ] - }, - { - "command": "cc ai-agent-session get", - "variant": "all-flags", - "args": [ - "--agent-id=s-agent-id", - "--session-id=s-session-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/s-agent-id/sessions/s-session-id/", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc ai-agent-session get", - "variant": "required", - "args": [ - "--agent-id=s-agent-id", - "--session-id=s-session-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/s-agent-id/sessions/s-session-id/", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc ai-agent-session get", - "variant": "paginate", - "args": [ - "--agent-id=s-agent-id", - "--session-id=s-session-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/s-agent-id/sessions/s-session-id/", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc ai-agent-session list", - "variant": "all-flags", - "args": [ - "--agent-id=s-agent-id", - "--limit=s-limit", - "--offset=s-offset" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/s-agent-id/sessions/?limit=s-limit&offset=s-offset", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc ai-agent-session list", - "variant": "required", - "args": [ - "--agent-id=s-agent-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/s-agent-id/sessions/", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc ai-agent-session list", - "variant": "paginate", - "args": [ - "--agent-id=s-agent-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/s-agent-id/sessions/?limit=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc ai-agent-session list-messages", - "variant": "all-flags", - "args": [ - "--agent-id=s-agent-id", - "--limit=s-limit", - "--offset=s-offset", - "--session-id=s-session-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/s-agent-id/sessions/s-session-id/messages/?limit=s-limit&offset=s-offset", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc ai-agent-session list-messages", - "variant": "required", - "args": [ - "--agent-id=s-agent-id", - "--session-id=s-session-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/s-agent-id/sessions/s-session-id/messages/", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc ai-agent-session list-messages", - "variant": "paginate", - "args": [ - "--agent-id=s-agent-id", - "--session-id=s-session-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/s-agent-id/sessions/s-session-id/messages/?limit=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc ai-agent-transcript create-audit-record", - "variant": "all-flags", - "args": [ - "--agent-id=s-agent-id", - "--decrypt_audit_type=s-decrypt_audit_type", - "--message=s-message", - "--room_id=s-room_id" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/?limit=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - }, - { - "method": "POST", - "url": "https://studio.aiagent-us1.cisco.com/api/v1/decrypt_audit/", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Bot-Access-Token": "golden-bot-token", - "Content-Type": "application/json" - }, - "body": "{\"decrypt_audit_type\":\"s-decrypt_audit_type\",\"message\":\"s-message\",\"room_id\":\"s-room_id\"}" - } - ] - }, - { - "command": "cc ai-agent-transcript create-audit-record", - "variant": "required", - "args": [ - "--agent-id=s-agent-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/?limit=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - }, - { - "method": "POST", - "url": "https://studio.aiagent-us1.cisco.com/api/v1/decrypt_audit/", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Bot-Access-Token": "golden-bot-token" - } - } - ] - }, - { - "command": "cc ai-agent-transcript create-audit-record", - "variant": "body", - "args": [ - "--agent-id=s-agent-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/?limit=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - }, - { - "method": "POST", - "url": "https://studio.aiagent-us1.cisco.com/api/v1/decrypt_audit/", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Bot-Access-Token": "golden-bot-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc ai-agent-transcript create-audit-record", - "variant": "paginate", - "args": [ - "--agent-id=s-agent-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/?limit=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - }, - { - "method": "POST", - "url": "https://studio.aiagent-us1.cisco.com/api/v1/decrypt_audit/", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Bot-Access-Token": "golden-bot-token" - } - } - ] - }, - { - "command": "cc ai-agent-transcript get-session", - "variant": "all-flags", - "args": [ - "--agent-id=s-agent-id", - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/?limit=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - }, - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v1/room/?id=s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Bot-Access-Token": "golden-bot-token" - } - } - ] - }, - { - "command": "cc ai-agent-transcript get-session", - "variant": "required", - "args": [ - "--agent-id=s-agent-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/?limit=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - }, - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v1/room/", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Bot-Access-Token": "golden-bot-token" - } - } - ] - }, - { - "command": "cc ai-agent-transcript get-session", - "variant": "paginate", - "args": [ - "--agent-id=s-agent-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/?limit=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - }, - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v1/room/", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Bot-Access-Token": "golden-bot-token" - } - } - ] - }, - { - "command": "cc ai-agent-transcript list-messages", - "variant": "all-flags", - "args": [ - "--agent-id=s-agent-id", - "--limit=s-limit", - "--offset=s-offset", - "--order_by=s-order_by", - "--room_id=s-room_id" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/?limit=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - }, - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v1/message/?limit=s-limit&offset=s-offset&order_by=s-order_by&room_id=s-room_id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Bot-Access-Token": "golden-bot-token" - } - } - ] - }, - { - "command": "cc ai-agent-transcript list-messages", - "variant": "required", - "args": [ - "--agent-id=s-agent-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/?limit=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - }, - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v1/message/", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Bot-Access-Token": "golden-bot-token" - } - } - ] - }, - { - "command": "cc ai-agent-transcript list-messages", - "variant": "paginate", - "args": [ - "--agent-id=s-agent-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v2/organizations/6ab1d2c4-0000-4000-8000-00000000c1d0/agents/?limit=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - }, - { - "method": "GET", - "url": "https://studio.aiagent-us1.cisco.com/api/v1/message/?limit=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Bot-Access-Token": "golden-bot-token" - } - } - ] - }, - { - "command": "cc ai-assistant get-suggestions", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/event", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc ai-assistant get-suggestions", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/event", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc ai-assistant get-suggestions", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/event", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc ai-feature bulk-save-question-mapped-autocsat", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/ai-feature/auto-csat/question/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc ai-feature bulk-save-question-mapped-autocsat", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/ai-feature/auto-csat/question/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc ai-feature bulk-save-question-mapped-autocsat", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/ai-feature/auto-csat/question/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc ai-feature create-question-mapped-autocsat", - "variant": "all-flags", - "args": [ - "--created-time=7", - "--id=s-id", - "--last-updated-time=7", - "--organization-id=s-organization-id", - "--question-id=s-question-id", - "--questionnaire-id=s-questionnaire-id", - "--version=7" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/ai-feature/auto-csat/question", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"createdTime\":7,\"id\":\"s-id\",\"lastUpdatedTime\":7,\"organizationId\":\"s-organization-id\",\"questionId\":\"s-question-id\",\"questionnaireId\":\"s-questionnaire-id\",\"version\":7}" - } - ] - }, - { - "command": "cc ai-feature create-question-mapped-autocsat", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/ai-feature/auto-csat/question", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc ai-feature create-question-mapped-autocsat", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/ai-feature/auto-csat/question", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc ai-feature delete-question-mapped-autocsat-id", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/ai-feature/auto-csat/question/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc ai-feature delete-question-mapped-autocsat-id", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/ai-feature/auto-csat/question/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc ai-feature get", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/ai-feature/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc ai-feature get", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/ai-feature/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc ai-feature get", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/ai-feature/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc ai-feature get-question-mapped-autocsat-id", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/ai-feature/auto-csat/question/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc ai-feature get-question-mapped-autocsat-id", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/ai-feature/auto-csat/question/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc ai-feature get-question-mapped-autocsat-id", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/ai-feature/auto-csat/question/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc ai-feature list", - "variant": "all-flags", - "args": [ - "--attributes=s-attributes", - "--filter=s-filter", - "--page=s-page", - "--page-size=s-page-size" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/ai-feature?attributes=s-attributes&filter=s-filter&page=s-page&pageSize=s-page-size", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc ai-feature list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/ai-feature", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc ai-feature list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/ai-feature?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc ai-feature list-question-mapped-autocsat", - "variant": "all-flags", - "args": [ - "--attributes=s-attributes", - "--filter=s-filter", - "--page=s-page", - "--page-size=s-page-size" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/ai-feature/auto-csat/question?attributes=s-attributes&filter=s-filter&page=s-page&pageSize=s-page-size", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc ai-feature list-question-mapped-autocsat", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/ai-feature/auto-csat/question", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc ai-feature list-question-mapped-autocsat", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/ai-feature/auto-csat/question?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc ai-feature patch", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/ai-feature/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc ai-feature patch", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/ai-feature/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc ai-feature patch", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/ai-feature/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc asset bulk-save", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/asset/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc asset bulk-save", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/asset/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc asset bulk-save", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/asset/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc asset create", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/asset", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc asset create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/asset", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc asset create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/asset", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc asset delete", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/asset/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc asset delete", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/asset/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc asset get", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--include-channel-name=s-include-channel-name" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/asset/s-id?includeChannelName=s-include-channel-name", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc asset get", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/asset/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc asset get", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/asset/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc asset list", - "variant": "all-flags", - "args": [ - "--attributes=s-attributes", - "--exclude-epassociated=s-exclude-epassociated", - "--filter=s-filter", - "--include-channel-name=s-include-channel-name", - "--include-count=s-include-count", - "--page=s-page", - "--page-size=s-page-size", - "--search=s-search", - "--single-object-response=s-single-object-response", - "--sort=s-sort" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/asset?attributes=s-attributes&excludeEPAssociated=s-exclude-epassociated&filter=s-filter&includeChannelName=s-include-channel-name&includeCount=s-include-count&page=s-page&pageSize=s-page-size&search=s-search&singleObjectResponse=s-single-object-response&sort=s-sort", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc asset list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/asset", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc asset list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/asset?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc asset list-references", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--page=s-page", - "--page-size=s-page-size", - "--type=s-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/asset/s-id/incoming-references?page=s-page&pageSize=s-page-size&type=s-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc asset list-references", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/asset/s-id/incoming-references", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc asset list-references", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/asset/s-id/incoming-references?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc asset patch", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--value-type=s-value-type" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/asset/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"valueType\":\"s-value-type\"}" - } - ] - }, - { - "command": "cc asset patch", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/asset/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc asset patch", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/asset/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc asset update", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/asset/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc asset update", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/asset/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc asset update", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/asset/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc audio-files create", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/audio-file", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc audio-files create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/audio-file", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc audio-files create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/audio-file", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc audio-files delete", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/audio-file/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc audio-files delete", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/audio-file/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc audio-files download", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--output=s-output" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/audio-file/s-id?includeUrl=true", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ], - "error": "no download URL in response (status 200)" - }, - { - "command": "cc audio-files download", - "variant": "required", - "args": [ - "--id=s-id", - "--output=s-output" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/audio-file/s-id?includeUrl=true", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ], - "error": "no download URL in response (status 200)" - }, - { - "command": "cc audio-files download", - "variant": "paginate", - "args": [ - "--id=s-id", - "--output=s-output", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/audio-file/s-id?includeUrl=true", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ], - "error": "no download URL in response (status 200)" - }, - { - "command": "cc audio-files get", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--include-url=s-include-url" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/audio-file/s-id?includeUrl=s-include-url", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc audio-files get", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/audio-file/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc audio-files get", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/audio-file/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc audio-files list", - "variant": "all-flags", - "args": [ - "--attributes=s-attributes", - "--filter=s-filter", - "--page=s-page", - "--page-size=s-page-size", - "--search=s-search" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/audio-file?attributes=s-attributes&filter=s-filter&page=s-page&pageSize=s-page-size&search=s-search", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc audio-files list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/audio-file", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc audio-files list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/audio-file?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc audio-files list-references", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--page=s-page", - "--page-size=s-page-size", - "--type=s-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/audio-file/s-id/incoming-references?page=s-page&pageSize=s-page-size&type=s-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc audio-files list-references", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/audio-file/s-id/incoming-references", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc audio-files list-references", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/audio-file/s-id/incoming-references?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc audio-files patch", - "variant": "all-flags", - "args": [ - "--description=s-description", - "--id=s-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/audio-file/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"description\":\"s-description\"}" - } - ] - }, - { - "command": "cc audio-files patch", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/audio-file/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc audio-files patch", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/audio-file/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc audio-files update", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/audio-file/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc audio-files update", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/audio-file/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc audio-files update", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/audio-file/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc audio-files upload", - "variant": "all-flags", - "args": [ - "--description=s-description", - "--file=s-file", - "--name=s-name" - ], - "requests": [], - "error": "reading audio file: open s-file: no such file or directory" - }, - { - "command": "cc audio-files upload", - "variant": "required", - "args": [ - "--file=s-file" - ], - "requests": [], - "error": "reading audio file: open s-file: no such file or directory" - }, - { - "command": "cc auto-csat bulk-save-mapped-question", - "variant": "all-flags", - "args": [ - "--auto-csat-id=s-auto-csat-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/auto-csat/s-auto-csat-id/question/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc auto-csat bulk-save-mapped-question", - "variant": "required", - "args": [ - "--auto-csat-id=s-auto-csat-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/auto-csat/s-auto-csat-id/question/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc auto-csat bulk-save-mapped-question", - "variant": "body", - "args": [ - "--auto-csat-id=s-auto-csat-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/auto-csat/s-auto-csat-id/question/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc auto-csat create-mapped-question", - "variant": "all-flags", - "args": [ - "--auto-csat-id=s-auto-csat-id", - "--created-time=7", - "--id=s-id", - "--last-updated-time=7", - "--organization-id=s-organization-id", - "--question-id=s-question-id", - "--questionnaire-id=s-questionnaire-id", - "--version=7" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/auto-csat/s-auto-csat-id/question", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"createdTime\":7,\"id\":\"s-id\",\"lastUpdatedTime\":7,\"organizationId\":\"s-organization-id\",\"questionId\":\"s-question-id\",\"questionnaireId\":\"s-questionnaire-id\",\"version\":7}" - } - ] - }, - { - "command": "cc auto-csat create-mapped-question", - "variant": "required", - "args": [ - "--auto-csat-id=s-auto-csat-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/auto-csat/s-auto-csat-id/question", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc auto-csat create-mapped-question", - "variant": "body", - "args": [ - "--auto-csat-id=s-auto-csat-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/auto-csat/s-auto-csat-id/question", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc auto-csat delete-mapped-question-id", - "variant": "all-flags", - "args": [ - "--auto-csat-id=s-auto-csat-id", - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/auto-csat/s-auto-csat-id/question/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc auto-csat delete-mapped-question-id", - "variant": "required", - "args": [ - "--auto-csat-id=s-auto-csat-id", - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/auto-csat/s-auto-csat-id/question/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc auto-csat get", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/auto-csat/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc auto-csat get", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/auto-csat/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc auto-csat get", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/auto-csat/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc auto-csat get-mapped-question-id", - "variant": "all-flags", - "args": [ - "--auto-csat-id=s-auto-csat-id", - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/auto-csat/s-auto-csat-id/question/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc auto-csat get-mapped-question-id", - "variant": "required", - "args": [ - "--auto-csat-id=s-auto-csat-id", - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/auto-csat/s-auto-csat-id/question/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc auto-csat get-mapped-question-id", - "variant": "paginate", - "args": [ - "--auto-csat-id=s-auto-csat-id", - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/auto-csat/s-auto-csat-id/question/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc auto-csat list", - "variant": "all-flags", - "args": [ - "--attributes=s-attributes", - "--filter=s-filter", - "--page=s-page", - "--page-size=s-page-size" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/auto-csat?attributes=s-attributes&filter=s-filter&page=s-page&pageSize=s-page-size", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc auto-csat list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/auto-csat", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc auto-csat list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/auto-csat?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc auto-csat list-mapped-question", - "variant": "all-flags", - "args": [ - "--attributes=s-attributes", - "--auto-csat-id=s-auto-csat-id", - "--filter=s-filter", - "--page=s-page", - "--page-size=s-page-size" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/auto-csat/s-auto-csat-id/question?attributes=s-attributes&filter=s-filter&page=s-page&pageSize=s-page-size", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc auto-csat list-mapped-question", - "variant": "required", - "args": [ - "--auto-csat-id=s-auto-csat-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/auto-csat/s-auto-csat-id/question", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc auto-csat list-mapped-question", - "variant": "paginate", - "args": [ - "--auto-csat-id=s-auto-csat-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/auto-csat/s-auto-csat-id/question?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc auto-csat update", - "variant": "all-flags", - "args": [ - "--agent-inclusion-type=s-agent-inclusion-type", - "--created-time=7", - "--enabled=true", - "--id=s-id", - "--last-updated-time=7", - "--organization-id=s-organization-id", - "--selected-global-variable-id=s-selected-global-variable-id", - "--survey-data-source=s-survey-data-source", - "--version=7" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/auto-csat/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"agentInclusionType\":\"s-agent-inclusion-type\",\"createdTime\":7,\"enabled\":true,\"id\":\"s-id\",\"lastUpdatedTime\":7,\"organizationId\":\"s-organization-id\",\"selectedGlobalVariableId\":\"s-selected-global-variable-id\",\"surveyDataSource\":\"s-survey-data-source\",\"version\":7}" - } - ] - }, - { - "command": "cc auto-csat update", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/auto-csat/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"id\":\"s-id\"}" - } - ] - }, - { - "command": "cc auto-csat update", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/auto-csat/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc auxiliary-code bulk-export", - "variant": "all-flags", - "args": [ - "--page=s-page", - "--page-size=s-page-size" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/auxiliary-code/bulk-export?page=s-page&pageSize=s-page-size", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc auxiliary-code bulk-export", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/auxiliary-code/bulk-export", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc auxiliary-code bulk-export", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/auxiliary-code/bulk-export?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc auxiliary-code bulk-partial-update", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/auxiliary-code/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc auxiliary-code bulk-partial-update", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/auxiliary-code/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc auxiliary-code bulk-partial-update", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/auxiliary-code/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc auxiliary-code bulk-save", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/auxiliary-code/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc auxiliary-code bulk-save", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/auxiliary-code/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc auxiliary-code bulk-save", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/auxiliary-code/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc auxiliary-code create", - "variant": "all-flags", - "args": [ - "--active=true", - "--burnout-inclusion=s-burnout-inclusion", - "--default-code=true", - "--description=s-description", - "--id=s-id", - "--is-system-code=true", - "--name=s-name", - "--organization-id=s-organization-id", - "--system-default=true", - "--version=7", - "--work-type-code=s-work-type-code", - "--work-type-id=s-work-type-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/auxiliary-code", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"active\":true,\"burnoutInclusion\":\"s-burnout-inclusion\",\"defaultCode\":true,\"description\":\"s-description\",\"id\":\"s-id\",\"isSystemCode\":true,\"name\":\"s-name\",\"organizationId\":\"s-organization-id\",\"systemDefault\":true,\"version\":7,\"workTypeCode\":\"s-work-type-code\",\"workTypeId\":\"s-work-type-id\"}" - } - ] - }, - { - "command": "cc auxiliary-code create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/auxiliary-code", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc auxiliary-code create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/auxiliary-code", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc auxiliary-code delete", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/auxiliary-code/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc auxiliary-code delete", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/auxiliary-code/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc auxiliary-code get", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/auxiliary-code/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc auxiliary-code get", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/auxiliary-code/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc auxiliary-code get", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/auxiliary-code/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc auxiliary-code list", - "variant": "all-flags", - "args": [ - "--attributes=s-attributes", - "--desktop-profile-filter=s-desktop-profile-filter", - "--filter=s-filter", - "--page=s-page", - "--page-size=s-page-size", - "--search=s-search", - "--supervised-user-id=s-supervised-user-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/auxiliary-code?attributes=s-attributes&desktopProfileFilter=s-desktop-profile-filter&filter=s-filter&page=s-page&pageSize=s-page-size&search=s-search&supervisedUserId=s-supervised-user-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc auxiliary-code list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/auxiliary-code", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc auxiliary-code list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/auxiliary-code?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc auxiliary-code list-references", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--page=s-page", - "--page-size=s-page-size", - "--type=s-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/auxiliary-code/s-id/incoming-references?page=s-page&pageSize=s-page-size&type=s-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc auxiliary-code list-references", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/auxiliary-code/s-id/incoming-references", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc auxiliary-code list-references", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/auxiliary-code/s-id/incoming-references?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc auxiliary-code purge-inactive", - "variant": "all-flags", - "args": [ - "--next-start-id=s-next-start-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/auxiliary-code/purge-inactive-entities?nextStartId=s-next-start-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc auxiliary-code purge-inactive", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/auxiliary-code/purge-inactive-entities", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc auxiliary-code update", - "variant": "all-flags", - "args": [ - "--active=true", - "--burnout-inclusion=s-burnout-inclusion", - "--default-code=true", - "--description=s-description", - "--id=s-id", - "--is-system-code=true", - "--name=s-name", - "--organization-id=s-organization-id", - "--system-default=true", - "--version=7", - "--work-type-code=s-work-type-code", - "--work-type-id=s-work-type-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/auxiliary-code/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"active\":true,\"burnoutInclusion\":\"s-burnout-inclusion\",\"defaultCode\":true,\"description\":\"s-description\",\"id\":\"s-id\",\"isSystemCode\":true,\"name\":\"s-name\",\"organizationId\":\"s-organization-id\",\"systemDefault\":true,\"version\":7,\"workTypeCode\":\"s-work-type-code\",\"workTypeId\":\"s-work-type-id\"}" - } - ] - }, - { - "command": "cc auxiliary-code update", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/auxiliary-code/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"id\":\"s-id\"}" - } - ] - }, - { - "command": "cc auxiliary-code update", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/auxiliary-code/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc business-hour bulk-export", - "variant": "all-flags", - "args": [ - "--page=s-page", - "--page-size=s-page-size" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/business-hours/bulk-export?page=s-page&pageSize=s-page-size", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc business-hour bulk-export", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/business-hours/bulk-export", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc business-hour bulk-export", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/business-hours/bulk-export?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc business-hour bulk-save", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/business-hours/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc business-hour bulk-save", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/business-hours/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc business-hour bulk-save", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/business-hours/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc business-hour create", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/business-hours", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc business-hour create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/business-hours", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc business-hour create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/business-hours", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc business-hour delete", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/business-hours/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc business-hour delete", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/business-hours/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc business-hour get", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/business-hours/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc business-hour get", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/business-hours/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc business-hour get", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/business-hours/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc business-hour list", - "variant": "all-flags", - "args": [ - "--attributes=s-attributes", - "--filter=s-filter", - "--include-count=s-include-count", - "--page=s-page", - "--page-size=s-page-size", - "--search=s-search", - "--single-object-response=s-single-object-response", - "--sort=s-sort" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/business-hours?attributes=s-attributes&filter=s-filter&includeCount=s-include-count&page=s-page&pageSize=s-page-size&search=s-search&singleObjectResponse=s-single-object-response&sort=s-sort", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc business-hour list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/business-hours", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc business-hour list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/business-hours?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc business-hour list-references", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--page=s-page", - "--page-size=s-page-size", - "--type=s-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/business-hours/s-id/incoming-references?page=s-page&pageSize=s-page-size&type=s-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc business-hour list-references", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/business-hours/s-id/incoming-references", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc business-hour list-references", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/business-hours/s-id/incoming-references?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc business-hour list-v1", - "variant": "all-flags", - "args": [ - "--page=s-page", - "--page-size=s-page-size" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/business-hours?page=s-page&pageSize=s-page-size", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc business-hour list-v1", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/business-hours", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc business-hour list-v1", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/business-hours?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc business-hour update", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/business-hours/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc business-hour update", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/business-hours/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc business-hour update", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/business-hours/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc call-monitor barge-in", - "variant": "all-flags", - "args": [ - "--task-id=s-task-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/monitor/s-task-id/bargeIn", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc call-monitor barge-in", - "variant": "required", - "args": [ - "--task-id=s-task-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/monitor/s-task-id/bargeIn", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc call-monitor create", - "variant": "all-flags", - "args": [ - "--agents=s-agents-1,s-agents-2", - "--id=s-id", - "--invisible-mode=true", - "--monitor-type=s-monitor-type", - "--queue-ids=s-queue-ids-1,s-queue-ids-2", - "--sites=s-sites-1,s-sites-2", - "--task-id=s-task-id", - "--teams=s-teams-1,s-teams-2", - "--tracking-id=s-tracking-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/monitor", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"agents\":[\"s-agents-1\",\"s-agents-2\"],\"id\":\"s-id\",\"invisibleMode\":true,\"monitorType\":\"s-monitor-type\",\"queueIds\":[\"s-queue-ids-1\",\"s-queue-ids-2\"],\"sites\":[\"s-sites-1\",\"s-sites-2\"],\"taskId\":\"s-task-id\",\"teams\":[\"s-teams-1\",\"s-teams-2\"],\"trackingId\":\"s-tracking-id\"}" - } - ] - }, - { - "command": "cc call-monitor create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/monitor", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc call-monitor create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/monitor", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc call-monitor delete", - "variant": "all-flags", - "args": [ - "--request-id=s-request-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/v1/monitor/s-request-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc call-monitor delete", - "variant": "required", - "args": [ - "--request-id=s-request-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/v1/monitor/s-request-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc call-monitor end", - "variant": "all-flags", - "args": [ - "--task-id=s-task-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/monitor/s-task-id/end", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc call-monitor end", - "variant": "required", - "args": [ - "--task-id=s-task-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/monitor/s-task-id/end", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc call-monitor hold", - "variant": "all-flags", - "args": [ - "--task-id=s-task-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/monitor/s-task-id/hold", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc call-monitor hold", - "variant": "required", - "args": [ - "--task-id=s-task-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/monitor/s-task-id/hold", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc call-monitor list-sessions", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/monitor/sessions", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc call-monitor list-sessions", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/monitor/sessions", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc call-monitor list-sessions", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/monitor/sessions?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc call-monitor unhold", - "variant": "all-flags", - "args": [ - "--task-id=s-task-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/monitor/s-task-id/unhold", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc call-monitor unhold", - "variant": "required", - "args": [ - "--task-id=s-task-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/monitor/s-task-id/unhold", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc call-monitor whisper-coach", - "variant": "all-flags", - "args": [ - "--interaction-id=s-interaction-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/monitor/s-interaction-id/coach", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc call-monitor whisper-coach", - "variant": "required", - "args": [ - "--interaction-id=s-interaction-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/monitor/s-interaction-id/coach", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc call-monitoring-config create", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/call-monitoring", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc call-monitoring-config create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/call-monitoring", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc call-monitoring-config create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/call-monitoring", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc call-monitoring-config delete", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/call-monitoring/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc call-monitoring-config delete", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/call-monitoring/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc call-monitoring-config delete-references", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/call-monitoring/delete-reference", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc call-monitoring-config delete-references", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/call-monitoring/delete-reference", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc call-monitoring-config delete-references", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/call-monitoring/delete-reference", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc call-monitoring-config get", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--include-filter-details=s-include-filter-details" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/call-monitoring/s-id?includeFilterDetails=s-include-filter-details", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc call-monitoring-config get", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/call-monitoring/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc call-monitoring-config get", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/call-monitoring/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc call-monitoring-config list", - "variant": "all-flags", - "args": [ - "--attributes=s-attributes", - "--filter=s-filter", - "--include-filters-count=s-include-filters-count", - "--include-total-call-monitoring-count-in-org=s-include-total-call-monitoring-count-in-org", - "--include-user-details=s-include-user-details", - "--page=s-page", - "--page-size=s-page-size", - "--search=s-search" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/call-monitoring?attributes=s-attributes&filter=s-filter&includeFiltersCount=s-include-filters-count&includeTotalCallMonitoringCountInOrg=s-include-total-call-monitoring-count-in-org&includeUserDetails=s-include-user-details&page=s-page&pageSize=s-page-size&search=s-search", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc call-monitoring-config list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/call-monitoring", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc call-monitoring-config list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/call-monitoring?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc call-monitoring-config patch", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/call-monitoring/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc call-monitoring-config patch", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/call-monitoring/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc call-monitoring-config patch", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/call-monitoring/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc call-monitoring-config update", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/call-monitoring/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc call-monitoring-config update", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/call-monitoring/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc call-monitoring-config update", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/call-monitoring/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc callbacks delete-scheduled-id", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/v1/callbacks/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/scheduled-callback/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc callbacks delete-scheduled-id", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/v1/callbacks/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/scheduled-callback/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc callbacks get-scheduled", - "variant": "all-flags", - "args": [ - "--assignee-agent=s-assignee-agent", - "--callback-number=s-callback-number", - "--page=s-page", - "--page-size=s-page-size", - "--sort-by=s-sort-by", - "--sort-order=s-sort-order" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/callbacks/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/scheduled-callback?assigneeAgent=s-assignee-agent&callbackNumber=s-callback-number&page=s-page&pageSize=s-page-size&sortBy=s-sort-by&sortOrder=s-sort-order", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc callbacks get-scheduled", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/callbacks/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/scheduled-callback", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc callbacks get-scheduled", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/callbacks/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/scheduled-callback?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc callbacks get-scheduled-id", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/callbacks/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/scheduled-callback/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc callbacks get-scheduled-id", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/callbacks/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/scheduled-callback/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc callbacks get-scheduled-id", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/callbacks/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/scheduled-callback/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc callbacks schedule", - "variant": "all-flags", - "args": [ - "--assignee-agent=s-assignee-agent", - "--callback-number=s-callback-number", - "--callback-reason=s-callback-reason", - "--customer-name=s-customer-name", - "--end-time=s-end-time", - "--queue-id=s-queue-id", - "--schedule-date=s-schedule-date", - "--source-interaction=s-source-interaction", - "--start-time=s-start-time", - "--timezone=s-timezone" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/callbacks/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/scheduled-callback", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"assigneeAgent\":\"s-assignee-agent\",\"callbackNumber\":\"s-callback-number\",\"callbackReason\":\"s-callback-reason\",\"customerName\":\"s-customer-name\",\"endTime\":\"s-end-time\",\"queueId\":\"s-queue-id\",\"scheduleDate\":\"s-schedule-date\",\"sourceInteraction\":\"s-source-interaction\",\"startTime\":\"s-start-time\",\"timezone\":\"s-timezone\"}" - } - ] - }, - { - "command": "cc callbacks schedule", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/callbacks/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/scheduled-callback", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc callbacks schedule", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/callbacks/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/scheduled-callback", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc callbacks update-scheduled-id", - "variant": "all-flags", - "args": [ - "--assignee-agent=s-assignee-agent", - "--callback-number=s-callback-number", - "--callback-reason=s-callback-reason", - "--customer-name=s-customer-name", - "--end-time=s-end-time", - "--id=s-id", - "--queue-id=s-queue-id", - "--schedule-date=s-schedule-date", - "--source-interaction=s-source-interaction", - "--start-time=s-start-time", - "--timezone=s-timezone" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/v1/callbacks/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/scheduled-callback/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"assigneeAgent\":\"s-assignee-agent\",\"callbackNumber\":\"s-callback-number\",\"callbackReason\":\"s-callback-reason\",\"customerName\":\"s-customer-name\",\"endTime\":\"s-end-time\",\"id\":\"s-id\",\"queueId\":\"s-queue-id\",\"scheduleDate\":\"s-schedule-date\",\"sourceInteraction\":\"s-source-interaction\",\"startTime\":\"s-start-time\",\"timezone\":\"s-timezone\"}" - } - ] - }, - { - "command": "cc callbacks update-scheduled-id", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/v1/callbacks/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/scheduled-callback/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"id\":\"s-id\"}" - } - ] - }, - { - "command": "cc callbacks update-scheduled-id", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/v1/callbacks/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/scheduled-callback/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc campaign-group list", - "variant": "all-flags", - "args": [ - "--campaign-group-name=s-campaign-group-name", - "--campaign-status=s-campaign-status", - "--page=s-page", - "--page-size=s-page-size" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v3/campaign-management/campaign-groups/s-campaign-group-name/campaigns?campaignStatus=s-campaign-status&page=s-page&pageSize=s-page-size", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc campaign-group list", - "variant": "required", - "args": [ - "--campaign-group-name=s-campaign-group-name" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v3/campaign-management/campaign-groups/s-campaign-group-name/campaigns", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc campaign-group list", - "variant": "paginate", - "args": [ - "--campaign-group-name=s-campaign-group-name", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v3/campaign-management/campaign-groups/s-campaign-group-name/campaigns?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc campaign-manager get-valid-times", - "variant": "all-flags", - "args": [ - "--agent-id=s-agent-id", - "--campaign-id=s-campaign-id", - "--interaction-id=s-interaction-id", - "--tracking-id=s-tracking-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/getValidCampaignTimes?agentId=s-agent-id&campaignId=s-campaign-id&interactionId=s-interaction-id&trackingId=s-tracking-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc campaign-manager get-valid-times", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/getValidCampaignTimes", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc campaign-manager get-valid-times", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/getValidCampaignTimes", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc campaign-manager start-request", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/dialer/campaign", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc campaign-manager start-request", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/dialer/campaign", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc campaign-manager start-request", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/dialer/campaign", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc campaign-manager stop-request", - "variant": "all-flags", - "args": [ - "--campaign-id=s-campaign-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/v1/dialer/campaign/s-campaign-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc campaign-manager stop-request", - "variant": "required", - "args": [ - "--campaign-id=s-campaign-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/v1/dialer/campaign/s-campaign-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc campaign-manager update-request", - "variant": "all-flags", - "args": [ - "--campaign-id=s-campaign-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/v1/dialer/campaign/s-campaign-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc campaign-manager update-request", - "variant": "required", - "args": [ - "--campaign-id=s-campaign-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/v1/dialer/campaign/s-campaign-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc campaign-manager update-request", - "variant": "body", - "args": [ - "--campaign-id=s-campaign-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/v1/dialer/campaign/s-campaign-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc captures list", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/captures/query", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc captures list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/captures/query", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc captures list", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/captures/query", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc channel bulk-save", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/channel/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc channel bulk-save", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/channel/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc channel bulk-save", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/channel/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc channel create", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/channel", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc channel create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/channel", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc channel create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/channel", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc channel delete", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/channel/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc channel delete", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/channel/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc channel get", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--include-logo-url-versioned=s-include-logo-url-versioned" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/channel/s-id?includeLogoUrlVersioned=s-include-logo-url-versioned", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc channel get", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/channel/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc channel get", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/channel/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc channel list", - "variant": "all-flags", - "args": [ - "--attributes=s-attributes", - "--filter=s-filter", - "--include-count=s-include-count", - "--include-logo-url-versioned=s-include-logo-url-versioned", - "--page=s-page", - "--page-size=s-page-size", - "--search=s-search", - "--single-object-response=s-single-object-response", - "--sort=s-sort" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/channel?attributes=s-attributes&filter=s-filter&includeCount=s-include-count&includeLogoUrlVersioned=s-include-logo-url-versioned&page=s-page&pageSize=s-page-size&search=s-search&singleObjectResponse=s-single-object-response&sort=s-sort", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc channel list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/channel", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc channel list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/channel?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc channel list-references", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--page=s-page", - "--page-size=s-page-size", - "--type=s-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/channel/s-id/incoming-references?page=s-page&pageSize=s-page-size&type=s-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc channel list-references", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/channel/s-id/incoming-references", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc channel list-references", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/channel/s-id/incoming-references?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc channel patch", - "variant": "all-flags", - "args": [ - "--description=s-description", - "--id=s-id", - "--logo-icon-name=s-logo-icon-name", - "--logo-type=s-logo-type" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/channel/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"description\":\"s-description\",\"logoIconName\":\"s-logo-icon-name\",\"logoType\":\"s-logo-type\"}" - } - ] - }, - { - "command": "cc channel patch", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/channel/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc channel patch", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/channel/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc channel update", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/channel/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc channel update", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/channel/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-list-management create", - "variant": "all-flags", - "args": [ - "--activation-date-time=s-activation-date-time", - "--activation-time-lag-minutes=7", - "--campaign-id=s-campaign-id", - "--supported-channels=s-supported-channels-1,s-supported-channels-2" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v3/campaign-management/campaigns/s-campaign-id/contact-list", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"activationDateTime\":\"s-activation-date-time\",\"activationTimeLagMinutes\":7,\"supportedChannels\":[\"s-supported-channels-1\",\"s-supported-channels-2\"]}" - } - ] - }, - { - "command": "cc contact-list-management create", - "variant": "required", - "args": [ - "--campaign-id=s-campaign-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v3/campaign-management/campaigns/s-campaign-id/contact-list", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-list-management create", - "variant": "body", - "args": [ - "--campaign-id=s-campaign-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v3/campaign-management/campaigns/s-campaign-id/contact-list", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc contact-list-management create-within", - "variant": "all-flags", - "args": [ - "--campaign-id=s-campaign-id", - "--contact-list-id=s-contact-list-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v3/campaign-management/campaigns/s-campaign-id/contact-list/s-contact-list-id/contacts", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-list-management create-within", - "variant": "required", - "args": [ - "--campaign-id=s-campaign-id", - "--contact-list-id=s-contact-list-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v3/campaign-management/campaigns/s-campaign-id/contact-list/s-contact-list-id/contacts", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-list-management create-within", - "variant": "body", - "args": [ - "--campaign-id=s-campaign-id", - "--contact-list-id=s-contact-list-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v3/campaign-management/campaigns/s-campaign-id/contact-list/s-contact-list-id/contacts", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc contact-list-management get-within-campaign", - "variant": "all-flags", - "args": [ - "--campaign-id=s-campaign-id", - "--source=s-source", - "--status=s-status" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v4/campaign-management/campaigns/s-campaign-id/contact-lists?source=s-source&status=s-status", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-list-management get-within-campaign", - "variant": "required", - "args": [ - "--campaign-id=s-campaign-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v4/campaign-management/campaigns/s-campaign-id/contact-lists", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-list-management get-within-campaign", - "variant": "paginate", - "args": [ - "--campaign-id=s-campaign-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v4/campaign-management/campaigns/s-campaign-id/contact-lists", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-list-management update-status", - "variant": "all-flags", - "args": [ - "--campaign-id=s-campaign-id", - "--contact-list-id=s-contact-list-id", - "--contact-list-status=s-contact-list-status" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/v3/campaign-management/campaigns/s-campaign-id/contact-list/s-contact-list-id/status", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"contactListStatus\":\"s-contact-list-status\"}" - } - ] - }, - { - "command": "cc contact-list-management update-status", - "variant": "required", - "args": [ - "--campaign-id=s-campaign-id", - "--contact-list-id=s-contact-list-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/v3/campaign-management/campaigns/s-campaign-id/contact-list/s-contact-list-id/status", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-list-management update-status", - "variant": "body", - "args": [ - "--campaign-id=s-campaign-id", - "--contact-list-id=s-contact-list-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/v3/campaign-management/campaigns/s-campaign-id/contact-list/s-contact-list-id/status", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc contact-list-management update-status-across-campaign-chain", - "variant": "all-flags", - "args": [ - "--campaign-id=s-campaign-id", - "--contact-id=s-contact-id", - "--contact-list-id=s-contact-list-id", - "--contact-status=s-contact-status", - "--fields=s-fields", - "--search-across-the-campaign-chain=s-search-across-the-campaign-chain" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/v3/campaign-management/campaigns/s-campaign-id/contacts/s-contact-id?contactListId=s-contact-list-id&fields=s-fields", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"contactStatus\":\"s-contact-status\",\"searchAcrossTheCampaignChain\":\"s-search-across-the-campaign-chain\"}" - } - ] - }, - { - "command": "cc contact-list-management update-status-across-campaign-chain", - "variant": "required", - "args": [ - "--campaign-id=s-campaign-id", - "--contact-id=s-contact-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/v3/campaign-management/campaigns/s-campaign-id/contacts/s-contact-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-list-management update-status-across-campaign-chain", - "variant": "body", - "args": [ - "--campaign-id=s-campaign-id", - "--contact-id=s-contact-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/v3/campaign-management/campaigns/s-campaign-id/contacts/s-contact-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc contact-list-management update-status-within", - "variant": "all-flags", - "args": [ - "--campaign-id=s-campaign-id", - "--contact-id=s-contact-id", - "--contact-list-id=s-contact-list-id", - "--contact-status=s-contact-status" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/v3/campaign-management/campaigns/s-campaign-id/contact-list/s-contact-list-id/contacts/s-contact-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"contactStatus\":\"s-contact-status\"}" - } - ] - }, - { - "command": "cc contact-list-management update-status-within", - "variant": "required", - "args": [ - "--campaign-id=s-campaign-id", - "--contact-id=s-contact-id", - "--contact-list-id=s-contact-list-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/v3/campaign-management/campaigns/s-campaign-id/contact-list/s-contact-list-id/contacts/s-contact-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-list-management update-status-within", - "variant": "body", - "args": [ - "--campaign-id=s-campaign-id", - "--contact-id=s-contact-id", - "--contact-list-id=s-contact-list-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/v3/campaign-management/campaigns/s-campaign-id/contact-list/s-contact-list-id/contacts/s-contact-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc contact-number bulk-export", - "variant": "all-flags", - "args": [ - "--page=s-page", - "--page-size=s-page-size" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-number/bulk-export?page=s-page&pageSize=s-page-size", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-number bulk-export", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-number/bulk-export", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-number bulk-export", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-number/bulk-export?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-number bulk-save", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-number/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-number bulk-save", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-number/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-number bulk-save", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-number/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc contact-number create", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--number=s-number", - "--organization-id=s-organization-id", - "--version=7" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-number", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"id\":\"s-id\",\"number\":\"s-number\",\"organizationId\":\"s-organization-id\",\"version\":7}" - } - ] - }, - { - "command": "cc contact-number create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-number", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-number create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-number", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc contact-number delete", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-number/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-number delete", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-number/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-number get", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-number/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-number get", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-number/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-number get", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-number/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-number list", - "variant": "all-flags", - "args": [ - "--attributes=s-attributes", - "--filter=s-filter", - "--page=s-page", - "--page-size=s-page-size", - "--search=s-search" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/contact-number?attributes=s-attributes&filter=s-filter&page=s-page&pageSize=s-page-size&search=s-search", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-number list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/contact-number", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-number list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/contact-number?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-number list-all", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-number/all-numbers", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-number list-all", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-number/all-numbers", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-number list-all", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-number/all-numbers?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-number update", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--number=s-number", - "--organization-id=s-organization-id", - "--version=7" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-number/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"id\":\"s-id\",\"number\":\"s-number\",\"organizationId\":\"s-organization-id\",\"version\":7}" - } - ] - }, - { - "command": "cc contact-number update", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-number/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"id\":\"s-id\"}" - } - ] - }, - { - "command": "cc contact-number update", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-number/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc contact-service-queue bulk-export", - "variant": "all-flags", - "args": [ - "--page=s-page", - "--page-size=s-page-size", - "--type=s-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-service-queue/bulk-export?page=s-page&pageSize=s-page-size&type=s-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue bulk-export", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-service-queue/bulk-export", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue bulk-export", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-service-queue/bulk-export?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue bulk-partial-update", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-service-queue/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue bulk-partial-update", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-service-queue/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue bulk-partial-update", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-service-queue/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc contact-service-queue bulk-save", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-service-queue/v2/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue bulk-save", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-service-queue/v2/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue bulk-save", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-service-queue/v2/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc contact-service-queue create", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/contact-service-queue", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/contact-service-queue", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/contact-service-queue", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc contact-service-queue create-remove-agents-users-agent", - "variant": "all-flags", - "args": [ - "--add=s-add-1,s-add-2", - "--id=s-id", - "--remove=s-remove-1,s-remove-2" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/contact-service-queue/s-id/reassign-agents", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"add\":[\"s-add-1\",\"s-add-2\"],\"remove\":[\"s-remove-1\",\"s-remove-2\"]}" - } - ] - }, - { - "command": "cc contact-service-queue create-remove-agents-users-agent", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/contact-service-queue/s-id/reassign-agents", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue create-remove-agents-users-agent", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/contact-service-queue/s-id/reassign-agents", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc contact-service-queue delete", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-service-queue/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue delete", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-service-queue/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue delete-references", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-service-queue/delete-reference", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue delete-references", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-service-queue/delete-reference", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue delete-references", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-service-queue/delete-reference", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc contact-service-queue get", - "variant": "all-flags", - "args": [ - "--agents-updated-info=s-agents-updated-info", - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/contact-service-queue/s-id?agentsUpdatedInfo=s-agents-updated-info", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue get", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/contact-service-queue/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue get", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/contact-service-queue/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue list", - "variant": "all-flags", - "args": [ - "--attributes=s-attributes", - "--desktop-profile-filter=s-desktop-profile-filter", - "--filter=s-filter", - "--page=s-page", - "--page-size=s-page-size", - "--provisioning-view=s-provisioning-view", - "--search=s-search", - "--single-object-response=s-single-object-response" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v3/contact-service-queue?attributes=s-attributes&desktopProfileFilter=s-desktop-profile-filter&filter=s-filter&page=s-page&pageSize=s-page-size&provisioningView=s-provisioning-view&search=s-search&singleObjectResponse=s-single-object-response", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v3/contact-service-queue", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v3/contact-service-queue?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue list-agent-based", - "variant": "all-flags", - "args": [ - "--page=s-page", - "--page-size=s-page-size", - "--search=s-search", - "--userid=s-userid" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/contact-service-queue/by-user-id/s-userid/agent-based-queues?page=s-page&pageSize=s-page-size&search=s-search", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue list-agent-based", - "variant": "required", - "args": [ - "--userid=s-userid" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/contact-service-queue/by-user-id/s-userid/agent-based-queues", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue list-agent-based", - "variant": "paginate", - "args": [ - "--userid=s-userid", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/contact-service-queue/by-user-id/s-userid/agent-based-queues?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue list-agent-csqs-ci-user-id", - "variant": "all-flags", - "args": [ - "--ci-user-id=s-ci-user-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-service-queue/by-user-ci-id/s-ci-user-id/internal", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue list-agent-csqs-ci-user-id", - "variant": "required", - "args": [ - "--ci-user-id=s-ci-user-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-service-queue/by-user-ci-id/s-ci-user-id/internal", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue list-agent-csqs-ci-user-id", - "variant": "paginate", - "args": [ - "--ci-user-id=s-ci-user-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-service-queue/by-user-ci-id/s-ci-user-id/internal?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue list-by-dynamic-skills", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-service-queue/fetch-by-dynamic-skills-and-skillProfile", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue list-by-dynamic-skills", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-service-queue/fetch-by-dynamic-skills-and-skillProfile", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue list-by-dynamic-skills", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-service-queue/fetch-by-dynamic-skills-and-skillProfile", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc contact-service-queue list-by-skill-profile", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-service-queue/by-skill-profile-id/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue list-by-skill-profile", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-service-queue/by-skill-profile-id/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue list-by-skill-profile", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-service-queue/by-skill-profile-id/s-id?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue list-by-user-skill-profile", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-service-queue/fetch-by-userId-skillProfileId", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue list-by-user-skill-profile", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-service-queue/fetch-by-userId-skillProfileId", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue list-by-user-skill-profile", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-service-queue/fetch-by-userId-skillProfileId", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc contact-service-queue list-internal-skill-csqs-profile", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-service-queue/by-skill-profile-id/s-id/internal", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue list-internal-skill-csqs-profile", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-service-queue/by-skill-profile-id/s-id/internal", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue list-internal-skill-csqs-profile", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-service-queue/by-skill-profile-id/s-id/internal?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue list-manually-assignable", - "variant": "all-flags", - "args": [ - "--agent-id=s-agent-id", - "--team-id=s-team-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-service-queue/fetch-manually-assignable-queues", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"agentId\":\"s-agent-id\",\"teamId\":\"s-team-id\"}" - } - ] - }, - { - "command": "cc contact-service-queue list-manually-assignable", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-service-queue/fetch-manually-assignable-queues", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue list-manually-assignable", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-service-queue/fetch-manually-assignable-queues", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc contact-service-queue list-mapping-summary-grouped-assistant-skill", - "variant": "all-flags", - "args": [ - "--assistant-skill-ids=s-assistant-skill-ids-1,s-assistant-skill-ids-2", - "--page=s-page", - "--page-size=s-page-size" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/contact-service-queue/fetch-by-grouped-assistant-skill?page=s-page&pageSize=s-page-size", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"assistantSkillIds\":[\"s-assistant-skill-ids-1\",\"s-assistant-skill-ids-2\"]}" - } - ] - }, - { - "command": "cc contact-service-queue list-mapping-summary-grouped-assistant-skill", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/contact-service-queue/fetch-by-grouped-assistant-skill", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue list-mapping-summary-grouped-assistant-skill", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/contact-service-queue/fetch-by-grouped-assistant-skill", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc contact-service-queue list-references", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--page=s-page", - "--page-size=s-page-size", - "--type=s-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-service-queue/s-id/incoming-references?page=s-page&pageSize=s-page-size&type=s-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue list-references", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-service-queue/s-id/incoming-references", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue list-references", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-service-queue/s-id/incoming-references?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue list-skill-based", - "variant": "all-flags", - "args": [ - "--page=s-page", - "--page-size=s-page-size", - "--search=s-search", - "--userid=s-userid" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/contact-service-queue/by-user-id/s-userid/skill-based-queues?page=s-page&pageSize=s-page-size&search=s-search", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue list-skill-based", - "variant": "required", - "args": [ - "--userid=s-userid" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/contact-service-queue/by-user-id/s-userid/skill-based-queues", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue list-skill-based", - "variant": "paginate", - "args": [ - "--userid=s-userid", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/contact-service-queue/by-user-id/s-userid/skill-based-queues?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue list-skill-csqs-ci-user-id", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-service-queue/skill-based-queues/by-ci-user-id/s-id/internal", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue list-skill-csqs-ci-user-id", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-service-queue/skill-based-queues/by-ci-user-id/s-id/internal", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue list-skill-csqs-ci-user-id", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-service-queue/skill-based-queues/by-ci-user-id/s-id/internal?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue list-team-based", - "variant": "all-flags", - "args": [ - "--page=s-page", - "--page-size=s-page-size", - "--search=s-search", - "--userid=s-userid" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/contact-service-queue/by-user-id/s-userid/team-based-queues?page=s-page&pageSize=s-page-size&search=s-search", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue list-team-based", - "variant": "required", - "args": [ - "--userid=s-userid" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/contact-service-queue/by-user-id/s-userid/team-based-queues", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue list-team-based", - "variant": "paginate", - "args": [ - "--userid=s-userid", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/contact-service-queue/by-user-id/s-userid/team-based-queues?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue list-team-csqs-team-id", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-service-queue/by-team-id/s-id/internal", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue list-team-csqs-team-id", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-service-queue/by-team-id/s-id/internal", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue list-team-csqs-team-id", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-service-queue/by-team-id/s-id/internal?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue list-v2", - "variant": "all-flags", - "args": [ - "--page=s-page", - "--page-size=s-page-size" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/contact-service-queue?page=s-page&pageSize=s-page-size", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue list-v2", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/contact-service-queue", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue list-v2", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/contact-service-queue?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue purge-inactive", - "variant": "all-flags", - "args": [ - "--next-start-id=s-next-start-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-service-queue/purge-inactive-entities?nextStartId=s-next-start-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue purge-inactive", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/contact-service-queue/purge-inactive-entities", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue update", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/contact-service-queue/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue update", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/contact-service-queue/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc contact-service-queue update", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/contact-service-queue/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc data-sources delete", - "variant": "all-flags", - "args": [ - "--data-source-id=s-data-source-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/dataSources/s-data-source-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc data-sources delete", - "variant": "required", - "args": [ - "--data-source-id=s-data-source-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/dataSources/s-data-source-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc data-sources get", - "variant": "all-flags", - "args": [ - "--data-source-id=s-data-source-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/dataSources/s-data-source-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc data-sources get", - "variant": "required", - "args": [ - "--data-source-id=s-data-source-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/dataSources/s-data-source-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc data-sources get", - "variant": "paginate", - "args": [ - "--data-source-id=s-data-source-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/dataSources/s-data-source-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc data-sources get-all", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/dataSources", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc data-sources get-all", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/dataSources", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc data-sources get-all", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/dataSources", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc data-sources get-schema", - "variant": "all-flags", - "args": [ - "--schema-id=s-schema-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/dataSources/schemas/s-schema-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc data-sources get-schema", - "variant": "required", - "args": [ - "--schema-id=s-schema-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/dataSources/schemas/s-schema-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc data-sources get-schema", - "variant": "paginate", - "args": [ - "--schema-id=s-schema-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/dataSources/schemas/s-schema-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc data-sources get-schemas", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/dataSources/schemas", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc data-sources get-schemas", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/dataSources/schemas", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc data-sources get-schemas", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/dataSources/schemas", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc data-sources register", - "variant": "all-flags", - "args": [ - "--audience=s-audience", - "--nonce=s-nonce", - "--schema-id=s-schema-id", - "--subject=s-subject", - "--token-lifetime-minutes=7", - "--url=s-url" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/dataSources", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"audience\":\"s-audience\",\"nonce\":\"s-nonce\",\"schemaId\":\"s-schema-id\",\"subject\":\"s-subject\",\"tokenLifetimeMinutes\":7,\"url\":\"s-url\"}" - } - ] - }, - { - "command": "cc data-sources register", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/dataSources", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc data-sources register", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/dataSources", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc data-sources update", - "variant": "all-flags", - "args": [ - "--audience=s-audience", - "--data-source-id=s-data-source-id", - "--error-message=s-error-message", - "--nonce=s-nonce", - "--schema-id=s-schema-id", - "--status=s-status", - "--subject=s-subject", - "--token-lifetime-minutes=7", - "--url=s-url" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/dataSources/s-data-source-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"audience\":\"s-audience\",\"errorMessage\":\"s-error-message\",\"nonce\":\"s-nonce\",\"schemaId\":\"s-schema-id\",\"status\":\"s-status\",\"subject\":\"s-subject\",\"tokenLifetimeMinutes\":7,\"url\":\"s-url\"}" - } - ] - }, - { - "command": "cc data-sources update", - "variant": "required", - "args": [ - "--data-source-id=s-data-source-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/dataSources/s-data-source-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc data-sources update", - "variant": "body", - "args": [ - "--data-source-id=s-data-source-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/dataSources/s-data-source-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc desktop-layout bulk-export", - "variant": "all-flags", - "args": [ - "--page=s-page", - "--page-size=s-page-size" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/desktop-layout/bulk-export?page=s-page&pageSize=s-page-size", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc desktop-layout bulk-export", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/desktop-layout/bulk-export", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc desktop-layout bulk-export", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/desktop-layout/bulk-export?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc desktop-layout bulk-save", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/desktop-layout/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc desktop-layout bulk-save", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/desktop-layout/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc desktop-layout bulk-save", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/desktop-layout/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc desktop-layout create", - "variant": "all-flags", - "args": [ - "--created-time=7", - "--default-json-modified=true", - "--default-json-modified-time=7", - "--description=s-description", - "--edited-by=s-edited-by", - "--global=true", - "--id=s-id", - "--json-file-content=s-json-file-content", - "--json-file-name=s-json-file-name", - "--last-updated-time=7", - "--modified-time=7", - "--name=s-name", - "--organization-id=s-organization-id", - "--status=true", - "--system-default=true", - "--team-ids=s-team-ids-1,s-team-ids-2", - "--validated=true", - "--validated-time=7", - "--version=7" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/desktop-layout", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"createdTime\":7,\"defaultJsonModified\":true,\"defaultJsonModifiedTime\":7,\"description\":\"s-description\",\"editedBy\":\"s-edited-by\",\"global\":true,\"id\":\"s-id\",\"jsonFileContent\":\"s-json-file-content\",\"jsonFileName\":\"s-json-file-name\",\"lastUpdatedTime\":7,\"modifiedTime\":7,\"name\":\"s-name\",\"organizationId\":\"s-organization-id\",\"status\":true,\"systemDefault\":true,\"teamIds\":[\"s-team-ids-1\",\"s-team-ids-2\"],\"validated\":true,\"validatedTime\":7,\"version\":7}" - } - ] - }, - { - "command": "cc desktop-layout create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/desktop-layout", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc desktop-layout create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/desktop-layout", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc desktop-layout delete", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/desktop-layout/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc desktop-layout delete", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/desktop-layout/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc desktop-layout get", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/desktop-layout/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc desktop-layout get", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/desktop-layout/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc desktop-layout get", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/desktop-layout/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc desktop-layout list", - "variant": "all-flags", - "args": [ - "--attributes=s-attributes", - "--filter=s-filter", - "--page=s-page", - "--page-size=s-page-size", - "--provisioning-view=s-provisioning-view", - "--search=s-search", - "--single-object-response=s-single-object-response" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/desktop-layout?attributes=s-attributes&filter=s-filter&page=s-page&pageSize=s-page-size&provisioningView=s-provisioning-view&search=s-search&singleObjectResponse=s-single-object-response", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc desktop-layout list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/desktop-layout", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc desktop-layout list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/desktop-layout?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc desktop-layout list-references", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--page=s-page", - "--page-size=s-page-size", - "--type=s-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/desktop-layout/s-id/incoming-references?page=s-page&pageSize=s-page-size&type=s-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc desktop-layout list-references", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/desktop-layout/s-id/incoming-references", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc desktop-layout list-references", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/desktop-layout/s-id/incoming-references?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc desktop-layout purge-inactive", - "variant": "all-flags", - "args": [ - "--next-start-id=s-next-start-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/desktop-layout/purge-inactive-entities?nextStartId=s-next-start-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc desktop-layout purge-inactive", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/desktop-layout/purge-inactive-entities", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc desktop-layout update", - "variant": "all-flags", - "args": [ - "--created-time=7", - "--default-json-modified=true", - "--default-json-modified-time=7", - "--description=s-description", - "--edited-by=s-edited-by", - "--global=true", - "--id=s-id", - "--json-file-content=s-json-file-content", - "--json-file-name=s-json-file-name", - "--last-updated-time=7", - "--modified-time=7", - "--name=s-name", - "--organization-id=s-organization-id", - "--status=true", - "--system-default=true", - "--team-ids=s-team-ids-1,s-team-ids-2", - "--validated=true", - "--validated-time=7", - "--version=7" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/desktop-layout/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"createdTime\":7,\"defaultJsonModified\":true,\"defaultJsonModifiedTime\":7,\"description\":\"s-description\",\"editedBy\":\"s-edited-by\",\"global\":true,\"id\":\"s-id\",\"jsonFileContent\":\"s-json-file-content\",\"jsonFileName\":\"s-json-file-name\",\"lastUpdatedTime\":7,\"modifiedTime\":7,\"name\":\"s-name\",\"organizationId\":\"s-organization-id\",\"status\":true,\"systemDefault\":true,\"teamIds\":[\"s-team-ids-1\",\"s-team-ids-2\"],\"validated\":true,\"validatedTime\":7,\"version\":7}" - } - ] - }, - { - "command": "cc desktop-layout update", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/desktop-layout/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"id\":\"s-id\"}" - } - ] - }, - { - "command": "cc desktop-layout update", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/desktop-layout/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc desktop-profile bulk-export", - "variant": "all-flags", - "args": [ - "--page=s-page", - "--page-size=s-page-size" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/agent-profile/bulk-export?page=s-page&pageSize=s-page-size", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc desktop-profile bulk-export", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/agent-profile/bulk-export", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc desktop-profile bulk-export", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/agent-profile/bulk-export?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc desktop-profile bulk-save", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/agent-profile/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc desktop-profile bulk-save", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/agent-profile/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc desktop-profile bulk-save", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/agent-profile/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc desktop-profile create", - "variant": "all-flags", - "args": [ - "--access-buddy-team=s-access-buddy-team", - "--access-entry-point=s-access-entry-point", - "--access-idle-code=s-access-idle-code", - "--access-queue=s-access-queue", - "--access-wrap-up-code=s-access-wrap-up-code", - "--active=s-active", - "--address-book-id=s-address-book-id", - "--agent-available-after-outdial=s-agent-available-after-outdial", - "--agent-dnvalidation=s-agent-dnvalidation", - "--agent-dnvalidation-criteria=s-agent-dnvalidation-criteria", - "--agent-dnvalidation-criterions=s-agent-dnvalidation-criterions", - "--agent-personal-greeting=s-agent-personal-greeting", - "--allow-auto-wrap-up-extension=s-allow-auto-wrap-up-extension", - "--auto-accept-digital-interactions=s-auto-accept-digital-interactions", - "--auto-answer=s-auto-answer", - "--auto-wrap-after-seconds=s-auto-wrap-after-seconds", - "--auto-wrap-up=s-auto-wrap-up", - "--buddy-teams=s-buddy-teams", - "--consult-to-queue=s-consult-to-queue", - "--created-time=s-created-time", - "--description=s-description", - "--dial-plan-enabled=s-dial-plan-enabled", - "--dial-plans=s-dial-plans", - "--entry-points=s-entry-points", - "--id=s-id", - "--idle-codes=s-idle-codes", - "--last-agent-routing=s-last-agent-routing", - "--last-updated-time=s-last-updated-time", - "--login-voice-options=s-login-voice-options", - "--manage-channel-availability=s-manage-channel-availability", - "--name=s-name", - "--organization-id=s-organization-id", - "--outdial-aniid=s-outdial-aniid", - "--outdial-enabled=s-outdial-enabled", - "--outdial-entry-point-id=s-outdial-entry-point-id", - "--parent-type=s-parent-type", - "--queues=s-queues", - "--schedule-and-manage-call-back=s-schedule-and-manage-call-back", - "--screen-popup=s-screen-popup", - "--show-user-details-ms=s-show-user-details-ms", - "--show-user-details-webex=s-show-user-details-webex", - "--site-id=s-site-id", - "--state-synchronization-ms=s-state-synchronization-ms", - "--state-synchronization-webex=s-state-synchronization-webex", - "--system-default=s-system-default", - "--threshold-rules=s-threshold-rules", - "--timeout-desktop-inactivity-custom-enabled=s-timeout-desktop-inactivity-custom-enabled", - "--timeout-desktop-inactivity-mins=s-timeout-desktop-inactivity-mins", - "--version=s-version", - "--viewable-statistics=s-viewable-statistics", - "--wrap-up-codes=s-wrap-up-codes" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/agent-profile?accessBuddyTeam=s-access-buddy-team&accessEntryPoint=s-access-entry-point&accessIdleCode=s-access-idle-code&accessQueue=s-access-queue&accessWrapUpCode=s-access-wrap-up-code&active=s-active&addressBookId=s-address-book-id&agentAvailableAfterOutdial=s-agent-available-after-outdial&agentDNValidation=s-agent-dnvalidation&agentDNValidationCriteria=s-agent-dnvalidation-criteria&agentDNValidationCriterions=s-agent-dnvalidation-criterions&agentPersonalGreeting=s-agent-personal-greeting&allowAutoWrapUpExtension=s-allow-auto-wrap-up-extension&autoAcceptDigitalInteractions=s-auto-accept-digital-interactions&autoAnswer=s-auto-answer&autoWrapAfterSeconds=s-auto-wrap-after-seconds&autoWrapUp=s-auto-wrap-up&buddyTeams=s-buddy-teams&consultToQueue=s-consult-to-queue&createdTime=s-created-time&description=s-description&dialPlanEnabled=s-dial-plan-enabled&dialPlans=s-dial-plans&entryPoints=s-entry-points&id=s-id&idleCodes=s-idle-codes&lastAgentRouting=s-last-agent-routing&lastUpdatedTime=s-last-updated-time&loginVoiceOptions=s-login-voice-options&manageChannelAvailability=s-manage-channel-availability&name=s-name&organizationId=s-organization-id&outdialANIId=s-outdial-aniid&outdialEnabled=s-outdial-enabled&outdialEntryPointId=s-outdial-entry-point-id&parentType=s-parent-type&queues=s-queues&scheduleAndManageCallBack=s-schedule-and-manage-call-back&screenPopup=s-screen-popup&showUserDetailsMS=s-show-user-details-ms&showUserDetailsWebex=s-show-user-details-webex&siteId=s-site-id&stateSynchronizationMS=s-state-synchronization-ms&stateSynchronizationWebex=s-state-synchronization-webex&systemDefault=s-system-default&thresholdRules=s-threshold-rules&timeoutDesktopInactivityCustomEnabled=s-timeout-desktop-inactivity-custom-enabled&timeoutDesktopInactivityMins=s-timeout-desktop-inactivity-mins&version=s-version&viewableStatistics=s-viewable-statistics&wrapUpCodes=s-wrap-up-codes", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc desktop-profile create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/agent-profile", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc desktop-profile create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/agent-profile", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc desktop-profile delete", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/agent-profile/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc desktop-profile delete", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/agent-profile/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc desktop-profile get", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/agent-profile/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc desktop-profile get", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/agent-profile/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc desktop-profile get", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/agent-profile/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc desktop-profile list", - "variant": "all-flags", - "args": [ - "--attributes=s-attributes", - "--filter=s-filter", - "--page=s-page", - "--page-size=s-page-size", - "--provisioning-view=s-provisioning-view", - "--search=s-search", - "--single-object-response=s-single-object-response" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/agent-profile?attributes=s-attributes&filter=s-filter&page=s-page&pageSize=s-page-size&provisioningView=s-provisioning-view&search=s-search&singleObjectResponse=s-single-object-response", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc desktop-profile list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/agent-profile", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc desktop-profile list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/agent-profile?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc desktop-profile list-references", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--page=s-page", - "--page-size=s-page-size", - "--type=s-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/agent-profile/s-id/incoming-references?page=s-page&pageSize=s-page-size&type=s-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc desktop-profile list-references", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/agent-profile/s-id/incoming-references", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc desktop-profile list-references", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/agent-profile/s-id/incoming-references?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc desktop-profile purge-inactive", - "variant": "all-flags", - "args": [ - "--next-start-id=s-next-start-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/agent-profile/purge-inactive-entities?nextStartId=s-next-start-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc desktop-profile purge-inactive", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/agent-profile/purge-inactive-entities", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc desktop-profile update", - "variant": "all-flags", - "args": [ - "--access-buddy-team=s-access-buddy-team", - "--access-entry-point=s-access-entry-point", - "--access-idle-code=s-access-idle-code", - "--access-queue=s-access-queue", - "--access-wrap-up-code=s-access-wrap-up-code", - "--active=s-active", - "--address-book-id=s-address-book-id", - "--agent-available-after-outdial=s-agent-available-after-outdial", - "--agent-dnvalidation=s-agent-dnvalidation", - "--agent-dnvalidation-criteria=s-agent-dnvalidation-criteria", - "--agent-dnvalidation-criterions=s-agent-dnvalidation-criterions", - "--agent-personal-greeting=s-agent-personal-greeting", - "--allow-auto-wrap-up-extension=s-allow-auto-wrap-up-extension", - "--auto-accept-digital-interactions=s-auto-accept-digital-interactions", - "--auto-answer=s-auto-answer", - "--auto-wrap-after-seconds=s-auto-wrap-after-seconds", - "--auto-wrap-up=s-auto-wrap-up", - "--buddy-teams=s-buddy-teams", - "--consult-to-queue=s-consult-to-queue", - "--created-time=s-created-time", - "--description=s-description", - "--dial-plan-enabled=s-dial-plan-enabled", - "--dial-plans=s-dial-plans", - "--entry-points=s-entry-points", - "--id=s-id", - "--idle-codes=s-idle-codes", - "--last-agent-routing=s-last-agent-routing", - "--last-updated-time=s-last-updated-time", - "--login-voice-options=s-login-voice-options", - "--manage-channel-availability=s-manage-channel-availability", - "--name=s-name", - "--organization-id=s-organization-id", - "--outdial-aniid=s-outdial-aniid", - "--outdial-enabled=s-outdial-enabled", - "--outdial-entry-point-id=s-outdial-entry-point-id", - "--parent-type=s-parent-type", - "--queues=s-queues", - "--schedule-and-manage-call-back=s-schedule-and-manage-call-back", - "--screen-popup=s-screen-popup", - "--show-user-details-ms=s-show-user-details-ms", - "--show-user-details-webex=s-show-user-details-webex", - "--site-id=s-site-id", - "--state-synchronization-ms=s-state-synchronization-ms", - "--state-synchronization-webex=s-state-synchronization-webex", - "--system-default=s-system-default", - "--threshold-rules=s-threshold-rules", - "--timeout-desktop-inactivity-custom-enabled=s-timeout-desktop-inactivity-custom-enabled", - "--timeout-desktop-inactivity-mins=s-timeout-desktop-inactivity-mins", - "--version=s-version", - "--viewable-statistics=s-viewable-statistics", - "--wrap-up-codes=s-wrap-up-codes" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/agent-profile/s-id?accessBuddyTeam=s-access-buddy-team&accessEntryPoint=s-access-entry-point&accessIdleCode=s-access-idle-code&accessQueue=s-access-queue&accessWrapUpCode=s-access-wrap-up-code&active=s-active&addressBookId=s-address-book-id&agentAvailableAfterOutdial=s-agent-available-after-outdial&agentDNValidation=s-agent-dnvalidation&agentDNValidationCriteria=s-agent-dnvalidation-criteria&agentDNValidationCriterions=s-agent-dnvalidation-criterions&agentPersonalGreeting=s-agent-personal-greeting&allowAutoWrapUpExtension=s-allow-auto-wrap-up-extension&autoAcceptDigitalInteractions=s-auto-accept-digital-interactions&autoAnswer=s-auto-answer&autoWrapAfterSeconds=s-auto-wrap-after-seconds&autoWrapUp=s-auto-wrap-up&buddyTeams=s-buddy-teams&consultToQueue=s-consult-to-queue&createdTime=s-created-time&description=s-description&dialPlanEnabled=s-dial-plan-enabled&dialPlans=s-dial-plans&entryPoints=s-entry-points&id=s-id&idleCodes=s-idle-codes&lastAgentRouting=s-last-agent-routing&lastUpdatedTime=s-last-updated-time&loginVoiceOptions=s-login-voice-options&manageChannelAvailability=s-manage-channel-availability&name=s-name&organizationId=s-organization-id&outdialANIId=s-outdial-aniid&outdialEnabled=s-outdial-enabled&outdialEntryPointId=s-outdial-entry-point-id&parentType=s-parent-type&queues=s-queues&scheduleAndManageCallBack=s-schedule-and-manage-call-back&screenPopup=s-screen-popup&showUserDetailsMS=s-show-user-details-ms&showUserDetailsWebex=s-show-user-details-webex&siteId=s-site-id&stateSynchronizationMS=s-state-synchronization-ms&stateSynchronizationWebex=s-state-synchronization-webex&systemDefault=s-system-default&thresholdRules=s-threshold-rules&timeoutDesktopInactivityCustomEnabled=s-timeout-desktop-inactivity-custom-enabled&timeoutDesktopInactivityMins=s-timeout-desktop-inactivity-mins&version=s-version&viewableStatistics=s-viewable-statistics&wrapUpCodes=s-wrap-up-codes", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc desktop-profile update", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/agent-profile/s-id?id=s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc desktop-profile update", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/agent-profile/s-id?id=s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc dial-number bulk-export-dialed-mapping", - "variant": "all-flags", - "args": [ - "--page=s-page", - "--page-size=s-page-size" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/dial-number/bulk-export?page=s-page&pageSize=s-page-size", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc dial-number bulk-export-dialed-mapping", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/dial-number/bulk-export", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc dial-number bulk-export-dialed-mapping", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/dial-number/bulk-export?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc dial-number bulk-save-dialed-mapping", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/dial-number/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc dial-number bulk-save-dialed-mapping", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/dial-number/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc dial-number bulk-save-dialed-mapping", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/dial-number/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc dial-number create-dialed-mapping", - "variant": "all-flags", - "args": [ - "--created-time=7", - "--default-ani=true", - "--dialled-number=s-dialled-number", - "--dialled-number-digits=s-dialled-number-digits", - "--entry-point-id=s-entry-point-id", - "--entry-point-name=s-entry-point-name", - "--esn=s-esn", - "--extension=s-extension", - "--id=s-id", - "--last-updated-time=7", - "--location=s-location", - "--organization-id=s-organization-id", - "--region-id=s-region-id", - "--route-point-id=s-route-point-id", - "--routing-prefix=s-routing-prefix", - "--version=7" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/dial-number", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"createdTime\":7,\"defaultAni\":true,\"dialledNumber\":\"s-dialled-number\",\"dialledNumberDigits\":\"s-dialled-number-digits\",\"entryPointId\":\"s-entry-point-id\",\"entryPointName\":\"s-entry-point-name\",\"esn\":\"s-esn\",\"extension\":\"s-extension\",\"id\":\"s-id\",\"lastUpdatedTime\":7,\"location\":\"s-location\",\"organizationId\":\"s-organization-id\",\"regionId\":\"s-region-id\",\"routePointId\":\"s-route-point-id\",\"routingPrefix\":\"s-routing-prefix\",\"version\":7}" - } - ] - }, - { - "command": "cc dial-number create-dialed-mapping", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/dial-number", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc dial-number create-dialed-mapping", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/dial-number", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc dial-number delete-all-dialed-mapping", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/dial-number", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc dial-number delete-all-dialed-mapping", - "variant": "required", - "args": null, - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/dial-number", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc dial-number delete-dialed-mapping-id", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/dial-number/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc dial-number delete-dialed-mapping-id", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/dial-number/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc dial-number get-dialed-mapping-id", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/dial-number/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc dial-number get-dialed-mapping-id", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/dial-number/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc dial-number get-dialed-mapping-id", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/dial-number/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc dial-number list-dialed-dialed-mapping", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/dial-number/numbers-only", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc dial-number list-dialed-dialed-mapping", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/dial-number/numbers-only", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc dial-number list-dialed-dialed-mapping", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/dial-number/numbers-only?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc dial-number list-dialed-mapping", - "variant": "all-flags", - "args": [ - "--attributes=s-attributes", - "--filter=s-filter", - "--include-entry-point-name=s-include-entry-point-name", - "--page=s-page", - "--page-size=s-page-size", - "--search=s-search" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v3/dial-number?attributes=s-attributes&filter=s-filter&includeEntryPointName=s-include-entry-point-name&page=s-page&pageSize=s-page-size&search=s-search", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc dial-number list-dialed-mapping", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v3/dial-number", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc dial-number list-dialed-mapping", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v3/dial-number?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc dial-number list-references-dialed-mapping", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--page=s-page", - "--page-size=s-page-size", - "--type=s-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/dial-number/s-id/incoming-references?page=s-page&pageSize=s-page-size&type=s-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc dial-number list-references-dialed-mapping", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/dial-number/s-id/incoming-references", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc dial-number list-references-dialed-mapping", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/dial-number/s-id/incoming-references?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc dial-number update-dialed-mapping-id", - "variant": "all-flags", - "args": [ - "--created-time=7", - "--default-ani=true", - "--dialled-number=s-dialled-number", - "--dialled-number-digits=s-dialled-number-digits", - "--entry-point-id=s-entry-point-id", - "--entry-point-name=s-entry-point-name", - "--esn=s-esn", - "--extension=s-extension", - "--id=s-id", - "--last-updated-time=7", - "--location=s-location", - "--organization-id=s-organization-id", - "--region-id=s-region-id", - "--route-point-id=s-route-point-id", - "--routing-prefix=s-routing-prefix", - "--version=7" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/dial-number/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"createdTime\":7,\"defaultAni\":true,\"dialledNumber\":\"s-dialled-number\",\"dialledNumberDigits\":\"s-dialled-number-digits\",\"entryPointId\":\"s-entry-point-id\",\"entryPointName\":\"s-entry-point-name\",\"esn\":\"s-esn\",\"extension\":\"s-extension\",\"id\":\"s-id\",\"lastUpdatedTime\":7,\"location\":\"s-location\",\"organizationId\":\"s-organization-id\",\"regionId\":\"s-region-id\",\"routePointId\":\"s-route-point-id\",\"routingPrefix\":\"s-routing-prefix\",\"version\":7}" - } - ] - }, - { - "command": "cc dial-number update-dialed-mapping-id", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/dial-number/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"id\":\"s-id\"}" - } - ] - }, - { - "command": "cc dial-number update-dialed-mapping-id", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/dial-number/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc dial-plan bulk-export", - "variant": "all-flags", - "args": [ - "--page=s-page", - "--page-size=s-page-size" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/dial-plan/bulk-export?page=s-page&pageSize=s-page-size", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc dial-plan bulk-export", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/dial-plan/bulk-export", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc dial-plan bulk-export", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/dial-plan/bulk-export?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc dial-plan bulk-save", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/dial-plan/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc dial-plan bulk-save", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/dial-plan/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc dial-plan bulk-save", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/dial-plan/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc dial-plan create", - "variant": "all-flags", - "args": [ - "--active=true", - "--created-time=7", - "--description=s-description", - "--id=s-id", - "--last-updated-time=7", - "--name=s-name", - "--organization-id=s-organization-id", - "--prefix=s-prefix", - "--regular-expression=s-regular-expression", - "--stripped-chars=s-stripped-chars", - "--system-default=true", - "--version=7" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/dial-plan", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"active\":true,\"createdTime\":7,\"description\":\"s-description\",\"id\":\"s-id\",\"lastUpdatedTime\":7,\"name\":\"s-name\",\"organizationId\":\"s-organization-id\",\"prefix\":\"s-prefix\",\"regularExpression\":\"s-regular-expression\",\"strippedChars\":\"s-stripped-chars\",\"systemDefault\":true,\"version\":7}" - } - ] - }, - { - "command": "cc dial-plan create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/dial-plan", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc dial-plan create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/dial-plan", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc dial-plan delete", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/dial-plan/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc dial-plan delete", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/dial-plan/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc dial-plan get", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/dial-plan/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc dial-plan get", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/dial-plan/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc dial-plan get", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/dial-plan/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc dial-plan list", - "variant": "all-flags", - "args": [ - "--attributes=s-attributes", - "--filter=s-filter", - "--page=s-page", - "--page-size=s-page-size", - "--search=s-search" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/dial-plan?attributes=s-attributes&filter=s-filter&page=s-page&pageSize=s-page-size&search=s-search", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc dial-plan list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/dial-plan", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc dial-plan list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/dial-plan?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc dial-plan list-references", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--page=s-page", - "--page-size=s-page-size", - "--type=s-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/dial-plan/s-id/incoming-references?page=s-page&pageSize=s-page-size&type=s-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc dial-plan list-references", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/dial-plan/s-id/incoming-references", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc dial-plan list-references", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/dial-plan/s-id/incoming-references?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc dial-plan update", - "variant": "all-flags", - "args": [ - "--active=true", - "--created-time=7", - "--description=s-description", - "--id=s-id", - "--last-updated-time=7", - "--name=s-name", - "--organization-id=s-organization-id", - "--prefix=s-prefix", - "--regular-expression=s-regular-expression", - "--stripped-chars=s-stripped-chars", - "--system-default=true", - "--version=7" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/dial-plan/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"active\":true,\"createdTime\":7,\"description\":\"s-description\",\"id\":\"s-id\",\"lastUpdatedTime\":7,\"name\":\"s-name\",\"organizationId\":\"s-organization-id\",\"prefix\":\"s-prefix\",\"regularExpression\":\"s-regular-expression\",\"strippedChars\":\"s-stripped-chars\",\"systemDefault\":true,\"version\":7}" - } - ] - }, - { - "command": "cc dial-plan update", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/dial-plan/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"id\":\"s-id\"}" - } - ] - }, - { - "command": "cc dial-plan update", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/dial-plan/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc dnc-management create-phone-number-list", - "variant": "all-flags", - "args": [ - "--dnc-list-name=s-dnc-list-name", - "--phone-number=s-phone-number", - "--reason=s-reason", - "--source=s-source" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v3/campaign-management/dncList/s-dnc-list-name/phoneNumber", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"phoneNumber\":\"s-phone-number\",\"reason\":\"s-reason\",\"source\":\"s-source\"}" - } - ] - }, - { - "command": "cc dnc-management create-phone-number-list", - "variant": "required", - "args": [ - "--dnc-list-name=s-dnc-list-name" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v3/campaign-management/dncList/s-dnc-list-name/phoneNumber", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc dnc-management create-phone-number-list", - "variant": "body", - "args": [ - "--dnc-list-name=s-dnc-list-name", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v3/campaign-management/dncList/s-dnc-list-name/phoneNumber", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc dnc-management delete-phone-number-list", - "variant": "all-flags", - "args": [ - "--dnc-list-name=s-dnc-list-name", - "--phone-number=s-phone-number" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/v3/campaign-management/dncList/s-dnc-list-name/phoneNumber/s-phone-number", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc dnc-management delete-phone-number-list", - "variant": "required", - "args": [ - "--dnc-list-name=s-dnc-list-name", - "--phone-number=s-phone-number" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/v3/campaign-management/dncList/s-dnc-list-name/phoneNumber/s-phone-number", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc dnc-management get-phone-number-list", - "variant": "all-flags", - "args": [ - "--dnc-list-name=s-dnc-list-name", - "--phone-number=s-phone-number" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v3/campaign-management/dncList/s-dnc-list-name/phoneNumber/s-phone-number", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc dnc-management get-phone-number-list", - "variant": "required", - "args": [ - "--dnc-list-name=s-dnc-list-name", - "--phone-number=s-phone-number" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v3/campaign-management/dncList/s-dnc-list-name/phoneNumber/s-phone-number", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc dnc-management get-phone-number-list", - "variant": "paginate", - "args": [ - "--dnc-list-name=s-dnc-list-name", - "--phone-number=s-phone-number", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v3/campaign-management/dncList/s-dnc-list-name/phoneNumber/s-phone-number", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc entry-point bulk-export", - "variant": "all-flags", - "args": [ - "--page=s-page", - "--page-size=s-page-size", - "--type=s-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/entry-point/bulk-export?page=s-page&pageSize=s-page-size&type=s-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc entry-point bulk-export", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/entry-point/bulk-export", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc entry-point bulk-export", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/entry-point/bulk-export?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc entry-point bulk-save", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/entry-point/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc entry-point bulk-save", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/entry-point/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc entry-point bulk-save", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/entry-point/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc entry-point create", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/entry-point", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc entry-point create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/entry-point", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc entry-point create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/entry-point", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc entry-point delete", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/entry-point/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc entry-point delete", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/entry-point/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc entry-point get", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--include-names=s-include-names" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/entry-point/s-id?includeNames=s-include-names", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc entry-point get", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/entry-point/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc entry-point get", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/entry-point/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc entry-point list", - "variant": "all-flags", - "args": [ - "--attributes=s-attributes", - "--desktop-profile-filter=s-desktop-profile-filter", - "--filter=s-filter", - "--include-count=s-include-count", - "--page=s-page", - "--page-size=s-page-size", - "--provisioning-view=s-provisioning-view", - "--search=s-search", - "--single-object-response=s-single-object-response" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/entry-point?attributes=s-attributes&desktopProfileFilter=s-desktop-profile-filter&filter=s-filter&includeCount=s-include-count&page=s-page&pageSize=s-page-size&provisioningView=s-provisioning-view&search=s-search&singleObjectResponse=s-single-object-response", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc entry-point list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/entry-point", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc entry-point list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/entry-point?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc entry-point list-references", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--page=s-page", - "--page-size=s-page-size", - "--type=s-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/entry-point/s-id/incoming-references?page=s-page&pageSize=s-page-size&type=s-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc entry-point list-references", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/entry-point/s-id/incoming-references", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc entry-point list-references", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/entry-point/s-id/incoming-references?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc entry-point list-v1", - "variant": "all-flags", - "args": [ - "--page=s-page", - "--page-size=s-page-size" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/entry-point?page=s-page&pageSize=s-page-size", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc entry-point list-v1", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/entry-point", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc entry-point list-v1", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/entry-point?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc entry-point purge-inactive", - "variant": "all-flags", - "args": [ - "--next-start-id=s-next-start-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/entry-point/purge-inactive-entities?nextStartId=s-next-start-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc entry-point purge-inactive", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/entry-point/purge-inactive-entities", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc entry-point update", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/entry-point/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc entry-point update", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/entry-point/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc entry-point update", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/entry-point/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc estimated-wait-time get", - "variant": "all-flags", - "args": [ - "--lookback-minutes=s-lookback-minutes", - "--max-cv=s-max-cv", - "--min-valid-samples=s-min-valid-samples", - "--queue-id=s-queue-id", - "--tracking-id=s-tracking-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/ewt?lookbackMinutes=s-lookback-minutes&maxCV=s-max-cv&minValidSamples=s-min-valid-samples&orgId=6ab1d2c4-0000-4000-8000-00000000c1d0&queueId=s-queue-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Trackingid": "s-tracking-id" - } - } - ] - }, - { - "command": "cc estimated-wait-time get", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/ewt?orgId=6ab1d2c4-0000-4000-8000-00000000c1d0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc estimated-wait-time get", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/ewt?orgId=6ab1d2c4-0000-4000-8000-00000000c1d0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc events list-specifications", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/v2/event-specifications", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc events list-specifications", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/v2/event-specifications", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc events list-specifications", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/v2/event-specifications?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc external-data-updates update-task-global-variables", - "variant": "all-flags", - "args": [ - "--tracking-id=s-tracking-id", - "--x-organization-id=s-x-organization-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/v1/data/updateExternal", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Trackingid": "s-tracking-id", - "X-Organization-Id": "s-x-organization-id" - } - } - ] - }, - { - "command": "cc external-data-updates update-task-global-variables", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/v1/data/updateExternal", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc external-data-updates update-task-global-variables", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/v1/data/updateExternal", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc flow delete", - "variant": "all-flags", - "args": [ - "--flow-id=s-flow-id", - "--flow-type=s-flow-type", - "--force=s-force", - "--skip-rs-epcheck=s-skip-rs-epcheck" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/flows/s-flow-id?flowType=s-flow-type&force=s-force&skipRsEPCheck=s-skip-rs-epcheck", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc flow delete", - "variant": "required", - "args": [ - "--flow-id=s-flow-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/flows/s-flow-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc flow export", - "variant": "all-flags", - "args": [ - "--flow-id=s-flow-id", - "--flow-type=s-flow-type", - "--version=s-version" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/v2/flows/s-flow-id:export?flowType=s-flow-type&version=s-version", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc flow export", - "variant": "required", - "args": [ - "--flow-id=s-flow-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/v2/flows/s-flow-id:export", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc flow export", - "variant": "paginate", - "args": [ - "--flow-id=s-flow-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/v2/flows/s-flow-id:export", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc flow export-legacy", - "variant": "all-flags", - "args": [ - "--flow-id=s-flow-id", - "--version=s-version" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/flow-store/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/flows/s-flow-id:export?version=s-version", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc flow export-legacy", - "variant": "required", - "args": [ - "--flow-id=s-flow-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/flow-store/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/flows/s-flow-id:export", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc flow export-legacy", - "variant": "paginate", - "args": [ - "--flow-id=s-flow-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/flow-store/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/flows/s-flow-id:export", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc flow get", - "variant": "all-flags", - "args": [ - "--flow-id=s-flow-id", - "--flow-type=s-flow-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/v2/flows/s-flow-id?flowType=s-flow-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc flow get", - "variant": "required", - "args": [ - "--flow-id=s-flow-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/v2/flows/s-flow-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc flow get", - "variant": "paginate", - "args": [ - "--flow-id=s-flow-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/v2/flows/s-flow-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc flow import", - "variant": "all-flags", - "args": [ - "--flow-type=s-flow-type", - "--overwrite=s-overwrite" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/v2/flows:import?flowType=s-flow-type&overwrite=s-overwrite", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc flow import", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/v2/flows:import", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc flow import", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/v2/flows:import", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc flow import-legacy", - "variant": "all-flags", - "args": [ - "--content-length=s-content-length", - "--flow-type=s-flow-type", - "--overwrite=s-overwrite" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/flow-store/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/flows:import?flowType=s-flow-type&overwrite=s-overwrite", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Length": "s-content-length" - } - } - ] - }, - { - "command": "cc flow import-legacy", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/flow-store/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/flows:import", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc flow list", - "variant": "all-flags", - "args": [ - "--flow-type=s-flow-type", - "--ids=s-ids", - "--include-pagination=s-include-pagination", - "--is-validation=s-is-validation", - "--page=s-page", - "--partial-name-search=s-partial-name-search", - "--search-by=s-search-by", - "--size=s-size" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/flows?flowType=s-flow-type&ids=s-ids&includePagination=s-include-pagination&isValidation=s-is-validation&page=s-page&partialNameSearch=s-partial-name-search&searchBy=s-search-by&size=s-size", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc flow list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/flows", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc flow list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/flows?includePagination=true&page=0&size=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc flow lock", - "variant": "all-flags", - "args": [ - "--flow-id=s-flow-id", - "--flow-type=s-flow-type" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/flows/s-flow-id:lock?flowType=s-flow-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc flow lock", - "variant": "required", - "args": [ - "--flow-id=s-flow-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/flows/s-flow-id:lock", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc flow patch-draft", - "variant": "all-flags", - "args": [ - "--expected-version=s-expected-version", - "--flow-id=s-flow-id", - "--flow-type=s-flow-type" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/v2/flows/s-flow-id?expectedVersion=s-expected-version&flowType=s-flow-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc flow patch-draft", - "variant": "required", - "args": [ - "--flow-id=s-flow-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/v2/flows/s-flow-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc flow patch-draft", - "variant": "body", - "args": [ - "--flow-id=s-flow-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/v2/flows/s-flow-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc flow publish", - "variant": "all-flags", - "args": [ - "--comment=s-comment", - "--flow-id=s-flow-id", - "--flow-type=s-flow-type", - "--skip-validation=s-skip-validation", - "--tag-ids=s-tag-ids-1,s-tag-ids-2", - "--tracking-id=s-tracking-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/flows/s-flow-id:publish?flowType=s-flow-type&skipValidation=s-skip-validation", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json", - "Trackingid": "s-tracking-id" - }, - "body": "{\"comment\":\"s-comment\",\"tagIds\":[\"s-tag-ids-1\",\"s-tag-ids-2\"]}" - } - ] - }, - { - "command": "cc flow publish", - "variant": "required", - "args": [ - "--flow-id=s-flow-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/flows/s-flow-id:publish", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc flow publish", - "variant": "body", - "args": [ - "--flow-id=s-flow-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/flows/s-flow-id:publish", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc flow save-draft", - "variant": "all-flags", - "args": [ - "--expected-version=s-expected-version", - "--flow-id=s-flow-id", - "--flow-type=s-flow-type" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/v2/flows/s-flow-id?expectedVersion=s-expected-version&flowType=s-flow-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc flow save-draft", - "variant": "required", - "args": [ - "--flow-id=s-flow-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/v2/flows/s-flow-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc flow save-draft", - "variant": "body", - "args": [ - "--flow-id=s-flow-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/v2/flows/s-flow-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc flow search", - "variant": "all-flags", - "args": [ - "--flow-type=s-flow-type", - "--key-value-filter=s-key-value-filter", - "--page=s-page", - "--query=s-query", - "--size=s-size" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/flows:search?flowType=s-flow-type&keyValueFilter=s-key-value-filter&page=s-page&query=s-query&size=s-size", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc flow search", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/flows:search", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc flow search", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/flows:search?page=0&size=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc flow unlock", - "variant": "all-flags", - "args": [ - "--flow-id=s-flow-id", - "--flow-type=s-flow-type" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/flows/s-flow-id:unlock?flowType=s-flow-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc flow unlock", - "variant": "required", - "args": [ - "--flow-id=s-flow-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/flows/s-flow-id:unlock", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc flow validate", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/v2/flows:validate", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc flow validate", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/v2/flows:validate", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc flow validate", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/v2/flows:validate", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc flow validate-draft", - "variant": "all-flags", - "args": [ - "--flow-id=s-flow-id", - "--flow-type=s-flow-type", - "--version-id=s-version-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/v2/flows/s-flow-id:validate?flowType=s-flow-type&versionId=s-version-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc flow validate-draft", - "variant": "required", - "args": [ - "--flow-id=s-flow-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/v2/flows/s-flow-id:validate", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc flow validate-draft", - "variant": "paginate", - "args": [ - "--flow-id=s-flow-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/6ab1d2c4-0000-4000-8000-00000000c1d0/project/5e5c9ad6d61f870d6d778c1b/v2/flows/s-flow-id:validate", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc functions create", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/6ab1d2c4-0000-4000-8000-00000000c1d0/functions", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc functions create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/6ab1d2c4-0000-4000-8000-00000000c1d0/functions", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc functions create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/6ab1d2c4-0000-4000-8000-00000000c1d0/functions", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc functions delete", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--is-force-deletion=s-is-force-deletion" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/v1/6ab1d2c4-0000-4000-8000-00000000c1d0/functions/s-id?isForceDeletion=s-is-force-deletion", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc functions delete", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/v1/6ab1d2c4-0000-4000-8000-00000000c1d0/functions/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc functions export", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--version-or-tag=s-version-or-tag" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/6ab1d2c4-0000-4000-8000-00000000c1d0/functions/s-id:export?versionOrTag=s-version-or-tag", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc functions export", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/6ab1d2c4-0000-4000-8000-00000000c1d0/functions/s-id:export", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc functions get", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--meta-data-only=s-meta-data-only", - "--version-or-tag=s-version-or-tag" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/6ab1d2c4-0000-4000-8000-00000000c1d0/functions/s-id?metaDataOnly=s-meta-data-only&versionOrTag=s-version-or-tag", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc functions get", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/6ab1d2c4-0000-4000-8000-00000000c1d0/functions/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc functions get", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/6ab1d2c4-0000-4000-8000-00000000c1d0/functions/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc functions import", - "variant": "all-flags", - "args": [ - "--associated-rcs=s-associated-rcs", - "--overwrite=s-overwrite" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/6ab1d2c4-0000-4000-8000-00000000c1d0/functions:import?associatedRcs=s-associated-rcs&overwrite=s-overwrite", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc functions import", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/6ab1d2c4-0000-4000-8000-00000000c1d0/functions:import", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc functions list", - "variant": "all-flags", - "args": [ - "--fields=s-fields", - "--ids=s-ids", - "--is-case-sensitive=s-is-case-sensitive", - "--is-partial-match=s-is-partial-match", - "--is-validation=s-is-validation", - "--language=s-language", - "--name=s-name", - "--page=s-page", - "--size=s-size", - "--sort-by=s-sort-by", - "--status=s-status" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/6ab1d2c4-0000-4000-8000-00000000c1d0/functions?fields=s-fields&ids=s-ids&isCaseSensitive=s-is-case-sensitive&isPartialMatch=s-is-partial-match&isValidation=s-is-validation&language=s-language&name=s-name&page=s-page&size=s-size&sortBy=s-sort-by&status=s-status", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc functions list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/6ab1d2c4-0000-4000-8000-00000000c1d0/functions", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc functions list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/6ab1d2c4-0000-4000-8000-00000000c1d0/functions?page=0&size=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc functions list-options", - "variant": "all-flags", - "args": [ - "--language=s-language", - "--runtime=s-runtime" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/6ab1d2c4-0000-4000-8000-00000000c1d0/functions/options?language=s-language&runtime=s-runtime", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc functions list-options", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/6ab1d2c4-0000-4000-8000-00000000c1d0/functions/options", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc functions list-options", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/6ab1d2c4-0000-4000-8000-00000000c1d0/functions/options?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc functions lock", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/6ab1d2c4-0000-4000-8000-00000000c1d0/functions/s-id:lock", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc functions lock", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/6ab1d2c4-0000-4000-8000-00000000c1d0/functions/s-id:lock", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc functions publish", - "variant": "all-flags", - "args": [ - "--comment=s-comment", - "--id=s-id", - "--tags=s-tags-1,s-tags-2" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/6ab1d2c4-0000-4000-8000-00000000c1d0/functions/s-id:publish", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"comment\":\"s-comment\",\"tags\":[\"s-tags-1\",\"s-tags-2\"]}" - } - ] - }, - { - "command": "cc functions publish", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/6ab1d2c4-0000-4000-8000-00000000c1d0/functions/s-id:publish", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc functions publish", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/6ab1d2c4-0000-4000-8000-00000000c1d0/functions/s-id:publish", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc functions test", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/6ab1d2c4-0000-4000-8000-00000000c1d0/functions/s-id:test", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc functions test", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/6ab1d2c4-0000-4000-8000-00000000c1d0/functions/s-id:test", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc functions test", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/6ab1d2c4-0000-4000-8000-00000000c1d0/functions/s-id:test", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc functions unlock", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/6ab1d2c4-0000-4000-8000-00000000c1d0/functions/s-id:unlock", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc functions unlock", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/6ab1d2c4-0000-4000-8000-00000000c1d0/functions/s-id:unlock", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc functions update", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/v1/6ab1d2c4-0000-4000-8000-00000000c1d0/functions/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc functions update", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/v1/6ab1d2c4-0000-4000-8000-00000000c1d0/functions/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc functions update", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/v1/6ab1d2c4-0000-4000-8000-00000000c1d0/functions/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc generated-summaries get", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/generated-summaries/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc generated-summaries get", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/generated-summaries/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc generated-summaries get", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/generated-summaries/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc generated-summaries list", - "variant": "all-flags", - "args": [ - "--attributes=s-attributes", - "--filter=s-filter", - "--page=s-page", - "--page-size=s-page-size" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/generated-summaries?attributes=s-attributes&filter=s-filter&page=s-page&pageSize=s-page-size", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc generated-summaries list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/generated-summaries", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc generated-summaries list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/generated-summaries?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc generated-summaries update", - "variant": "all-flags", - "args": [ - "--agent-inclusion-type=s-agent-inclusion-type", - "--call-drop-summaries-enabled=true", - "--consult-transfer-summaries-enabled=true", - "--created-time=7", - "--id=s-id", - "--last-updated-time=7", - "--organization-id=s-organization-id", - "--version=7", - "--virtual-agent-transfer-summaries-enabled=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/generated-summaries/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"agentInclusionType\":\"s-agent-inclusion-type\",\"callDropSummariesEnabled\":true,\"consultTransferSummariesEnabled\":true,\"createdTime\":7,\"id\":\"s-id\",\"lastUpdatedTime\":7,\"organizationId\":\"s-organization-id\",\"version\":7,\"virtualAgentTransferSummariesEnabled\":true}" - } - ] - }, - { - "command": "cc generated-summaries update", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/generated-summaries/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"id\":\"s-id\"}" - } - ] - }, - { - "command": "cc generated-summaries update", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/generated-summaries/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc global-variables bulk-export", - "variant": "all-flags", - "args": [ - "--page=s-page", - "--page-size=s-page-size" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/cad-variable/bulk-export?page=s-page&pageSize=s-page-size", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc global-variables bulk-export", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/cad-variable/bulk-export", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc global-variables bulk-export", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/cad-variable/bulk-export?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc global-variables bulk-save", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/cad-variable/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc global-variables bulk-save", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/cad-variable/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc global-variables bulk-save", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/cad-variable/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc global-variables create", - "variant": "all-flags", - "args": [ - "--active=true", - "--agent-editable=true", - "--agent-viewable=true", - "--default-value=s-default-value", - "--description=s-description", - "--desktop-label=s-desktop-label", - "--id=s-id", - "--name=s-name", - "--organization-id=s-organization-id", - "--reportable=true", - "--sensitive=true", - "--system-default=true", - "--variable-type=s-variable-type", - "--version=7" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/cad-variable", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"active\":true,\"agentEditable\":true,\"agentViewable\":true,\"defaultValue\":\"s-default-value\",\"description\":\"s-description\",\"desktopLabel\":\"s-desktop-label\",\"id\":\"s-id\",\"name\":\"s-name\",\"organizationId\":\"s-organization-id\",\"reportable\":true,\"sensitive\":true,\"systemDefault\":true,\"variableType\":\"s-variable-type\",\"version\":7}" - } - ] - }, - { - "command": "cc global-variables create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/cad-variable", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc global-variables create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/cad-variable", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc global-variables delete", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/cad-variable/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc global-variables delete", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/cad-variable/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc global-variables get", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/cad-variable/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc global-variables get", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/cad-variable/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc global-variables get", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/cad-variable/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc global-variables get-reportable-count", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/cad-variable/reportable-count", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc global-variables get-reportable-count", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/cad-variable/reportable-count", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc global-variables get-reportable-count", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/cad-variable/reportable-count", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc global-variables list", - "variant": "all-flags", - "args": [ - "--attributes=s-attributes", - "--filter=s-filter", - "--page=s-page", - "--page-size=s-page-size", - "--search=s-search" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/cad-variable?attributes=s-attributes&filter=s-filter&page=s-page&pageSize=s-page-size&search=s-search", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc global-variables list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/cad-variable", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc global-variables list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/cad-variable?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc global-variables list-references", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--page=s-page", - "--page-size=s-page-size", - "--type=s-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/cad-variable/s-id/incoming-references?page=s-page&pageSize=s-page-size&type=s-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc global-variables list-references", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/cad-variable/s-id/incoming-references", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc global-variables list-references", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/cad-variable/s-id/incoming-references?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc global-variables purge-inactive", - "variant": "all-flags", - "args": [ - "--next-start-id=s-next-start-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/cad-variable/purge-inactive-entities?nextStartId=s-next-start-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc global-variables purge-inactive", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/cad-variable/purge-inactive-entities", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc global-variables update", - "variant": "all-flags", - "args": [ - "--active=true", - "--agent-editable=true", - "--agent-viewable=true", - "--default-value=s-default-value", - "--description=s-description", - "--desktop-label=s-desktop-label", - "--id=s-id", - "--name=s-name", - "--organization-id=s-organization-id", - "--reportable=true", - "--sensitive=true", - "--system-default=true", - "--variable-type=s-variable-type", - "--version=7" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/cad-variable/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"active\":true,\"agentEditable\":true,\"agentViewable\":true,\"defaultValue\":\"s-default-value\",\"description\":\"s-description\",\"desktopLabel\":\"s-desktop-label\",\"id\":\"s-id\",\"name\":\"s-name\",\"organizationId\":\"s-organization-id\",\"reportable\":true,\"sensitive\":true,\"systemDefault\":true,\"variableType\":\"s-variable-type\",\"version\":7}" - } - ] - }, - { - "command": "cc global-variables update", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/cad-variable/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"id\":\"s-id\"}" - } - ] - }, - { - "command": "cc global-variables update", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/cad-variable/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc holiday-list bulk-export", - "variant": "all-flags", - "args": [ - "--page=s-page", - "--page-size=s-page-size" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/holiday-list/bulk-export?page=s-page&pageSize=s-page-size", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc holiday-list bulk-export", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/holiday-list/bulk-export", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc holiday-list bulk-export", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/holiday-list/bulk-export?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc holiday-list bulk-save", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/holiday-list/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc holiday-list bulk-save", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/holiday-list/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc holiday-list bulk-save", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/holiday-list/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc holiday-list create", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/holiday-list", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc holiday-list create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/holiday-list", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc holiday-list create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/holiday-list", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc holiday-list delete", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/holiday-list/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc holiday-list delete", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/holiday-list/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc holiday-list get", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/holiday-list/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc holiday-list get", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/holiday-list/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc holiday-list get", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/holiday-list/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc holiday-list list", - "variant": "all-flags", - "args": [ - "--attributes=s-attributes", - "--filter=s-filter", - "--include-count=s-include-count", - "--page=s-page", - "--page-size=s-page-size", - "--search=s-search", - "--single-object-response=s-single-object-response", - "--sort=s-sort" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/holiday-list?attributes=s-attributes&filter=s-filter&includeCount=s-include-count&page=s-page&pageSize=s-page-size&search=s-search&singleObjectResponse=s-single-object-response&sort=s-sort", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc holiday-list list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/holiday-list", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc holiday-list list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/holiday-list?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc holiday-list list-references", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--page=s-page", - "--page-size=s-page-size", - "--type=s-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/holiday-list/s-id/incoming-references?page=s-page&pageSize=s-page-size&type=s-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc holiday-list list-references", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/holiday-list/s-id/incoming-references", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc holiday-list list-references", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/holiday-list/s-id/incoming-references?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc holiday-list update", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/holiday-list/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc holiday-list update", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/holiday-list/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc holiday-list update", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/holiday-list/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc journey create-action", - "variant": "all-flags", - "args": [ - "--template-id=s-template-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/journey-actions/workspace-id/s-workspace-id/template-id/s-template-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey create-action", - "variant": "required", - "args": [ - "--template-id=s-template-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/journey-actions/workspace-id/s-workspace-id/template-id/s-template-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey create-action", - "variant": "body", - "args": [ - "--template-id=s-template-id", - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/journey-actions/workspace-id/s-workspace-id/template-id/s-template-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc journey create-one-more-identities-person", - "variant": "all-flags", - "args": [ - "--customer-id=s-customer-id-1,s-customer-id-2", - "--email=s-email-1,s-email-2", - "--person-id=s-person-id", - "--phone=s-phone-1,s-phone-2", - "--temporary-id=s-temporary-id-1,s-temporary-id-2", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/person/add-identities/workspace-id/s-workspace-id/person-id/s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"customerId\":[\"s-customer-id-1\",\"s-customer-id-2\"],\"email\":[\"s-email-1\",\"s-email-2\"],\"phone\":[\"s-phone-1\",\"s-phone-2\"],\"temporaryId\":[\"s-temporary-id-1\",\"s-temporary-id-2\"]}" - } - ] - }, - { - "command": "cc journey create-one-more-identities-person", - "variant": "required", - "args": [ - "--person-id=s-person-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/person/add-identities/workspace-id/s-workspace-id/person-id/s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey create-one-more-identities-person", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/person/add-identities/workspace-id/s-workspace-id/person-id/s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc journey create-person", - "variant": "all-flags", - "args": [ - "--customer-id=s-customer-id-1,s-customer-id-2", - "--email=s-email-1,s-email-2", - "--first-name=s-first-name", - "--last-name=s-last-name", - "--phone=s-phone-1,s-phone-2", - "--temporary-id=s-temporary-id-1,s-temporary-id-2", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/person/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"customerId\":[\"s-customer-id-1\",\"s-customer-id-2\"],\"email\":[\"s-email-1\",\"s-email-2\"],\"firstName\":\"s-first-name\",\"lastName\":\"s-last-name\",\"phone\":[\"s-phone-1\",\"s-phone-2\"],\"temporaryId\":[\"s-temporary-id-1\",\"s-temporary-id-2\"]}" - } - ] - }, - { - "command": "cc journey create-person", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/person/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey create-person", - "variant": "body", - "args": [ - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/person/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc journey create-remove-replace-person", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/person/workspace-id/s-workspace-id/person-id/s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey create-remove-replace-person", - "variant": "required", - "args": [ - "--person-id=s-person-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/person/workspace-id/s-workspace-id/person-id/s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey create-remove-replace-person", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/person/workspace-id/s-workspace-id/person-id/s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc journey create-template", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/profile-view-template/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey create-template", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/profile-view-template/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey create-template", - "variant": "body", - "args": [ - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/profile-view-template/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc journey create-workspace", - "variant": "all-flags", - "args": [ - "--description=s-description", - "--name=s-name", - "--organization-id=s-organization-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/workspace?organizationId=s-organization-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"description\":\"s-description\",\"name\":\"s-name\"}" - } - ] - }, - { - "command": "cc journey create-workspace", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/workspace", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey create-workspace", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/workspace", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc journey create-wxcc-subscription", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/wxcc-subscription/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey create-wxcc-subscription", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/wxcc-subscription/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey creates-merges-aliases-individual-jds", - "variant": "all-flags", - "args": [ - "--customer-id=s-customer-id-1,s-customer-id-2", - "--email=s-email-1,s-email-2", - "--first-name=s-first-name", - "--last-name=s-last-name", - "--phone=s-phone-1,s-phone-2", - "--temporary-id=s-temporary-id-1,s-temporary-id-2", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/person/merge-identities/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"customerId\":[\"s-customer-id-1\",\"s-customer-id-2\"],\"email\":[\"s-email-1\",\"s-email-2\"],\"firstName\":\"s-first-name\",\"lastName\":\"s-last-name\",\"phone\":[\"s-phone-1\",\"s-phone-2\"],\"temporaryId\":[\"s-temporary-id-1\",\"s-temporary-id-2\"]}" - } - ] - }, - { - "command": "cc journey creates-merges-aliases-individual-jds", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/person/merge-identities/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey creates-merges-aliases-individual-jds", - "variant": "body", - "args": [ - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/person/merge-identities/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc journey delete-action-configuration-actionid", - "variant": "all-flags", - "args": [ - "--action-id=s-action-id", - "--template-id=s-template-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/journey-actions/workspace-id/s-workspace-id/template-id/s-template-id/action-id/s-action-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey delete-action-configuration-actionid", - "variant": "required", - "args": [ - "--action-id=s-action-id", - "--template-id=s-template-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/journey-actions/workspace-id/s-workspace-id/template-id/s-template-id/action-id/s-action-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey delete-one-more-identities-person", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/v1/api/person/remove-identities/workspace-id/s-workspace-id/person-id/s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey delete-one-more-identities-person", - "variant": "required", - "args": [ - "--person-id=s-person-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/v1/api/person/remove-identities/workspace-id/s-workspace-id/person-id/s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey delete-one-more-identities-person", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/v1/api/person/remove-identities/workspace-id/s-workspace-id/person-id/s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc journey delete-person-id", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/person/workspace-id/s-workspace-id/person-id/s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey delete-person-id", - "variant": "required", - "args": [ - "--person-id=s-person-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/person/workspace-id/s-workspace-id/person-id/s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey delete-template-template-id", - "variant": "all-flags", - "args": [ - "--template-id=s-template-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/profile-view-template/workspace-id/s-workspace-id/template-id/s-template-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey delete-template-template-id", - "variant": "required", - "args": [ - "--template-id=s-template-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/profile-view-template/workspace-id/s-workspace-id/template-id/s-template-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey delete-workspace", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/workspace/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey delete-workspace", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/workspace/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey delete-wxcc-subscription", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/wxcc-subscription/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey delete-wxcc-subscription", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/wxcc-subscription/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey event-posting", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/publish/v1/api/event?workspaceId=s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey event-posting", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/publish/v1/api/event", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey event-posting", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/publish/v1/api/event", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc journey get-action-actionid", - "variant": "all-flags", - "args": [ - "--action-id=s-action-id", - "--template-id=s-template-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/journey-actions/workspace-id/s-workspace-id/template-id/s-template-id/action-id/s-action-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey get-action-actionid", - "variant": "required", - "args": [ - "--action-id=s-action-id", - "--template-id=s-template-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/journey-actions/workspace-id/s-workspace-id/template-id/s-template-id/action-id/s-action-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey get-action-actionid", - "variant": "paginate", - "args": [ - "--action-id=s-action-id", - "--template-id=s-template-id", - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/journey-actions/workspace-id/s-workspace-id/template-id/s-template-id/action-id/s-action-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey get-action-name", - "variant": "all-flags", - "args": [ - "--action-name=s-action-name", - "--template-id=s-template-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/journey-actions/workspace-id/s-workspace-id/template-id/s-template-id/action-name/s-action-name", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey get-action-name", - "variant": "required", - "args": [ - "--action-name=s-action-name", - "--template-id=s-template-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/journey-actions/workspace-id/s-workspace-id/template-id/s-template-id/action-name/s-action-name", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey get-action-name", - "variant": "paginate", - "args": [ - "--action-name=s-action-name", - "--template-id=s-template-id", - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/journey-actions/workspace-id/s-workspace-id/template-id/s-template-id/action-name/s-action-name", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey get-all-actions", - "variant": "all-flags", - "args": [ - "--page=s-page", - "--page-size=s-page-size", - "--sort=s-sort", - "--sort-by=s-sort-by", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/journey-actions/workspace-id/s-workspace-id?page=s-page&pageSize=s-page-size&sort=s-sort&sortBy=s-sort-by", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey get-all-actions", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/journey-actions/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey get-all-actions", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/journey-actions/workspace-id/s-workspace-id?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey get-all-actions-template", - "variant": "all-flags", - "args": [ - "--template-id=s-template-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/journey-actions/workspace-id/s-workspace-id/template-id/s-template-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey get-all-actions-template", - "variant": "required", - "args": [ - "--template-id=s-template-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/journey-actions/workspace-id/s-workspace-id/template-id/s-template-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey get-all-actions-template", - "variant": "paginate", - "args": [ - "--template-id=s-template-id", - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/journey-actions/workspace-id/s-workspace-id/template-id/s-template-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey get-all-person", - "variant": "all-flags", - "args": [ - "--filter=s-filter", - "--page=s-page", - "--page-size=s-page-size", - "--person-id=s-person-id", - "--sort=s-sort", - "--sort-by=s-sort-by", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/person/workspace-id/s-workspace-id?filter=s-filter&page=s-page&pageSize=s-page-size&personId=s-person-id&sort=s-sort&sortBy=s-sort-by", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey get-all-person", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/person/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey get-all-person", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/person/workspace-id/s-workspace-id?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey get-all-template", - "variant": "all-flags", - "args": [ - "--filter=s-filter", - "--page=s-page", - "--page-size=s-page-size", - "--sort=s-sort", - "--sort-by=s-sort-by", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/profile-view-template/workspace-id/s-workspace-id?filter=s-filter&page=s-page&pageSize=s-page-size&sort=s-sort&sortBy=s-sort-by", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey get-all-template", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/profile-view-template/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey get-all-template", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/profile-view-template/workspace-id/s-workspace-id?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey get-all-workspaces", - "variant": "all-flags", - "args": [ - "--filter=s-filter", - "--page=s-page", - "--page-size=s-page-size", - "--sort=s-sort", - "--sort-by=s-sort-by" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/workspace?filter=s-filter&page=s-page&pageSize=s-page-size&sort=s-sort&sortBy=s-sort-by", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey get-all-workspaces", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/workspace", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey get-all-workspaces", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/workspace?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey get-historic-events", - "variant": "all-flags", - "args": [ - "--data=s-data", - "--filter=s-filter", - "--identity=s-identity", - "--page=s-page", - "--page-size=s-page-size", - "--sort=s-sort", - "--sort-by=s-sort-by", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/api/events/workspace-id/s-workspace-id?data=s-data&filter=s-filter&identity=s-identity&page=s-page&pageSize=s-page-size&sort=s-sort&sortBy=s-sort-by", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey get-historic-events", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/api/events/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey get-historic-events", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/api/events/workspace-id/s-workspace-id?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey get-historic-profile-view", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id", - "--template-id=s-template-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/api/progressive-profile-view/workspace-id/s-workspace-id/person-id/s-person-id/template-id/s-template-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey get-historic-profile-view", - "variant": "required", - "args": [ - "--person-id=s-person-id", - "--template-id=s-template-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/api/progressive-profile-view/workspace-id/s-workspace-id/person-id/s-person-id/template-id/s-template-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey get-historic-profile-view", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--template-id=s-template-id", - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/api/progressive-profile-view/workspace-id/s-workspace-id/person-id/s-person-id/template-id/s-template-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey get-historic-profile-view-identity-template-id", - "variant": "all-flags", - "args": [ - "--identity=s-identity", - "--template-id=s-template-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/api/progressive-profile-view/workspace-id/s-workspace-id/identity/s-identity/template-id/s-template-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey get-historic-profile-view-identity-template-id", - "variant": "required", - "args": [ - "--identity=s-identity", - "--template-id=s-template-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/api/progressive-profile-view/workspace-id/s-workspace-id/identity/s-identity/template-id/s-template-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey get-historic-profile-view-identity-template-id", - "variant": "paginate", - "args": [ - "--identity=s-identity", - "--template-id=s-template-id", - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/api/progressive-profile-view/workspace-id/s-workspace-id/identity/s-identity/template-id/s-template-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey get-historic-profile-view-identity-template-name", - "variant": "all-flags", - "args": [ - "--identity=s-identity", - "--template-name=s-template-name", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/api/progressive-profile-view/workspace-id/s-workspace-id/identity/s-identity/template-name/s-template-name", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey get-historic-profile-view-identity-template-name", - "variant": "required", - "args": [ - "--identity=s-identity", - "--template-name=s-template-name", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/api/progressive-profile-view/workspace-id/s-workspace-id/identity/s-identity/template-name/s-template-name", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey get-historic-profile-view-identity-template-name", - "variant": "paginate", - "args": [ - "--identity=s-identity", - "--template-name=s-template-name", - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/api/progressive-profile-view/workspace-id/s-workspace-id/identity/s-identity/template-name/s-template-name", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey get-historic-profile-view-template-name", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id", - "--template-name=s-template-name", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/progressive-profile-view/workspace-id/s-workspace-id/person-id/s-person-id/template-name/s-template-name", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey get-historic-profile-view-template-name", - "variant": "required", - "args": [ - "--person-id=s-person-id", - "--template-name=s-template-name", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/progressive-profile-view/workspace-id/s-workspace-id/person-id/s-person-id/template-name/s-template-name", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey get-historic-profile-view-template-name", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--template-name=s-template-name", - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/progressive-profile-view/workspace-id/s-workspace-id/person-id/s-person-id/template-name/s-template-name", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey get-template-searched-template-id", - "variant": "all-flags", - "args": [ - "--template-id=s-template-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/profile-view-template/workspace-id/s-workspace-id/template-id/s-template-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey get-template-searched-template-id", - "variant": "required", - "args": [ - "--template-id=s-template-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/profile-view-template/workspace-id/s-workspace-id/template-id/s-template-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey get-template-searched-template-id", - "variant": "paginate", - "args": [ - "--template-id=s-template-id", - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/profile-view-template/workspace-id/s-workspace-id/template-id/s-template-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey get-template-searched-template-name", - "variant": "all-flags", - "args": [ - "--template-name=s-template-name", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/profile-view-template/workspace-id/s-workspace-id/template-name/s-template-name", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey get-template-searched-template-name", - "variant": "required", - "args": [ - "--template-name=s-template-name", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/profile-view-template/workspace-id/s-workspace-id/template-name/s-template-name", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey get-template-searched-template-name", - "variant": "paginate", - "args": [ - "--template-name=s-template-name", - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/profile-view-template/workspace-id/s-workspace-id/template-name/s-template-name", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey get-workspace", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/workspace/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey get-workspace", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/workspace/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey get-workspace", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/workspace/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey get-wxcc-subscription", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/wxcc-subscription/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey get-wxcc-subscription", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/wxcc-subscription/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey get-wxcc-subscription", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/wxcc-subscription/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey merges-identities-primary-identity", - "variant": "all-flags", - "args": [ - "--person-ids-to-merge=s-person-ids-to-merge-1,s-person-ids-to-merge-2", - "--primary-person-id=s-primary-person-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/person/merge/workspace-id/s-workspace-id/primary-person-id/s-primary-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"personIdsToMerge\":[\"s-person-ids-to-merge-1\",\"s-person-ids-to-merge-2\"]}" - } - ] - }, - { - "command": "cc journey merges-identities-primary-identity", - "variant": "required", - "args": [ - "--primary-person-id=s-primary-person-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/person/merge/workspace-id/s-workspace-id/primary-person-id/s-primary-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey merges-identities-primary-identity", - "variant": "body", - "args": [ - "--primary-person-id=s-primary-person-id", - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/person/merge/workspace-id/s-workspace-id/primary-person-id/s-primary-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc journey search-identity-aliases", - "variant": "all-flags", - "args": [ - "--aliases=s-aliases", - "--page=s-page", - "--page-size=s-page-size", - "--sort=s-sort", - "--sort-by=s-sort-by", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/person/workspace-id/s-workspace-id/aliases/s-aliases?page=s-page&pageSize=s-page-size&sort=s-sort&sortBy=s-sort-by", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey search-identity-aliases", - "variant": "required", - "args": [ - "--aliases=s-aliases", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/person/workspace-id/s-workspace-id/aliases/s-aliases", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey search-identity-aliases", - "variant": "paginate", - "args": [ - "--aliases=s-aliases", - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/person/workspace-id/s-workspace-id/aliases/s-aliases?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey stream-events-identity", - "variant": "all-flags", - "args": [ - "--data=s-data", - "--filter=s-filter", - "--identity=s-identity", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/api/events/stream/workspace-id/s-workspace-id/identity/s-identity?data=s-data&filter=s-filter", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey stream-events-identity", - "variant": "required", - "args": [ - "--identity=s-identity", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/api/events/stream/workspace-id/s-workspace-id/identity/s-identity", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey stream-events-identity", - "variant": "paginate", - "args": [ - "--identity=s-identity", - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/api/events/stream/workspace-id/s-workspace-id/identity/s-identity", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey stream-profile-views", - "variant": "all-flags", - "args": [ - "--identity=s-identity", - "--template-id=s-template-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/api/progressive-profile-view/stream/workspace-id/s-workspace-id/identity/s-identity/template-id/s-template-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey stream-profile-views", - "variant": "required", - "args": [ - "--identity=s-identity", - "--template-id=s-template-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/api/progressive-profile-view/stream/workspace-id/s-workspace-id/identity/s-identity/template-id/s-template-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey stream-profile-views", - "variant": "paginate", - "args": [ - "--identity=s-identity", - "--template-id=s-template-id", - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/api/progressive-profile-view/stream/workspace-id/s-workspace-id/identity/s-identity/template-id/s-template-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey stream-profile-views-template-name", - "variant": "all-flags", - "args": [ - "--identity=s-identity", - "--template-name=s-template-name", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/api/progressive-profile-view/stream/workspace-id/s-workspace-id/identity/s-identity/template-name/s-template-name", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey stream-profile-views-template-name", - "variant": "required", - "args": [ - "--identity=s-identity", - "--template-name=s-template-name", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/api/progressive-profile-view/stream/workspace-id/s-workspace-id/identity/s-identity/template-name/s-template-name", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey stream-profile-views-template-name", - "variant": "paginate", - "args": [ - "--identity=s-identity", - "--template-name=s-template-name", - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/api/progressive-profile-view/stream/workspace-id/s-workspace-id/identity/s-identity/template-name/s-template-name", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey update-action", - "variant": "all-flags", - "args": [ - "--action-id=s-action-id", - "--template-id=s-template-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/journey-actions/workspace-id/s-workspace-id/template-id/s-template-id/action-id/s-action-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey update-action", - "variant": "required", - "args": [ - "--action-id=s-action-id", - "--template-id=s-template-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/journey-actions/workspace-id/s-workspace-id/template-id/s-template-id/action-id/s-action-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey update-action", - "variant": "body", - "args": [ - "--action-id=s-action-id", - "--template-id=s-template-id", - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/journey-actions/workspace-id/s-workspace-id/template-id/s-template-id/action-id/s-action-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc journey update-profileviewtemplate", - "variant": "all-flags", - "args": [ - "--template-id=s-template-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/profile-view-template/workspace-id/s-workspace-id/template-id/s-template-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey update-profileviewtemplate", - "variant": "required", - "args": [ - "--template-id=s-template-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/profile-view-template/workspace-id/s-workspace-id/template-id/s-template-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey update-profileviewtemplate", - "variant": "body", - "args": [ - "--template-id=s-template-id", - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/profile-view-template/workspace-id/s-workspace-id/template-id/s-template-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc journey update-workspace", - "variant": "all-flags", - "args": [ - "--description=s-description", - "--name=s-name", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/workspace/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"description\":\"s-description\",\"name\":\"s-name\"}" - } - ] - }, - { - "command": "cc journey update-workspace", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/workspace/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey update-workspace", - "variant": "body", - "args": [ - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/workspace/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc journey-customer-identification create-one-more-identities-person", - "variant": "all-flags", - "args": [ - "--customer-id=s-customer-id-1,s-customer-id-2", - "--email=s-email-1,s-email-2", - "--person-id=s-person-id", - "--phone=s-phone-1,s-phone-2", - "--temporary-id=s-temporary-id-1,s-temporary-id-2", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/person/add-identities/workspace-id/s-workspace-id/person-id/s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"customerId\":[\"s-customer-id-1\",\"s-customer-id-2\"],\"email\":[\"s-email-1\",\"s-email-2\"],\"phone\":[\"s-phone-1\",\"s-phone-2\"],\"temporaryId\":[\"s-temporary-id-1\",\"s-temporary-id-2\"]}" - } - ] - }, - { - "command": "cc journey-customer-identification create-one-more-identities-person", - "variant": "required", - "args": [ - "--person-id=s-person-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/person/add-identities/workspace-id/s-workspace-id/person-id/s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-customer-identification create-one-more-identities-person", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/person/add-identities/workspace-id/s-workspace-id/person-id/s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc journey-customer-identification create-person", - "variant": "all-flags", - "args": [ - "--customer-id=s-customer-id-1,s-customer-id-2", - "--email=s-email-1,s-email-2", - "--first-name=s-first-name", - "--last-name=s-last-name", - "--phone=s-phone-1,s-phone-2", - "--temporary-id=s-temporary-id-1,s-temporary-id-2", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/person/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"customerId\":[\"s-customer-id-1\",\"s-customer-id-2\"],\"email\":[\"s-email-1\",\"s-email-2\"],\"firstName\":\"s-first-name\",\"lastName\":\"s-last-name\",\"phone\":[\"s-phone-1\",\"s-phone-2\"],\"temporaryId\":[\"s-temporary-id-1\",\"s-temporary-id-2\"]}" - } - ] - }, - { - "command": "cc journey-customer-identification create-person", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/person/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-customer-identification create-person", - "variant": "body", - "args": [ - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/person/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc journey-customer-identification create-remove-replace-person", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/person/workspace-id/s-workspace-id/person-id/s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-customer-identification create-remove-replace-person", - "variant": "required", - "args": [ - "--person-id=s-person-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/person/workspace-id/s-workspace-id/person-id/s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-customer-identification create-remove-replace-person", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/person/workspace-id/s-workspace-id/person-id/s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc journey-customer-identification creates-merges-aliases-individual-jds", - "variant": "all-flags", - "args": [ - "--customer-id=s-customer-id-1,s-customer-id-2", - "--email=s-email-1,s-email-2", - "--first-name=s-first-name", - "--last-name=s-last-name", - "--override=true", - "--phone=s-phone-1,s-phone-2", - "--social-id=s-social-id-1,s-social-id-2", - "--temporary-id=s-temporary-id-1,s-temporary-id-2", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/person/merge-identities/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"customerId\":[\"s-customer-id-1\",\"s-customer-id-2\"],\"email\":[\"s-email-1\",\"s-email-2\"],\"firstName\":\"s-first-name\",\"lastName\":\"s-last-name\",\"override\":true,\"phone\":[\"s-phone-1\",\"s-phone-2\"],\"socialId\":[\"s-social-id-1\",\"s-social-id-2\"],\"temporaryId\":[\"s-temporary-id-1\",\"s-temporary-id-2\"]}" - } - ] - }, - { - "command": "cc journey-customer-identification creates-merges-aliases-individual-jds", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/person/merge-identities/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-customer-identification creates-merges-aliases-individual-jds", - "variant": "body", - "args": [ - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/person/merge-identities/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc journey-customer-identification delete-one-more-identities-person", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/person/remove-identities/workspace-id/s-workspace-id/person-id/s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-customer-identification delete-one-more-identities-person", - "variant": "required", - "args": [ - "--person-id=s-person-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/person/remove-identities/workspace-id/s-workspace-id/person-id/s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-customer-identification delete-one-more-identities-person", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/person/remove-identities/workspace-id/s-workspace-id/person-id/s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc journey-customer-identification delete-person-id", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/person/workspace-id/s-workspace-id/person-id/s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-customer-identification delete-person-id", - "variant": "required", - "args": [ - "--person-id=s-person-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/person/workspace-id/s-workspace-id/person-id/s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-customer-identification get-all-person", - "variant": "all-flags", - "args": [ - "--filter=s-filter", - "--page=s-page", - "--page-size=s-page-size", - "--person-id=s-person-id", - "--sort=s-sort", - "--sort-by=s-sort-by", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/person/workspace-id/s-workspace-id?filter=s-filter&page=s-page&pageSize=s-page-size&personId=s-person-id&sort=s-sort&sortBy=s-sort-by", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-customer-identification get-all-person", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/person/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-customer-identification get-all-person", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/person/workspace-id/s-workspace-id?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-customer-identification merges-identities-primary-identity", - "variant": "all-flags", - "args": [ - "--person-ids-to-merge=s-person-ids-to-merge-1,s-person-ids-to-merge-2", - "--primary-person-id=s-primary-person-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/person/merge/workspace-id/s-workspace-id/primary-person-id/s-primary-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"personIdsToMerge\":[\"s-person-ids-to-merge-1\",\"s-person-ids-to-merge-2\"]}" - } - ] - }, - { - "command": "cc journey-customer-identification merges-identities-primary-identity", - "variant": "required", - "args": [ - "--primary-person-id=s-primary-person-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/person/merge/workspace-id/s-workspace-id/primary-person-id/s-primary-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-customer-identification merges-identities-primary-identity", - "variant": "body", - "args": [ - "--primary-person-id=s-primary-person-id", - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/person/merge/workspace-id/s-workspace-id/primary-person-id/s-primary-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc journey-customer-identification search-identity-aliases", - "variant": "all-flags", - "args": [ - "--aliases=s-aliases", - "--page=s-page", - "--page-size=s-page-size", - "--sort=s-sort", - "--sort-by=s-sort-by", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/person/workspace-id/s-workspace-id/aliases/s-aliases?page=s-page&pageSize=s-page-size&sort=s-sort&sortBy=s-sort-by", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-customer-identification search-identity-aliases", - "variant": "required", - "args": [ - "--aliases=s-aliases", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/person/workspace-id/s-workspace-id/aliases/s-aliases", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-customer-identification search-identity-aliases", - "variant": "paginate", - "args": [ - "--aliases=s-aliases", - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/person/workspace-id/s-workspace-id/aliases/s-aliases?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-data-ingestion event-posting", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/publish/v1/api/event?workspaceId=s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-data-ingestion event-posting", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/publish/v1/api/event", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-data-ingestion event-posting", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/publish/v1/api/event", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc journey-profile-creation-insights create-template", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/profile-view-template/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-profile-creation-insights create-template", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/profile-view-template/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-profile-creation-insights create-template", - "variant": "body", - "args": [ - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/profile-view-template/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc journey-profile-creation-insights delete-template-template-id", - "variant": "all-flags", - "args": [ - "--template-id=s-template-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/profile-view-template/workspace-id/s-workspace-id/template-id/s-template-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-profile-creation-insights delete-template-template-id", - "variant": "required", - "args": [ - "--template-id=s-template-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/profile-view-template/workspace-id/s-workspace-id/template-id/s-template-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-profile-creation-insights get-all-template", - "variant": "all-flags", - "args": [ - "--filter=s-filter", - "--page=s-page", - "--page-size=s-page-size", - "--sort=s-sort", - "--sort-by=s-sort-by", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/profile-view-template/workspace-id/s-workspace-id?filter=s-filter&page=s-page&pageSize=s-page-size&sort=s-sort&sortBy=s-sort-by", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-profile-creation-insights get-all-template", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/profile-view-template/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-profile-creation-insights get-all-template", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/profile-view-template/workspace-id/s-workspace-id?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-profile-creation-insights get-historic-events", - "variant": "all-flags", - "args": [ - "--data=s-data", - "--filter=s-filter", - "--identity=s-identity", - "--page=s-page", - "--page-size=s-page-size", - "--sort=s-sort", - "--sort-by=s-sort-by", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/api/events/workspace-id/s-workspace-id?data=s-data&filter=s-filter&identity=s-identity&page=s-page&pageSize=s-page-size&sort=s-sort&sortBy=s-sort-by", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-profile-creation-insights get-historic-events", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/api/events/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-profile-creation-insights get-historic-events", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/api/events/workspace-id/s-workspace-id?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-profile-creation-insights get-historic-view", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id", - "--template-id=s-template-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/api/progressive-profile-view/workspace-id/s-workspace-id/person-id/s-person-id/template-id/s-template-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-profile-creation-insights get-historic-view", - "variant": "required", - "args": [ - "--person-id=s-person-id", - "--template-id=s-template-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/api/progressive-profile-view/workspace-id/s-workspace-id/person-id/s-person-id/template-id/s-template-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-profile-creation-insights get-historic-view", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--template-id=s-template-id", - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/api/progressive-profile-view/workspace-id/s-workspace-id/person-id/s-person-id/template-id/s-template-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-profile-creation-insights get-historic-view-template-id", - "variant": "all-flags", - "args": [ - "--identity=s-identity", - "--template-id=s-template-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/api/progressive-profile-view/workspace-id/s-workspace-id/identity/s-identity/template-id/s-template-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-profile-creation-insights get-historic-view-template-id", - "variant": "required", - "args": [ - "--identity=s-identity", - "--template-id=s-template-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/api/progressive-profile-view/workspace-id/s-workspace-id/identity/s-identity/template-id/s-template-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-profile-creation-insights get-historic-view-template-id", - "variant": "paginate", - "args": [ - "--identity=s-identity", - "--template-id=s-template-id", - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/api/progressive-profile-view/workspace-id/s-workspace-id/identity/s-identity/template-id/s-template-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-profile-creation-insights get-historic-view-template-name", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id", - "--template-name=s-template-name", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/api/progressive-profile-view/workspace-id/s-workspace-id/person-id/s-person-id/template-name/s-template-name", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-profile-creation-insights get-historic-view-template-name", - "variant": "required", - "args": [ - "--person-id=s-person-id", - "--template-name=s-template-name", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/api/progressive-profile-view/workspace-id/s-workspace-id/person-id/s-person-id/template-name/s-template-name", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-profile-creation-insights get-historic-view-template-name", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--template-name=s-template-name", - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/api/progressive-profile-view/workspace-id/s-workspace-id/person-id/s-person-id/template-name/s-template-name", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-profile-creation-insights get-historic-view-template-name-2", - "variant": "all-flags", - "args": [ - "--identity=s-identity", - "--template-name=s-template-name", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/api/progressive-profile-view/workspace-id/s-workspace-id/identity/s-identity/template-name/s-template-name", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-profile-creation-insights get-historic-view-template-name-2", - "variant": "required", - "args": [ - "--identity=s-identity", - "--template-name=s-template-name", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/api/progressive-profile-view/workspace-id/s-workspace-id/identity/s-identity/template-name/s-template-name", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-profile-creation-insights get-historic-view-template-name-2", - "variant": "paginate", - "args": [ - "--identity=s-identity", - "--template-name=s-template-name", - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/api/progressive-profile-view/workspace-id/s-workspace-id/identity/s-identity/template-name/s-template-name", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-profile-creation-insights get-template-searched-template-id", - "variant": "all-flags", - "args": [ - "--template-id=s-template-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/profile-view-template/workspace-id/s-workspace-id/template-id/s-template-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-profile-creation-insights get-template-searched-template-id", - "variant": "required", - "args": [ - "--template-id=s-template-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/profile-view-template/workspace-id/s-workspace-id/template-id/s-template-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-profile-creation-insights get-template-searched-template-id", - "variant": "paginate", - "args": [ - "--template-id=s-template-id", - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/profile-view-template/workspace-id/s-workspace-id/template-id/s-template-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-profile-creation-insights get-template-searched-template-name", - "variant": "all-flags", - "args": [ - "--template-name=s-template-name", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/profile-view-template/workspace-id/s-workspace-id/template-name/s-template-name", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-profile-creation-insights get-template-searched-template-name", - "variant": "required", - "args": [ - "--template-name=s-template-name", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/profile-view-template/workspace-id/s-workspace-id/template-name/s-template-name", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-profile-creation-insights get-template-searched-template-name", - "variant": "paginate", - "args": [ - "--template-name=s-template-name", - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/profile-view-template/workspace-id/s-workspace-id/template-name/s-template-name", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-profile-creation-insights stream-events-identity", - "variant": "all-flags", - "args": [ - "--data=s-data", - "--filter=s-filter", - "--identity=s-identity", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/api/events/stream/workspace-id/s-workspace-id/identity/s-identity?data=s-data&filter=s-filter", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-profile-creation-insights stream-events-identity", - "variant": "required", - "args": [ - "--identity=s-identity", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/api/events/stream/workspace-id/s-workspace-id/identity/s-identity", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-profile-creation-insights stream-events-identity", - "variant": "paginate", - "args": [ - "--identity=s-identity", - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/api/events/stream/workspace-id/s-workspace-id/identity/s-identity", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-profile-creation-insights stream-views-template-id", - "variant": "all-flags", - "args": [ - "--identity=s-identity", - "--template-id=s-template-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/api/progressive-profile-view/stream/workspace-id/s-workspace-id/identity/s-identity/template-id/s-template-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-profile-creation-insights stream-views-template-id", - "variant": "required", - "args": [ - "--identity=s-identity", - "--template-id=s-template-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/api/progressive-profile-view/stream/workspace-id/s-workspace-id/identity/s-identity/template-id/s-template-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-profile-creation-insights stream-views-template-id", - "variant": "paginate", - "args": [ - "--identity=s-identity", - "--template-id=s-template-id", - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/api/progressive-profile-view/stream/workspace-id/s-workspace-id/identity/s-identity/template-id/s-template-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-profile-creation-insights stream-views-template-name", - "variant": "all-flags", - "args": [ - "--identity=s-identity", - "--template-name=s-template-name", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/api/progressive-profile-view/stream/workspace-id/s-workspace-id/identity/s-identity/template-name/s-template-name", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-profile-creation-insights stream-views-template-name", - "variant": "required", - "args": [ - "--identity=s-identity", - "--template-name=s-template-name", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/api/progressive-profile-view/stream/workspace-id/s-workspace-id/identity/s-identity/template-name/s-template-name", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-profile-creation-insights stream-views-template-name", - "variant": "paginate", - "args": [ - "--identity=s-identity", - "--template-name=s-template-name", - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/api/progressive-profile-view/stream/workspace-id/s-workspace-id/identity/s-identity/template-name/s-template-name", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-profile-creation-insights update-profileviewtemplate", - "variant": "all-flags", - "args": [ - "--template-id=s-template-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/profile-view-template/workspace-id/s-workspace-id/template-id/s-template-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-profile-creation-insights update-profileviewtemplate", - "variant": "required", - "args": [ - "--template-id=s-template-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/profile-view-template/workspace-id/s-workspace-id/template-id/s-template-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-profile-creation-insights update-profileviewtemplate", - "variant": "body", - "args": [ - "--template-id=s-template-id", - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/profile-view-template/workspace-id/s-workspace-id/template-id/s-template-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc journey-subscription create-wxcc", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/wxcc-subscription/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-subscription create-wxcc", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/wxcc-subscription/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-subscription delete-wxcc", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/wxcc-subscription/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-subscription delete-wxcc", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/wxcc-subscription/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-subscription get-wxcc", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/wxcc-subscription/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-subscription get-wxcc", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/wxcc-subscription/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-subscription get-wxcc", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/wxcc-subscription/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-trigger-actions create", - "variant": "all-flags", - "args": [ - "--template-id=s-template-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/journey-actions/workspace-id/s-workspace-id/template-id/s-template-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-trigger-actions create", - "variant": "required", - "args": [ - "--template-id=s-template-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/journey-actions/workspace-id/s-workspace-id/template-id/s-template-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-trigger-actions create", - "variant": "body", - "args": [ - "--template-id=s-template-id", - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/journey-actions/workspace-id/s-workspace-id/template-id/s-template-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc journey-trigger-actions delete-configuration-actionid", - "variant": "all-flags", - "args": [ - "--action-id=s-action-id", - "--template-id=s-template-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/journey-actions/workspace-id/s-workspace-id/template-id/s-template-id/action-id/s-action-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-trigger-actions delete-configuration-actionid", - "variant": "required", - "args": [ - "--action-id=s-action-id", - "--template-id=s-template-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/journey-actions/workspace-id/s-workspace-id/template-id/s-template-id/action-id/s-action-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-trigger-actions get-actionid", - "variant": "all-flags", - "args": [ - "--action-id=s-action-id", - "--template-id=s-template-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/journey-actions/workspace-id/s-workspace-id/template-id/s-template-id/action-id/s-action-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-trigger-actions get-actionid", - "variant": "required", - "args": [ - "--action-id=s-action-id", - "--template-id=s-template-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/journey-actions/workspace-id/s-workspace-id/template-id/s-template-id/action-id/s-action-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-trigger-actions get-actionid", - "variant": "paginate", - "args": [ - "--action-id=s-action-id", - "--template-id=s-template-id", - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/journey-actions/workspace-id/s-workspace-id/template-id/s-template-id/action-id/s-action-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-trigger-actions get-all", - "variant": "all-flags", - "args": [ - "--page=s-page", - "--page-size=s-page-size", - "--sort=s-sort", - "--sort-by=s-sort-by", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/journey-actions/workspace-id/s-workspace-id?page=s-page&pageSize=s-page-size&sort=s-sort&sortBy=s-sort-by", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-trigger-actions get-all", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/journey-actions/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-trigger-actions get-all", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/journey-actions/workspace-id/s-workspace-id?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-trigger-actions get-all-template", - "variant": "all-flags", - "args": [ - "--template-id=s-template-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/journey-actions/workspace-id/s-workspace-id/template-id/s-template-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-trigger-actions get-all-template", - "variant": "required", - "args": [ - "--template-id=s-template-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/journey-actions/workspace-id/s-workspace-id/template-id/s-template-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-trigger-actions get-all-template", - "variant": "paginate", - "args": [ - "--template-id=s-template-id", - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/journey-actions/workspace-id/s-workspace-id/template-id/s-template-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-trigger-actions get-name", - "variant": "all-flags", - "args": [ - "--action-name=s-action-name", - "--template-id=s-template-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/journey-actions/workspace-id/s-workspace-id/template-id/s-template-id/action-name/s-action-name", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-trigger-actions get-name", - "variant": "required", - "args": [ - "--action-name=s-action-name", - "--template-id=s-template-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/journey-actions/workspace-id/s-workspace-id/template-id/s-template-id/action-name/s-action-name", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-trigger-actions get-name", - "variant": "paginate", - "args": [ - "--action-name=s-action-name", - "--template-id=s-template-id", - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/journey-actions/workspace-id/s-workspace-id/template-id/s-template-id/action-name/s-action-name", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-trigger-actions update", - "variant": "all-flags", - "args": [ - "--action-id=s-action-id", - "--template-id=s-template-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/journey-actions/workspace-id/s-workspace-id/template-id/s-template-id/action-id/s-action-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-trigger-actions update", - "variant": "required", - "args": [ - "--action-id=s-action-id", - "--template-id=s-template-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/journey-actions/workspace-id/s-workspace-id/template-id/s-template-id/action-id/s-action-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-trigger-actions update", - "variant": "body", - "args": [ - "--action-id=s-action-id", - "--template-id=s-template-id", - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/journey-actions/workspace-id/s-workspace-id/template-id/s-template-id/action-id/s-action-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc journey-workspace-management create", - "variant": "all-flags", - "args": [ - "--description=s-description", - "--name=s-name" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/workspace", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"description\":\"s-description\",\"name\":\"s-name\"}" - } - ] - }, - { - "command": "cc journey-workspace-management create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/workspace", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-workspace-management create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/workspace", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc journey-workspace-management delete", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/workspace/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-workspace-management delete", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/workspace/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-workspace-management get", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/workspace/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-workspace-management get", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/workspace/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-workspace-management get", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/workspace/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-workspace-management get-all", - "variant": "all-flags", - "args": [ - "--filter=s-filter", - "--page=s-page", - "--page-size=s-page-size", - "--sort=s-sort", - "--sort-by=s-sort-by" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/workspace?filter=s-filter&page=s-page&pageSize=s-page-size&sort=s-sort&sortBy=s-sort-by", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-workspace-management get-all", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/workspace", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-workspace-management get-all", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/workspace?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-workspace-management update", - "variant": "all-flags", - "args": [ - "--description=s-description", - "--name=s-name", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/workspace/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"description\":\"s-description\",\"name\":\"s-name\"}" - } - ] - }, - { - "command": "cc journey-workspace-management update", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/workspace/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc journey-workspace-management update", - "variant": "body", - "args": [ - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/admin/v1/api/workspace/workspace-id/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc multimedia-profile bulk-export", - "variant": "all-flags", - "args": [ - "--page=s-page", - "--page-size=s-page-size" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/multimedia-profile/bulk-export?page=s-page&pageSize=s-page-size", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc multimedia-profile bulk-export", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/multimedia-profile/bulk-export", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc multimedia-profile bulk-export", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/multimedia-profile/bulk-export?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc multimedia-profile bulk-save", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/multimedia-profile/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc multimedia-profile bulk-save", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/multimedia-profile/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc multimedia-profile bulk-save", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/multimedia-profile/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc multimedia-profile create", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/multimedia-profile", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc multimedia-profile create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/multimedia-profile", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc multimedia-profile create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/multimedia-profile", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc multimedia-profile delete", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/multimedia-profile/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc multimedia-profile delete", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/multimedia-profile/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc multimedia-profile get", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/multimedia-profile/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc multimedia-profile get", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/multimedia-profile/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc multimedia-profile get", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/multimedia-profile/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc multimedia-profile list", - "variant": "all-flags", - "args": [ - "--attributes=s-attributes", - "--filter=s-filter", - "--page=s-page", - "--page-size=s-page-size", - "--search=s-search" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/multimedia-profile?attributes=s-attributes&filter=s-filter&page=s-page&pageSize=s-page-size&search=s-search", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc multimedia-profile list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/multimedia-profile", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc multimedia-profile list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/multimedia-profile?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc multimedia-profile list-references", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--page=s-page", - "--page-size=s-page-size", - "--type=s-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/multimedia-profile/s-id/incoming-references?page=s-page&pageSize=s-page-size&type=s-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc multimedia-profile list-references", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/multimedia-profile/s-id/incoming-references", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc multimedia-profile list-references", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/multimedia-profile/s-id/incoming-references?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc multimedia-profile purge-inactive", - "variant": "all-flags", - "args": [ - "--next-start-id=s-next-start-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/multimedia-profile/purge-inactive-entities?nextStartId=s-next-start-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc multimedia-profile purge-inactive", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/multimedia-profile/purge-inactive-entities", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc multimedia-profile update", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/multimedia-profile/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc multimedia-profile update", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/multimedia-profile/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc multimedia-profile update", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/multimedia-profile/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc notification subscribe", - "variant": "all-flags", - "args": [ - "--allow-multi-login=true", - "--client-type=s-client-type", - "--force=true", - "--is-keep-alive-enabled=true" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/notification/subscribe", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"allowMultiLogin\":true,\"clientType\":\"s-client-type\",\"force\":true,\"isKeepAliveEnabled\":true}" - } - ] - }, - { - "command": "cc notification subscribe", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/notification/subscribe", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc notification subscribe", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/notification/subscribe", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc organization-setting get", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/organization-setting/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc organization-setting get", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/organization-setting/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc organization-setting get", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/organization-setting/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc organization-setting list", - "variant": "all-flags", - "args": [ - "--attributes=s-attributes", - "--filter=s-filter", - "--page=s-page", - "--page-size=s-page-size", - "--search=s-search" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/organization-setting?attributes=s-attributes&filter=s-filter&page=s-page&pageSize=s-page-size&search=s-search", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc organization-setting list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/organization-setting", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc organization-setting list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/organization-setting?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc organization-setting patch", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/organization-setting/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc organization-setting patch", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/organization-setting/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc organization-setting patch", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/organization-setting/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc organization-setting update", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/organization-setting/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc organization-setting update", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/organization-setting/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc organization-setting update", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/organization-setting/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc outdial-ani bulk-export", - "variant": "all-flags", - "args": [ - "--page=s-page", - "--page-size=s-page-size" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/outdial-ani/bulk-export?page=s-page&pageSize=s-page-size", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc outdial-ani bulk-export", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/outdial-ani/bulk-export", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc outdial-ani bulk-export", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/outdial-ani/bulk-export?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc outdial-ani bulk-save", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/outdial-ani/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc outdial-ani bulk-save", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/outdial-ani/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc outdial-ani bulk-save", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/outdial-ani/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc outdial-ani bulk-save-entries", - "variant": "all-flags", - "args": [ - "--out-dial-ani-id=s-out-dial-ani-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/outdial-ani/s-out-dial-ani-id/entry/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc outdial-ani bulk-save-entries", - "variant": "required", - "args": [ - "--out-dial-ani-id=s-out-dial-ani-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/outdial-ani/s-out-dial-ani-id/entry/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc outdial-ani bulk-save-entries", - "variant": "body", - "args": [ - "--out-dial-ani-id=s-out-dial-ani-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/outdial-ani/s-out-dial-ani-id/entry/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc outdial-ani create", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/outdial-ani", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc outdial-ani create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/outdial-ani", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc outdial-ani create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/outdial-ani", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc outdial-ani create-entry", - "variant": "all-flags", - "args": [ - "--created-time=7", - "--default-anientry=true", - "--id=s-id", - "--last-updated-time=7", - "--name=s-name", - "--number=s-number", - "--organization-id=s-organization-id", - "--out-dial-ani-id=s-out-dial-ani-id", - "--version=7" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/outdial-ani/s-out-dial-ani-id/entry", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"createdTime\":7,\"defaultANIEntry\":true,\"id\":\"s-id\",\"lastUpdatedTime\":7,\"name\":\"s-name\",\"number\":\"s-number\",\"organizationId\":\"s-organization-id\",\"version\":7}" - } - ] - }, - { - "command": "cc outdial-ani create-entry", - "variant": "required", - "args": [ - "--out-dial-ani-id=s-out-dial-ani-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/outdial-ani/s-out-dial-ani-id/entry", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc outdial-ani create-entry", - "variant": "body", - "args": [ - "--out-dial-ani-id=s-out-dial-ani-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/outdial-ani/s-out-dial-ani-id/entry", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc outdial-ani delete", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/outdial-ani/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc outdial-ani delete", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/outdial-ani/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc outdial-ani delete-entry-id", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--out-dial-ani-id=s-out-dial-ani-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/outdial-ani/s-out-dial-ani-id/entry/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc outdial-ani delete-entry-id", - "variant": "required", - "args": [ - "--id=s-id", - "--out-dial-ani-id=s-out-dial-ani-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/outdial-ani/s-out-dial-ani-id/entry/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc outdial-ani get", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/outdial-ani/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc outdial-ani get", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/outdial-ani/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc outdial-ani get", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/outdial-ani/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc outdial-ani get-entry-id", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--out-dial-ani-id=s-out-dial-ani-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/outdial-ani/s-out-dial-ani-id/entry/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc outdial-ani get-entry-id", - "variant": "required", - "args": [ - "--id=s-id", - "--out-dial-ani-id=s-out-dial-ani-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/outdial-ani/s-out-dial-ani-id/entry/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc outdial-ani get-entry-id", - "variant": "paginate", - "args": [ - "--id=s-id", - "--out-dial-ani-id=s-out-dial-ani-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/outdial-ani/s-out-dial-ani-id/entry/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc outdial-ani list", - "variant": "all-flags", - "args": [ - "--attributes=s-attributes", - "--filter=s-filter", - "--page=s-page", - "--page-size=s-page-size", - "--search=s-search", - "--single-object-response=s-single-object-response" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/outdial-ani?attributes=s-attributes&filter=s-filter&page=s-page&pageSize=s-page-size&search=s-search&singleObjectResponse=s-single-object-response", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc outdial-ani list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/outdial-ani", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc outdial-ani list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/outdial-ani?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc outdial-ani list-entries", - "variant": "all-flags", - "args": [ - "--attributes=s-attributes", - "--filter=s-filter", - "--page=s-page", - "--page-size=s-page-size", - "--search=s-search" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/outdial-ani/entry?attributes=s-attributes&filter=s-filter&page=s-page&pageSize=s-page-size&search=s-search", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc outdial-ani list-entries", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/outdial-ani/entry", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc outdial-ani list-entries", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/outdial-ani/entry?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc outdial-ani list-entries-for-ani", - "variant": "all-flags", - "args": [ - "--attributes=s-attributes", - "--filter=s-filter", - "--out-dial-ani-id=s-out-dial-ani-id", - "--page=s-page", - "--page-size=s-page-size", - "--search=s-search" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/outdial-ani/s-out-dial-ani-id/entry?attributes=s-attributes&filter=s-filter&page=s-page&pageSize=s-page-size&search=s-search", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc outdial-ani list-entries-for-ani", - "variant": "required", - "args": [ - "--out-dial-ani-id=s-out-dial-ani-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/outdial-ani/s-out-dial-ani-id/entry", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc outdial-ani list-entries-for-ani", - "variant": "paginate", - "args": [ - "--out-dial-ani-id=s-out-dial-ani-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/outdial-ani/s-out-dial-ani-id/entry?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc outdial-ani list-references", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--page=s-page", - "--page-size=s-page-size", - "--type=s-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/outdial-ani/s-id/incoming-references?page=s-page&pageSize=s-page-size&type=s-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc outdial-ani list-references", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/outdial-ani/s-id/incoming-references", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc outdial-ani list-references", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/outdial-ani/s-id/incoming-references?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc outdial-ani update", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/outdial-ani/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc outdial-ani update", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/outdial-ani/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc outdial-ani update", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/outdial-ani/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc outdial-ani update-entry-id", - "variant": "all-flags", - "args": [ - "--created-time=7", - "--default-anientry=true", - "--id=s-id", - "--last-updated-time=7", - "--name=s-name", - "--number=s-number", - "--organization-id=s-organization-id", - "--out-dial-ani-id=s-out-dial-ani-id", - "--version=7" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/outdial-ani/s-out-dial-ani-id/entry/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"createdTime\":7,\"defaultANIEntry\":true,\"id\":\"s-id\",\"lastUpdatedTime\":7,\"name\":\"s-name\",\"number\":\"s-number\",\"organizationId\":\"s-organization-id\",\"version\":7}" - } - ] - }, - { - "command": "cc outdial-ani update-entry-id", - "variant": "required", - "args": [ - "--id=s-id", - "--out-dial-ani-id=s-out-dial-ani-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/outdial-ani/s-out-dial-ani-id/entry/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"id\":\"s-id\"}" - } - ] - }, - { - "command": "cc outdial-ani update-entry-id", - "variant": "body", - "args": [ - "--id=s-id", - "--out-dial-ani-id=s-out-dial-ani-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/outdial-ani/s-out-dial-ani-id/entry/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc overrides bulk-export", - "variant": "all-flags", - "args": [ - "--page=s-page", - "--page-size=s-page-size" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/overrides/bulk-export?page=s-page&pageSize=s-page-size", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc overrides bulk-export", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/overrides/bulk-export", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc overrides bulk-export", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/overrides/bulk-export?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc overrides bulk-save", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/overrides/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc overrides bulk-save", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/overrides/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc overrides bulk-save", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/overrides/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc overrides create", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/overrides", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc overrides create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/overrides", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc overrides create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/overrides", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc overrides delete", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/overrides/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc overrides delete", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/overrides/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc overrides get", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/overrides/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc overrides get", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/overrides/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc overrides get", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/overrides/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc overrides list", - "variant": "all-flags", - "args": [ - "--attributes=s-attributes", - "--filter=s-filter", - "--include-latest-override=s-include-latest-override", - "--page=s-page", - "--page-size=s-page-size", - "--search=s-search", - "--single-object-response=s-single-object-response", - "--sort=s-sort" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/overrides?attributes=s-attributes&filter=s-filter&includeLatestOverride=s-include-latest-override&page=s-page&pageSize=s-page-size&search=s-search&singleObjectResponse=s-single-object-response&sort=s-sort", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc overrides list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/overrides", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc overrides list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/overrides?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc overrides list-references", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--page=s-page", - "--page-size=s-page-size", - "--type=s-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/overrides/s-id/incoming-references?page=s-page&pageSize=s-page-size&type=s-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc overrides list-references", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/overrides/s-id/incoming-references", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc overrides list-references", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/overrides/s-id/incoming-references?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc overrides update", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/overrides/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc overrides update", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/overrides/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc overrides update", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/overrides/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc queues get-statistics", - "variant": "all-flags", - "args": [ - "--from=2026-01-01T00:00:00.000Z", - "--interval=s-interval", - "--queue-ids=s-queue-ids", - "--to=2026-01-02T00:00:00.000Z", - "--tracking-id=s-tracking-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/queues/statistics?from=2026-01-01T00%3A00%3A00.000Z&interval=s-interval&orgId=6ab1d2c4-0000-4000-8000-00000000c1d0&queueIds=s-queue-ids&to=2026-01-02T00%3A00%3A00.000Z", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Trackingid": "s-tracking-id" - } - } - ] - }, - { - "command": "cc queues get-statistics", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/queues/statistics?orgId=6ab1d2c4-0000-4000-8000-00000000c1d0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc queues get-statistics", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/queues/statistics?orgId=6ab1d2c4-0000-4000-8000-00000000c1d0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc realtime subscribe-notification", - "variant": "all-flags", - "args": [ - "--allow-multi-login=true", - "--client-type=s-client-type", - "--force=true", - "--is-keep-alive-enabled=true" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/realtime/subscribe", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"allowMultiLogin\":true,\"clientType\":\"s-client-type\",\"force\":true,\"isKeepAliveEnabled\":true}" - } - ] - }, - { - "command": "cc realtime subscribe-notification", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/realtime/subscribe", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc realtime subscribe-notification", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/realtime/subscribe", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc resource-collection bulk-partial-update", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/resource-collection/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc resource-collection bulk-partial-update", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/resource-collection/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc resource-collection bulk-partial-update", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/resource-collection/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc resource-collection create", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/resource-collection", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc resource-collection create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/resource-collection", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc resource-collection create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/resource-collection", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc resource-collection delete", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/resource-collection/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc resource-collection delete", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/resource-collection/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc resource-collection get", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/resource-collection/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc resource-collection get", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/resource-collection/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc resource-collection get", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/resource-collection/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc resource-collection list", - "variant": "all-flags", - "args": [ - "--attributes=s-attributes", - "--filter=s-filter", - "--page=s-page", - "--page-size=s-page-size", - "--search=s-search" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/resource-collection?attributes=s-attributes&filter=s-filter&page=s-page&pageSize=s-page-size&search=s-search", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc resource-collection list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/resource-collection", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc resource-collection list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/resource-collection?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc resource-collection list-references", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--page=s-page", - "--page-size=s-page-size", - "--type=s-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/resource-collection/s-id/incoming-references?page=s-page&pageSize=s-page-size&type=s-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc resource-collection list-references", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/resource-collection/s-id/incoming-references", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc resource-collection list-references", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/resource-collection/s-id/incoming-references?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc resource-collection update", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/resource-collection/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc resource-collection update", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/resource-collection/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc resource-collection update", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/resource-collection/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc resource-collection update-default", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/resource-collection/update-resource", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc resource-collection update-default", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/resource-collection/update-resource", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc resource-collection update-default", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/resource-collection/update-resource", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc search agent-sessions", - "variant": "all-flags", - "args": [ - "--agent-id=s-agent-id", - "--aggregate=s-aggregate-1,s-aggregate-2", - "--channel=s-channel", - "--cursor=s-cursor", - "--direction=s-direction", - "--fields=s-fields", - "--filter=s-filter", - "--from=2026-01-01T00:00:00.000Z", - "--interval=s-interval", - "--page-size=7", - "--queue-id=s-queue-id", - "--status=s-status", - "--time-comparator=s-time-comparator", - "--timezone=s-timezone", - "--to=2026-01-02T00:00:00.000Z", - "--tracking-id=s-tracking-id" - ], - "requests": [], - "error": "invalid --filter JSON: invalid character 's' looking for beginning of value" - }, - { - "command": "cc search agent-sessions", - "variant": "required", - "args": null, - "requests": [], - "error": "--from and --to are required (or use --last)" - }, - { - "command": "cc search agent-sessions", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/search?orgId=6ab1d2c4-0000-4000-8000-00000000c1d0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc search flow-interactions", - "variant": "all-flags", - "args": [ - "--agent-id=s-agent-id", - "--aggregate=s-aggregate-1,s-aggregate-2", - "--channel=s-channel", - "--cursor=s-cursor", - "--direction=s-direction", - "--fields=s-fields", - "--filter=s-filter", - "--from=2026-01-01T00:00:00.000Z", - "--interval=s-interval", - "--page-size=7", - "--queue-id=s-queue-id", - "--status=s-status", - "--time-comparator=s-time-comparator", - "--timezone=s-timezone", - "--to=2026-01-02T00:00:00.000Z", - "--tracking-id=s-tracking-id" - ], - "requests": [], - "error": "invalid --filter JSON: invalid character 's' looking for beginning of value" - }, - { - "command": "cc search flow-interactions", - "variant": "required", - "args": null, - "requests": [], - "error": "--from and --to are required (or use --last)" - }, - { - "command": "cc search flow-interactions", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/search?orgId=6ab1d2c4-0000-4000-8000-00000000c1d0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc search flow-trace", - "variant": "all-flags", - "args": [ - "--agent-id=s-agent-id", - "--aggregate=s-aggregate-1,s-aggregate-2", - "--channel=s-channel", - "--cursor=s-cursor", - "--direction=s-direction", - "--fields=s-fields", - "--filter=s-filter", - "--from=2026-01-01T00:00:00.000Z", - "--interval=s-interval", - "--page-size=7", - "--queue-id=s-queue-id", - "--status=s-status", - "--time-comparator=s-time-comparator", - "--timezone=s-timezone", - "--to=2026-01-02T00:00:00.000Z", - "--tracking-id=s-tracking-id" - ], - "requests": [], - "error": "invalid --filter JSON: invalid character 's' looking for beginning of value" - }, - { - "command": "cc search flow-trace", - "variant": "required", - "args": null, - "requests": [], - "error": "--from and --to are required (or use --last)" - }, - { - "command": "cc search flow-trace", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/search?orgId=6ab1d2c4-0000-4000-8000-00000000c1d0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc search raw", - "variant": "all-flags", - "args": [ - "--tracking-id=s-tracking-id" - ], - "requests": [], - "error": "--body or --body-file is required" - }, - { - "command": "cc search raw", - "variant": "required", - "args": null, - "requests": [], - "error": "--body or --body-file is required" - }, - { - "command": "cc search raw", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/search?orgId=6ab1d2c4-0000-4000-8000-00000000c1d0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc search search-tasks", - "variant": "all-flags", - "args": [ - "--tracking-id=s-tracking-id" - ], - "requests": [], - "error": "--body or --body-file is required" - }, - { - "command": "cc search search-tasks", - "variant": "required", - "args": null, - "requests": [], - "error": "--body or --body-file is required" - }, - { - "command": "cc search search-tasks", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/search?orgId=6ab1d2c4-0000-4000-8000-00000000c1d0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc search task-details", - "variant": "all-flags", - "args": [ - "--agent-id=s-agent-id", - "--aggregate=s-aggregate-1,s-aggregate-2", - "--channel=s-channel", - "--cursor=s-cursor", - "--direction=s-direction", - "--fields=s-fields", - "--filter=s-filter", - "--from=2026-01-01T00:00:00.000Z", - "--interval=s-interval", - "--page-size=7", - "--queue-id=s-queue-id", - "--status=s-status", - "--time-comparator=s-time-comparator", - "--timezone=s-timezone", - "--to=2026-01-02T00:00:00.000Z", - "--tracking-id=s-tracking-id" - ], - "requests": [], - "error": "invalid --filter JSON: invalid character 's' looking for beginning of value" - }, - { - "command": "cc search task-details", - "variant": "required", - "args": null, - "requests": [], - "error": "--from and --to are required (or use --last)" - }, - { - "command": "cc search task-details", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/search?orgId=6ab1d2c4-0000-4000-8000-00000000c1d0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc search task-leg-details", - "variant": "all-flags", - "args": [ - "--agent-id=s-agent-id", - "--aggregate=s-aggregate-1,s-aggregate-2", - "--channel=s-channel", - "--cursor=s-cursor", - "--direction=s-direction", - "--fields=s-fields", - "--filter=s-filter", - "--from=2026-01-01T00:00:00.000Z", - "--interval=s-interval", - "--page-size=7", - "--queue-id=s-queue-id", - "--status=s-status", - "--time-comparator=s-time-comparator", - "--timezone=s-timezone", - "--to=2026-01-02T00:00:00.000Z", - "--tracking-id=s-tracking-id" - ], - "requests": [], - "error": "invalid --filter JSON: invalid character 's' looking for beginning of value" - }, - { - "command": "cc search task-leg-details", - "variant": "required", - "args": null, - "requests": [], - "error": "--from and --to are required (or use --last)" - }, - { - "command": "cc search task-leg-details", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/search?orgId=6ab1d2c4-0000-4000-8000-00000000c1d0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc search tasks", - "variant": "all-flags", - "args": [ - "--agent-id=s-agent-id", - "--aggregate=s-aggregate-1,s-aggregate-2", - "--channel=s-channel", - "--cursor=s-cursor", - "--direction=s-direction", - "--fields=s-fields", - "--filter=s-filter", - "--from=2026-01-01T00:00:00.000Z", - "--interval=s-interval", - "--page-size=7", - "--queue-id=s-queue-id", - "--status=s-status", - "--time-comparator=s-time-comparator", - "--timezone=s-timezone", - "--to=2026-01-02T00:00:00.000Z", - "--tracking-id=s-tracking-id" - ], - "requests": [], - "error": "invalid --filter JSON: invalid character 's' looking for beginning of value" - }, - { - "command": "cc search tasks", - "variant": "required", - "args": null, - "requests": [], - "error": "--from and --to are required (or use --last)" - }, - { - "command": "cc search tasks", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/search?orgId=6ab1d2c4-0000-4000-8000-00000000c1d0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc search-metadata get", - "variant": "all-flags", - "args": [ - "--tracking-id=s-tracking-id", - "--x-organization-id=s-x-organization-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/search/v2/meta", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Trackingid": "s-tracking-id", - "X-Organization-Id": "s-x-organization-id" - } - } - ] - }, - { - "command": "cc search-metadata get", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/search/v2/meta", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc search-metadata get", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/search/v2/meta", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc site bulk-export", - "variant": "all-flags", - "args": [ - "--page=s-page", - "--page-size=s-page-size" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/site/bulk-export?page=s-page&pageSize=s-page-size", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc site bulk-export", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/site/bulk-export", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc site bulk-export", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/site/bulk-export?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc site bulk-save", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/site/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc site bulk-save", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/site/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc site bulk-save", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/site/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc site create", - "variant": "all-flags", - "args": [ - "--active=true", - "--description=s-description", - "--id=s-id", - "--multimedia-profile-id=s-multimedia-profile-id", - "--name=s-name", - "--organization-id=s-organization-id", - "--system-default=true", - "--version=7" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/site", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"active\":true,\"description\":\"s-description\",\"id\":\"s-id\",\"multimediaProfileId\":\"s-multimedia-profile-id\",\"name\":\"s-name\",\"organizationId\":\"s-organization-id\",\"systemDefault\":true,\"version\":7}" - } - ] - }, - { - "command": "cc site create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/site", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc site create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/site", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc site delete", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/site/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc site delete", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/site/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc site get", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/site/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc site get", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/site/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc site get", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/site/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc site list", - "variant": "all-flags", - "args": [ - "--attributes=s-attributes", - "--filter=s-filter", - "--page=s-page", - "--page-size=s-page-size", - "--search=s-search" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/site?attributes=s-attributes&filter=s-filter&page=s-page&pageSize=s-page-size&search=s-search", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc site list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/site", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc site list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/site?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc site list-references", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--page=s-page", - "--page-size=s-page-size", - "--type=s-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/site/s-id/incoming-references?page=s-page&pageSize=s-page-size&type=s-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc site list-references", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/site/s-id/incoming-references", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc site list-references", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/site/s-id/incoming-references?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc site list-v1", - "variant": "all-flags", - "args": [ - "--page=s-page", - "--page-size=s-page-size" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/site?page=s-page&pageSize=s-page-size", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc site list-v1", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/site", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc site list-v1", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/site?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc site purge-inactive", - "variant": "all-flags", - "args": [ - "--next-start-id=s-next-start-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/site/purge-inactive-entities?nextStartId=s-next-start-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc site purge-inactive", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/site/purge-inactive-entities", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc site update", - "variant": "all-flags", - "args": [ - "--active=true", - "--description=s-description", - "--id=s-id", - "--multimedia-profile-id=s-multimedia-profile-id", - "--name=s-name", - "--organization-id=s-organization-id", - "--system-default=true", - "--version=7" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/site/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"active\":true,\"description\":\"s-description\",\"id\":\"s-id\",\"multimediaProfileId\":\"s-multimedia-profile-id\",\"name\":\"s-name\",\"organizationId\":\"s-organization-id\",\"systemDefault\":true,\"version\":7}" - } - ] - }, - { - "command": "cc site update", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/site/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"id\":\"s-id\"}" - } - ] - }, - { - "command": "cc site update", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/site/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc skill bulk-export", - "variant": "all-flags", - "args": [ - "--page=s-page", - "--page-size=s-page-size" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/skill/bulk-export?page=s-page&pageSize=s-page-size", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc skill bulk-export", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/skill/bulk-export", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc skill bulk-export", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/skill/bulk-export?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc skill bulk-save", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/skill/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc skill bulk-save", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/skill/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc skill bulk-save", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/skill/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc skill create", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/skill", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc skill create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/skill", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc skill create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/skill", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc skill delete", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/skill/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc skill delete", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/skill/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc skill get", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/skill/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc skill get", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/skill/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc skill get", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/skill/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc skill list", - "variant": "all-flags", - "args": [ - "--attributes=s-attributes", - "--filter=s-filter", - "--include=s-include", - "--page=s-page", - "--page-size=s-page-size", - "--search=s-search", - "--single-object-response=s-single-object-response" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/skill?attributes=s-attributes&filter=s-filter&include=s-include&page=s-page&pageSize=s-page-size&search=s-search&singleObjectResponse=s-single-object-response", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc skill list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/skill", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc skill list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/skill?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc skill list-references", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--page=s-page", - "--page-size=s-page-size", - "--type=s-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/skill/s-id/incoming-references?page=s-page&pageSize=s-page-size&type=s-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc skill list-references", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/skill/s-id/incoming-references", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc skill list-references", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/skill/s-id/incoming-references?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc skill list-v1", - "variant": "all-flags", - "args": [ - "--page=s-page", - "--page-size=s-page-size" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/skill?page=s-page&pageSize=s-page-size", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc skill list-v1", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/skill", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc skill list-v1", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/skill?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc skill populate-json-attributes-field-skill-id-org", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/skill/populate-json-attr/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc skill populate-json-attributes-field-skill-id-org", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/skill/populate-json-attr/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc skill purge-inactive", - "variant": "all-flags", - "args": [ - "--next-start-id=s-next-start-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/skill/purge-inactive-entities?nextStartId=s-next-start-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc skill purge-inactive", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/skill/purge-inactive-entities", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc skill update", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/skill/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc skill update", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/skill/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc skill update", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/skill/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc skill-profile bulk-export", - "variant": "all-flags", - "args": [ - "--page=s-page", - "--page-size=s-page-size" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/skill-profile/bulk-export?page=s-page&pageSize=s-page-size", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc skill-profile bulk-export", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/skill-profile/bulk-export", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc skill-profile bulk-export", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/skill-profile/bulk-export?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc skill-profile bulk-save", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/skill-profile/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc skill-profile bulk-save", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/skill-profile/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc skill-profile bulk-save", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/skill-profile/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc skill-profile create", - "variant": "all-flags", - "args": [ - "--active-enum-skills=s-active-enum-skills", - "--active-skills=s-active-skills", - "--created-time=s-created-time", - "--description=s-description", - "--id=s-id", - "--last-updated-time=s-last-updated-time", - "--name=s-name", - "--organization-id=s-organization-id", - "--version=s-version" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/skill-profile?activeEnumSkills=s-active-enum-skills&activeSkills=s-active-skills&createdTime=s-created-time&description=s-description&id=s-id&lastUpdatedTime=s-last-updated-time&name=s-name&organizationId=s-organization-id&version=s-version", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc skill-profile create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/skill-profile", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc skill-profile create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/skill-profile", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc skill-profile delete", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/skill-profile/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc skill-profile delete", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/skill-profile/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc skill-profile get", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--include-skill-details=s-include-skill-details" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/skill-profile/s-id?includeSkillDetails=s-include-skill-details", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc skill-profile get", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/skill-profile/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc skill-profile get", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/skill-profile/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc skill-profile list", - "variant": "all-flags", - "args": [ - "--attributes=s-attributes", - "--filter=s-filter", - "--page=s-page", - "--page-size=s-page-size", - "--search=s-search", - "--single-object-response=s-single-object-response" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/skill-profile?attributes=s-attributes&filter=s-filter&page=s-page&pageSize=s-page-size&search=s-search&singleObjectResponse=s-single-object-response", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc skill-profile list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/skill-profile", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc skill-profile list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/skill-profile?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc skill-profile list-references", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--page=s-page", - "--page-size=s-page-size", - "--type=s-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/skill-profile/s-id/incoming-references?page=s-page&pageSize=s-page-size&type=s-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc skill-profile list-references", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/skill-profile/s-id/incoming-references", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc skill-profile list-references", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/skill-profile/s-id/incoming-references?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc skill-profile update", - "variant": "all-flags", - "args": [ - "--active-enum-skills=s-active-enum-skills", - "--active-skills=s-active-skills", - "--created-time=s-created-time", - "--description=s-description", - "--id=s-id", - "--last-updated-time=s-last-updated-time", - "--name=s-name", - "--organization-id=s-organization-id", - "--version=s-version" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/skill-profile/s-id?activeEnumSkills=s-active-enum-skills&activeSkills=s-active-skills&createdTime=s-created-time&description=s-description&id=s-id&lastUpdatedTime=s-last-updated-time&name=s-name&organizationId=s-organization-id&version=s-version", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc skill-profile update", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/skill-profile/s-id?id=s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc skill-profile update", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/skill-profile/s-id?id=s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc subscriptions delete-v1", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--tracking-id=s-tracking-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/v1/subscriptions/s-id?orgId=6ab1d2c4-0000-4000-8000-00000000c1d0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Trackingid": "s-tracking-id" - } - } - ] - }, - { - "command": "cc subscriptions delete-v1", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/v1/subscriptions/s-id?orgId=6ab1d2c4-0000-4000-8000-00000000c1d0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc subscriptions delete-v2", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--tracking-id=s-tracking-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/v2/subscriptions/s-id?orgId=6ab1d2c4-0000-4000-8000-00000000c1d0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Trackingid": "s-tracking-id" - } - } - ] - }, - { - "command": "cc subscriptions delete-v2", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/v2/subscriptions/s-id?orgId=6ab1d2c4-0000-4000-8000-00000000c1d0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc subscriptions get-v1", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--tracking-id=s-tracking-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/subscriptions/s-id?orgId=6ab1d2c4-0000-4000-8000-00000000c1d0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Trackingid": "s-tracking-id" - } - } - ] - }, - { - "command": "cc subscriptions get-v1", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/subscriptions/s-id?orgId=6ab1d2c4-0000-4000-8000-00000000c1d0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc subscriptions get-v1", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/subscriptions/s-id?orgId=6ab1d2c4-0000-4000-8000-00000000c1d0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc subscriptions get-v2", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--tracking-id=s-tracking-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v2/subscriptions/s-id?orgId=6ab1d2c4-0000-4000-8000-00000000c1d0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Trackingid": "s-tracking-id" - } - } - ] - }, - { - "command": "cc subscriptions get-v2", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v2/subscriptions/s-id?orgId=6ab1d2c4-0000-4000-8000-00000000c1d0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc subscriptions get-v2", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v2/subscriptions/s-id?orgId=6ab1d2c4-0000-4000-8000-00000000c1d0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc subscriptions list-event-types-v1", - "variant": "all-flags", - "args": [ - "--tracking-id=s-tracking-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/event-types?orgId=6ab1d2c4-0000-4000-8000-00000000c1d0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Trackingid": "s-tracking-id" - } - } - ] - }, - { - "command": "cc subscriptions list-event-types-v1", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/event-types?orgId=6ab1d2c4-0000-4000-8000-00000000c1d0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc subscriptions list-event-types-v1", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/event-types?orgId=6ab1d2c4-0000-4000-8000-00000000c1d0&page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc subscriptions list-event-types-v2", - "variant": "all-flags", - "args": [ - "--tracking-id=s-tracking-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v2/event-types?orgId=6ab1d2c4-0000-4000-8000-00000000c1d0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Trackingid": "s-tracking-id" - } - } - ] - }, - { - "command": "cc subscriptions list-event-types-v2", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v2/event-types?orgId=6ab1d2c4-0000-4000-8000-00000000c1d0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc subscriptions list-event-types-v2", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v2/event-types?orgId=6ab1d2c4-0000-4000-8000-00000000c1d0&page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc subscriptions list-v1", - "variant": "all-flags", - "args": [ - "--tracking-id=s-tracking-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/subscriptions?orgId=6ab1d2c4-0000-4000-8000-00000000c1d0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Trackingid": "s-tracking-id" - } - } - ] - }, - { - "command": "cc subscriptions list-v1", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/subscriptions?orgId=6ab1d2c4-0000-4000-8000-00000000c1d0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc subscriptions list-v1", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/subscriptions?orgId=6ab1d2c4-0000-4000-8000-00000000c1d0&page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc subscriptions list-v2", - "variant": "all-flags", - "args": [ - "--tracking-id=s-tracking-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v2/subscriptions?orgId=6ab1d2c4-0000-4000-8000-00000000c1d0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Trackingid": "s-tracking-id" - } - } - ] - }, - { - "command": "cc subscriptions list-v2", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v2/subscriptions?orgId=6ab1d2c4-0000-4000-8000-00000000c1d0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc subscriptions list-v2", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v2/subscriptions?orgId=6ab1d2c4-0000-4000-8000-00000000c1d0&page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc subscriptions register-v1", - "variant": "all-flags", - "args": [ - "--description=s-description", - "--destination-url=s-destination-url", - "--event-types=s-event-types-1,s-event-types-2", - "--name=s-name", - "--secret=s-secret", - "--tracking-id=s-tracking-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/subscriptions", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json", - "Trackingid": "s-tracking-id" - }, - "body": "{\"description\":\"s-description\",\"destinationUrl\":\"s-destination-url\",\"eventTypes\":[\"s-event-types-1\",\"s-event-types-2\"],\"name\":\"s-name\",\"orgId\":\"Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA\",\"secret\":\"s-secret\"}" - } - ] - }, - { - "command": "cc subscriptions register-v1", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/subscriptions", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"orgId\":\"Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA\"}" - } - ] - }, - { - "command": "cc subscriptions register-v1", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/subscriptions", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc subscriptions register-v2", - "variant": "all-flags", - "args": [ - "--description=s-description", - "--destination-url=s-destination-url", - "--event-types=s-event-types-1,s-event-types-2", - "--name=s-name", - "--resource-version=s-resource-version", - "--secret=s-secret", - "--tracking-id=s-tracking-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v2/subscriptions", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json", - "Trackingid": "s-tracking-id" - }, - "body": "{\"description\":\"s-description\",\"destinationUrl\":\"s-destination-url\",\"eventTypes\":[\"s-event-types-1\",\"s-event-types-2\"],\"name\":\"s-name\",\"orgId\":\"Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA\",\"resourceVersion\":\"s-resource-version\",\"secret\":\"s-secret\"}" - } - ] - }, - { - "command": "cc subscriptions register-v2", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v2/subscriptions", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"orgId\":\"Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA\"}" - } - ] - }, - { - "command": "cc subscriptions register-v2", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v2/subscriptions", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc subscriptions update-v1", - "variant": "all-flags", - "args": [ - "--description=s-description", - "--destination-url=s-destination-url", - "--event-types=s-event-types-1,s-event-types-2", - "--id=s-id", - "--secret=s-secret", - "--status=s-status", - "--tracking-id=s-tracking-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/v1/subscriptions/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json", - "Trackingid": "s-tracking-id" - }, - "body": "{\"description\":\"s-description\",\"destinationUrl\":\"s-destination-url\",\"eventTypes\":[\"s-event-types-1\",\"s-event-types-2\"],\"orgId\":\"Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA\",\"secret\":\"s-secret\",\"status\":\"s-status\"}" - } - ] - }, - { - "command": "cc subscriptions update-v1", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/v1/subscriptions/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"orgId\":\"Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA\"}" - } - ] - }, - { - "command": "cc subscriptions update-v1", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/v1/subscriptions/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc subscriptions update-v2", - "variant": "all-flags", - "args": [ - "--description=s-description", - "--destination-url=s-destination-url", - "--event-types=s-event-types-1,s-event-types-2", - "--id=s-id", - "--resource-version=s-resource-version", - "--secret=s-secret", - "--status=s-status", - "--tracking-id=s-tracking-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/v2/subscriptions/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json", - "Trackingid": "s-tracking-id" - }, - "body": "{\"description\":\"s-description\",\"destinationUrl\":\"s-destination-url\",\"eventTypes\":[\"s-event-types-1\",\"s-event-types-2\"],\"orgId\":\"Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA\",\"resourceVersion\":\"s-resource-version\",\"secret\":\"s-secret\",\"status\":\"s-status\"}" - } - ] - }, - { - "command": "cc subscriptions update-v2", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/v2/subscriptions/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"orgId\":\"Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA\"}" - } - ] - }, - { - "command": "cc subscriptions update-v2", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/v2/subscriptions/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc tasks accept", - "variant": "all-flags", - "args": [ - "--task-id=s-task-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks/s-task-id/accept", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc tasks accept", - "variant": "required", - "args": [ - "--task-id=s-task-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks/s-task-id/accept", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc tasks accept-preview", - "variant": "all-flags", - "args": [ - "--campaign-id=s-campaign-id", - "--task-id=s-task-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/dialer/campaign/s-campaign-id/preview-task/s-task-id/accept", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc tasks accept-preview", - "variant": "required", - "args": [ - "--campaign-id=s-campaign-id", - "--task-id=s-task-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/dialer/campaign/s-campaign-id/preview-task/s-task-id/accept", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc tasks append-message", - "variant": "all-flags", - "args": [ - "--task-id=s-task-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v2/tasks/s-task-id/messages", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc tasks append-message", - "variant": "required", - "args": [ - "--task-id=s-task-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v2/tasks/s-task-id/messages", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc tasks append-message", - "variant": "body", - "args": [ - "--task-id=s-task-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v2/tasks/s-task-id/messages", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc tasks assign", - "variant": "all-flags", - "args": [ - "--task-id=s-task-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks/s-task-id/assign", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc tasks assign", - "variant": "required", - "args": [ - "--task-id=s-task-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks/s-task-id/assign", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc tasks consult-accept", - "variant": "all-flags", - "args": [ - "--task-id=s-task-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks/s-task-id/consult/accept", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc tasks consult-accept", - "variant": "required", - "args": [ - "--task-id=s-task-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks/s-task-id/consult/accept", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc tasks consult-conference", - "variant": "all-flags", - "args": [ - "--agent-id=s-agent-id", - "--destination-type=s-destination-type", - "--task-id=s-task-id", - "--to=2026-01-02T00:00:00.000Z" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks/s-task-id/consult/conference", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"agentId\":\"s-agent-id\",\"destinationType\":\"s-destination-type\",\"to\":\"2026-01-02T00:00:00.000Z\"}" - } - ] - }, - { - "command": "cc tasks consult-conference", - "variant": "required", - "args": [ - "--task-id=s-task-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks/s-task-id/consult/conference", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc tasks consult-conference", - "variant": "body", - "args": [ - "--task-id=s-task-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks/s-task-id/consult/conference", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc tasks consult-end", - "variant": "all-flags", - "args": [ - "--queue-id=s-queue-id", - "--task-id=s-task-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks/s-task-id/consult/end", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"queueId\":\"s-queue-id\"}" - } - ] - }, - { - "command": "cc tasks consult-end", - "variant": "required", - "args": [ - "--task-id=s-task-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks/s-task-id/consult/end", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc tasks consult-end", - "variant": "body", - "args": [ - "--task-id=s-task-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks/s-task-id/consult/end", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc tasks consult-task", - "variant": "all-flags", - "args": [ - "--destination-type=s-destination-type", - "--hold-participants=true", - "--task-id=s-task-id", - "--to=2026-01-02T00:00:00.000Z" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks/s-task-id/consult", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"destinationType\":\"s-destination-type\",\"holdParticipants\":true,\"to\":\"2026-01-02T00:00:00.000Z\"}" - } - ] - }, - { - "command": "cc tasks consult-task", - "variant": "required", - "args": [ - "--task-id=s-task-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks/s-task-id/consult", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc tasks consult-task", - "variant": "body", - "args": [ - "--task-id=s-task-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks/s-task-id/consult", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc tasks consult-transfer", - "variant": "all-flags", - "args": [ - "--destination-type=s-destination-type", - "--task-id=s-task-id", - "--to=2026-01-02T00:00:00.000Z" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks/s-task-id/consult/transfer", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"destinationType\":\"s-destination-type\",\"to\":\"2026-01-02T00:00:00.000Z\"}" - } - ] - }, - { - "command": "cc tasks consult-transfer", - "variant": "required", - "args": [ - "--task-id=s-task-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks/s-task-id/consult/transfer", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc tasks consult-transfer", - "variant": "body", - "args": [ - "--task-id=s-task-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks/s-task-id/consult/transfer", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc tasks create", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v2/tasks", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc tasks create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v2/tasks", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc tasks create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v2/tasks", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc tasks delete-preview", - "variant": "all-flags", - "args": [ - "--campaign-id=s-campaign-id", - "--task-id=s-task-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/dialer/campaign/s-campaign-id/preview-task/s-task-id/remove", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc tasks delete-preview", - "variant": "required", - "args": [ - "--campaign-id=s-campaign-id", - "--task-id=s-task-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/dialer/campaign/s-campaign-id/preview-task/s-task-id/remove", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc tasks drop-participant-conference", - "variant": "all-flags", - "args": [ - "--participant-id=s-participant-id", - "--task-id=s-task-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks/s-task-id/conference/participants/s-participant-id/drop", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc tasks drop-participant-conference", - "variant": "required", - "args": [ - "--participant-id=s-participant-id", - "--task-id=s-task-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks/s-task-id/conference/participants/s-participant-id/drop", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc tasks end", - "variant": "all-flags", - "args": [ - "--task-id=s-task-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks/s-task-id/end", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc tasks end", - "variant": "required", - "args": [ - "--task-id=s-task-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks/s-task-id/end", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc tasks exit-conference", - "variant": "all-flags", - "args": [ - "--task-id=s-task-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks/s-task-id/conference/exit", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc tasks exit-conference", - "variant": "required", - "args": [ - "--task-id=s-task-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks/s-task-id/conference/exit", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc tasks get", - "variant": "all-flags", - "args": [ - "--channel-types=s-channel-types", - "--from=2026-01-01T00:00:00.000Z", - "--page-size=s-page-size", - "--to=2026-01-02T00:00:00.000Z", - "--tracking-id=s-tracking-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks?channelTypes=s-channel-types&from=2026-01-01T00%3A00%3A00.000Z&orgId=6ab1d2c4-0000-4000-8000-00000000c1d0&pageSize=s-page-size&to=2026-01-02T00%3A00%3A00.000Z", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Trackingid": "s-tracking-id" - } - } - ] - }, - { - "command": "cc tasks get", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks?orgId=6ab1d2c4-0000-4000-8000-00000000c1d0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc tasks get", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks?orgId=6ab1d2c4-0000-4000-8000-00000000c1d0&page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc tasks hold", - "variant": "all-flags", - "args": [ - "--media-resource-id=s-media-resource-id", - "--task-id=s-task-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks/s-task-id/hold", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"mediaResourceId\":\"s-media-resource-id\"}" - } - ] - }, - { - "command": "cc tasks hold", - "variant": "required", - "args": [ - "--task-id=s-task-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks/s-task-id/hold", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc tasks hold", - "variant": "body", - "args": [ - "--task-id=s-task-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks/s-task-id/hold", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc tasks pause-digital", - "variant": "all-flags", - "args": [ - "--task-id=s-task-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks/s-task-id/pause", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc tasks pause-digital", - "variant": "required", - "args": [ - "--task-id=s-task-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks/s-task-id/pause", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc tasks pause-recording", - "variant": "all-flags", - "args": [ - "--task-id=s-task-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks/s-task-id/record/pause", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc tasks pause-recording", - "variant": "required", - "args": [ - "--task-id=s-task-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks/s-task-id/record/pause", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc tasks reject", - "variant": "all-flags", - "args": [ - "--media-resource-id=s-media-resource-id", - "--task-id=s-task-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks/s-task-id/reject", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"mediaResourceId\":\"s-media-resource-id\"}" - } - ] - }, - { - "command": "cc tasks reject", - "variant": "required", - "args": [ - "--task-id=s-task-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks/s-task-id/reject", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc tasks reject", - "variant": "body", - "args": [ - "--task-id=s-task-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks/s-task-id/reject", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc tasks resume-digital", - "variant": "all-flags", - "args": [ - "--task-id=s-task-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks/s-task-id/resume", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc tasks resume-digital", - "variant": "required", - "args": [ - "--task-id=s-task-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks/s-task-id/resume", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc tasks resume-recording", - "variant": "all-flags", - "args": [ - "--auto-resumed=true", - "--task-id=s-task-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks/s-task-id/record/resume", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"autoResumed\":true}" - } - ] - }, - { - "command": "cc tasks resume-recording", - "variant": "required", - "args": [ - "--task-id=s-task-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks/s-task-id/record/resume", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc tasks resume-recording", - "variant": "body", - "args": [ - "--task-id=s-task-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks/s-task-id/record/resume", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc tasks skip-preview", - "variant": "all-flags", - "args": [ - "--campaign-id=s-campaign-id", - "--task-id=s-task-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/dialer/campaign/s-campaign-id/preview-task/s-task-id/skip", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc tasks skip-preview", - "variant": "required", - "args": [ - "--campaign-id=s-campaign-id", - "--task-id=s-task-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/dialer/campaign/s-campaign-id/preview-task/s-task-id/skip", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc tasks transfer", - "variant": "all-flags", - "args": [ - "--destination-type=s-destination-type", - "--task-id=s-task-id", - "--to=2026-01-02T00:00:00.000Z" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks/s-task-id/transfer", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"destinationType\":\"s-destination-type\",\"to\":\"2026-01-02T00:00:00.000Z\"}" - } - ] - }, - { - "command": "cc tasks transfer", - "variant": "required", - "args": [ - "--task-id=s-task-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks/s-task-id/transfer", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc tasks transfer", - "variant": "body", - "args": [ - "--task-id=s-task-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks/s-task-id/transfer", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc tasks unhold", - "variant": "all-flags", - "args": [ - "--media-resource-id=s-media-resource-id", - "--task-id=s-task-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks/s-task-id/unhold", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"mediaResourceId\":\"s-media-resource-id\"}" - } - ] - }, - { - "command": "cc tasks unhold", - "variant": "required", - "args": [ - "--task-id=s-task-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks/s-task-id/unhold", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc tasks unhold", - "variant": "body", - "args": [ - "--task-id=s-task-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks/s-task-id/unhold", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc tasks update", - "variant": "all-flags", - "args": [ - "--task-id=s-task-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks/s-task-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc tasks update", - "variant": "required", - "args": [ - "--task-id=s-task-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks/s-task-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc tasks update", - "variant": "body", - "args": [ - "--task-id=s-task-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks/s-task-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc tasks wrap-up", - "variant": "all-flags", - "args": [ - "--aux-code-id=s-aux-code-id", - "--task-id=s-task-id", - "--wrap-up-reason=s-wrap-up-reason" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks/s-task-id/wrapup", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"auxCodeId\":\"s-aux-code-id\",\"wrapUpReason\":\"s-wrap-up-reason\"}" - } - ] - }, - { - "command": "cc tasks wrap-up", - "variant": "required", - "args": [ - "--task-id=s-task-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks/s-task-id/wrapup", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc tasks wrap-up", - "variant": "body", - "args": [ - "--task-id=s-task-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/tasks/s-task-id/wrapup", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc team bulk-export", - "variant": "all-flags", - "args": [ - "--page=s-page", - "--page-size=s-page-size" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/team/bulk-export?page=s-page&pageSize=s-page-size", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc team bulk-export", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/team/bulk-export", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc team bulk-export", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/team/bulk-export?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc team bulk-save", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/team/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc team bulk-save", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/team/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc team bulk-save", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/team/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc team create", - "variant": "all-flags", - "args": [ - "--active=s-active", - "--capacity=s-capacity", - "--created-time=s-created-time", - "--description=s-description", - "--desktop-layout-id=s-desktop-layout-id", - "--dialed-number=s-dialed-number", - "--id=s-id", - "--last-updated-time=s-last-updated-time", - "--multi-media-profile-id=s-multi-media-profile-id", - "--name=s-name", - "--organization-id=s-organization-id", - "--queue-rankings=s-queue-rankings", - "--rank-queues-for-team=s-rank-queues-for-team", - "--site-id=s-site-id", - "--skill-profile-id=s-skill-profile-id", - "--system-default=s-system-default", - "--team-status=s-team-status", - "--team-type=s-team-type", - "--user-ids=s-user-ids", - "--version=s-version" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/team?active=s-active&capacity=s-capacity&createdTime=s-created-time&description=s-description&desktopLayoutId=s-desktop-layout-id&dialedNumber=s-dialed-number&id=s-id&lastUpdatedTime=s-last-updated-time&multiMediaProfileId=s-multi-media-profile-id&name=s-name&organizationId=s-organization-id&queueRankings=s-queue-rankings&rankQueuesForTeam=s-rank-queues-for-team&siteId=s-site-id&skillProfileId=s-skill-profile-id&systemDefault=s-system-default&teamStatus=s-team-status&teamType=s-team-type&userIds=s-user-ids&version=s-version", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc team create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/team", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc team create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/team", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc team delete", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/team/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc team delete", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/team/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc team get", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/team/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc team get", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/team/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc team get", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/team/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc team list", - "variant": "all-flags", - "args": [ - "--attributes=s-attributes", - "--filter=s-filter", - "--page=s-page", - "--page-size=s-page-size", - "--provisioning-view=s-provisioning-view", - "--search=s-search", - "--single-object-response=s-single-object-response", - "--supervisor-view=s-supervisor-view" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/team?attributes=s-attributes&filter=s-filter&page=s-page&pageSize=s-page-size&provisioningView=s-provisioning-view&search=s-search&singleObjectResponse=s-single-object-response&supervisorView=s-supervisor-view", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc team list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/team", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc team list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/team?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc team list-references", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--page=s-page", - "--page-size=s-page-size", - "--type=s-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/team/s-id/incoming-references?page=s-page&pageSize=s-page-size&type=s-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc team list-references", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/team/s-id/incoming-references", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc team list-references", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/team/s-id/incoming-references?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc team list-v1", - "variant": "all-flags", - "args": [ - "--page=s-page", - "--page-size=s-page-size" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/team?page=s-page&pageSize=s-page-size", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc team list-v1", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/team", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc team list-v1", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/team?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc team purge-inactive", - "variant": "all-flags", - "args": [ - "--next-start-id=s-next-start-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/team/purge-inactive-entities?nextStartId=s-next-start-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc team purge-inactive", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/team/purge-inactive-entities", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc team update", - "variant": "all-flags", - "args": [ - "--active=s-active", - "--capacity=s-capacity", - "--created-time=s-created-time", - "--description=s-description", - "--desktop-layout-id=s-desktop-layout-id", - "--dialed-number=s-dialed-number", - "--id=s-id", - "--last-updated-time=s-last-updated-time", - "--multi-media-profile-id=s-multi-media-profile-id", - "--name=s-name", - "--organization-id=s-organization-id", - "--queue-rankings=s-queue-rankings", - "--rank-queues-for-team=s-rank-queues-for-team", - "--site-id=s-site-id", - "--skill-profile-id=s-skill-profile-id", - "--system-default=s-system-default", - "--team-status=s-team-status", - "--team-type=s-team-type", - "--user-ids=s-user-ids", - "--version=s-version" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/team/s-id?active=s-active&capacity=s-capacity&createdTime=s-created-time&description=s-description&desktopLayoutId=s-desktop-layout-id&dialedNumber=s-dialed-number&id=s-id&lastUpdatedTime=s-last-updated-time&multiMediaProfileId=s-multi-media-profile-id&name=s-name&organizationId=s-organization-id&queueRankings=s-queue-rankings&rankQueuesForTeam=s-rank-queues-for-team&siteId=s-site-id&skillProfileId=s-skill-profile-id&systemDefault=s-system-default&teamStatus=s-team-status&teamType=s-team-type&userIds=s-user-ids&version=s-version", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc team update", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/team/s-id?id=s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc team update", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/team/s-id?id=s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc templates get-flow", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/templates/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc templates get-flow", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/templates/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc templates get-flow", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/templates/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc templates list-flow", - "variant": "all-flags", - "args": [ - "--type=s-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/templates?type=s-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc templates list-flow", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/templates", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc templates list-flow", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/templates?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc tenant-configuration get", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/tenant-configuration/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc tenant-configuration get", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/tenant-configuration/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc tenant-configuration get", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/tenant-configuration/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc tenant-configuration list", - "variant": "all-flags", - "args": [ - "--attributes=s-attributes", - "--filter=s-filter", - "--page=s-page", - "--page-size=s-page-size", - "--search=s-search" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/tenant-configuration?attributes=s-attributes&filter=s-filter&page=s-page&pageSize=s-page-size&search=s-search", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc tenant-configuration list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/tenant-configuration", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc tenant-configuration list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/tenant-configuration?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc tenant-configuration update", - "variant": "all-flags", - "args": [ - "--aps-enabled=true", - "--aps-url=s-aps-url", - "--auto-base-url=true", - "--auto-wrap-up-interval=7", - "--call-variables-base-url=s-call-variables-base-url", - "--call-variables-suppressed=s-call-variables-suppressed", - "--central-log-level=s-central-log-level", - "--configuration-version=1.5", - "--console-log-level=s-console-log-level", - "--created-time=7", - "--diagnostics-post-url=s-diagnostics-post-url", - "--dn-default-description=s-dn-default-description", - "--dn-default-prefix=s-dn-default-prefix", - "--dn-default-regex=s-dn-default-regex", - "--dn-default-strip-chars=s-dn-default-strip-chars", - "--dn-other-description=s-dn-other-description", - "--dn-other-prefix=s-dn-other-prefix", - "--dn-other-regex=s-dn-other-regex", - "--dn-other-strip-chars=s-dn-other-strip-chars", - "--dn-target-prefix=s-dn-target-prefix", - "--dn-target-regex=s-dn-target-regex", - "--dn-target-strip-chars=s-dn-target-strip-chars", - "--end-call-enabled=true", - "--end-consult-enabled=true", - "--force-default-dn=true", - "--heart-beat-interval=7", - "--id=s-id", - "--incident-reporting-enabled=true", - "--last-updated-time=7", - "--local-disk-log-level=s-local-disk-log-level", - "--lost-connection-recovery-timeout=7", - "--missed-heart-beats-allowed=7", - "--not-responding-to-available-timeout=7", - "--organization-id=s-organization-id", - "--outdial-enabled=true", - "--privacy-shield-visible=true", - "--reject-duplicate-dn=true", - "--system-default=true", - "--system-recovery-msg=s-system-recovery-msg", - "--timeout-desktop-inactivity-enabled=true", - "--timeout-desktop-inactivity-mins=7", - "--timeout-rona-chat-seconds=7", - "--timeout-rona-custom-messaging-seconds=7", - "--timeout-rona-email-seconds=7", - "--timeout-rona-social-seconds=7", - "--timeout-rona-telephony-seconds=7", - "--timeout-rona-work-item-seconds=7", - "--version=7", - "--watson-analytics-base-url=s-watson-analytics-base-url", - "--watson-analytics-password=s-watson-analytics-password", - "--watson-analytics-user-name=s-watson-analytics-user-name" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/tenant-configuration/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"apsEnabled\":true,\"apsUrl\":\"s-aps-url\",\"autoBaseUrl\":true,\"autoWrapUpInterval\":7,\"callVariablesBaseUrl\":\"s-call-variables-base-url\",\"callVariablesSuppressed\":\"s-call-variables-suppressed\",\"centralLogLevel\":\"s-central-log-level\",\"configurationVersion\":1.5,\"consoleLogLevel\":\"s-console-log-level\",\"createdTime\":7,\"diagnosticsPostUrl\":\"s-diagnostics-post-url\",\"dnDefaultDescription\":\"s-dn-default-description\",\"dnDefaultPrefix\":\"s-dn-default-prefix\",\"dnDefaultRegex\":\"s-dn-default-regex\",\"dnDefaultStripChars\":\"s-dn-default-strip-chars\",\"dnOtherDescription\":\"s-dn-other-description\",\"dnOtherPrefix\":\"s-dn-other-prefix\",\"dnOtherRegex\":\"s-dn-other-regex\",\"dnOtherStripChars\":\"s-dn-other-strip-chars\",\"dnTargetPrefix\":\"s-dn-target-prefix\",\"dnTargetRegex\":\"s-dn-target-regex\",\"dnTargetStripChars\":\"s-dn-target-strip-chars\",\"endCallEnabled\":true,\"endConsultEnabled\":true,\"forceDefaultDn\":true,\"heartBeatInterval\":7,\"id\":\"s-id\",\"incidentReportingEnabled\":true,\"lastUpdatedTime\":7,\"localDiskLogLevel\":\"s-local-disk-log-level\",\"lostConnectionRecoveryTimeout\":7,\"missedHeartBeatsAllowed\":7,\"notRespondingToAvailableTimeout\":7,\"organizationId\":\"s-organization-id\",\"outdialEnabled\":true,\"privacyShieldVisible\":true,\"rejectDuplicateDn\":true,\"systemDefault\":true,\"systemRecoveryMsg\":\"s-system-recovery-msg\",\"timeoutDesktopInactivityEnabled\":true,\"timeoutDesktopInactivityMins\":7,\"timeoutRonaChatSeconds\":7,\"timeoutRonaCustomMessagingSeconds\":7,\"timeoutRonaEmailSeconds\":7,\"timeoutRonaSocialSeconds\":7,\"timeoutRonaTelephonySeconds\":7,\"timeoutRonaWorkItemSeconds\":7,\"version\":7,\"watsonAnalyticsBaseUrl\":\"s-watson-analytics-base-url\",\"watsonAnalyticsPassword\":\"s-watson-analytics-password\",\"watsonAnalyticsUserName\":\"s-watson-analytics-user-name\"}" - } - ] - }, - { - "command": "cc tenant-configuration update", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/tenant-configuration/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"id\":\"s-id\"}" - } - ] - }, - { - "command": "cc tenant-configuration update", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/tenant-configuration/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc usage-reports create", - "variant": "all-flags", - "args": [ - "--end-date=s-end-date", - "--resource-type=s-resource-type", - "--start-date=s-start-date" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/usage-reports", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"endDate\":\"s-end-date\",\"resourceType\":\"s-resource-type\",\"startDate\":\"s-start-date\"}" - } - ] - }, - { - "command": "cc usage-reports create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/usage-reports", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc usage-reports create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/v1/usage-reports", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc usage-reports delete", - "variant": "all-flags", - "args": [ - "--report-id=s-report-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/v1/usage-reports/s-report-id", - "headers": { - "Accept": "*/*", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc usage-reports delete", - "variant": "required", - "args": [ - "--report-id=s-report-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/v1/usage-reports/s-report-id", - "headers": { - "Accept": "*/*", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc usage-reports download-file", - "variant": "all-flags", - "args": [ - "--file-id=s-file-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/usage-reports/s-file-id/download", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc usage-reports download-file", - "variant": "required", - "args": [ - "--file-id=s-file-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/usage-reports/s-file-id/download", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc usage-reports download-file", - "variant": "paginate", - "args": [ - "--file-id=s-file-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/usage-reports/s-file-id/download", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc usage-reports get", - "variant": "all-flags", - "args": [ - "--report-id=s-report-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/usage-reports/s-report-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc usage-reports get", - "variant": "required", - "args": [ - "--report-id=s-report-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/usage-reports/s-report-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc usage-reports get", - "variant": "paginate", - "args": [ - "--report-id=s-report-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/usage-reports/s-report-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc usage-reports list", - "variant": "all-flags", - "args": [ - "--created-after=s-created-after", - "--created-before=s-created-before", - "--resource-type=s-resource-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/usage-reports?createdAfter=s-created-after&createdBefore=s-created-before&resourceType=s-resource-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc usage-reports list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/usage-reports", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc usage-reports list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/usage-reports?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc usage-reports list-resource-types", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/usage-reports/resource-types", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc usage-reports list-resource-types", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/usage-reports/resource-types", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc usage-reports list-resource-types", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/v1/usage-reports/resource-types?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc user-profiles bulk-export", - "variant": "all-flags", - "args": [ - "--page=s-page", - "--page-size=s-page-size" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v3/user-profile/bulk-export?page=s-page&pageSize=s-page-size", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc user-profiles bulk-export", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v3/user-profile/bulk-export", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc user-profiles bulk-export", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v3/user-profile/bulk-export?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc user-profiles bulk-save", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v3/user-profile/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc user-profiles bulk-save", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v3/user-profile/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc user-profiles bulk-save", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v3/user-profile/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc user-profiles create", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v3/user-profile", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc user-profiles create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v3/user-profile", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc user-profiles create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v3/user-profile", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc user-profiles delete", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v3/user-profile/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc user-profiles delete", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v3/user-profile/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc user-profiles get", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--include-names=s-include-names" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v3/user-profile/s-id?includeNames=s-include-names", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc user-profiles get", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v3/user-profile/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc user-profiles get", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v3/user-profile/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc user-profiles get-acl-id", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--names=s-names" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v3/user-profile/s-id/acl?names=s-names", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc user-profiles get-acl-id", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v3/user-profile/s-id/acl", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc user-profiles get-acl-id", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v3/user-profile/s-id/acl", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc user-profiles list", - "variant": "all-flags", - "args": [ - "--attributes=s-attributes", - "--filter=s-filter", - "--page=s-page", - "--page-size=s-page-size", - "--search=s-search" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v3/user-profile?attributes=s-attributes&filter=s-filter&page=s-page&pageSize=s-page-size&search=s-search", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc user-profiles list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v3/user-profile", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc user-profiles list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v3/user-profile?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc user-profiles list-references", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--page=s-page", - "--page-size=s-page-size", - "--type=s-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/user-profile/s-id/incoming-references?page=s-page&pageSize=s-page-size&type=s-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc user-profiles list-references", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/user-profile/s-id/incoming-references", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc user-profiles list-references", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/user-profile/s-id/incoming-references?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc user-profiles purge-inactive", - "variant": "all-flags", - "args": [ - "--next-start-id=s-next-start-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/user-profile/purge-inactive-entities?nextStartId=s-next-start-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc user-profiles purge-inactive", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/user-profile/purge-inactive-entities", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc user-profiles update", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v3/user-profile/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc user-profiles update", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v3/user-profile/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc user-profiles update", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v3/user-profile/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc users bulk-export", - "variant": "all-flags", - "args": [ - "--page=s-page", - "--page-size=s-page-size" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/user/bulk-export?page=s-page&pageSize=s-page-size", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc users bulk-export", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/user/bulk-export", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc users bulk-export", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/user/bulk-export?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc users bulk-partial-update", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/user/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc users bulk-partial-update", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/user/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc users bulk-partial-update", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/user/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc users bulk-partial-update-dynamic-skills", - "variant": "all-flags", - "args": [ - "--skill-id=s-skill-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/user/bulk/update-dynamic-skill/s-skill-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc users bulk-partial-update-dynamic-skills", - "variant": "required", - "args": [ - "--skill-id=s-skill-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/user/bulk/update-dynamic-skill/s-skill-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc users bulk-partial-update-dynamic-skills", - "variant": "body", - "args": [ - "--skill-id=s-skill-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/user/bulk/update-dynamic-skill/s-skill-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc users get", - "variant": "all-flags", - "args": [ - "--check-if-user-has-dynamic-skill=s-check-if-user-has-dynamic-skill", - "--dynamic-skill-id=s-dynamic-skill-id", - "--id=s-id", - "--include-count=s-include-count", - "--include-reskill-audit-info=s-include-reskill-audit-info", - "--include-skill-details=s-include-skill-details", - "--include-skill-profile-audit=s-include-skill-profile-audit", - "--include-user-profile-type=s-include-user-profile-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/user/s-id?checkIfUserHasDynamicSkill=s-check-if-user-has-dynamic-skill&dynamicSkillId=s-dynamic-skill-id&includeCount=s-include-count&includeReskillAuditInfo=s-include-reskill-audit-info&includeSkillDetails=s-include-skill-details&includeSkillProfileAudit=s-include-skill-profile-audit&includeUserProfileType=s-include-user-profile-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc users get", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/user/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc users get", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/user/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc users get-agents-matching-skill-requirements", - "variant": "all-flags", - "args": [ - "--page=s-page", - "--page-size=s-page-size", - "--search=s-search" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/user/fetch-by-skill-requirements?page=s-page&pageSize=s-page-size&search=s-search", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc users get-agents-matching-skill-requirements", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/user/fetch-by-skill-requirements", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc users get-agents-matching-skill-requirements", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/user/fetch-by-skill-requirements", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc users get-along-profile-id", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/user/with-user-profile/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc users get-along-profile-id", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/user/with-user-profile/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc users get-along-profile-id", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/user/with-user-profile/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc users get-ci-id", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--include-names=s-include-names", - "--include-skill-details=s-include-skill-details", - "--include-user-profile=s-include-user-profile" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/user/by-ci-user-id/s-id?includeNames=s-include-names&includeSkillDetails=s-include-skill-details&includeUserProfile=s-include-user-profile", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc users get-ci-id", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/user/by-ci-user-id/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc users get-ci-id", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/user/by-ci-user-id/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc users get-dynamic-skill-id", - "variant": "all-flags", - "args": [ - "--page=s-page", - "--page-size=s-page-size", - "--search=s-search", - "--skill-id=s-skill-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/user/by-dynamic-skill-id/s-skill-id?page=s-page&pageSize=s-page-size&search=s-search", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc users get-dynamic-skill-id", - "variant": "required", - "args": [ - "--skill-id=s-skill-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/user/by-dynamic-skill-id/s-skill-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc users get-dynamic-skill-id", - "variant": "paginate", - "args": [ - "--skill-id=s-skill-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/user/by-dynamic-skill-id/s-skill-id?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc users list", - "variant": "all-flags", - "args": [ - "--attributes=s-attributes", - "--buddy-team-agents-only=s-buddy-team-agents-only", - "--filter=s-filter", - "--include-aimapping-count=s-include-aimapping-count", - "--include-dynamic-skills-limit-reached=s-include-dynamic-skills-limit-reached", - "--page=s-page", - "--page-size=s-page-size", - "--queue-id=s-queue-id", - "--search=s-search", - "--single-object-response=s-single-object-response", - "--supervisor-managed-agents-only=s-supervisor-managed-agents-only", - "--user-in-queue=s-user-in-queue" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/user?attributes=s-attributes&buddyTeamAgentsOnly=s-buddy-team-agents-only&filter=s-filter&includeAIMappingCount=s-include-aimapping-count&includeDynamicSkillsLimitReached=s-include-dynamic-skills-limit-reached&page=s-page&pageSize=s-page-size&queueId=s-queue-id&search=s-search&singleObjectResponse=s-single-object-response&supervisorManagedAgentsOnly=s-supervisor-managed-agents-only&userInQueue=s-user-in-queue", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc users list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/user", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc users list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/user?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc users list-along-profile", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/user/with-user-profile", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc users list-along-profile", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/user/with-user-profile", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc users list-along-profile", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/user/with-user-profile?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc users list-by-call-monitoring-config", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--page=s-page", - "--page-size=s-page-size" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/user/by-call-monitoring-id/s-id?page=s-page&pageSize=s-page-size", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc users list-by-call-monitoring-config", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/user/by-call-monitoring-id/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc users list-by-call-monitoring-config", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/user/by-call-monitoring-id/s-id?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc users list-by-ids", - "variant": "all-flags", - "args": [ - "--page=s-page", - "--page-size=s-page-size", - "--queue-id=s-queue-id", - "--search=s-search", - "--user-ids=s-user-ids-1,s-user-ids-2" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/user/fetch-user-details-by-ids?page=s-page&pageSize=s-page-size", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"queueId\":\"s-queue-id\",\"search\":\"s-search\",\"userIds\":[\"s-user-ids-1\",\"s-user-ids-2\"]}" - } - ] - }, - { - "command": "cc users list-by-ids", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/user/fetch-user-details-by-ids", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc users list-by-ids", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/user/fetch-user-details-by-ids", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc users list-references", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--page=s-page", - "--page-size=s-page-size", - "--type=s-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/user/s-id/incoming-references?page=s-page&pageSize=s-page-size&type=s-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc users list-references", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/user/s-id/incoming-references", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc users list-references", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/user/s-id/incoming-references?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc users list-v1", - "variant": "all-flags", - "args": [ - "--page=s-page", - "--page-size=s-page-size" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/user?page=s-page&pageSize=s-page-size", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc users list-v1", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/user", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc users list-v1", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/user?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc users patch", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--value-type=s-value-type" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/user/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"valueType\":\"s-value-type\"}" - } - ] - }, - { - "command": "cc users patch", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/user/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc users patch", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/user/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc users reskill-agents", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/user/s-id/reskill", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc users reskill-agents", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/user/s-id/reskill", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc users reskill-agents", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/user/s-id/reskill", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc users update", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/user/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc users update", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/user/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc users update", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/user/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc work-types bulk-export", - "variant": "all-flags", - "args": [ - "--page=s-page", - "--page-size=s-page-size" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/work-type/bulk-export?page=s-page&pageSize=s-page-size", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc work-types bulk-export", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/work-type/bulk-export", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc work-types bulk-export", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/work-type/bulk-export?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc work-types bulk-save", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/work-type/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc work-types bulk-save", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/work-type/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc work-types bulk-save", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/work-type/bulk", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc work-types create", - "variant": "all-flags", - "args": [ - "--active=true", - "--description=s-description", - "--id=s-id", - "--name=s-name", - "--organization-id=s-organization-id", - "--system-default=true", - "--version=7", - "--work-type-code=s-work-type-code" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/work-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"active\":true,\"description\":\"s-description\",\"id\":\"s-id\",\"name\":\"s-name\",\"organizationId\":\"s-organization-id\",\"systemDefault\":true,\"version\":7,\"workTypeCode\":\"s-work-type-code\"}" - } - ] - }, - { - "command": "cc work-types create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/work-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc work-types create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/work-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "cc work-types delete", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/work-type/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc work-types delete", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/work-type/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc work-types get", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/work-type/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc work-types get", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/work-type/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc work-types get", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/work-type/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc work-types list", - "variant": "all-flags", - "args": [ - "--attributes=s-attributes", - "--filter=s-filter", - "--page=s-page", - "--page-size=s-page-size", - "--search=s-search" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/work-type?attributes=s-attributes&filter=s-filter&page=s-page&pageSize=s-page-size&search=s-search", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc work-types list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/work-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc work-types list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/v2/work-type?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc work-types list-references", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--page=s-page", - "--page-size=s-page-size", - "--type=s-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/work-type/s-id/incoming-references?page=s-page&pageSize=s-page-size&type=s-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc work-types list-references", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/work-type/s-id/incoming-references", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc work-types list-references", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/work-type/s-id/incoming-references?page=0&pageSize=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc work-types purge-inactive", - "variant": "all-flags", - "args": [ - "--next-start-id=s-next-start-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/work-type/purge-inactive-entities?nextStartId=s-next-start-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc work-types purge-inactive", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/work-type/purge-inactive-entities", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "cc work-types update", - "variant": "all-flags", - "args": [ - "--active=true", - "--description=s-description", - "--id=s-id", - "--name=s-name", - "--organization-id=s-organization-id", - "--system-default=true", - "--version=7", - "--work-type-code=s-work-type-code" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/work-type/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"active\":true,\"description\":\"s-description\",\"id\":\"s-id\",\"name\":\"s-name\",\"organizationId\":\"s-organization-id\",\"systemDefault\":true,\"version\":7,\"workTypeCode\":\"s-work-type-code\"}" - } - ] - }, - { - "command": "cc work-types update", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/work-type/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"id\":\"s-id\"}" - } - ] - }, - { - "command": "cc work-types update", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://api.wxcc-us1.cisco.com/organization/6ab1d2c4-0000-4000-8000-00000000c1d0/work-type/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - } -] diff --git a/testdata/golden/requests-device.json b/testdata/golden/requests-device.json deleted file mode 100644 index 5137ca0..0000000 --- a/testdata/golden/requests-device.json +++ /dev/null @@ -1,5822 +0,0 @@ -[ - { - "command": "device device-call apply-changes", - "variant": "all-flags", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/actions/applyChanges/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call apply-changes", - "variant": "required", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/actions/applyChanges/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call apply-line-key-template", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/applyLineKeyTemplate?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call apply-line-key-template", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/applyLineKeyTemplate?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call apply-line-key-template", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/applyLineKeyTemplate?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "device device-call create-line-key-template", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/devices/lineKeyTemplates?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call create-line-key-template", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/devices/lineKeyTemplates?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call create-line-key-template", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/devices/lineKeyTemplates?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "device device-call delete-background-images", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/devices/backgroundImages?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call delete-background-images", - "variant": "required", - "args": null, - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/devices/backgroundImages?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call delete-background-images", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/devices/backgroundImages?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "device device-call delete-line-key-template", - "variant": "all-flags", - "args": [ - "--template-id=s-template-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/devices/lineKeyTemplates/s-template-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call delete-line-key-template", - "variant": "required", - "args": [ - "--template-id=s-template-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/telephony/config/devices/lineKeyTemplates/s-template-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-change-settings-job-status", - "variant": "all-flags", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/callDeviceSettings/s-job-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-change-settings-job-status", - "variant": "required", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/callDeviceSettings/s-job-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-change-settings-job-status", - "variant": "paginate", - "args": [ - "--job-id=s-job-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/callDeviceSettings/s-job-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-count-available-members", - "variant": "all-flags", - "args": [ - "--device-location-id=s-device-location-id", - "--exclude-virtual-line=s-exclude-virtual-line", - "--extension=s-extension", - "--location-id=s-location-id", - "--member-name=s-member-name", - "--phone-number=s-phone-number", - "--usage-type=s-usage-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/availableMembers/count?deviceLocationId=s-device-location-id&excludeVirtualLine=s-exclude-virtual-line&extension=s-extension&locationId=s-location-id&memberName=s-member-name&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&phoneNumber=s-phone-number&usageType=s-usage-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-count-available-members", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/availableMembers/count?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-count-available-members", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/availableMembers/count?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-count-members", - "variant": "all-flags", - "args": [ - "--device-id=s-device-id", - "--extension=s-extension", - "--location-id=s-location-id", - "--member-name=s-member-name", - "--phone-number=s-phone-number", - "--usage-type=s-usage-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/availableMembers/count?extension=s-extension&locationId=s-location-id&memberName=s-member-name&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&phoneNumber=s-phone-number&usageType=s-usage-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-count-members", - "variant": "required", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/availableMembers/count?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-count-members", - "variant": "paginate", - "args": [ - "--device-id=s-device-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/availableMembers/count?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-customer-dynamic-settings", - "variant": "all-flags", - "args": [ - "--family-or-model-display-name=s-family-or-model-display-name", - "--tags=s-tags-1,s-tags-2" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/lists/devices/dynamicSettings/actions/getSettings/invoke?familyOrModelDisplayName=s-family-or-model-display-name&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"tags\":[\"s-tags-1\",\"s-tags-2\"]}" - } - ] - }, - { - "command": "device device-call get-customer-dynamic-settings", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/lists/devices/dynamicSettings/actions/getSettings/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-customer-dynamic-settings", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/lists/devices/dynamicSettings/actions/getSettings/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "device device-call get-customer-dynamic-settings-2", - "variant": "all-flags", - "args": [ - "--family-or-model-display-name=s-family-or-model-display-name", - "--tags=s-tags-1,s-tags-2" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/lists/devices/dynamicSettings/actions/getSettings/invoke?familyOrModelDisplayName=s-family-or-model-display-name&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"tags\":[\"s-tags-1\",\"s-tags-2\"]}" - } - ] - }, - { - "command": "device device-call get-customer-dynamic-settings-2", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/lists/devices/dynamicSettings/actions/getSettings/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-customer-dynamic-settings-2", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/lists/devices/dynamicSettings/actions/getSettings/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "device device-call get-dect-type-list", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/dectNetworks/supportedDevices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-dect-type-list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/dectNetworks/supportedDevices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-dect-type-list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/dectNetworks/supportedDevices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-dect-type-list-deprecated", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/dects/supportedDevices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-dect-type-list-deprecated", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/dects/supportedDevices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-dect-type-list-deprecated", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/dects/supportedDevices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-dynamic-settings", - "variant": "all-flags", - "args": [ - "--device-id=s-device-id", - "--tags=s-tags-1,s-tags-2" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/lists/devices/s-device-id/dynamicSettings/actions/getSettings/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"tags\":[\"s-tags-1\",\"s-tags-2\"]}" - } - ] - }, - { - "command": "device device-call get-dynamic-settings", - "variant": "required", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/lists/devices/s-device-id/dynamicSettings/actions/getSettings/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-dynamic-settings", - "variant": "body", - "args": [ - "--device-id=s-device-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/lists/devices/s-device-id/dynamicSettings/actions/getSettings/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "device device-call get-dynamic-settings-2", - "variant": "all-flags", - "args": [ - "--device-id=s-device-id", - "--tags=s-tags-1,s-tags-2" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/lists/devices/s-device-id/dynamicSettings/actions/getSettings/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"tags\":[\"s-tags-1\",\"s-tags-2\"]}" - } - ] - }, - { - "command": "device device-call get-dynamic-settings-2", - "variant": "required", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/lists/devices/s-device-id/dynamicSettings/actions/getSettings/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-dynamic-settings-2", - "variant": "body", - "args": [ - "--device-id=s-device-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/lists/devices/s-device-id/dynamicSettings/actions/getSettings/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "device device-call get-dynamic-settings-job-status", - "variant": "all-flags", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/dynamicDeviceSettings/s-job-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-dynamic-settings-job-status", - "variant": "required", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/dynamicDeviceSettings/s-job-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-dynamic-settings-job-status", - "variant": "paginate", - "args": [ - "--job-id=s-job-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/dynamicDeviceSettings/s-job-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-dynamic-settings-job-status-2", - "variant": "all-flags", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/dynamicDeviceSettings/s-job-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-dynamic-settings-job-status-2", - "variant": "required", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/dynamicDeviceSettings/s-job-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-dynamic-settings-job-status-2", - "variant": "paginate", - "args": [ - "--job-id=s-job-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/dynamicDeviceSettings/s-job-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-job-errors-apply-line-key-template-job", - "variant": "all-flags", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/applyLineKeyTemplate/s-job-id/errors?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-job-errors-apply-line-key-template-job", - "variant": "required", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/applyLineKeyTemplate/s-job-id/errors?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-job-errors-apply-line-key-template-job", - "variant": "paginate", - "args": [ - "--job-id=s-job-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/applyLineKeyTemplate/s-job-id/errors?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-job-errors-rebuild-phones-job", - "variant": "all-flags", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/rebuildPhones/s-job-id/errors?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-job-errors-rebuild-phones-job", - "variant": "required", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/rebuildPhones/s-job-id/errors?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-job-errors-rebuild-phones-job", - "variant": "paginate", - "args": [ - "--job-id=s-job-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/rebuildPhones/s-job-id/errors?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-job-status-apply-line-key-template-job", - "variant": "all-flags", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/applyLineKeyTemplate/s-job-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-job-status-apply-line-key-template-job", - "variant": "required", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/applyLineKeyTemplate/s-job-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-job-status-apply-line-key-template-job", - "variant": "paginate", - "args": [ - "--job-id=s-job-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/applyLineKeyTemplate/s-job-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-job-status-rebuild-phones-job", - "variant": "all-flags", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/rebuildPhones/s-job-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-job-status-rebuild-phones-job", - "variant": "required", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/rebuildPhones/s-job-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-job-status-rebuild-phones-job", - "variant": "paginate", - "args": [ - "--job-id=s-job-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/rebuildPhones/s-job-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-layout-id", - "variant": "all-flags", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/layout?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-layout-id", - "variant": "required", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/layout?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-layout-id", - "variant": "paginate", - "args": [ - "--device-id=s-device-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/layout?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-line-key-template", - "variant": "all-flags", - "args": [ - "--template-id=s-template-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/lineKeyTemplates/s-template-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-line-key-template", - "variant": "required", - "args": [ - "--template-id=s-template-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/lineKeyTemplates/s-template-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-line-key-template", - "variant": "paginate", - "args": [ - "--template-id=s-template-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/lineKeyTemplates/s-template-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-location-dynamic-settings", - "variant": "all-flags", - "args": [ - "--family-or-model-display-name=s-family-or-model-display-name", - "--location-id=s-location-id", - "--tags=s-tags-1,s-tags-2" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/lists/locations/s-location-id/devices/dynamicSettings/actions/getSettings/invoke?familyOrModelDisplayName=s-family-or-model-display-name&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"tags\":[\"s-tags-1\",\"s-tags-2\"]}" - } - ] - }, - { - "command": "device device-call get-location-dynamic-settings", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/lists/locations/s-location-id/devices/dynamicSettings/actions/getSettings/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-location-dynamic-settings", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/lists/locations/s-location-id/devices/dynamicSettings/actions/getSettings/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "device device-call get-location-dynamic-settings-2", - "variant": "all-flags", - "args": [ - "--family-or-model-display-name=s-family-or-model-display-name", - "--location-id=s-location-id", - "--tags=s-tags-1,s-tags-2" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/lists/locations/s-location-id/devices/dynamicSettings/actions/getSettings/invoke?familyOrModelDisplayName=s-family-or-model-display-name&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"tags\":[\"s-tags-1\",\"s-tags-2\"]}" - } - ] - }, - { - "command": "device device-call get-location-dynamic-settings-2", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/lists/locations/s-location-id/devices/dynamicSettings/actions/getSettings/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-location-dynamic-settings-2", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/lists/locations/s-location-id/devices/dynamicSettings/actions/getSettings/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "device device-call get-location-settings", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/devices/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-location-settings", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/devices/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-location-settings", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/locations/s-location-id/devices/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-members", - "variant": "all-flags", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/members?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-members", - "variant": "required", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/members?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-members", - "variant": "paginate", - "args": [ - "--device-id=s-device-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/members?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-override-settings", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-override-settings", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-override-settings", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-person", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/devices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/devices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-person", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/devices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-settings", - "variant": "all-flags", - "args": [ - "--device-id=s-device-id", - "--device-model=s-device-model" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/settings?deviceModel=s-device-model&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-settings", - "variant": "required", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-settings", - "variant": "paginate", - "args": [ - "--device-id=s-device-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-settings-groups", - "variant": "all-flags", - "args": [ - "--family-or-model-display-name=s-family-or-model-display-name", - "--include-settings-type=s-include-settings-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/dynamicSettings/settingsGroups?familyOrModelDisplayName=s-family-or-model-display-name&includeSettingsType=s-include-settings-type&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-settings-groups", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/dynamicSettings/settingsGroups?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-settings-groups", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/dynamicSettings/settingsGroups?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-settings-groups-2", - "variant": "all-flags", - "args": [ - "--family-or-model-display-name=s-family-or-model-display-name", - "--include-settings-type=s-include-settings-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/dynamicSettings/settingsGroups?familyOrModelDisplayName=s-family-or-model-display-name&includeSettingsType=s-include-settings-type&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-settings-groups-2", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/dynamicSettings/settingsGroups?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-settings-groups-2", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/dynamicSettings/settingsGroups?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-settings-person", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/devices/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-settings-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/devices/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-settings-person", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/devices/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-settings-workspace", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/devices/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-settings-workspace", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/devices/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-settings-workspace", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/devices/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-user-count", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/devices/count?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-user-count", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/devices/count?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-user-count", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/devices/count?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-validation-schema", - "variant": "all-flags", - "args": [ - "--family-or-model-display-name=s-family-or-model-display-name" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/dynamicSettings/validationSchema?familyOrModelDisplayName=s-family-or-model-display-name&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-validation-schema", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/dynamicSettings/validationSchema?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-validation-schema", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/dynamicSettings/validationSchema?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-webex-calling", - "variant": "all-flags", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-webex-calling", - "variant": "required", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-webex-calling", - "variant": "paginate", - "args": [ - "--device-id=s-device-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-workspace", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/devices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-workspace", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/devices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call get-workspace", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/devices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call list-apply-line-key-template-jobs", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/applyLineKeyTemplate?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call list-apply-line-key-template-jobs", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/applyLineKeyTemplate?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call list-apply-line-key-template-jobs", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/applyLineKeyTemplate?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call list-background-images", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/backgroundImages?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call list-background-images", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/backgroundImages?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call list-background-images", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/backgroundImages?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call list-change-settings-job-errors", - "variant": "all-flags", - "args": [ - "--job-id=s-job-id", - "--max=s-max", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/callDeviceSettings/s-job-id/errors?max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call list-change-settings-job-errors", - "variant": "required", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/callDeviceSettings/s-job-id/errors?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call list-change-settings-job-errors", - "variant": "paginate", - "args": [ - "--job-id=s-job-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/callDeviceSettings/s-job-id/errors?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call list-change-settings-jobs", - "variant": "all-flags", - "args": [ - "--max=s-max", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/callDeviceSettings?max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call list-change-settings-jobs", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/callDeviceSettings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call list-change-settings-jobs", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/callDeviceSettings?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call list-dynamic-settings-job-errors", - "variant": "all-flags", - "args": [ - "--job-id=s-job-id", - "--max=s-max", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/dynamicDeviceSettings/s-job-id/errors?max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call list-dynamic-settings-job-errors", - "variant": "required", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/dynamicDeviceSettings/s-job-id/errors?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call list-dynamic-settings-job-errors", - "variant": "paginate", - "args": [ - "--job-id=s-job-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/dynamicDeviceSettings/s-job-id/errors?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call list-dynamic-settings-job-errors-2", - "variant": "all-flags", - "args": [ - "--job-id=s-job-id", - "--max=s-max", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/dynamicDeviceSettings/s-job-id/errors?max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call list-dynamic-settings-job-errors-2", - "variant": "required", - "args": [ - "--job-id=s-job-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/dynamicDeviceSettings/s-job-id/errors?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call list-dynamic-settings-job-errors-2", - "variant": "paginate", - "args": [ - "--job-id=s-job-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/dynamicDeviceSettings/s-job-id/errors?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call list-dynamic-settings-jobs", - "variant": "all-flags", - "args": [ - "--max=s-max", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/dynamicDeviceSettings?max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call list-dynamic-settings-jobs", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/dynamicDeviceSettings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call list-dynamic-settings-jobs", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/dynamicDeviceSettings?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call list-dynamic-settings-jobs-2", - "variant": "all-flags", - "args": [ - "--max=s-max", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/dynamicDeviceSettings?max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call list-dynamic-settings-jobs-2", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/dynamicDeviceSettings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call list-dynamic-settings-jobs-2", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/dynamicDeviceSettings?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call list-line-key-templates", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/lineKeyTemplates?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call list-line-key-templates", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/lineKeyTemplates?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call list-line-key-templates", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/lineKeyTemplates?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call list-rebuild-phones-jobs", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/rebuildPhones?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call list-rebuild-phones-jobs", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/rebuildPhones?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call list-rebuild-phones-jobs", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/rebuildPhones?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call list-supported", - "variant": "all-flags", - "args": [ - "--allow-configure-layout-enabled=s-allow-configure-layout-enabled", - "--type=s-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/supportedDevices?allowConfigureLayoutEnabled=s-allow-configure-layout-enabled&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&type=s-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call list-supported", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/supportedDevices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call list-supported", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/supportedDevices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call list-supported-2", - "variant": "all-flags", - "args": [ - "--allow-configure-layout-enabled=s-allow-configure-layout-enabled", - "--type=s-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/supportedDevices?allowConfigureLayoutEnabled=s-allow-configure-layout-enabled&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&type=s-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call list-supported-2", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/supportedDevices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call list-supported-2", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/supportedDevices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call list-supported-3", - "variant": "all-flags", - "args": [ - "--allow-configure-layout-enabled=s-allow-configure-layout-enabled", - "--type=s-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/supportedDevices?allowConfigureLayoutEnabled=s-allow-configure-layout-enabled&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&type=s-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call list-supported-3", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/supportedDevices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call list-supported-3", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/supportedDevices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call preview-apply-line-key-template", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/devices/actions/previewApplyLineKeyTemplate/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call preview-apply-line-key-template", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/devices/actions/previewApplyLineKeyTemplate/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call preview-apply-line-key-template", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/devices/actions/previewApplyLineKeyTemplate/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "device device-call rebuild-phones-configuration", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/rebuildPhones?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"locationId\":\"s-location-id\"}" - } - ] - }, - { - "command": "device device-call rebuild-phones-configuration", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/rebuildPhones?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call rebuild-phones-configuration", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/rebuildPhones?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "device device-call search-members", - "variant": "all-flags", - "args": [ - "--device-id=s-device-id", - "--extension=s-extension", - "--location-id=s-location-id", - "--max=s-max", - "--member-name=s-member-name", - "--order=s-order", - "--phone-number=s-phone-number", - "--start=s-start", - "--usage-type=s-usage-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/availableMembers?extension=s-extension&locationId=s-location-id&max=s-max&memberName=s-member-name&order=s-order&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&phoneNumber=s-phone-number&start=s-start&usageType=s-usage-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call search-members", - "variant": "required", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/availableMembers?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call search-members", - "variant": "paginate", - "args": [ - "--device-id=s-device-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/availableMembers?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call update-dynamic-settings", - "variant": "all-flags", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/dynamicSettings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call update-dynamic-settings", - "variant": "required", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/dynamicSettings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call update-dynamic-settings", - "variant": "body", - "args": [ - "--device-id=s-device-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/dynamicSettings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "device device-call update-dynamic-settings-across-org-location", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/dynamicDeviceSettings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call update-dynamic-settings-across-org-location", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/dynamicDeviceSettings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call update-dynamic-settings-across-org-location", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/dynamicDeviceSettings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "device device-call update-hoteling-settings-person-primary", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/devices/settings/hoteling?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call update-hoteling-settings-person-primary", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/devices/settings/hoteling?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call update-hoteling-settings-person-primary", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/devices/settings/hoteling?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "device device-call update-layout-id", - "variant": "all-flags", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/layout?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call update-layout-id", - "variant": "required", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/layout?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call update-layout-id", - "variant": "body", - "args": [ - "--device-id=s-device-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/layout?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "device device-call update-line-key-template", - "variant": "all-flags", - "args": [ - "--template-id=s-template-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/devices/lineKeyTemplates/s-template-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call update-line-key-template", - "variant": "required", - "args": [ - "--template-id=s-template-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/devices/lineKeyTemplates/s-template-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call update-line-key-template", - "variant": "body", - "args": [ - "--template-id=s-template-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/devices/lineKeyTemplates/s-template-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "device device-call update-members", - "variant": "all-flags", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/members?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call update-members", - "variant": "required", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/members?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call update-members", - "variant": "body", - "args": [ - "--device-id=s-device-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/members?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "device device-call update-settings", - "variant": "all-flags", - "args": [ - "--device-id=s-device-id", - "--device-model=s-device-model" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/settings?deviceModel=s-device-model&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call update-settings", - "variant": "required", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call update-settings", - "variant": "body", - "args": [ - "--device-id=s-device-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "device device-call update-settings-across-org-location-job", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/callDeviceSettings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call update-settings-across-org-location-job", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/callDeviceSettings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call update-settings-across-org-location-job", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/callDeviceSettings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "device device-call update-settings-person", - "variant": "all-flags", - "args": [ - "--compression=s-compression", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/devices/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"compression\":\"s-compression\"}" - } - ] - }, - { - "command": "device device-call update-settings-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/devices/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call update-settings-person", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/people/s-person-id/devices/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "device device-call update-settings-workspace", - "variant": "all-flags", - "args": [ - "--compression=s-compression", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/devices/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"compression\":\"s-compression\"}" - } - ] - }, - { - "command": "device device-call update-settings-workspace", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/devices/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call update-settings-workspace", - "variant": "body", - "args": [ - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/devices/settings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "device device-call update-specified-settings", - "variant": "all-flags", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/dynamicSettings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call update-specified-settings", - "variant": "required", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/dynamicSettings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call update-specified-settings", - "variant": "body", - "args": [ - "--device-id=s-device-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/dynamicSettings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "device device-call update-third-party", - "variant": "all-flags", - "args": [ - "--device-id=s-device-id", - "--sip-password=s-sip-password" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"sipPassword\":\"s-sip-password\"}" - } - ] - }, - { - "command": "device device-call update-third-party", - "variant": "required", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call update-third-party", - "variant": "body", - "args": [ - "--device-id=s-device-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "device device-call update-workspace", - "variant": "all-flags", - "args": [ - "--enabled=true", - "--guest-hours-limit=7", - "--limit-guest-use=true", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/devices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"enabled\":true,\"guestHoursLimit\":7,\"limitGuestUse\":true}" - } - ] - }, - { - "command": "device device-call update-workspace", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/devices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call update-workspace", - "variant": "body", - "args": [ - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/telephony/config/workspaces/s-workspace-id/devices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "device device-call updates-dynamic-settings-across-org-location", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/dynamicDeviceSettings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call updates-dynamic-settings-across-org-location", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/dynamicDeviceSettings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call updates-dynamic-settings-across-org-location", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/jobs/devices/dynamicDeviceSettings?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "device device-call upload-background-image", - "variant": "all-flags", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/actions/backgroundImageUpload/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call upload-background-image", - "variant": "required", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/devices/s-device-id/actions/backgroundImageUpload/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call validate-list-mac-address", - "variant": "all-flags", - "args": [ - "--macs=s-macs-1,s-macs-2" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/devices/actions/validateMacs/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"macs\":[\"s-macs-1\",\"s-macs-2\"]}" - } - ] - }, - { - "command": "device device-call validate-list-mac-address", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/devices/actions/validateMacs/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-call validate-list-mac-address", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/telephony/config/devices/actions/validateMacs/invoke?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "device device-configurations list", - "variant": "all-flags", - "args": [ - "--device-id=s-device-id", - "--key=s-key" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/deviceConfigurations?deviceId=s-device-id&key=s-key", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-configurations list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/deviceConfigurations", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-configurations list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/deviceConfigurations", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-configurations update", - "variant": "all-flags", - "args": [ - "--device-id=s-device-id", - "--op=s-op", - "--path=s-path" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://webexapis.com/v1/deviceConfigurations?deviceId=s-device-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"op\":\"s-op\",\"path\":\"s-path\"}" - } - ] - }, - { - "command": "device device-configurations update", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PATCH", - "url": "https://webexapis.com/v1/deviceConfigurations", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device device-configurations update", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://webexapis.com/v1/deviceConfigurations", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "device devices create-activation-code", - "variant": "all-flags", - "args": [ - "--model=s-model", - "--person-id=s-person-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/devices/activationCode?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"model\":\"s-model\",\"personId\":\"s-person-id\",\"workspaceId\":\"s-workspace-id\"}" - } - ] - }, - { - "command": "device devices create-activation-code", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/devices/activationCode?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device devices create-activation-code", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/devices/activationCode?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "device devices create-mac-address", - "variant": "all-flags", - "args": [ - "--mac=s-mac", - "--model=s-model", - "--password=s-password", - "--person-id=s-person-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/devices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"mac\":\"s-mac\",\"model\":\"s-model\",\"password\":\"s-password\",\"personId\":\"s-person-id\",\"workspaceId\":\"s-workspace-id\"}" - } - ] - }, - { - "command": "device devices create-mac-address", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/devices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device devices create-mac-address", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/devices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "device devices delete", - "variant": "all-flags", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/devices/s-device-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device devices delete", - "variant": "required", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/devices/s-device-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device devices get", - "variant": "all-flags", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/devices/s-device-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device devices get", - "variant": "required", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/devices/s-device-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device devices get", - "variant": "paginate", - "args": [ - "--device-id=s-device-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/devices/s-device-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device devices list", - "variant": "all-flags", - "args": [ - "--capability=s-capability", - "--connection-status=s-connection-status", - "--device-platform=s-device-platform", - "--display-name=s-display-name", - "--error-code=s-error-code", - "--location-id=s-location-id", - "--mac=s-mac", - "--max=s-max", - "--permission=s-permission", - "--person-id=s-person-id", - "--planned-maintenance=s-planned-maintenance", - "--product=s-product", - "--serial=s-serial", - "--software=s-software", - "--start=s-start", - "--tag=s-tag", - "--type=s-type", - "--upgrade-channel=s-upgrade-channel", - "--workspace-id=s-workspace-id", - "--workspace-location-id=s-workspace-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/devices?capability=s-capability&connectionStatus=s-connection-status&devicePlatform=s-device-platform&displayName=s-display-name&errorCode=s-error-code&locationId=s-location-id&mac=s-mac&max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&permission=s-permission&personId=s-person-id&plannedMaintenance=s-planned-maintenance&product=s-product&serial=s-serial&software=s-software&start=s-start&tag=s-tag&type=s-type&upgradeChannel=s-upgrade-channel&workspaceId=s-workspace-id&workspaceLocationId=s-workspace-location-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device devices list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/devices?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device devices list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/devices?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device devices update-tags", - "variant": "all-flags", - "args": [ - "--device-id=s-device-id", - "--op=s-op", - "--path=s-path", - "--value=s-value-1,s-value-2" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://webexapis.com/v1/devices/s-device-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"op\":\"s-op\",\"path\":\"s-path\",\"value\":[\"s-value-1\",\"s-value-2\"]}" - } - ] - }, - { - "command": "device devices update-tags", - "variant": "required", - "args": [ - "--device-id=s-device-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://webexapis.com/v1/devices/s-device-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device devices update-tags", - "variant": "body", - "args": [ - "--device-id=s-device-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://webexapis.com/v1/devices/s-device-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "device hot-desk delete-session", - "variant": "all-flags", - "args": [ - "--session-id=s-session-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/hotdesk/sessions/s-session-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device hot-desk delete-session", - "variant": "required", - "args": [ - "--session-id=s-session-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/hotdesk/sessions/s-session-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device hot-desk list-sessions", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hotdesk/sessions?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&personId=s-person-id&workspaceId=s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device hot-desk list-sessions", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hotdesk/sessions?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device hot-desk list-sessions", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hotdesk/sessions?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device locations create", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/locations?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device locations create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/locations?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device locations create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/locations?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "device locations create-floor", - "variant": "all-flags", - "args": [ - "--display-name=s-display-name", - "--floor-number=7", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/locations/s-location-id/floors", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"displayName\":\"s-display-name\",\"floorNumber\":7}" - } - ] - }, - { - "command": "device locations create-floor", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/locations/s-location-id/floors", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device locations create-floor", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/locations/s-location-id/floors", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "device locations delete", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/locations/s-location-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device locations delete", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/locations/s-location-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device locations delete-floor", - "variant": "all-flags", - "args": [ - "--floor-id=s-floor-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/locations/s-location-id/floors/s-floor-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device locations delete-floor", - "variant": "required", - "args": [ - "--floor-id=s-floor-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/locations/s-location-id/floors/s-floor-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device locations get", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/locations/s-location-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device locations get", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/locations/s-location-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device locations get", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/locations/s-location-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device locations get-floor", - "variant": "all-flags", - "args": [ - "--floor-id=s-floor-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/locations/s-location-id/floors/s-floor-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device locations get-floor", - "variant": "required", - "args": [ - "--floor-id=s-floor-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/locations/s-location-id/floors/s-floor-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device locations get-floor", - "variant": "paginate", - "args": [ - "--floor-id=s-floor-id", - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/locations/s-location-id/floors/s-floor-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device locations list", - "variant": "all-flags", - "args": [ - "--id=s-id", - "--max=s-max", - "--name=s-name" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/locations?id=s-id&max=s-max&name=s-name&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device locations list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/locations?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device locations list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/locations?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device locations list-floors", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/locations/s-location-id/floors", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device locations list-floors", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/locations/s-location-id/floors", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device locations list-floors", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/locations/s-location-id/floors", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device locations update", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/locations/s-location-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device locations update", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/locations/s-location-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device locations update", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/locations/s-location-id?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "device locations update-floor", - "variant": "all-flags", - "args": [ - "--display-name=s-display-name", - "--floor-id=s-floor-id", - "--floor-number=7", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/locations/s-location-id/floors/s-floor-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"displayName\":\"s-display-name\",\"floorNumber\":7}" - } - ] - }, - { - "command": "device locations update-floor", - "variant": "required", - "args": [ - "--floor-id=s-floor-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/locations/s-location-id/floors/s-floor-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device locations update-floor", - "variant": "body", - "args": [ - "--floor-id=s-floor-id", - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/locations/s-location-id/floors/s-floor-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "device workspace-locations create", - "variant": "all-flags", - "args": [ - "--address=s-address", - "--city-name=s-city-name", - "--country-code=s-country-code", - "--display-name=s-display-name", - "--latitude=7", - "--longitude=7", - "--notes=s-notes" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/workspaceLocations", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"address\":\"s-address\",\"cityName\":\"s-city-name\",\"countryCode\":\"s-country-code\",\"displayName\":\"s-display-name\",\"latitude\":7,\"longitude\":7,\"notes\":\"s-notes\"}" - } - ] - }, - { - "command": "device workspace-locations create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/workspaceLocations", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device workspace-locations create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/workspaceLocations", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "device workspace-locations create-floor", - "variant": "all-flags", - "args": [ - "--display-name=s-display-name", - "--floor-number=7", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/workspaceLocations/s-location-id/floors", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"displayName\":\"s-display-name\",\"floorNumber\":7}" - } - ] - }, - { - "command": "device workspace-locations create-floor", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/workspaceLocations/s-location-id/floors", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device workspace-locations create-floor", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/workspaceLocations/s-location-id/floors", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "device workspace-locations delete", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/workspaceLocations/s-location-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device workspace-locations delete", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/workspaceLocations/s-location-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device workspace-locations delete-floor", - "variant": "all-flags", - "args": [ - "--floor-id=s-floor-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/workspaceLocations/s-location-id/floors/s-floor-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device workspace-locations delete-floor", - "variant": "required", - "args": [ - "--floor-id=s-floor-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/workspaceLocations/s-location-id/floors/s-floor-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device workspace-locations get", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaceLocations/s-location-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device workspace-locations get", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaceLocations/s-location-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device workspace-locations get", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaceLocations/s-location-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device workspace-locations get-floor", - "variant": "all-flags", - "args": [ - "--floor-id=s-floor-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaceLocations/s-location-id/floors/s-floor-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device workspace-locations get-floor", - "variant": "required", - "args": [ - "--floor-id=s-floor-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaceLocations/s-location-id/floors/s-floor-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device workspace-locations get-floor", - "variant": "paginate", - "args": [ - "--floor-id=s-floor-id", - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaceLocations/s-location-id/floors/s-floor-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device workspace-locations list", - "variant": "all-flags", - "args": [ - "--address=s-address", - "--city-name=s-city-name", - "--country-code=s-country-code", - "--display-name=s-display-name" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaceLocations?address=s-address&cityName=s-city-name&countryCode=s-country-code&displayName=s-display-name&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device workspace-locations list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaceLocations?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device workspace-locations list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaceLocations?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device workspace-locations list-floors", - "variant": "all-flags", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaceLocations/s-location-id/floors", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device workspace-locations list-floors", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaceLocations/s-location-id/floors", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device workspace-locations list-floors", - "variant": "paginate", - "args": [ - "--location-id=s-location-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaceLocations/s-location-id/floors", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device workspace-locations update", - "variant": "all-flags", - "args": [ - "--address=s-address", - "--city-name=s-city-name", - "--country-code=s-country-code", - "--display-name=s-display-name", - "--id=s-id", - "--latitude=7", - "--location-id=s-location-id", - "--longitude=7", - "--notes=s-notes" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/workspaceLocations/s-location-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"address\":\"s-address\",\"cityName\":\"s-city-name\",\"countryCode\":\"s-country-code\",\"displayName\":\"s-display-name\",\"id\":\"s-id\",\"latitude\":7,\"longitude\":7,\"notes\":\"s-notes\"}" - } - ] - }, - { - "command": "device workspace-locations update", - "variant": "required", - "args": [ - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/workspaceLocations/s-location-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device workspace-locations update", - "variant": "body", - "args": [ - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/workspaceLocations/s-location-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "device workspace-locations update-floor", - "variant": "all-flags", - "args": [ - "--display-name=s-display-name", - "--floor-id=s-floor-id", - "--floor-number=7", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/workspaceLocations/s-location-id/floors/s-floor-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"displayName\":\"s-display-name\",\"floorNumber\":7}" - } - ] - }, - { - "command": "device workspace-locations update-floor", - "variant": "required", - "args": [ - "--floor-id=s-floor-id", - "--location-id=s-location-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/workspaceLocations/s-location-id/floors/s-floor-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device workspace-locations update-floor", - "variant": "body", - "args": [ - "--floor-id=s-floor-id", - "--location-id=s-location-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/workspaceLocations/s-location-id/floors/s-floor-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "device workspace-metrics duration", - "variant": "all-flags", - "args": [ - "--aggregation=s-aggregation", - "--from=2026-01-01T00:00:00.000Z", - "--measurement=s-measurement", - "--to=2026-01-02T00:00:00.000Z", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaceDurationMetrics?aggregation=s-aggregation&from=2026-01-01T00%3A00%3A00.000Z&measurement=s-measurement&to=2026-01-02T00%3A00%3A00.000Z&workspaceId=s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device workspace-metrics duration", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaceDurationMetrics", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device workspace-metrics duration", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaceDurationMetrics", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device workspace-metrics workspace-metrics", - "variant": "all-flags", - "args": [ - "--aggregation=s-aggregation", - "--from=2026-01-01T00:00:00.000Z", - "--metric-name=s-metric-name", - "--sort-by=s-sort-by", - "--to=2026-01-02T00:00:00.000Z", - "--unit=s-unit", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaceMetrics?aggregation=s-aggregation&from=2026-01-01T00%3A00%3A00.000Z&metricName=s-metric-name&sortBy=s-sort-by&to=2026-01-02T00%3A00%3A00.000Z&unit=s-unit&workspaceId=s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device workspace-metrics workspace-metrics", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaceMetrics", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device workspace-metrics workspace-metrics", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaceMetrics", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device workspace-personalization get-task", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/personalizationTask", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device workspace-personalization get-task", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/personalizationTask", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device workspace-personalization get-task", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/personalizationTask", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device workspace-personalization personalize", - "variant": "all-flags", - "args": [ - "--email=s-email", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/personalize", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"email\":\"s-email\"}" - } - ] - }, - { - "command": "device workspace-personalization personalize", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/personalize", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device workspace-personalization personalize", - "variant": "body", - "args": [ - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/personalize", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "device workspaces create", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/workspaces", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device workspaces create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/workspaces", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device workspaces create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/workspaces", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "device workspaces delete", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device workspaces delete", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device workspaces get", - "variant": "all-flags", - "args": [ - "--include-devices=s-include-devices", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id?includeDevices=s-include-devices", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device workspaces get", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device workspaces get", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device workspaces get-2", - "variant": "all-flags", - "args": [ - "--include-capabilities=s-include-capabilities", - "--include-devices=s-include-devices", - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id?includeCapabilities=s-include-capabilities&includeDevices=s-include-devices", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device workspaces get-2", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device workspaces get-2", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device workspaces get-capabilities", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/capabilities", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device workspaces get-capabilities", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/capabilities", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device workspaces get-capabilities", - "variant": "paginate", - "args": [ - "--workspace-id=s-workspace-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id/capabilities", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device workspaces list", - "variant": "all-flags", - "args": [ - "--calendar=s-calendar", - "--calling=s-calling", - "--capacity=s-capacity", - "--custom-attribute=s-custom-attribute", - "--device-hosted-meetings-enabled=s-device-hosted-meetings-enabled", - "--device-platform=s-device-platform", - "--display-name=s-display-name", - "--floor-id=s-floor-id", - "--health-level=s-health-level", - "--include-capabilities=s-include-capabilities", - "--include-devices=s-include-devices", - "--location-id=s-location-id", - "--max=s-max", - "--planned-maintenance=s-planned-maintenance", - "--start=s-start", - "--supported-devices=s-supported-devices", - "--type=s-type", - "--workspace-location-id=s-workspace-location-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces?calendar=s-calendar&calling=s-calling&capacity=s-capacity&customAttribute=s-custom-attribute&deviceHostedMeetingsEnabled=s-device-hosted-meetings-enabled&devicePlatform=s-device-platform&displayName=s-display-name&floorId=s-floor-id&healthLevel=s-health-level&includeCapabilities=s-include-capabilities&includeDevices=s-include-devices&locationId=s-location-id&max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&plannedMaintenance=s-planned-maintenance&start=s-start&supportedDevices=s-supported-devices&type=s-type&workspaceLocationId=s-workspace-location-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device workspaces list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device workspaces list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/workspaces?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&start=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device workspaces update", - "variant": "all-flags", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device workspaces update", - "variant": "required", - "args": [ - "--workspace-id=s-workspace-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device workspaces update", - "variant": "body", - "args": [ - "--workspace-id=s-workspace-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/workspaces/s-workspace-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "device xapi execute-command", - "variant": "all-flags", - "args": [ - "--command-name=s-command-name" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/xapi/command/s-command-name", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device xapi execute-command", - "variant": "required", - "args": [ - "--command-name=s-command-name" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/xapi/command/s-command-name", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device xapi execute-command", - "variant": "body", - "args": [ - "--command-name=s-command-name", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/xapi/command/s-command-name", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "device xapi query-schema", - "variant": "all-flags", - "args": [ - "--command=s-command", - "--device-id=s-device-id", - "--status=s-status" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/xapi/schema?command=s-command&deviceId=s-device-id&status=s-status", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device xapi query-schema", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/xapi/schema", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device xapi query-schema", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/xapi/schema", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device xapi query-status", - "variant": "all-flags", - "args": [ - "--device-id=s-device-id", - "--name=s-name" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/xapi/status?deviceId=s-device-id&name=s-name", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device xapi query-status", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/xapi/status", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "device xapi query-status", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/xapi/status", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - } -] diff --git a/testdata/golden/requests-meetings.json b/testdata/golden/requests-meetings.json deleted file mode 100644 index 06eb95d..0000000 --- a/testdata/golden/requests-meetings.json +++ /dev/null @@ -1,9191 +0,0 @@ -[ - { - "command": "meetings chats delete-meeting", - "variant": "all-flags", - "args": [ - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/meetings/postMeetingChats?meetingId=s-meeting-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings chats delete-meeting", - "variant": "required", - "args": null, - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/meetings/postMeetingChats", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings chats list-meeting", - "variant": "all-flags", - "args": [ - "--max=s-max", - "--meeting-id=s-meeting-id", - "--offset=s-offset" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/postMeetingChats?max=s-max&meetingId=s-meeting-id&offset=s-offset", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings chats list-meeting", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/postMeetingChats", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings chats list-meeting", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/postMeetingChats?max=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings closed-captions download-meeting-snippets", - "variant": "all-flags", - "args": [ - "--closed-caption-id=s-closed-caption-id", - "--format=s-format", - "--meeting-id=s-meeting-id", - "--timezone=s-timezone" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingClosedCaptions/s-closed-caption-id/download?format=s-format&meetingId=s-meeting-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Timezone": "s-timezone" - } - } - ] - }, - { - "command": "meetings closed-captions download-meeting-snippets", - "variant": "required", - "args": [ - "--closed-caption-id=s-closed-caption-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingClosedCaptions/s-closed-caption-id/download", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings closed-captions download-meeting-snippets", - "variant": "paginate", - "args": [ - "--closed-caption-id=s-closed-caption-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingClosedCaptions/s-closed-caption-id/download", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings closed-captions list-meeting", - "variant": "all-flags", - "args": [ - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingClosedCaptions?meetingId=s-meeting-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings closed-captions list-meeting", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingClosedCaptions", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings closed-captions list-meeting", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingClosedCaptions", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings closed-captions list-meeting-snippets", - "variant": "all-flags", - "args": [ - "--closed-caption-id=s-closed-caption-id", - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingClosedCaptions/s-closed-caption-id/snippets?meetingId=s-meeting-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings closed-captions list-meeting-snippets", - "variant": "required", - "args": [ - "--closed-caption-id=s-closed-caption-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingClosedCaptions/s-closed-caption-id/snippets", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings closed-captions list-meeting-snippets", - "variant": "paginate", - "args": [ - "--closed-caption-id=s-closed-caption-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingClosedCaptions/s-closed-caption-id/snippets", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings invitees create-meeting", - "variant": "all-flags", - "args": [ - "--co-host=true", - "--display-name=s-display-name", - "--email=s-email", - "--host-email=s-host-email", - "--meeting-id=s-meeting-id", - "--panelist=true", - "--send-email=true" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetingInvitees", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"coHost\":true,\"displayName\":\"s-display-name\",\"email\":\"s-email\",\"hostEmail\":\"s-host-email\",\"meetingId\":\"s-meeting-id\",\"panelist\":true,\"sendEmail\":true}" - } - ] - }, - { - "command": "meetings invitees create-meeting", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetingInvitees", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings invitees create-meeting", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetingInvitees", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings invitees create-meeting-2", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetingInvitees/bulkInsert", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings invitees create-meeting-2", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetingInvitees/bulkInsert", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings invitees create-meeting-2", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetingInvitees/bulkInsert", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings invitees delete-meeting", - "variant": "all-flags", - "args": [ - "--host-email=s-host-email", - "--meeting-invitee-id=s-meeting-invitee-id", - "--send-email=s-send-email" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/meetingInvitees/s-meeting-invitee-id?hostEmail=s-host-email&sendEmail=s-send-email", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings invitees delete-meeting", - "variant": "required", - "args": [ - "--meeting-invitee-id=s-meeting-invitee-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/meetingInvitees/s-meeting-invitee-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings invitees get-meeting", - "variant": "all-flags", - "args": [ - "--host-email=s-host-email", - "--meeting-invitee-id=s-meeting-invitee-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingInvitees/s-meeting-invitee-id?hostEmail=s-host-email", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings invitees get-meeting", - "variant": "required", - "args": [ - "--meeting-invitee-id=s-meeting-invitee-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingInvitees/s-meeting-invitee-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings invitees get-meeting", - "variant": "paginate", - "args": [ - "--meeting-invitee-id=s-meeting-invitee-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingInvitees/s-meeting-invitee-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings invitees list-meeting", - "variant": "all-flags", - "args": [ - "--host-email=s-host-email", - "--max=s-max", - "--meeting-id=s-meeting-id", - "--panelist=s-panelist" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingInvitees?hostEmail=s-host-email&max=s-max&meetingId=s-meeting-id&panelist=s-panelist", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings invitees list-meeting", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingInvitees", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings invitees list-meeting", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingInvitees?max=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings invitees update-meeting", - "variant": "all-flags", - "args": [ - "--co-host=true", - "--display-name=s-display-name", - "--email=s-email", - "--host-email=s-host-email", - "--meeting-invitee-id=s-meeting-invitee-id", - "--panelist=true", - "--send-email=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/meetingInvitees/s-meeting-invitee-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"coHost\":true,\"displayName\":\"s-display-name\",\"email\":\"s-email\",\"hostEmail\":\"s-host-email\",\"panelist\":true,\"sendEmail\":true}" - } - ] - }, - { - "command": "meetings invitees update-meeting", - "variant": "required", - "args": [ - "--meeting-invitee-id=s-meeting-invitee-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/meetingInvitees/s-meeting-invitee-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings invitees update-meeting", - "variant": "body", - "args": [ - "--meeting-invitee-id=s-meeting-invitee-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/meetingInvitees/s-meeting-invitee-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings meeting-polls get-pollresults", - "variant": "all-flags", - "args": [ - "--max=s-max", - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/pollResults?max=s-max&meetingId=s-meeting-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meeting-polls get-pollresults", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/pollResults", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meeting-polls get-pollresults", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/pollResults?max=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meeting-polls list", - "variant": "all-flags", - "args": [ - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/polls?meetingId=s-meeting-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meeting-polls list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/polls", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meeting-polls list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/polls", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meeting-polls list-respondents-question", - "variant": "all-flags", - "args": [ - "--max=s-max", - "--meeting-id=s-meeting-id", - "--poll-id=s-poll-id", - "--question-id=s-question-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/polls/s-poll-id/questions/s-question-id/respondents?max=s-max&meetingId=s-meeting-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meeting-polls list-respondents-question", - "variant": "required", - "args": [ - "--poll-id=s-poll-id", - "--question-id=s-question-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/polls/s-poll-id/questions/s-question-id/respondents", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meeting-polls list-respondents-question", - "variant": "paginate", - "args": [ - "--poll-id=s-poll-id", - "--question-id=s-question-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/polls/s-poll-id/questions/s-question-id/respondents?max=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meeting-qa list-answers-question", - "variant": "all-flags", - "args": [ - "--max=s-max", - "--meeting-id=s-meeting-id", - "--question-id=s-question-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/q_and_a/s-question-id/answers?max=s-max&meetingId=s-meeting-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meeting-qa list-answers-question", - "variant": "required", - "args": [ - "--question-id=s-question-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/q_and_a/s-question-id/answers", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meeting-qa list-answers-question", - "variant": "paginate", - "args": [ - "--question-id=s-question-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/q_and_a/s-question-id/answers?max=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meeting-qa list-q", - "variant": "all-flags", - "args": [ - "--max=s-max", - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/q_and_a?max=s-max&meetingId=s-meeting-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meeting-qa list-q", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/q_and_a", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meeting-qa list-q", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/q_and_a?max=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meeting-qualities get", - "variant": "all-flags", - "args": [ - "--max=s-max", - "--meeting-id=s-meeting-id", - "--offset=s-offset" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meeting/qualities?max=s-max&meetingId=s-meeting-id&offset=s-offset", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meeting-qualities get", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meeting/qualities", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meeting-qualities get", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meeting/qualities?max=100&offset=0", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meeting-summary list-attendee-reports", - "variant": "all-flags", - "args": [ - "--from=2026-01-01T00:00:00.000Z", - "--max=s-max", - "--meeting-id=s-meeting-id", - "--meeting-number=s-meeting-number", - "--meeting-title=s-meeting-title", - "--site-url=s-site-url", - "--timezone=s-timezone", - "--to=2026-01-02T00:00:00.000Z" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingReports/attendees?from=2026-01-01T00%3A00%3A00.000Z&max=s-max&meetingId=s-meeting-id&meetingNumber=s-meeting-number&meetingTitle=s-meeting-title&siteUrl=s-site-url&to=2026-01-02T00%3A00%3A00.000Z", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Timezone": "s-timezone" - } - } - ] - }, - { - "command": "meetings meeting-summary list-attendee-reports", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingReports/attendees", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meeting-summary list-attendee-reports", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingReports/attendees?max=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meeting-summary list-usage-reports", - "variant": "all-flags", - "args": [ - "--from=2026-01-01T00:00:00.000Z", - "--max=s-max", - "--service-type=s-service-type", - "--site-url=s-site-url", - "--timezone=s-timezone", - "--to=2026-01-02T00:00:00.000Z" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingReports/usage?from=2026-01-01T00%3A00%3A00.000Z&max=s-max&serviceType=s-service-type&siteUrl=s-site-url&to=2026-01-02T00%3A00%3A00.000Z", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Timezone": "s-timezone" - } - } - ] - }, - { - "command": "meetings meeting-summary list-usage-reports", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingReports/usage", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meeting-summary list-usage-reports", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingReports/usage?max=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings batch-approve-registrants", - "variant": "all-flags", - "args": [ - "--current=s-current", - "--host-email=s-host-email", - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/registrants/approve?current=s-current&hostEmail=s-host-email", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings batch-approve-registrants", - "variant": "required", - "args": [ - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/registrants/approve", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings batch-approve-registrants", - "variant": "body", - "args": [ - "--meeting-id=s-meeting-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/registrants/approve", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings meetings batch-cancel-registrants", - "variant": "all-flags", - "args": [ - "--current=s-current", - "--host-email=s-host-email", - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/registrants/cancel?current=s-current&hostEmail=s-host-email", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings batch-cancel-registrants", - "variant": "required", - "args": [ - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/registrants/cancel", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings batch-cancel-registrants", - "variant": "body", - "args": [ - "--meeting-id=s-meeting-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/registrants/cancel", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings meetings batch-delete-registrants", - "variant": "all-flags", - "args": [ - "--current=s-current", - "--host-email=s-host-email", - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/registrants/bulkDelete?current=s-current&hostEmail=s-host-email", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings batch-delete-registrants", - "variant": "required", - "args": [ - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/registrants/bulkDelete", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings batch-delete-registrants", - "variant": "body", - "args": [ - "--meeting-id=s-meeting-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/registrants/bulkDelete", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings meetings batch-register-registrants", - "variant": "all-flags", - "args": [ - "--current=s-current", - "--host-email=s-host-email", - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/registrants/bulkInsert?current=s-current&hostEmail=s-host-email", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings batch-register-registrants", - "variant": "required", - "args": [ - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/registrants/bulkInsert", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings batch-register-registrants", - "variant": "body", - "args": [ - "--meeting-id=s-meeting-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/registrants/bulkInsert", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings meetings batch-reject-registrants", - "variant": "all-flags", - "args": [ - "--current=s-current", - "--host-email=s-host-email", - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/registrants/reject?current=s-current&hostEmail=s-host-email", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings batch-reject-registrants", - "variant": "required", - "args": [ - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/registrants/reject", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings batch-reject-registrants", - "variant": "body", - "args": [ - "--meeting-id=s-meeting-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/registrants/reject", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings meetings batch-update-registrants-status", - "variant": "all-flags", - "args": [ - "--current=s-current", - "--host-email=s-host-email", - "--meeting-id=s-meeting-id", - "--status-op-type=s-status-op-type" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/registrants/s-status-op-type?current=s-current&hostEmail=s-host-email", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings batch-update-registrants-status", - "variant": "required", - "args": [ - "--meeting-id=s-meeting-id", - "--status-op-type=s-status-op-type" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/registrants/s-status-op-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings batch-update-registrants-status", - "variant": "body", - "args": [ - "--meeting-id=s-meeting-id", - "--status-op-type=s-status-op-type", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/registrants/s-status-op-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings meetings create", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetings", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetings", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetings", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings meetings create-interpreter", - "variant": "all-flags", - "args": [ - "--display-name=s-display-name", - "--email=s-email", - "--host-email=s-host-email", - "--language-code1=s-language-code1", - "--language-code2=s-language-code2", - "--meeting-id=s-meeting-id", - "--send-email=true" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/interpreters", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"displayName\":\"s-display-name\",\"email\":\"s-email\",\"hostEmail\":\"s-host-email\",\"languageCode1\":\"s-language-code1\",\"languageCode2\":\"s-language-code2\",\"sendEmail\":true}" - } - ] - }, - { - "command": "meetings meetings create-interpreter", - "variant": "required", - "args": [ - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/interpreters", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings create-interpreter", - "variant": "body", - "args": [ - "--meeting-id=s-meeting-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/interpreters", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings meetings create-invitation-sources", - "variant": "all-flags", - "args": [ - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/invitationSources", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings create-invitation-sources", - "variant": "required", - "args": [ - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/invitationSources", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings create-invitation-sources", - "variant": "body", - "args": [ - "--meeting-id=s-meeting-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/invitationSources", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings meetings delete", - "variant": "all-flags", - "args": [ - "--host-email=s-host-email", - "--meeting-id=s-meeting-id", - "--send-email=s-send-email" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/meetings/s-meeting-id?hostEmail=s-host-email&sendEmail=s-send-email", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings delete", - "variant": "required", - "args": [ - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/meetings/s-meeting-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings delete-breakout-sessions", - "variant": "all-flags", - "args": [ - "--host-email=s-host-email", - "--meeting-id=s-meeting-id", - "--send-email=s-send-email" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/breakoutSessions?sendEmail=s-send-email", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Hostemail": "s-host-email" - } - } - ] - }, - { - "command": "meetings meetings delete-breakout-sessions", - "variant": "required", - "args": [ - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/breakoutSessions", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings delete-interpreter", - "variant": "all-flags", - "args": [ - "--host-email=s-host-email", - "--interpreter-id=s-interpreter-id", - "--meeting-id=s-meeting-id", - "--send-email=s-send-email" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/interpreters/s-interpreter-id?hostEmail=s-host-email&sendEmail=s-send-email", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings delete-interpreter", - "variant": "required", - "args": [ - "--interpreter-id=s-interpreter-id", - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/interpreters/s-interpreter-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings delete-registrant", - "variant": "all-flags", - "args": [ - "--current=s-current", - "--host-email=s-host-email", - "--meeting-id=s-meeting-id", - "--registrant-id=s-registrant-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/registrants/s-registrant-id?current=s-current&hostEmail=s-host-email", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings delete-registrant", - "variant": "required", - "args": [ - "--meeting-id=s-meeting-id", - "--registrant-id=s-registrant-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/registrants/s-registrant-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings delete-registration-form", - "variant": "all-flags", - "args": [ - "--host-email=s-host-email", - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/registration", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Hostemail": "s-host-email" - } - } - ] - }, - { - "command": "meetings meetings delete-registration-form", - "variant": "required", - "args": [ - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/registration", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings end", - "variant": "all-flags", - "args": [ - "--meeting-id=s-meeting-id", - "--reason=s-reason" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/end", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"reason\":\"s-reason\"}" - } - ] - }, - { - "command": "meetings meetings end", - "variant": "required", - "args": [ - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/end", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings end", - "variant": "body", - "args": [ - "--meeting-id=s-meeting-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/end", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings meetings get", - "variant": "all-flags", - "args": [ - "--current=s-current", - "--host-email=s-host-email", - "--meeting-id=s-meeting-id", - "--password=s-password", - "--timezone=s-timezone" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/s-meeting-id?current=s-current&hostEmail=s-host-email", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Password": "s-password", - "Timezone": "s-timezone" - } - } - ] - }, - { - "command": "meetings meetings get", - "variant": "required", - "args": [ - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/s-meeting-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings get", - "variant": "paginate", - "args": [ - "--meeting-id=s-meeting-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/s-meeting-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings get-admin", - "variant": "all-flags", - "args": [ - "--current=s-current", - "--meeting-id=s-meeting-id", - "--timezone=s-timezone" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/admin/meetings/s-meeting-id?current=s-current", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Timezone": "s-timezone" - } - } - ] - }, - { - "command": "meetings meetings get-admin", - "variant": "required", - "args": [ - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/admin/meetings/s-meeting-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings get-admin", - "variant": "paginate", - "args": [ - "--meeting-id=s-meeting-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/admin/meetings/s-meeting-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings get-control-status", - "variant": "all-flags", - "args": [ - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/controls?meetingId=s-meeting-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings get-control-status", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/controls", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings get-control-status", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/controls", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings get-detailed-information-registrant", - "variant": "all-flags", - "args": [ - "--current=s-current", - "--host-email=s-host-email", - "--meeting-id=s-meeting-id", - "--registrant-id=s-registrant-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/registrants/s-registrant-id?current=s-current&hostEmail=s-host-email", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings get-detailed-information-registrant", - "variant": "required", - "args": [ - "--meeting-id=s-meeting-id", - "--registrant-id=s-registrant-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/registrants/s-registrant-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings get-detailed-information-registrant", - "variant": "paginate", - "args": [ - "--meeting-id=s-meeting-id", - "--registrant-id=s-registrant-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/registrants/s-registrant-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings get-interpreter", - "variant": "all-flags", - "args": [ - "--host-email=s-host-email", - "--interpreter-id=s-interpreter-id", - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/interpreters/s-interpreter-id?hostEmail=s-host-email", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings get-interpreter", - "variant": "required", - "args": [ - "--interpreter-id=s-interpreter-id", - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/interpreters/s-interpreter-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings get-interpreter", - "variant": "paginate", - "args": [ - "--interpreter-id=s-interpreter-id", - "--meeting-id=s-meeting-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/interpreters/s-interpreter-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings get-registration-form", - "variant": "all-flags", - "args": [ - "--current=s-current", - "--host-email=s-host-email", - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/registration?current=s-current&hostEmail=s-host-email", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings get-registration-form", - "variant": "required", - "args": [ - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/registration", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings get-registration-form", - "variant": "paginate", - "args": [ - "--meeting-id=s-meeting-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/registration", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings get-session-type", - "variant": "all-flags", - "args": [ - "--host-email=s-host-email", - "--session-type-id=s-session-type-id", - "--site-url=s-site-url" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/sessionTypes/s-session-type-id?hostEmail=s-host-email&siteUrl=s-site-url", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings get-session-type", - "variant": "required", - "args": [ - "--session-type-id=s-session-type-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/sessionTypes/s-session-type-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings get-session-type", - "variant": "paginate", - "args": [ - "--session-type-id=s-session-type-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/sessionTypes/s-session-type-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings get-survey", - "variant": "all-flags", - "args": [ - "--host-email=s-host-email", - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/survey", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Hostemail": "s-host-email" - } - } - ] - }, - { - "command": "meetings meetings get-survey", - "variant": "required", - "args": [ - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/survey", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings get-survey", - "variant": "paginate", - "args": [ - "--meeting-id=s-meeting-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/survey", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings get-survey-links", - "variant": "all-flags", - "args": [ - "--emails=s-emails-1,s-emails-2", - "--host-email=s-host-email", - "--meeting-id=s-meeting-id", - "--meeting-start-time-from=s-meeting-start-time-from", - "--meeting-start-time-to=s-meeting-start-time-to", - "--timezone=s-timezone" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/surveyLinks", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json", - "Timezone": "s-timezone" - }, - "body": "{\"emails\":[\"s-emails-1\",\"s-emails-2\"],\"hostEmail\":\"s-host-email\",\"meetingStartTimeFrom\":\"s-meeting-start-time-from\",\"meetingStartTimeTo\":\"s-meeting-start-time-to\"}" - } - ] - }, - { - "command": "meetings meetings get-survey-links", - "variant": "required", - "args": [ - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/surveyLinks", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings get-survey-links", - "variant": "body", - "args": [ - "--meeting-id=s-meeting-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/surveyLinks", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings meetings get-template", - "variant": "all-flags", - "args": [ - "--host-email=s-host-email", - "--template-id=s-template-id", - "--timezone=s-timezone" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/templates/s-template-id?hostEmail=s-host-email", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Timezone": "s-timezone" - } - } - ] - }, - { - "command": "meetings meetings get-template", - "variant": "required", - "args": [ - "--template-id=s-template-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/templates/s-template-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings get-template", - "variant": "paginate", - "args": [ - "--template-id=s-template-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/templates/s-template-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings join", - "variant": "all-flags", - "args": [ - "--create-join-link-as-web-link=true", - "--create-start-link-as-web-link=true", - "--display-name=s-display-name", - "--email=s-email", - "--expiration-minutes=7", - "--host-email=s-host-email", - "--join-directly=true", - "--meeting-id=s-meeting-id", - "--meeting-number=s-meeting-number", - "--password=s-password", - "--registration-id=s-registration-id", - "--web-link=s-web-link" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetings/join", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"createJoinLinkAsWebLink\":true,\"createStartLinkAsWebLink\":true,\"displayName\":\"s-display-name\",\"email\":\"s-email\",\"expirationMinutes\":7,\"hostEmail\":\"s-host-email\",\"joinDirectly\":true,\"meetingId\":\"s-meeting-id\",\"meetingNumber\":\"s-meeting-number\",\"password\":\"s-password\",\"registrationId\":\"s-registration-id\",\"webLink\":\"s-web-link\"}" - } - ] - }, - { - "command": "meetings meetings join", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetings/join", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings join", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetings/join", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings meetings list", - "variant": "all-flags", - "args": [ - "--current=s-current", - "--from=2026-01-01T00:00:00.000Z", - "--has-chat=s-has-chat", - "--has-closed-caption=s-has-closed-caption", - "--has-polls=s-has-polls", - "--has-qa=s-has-qa", - "--has-recording=s-has-recording", - "--has-slido=s-has-slido", - "--has-summary=s-has-summary", - "--has-transcription=s-has-transcription", - "--host-email=s-host-email", - "--integration-tag=s-integration-tag", - "--is-modified=s-is-modified", - "--max=s-max", - "--meeting-number=s-meeting-number", - "--meeting-series-id=s-meeting-series-id", - "--meeting-type=s-meeting-type", - "--password=s-password", - "--room-id=s-room-id", - "--scheduled-type=s-scheduled-type", - "--site-url=s-site-url", - "--state=s-state", - "--timezone=s-timezone", - "--to=2026-01-02T00:00:00.000Z", - "--web-link=s-web-link" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings?current=s-current&from=2026-01-01T00%3A00%3A00.000Z&hasChat=s-has-chat&hasClosedCaption=s-has-closed-caption&hasPolls=s-has-polls&hasQA=s-has-qa&hasRecording=s-has-recording&hasSlido=s-has-slido&hasSummary=s-has-summary&hasTranscription=s-has-transcription&hostEmail=s-host-email&integrationTag=s-integration-tag&isModified=s-is-modified&max=s-max&meetingNumber=s-meeting-number&meetingSeriesId=s-meeting-series-id&meetingType=s-meeting-type&roomId=s-room-id&scheduledType=s-scheduled-type&siteUrl=s-site-url&state=s-state&to=2026-01-02T00%3A00%3A00.000Z&webLink=s-web-link", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Password": "s-password", - "Timezone": "s-timezone" - } - } - ] - }, - { - "command": "meetings meetings list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings?max=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings list-admin", - "variant": "all-flags", - "args": [ - "--current=s-current", - "--meeting-number=s-meeting-number", - "--timezone=s-timezone", - "--web-link=s-web-link" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/admin/meetings?current=s-current&meetingNumber=s-meeting-number&webLink=s-web-link", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Timezone": "s-timezone" - } - } - ] - }, - { - "command": "meetings meetings list-admin", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/admin/meetings", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings list-admin", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/admin/meetings", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings list-breakout-sessions", - "variant": "all-flags", - "args": [ - "--host-email=s-host-email", - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/breakoutSessions", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Hostemail": "s-host-email" - } - } - ] - }, - { - "command": "meetings meetings list-breakout-sessions", - "variant": "required", - "args": [ - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/breakoutSessions", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings list-breakout-sessions", - "variant": "paginate", - "args": [ - "--meeting-id=s-meeting-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/breakoutSessions", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings list-group", - "variant": "all-flags", - "args": [ - "--current=s-current", - "--host-email=s-host-email", - "--meeting-number=s-meeting-number", - "--person-id=s-person-id", - "--timezone=s-timezone", - "--web-link=s-web-link" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/group/meetings?current=s-current&meetingNumber=s-meeting-number&personId=s-person-id&webLink=s-web-link", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Hostemail": "s-host-email", - "Timezone": "s-timezone" - } - } - ] - }, - { - "command": "meetings meetings list-group", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/group/meetings", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings list-group", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/group/meetings", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings list-interpreters", - "variant": "all-flags", - "args": [ - "--host-email=s-host-email", - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/interpreters?hostEmail=s-host-email", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings list-interpreters", - "variant": "required", - "args": [ - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/interpreters", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings list-interpreters", - "variant": "paginate", - "args": [ - "--meeting-id=s-meeting-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/interpreters", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings list-invitation-sources", - "variant": "all-flags", - "args": [ - "--host-email=s-host-email", - "--meeting-id=s-meeting-id", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/invitationSources", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Hostemail": "s-host-email", - "Personid": "s-person-id" - } - } - ] - }, - { - "command": "meetings meetings list-invitation-sources", - "variant": "required", - "args": [ - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/invitationSources", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings list-invitation-sources", - "variant": "paginate", - "args": [ - "--meeting-id=s-meeting-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/invitationSources", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings list-registrants", - "variant": "all-flags", - "args": [ - "--current=s-current", - "--email=s-email", - "--host-email=s-host-email", - "--max=s-max", - "--meeting-id=s-meeting-id", - "--registration-time-from=s-registration-time-from", - "--registration-time-to=s-registration-time-to" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/registrants?current=s-current&email=s-email&hostEmail=s-host-email&max=s-max®istrationTimeFrom=s-registration-time-from®istrationTimeTo=s-registration-time-to", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings list-registrants", - "variant": "required", - "args": [ - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/registrants", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings list-registrants", - "variant": "paginate", - "args": [ - "--meeting-id=s-meeting-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/registrants?max=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings list-session-types", - "variant": "all-flags", - "args": [ - "--host-email=s-host-email", - "--site-url=s-site-url" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/sessionTypes?hostEmail=s-host-email&siteUrl=s-site-url", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings list-session-types", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/sessionTypes", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings list-session-types", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/sessionTypes", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings list-survey-results", - "variant": "all-flags", - "args": [ - "--host-email=s-host-email", - "--max=s-max", - "--meeting-id=s-meeting-id", - "--meeting-start-time-from=s-meeting-start-time-from", - "--meeting-start-time-to=s-meeting-start-time-to", - "--timezone=s-timezone" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/surveyResults?max=s-max&meetingStartTimeFrom=s-meeting-start-time-from&meetingStartTimeTo=s-meeting-start-time-to", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Hostemail": "s-host-email", - "Timezone": "s-timezone" - } - } - ] - }, - { - "command": "meetings meetings list-survey-results", - "variant": "required", - "args": [ - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/surveyResults", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings list-survey-results", - "variant": "paginate", - "args": [ - "--meeting-id=s-meeting-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/surveyResults?max=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings list-templates", - "variant": "all-flags", - "args": [ - "--host-email=s-host-email", - "--is-default=s-is-default", - "--is-standard=s-is-standard", - "--locale=s-locale", - "--site-url=s-site-url", - "--template-type=s-template-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/templates?hostEmail=s-host-email&isDefault=s-is-default&isStandard=s-is-standard&locale=s-locale&siteUrl=s-site-url&templateType=s-template-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings list-templates", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/templates", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings list-templates", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/templates", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings list-tracking-codes", - "variant": "all-flags", - "args": [ - "--host-email=s-host-email", - "--service=s-service", - "--site-url=s-site-url" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/trackingCodes?hostEmail=s-host-email&service=s-service&siteUrl=s-site-url", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings list-tracking-codes", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/trackingCodes", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings list-tracking-codes", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetings/trackingCodes", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings patch", - "variant": "all-flags", - "args": [ - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://webexapis.com/v1/meetings/s-meeting-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings patch", - "variant": "required", - "args": [ - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://webexapis.com/v1/meetings/s-meeting-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings patch", - "variant": "body", - "args": [ - "--meeting-id=s-meeting-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://webexapis.com/v1/meetings/s-meeting-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings meetings patch-group", - "variant": "all-flags", - "args": [ - "--host-email=s-host-email", - "--meeting-id=s-meeting-id", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://webexapis.com/v1/group/meetings/s-meeting-id?personId=s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Hostemail": "s-host-email" - } - } - ] - }, - { - "command": "meetings meetings patch-group", - "variant": "required", - "args": [ - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://webexapis.com/v1/group/meetings/s-meeting-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings patch-group", - "variant": "body", - "args": [ - "--meeting-id=s-meeting-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://webexapis.com/v1/group/meetings/s-meeting-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings meetings query-registrants", - "variant": "all-flags", - "args": [ - "--current=s-current", - "--emails=s-emails-1,s-emails-2", - "--host-email=s-host-email", - "--max=s-max", - "--meeting-id=s-meeting-id", - "--order-by=s-order-by", - "--order-type=s-order-type", - "--status=s-status" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/registrants/query?current=s-current&hostEmail=s-host-email&max=s-max", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"emails\":[\"s-emails-1\",\"s-emails-2\"],\"orderBy\":\"s-order-by\",\"orderType\":\"s-order-type\",\"status\":\"s-status\"}" - } - ] - }, - { - "command": "meetings meetings query-registrants", - "variant": "required", - "args": [ - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/registrants/query", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings query-registrants", - "variant": "body", - "args": [ - "--meeting-id=s-meeting-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/registrants/query", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings meetings reassign-host", - "variant": "all-flags", - "args": [ - "--host-email=s-host-email", - "--meeting-ids=s-meeting-ids-1,s-meeting-ids-2", - "--site-url=s-site-url" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetings/reassignHost", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json", - "Siteurl": "s-site-url" - }, - "body": "{\"hostEmail\":\"s-host-email\",\"meetingIds\":[\"s-meeting-ids-1\",\"s-meeting-ids-2\"]}" - } - ] - }, - { - "command": "meetings meetings reassign-host", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetings/reassignHost", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings reassign-host", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetings/reassignHost", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings meetings register-registrant", - "variant": "all-flags", - "args": [ - "--current=s-current", - "--host-email=s-host-email", - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/registrants?current=s-current&hostEmail=s-host-email", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings register-registrant", - "variant": "required", - "args": [ - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/registrants", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings register-registrant", - "variant": "body", - "args": [ - "--meeting-id=s-meeting-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/registrants", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings meetings update", - "variant": "all-flags", - "args": [ - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/meetings/s-meeting-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings update", - "variant": "required", - "args": [ - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/meetings/s-meeting-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings update", - "variant": "body", - "args": [ - "--meeting-id=s-meeting-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/meetings/s-meeting-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings meetings update-breakout-sessions", - "variant": "all-flags", - "args": [ - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/breakoutSessions", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings update-breakout-sessions", - "variant": "required", - "args": [ - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/breakoutSessions", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings update-breakout-sessions", - "variant": "body", - "args": [ - "--meeting-id=s-meeting-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/breakoutSessions", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings meetings update-control-status", - "variant": "all-flags", - "args": [ - "--locked=true", - "--meeting-id=s-meeting-id", - "--recording-paused=true", - "--recording-started=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/meetings/controls?meetingId=s-meeting-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"locked\":true,\"recordingPaused\":true,\"recordingStarted\":true}" - } - ] - }, - { - "command": "meetings meetings update-control-status", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/meetings/controls", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings update-control-status", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/meetings/controls", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings meetings update-group-control-status", - "variant": "all-flags", - "args": [ - "--action=s-action", - "--host-email=s-host-email", - "--meeting-id=s-meeting-id", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/group/meetings/controls?personId=s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json", - "Hostemail": "s-host-email" - }, - "body": "{\"action\":\"s-action\",\"meetingId\":\"s-meeting-id\"}" - } - ] - }, - { - "command": "meetings meetings update-group-control-status", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/group/meetings/controls", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings update-group-control-status", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/group/meetings/controls", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings meetings update-interpreter", - "variant": "all-flags", - "args": [ - "--display-name=s-display-name", - "--email=s-email", - "--host-email=s-host-email", - "--interpreter-id=s-interpreter-id", - "--language-code1=s-language-code1", - "--language-code2=s-language-code2", - "--meeting-id=s-meeting-id", - "--send-email=true" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/interpreters/s-interpreter-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"displayName\":\"s-display-name\",\"email\":\"s-email\",\"hostEmail\":\"s-host-email\",\"languageCode1\":\"s-language-code1\",\"languageCode2\":\"s-language-code2\",\"sendEmail\":true}" - } - ] - }, - { - "command": "meetings meetings update-interpreter", - "variant": "required", - "args": [ - "--interpreter-id=s-interpreter-id", - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/interpreters/s-interpreter-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings update-interpreter", - "variant": "body", - "args": [ - "--interpreter-id=s-interpreter-id", - "--meeting-id=s-meeting-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/interpreters/s-interpreter-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings meetings update-registration-form", - "variant": "all-flags", - "args": [ - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/registration", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings update-registration-form", - "variant": "required", - "args": [ - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/registration", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings update-registration-form", - "variant": "body", - "args": [ - "--meeting-id=s-meeting-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/registration", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings meetings update-simultaneous-interpretation", - "variant": "all-flags", - "args": [ - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/simultaneousInterpretation", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings update-simultaneous-interpretation", - "variant": "required", - "args": [ - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/simultaneousInterpretation", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings meetings update-simultaneous-interpretation", - "variant": "body", - "args": [ - "--meeting-id=s-meeting-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/meetings/s-meeting-id/simultaneousInterpretation", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings messages delete-meeting", - "variant": "all-flags", - "args": [ - "--meeting-message-id=s-meeting-message-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/meeting/messages/s-meeting-message-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings messages delete-meeting", - "variant": "required", - "args": [ - "--meeting-message-id=s-meeting-message-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/meeting/messages/s-meeting-message-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings participants admit", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetingParticipants/admit", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings participants admit", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetingParticipants/admit", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings participants admit", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetingParticipants/admit", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings participants call-out-sip", - "variant": "all-flags", - "args": [ - "--address=s-address", - "--address-type=s-address-type", - "--display-name=s-display-name", - "--invitation-correlation-id=s-invitation-correlation-id", - "--meeting-id=s-meeting-id", - "--meeting-number=s-meeting-number" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetingParticipants/callout", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"address\":\"s-address\",\"addressType\":\"s-address-type\",\"displayName\":\"s-display-name\",\"invitationCorrelationId\":\"s-invitation-correlation-id\",\"meetingId\":\"s-meeting-id\",\"meetingNumber\":\"s-meeting-number\"}" - } - ] - }, - { - "command": "meetings participants call-out-sip", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetingParticipants/callout", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings participants call-out-sip", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetingParticipants/callout", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings participants cancel-calling-out-sip", - "variant": "all-flags", - "args": [ - "--participant-id=s-participant-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetingParticipants/cancelCallout", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"participantId\":\"s-participant-id\"}" - } - ] - }, - { - "command": "meetings participants cancel-calling-out-sip", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetingParticipants/cancelCallout", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings participants cancel-calling-out-sip", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetingParticipants/cancelCallout", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings participants get-meeting", - "variant": "all-flags", - "args": [ - "--host-email=s-host-email", - "--participant-id=s-participant-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingParticipants/s-participant-id?hostEmail=s-host-email", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings participants get-meeting", - "variant": "required", - "args": [ - "--participant-id=s-participant-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingParticipants/s-participant-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings participants get-meeting", - "variant": "paginate", - "args": [ - "--participant-id=s-participant-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingParticipants/s-participant-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings participants list-meeting", - "variant": "all-flags", - "args": [ - "--breakout-session-id=s-breakout-session-id", - "--host-email=s-host-email", - "--join-time-from=s-join-time-from", - "--join-time-to=s-join-time-to", - "--max=s-max", - "--meeting-id=s-meeting-id", - "--meeting-start-time-from=s-meeting-start-time-from", - "--meeting-start-time-to=s-meeting-start-time-to", - "--timezone=s-timezone" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingParticipants?breakoutSessionId=s-breakout-session-id&hostEmail=s-host-email&joinTimeFrom=s-join-time-from&joinTimeTo=s-join-time-to&max=s-max&meetingId=s-meeting-id&meetingStartTimeFrom=s-meeting-start-time-from&meetingStartTimeTo=s-meeting-start-time-to", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Timezone": "s-timezone" - } - } - ] - }, - { - "command": "meetings participants list-meeting", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingParticipants", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings participants list-meeting", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingParticipants?max=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings participants query-meeting-email", - "variant": "all-flags", - "args": [ - "--emails=s-emails-1,s-emails-2", - "--host-email=s-host-email", - "--join-time-from=s-join-time-from", - "--join-time-to=s-join-time-to", - "--meeting-id=s-meeting-id", - "--meeting-start-time-from=s-meeting-start-time-from", - "--meeting-start-time-to=s-meeting-start-time-to", - "--timezone=s-timezone" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetingParticipants/query?hostEmail=s-host-email&meetingId=s-meeting-id&meetingStartTimeFrom=s-meeting-start-time-from&meetingStartTimeTo=s-meeting-start-time-to", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json", - "Timezone": "s-timezone" - }, - "body": "{\"emails\":[\"s-emails-1\",\"s-emails-2\"],\"joinTimeFrom\":\"s-join-time-from\",\"joinTimeTo\":\"s-join-time-to\"}" - } - ] - }, - { - "command": "meetings participants query-meeting-email", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetingParticipants/query", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings participants query-meeting-email", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetingParticipants/query", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings participants update", - "variant": "all-flags", - "args": [ - "--admit=true", - "--expel=true", - "--muted=true", - "--participant-id=s-participant-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/meetingParticipants/s-participant-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"admit\":true,\"expel\":true,\"muted\":true}" - } - ] - }, - { - "command": "meetings participants update", - "variant": "required", - "args": [ - "--participant-id=s-participant-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/meetingParticipants/s-participant-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings participants update", - "variant": "body", - "args": [ - "--participant-id=s-participant-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/meetingParticipants/s-participant-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings people create-person", - "variant": "all-flags", - "args": [ - "--calling-data=s-calling-data", - "--min-response=s-min-response" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/people?callingData=s-calling-data&minResponse=s-min-response", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings people create-person", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/people", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings people create-person", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/people", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings people delete-person", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/people/s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings people delete-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/people/s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings people get-my-own", - "variant": "all-flags", - "args": [ - "--calling-data=s-calling-data" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/me?callingData=s-calling-data", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings people get-my-own", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/me", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings people get-my-own", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/me", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings people get-person", - "variant": "all-flags", - "args": [ - "--calling-data=s-calling-data", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id?callingData=s-calling-data", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings people get-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings people get-person", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings people list", - "variant": "all-flags", - "args": [ - "--calling-data=s-calling-data", - "--display-name=s-display-name", - "--email=s-email", - "--exclude-status=s-exclude-status", - "--id=s-id", - "--location-id=s-location-id", - "--max=s-max", - "--roles=s-roles" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people?callingData=s-calling-data&displayName=s-display-name&email=s-email&excludeStatus=s-exclude-status&id=s-id&locationId=s-location-id&max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&roles=s-roles", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings people list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings people list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings people update-person", - "variant": "all-flags", - "args": [ - "--calling-data=s-calling-data", - "--min-response=s-min-response", - "--person-id=s-person-id", - "--show-all-types=s-show-all-types" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id?callingData=s-calling-data&minResponse=s-min-response&showAllTypes=s-show-all-types", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings people update-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings people update-person", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings preferences batch-refresh-personal-meeting-room-id", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/admin/meetingPreferences/personalMeetingRoom/refreshId", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings preferences batch-refresh-personal-meeting-room-id", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/admin/meetingPreferences/personalMeetingRoom/refreshId", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings preferences batch-refresh-personal-meeting-room-id", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/admin/meetingPreferences/personalMeetingRoom/refreshId", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings preferences delete-delegate-emails", - "variant": "all-flags", - "args": [ - "--emails=s-emails-1,s-emails-2", - "--site-url=s-site-url", - "--user-email=s-user-email" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetingPreferences/schedulingOptions/delegateEmails/delete?siteUrl=s-site-url&userEmail=s-user-email", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"emails\":[\"s-emails-1\",\"s-emails-2\"]}" - } - ] - }, - { - "command": "meetings preferences delete-delegate-emails", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetingPreferences/schedulingOptions/delegateEmails/delete", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings preferences delete-delegate-emails", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetingPreferences/schedulingOptions/delegateEmails/delete", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings preferences get-audio-options", - "variant": "all-flags", - "args": [ - "--site-url=s-site-url", - "--user-email=s-user-email" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingPreferences/audio?siteUrl=s-site-url&userEmail=s-user-email", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings preferences get-audio-options", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingPreferences/audio", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings preferences get-audio-options", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingPreferences/audio", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings preferences get-meeting", - "variant": "all-flags", - "args": [ - "--site-url=s-site-url", - "--user-email=s-user-email" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingPreferences?siteUrl=s-site-url&userEmail=s-user-email", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings preferences get-meeting", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingPreferences", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings preferences get-meeting", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingPreferences", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings preferences get-personal-meeting-room-options", - "variant": "all-flags", - "args": [ - "--site-url=s-site-url", - "--user-email=s-user-email" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingPreferences/personalMeetingRoom?siteUrl=s-site-url&userEmail=s-user-email", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings preferences get-personal-meeting-room-options", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingPreferences/personalMeetingRoom", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings preferences get-personal-meeting-room-options", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingPreferences/personalMeetingRoom", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings preferences get-scheduling-options", - "variant": "all-flags", - "args": [ - "--site-url=s-site-url", - "--user-email=s-user-email" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingPreferences/schedulingOptions?siteUrl=s-site-url&userEmail=s-user-email", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings preferences get-scheduling-options", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingPreferences/schedulingOptions", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings preferences get-scheduling-options", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingPreferences/schedulingOptions", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings preferences get-site-list", - "variant": "all-flags", - "args": [ - "--site-url=s-site-url", - "--user-email=s-user-email" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingPreferences/sites?siteUrl=s-site-url&userEmail=s-user-email", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings preferences get-site-list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingPreferences/sites", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings preferences get-site-list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingPreferences/sites", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings preferences get-video-options", - "variant": "all-flags", - "args": [ - "--site-url=s-site-url", - "--user-email=s-user-email" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingPreferences/video?siteUrl=s-site-url&userEmail=s-user-email", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings preferences get-video-options", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingPreferences/video", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings preferences get-video-options", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingPreferences/video", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings preferences insert-delegate-emails", - "variant": "all-flags", - "args": [ - "--emails=s-emails-1,s-emails-2", - "--site-url=s-site-url", - "--user-email=s-user-email" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetingPreferences/schedulingOptions/delegateEmails/insert?siteUrl=s-site-url&userEmail=s-user-email", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"emails\":[\"s-emails-1\",\"s-emails-2\"]}" - } - ] - }, - { - "command": "meetings preferences insert-delegate-emails", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetingPreferences/schedulingOptions/delegateEmails/insert", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings preferences insert-delegate-emails", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/meetingPreferences/schedulingOptions/delegateEmails/insert", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings preferences update-audio-options", - "variant": "all-flags", - "args": [ - "--site-url=s-site-url", - "--user-email=s-user-email" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/meetingPreferences/audio?siteUrl=s-site-url&userEmail=s-user-email", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings preferences update-audio-options", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/meetingPreferences/audio", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings preferences update-audio-options", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/meetingPreferences/audio", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings preferences update-default-site", - "variant": "all-flags", - "args": [ - "--default-site=s-default-site", - "--site-url=s-site-url", - "--user-email=s-user-email" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/meetingPreferences/sites?defaultSite=s-default-site&userEmail=s-user-email", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"siteUrl\":\"s-site-url\"}" - } - ] - }, - { - "command": "meetings preferences update-default-site", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/meetingPreferences/sites", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings preferences update-default-site", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/meetingPreferences/sites", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings preferences update-personal-meeting-room-options", - "variant": "all-flags", - "args": [ - "--site-url=s-site-url", - "--user-email=s-user-email" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/meetingPreferences/personalMeetingRoom?siteUrl=s-site-url&userEmail=s-user-email", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings preferences update-personal-meeting-room-options", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/meetingPreferences/personalMeetingRoom", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings preferences update-personal-meeting-room-options", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/meetingPreferences/personalMeetingRoom", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings preferences update-scheduling-options", - "variant": "all-flags", - "args": [ - "--delegate-emails=s-delegate-emails-1,s-delegate-emails-2", - "--enabled-auto-share-recording=true", - "--enabled-join-before-host=true", - "--enabled-webex-assistant-by-default=true", - "--join-before-host-minutes=7", - "--site-url=s-site-url", - "--user-email=s-user-email" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/meetingPreferences/schedulingOptions?siteUrl=s-site-url&userEmail=s-user-email", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"delegateEmails\":[\"s-delegate-emails-1\",\"s-delegate-emails-2\"],\"enabledAutoShareRecording\":true,\"enabledJoinBeforeHost\":true,\"enabledWebexAssistantByDefault\":true,\"joinBeforeHostMinutes\":7}" - } - ] - }, - { - "command": "meetings preferences update-scheduling-options", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/meetingPreferences/schedulingOptions", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings preferences update-scheduling-options", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/meetingPreferences/schedulingOptions", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings preferences update-video-options", - "variant": "all-flags", - "args": [ - "--site-url=s-site-url", - "--user-email=s-user-email" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/meetingPreferences/video?siteUrl=s-site-url&userEmail=s-user-email", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings preferences update-video-options", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/meetingPreferences/video", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings preferences update-video-options", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/meetingPreferences/video", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings recording-report get-audit", - "variant": "all-flags", - "args": [ - "--host-email=s-host-email", - "--max=s-max", - "--recording-id=s-recording-id", - "--timezone=s-timezone" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/recordingReport/accessDetail?hostEmail=s-host-email&max=s-max&recordingId=s-recording-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Timezone": "s-timezone" - } - } - ] - }, - { - "command": "meetings recording-report get-audit", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/recordingReport/accessDetail", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings recording-report get-audit", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/recordingReport/accessDetail?max=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings recording-report get-meeting-archive", - "variant": "all-flags", - "args": [ - "--archive-id=s-archive-id", - "--timezone=s-timezone" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/recordingReport/meetingArchives/s-archive-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Timezone": "s-timezone" - } - } - ] - }, - { - "command": "meetings recording-report get-meeting-archive", - "variant": "required", - "args": [ - "--archive-id=s-archive-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/recordingReport/meetingArchives/s-archive-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings recording-report get-meeting-archive", - "variant": "paginate", - "args": [ - "--archive-id=s-archive-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/recordingReport/meetingArchives/s-archive-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings recording-report list-audit-summaries", - "variant": "all-flags", - "args": [ - "--from=2026-01-01T00:00:00.000Z", - "--host-email=s-host-email", - "--max=s-max", - "--site-url=s-site-url", - "--timezone=s-timezone", - "--to=2026-01-02T00:00:00.000Z" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/recordingReport/accessSummary?from=2026-01-01T00%3A00%3A00.000Z&hostEmail=s-host-email&max=s-max&siteUrl=s-site-url&to=2026-01-02T00%3A00%3A00.000Z", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Timezone": "s-timezone" - } - } - ] - }, - { - "command": "meetings recording-report list-audit-summaries", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/recordingReport/accessSummary", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings recording-report list-audit-summaries", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/recordingReport/accessSummary?max=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings recording-report list-meeting-archive-summaries", - "variant": "all-flags", - "args": [ - "--from=2026-01-01T00:00:00.000Z", - "--max=s-max", - "--site-url=s-site-url", - "--timezone=s-timezone", - "--to=2026-01-02T00:00:00.000Z" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/recordingReport/meetingArchiveSummaries?from=2026-01-01T00%3A00%3A00.000Z&max=s-max&siteUrl=s-site-url&to=2026-01-02T00%3A00%3A00.000Z", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Timezone": "s-timezone" - } - } - ] - }, - { - "command": "meetings recording-report list-meeting-archive-summaries", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/recordingReport/meetingArchiveSummaries", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings recording-report list-meeting-archive-summaries", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/recordingReport/meetingArchiveSummaries?max=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings recordings delete", - "variant": "all-flags", - "args": [ - "--comment=s-comment", - "--host-email=s-host-email", - "--reason=s-reason", - "--recording-id=s-recording-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/recordings/s-recording-id?hostEmail=s-host-email", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"comment\":\"s-comment\",\"reason\":\"s-reason\"}" - } - ] - }, - { - "command": "meetings recordings delete", - "variant": "required", - "args": [ - "--recording-id=s-recording-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/recordings/s-recording-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings recordings delete", - "variant": "body", - "args": [ - "--recording-id=s-recording-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/recordings/s-recording-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings recordings delete-admin", - "variant": "all-flags", - "args": [ - "--recording-id=s-recording-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/admin/recordings/s-recording-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings recordings delete-admin", - "variant": "required", - "args": [ - "--recording-id=s-recording-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/admin/recordings/s-recording-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings recordings download", - "variant": "all-flags", - "args": [ - "--host-email=s-host-email", - "--output=s-output", - "--recording-id=s-recording-id", - "--type=s-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/recordings/s-recording-id?hostEmail=s-host-email", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ], - "error": "no temporaryDirectDownloadLinks in response (status 200)" - }, - { - "command": "meetings recordings download", - "variant": "required", - "args": [ - "--output=s-output", - "--recording-id=s-recording-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/recordings/s-recording-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ], - "error": "no temporaryDirectDownloadLinks in response (status 200)" - }, - { - "command": "meetings recordings download", - "variant": "paginate", - "args": [ - "--output=s-output", - "--recording-id=s-recording-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/recordings/s-recording-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ], - "error": "no temporaryDirectDownloadLinks in response (status 200)" - }, - { - "command": "meetings recordings get", - "variant": "all-flags", - "args": [ - "--host-email=s-host-email", - "--recording-id=s-recording-id", - "--site-url=s-site-url", - "--timezone=s-timezone" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/recordings/s-recording-id?hostEmail=s-host-email", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Siteurl": "s-site-url", - "Timezone": "s-timezone" - } - } - ] - }, - { - "command": "meetings recordings get", - "variant": "required", - "args": [ - "--recording-id=s-recording-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/recordings/s-recording-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings recordings get", - "variant": "paginate", - "args": [ - "--recording-id=s-recording-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/recordings/s-recording-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings recordings get-group", - "variant": "all-flags", - "args": [ - "--host-email=s-host-email", - "--person-id=s-person-id", - "--recording-id=s-recording-id", - "--timezone=s-timezone" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/group/recordings/s-recording-id?personId=s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Hostemail": "s-host-email", - "Timezone": "s-timezone" - } - } - ] - }, - { - "command": "meetings recordings get-group", - "variant": "required", - "args": [ - "--recording-id=s-recording-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/group/recordings/s-recording-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings recordings get-group", - "variant": "paginate", - "args": [ - "--recording-id=s-recording-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/group/recordings/s-recording-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings recordings list", - "variant": "all-flags", - "args": [ - "--format=s-format", - "--from=2026-01-01T00:00:00.000Z", - "--host-email=s-host-email", - "--integration-tag=s-integration-tag", - "--max=s-max", - "--meeting-id=s-meeting-id", - "--service-type=s-service-type", - "--site-url=s-site-url", - "--status=s-status", - "--timezone=s-timezone", - "--to=2026-01-02T00:00:00.000Z", - "--topic=s-topic" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/recordings?format=s-format&from=2026-01-01T00%3A00%3A00.000Z&hostEmail=s-host-email&integrationTag=s-integration-tag&max=s-max&meetingId=s-meeting-id&serviceType=s-service-type&siteUrl=s-site-url&status=s-status&to=2026-01-02T00%3A00%3A00.000Z&topic=s-topic", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Timezone": "s-timezone" - } - } - ] - }, - { - "command": "meetings recordings list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/recordings", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings recordings list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/recordings?max=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings recordings list-admin-compliance-officer", - "variant": "all-flags", - "args": [ - "--format=s-format", - "--from=2026-01-01T00:00:00.000Z", - "--integration-tag=s-integration-tag", - "--max=s-max", - "--meeting-id=s-meeting-id", - "--service-type=s-service-type", - "--site-url=s-site-url", - "--status=s-status", - "--timezone=s-timezone", - "--to=2026-01-02T00:00:00.000Z", - "--topic=s-topic" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/admin/recordings?format=s-format&from=2026-01-01T00%3A00%3A00.000Z&integrationTag=s-integration-tag&max=s-max&meetingId=s-meeting-id&serviceType=s-service-type&siteUrl=s-site-url&status=s-status&to=2026-01-02T00%3A00%3A00.000Z&topic=s-topic", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Timezone": "s-timezone" - } - } - ] - }, - { - "command": "meetings recordings list-admin-compliance-officer", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/admin/recordings", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings recordings list-admin-compliance-officer", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/admin/recordings?max=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings recordings list-group", - "variant": "all-flags", - "args": [ - "--format=s-format", - "--from=2026-01-01T00:00:00.000Z", - "--host-email=s-host-email", - "--integration-tag=s-integration-tag", - "--max=s-max", - "--person-id=s-person-id", - "--service-type=s-service-type", - "--site-url=s-site-url", - "--timezone=s-timezone", - "--to=2026-01-02T00:00:00.000Z" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/group/recordings?format=s-format&from=2026-01-01T00%3A00%3A00.000Z&integrationTag=s-integration-tag&max=s-max&personId=s-person-id&serviceType=s-service-type&siteUrl=s-site-url&to=2026-01-02T00%3A00%3A00.000Z", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Hostemail": "s-host-email", - "Timezone": "s-timezone" - } - } - ] - }, - { - "command": "meetings recordings list-group", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/group/recordings", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings recordings list-group", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/group/recordings?max=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings recordings move-recycle-bin", - "variant": "all-flags", - "args": [ - "--host-email=s-host-email", - "--recording-ids=s-recording-ids-1,s-recording-ids-2", - "--site-url=s-site-url" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/recordings/softDelete?hostEmail=s-host-email", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"recordingIds\":[\"s-recording-ids-1\",\"s-recording-ids-2\"],\"siteUrl\":\"s-site-url\"}" - } - ] - }, - { - "command": "meetings recordings move-recycle-bin", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/recordings/softDelete", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings recordings move-recycle-bin", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/recordings/softDelete", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings recordings purge-recycle-bin", - "variant": "all-flags", - "args": [ - "--host-email=s-host-email", - "--purge-all=true", - "--recording-ids=s-recording-ids-1,s-recording-ids-2", - "--site-url=s-site-url" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/recordings/purge?hostEmail=s-host-email", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"purgeAll\":true,\"recordingIds\":[\"s-recording-ids-1\",\"s-recording-ids-2\"],\"siteUrl\":\"s-site-url\"}" - } - ] - }, - { - "command": "meetings recordings purge-recycle-bin", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/recordings/purge", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings recordings purge-recycle-bin", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/recordings/purge", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings recordings query", - "variant": "all-flags", - "args": [ - "--format=s-format", - "--from=2026-01-01T00:00:00.000Z", - "--host-email=s-host-email", - "--integration-tag=s-integration-tag", - "--max=7", - "--meeting-id=s-meeting-id", - "--service-type=s-service-type", - "--site-url=s-site-url", - "--status=s-status", - "--timezone=s-timezone", - "--to=2026-01-02T00:00:00.000Z", - "--topic=s-topic" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/recordings/query", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json", - "Timezone": "s-timezone" - }, - "body": "{\"format\":\"s-format\",\"from\":\"2026-01-01T00:00:00.000Z\",\"hostEmail\":\"s-host-email\",\"integrationTag\":\"s-integration-tag\",\"max\":7,\"meetingId\":\"s-meeting-id\",\"serviceType\":\"s-service-type\",\"siteUrl\":\"s-site-url\",\"status\":\"s-status\",\"to\":\"2026-01-02T00:00:00.000Z\",\"topic\":\"s-topic\"}" - } - ] - }, - { - "command": "meetings recordings query", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/recordings/query", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings recordings query", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/recordings/query", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings recordings query-admin-compliance-officer", - "variant": "all-flags", - "args": [ - "--format=s-format", - "--from=2026-01-01T00:00:00.000Z", - "--integration-tag=s-integration-tag", - "--max=7", - "--meeting-id=s-meeting-id", - "--service-type=s-service-type", - "--site-url=s-site-url", - "--status=s-status", - "--timezone=s-timezone", - "--to=2026-01-02T00:00:00.000Z", - "--topic=s-topic" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/admin/recordings/query", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json", - "Timezone": "s-timezone" - }, - "body": "{\"format\":\"s-format\",\"from\":\"2026-01-01T00:00:00.000Z\",\"integrationTag\":\"s-integration-tag\",\"max\":7,\"meetingId\":\"s-meeting-id\",\"serviceType\":\"s-service-type\",\"siteUrl\":\"s-site-url\",\"status\":\"s-status\",\"timezone\":\"s-timezone\",\"to\":\"2026-01-02T00:00:00.000Z\",\"topic\":\"s-topic\"}" - } - ] - }, - { - "command": "meetings recordings query-admin-compliance-officer", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/admin/recordings/query", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings recordings query-admin-compliance-officer", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/admin/recordings/query", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings recordings restore-recycle-bin", - "variant": "all-flags", - "args": [ - "--host-email=s-host-email", - "--recording-ids=s-recording-ids-1,s-recording-ids-2", - "--restore-all=true", - "--site-url=s-site-url" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/recordings/restore?hostEmail=s-host-email", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"recordingIds\":[\"s-recording-ids-1\",\"s-recording-ids-2\"],\"restoreAll\":true,\"siteUrl\":\"s-site-url\"}" - } - ] - }, - { - "command": "meetings recordings restore-recycle-bin", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/recordings/restore", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings recordings restore-recycle-bin", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/recordings/restore", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings recordings share", - "variant": "all-flags", - "args": [ - "--add-emails=s-add-emails-1,s-add-emails-2", - "--host-email=s-host-email", - "--recording-id=s-recording-id", - "--remove-emails=s-remove-emails-1,s-remove-emails-2", - "--send-email=true" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/recordings/s-recording-id/accessList", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"addEmails\":[\"s-add-emails-1\",\"s-add-emails-2\"],\"hostEmail\":\"s-host-email\",\"removeEmails\":[\"s-remove-emails-1\",\"s-remove-emails-2\"],\"sendEmail\":true}" - } - ] - }, - { - "command": "meetings recordings share", - "variant": "required", - "args": [ - "--recording-id=s-recording-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/recordings/s-recording-id/accessList", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings recordings share", - "variant": "body", - "args": [ - "--recording-id=s-recording-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/recordings/s-recording-id/accessList", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings recordings share-link", - "variant": "all-flags", - "args": [ - "--add-emails=s-add-emails-1,s-add-emails-2", - "--host-email=s-host-email", - "--remove-emails=s-remove-emails-1,s-remove-emails-2", - "--send-email=true", - "--web-share-link=s-web-share-link" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/recordings/accessList", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"addEmails\":[\"s-add-emails-1\",\"s-add-emails-2\"],\"hostEmail\":\"s-host-email\",\"removeEmails\":[\"s-remove-emails-1\",\"s-remove-emails-2\"],\"sendEmail\":true,\"webShareLink\":\"s-web-share-link\"}" - } - ] - }, - { - "command": "meetings recordings share-link", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/recordings/accessList", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings recordings share-link", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/recordings/accessList", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings session-types list-site", - "variant": "all-flags", - "args": [ - "--site-url=s-site-url" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/admin/meeting/config/sessionTypes?siteUrl=s-site-url", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings session-types list-site", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/admin/meeting/config/sessionTypes", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings session-types list-site", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/admin/meeting/config/sessionTypes", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings session-types list-user", - "variant": "all-flags", - "args": [ - "--email=s-email", - "--person-id=s-person-id", - "--site-url=s-site-url" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/admin/meeting/userconfig/sessionTypes?personId=s-person-id&siteUrl=s-site-url", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Email": "s-email" - } - } - ] - }, - { - "command": "meetings session-types list-user", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/admin/meeting/userconfig/sessionTypes", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings session-types list-user", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/admin/meeting/userconfig/sessionTypes", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings session-types update-user", - "variant": "all-flags", - "args": [ - "--email=s-email", - "--person-id=s-person-id", - "--session-type-ids=s-session-type-ids-1,s-session-type-ids-2", - "--site-url=s-site-url" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/admin/meeting/userconfig/sessionTypes", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"email\":\"s-email\",\"personId\":\"s-person-id\",\"sessionTypeIds\":[\"s-session-type-ids-1\",\"s-session-type-ids-2\"],\"siteUrl\":\"s-site-url\"}" - } - ] - }, - { - "command": "meetings session-types update-user", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/admin/meeting/userconfig/sessionTypes", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings session-types update-user", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/admin/meeting/userconfig/sessionTypes", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings site get-meeting-common-settings-configuration", - "variant": "all-flags", - "args": [ - "--site-url=s-site-url" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/admin/meeting/config/commonSettings?siteUrl=s-site-url", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings site get-meeting-common-settings-configuration", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/admin/meeting/config/commonSettings", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings site get-meeting-common-settings-configuration", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/admin/meeting/config/commonSettings", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings site update-meeting-common-settings-configuration", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "PATCH", - "url": "https://webexapis.com/v1/admin/meeting/config/commonSettings", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings site update-meeting-common-settings-configuration", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PATCH", - "url": "https://webexapis.com/v1/admin/meeting/config/commonSettings", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings site update-meeting-common-settings-configuration", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://webexapis.com/v1/admin/meeting/config/commonSettings", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings slido list-compliance-events", - "variant": "all-flags", - "args": [ - "--session-id=s-session-id", - "--session-org-id=s-session-org-id", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/slido/compliance/events?sessionId=s-session-id&sessionOrgId=s-session-org-id&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings slido list-compliance-events", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/slido/compliance/events", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings slido list-compliance-events", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/slido/compliance/events", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings slidosecurepremium list-compliance-events", - "variant": "all-flags", - "args": [ - "--session-id=s-session-id", - "--session-org-id=s-session-org-id", - "--start=s-start" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/slido/compliance/events?sessionId=s-session-id&sessionOrgId=s-session-org-id&start=s-start", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings slidosecurepremium list-compliance-events", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/slido/compliance/events", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings slidosecurepremium list-compliance-events", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/slido/compliance/events", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings summaries delete", - "variant": "all-flags", - "args": [ - "--summary-id=s-summary-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/meetingSummaries/s-summary-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings summaries delete", - "variant": "required", - "args": [ - "--summary-id=s-summary-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/meetingSummaries/s-summary-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings summaries get-compliance-officer", - "variant": "all-flags", - "args": [ - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/admin/meetingSummaries?meetingId=s-meeting-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings summaries get-compliance-officer", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/admin/meetingSummaries", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings summaries get-compliance-officer", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/admin/meetingSummaries", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings summaries get-meeting-id", - "variant": "all-flags", - "args": [ - "--meeting-id=s-meeting-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingSummaries?meetingId=s-meeting-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings summaries get-meeting-id", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingSummaries", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings summaries get-meeting-id", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingSummaries", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings tracking-codes create", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/admin/meeting/config/trackingCodes", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings tracking-codes create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/admin/meeting/config/trackingCodes", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings tracking-codes create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/admin/meeting/config/trackingCodes", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings tracking-codes delete", - "variant": "all-flags", - "args": [ - "--site-url=s-site-url", - "--tracking-code-id=s-tracking-code-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/admin/meeting/config/trackingCodes/s-tracking-code-id?siteUrl=s-site-url", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings tracking-codes delete", - "variant": "required", - "args": [ - "--tracking-code-id=s-tracking-code-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/admin/meeting/config/trackingCodes/s-tracking-code-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings tracking-codes get", - "variant": "all-flags", - "args": [ - "--site-url=s-site-url", - "--tracking-code-id=s-tracking-code-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/admin/meeting/config/trackingCodes/s-tracking-code-id?siteUrl=s-site-url", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings tracking-codes get", - "variant": "required", - "args": [ - "--tracking-code-id=s-tracking-code-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/admin/meeting/config/trackingCodes/s-tracking-code-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings tracking-codes get", - "variant": "paginate", - "args": [ - "--tracking-code-id=s-tracking-code-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/admin/meeting/config/trackingCodes/s-tracking-code-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings tracking-codes get-user", - "variant": "all-flags", - "args": [ - "--email=s-email", - "--person-id=s-person-id", - "--site-url=s-site-url" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/admin/meeting/userconfig/trackingCodes?personId=s-person-id&siteUrl=s-site-url", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Email": "s-email" - } - } - ] - }, - { - "command": "meetings tracking-codes get-user", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/admin/meeting/userconfig/trackingCodes", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings tracking-codes get-user", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/admin/meeting/userconfig/trackingCodes", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings tracking-codes list", - "variant": "all-flags", - "args": [ - "--site-url=s-site-url" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/admin/meeting/config/trackingCodes?siteUrl=s-site-url", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings tracking-codes list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/admin/meeting/config/trackingCodes", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings tracking-codes list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/admin/meeting/config/trackingCodes", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings tracking-codes update", - "variant": "all-flags", - "args": [ - "--tracking-code-id=s-tracking-code-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/admin/meeting/config/trackingCodes/s-tracking-code-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings tracking-codes update", - "variant": "required", - "args": [ - "--tracking-code-id=s-tracking-code-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/admin/meeting/config/trackingCodes/s-tracking-code-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings tracking-codes update", - "variant": "body", - "args": [ - "--tracking-code-id=s-tracking-code-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/admin/meeting/config/trackingCodes/s-tracking-code-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings tracking-codes update-user", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/admin/meeting/userconfig/trackingCodes", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings tracking-codes update-user", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/admin/meeting/userconfig/trackingCodes", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings tracking-codes update-user", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/admin/meeting/userconfig/trackingCodes", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings transcripts delete", - "variant": "all-flags", - "args": [ - "--comment=s-comment", - "--reason=s-reason", - "--transcript-id=s-transcript-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/meetingTranscripts/s-transcript-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"comment\":\"s-comment\",\"reason\":\"s-reason\"}" - } - ] - }, - { - "command": "meetings transcripts delete", - "variant": "required", - "args": [ - "--transcript-id=s-transcript-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/meetingTranscripts/s-transcript-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings transcripts delete", - "variant": "body", - "args": [ - "--transcript-id=s-transcript-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/meetingTranscripts/s-transcript-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings transcripts download-meeting", - "variant": "all-flags", - "args": [ - "--format=s-format", - "--host-email=s-host-email", - "--transcript-id=s-transcript-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingTranscripts/s-transcript-id/download?format=s-format&hostEmail=s-host-email", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings transcripts download-meeting", - "variant": "required", - "args": [ - "--transcript-id=s-transcript-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingTranscripts/s-transcript-id/download", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings transcripts download-meeting", - "variant": "paginate", - "args": [ - "--transcript-id=s-transcript-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingTranscripts/s-transcript-id/download", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings transcripts get-snippet", - "variant": "all-flags", - "args": [ - "--snippet-id=s-snippet-id", - "--transcript-id=s-transcript-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingTranscripts/s-transcript-id/snippets/s-snippet-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings transcripts get-snippet", - "variant": "required", - "args": [ - "--snippet-id=s-snippet-id", - "--transcript-id=s-transcript-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingTranscripts/s-transcript-id/snippets/s-snippet-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings transcripts get-snippet", - "variant": "paginate", - "args": [ - "--snippet-id=s-snippet-id", - "--transcript-id=s-transcript-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingTranscripts/s-transcript-id/snippets/s-snippet-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings transcripts list-meeting", - "variant": "all-flags", - "args": [ - "--from=2026-01-01T00:00:00.000Z", - "--host-email=s-host-email", - "--max=s-max", - "--meeting-id=s-meeting-id", - "--site-url=s-site-url", - "--to=2026-01-02T00:00:00.000Z" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingTranscripts?from=2026-01-01T00%3A00%3A00.000Z&hostEmail=s-host-email&max=s-max&meetingId=s-meeting-id&siteUrl=s-site-url&to=2026-01-02T00%3A00%3A00.000Z", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings transcripts list-meeting", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingTranscripts", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings transcripts list-meeting", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingTranscripts?max=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings transcripts list-meeting-compliance-officer", - "variant": "all-flags", - "args": [ - "--from=2026-01-01T00:00:00.000Z", - "--max=s-max", - "--site-url=s-site-url", - "--to=2026-01-02T00:00:00.000Z" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/admin/meetingTranscripts?from=2026-01-01T00%3A00%3A00.000Z&max=s-max&siteUrl=s-site-url&to=2026-01-02T00%3A00%3A00.000Z", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings transcripts list-meeting-compliance-officer", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/admin/meetingTranscripts", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings transcripts list-meeting-compliance-officer", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/admin/meetingTranscripts?max=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings transcripts list-snippets-meeting", - "variant": "all-flags", - "args": [ - "--max=s-max", - "--transcript-id=s-transcript-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingTranscripts/s-transcript-id/snippets?max=s-max", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings transcripts list-snippets-meeting", - "variant": "required", - "args": [ - "--transcript-id=s-transcript-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingTranscripts/s-transcript-id/snippets", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings transcripts list-snippets-meeting", - "variant": "paginate", - "args": [ - "--transcript-id=s-transcript-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/meetingTranscripts/s-transcript-id/snippets?max=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings transcripts update-snippet", - "variant": "all-flags", - "args": [ - "--reason=s-reason", - "--snippet-id=s-snippet-id", - "--text=s-text", - "--transcript-id=s-transcript-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/meetingTranscripts/s-transcript-id/snippets/s-snippet-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"reason\":\"s-reason\",\"text\":\"s-text\"}" - } - ] - }, - { - "command": "meetings transcripts update-snippet", - "variant": "required", - "args": [ - "--snippet-id=s-snippet-id", - "--transcript-id=s-transcript-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/meetingTranscripts/s-transcript-id/snippets/s-snippet-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings transcripts update-snippet", - "variant": "body", - "args": [ - "--snippet-id=s-snippet-id", - "--transcript-id=s-transcript-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/meetingTranscripts/s-transcript-id/snippets/s-snippet-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings video-mesh get-cluster", - "variant": "all-flags", - "args": [ - "--cluster-id=s-cluster-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/clusters/s-cluster-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh get-cluster", - "variant": "required", - "args": [ - "--cluster-id=s-cluster-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/clusters/s-cluster-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh get-cluster", - "variant": "paginate", - "args": [ - "--cluster-id=s-cluster-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/clusters/s-cluster-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh get-cluster-availability", - "variant": "all-flags", - "args": [ - "--cluster-id=s-cluster-id", - "--from=2026-01-01T00:00:00.000Z", - "--to=2026-01-02T00:00:00.000Z" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/clusters/availability/s-cluster-id?from=2026-01-01T00%3A00%3A00.000Z&to=2026-01-02T00%3A00%3A00.000Z", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh get-cluster-availability", - "variant": "required", - "args": [ - "--cluster-id=s-cluster-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/clusters/availability/s-cluster-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh get-cluster-availability", - "variant": "paginate", - "args": [ - "--cluster-id=s-cluster-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/clusters/availability/s-cluster-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh get-cluster-client-type-distribution", - "variant": "all-flags", - "args": [ - "--cluster-id=s-cluster-id", - "--device-type=s-device-type", - "--from=2026-01-01T00:00:00.000Z", - "--to=2026-01-02T00:00:00.000Z" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/clientTypeDistribution/clusters?clusterId=s-cluster-id&deviceType=s-device-type&from=2026-01-01T00%3A00%3A00.000Z&to=2026-01-02T00%3A00%3A00.000Z", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh get-cluster-client-type-distribution", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/clientTypeDistribution/clusters", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh get-cluster-client-type-distribution", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/clientTypeDistribution/clusters", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh get-cluster-redirect", - "variant": "all-flags", - "args": [ - "--cluster-id=s-cluster-id", - "--from=2026-01-01T00:00:00.000Z", - "--to=2026-01-02T00:00:00.000Z" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/clusters/callRedirects?clusterId=s-cluster-id&from=2026-01-01T00%3A00%3A00.000Z&to=2026-01-02T00%3A00%3A00.000Z", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh get-cluster-redirect", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/clusters/callRedirects", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh get-cluster-redirect", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/clusters/callRedirects", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh get-cluster-utilization", - "variant": "all-flags", - "args": [ - "--cluster-id=s-cluster-id", - "--from=2026-01-01T00:00:00.000Z", - "--to=2026-01-02T00:00:00.000Z" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/clusters/utilization?clusterId=s-cluster-id&from=2026-01-01T00%3A00%3A00.000Z&to=2026-01-02T00%3A00%3A00.000Z", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh get-cluster-utilization", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/clusters/utilization", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh get-cluster-utilization", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/clusters/utilization", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh get-event-threshold-configuration", - "variant": "all-flags", - "args": [ - "--event-threshold-id=s-event-threshold-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/eventThresholds/s-event-threshold-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh get-event-threshold-configuration", - "variant": "required", - "args": [ - "--event-threshold-id=s-event-threshold-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/eventThresholds/s-event-threshold-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh get-event-threshold-configuration", - "variant": "paginate", - "args": [ - "--event-threshold-id=s-event-threshold-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/eventThresholds/s-event-threshold-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh get-media-health-monitoring-tool-test-results-clusters-v2", - "variant": "all-flags", - "args": [ - "--cluster-id=s-cluster-id", - "--from=2026-01-01T00:00:00.000Z", - "--to=2026-01-02T00:00:00.000Z", - "--trigger-type=s-trigger-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/testResults/mediaHealthMonitorTest/clusters?clusterId=s-cluster-id&from=2026-01-01T00%3A00%3A00.000Z&to=2026-01-02T00%3A00%3A00.000Z&triggerType=s-trigger-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh get-media-health-monitoring-tool-test-results-clusters-v2", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/testResults/mediaHealthMonitorTest/clusters", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh get-media-health-monitoring-tool-test-results-clusters-v2", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/testResults/mediaHealthMonitorTest/clusters", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh get-media-health-monitoring-tool-test-results-node-v2", - "variant": "all-flags", - "args": [ - "--from=2026-01-01T00:00:00.000Z", - "--node-id=s-node-id", - "--to=2026-01-02T00:00:00.000Z", - "--trigger-type=s-trigger-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/testResults/mediaHealthMonitorTest/nodes?from=2026-01-01T00%3A00%3A00.000Z&nodeId=s-node-id&to=2026-01-02T00%3A00%3A00.000Z&triggerType=s-trigger-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh get-media-health-monitoring-tool-test-results-node-v2", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/testResults/mediaHealthMonitorTest/nodes", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh get-media-health-monitoring-tool-test-results-node-v2", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/testResults/mediaHealthMonitorTest/nodes", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh get-network-test-results-cluster", - "variant": "all-flags", - "args": [ - "--cluster-id=s-cluster-id", - "--from=2026-01-01T00:00:00.000Z", - "--to=2026-01-02T00:00:00.000Z", - "--trigger-type=s-trigger-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/testResults/networkTest/clusters?clusterId=s-cluster-id&from=2026-01-01T00%3A00%3A00.000Z&to=2026-01-02T00%3A00%3A00.000Z&triggerType=s-trigger-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh get-network-test-results-cluster", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/testResults/networkTest/clusters", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh get-network-test-results-cluster", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/testResults/networkTest/clusters", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh get-network-test-results-node", - "variant": "all-flags", - "args": [ - "--from=2026-01-01T00:00:00.000Z", - "--node-id=s-node-id", - "--to=2026-01-02T00:00:00.000Z", - "--trigger-type=s-trigger-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/testResults/networkTest/nodes?from=2026-01-01T00%3A00%3A00.000Z&nodeId=s-node-id&to=2026-01-02T00%3A00%3A00.000Z&triggerType=s-trigger-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh get-network-test-results-node", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/testResults/networkTest/nodes", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh get-network-test-results-node", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/testResults/networkTest/nodes", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh get-node-availability", - "variant": "all-flags", - "args": [ - "--from=2026-01-01T00:00:00.000Z", - "--node-id=s-node-id", - "--to=2026-01-02T00:00:00.000Z" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/nodes/availability/s-node-id?from=2026-01-01T00%3A00%3A00.000Z&to=2026-01-02T00%3A00%3A00.000Z", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh get-node-availability", - "variant": "required", - "args": [ - "--node-id=s-node-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/nodes/availability/s-node-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh get-node-availability", - "variant": "paginate", - "args": [ - "--node-id=s-node-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/nodes/availability/s-node-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh get-reachability-test-results-cluster-v2", - "variant": "all-flags", - "args": [ - "--cluster-id=s-cluster-id", - "--from=2026-01-01T00:00:00.000Z", - "--to=2026-01-02T00:00:00.000Z", - "--trigger-type=s-trigger-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/testResults/reachabilityTest/clusters?clusterId=s-cluster-id&from=2026-01-01T00%3A00%3A00.000Z&to=2026-01-02T00%3A00%3A00.000Z&triggerType=s-trigger-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh get-reachability-test-results-cluster-v2", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/testResults/reachabilityTest/clusters", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh get-reachability-test-results-cluster-v2", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/testResults/reachabilityTest/clusters", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh get-reachability-test-results-node-v2", - "variant": "all-flags", - "args": [ - "--from=2026-01-01T00:00:00.000Z", - "--node-id=s-node-id", - "--to=2026-01-02T00:00:00.000Z", - "--trigger-type=s-trigger-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/testResults/reachabilityTest/nodes?from=2026-01-01T00%3A00%3A00.000Z&nodeId=s-node-id&to=2026-01-02T00%3A00%3A00.000Z&triggerType=s-trigger-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh get-reachability-test-results-node-v2", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/testResults/reachabilityTest/nodes", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh get-reachability-test-results-node-v2", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/testResults/reachabilityTest/nodes", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh get-triggered-test-results", - "variant": "all-flags", - "args": [ - "--command-id=s-command-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/testResults?commandId=s-command-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh get-triggered-test-results", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/testResults", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh get-triggered-test-results", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/testResults", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh get-triggered-test-status", - "variant": "all-flags", - "args": [ - "--command-id=s-command-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/testStatus?commandId=s-command-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh get-triggered-test-status", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/testStatus", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh get-triggered-test-status", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/testStatus", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh list-cluster", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/clusters?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh list-cluster", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/clusters?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh list-cluster", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/clusters?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh list-cluster-client-type-distribution", - "variant": "all-flags", - "args": [ - "--device-type=s-device-type", - "--from=2026-01-01T00:00:00.000Z", - "--to=2026-01-02T00:00:00.000Z" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/clientTypeDistribution?deviceType=s-device-type&from=2026-01-01T00%3A00%3A00.000Z&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&to=2026-01-02T00%3A00%3A00.000Z", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh list-cluster-client-type-distribution", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/clientTypeDistribution?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh list-cluster-client-type-distribution", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/clientTypeDistribution?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh list-cluster-redirect", - "variant": "all-flags", - "args": [ - "--from=2026-01-01T00:00:00.000Z", - "--to=2026-01-02T00:00:00.000Z" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/callRedirects?from=2026-01-01T00%3A00%3A00.000Z&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&to=2026-01-02T00%3A00%3A00.000Z", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh list-cluster-redirect", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/callRedirects?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh list-cluster-redirect", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/callRedirects?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh list-clusters-availability", - "variant": "all-flags", - "args": [ - "--from=2026-01-01T00:00:00.000Z", - "--to=2026-01-02T00:00:00.000Z" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/clusters/availability?from=2026-01-01T00%3A00%3A00.000Z&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&to=2026-01-02T00%3A00%3A00.000Z", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh list-clusters-availability", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/clusters/availability?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh list-clusters-availability", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/clusters/availability?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh list-clusters-utilization", - "variant": "all-flags", - "args": [ - "--from=2026-01-01T00:00:00.000Z", - "--to=2026-01-02T00:00:00.000Z" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/utilization?from=2026-01-01T00%3A00%3A00.000Z&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&to=2026-01-02T00%3A00%3A00.000Z", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh list-clusters-utilization", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/utilization?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh list-clusters-utilization", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/utilization?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh list-event-threshold-configuration", - "variant": "all-flags", - "args": [ - "--cluster-id=s-cluster-id", - "--event-name=s-event-name", - "--event-scope=s-event-scope" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/eventThresholds?clusterId=s-cluster-id&eventName=s-event-name&eventScope=s-event-scope&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh list-event-threshold-configuration", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/eventThresholds?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh list-event-threshold-configuration", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/eventThresholds?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh list-media-health-monitoring-tool-test-results-v2", - "variant": "all-flags", - "args": [ - "--from=2026-01-01T00:00:00.000Z", - "--to=2026-01-02T00:00:00.000Z", - "--trigger-type=s-trigger-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/testResults/mediaHealthMonitorTest?from=2026-01-01T00%3A00%3A00.000Z&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&to=2026-01-02T00%3A00%3A00.000Z&triggerType=s-trigger-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh list-media-health-monitoring-tool-test-results-v2", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/testResults/mediaHealthMonitorTest?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh list-media-health-monitoring-tool-test-results-v2", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/testResults/mediaHealthMonitorTest?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh list-network-test-results", - "variant": "all-flags", - "args": [ - "--from=2026-01-01T00:00:00.000Z", - "--to=2026-01-02T00:00:00.000Z", - "--trigger-type=s-trigger-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/testResults/networkTest?from=2026-01-01T00%3A00%3A00.000Z&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&to=2026-01-02T00%3A00%3A00.000Z&triggerType=s-trigger-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh list-network-test-results", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/testResults/networkTest?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh list-network-test-results", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/testResults/networkTest?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh list-node-availability", - "variant": "all-flags", - "args": [ - "--cluster-id=s-cluster-id", - "--from=2026-01-01T00:00:00.000Z", - "--to=2026-01-02T00:00:00.000Z" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/nodes/availability?clusterId=s-cluster-id&from=2026-01-01T00%3A00%3A00.000Z&to=2026-01-02T00%3A00%3A00.000Z", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh list-node-availability", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/nodes/availability", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh list-node-availability", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/nodes/availability", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh list-overflow-cloud", - "variant": "all-flags", - "args": [ - "--from=2026-01-01T00:00:00.000Z", - "--to=2026-01-02T00:00:00.000Z" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/cloudOverflow?from=2026-01-01T00%3A00%3A00.000Z&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&to=2026-01-02T00%3A00%3A00.000Z", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh list-overflow-cloud", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/cloudOverflow?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh list-overflow-cloud", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/cloudOverflow?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh list-reachability-test-results-v2", - "variant": "all-flags", - "args": [ - "--from=2026-01-01T00:00:00.000Z", - "--to=2026-01-02T00:00:00.000Z", - "--trigger-type=s-trigger-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/testResults/reachabilityTest?from=2026-01-01T00%3A00%3A00.000Z&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&to=2026-01-02T00%3A00%3A00.000Z&triggerType=s-trigger-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh list-reachability-test-results-v2", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/testResults/reachabilityTest?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh list-reachability-test-results-v2", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/videoMesh/testResults/reachabilityTest?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh reset-event-threshold-configuration", - "variant": "all-flags", - "args": [ - "--event-threshold-ids=s-event-threshold-ids-1,s-event-threshold-ids-2" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/videoMesh/eventThresholds/reset", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"eventThresholdIds\":[\"s-event-threshold-ids-1\",\"s-event-threshold-ids-2\"]}" - } - ] - }, - { - "command": "meetings video-mesh reset-event-threshold-configuration", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/videoMesh/eventThresholds/reset", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh reset-event-threshold-configuration", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/videoMesh/eventThresholds/reset", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings video-mesh trigger-on-demand-test-cluster", - "variant": "all-flags", - "args": [ - "--cluster-id=s-cluster-id", - "--nodes=s-nodes-1,s-nodes-2", - "--type=s-type" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/videoMesh/triggerTest/clusters/s-cluster-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"nodes\":[\"s-nodes-1\",\"s-nodes-2\"],\"type\":\"s-type\"}" - } - ] - }, - { - "command": "meetings video-mesh trigger-on-demand-test-cluster", - "variant": "required", - "args": [ - "--cluster-id=s-cluster-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/videoMesh/triggerTest/clusters/s-cluster-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh trigger-on-demand-test-cluster", - "variant": "body", - "args": [ - "--cluster-id=s-cluster-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/videoMesh/triggerTest/clusters/s-cluster-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings video-mesh trigger-on-demand-test-node", - "variant": "all-flags", - "args": [ - "--node-id=s-node-id", - "--type=s-type" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/videoMesh/triggerTest/nodes/s-node-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"type\":\"s-type\"}" - } - ] - }, - { - "command": "meetings video-mesh trigger-on-demand-test-node", - "variant": "required", - "args": [ - "--node-id=s-node-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/videoMesh/triggerTest/nodes/s-node-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh trigger-on-demand-test-node", - "variant": "body", - "args": [ - "--node-id=s-node-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/videoMesh/triggerTest/nodes/s-node-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings video-mesh update-event-threshold-configuration", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "PATCH", - "url": "https://webexapis.com/v1/videoMesh/eventThresholds", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh update-event-threshold-configuration", - "variant": "required", - "args": null, - "requests": [ - { - "method": "PATCH", - "url": "https://webexapis.com/v1/videoMesh/eventThresholds", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings video-mesh update-event-threshold-configuration", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PATCH", - "url": "https://webexapis.com/v1/videoMesh/eventThresholds", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings webhooks create", - "variant": "all-flags", - "args": [ - "--event=s-event", - "--filter=s-filter", - "--name=s-name", - "--owned-by=s-owned-by", - "--resource=s-resource", - "--secret=s-secret", - "--target-url=s-target-url" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/webhooks", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"event\":\"s-event\",\"filter\":\"s-filter\",\"name\":\"s-name\",\"ownedBy\":\"s-owned-by\",\"resource\":\"s-resource\",\"secret\":\"s-secret\",\"targetUrl\":\"s-target-url\"}" - } - ] - }, - { - "command": "meetings webhooks create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/webhooks", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings webhooks create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/webhooks", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "meetings webhooks delete", - "variant": "all-flags", - "args": [ - "--webhook-id=s-webhook-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/webhooks/s-webhook-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings webhooks delete", - "variant": "required", - "args": [ - "--webhook-id=s-webhook-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/webhooks/s-webhook-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings webhooks get", - "variant": "all-flags", - "args": [ - "--webhook-id=s-webhook-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/webhooks/s-webhook-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings webhooks get", - "variant": "required", - "args": [ - "--webhook-id=s-webhook-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/webhooks/s-webhook-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings webhooks get", - "variant": "paginate", - "args": [ - "--webhook-id=s-webhook-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/webhooks/s-webhook-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings webhooks list", - "variant": "all-flags", - "args": [ - "--max=s-max", - "--owned-by=s-owned-by" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/webhooks?max=s-max&ownedBy=s-owned-by", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings webhooks list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/webhooks", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings webhooks list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/webhooks?max=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings webhooks update", - "variant": "all-flags", - "args": [ - "--name=s-name", - "--owned-by=s-owned-by", - "--secret=s-secret", - "--status=s-status", - "--target-url=s-target-url", - "--webhook-id=s-webhook-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/webhooks/s-webhook-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"name\":\"s-name\",\"ownedBy\":\"s-owned-by\",\"secret\":\"s-secret\",\"status\":\"s-status\",\"targetUrl\":\"s-target-url\"}" - } - ] - }, - { - "command": "meetings webhooks update", - "variant": "required", - "args": [ - "--webhook-id=s-webhook-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/webhooks/s-webhook-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "meetings webhooks update", - "variant": "body", - "args": [ - "--webhook-id=s-webhook-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/webhooks/s-webhook-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - } -] diff --git a/testdata/golden/requests-messaging.json b/testdata/golden/requests-messaging.json deleted file mode 100644 index 535bd37..0000000 --- a/testdata/golden/requests-messaging.json +++ /dev/null @@ -1,3302 +0,0 @@ -[ - { - "command": "messaging attachment-actions create", - "variant": "all-flags", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/attachment/actions", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging attachment-actions create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/attachment/actions", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging attachment-actions create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/attachment/actions", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "messaging attachment-actions get", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/attachment/actions/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging attachment-actions get", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/attachment/actions/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging attachment-actions get", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/attachment/actions/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging ecm-folder-linking create-configuration", - "variant": "all-flags", - "args": [ - "--content-url=s-content-url", - "--default-folder=s-default-folder", - "--display-name=s-display-name", - "--drive-id=s-drive-id", - "--item-id=s-item-id", - "--room-id=s-room-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/room/linkedFolders", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"contentUrl\":\"s-content-url\",\"defaultFolder\":\"s-default-folder\",\"displayName\":\"s-display-name\",\"driveId\":\"s-drive-id\",\"itemId\":\"s-item-id\",\"roomId\":\"s-room-id\"}" - } - ] - }, - { - "command": "messaging ecm-folder-linking create-configuration", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/room/linkedFolders", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging ecm-folder-linking create-configuration", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/room/linkedFolders", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "messaging ecm-folder-linking get", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/room/linkedFolders/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging ecm-folder-linking get", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/room/linkedFolders/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging ecm-folder-linking get", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/room/linkedFolders/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging ecm-folder-linking list", - "variant": "all-flags", - "args": [ - "--room-id=s-room-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/room/linkedFolders?roomId=s-room-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging ecm-folder-linking list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/room/linkedFolders", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging ecm-folder-linking list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/room/linkedFolders", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging ecm-folder-linking unlink-linked", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/room/linkedFolders/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging ecm-folder-linking unlink-linked", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/room/linkedFolders/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging ecm-folder-linking update-linked", - "variant": "all-flags", - "args": [ - "--content-url=s-content-url", - "--default-folder=s-default-folder", - "--display-name=s-display-name", - "--drive-id=s-drive-id", - "--id=s-id", - "--item-id=s-item-id", - "--room-id=s-room-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/room/linkedFolders/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"contentUrl\":\"s-content-url\",\"defaultFolder\":\"s-default-folder\",\"displayName\":\"s-display-name\",\"driveId\":\"s-drive-id\",\"itemId\":\"s-item-id\",\"roomId\":\"s-room-id\"}" - } - ] - }, - { - "command": "messaging ecm-folder-linking update-linked", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/room/linkedFolders/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging ecm-folder-linking update-linked", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/room/linkedFolders/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "messaging events get", - "variant": "all-flags", - "args": [ - "--event-id=s-event-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/events/s-event-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging events get", - "variant": "required", - "args": [ - "--event-id=s-event-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/events/s-event-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging events get", - "variant": "paginate", - "args": [ - "--event-id=s-event-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/events/s-event-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging events list", - "variant": "all-flags", - "args": [ - "--actor-id=s-actor-id", - "--from=2026-01-01T00:00:00.000Z", - "--max=s-max", - "--resource=s-resource", - "--service-type=s-service-type", - "--to=2026-01-02T00:00:00.000Z", - "--type=s-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/events?actorId=s-actor-id&from=2026-01-01T00%3A00%3A00.000Z&max=s-max&resource=s-resource&serviceType=s-service-type&to=2026-01-02T00%3A00%3A00.000Z&type=s-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging events list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/events", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging events list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/events?max=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging hds get-alarms-node", - "variant": "all-flags", - "args": [ - "--from=2026-01-01T00:00:00.000Z", - "--node-id=s-node-id", - "--to=2026-01-02T00:00:00.000Z" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hds/nodes/s-node-id/alarms?from=2026-01-01T00%3A00%3A00.000Z&to=2026-01-02T00%3A00%3A00.000Z", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging hds get-alarms-node", - "variant": "required", - "args": [ - "--node-id=s-node-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hds/nodes/s-node-id/alarms", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging hds get-alarms-node", - "variant": "paginate", - "args": [ - "--node-id=s-node-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hds/nodes/s-node-id/alarms", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging hds get-availability-cluster", - "variant": "all-flags", - "args": [ - "--cluster-id=s-cluster-id", - "--from=2026-01-01T00:00:00.000Z", - "--to=2026-01-02T00:00:00.000Z" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hds/clusters/s-cluster-id/availability?from=2026-01-01T00%3A00%3A00.000Z&to=2026-01-02T00%3A00%3A00.000Z", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging hds get-availability-cluster", - "variant": "required", - "args": [ - "--cluster-id=s-cluster-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hds/clusters/s-cluster-id/availability", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging hds get-availability-cluster", - "variant": "paginate", - "args": [ - "--cluster-id=s-cluster-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hds/clusters/s-cluster-id/availability", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging hds get-cluster", - "variant": "all-flags", - "args": [ - "--cluster-id=s-cluster-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hds/clusters/s-cluster-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging hds get-cluster", - "variant": "required", - "args": [ - "--cluster-id=s-cluster-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hds/clusters/s-cluster-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging hds get-cluster", - "variant": "paginate", - "args": [ - "--cluster-id=s-cluster-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hds/clusters/s-cluster-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging hds get-database-config-org", - "variant": "all-flags", - "args": [ - "--organization-id=s-organization-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hds/organizations/s-organization-id/database", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging hds get-database-config-org", - "variant": "required", - "args": [ - "--organization-id=s-organization-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hds/organizations/s-organization-id/database", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging hds get-database-config-org", - "variant": "paginate", - "args": [ - "--organization-id=s-organization-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hds/organizations/s-organization-id/database", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging hds get-database-org", - "variant": "all-flags", - "args": [ - "--organization-id=s-organization-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hds/organizations/s-organization-id/database/details", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging hds get-database-org", - "variant": "required", - "args": [ - "--organization-id=s-organization-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hds/organizations/s-organization-id/database/details", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging hds get-database-org", - "variant": "paginate", - "args": [ - "--organization-id=s-organization-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hds/organizations/s-organization-id/database/details", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging hds get-multi-tenant-org", - "variant": "all-flags", - "args": [ - "--organization-id=s-organization-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hds/organizations/s-organization-id/multiTenant", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging hds get-multi-tenant-org", - "variant": "required", - "args": [ - "--organization-id=s-organization-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hds/organizations/s-organization-id/multiTenant", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging hds get-multi-tenant-org", - "variant": "paginate", - "args": [ - "--organization-id=s-organization-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hds/organizations/s-organization-id/multiTenant", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging hds get-node", - "variant": "all-flags", - "args": [ - "--node-id=s-node-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hds/nodes/s-node-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging hds get-node", - "variant": "required", - "args": [ - "--node-id=s-node-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hds/nodes/s-node-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging hds get-node", - "variant": "paginate", - "args": [ - "--node-id=s-node-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hds/nodes/s-node-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging hds get-org", - "variant": "all-flags", - "args": [ - "--organization-id=s-organization-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hds/organizations/s-organization-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging hds get-org", - "variant": "required", - "args": [ - "--organization-id=s-organization-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hds/organizations/s-organization-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging hds get-org", - "variant": "paginate", - "args": [ - "--organization-id=s-organization-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hds/organizations/s-organization-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging hds get-test-results-node", - "variant": "all-flags", - "args": [ - "--node-id=s-node-id", - "--trigger-type=s-trigger-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hds/testResults/nodes/s-node-id/networkTest?triggerType=s-trigger-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging hds get-test-results-node", - "variant": "required", - "args": [ - "--node-id=s-node-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hds/testResults/nodes/s-node-id/networkTest", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging hds get-test-results-node", - "variant": "paginate", - "args": [ - "--node-id=s-node-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hds/testResults/nodes/s-node-id/networkTest", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging hds get-usage-node", - "variant": "all-flags", - "args": [ - "--from=2026-01-01T00:00:00.000Z", - "--node-id=s-node-id", - "--to=2026-01-02T00:00:00.000Z" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hds/nodes/s-node-id/resourceUsage?from=2026-01-01T00%3A00%3A00.000Z&to=2026-01-02T00%3A00%3A00.000Z", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging hds get-usage-node", - "variant": "required", - "args": [ - "--node-id=s-node-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hds/nodes/s-node-id/resourceUsage", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging hds get-usage-node", - "variant": "paginate", - "args": [ - "--node-id=s-node-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hds/nodes/s-node-id/resourceUsage", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging hds list-clusters-org", - "variant": "all-flags", - "args": [ - "--organization-id=s-organization-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hds/organizations/s-organization-id/clusters", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging hds list-clusters-org", - "variant": "required", - "args": [ - "--organization-id=s-organization-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hds/organizations/s-organization-id/clusters", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging hds list-clusters-org", - "variant": "paginate", - "args": [ - "--organization-id=s-organization-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hds/organizations/s-organization-id/clusters", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging hds list-nodes-cluster", - "variant": "all-flags", - "args": [ - "--cluster-id=s-cluster-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hds/clusters/s-cluster-id/nodes", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging hds list-nodes-cluster", - "variant": "required", - "args": [ - "--cluster-id=s-cluster-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hds/clusters/s-cluster-id/nodes", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging hds list-nodes-cluster", - "variant": "paginate", - "args": [ - "--cluster-id=s-cluster-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hds/clusters/s-cluster-id/nodes", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging hds list-tenants-org", - "variant": "all-flags", - "args": [ - "--organization-id=s-organization-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hds/organizations/s-organization-id/tenants", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging hds list-tenants-org", - "variant": "required", - "args": [ - "--organization-id=s-organization-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hds/organizations/s-organization-id/tenants", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging hds list-tenants-org", - "variant": "paginate", - "args": [ - "--organization-id=s-organization-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/hds/organizations/s-organization-id/tenants", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging memberships create", - "variant": "all-flags", - "args": [ - "--is-moderator=true", - "--person-email=s-person-email", - "--person-id=s-person-id", - "--room-id=s-room-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/memberships", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"isModerator\":true,\"personEmail\":\"s-person-email\",\"personId\":\"s-person-id\",\"roomId\":\"s-room-id\"}" - } - ] - }, - { - "command": "messaging memberships create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/memberships", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging memberships create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/memberships", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "messaging memberships delete", - "variant": "all-flags", - "args": [ - "--membership-id=s-membership-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/memberships/s-membership-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging memberships delete", - "variant": "required", - "args": [ - "--membership-id=s-membership-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/memberships/s-membership-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging memberships get", - "variant": "all-flags", - "args": [ - "--membership-id=s-membership-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/memberships/s-membership-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging memberships get", - "variant": "required", - "args": [ - "--membership-id=s-membership-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/memberships/s-membership-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging memberships get", - "variant": "paginate", - "args": [ - "--membership-id=s-membership-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/memberships/s-membership-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging memberships list", - "variant": "all-flags", - "args": [ - "--max=s-max", - "--person-email=s-person-email", - "--person-id=s-person-id", - "--room-id=s-room-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/memberships?max=s-max&personEmail=s-person-email&personId=s-person-id&roomId=s-room-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging memberships list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/memberships", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging memberships list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/memberships?max=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging memberships update", - "variant": "all-flags", - "args": [ - "--is-moderator=true", - "--is-room-hidden=true", - "--membership-id=s-membership-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/memberships/s-membership-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"isModerator\":true,\"isRoomHidden\":true}" - } - ] - }, - { - "command": "messaging memberships update", - "variant": "required", - "args": [ - "--membership-id=s-membership-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/memberships/s-membership-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging memberships update", - "variant": "body", - "args": [ - "--membership-id=s-membership-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/memberships/s-membership-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "messaging messages create", - "variant": "all-flags", - "args": null, - "requests": [], - "error": "message body must be a JSON object" - }, - { - "command": "messaging messages create", - "variant": "required", - "args": null, - "requests": [], - "error": "message body must be a JSON object" - }, - { - "command": "messaging messages create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/messages", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "messaging messages delete", - "variant": "all-flags", - "args": [ - "--message-id=s-message-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/messages/s-message-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging messages delete", - "variant": "required", - "args": [ - "--message-id=s-message-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/messages/s-message-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging messages edit", - "variant": "all-flags", - "args": [ - "--markdown=s-markdown", - "--message-id=s-message-id", - "--room-id=s-room-id", - "--text=s-text" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/messages/s-message-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"markdown\":\"s-markdown\",\"roomId\":\"s-room-id\",\"text\":\"s-text\"}" - } - ] - }, - { - "command": "messaging messages edit", - "variant": "required", - "args": [ - "--message-id=s-message-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/messages/s-message-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging messages edit", - "variant": "body", - "args": [ - "--message-id=s-message-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/messages/s-message-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "messaging messages get", - "variant": "all-flags", - "args": [ - "--message-id=s-message-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/messages/s-message-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging messages get", - "variant": "required", - "args": [ - "--message-id=s-message-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/messages/s-message-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging messages get", - "variant": "paginate", - "args": [ - "--message-id=s-message-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/messages/s-message-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging messages list", - "variant": "all-flags", - "args": [ - "--before=s-before", - "--before-message=s-before-message", - "--max=s-max", - "--mentioned-people=s-mentioned-people", - "--parent-id=s-parent-id", - "--room-id=s-room-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/messages?before=s-before&beforeMessage=s-before-message&max=s-max&mentionedPeople=s-mentioned-people&parentId=s-parent-id&roomId=s-room-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging messages list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/messages", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging messages list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/messages?max=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging messages list-direct", - "variant": "all-flags", - "args": [ - "--parent-id=s-parent-id", - "--person-email=s-person-email", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/messages/direct?parentId=s-parent-id&personEmail=s-person-email&personId=s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging messages list-direct", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/messages/direct", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging messages list-direct", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/messages/direct", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging people create-person", - "variant": "all-flags", - "args": [ - "--calling-data=s-calling-data", - "--min-response=s-min-response" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/people?callingData=s-calling-data&minResponse=s-min-response", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging people create-person", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/people", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging people create-person", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/people", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "messaging people delete-person", - "variant": "all-flags", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/people/s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging people delete-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/people/s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging people get-my-own", - "variant": "all-flags", - "args": [ - "--calling-data=s-calling-data" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/me?callingData=s-calling-data", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging people get-my-own", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/me", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging people get-my-own", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/me", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging people get-person", - "variant": "all-flags", - "args": [ - "--calling-data=s-calling-data", - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id?callingData=s-calling-data", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging people get-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging people get-person", - "variant": "paginate", - "args": [ - "--person-id=s-person-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people/s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging people list", - "variant": "all-flags", - "args": [ - "--calling-data=s-calling-data", - "--display-name=s-display-name", - "--email=s-email", - "--exclude-status=s-exclude-status", - "--id=s-id", - "--location-id=s-location-id", - "--max=s-max", - "--roles=s-roles" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people?callingData=s-calling-data&displayName=s-display-name&email=s-email&excludeStatus=s-exclude-status&id=s-id&locationId=s-location-id&max=s-max&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA&roles=s-roles", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging people list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people?orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging people list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/people?max=100&orgId=Y2lzY29zcGFyazovL3VzL09SR0FOSVpBVElPTi82YWIxZDJjNC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGMxZDA", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging people update-person", - "variant": "all-flags", - "args": [ - "--calling-data=s-calling-data", - "--min-response=s-min-response", - "--person-id=s-person-id", - "--show-all-types=s-show-all-types" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id?callingData=s-calling-data&minResponse=s-min-response&showAllTypes=s-show-all-types", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging people update-person", - "variant": "required", - "args": [ - "--person-id=s-person-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging people update-person", - "variant": "body", - "args": [ - "--person-id=s-person-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/people/s-person-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "messaging room-tabs create", - "variant": "all-flags", - "args": [ - "--content-url=s-content-url", - "--display-name=s-display-name", - "--room-id=s-room-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/room/tabs", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"contentUrl\":\"s-content-url\",\"displayName\":\"s-display-name\",\"roomId\":\"s-room-id\"}" - } - ] - }, - { - "command": "messaging room-tabs create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/room/tabs", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging room-tabs create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/room/tabs", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "messaging room-tabs delete", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/room/tabs/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging room-tabs delete", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/room/tabs/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging room-tabs get", - "variant": "all-flags", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/room/tabs/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging room-tabs get", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/room/tabs/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging room-tabs get", - "variant": "paginate", - "args": [ - "--id=s-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/room/tabs/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging room-tabs list", - "variant": "all-flags", - "args": [ - "--room-id=s-room-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/room/tabs?roomId=s-room-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging room-tabs list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/room/tabs", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging room-tabs list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/room/tabs", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging room-tabs update", - "variant": "all-flags", - "args": [ - "--content-url=s-content-url", - "--display-name=s-display-name", - "--id=s-id", - "--room-id=s-room-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/room/tabs/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"contentUrl\":\"s-content-url\",\"displayName\":\"s-display-name\",\"roomId\":\"s-room-id\"}" - } - ] - }, - { - "command": "messaging room-tabs update", - "variant": "required", - "args": [ - "--id=s-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/room/tabs/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging room-tabs update", - "variant": "body", - "args": [ - "--id=s-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/room/tabs/s-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "messaging rooms create", - "variant": "all-flags", - "args": [ - "--classification-id=s-classification-id", - "--description=s-description", - "--is-announcement-only=true", - "--is-locked=true", - "--is-public=true", - "--team-id=s-team-id", - "--title=s-title" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/rooms", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"classificationId\":\"s-classification-id\",\"description\":\"s-description\",\"isAnnouncementOnly\":true,\"isLocked\":true,\"isPublic\":true,\"teamId\":\"s-team-id\",\"title\":\"s-title\"}" - } - ] - }, - { - "command": "messaging rooms create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/rooms", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging rooms create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/rooms", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "messaging rooms delete", - "variant": "all-flags", - "args": [ - "--room-id=s-room-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/rooms/s-room-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging rooms delete", - "variant": "required", - "args": [ - "--room-id=s-room-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/rooms/s-room-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging rooms get", - "variant": "all-flags", - "args": [ - "--room-id=s-room-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/rooms/s-room-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging rooms get", - "variant": "required", - "args": [ - "--room-id=s-room-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/rooms/s-room-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging rooms get", - "variant": "paginate", - "args": [ - "--room-id=s-room-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/rooms/s-room-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging rooms get-meeting", - "variant": "all-flags", - "args": [ - "--room-id=s-room-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/rooms/s-room-id/meetingInfo", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging rooms get-meeting", - "variant": "required", - "args": [ - "--room-id=s-room-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/rooms/s-room-id/meetingInfo", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging rooms get-meeting", - "variant": "paginate", - "args": [ - "--room-id=s-room-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/rooms/s-room-id/meetingInfo", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging rooms list", - "variant": "all-flags", - "args": [ - "--from=2026-01-01T00:00:00.000Z", - "--max=s-max", - "--org-public-spaces=s-org-public-spaces", - "--sort-by=s-sort-by", - "--team-id=s-team-id", - "--to=2026-01-02T00:00:00.000Z", - "--type=s-type" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/rooms?from=2026-01-01T00%3A00%3A00.000Z&max=s-max&orgPublicSpaces=s-org-public-spaces&sortBy=s-sort-by&teamId=s-team-id&to=2026-01-02T00%3A00%3A00.000Z&type=s-type", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging rooms list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/rooms", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging rooms list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/rooms?max=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging rooms update", - "variant": "all-flags", - "args": [ - "--classification-id=s-classification-id", - "--description=s-description", - "--is-announcement-only=true", - "--is-locked=true", - "--is-public=true", - "--is-read-only=true", - "--room-id=s-room-id", - "--team-id=s-team-id", - "--title=s-title" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/rooms/s-room-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"classificationId\":\"s-classification-id\",\"description\":\"s-description\",\"isAnnouncementOnly\":true,\"isLocked\":true,\"isPublic\":true,\"isReadOnly\":true,\"teamId\":\"s-team-id\",\"title\":\"s-title\"}" - } - ] - }, - { - "command": "messaging rooms update", - "variant": "required", - "args": [ - "--room-id=s-room-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/rooms/s-room-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging rooms update", - "variant": "body", - "args": [ - "--room-id=s-room-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/rooms/s-room-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "messaging team-memberships create", - "variant": "all-flags", - "args": [ - "--is-moderator=true", - "--person-email=s-person-email", - "--person-id=s-person-id", - "--team-id=s-team-id" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/team/memberships", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"isModerator\":true,\"personEmail\":\"s-person-email\",\"personId\":\"s-person-id\",\"teamId\":\"s-team-id\"}" - } - ] - }, - { - "command": "messaging team-memberships create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/team/memberships", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging team-memberships create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/team/memberships", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "messaging team-memberships delete", - "variant": "all-flags", - "args": [ - "--membership-id=s-membership-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/team/memberships/s-membership-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging team-memberships delete", - "variant": "required", - "args": [ - "--membership-id=s-membership-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/team/memberships/s-membership-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging team-memberships get", - "variant": "all-flags", - "args": [ - "--membership-id=s-membership-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/team/memberships/s-membership-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging team-memberships get", - "variant": "required", - "args": [ - "--membership-id=s-membership-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/team/memberships/s-membership-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging team-memberships get", - "variant": "paginate", - "args": [ - "--membership-id=s-membership-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/team/memberships/s-membership-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging team-memberships list", - "variant": "all-flags", - "args": [ - "--max=s-max", - "--team-id=s-team-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/team/memberships?max=s-max&teamId=s-team-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging team-memberships list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/team/memberships", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging team-memberships list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/team/memberships?max=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging team-memberships update", - "variant": "all-flags", - "args": [ - "--is-moderator=true", - "--membership-id=s-membership-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/team/memberships/s-membership-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"isModerator\":true}" - } - ] - }, - { - "command": "messaging team-memberships update", - "variant": "required", - "args": [ - "--membership-id=s-membership-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/team/memberships/s-membership-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging team-memberships update", - "variant": "body", - "args": [ - "--membership-id=s-membership-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/team/memberships/s-membership-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "messaging teams create", - "variant": "all-flags", - "args": [ - "--description=s-description", - "--name=s-name" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/teams", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"description\":\"s-description\",\"name\":\"s-name\"}" - } - ] - }, - { - "command": "messaging teams create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/teams", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging teams create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/teams", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "messaging teams delete", - "variant": "all-flags", - "args": [ - "--team-id=s-team-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/teams/s-team-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging teams delete", - "variant": "required", - "args": [ - "--team-id=s-team-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/teams/s-team-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging teams get", - "variant": "all-flags", - "args": [ - "--description=s-description", - "--team-id=s-team-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/teams/s-team-id?description=s-description", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging teams get", - "variant": "required", - "args": [ - "--team-id=s-team-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/teams/s-team-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging teams get", - "variant": "paginate", - "args": [ - "--team-id=s-team-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/teams/s-team-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging teams list", - "variant": "all-flags", - "args": [ - "--max=s-max" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/teams?max=s-max", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging teams list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/teams", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging teams list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/teams?max=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging teams update", - "variant": "all-flags", - "args": [ - "--description=s-description", - "--name=s-name", - "--team-id=s-team-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/teams/s-team-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"description\":\"s-description\",\"name\":\"s-name\"}" - } - ] - }, - { - "command": "messaging teams update", - "variant": "required", - "args": [ - "--team-id=s-team-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/teams/s-team-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging teams update", - "variant": "body", - "args": [ - "--team-id=s-team-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/teams/s-team-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "messaging webhooks create", - "variant": "all-flags", - "args": [ - "--event=s-event", - "--filter=s-filter", - "--name=s-name", - "--owned-by=s-owned-by", - "--resource=s-resource", - "--secret=s-secret", - "--target-url=s-target-url" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/webhooks", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"event\":\"s-event\",\"filter\":\"s-filter\",\"name\":\"s-name\",\"ownedBy\":\"s-owned-by\",\"resource\":\"s-resource\",\"secret\":\"s-secret\",\"targetUrl\":\"s-target-url\"}" - } - ] - }, - { - "command": "messaging webhooks create", - "variant": "required", - "args": null, - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/webhooks", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging webhooks create", - "variant": "body", - "args": [ - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "POST", - "url": "https://webexapis.com/v1/webhooks", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - }, - { - "command": "messaging webhooks delete", - "variant": "all-flags", - "args": [ - "--webhook-id=s-webhook-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/webhooks/s-webhook-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging webhooks delete", - "variant": "required", - "args": [ - "--webhook-id=s-webhook-id" - ], - "requests": [ - { - "method": "DELETE", - "url": "https://webexapis.com/v1/webhooks/s-webhook-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging webhooks get", - "variant": "all-flags", - "args": [ - "--webhook-id=s-webhook-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/webhooks/s-webhook-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging webhooks get", - "variant": "required", - "args": [ - "--webhook-id=s-webhook-id" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/webhooks/s-webhook-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging webhooks get", - "variant": "paginate", - "args": [ - "--webhook-id=s-webhook-id", - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/webhooks/s-webhook-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging webhooks list", - "variant": "all-flags", - "args": [ - "--max=s-max", - "--owned-by=s-owned-by" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/webhooks?max=s-max&ownedBy=s-owned-by", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging webhooks list", - "variant": "required", - "args": null, - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/webhooks", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging webhooks list", - "variant": "paginate", - "args": [ - "--paginate" - ], - "requests": [ - { - "method": "GET", - "url": "https://webexapis.com/v1/webhooks?max=100", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging webhooks update", - "variant": "all-flags", - "args": [ - "--name=s-name", - "--owned-by=s-owned-by", - "--secret=s-secret", - "--status=s-status", - "--target-url=s-target-url", - "--webhook-id=s-webhook-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/webhooks/s-webhook-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"name\":\"s-name\",\"ownedBy\":\"s-owned-by\",\"secret\":\"s-secret\",\"status\":\"s-status\",\"targetUrl\":\"s-target-url\"}" - } - ] - }, - { - "command": "messaging webhooks update", - "variant": "required", - "args": [ - "--webhook-id=s-webhook-id" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/webhooks/s-webhook-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token" - } - } - ] - }, - { - "command": "messaging webhooks update", - "variant": "body", - "args": [ - "--webhook-id=s-webhook-id", - "--body={\"golden\":true}" - ], - "requests": [ - { - "method": "PUT", - "url": "https://webexapis.com/v1/webhooks/s-webhook-id", - "headers": { - "Accept": "application/json", - "Authorization": "Bearer golden-token", - "Content-Type": "application/json" - }, - "body": "{\"golden\":true}" - } - ] - } -]